** Description changed: + apt show python3-libevdev | grep Version # Version: 0.5-3 + `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. + , so `libevdev.EV_KEY.KEY_F9` should be 67, however, it's 249 in Ubuntu 24.04's python3-libevdev. ```py - # Ubuntu 22.04 Ubuntu 24.04 + # 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 ``` + 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) ```
** Description changed: apt show python3-libevdev | grep Version # Version: 0.5-3 `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 in Ubuntu 24.04's python3-libevdev. + , 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 ``` 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