fix: destroy solaar-keyboard uinput device when no receiver is connected
When a Logitech receiver is disconnected, tear down the uinput device so GNOME/mutter no longer detects a virtual pointer, allowing touch mode and the on-screen keyboard to activate correctly.
This commit is contained in:
parent
b9e0cf8235
commit
bd34f4c068
|
|
@ -268,6 +268,20 @@ def setup_uinput():
|
|||
logger.warning("cannot create uinput device: %s", e)
|
||||
|
||||
|
||||
def teardown_uinput():
|
||||
global udevice
|
||||
if udevice is None:
|
||||
return
|
||||
try:
|
||||
udevice.close()
|
||||
if logger.isEnabledFor(logging.INFO):
|
||||
logger.info("uinput device closed")
|
||||
except Exception as e:
|
||||
logger.warning("cannot close uinput device: %s", e)
|
||||
finally:
|
||||
udevice = None
|
||||
|
||||
|
||||
def kbdgroup():
|
||||
if xkb_setup():
|
||||
state = XkbStateRec()
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ from typing import Callable
|
|||
import gi
|
||||
import yaml
|
||||
|
||||
from logitech_receiver import diversion
|
||||
from logitech_receiver.common import Alert
|
||||
|
||||
from solaar.i18n import _
|
||||
|
|
@ -130,6 +131,8 @@ def _status_changed(device, alert, reason, refresh=False):
|
|||
alert = Alert.NONE
|
||||
|
||||
tray.update(device)
|
||||
if device.kind is None and not tray._devices_info:
|
||||
diversion.teardown_uinput()
|
||||
if alert & Alert.ATTENTION:
|
||||
tray.attention(reason)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue