This is an old revision of the document!
Table of Contents
Remap keyboard keys in GNU/Linux
Swap primary and secondary function of the Fn key
I have a notebook where the function keys (F1, F2, … F12) are mapped on the keyboard as secondary: you have to press them together with the Fn key to get the function key. The primary function of the keys are the multimedia actions, like MUTE, VOLUMEDOWN, VOLUMEUP, PREVIOUSSONG, NEXTSONG, etc.
I searched a recipe to swap the first function of the key with the secondary one. The recipe here explained works almost at 100%, both into the textual console and into the X.org graphical environment. Unfortunately I was unable to swap the F1/DISPLAYTOGGLE, F6/BRIGHTNESSDOWN and F7/BRIGHTNESSUP keys: it seems that the multimedia function is intercepted by the hardware and it is not handled as an input event by the operating system kernel.
Inspect the events generated by the keyboard
Use the evtest command line tool (from the omonymous Debian package) to inspect the input events generated by you keyboard. In my case the keyboard is associated to input device #0, the evtest program is run by root
into a text console or into a terminal:
evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: AT Translated Set 2 keyboard ... Select the device event number [0-17]: 0
Pressing and releasing the VolumeUp key (this is the F4 key without modifier keys), generates the following events:
Event: time 1620744541.871139, -------------- SYN_REPORT ------------ Event: time 1620744550.791890, type 4 (EV_MSC), code 4 (MSC_SCAN), value b0 Event: time 1620744550.791890, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1 Event: time 1620744550.791890, -------------- SYN_REPORT ------------ Event: time 1620744550.892937, type 4 (EV_MSC), code 4 (MSC_SCAN), value b0 Event: time 1620744550.892937, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Pressing and releasing the Fn+F4 key generates the following events:
Event: time 1620744539.251257, -------------- SYN_REPORT ------------ Event: time 1620744541.769000, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3e Event: time 1620744541.769000, type 1 (EV_KEY), code 62 (KEY_F4), value 1 Event: time 1620744541.769000, -------------- SYN_REPORT ------------ Event: time 1620744541.871139, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3e Event: time 1620744541.871139, type 1 (EV_KEY), code 62 (KEY_F4), value 0