Cru Posted June 28, 2020 Report Posted June 28, 2020 (edited) Use this guide to derive the HID page and key code of an HID event device or original remote connected e.g. via USB, I2C or Bluetooth to a Linux PC, or to verify that your Flirc actually sends the events you expect. HID page and key code can be grabbed under Linux following these steps: 1. Find the event devices associated with your HID devices using "udevadm info -a <device>" with <device> walking through /dev/input/event*. There might be multiple devices for a single hardware component, e.g. for a Harmony Hub there is one for HID mouse events, one for HID keyboard events, one for HID consumer control events, one for HID system control events, ... 2. Monitor the desired event devices (usually requires root) using "sudo evtest [--grab<] <device>" for each device required. The optional parameter "--grab" is essential if you want to stop the recorded events to be forwarded to and interpreted by the system, like I did to stop my system going into standby whenever I sent the sleep event that I wanted to record. If you want to use "--grab" on your local keyboard or such, you might want to either attach a second keyboard or run the command over the network via SSH, so you can abort the monitoring by sending Ctrl+C. 3. Perform the key presses on the device you want to record. Each key press will emit 2 events, one for key down (press), one for key up (release), example output for the "0" key: Event: time 1593381762.020128, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70027 Event: time 1593381762.020128, type 1 (EV_KEY), code 11 (KEY_0), value 1 Event: time 1593381762.020128, -------------- SYN_REPORT ------------ Event: time 1593381762.020198, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70027 Event: time 1593381762.020198, type 1 (EV_KEY), code 11 (KEY_0), value 0 Event: time 1593381762.020198, -------------- SYN_REPORT ------------ 4. Interpret the output; you are interested in the value of the MSC_SCAN (scancode) of EV_MSC (miscellaneous) events. The value is hexadecimal and for HID devices with the last 4 digits being the HID key code (0x0027) and leading digit(s) the HID page (0x07). 5. HID page 0x07 events (HID keyboard) can be programmed using "flirc_util record_api <modifiers> <key code>", where <key code> is the decimal representation of the HID key code you fetched above (e.g. 0x27 = 39), and <modifier> is a logical or-ed list of modifier keys to be held down while <key code> is sent (see "flirc_util help record_api"). I ran into an intentional limitation of flirc_util, limiting <key code> to values <= 101. Unfortunately, flirc_util silently programs the key anyway without a warning, leaving a key that is never sent. This cost me a lot of time while trying to send the correct codes to my hardware, being the Flirc the culprit by never sending the programmed keys. Jason is currently checking whether the limitation will be removed. Edited June 28, 2020 by Cru Removed typos. Quote
remii Posted June 6, 2022 Report Posted June 6, 2022 Was this ever fixed? I'm trying to map KEY_RECORD (167) to the Record button my remote. Using "flirc_util record_api 0 167" results in "Successfully recorded button" but when I check with evtest I don't get anything when I press it. Quote
frangipan Posted September 25 Report Posted September 25 @jason GIven what you were looking at recently with recording the 'k' key, do you know if this limitation still exists? Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.