• 0 Posts
  • 2 Comments
Joined 1 year ago
cake
Cake day: June 25th, 2023

help-circle
  • You will notice that every keypress in evtest is also preceded by a KEY_MSC. This is just the evdev responding to a scancode. If the hwdb has this scancode pre-assigned in 60-keyboard.hwdb then it creates the EV_KEY event that is mapped. What you want to do is turn this EV_MSC into an EV_KEY by mapping the unknown scancode to a evdev event code using the hwdb file.

    The arch wiki has a good article on how to map these scancodes and identify what keycode you want to map. It is generic enough that it should work for most distros. Read all of section 2, it goes into specific detail about your question.

    https://wiki.archlinux.org/title/Map_scancodes_to_keycodes#Using_udev


  • If you run sudo dmesg -w it should tell you the scancodes that each of those events is triggering. You can then create a /etc/udev/hwdb.d/50-my-device.hwdb file to map those scan codes to keycodes.

    Here’s an example of a .hwdb file I made for Ayaneo handhelds:

    ## AYANEO DEVICES
    evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYANEO:*
      KEYBOARD_KEY_66=f15
      KEYBOARD_KEY_67=f16
      KEYBOARD_KEY_68=f17
    

    You can find the appropriate evdev:* information by running sudo udevadm test /dev/input/eventX where eventX is the evdev fd for the device in question. evtest will show you the names.