** Description changed: apt show python3-libevdev | grep Version # Version: 0.5-3 + cat /etc/lsb-release # 24.04 + uname -a # Linux wsh24 6.8.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 13 13:35:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux `KEY_F9` is defined as 67 https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/tree/include/uapi/linux/input-event-codes.h?h=Ubuntu-6.8.0-44.44#n142 , so `libevdev.EV_KEY.KEY_F9` should be 67, however, it's 249 (== 0xF9) in Ubuntu 24.04's python3-libevdev. ```py - # Ubuntu 22.04 Ubuntu 24.04 - import libevdev # - libevdev.EV_KEY.KEY_F1 # 59 59 - libevdev.EV_KEY.KEY_F2 # 60 60 - libevdev.EV_KEY.KEY_F3 # 61 61 - libevdev.EV_KEY.KEY_F4 # 62 62 - libevdev.EV_KEY.KEY_F5 # 63 63 - libevdev.EV_KEY.KEY_F6 # 64 64 - libevdev.EV_KEY.KEY_F7 # 65 65 - libevdev.EV_KEY.KEY_F8 # 66 66 - libevdev.EV_KEY.KEY_F9 # 67 249 (!) - libevdev.EV_KEY.KEY_F10 # 68 68 - libevdev.EV_KEY.KEY_F11 # 87 87 - libevdev.EV_KEY.KEY_F12 # 88 88 - - # Ubuntu 22.04 - >>> import libevdev - >>> libevdev.EV_KEY.KEY_F1 - KEY_F1:59 - >>> libevdev.EV_KEY.KEY_F2 - KEY_F2:60 - >>> libevdev.EV_KEY.KEY_F3 - KEY_F3:61 - >>> libevdev.EV_KEY.KEY_F4 - KEY_F4:62 - >>> libevdev.EV_KEY.KEY_F5 - KEY_F5:63 - >>> libevdev.EV_KEY.KEY_F6 - KEY_F6:64 - >>> libevdev.EV_KEY.KEY_F7 - KEY_F7:65 - >>> libevdev.EV_KEY.KEY_F8 - KEY_F8:66 - >>> libevdev.EV_KEY.KEY_F9 - KEY_F9:67 - >>> libevdev.EV_KEY.KEY_F10 - KEY_F10:68 - >>> libevdev.EV_KEY.KEY_F11 - KEY_F11:87 - >>> libevdev.EV_KEY.KEY_F12 - KEY_F12:88 - - # Ubuntu 24.04 - >>> import libevdev - >>> libevdev.EV_KEY.KEY_F1 - KEY_F1:59 - >>> libevdev.EV_KEY.KEY_F2 - KEY_F2:60 - >>> libevdev.EV_KEY.KEY_F3 - KEY_F3:61 - >>> libevdev.EV_KEY.KEY_F4 - KEY_F4:62 - >>> libevdev.EV_KEY.KEY_F5 - KEY_F5:63 - >>> libevdev.EV_KEY.KEY_F6 - KEY_F6:64 - >>> libevdev.EV_KEY.KEY_F7 - KEY_F7:65 - >>> libevdev.EV_KEY.KEY_F8 - KEY_F8:66 - >>> libevdev.EV_KEY.KEY_F9 - KEY_F9:249 - >>> libevdev.EV_KEY.KEY_F10 - KEY_F10:68 - >>> libevdev.EV_KEY.KEY_F11 - KEY_F11:87 - >>> libevdev.EV_KEY.KEY_F12 - KEY_F12:88 + import libevdev + libevdev.EV_KEY.KEY_F1 # KEY_F1:59 + libevdev.EV_KEY.KEY_F2 # KEY_F2:60 + libevdev.EV_KEY.KEY_F3 # KEY_F3:61 + libevdev.EV_KEY.KEY_F4 # KEY_F4:62 + libevdev.EV_KEY.KEY_F5 # KEY_F5:63 + libevdev.EV_KEY.KEY_F6 # KEY_F6:64 + libevdev.EV_KEY.KEY_F7 # KEY_F7:65 + libevdev.EV_KEY.KEY_F8 # KEY_F8:66 + libevdev.EV_KEY.KEY_F9 # KEY_F9:249 (! expected to be 67) + libevdev.EV_KEY.KEY_F10 # KEY_F10:68 + libevdev.EV_KEY.KEY_F11 # KEY_F11:87 + libevdev.EV_KEY.KEY_F12 # KEY_F12:88 ``` This bug comes from the following line https://git.launchpad.net/ubuntu/+source/python-libevdev/tree/libevdev/const.py?h=applied/0.5-3#n353 for c in range(cmax + 1): cname = Libevdev.event_to_name(t, c) # For those without names, we just use the type name plus # hexcode if cname is None: # tname: 'EV_KEY' # c: 249 (0xF9) cname = "{}_{:02X}".format(tname[3:], c) # 'KEY_F9' which seems fixed in the latest version: https://git.launchpad.net/ubuntu/+source/python-libevdev/tree/libevdev/const.py?h=applied/0.11-1#n390 https://gitlab.freedesktop.org/libevdev/python-libevdev/-/blob/0.11/libevdev/const.py?ref_type=tags#L390 https://gitlab.freedesktop.org/libevdev/python-libevdev/-/commit/f996808760f9bb869c60b7b8810725ff49b9b394 if cname is None: # tname: 'EV_KEY' # c: 249 (0xF9) name = "{}_{:02X}".format(tname[3:], c) # 'KEY_F9' cname = "_{}".format(name) # '_KEY_F9' A workaround is simply set `libevdev.EV_KEY.KEY_F9.value = 67`. ```py import libevdev fd = open('/dev/input/by-path/platform-i8042-serio-0-event-kbd', 'rb') d = libevdev.Device(fd) uinput = d.create_uinput_device() uinput.send_events([libevdev.InputEvent(libevdev.EV_KEY.KEY_F9, 1), libevdev.InputEvent(libevdev.EV_SYN.SYN_REPORT, 0)]) # press F9 (not work) uinput.send_events([libevdev.InputEvent(libevdev.EV_KEY.KEY_F9, 0), libevdev.InputEvent(libevdev.EV_SYN.SYN_REPORT, 0)]) # release F9 (not work) libevdev.EV_KEY.KEY_F9.value = 67 # workaround uinput.send_events([libevdev.InputEvent(libevdev.EV_KEY.KEY_F9, 1), libevdev.InputEvent(libevdev.EV_SYN.SYN_REPORT, 0)]) # press F9 (works) uinput.send_events([libevdev.InputEvent(libevdev.EV_KEY.KEY_F9, 0), libevdev.InputEvent(libevdev.EV_SYN.SYN_REPORT, 0)]) # release F9 (works) ```
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2080804 Title: KEY_F9.value should be 67 but 249 (0xF9) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/python-libevdev/+bug/2080804/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs