mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-29 10:10:16 +01:00
lid: tighten the lid-keyboard pairing
Only pair if the keyboard is either tagged as internal device. This has another (unlikely) behaviour change: previously we would override the paired keyboards with ones that look more accurate (e.g. a usb keyboard paired before a serial would be unpaired and the serial keyboard takes its place). Now we assume there can only be one internal keyboard, once we have it we ignore all others. This shouldn't matter in real life provided the tagging is correct. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
1cfa1f64cf
commit
1671c7f4ad
1 changed files with 11 additions and 17 deletions
|
|
@ -202,29 +202,23 @@ lid_switch_pair_keyboard(struct evdev_device *lid_switch,
|
|||
{
|
||||
struct lid_switch_dispatch *dispatch =
|
||||
lid_dispatch(lid_switch->dispatch);
|
||||
unsigned int bus_kbd = libevdev_get_id_bustype(keyboard->evdev);
|
||||
|
||||
if ((keyboard->tags & EVDEV_TAG_KEYBOARD) == 0)
|
||||
return;
|
||||
|
||||
/* If we already have a keyboard paired, override it if the new one
|
||||
* is a serio device. Otherwise keep the current one */
|
||||
if (dispatch->keyboard.keyboard) {
|
||||
if (bus_kbd != BUS_I8042)
|
||||
return;
|
||||
if (dispatch->keyboard.keyboard)
|
||||
return;
|
||||
|
||||
libinput_device_remove_event_listener(&dispatch->keyboard.listener);
|
||||
libinput_device_init_event_listener(&dispatch->keyboard.listener);
|
||||
if (keyboard->tags & EVDEV_TAG_INTERNAL_KEYBOARD) {
|
||||
dispatch->keyboard.keyboard = keyboard;
|
||||
evdev_log_debug(lid_switch,
|
||||
"lid: keyboard paired with %s<->%s\n",
|
||||
lid_switch->devname,
|
||||
keyboard->devname);
|
||||
|
||||
/* We don't init the event listener yet - we don't care
|
||||
* about keyboard events until the lid is closed */
|
||||
}
|
||||
|
||||
dispatch->keyboard.keyboard = keyboard;
|
||||
evdev_log_debug(lid_switch,
|
||||
"lid: keyboard paired with %s<->%s\n",
|
||||
lid_switch->devname,
|
||||
keyboard->devname);
|
||||
|
||||
/* We don't init the event listener yet - we don't care about
|
||||
* keyboard events until the lid is closed */
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue