** 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

Reply via email to