I have a Thinkpad Edge E130 running Sabayon (a Gentoo-based distro), and I'm fighting the well-know bug Xorg 255 keycodes limit.
My laptop has the Fn+F4 hotkey for Mic Mute/Unmute. This is the problem:
showkey -k
shows keycode 248 on Fn+F4 keypressshowkey -s
shows nothing on keypressxev
shows nothing on keypress (because 248+8 [added by kernel] is bigger than 255)
If a key has a keycode, it must have a scancode too. With getscancodes program indeed I got 26 as scancode:
# ./Sabayon/getscancodes/getscancodes /dev/input/event6
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x17aa product 0x5054 version 0x4101
Input device name: "ThinkPad Extra Buttons"
26 (0x1a)
26 (0x1a)
According to this thread, my guess is simply to change the keycode of the hotkey with a smaller, unused one. For example 120 seems to be unused according to my $ xmodmap -pke
I have tried with
# setkeycodes 0x1a 120
but without success, the keycode is always 248 checking with showkey
.
How is the proper way to change keycodes?
Fn+F4
works out of the box here (maybe just because I have a newer kernel version). But thank you anyway, your solution looks good and I hope will help other people. – eang Sep 26 '14 at 08:47setkeycodes
does not support them. If the system has udev, the keys can be remapped by adding a custom entry to the hardware database. Example here: https://unix.stackexchange.com/a/384566/245377 – user3096626 Aug 08 '17 at 13:01showkey -s
: it may not report real raw scancodes for use withsetkeycodes
; as a sanity check, compare the resulting keycodes (shown byshowkey
[-k
]) with what keycode the table for the existing mapping shown bygetkeycodes
says should be produced for the scancode you got fromshowkey -s
. – rakslice Jan 15 '20 at 22:29sudo showkey -s
doesn't return anything? I'm also in the same scenario,showkey -k
returns 248 for me. – Utkarsh Verma Apr 27 '20 at 13:17