libinput drops keys from infrared remotes after changing keymap
Sean Young
sean at mess.org
Sun Sep 29 19:17:38 UTC 2019
Hi,
When using IR receivers using libinput, key events get dropped if a new
rc keymap is loaded and the key was not in the old keymap.
The input device keybit changes and libevdev does not notice this. Then
here we end up returning false:
https://gitlab.freedesktop.org/libinput/libinput/blob/master/src/libinput.c#L3100
The event is reported via evtest but not via libinput debug-events.
So, for example, mceusb IR devices register with a keymap for MCE remotes.
If later a keymap for a different remote is loaded, e.g.:
$ ir-keytable -w /lib/udev/rc_keymaps/imon_rsc.toml
If I press any button which does not exist in the MCE remote keymap
(for example space or backspace), libinput does not report these events.
I've tried fixing this by making the kernel input device have all the keybit
fields set, but this had to be reverted since it overflowed the size of
uevents.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05f0edadcc5fccdfc0676825b3e70e75dc0a8a84
If libinput receives an EV_KEY event which is unexpected, we could go
and check if the input device and see if keybit has added.
However in a diferent sense ir-keytable changed the input device underneath
libinput; another way to fix this to add support for loading IR keymaps
to libinput and all the way up the stack. I've been wanting to do this
anyway but I have no idea if there is any interest in this.
Any thoughts on this would be appreciated!
Thanks,
Sean
More information about the wayland-devel
mailing list