I want to do some advanced key mapping on my Sony VAIO. It involves the Fn key. This is what I want to do:
I want to do a Fn key inversion, ie to remap: [Fn+ F2toF7] on my keyboard to [F2 to F7] soft keys respectively. After the remap, I want other key combinations involving the function keys to work as usual (like Alt+F4), if possible.
This will come in handy because I never use function keys other than in a key combination. Also I use the volume and brightness controls a lot (Fn+ F2toF7).
I've googled around and found this on another ask-ubuntu question:
The Fn key usually doesn't send a key code; it's handled by the BIOS, not by the OS. You can sometimes get at it as an ACPI event.
At this point I have checked the BIOS, and I can't change it from there.
I found that when I press these combinations, it triggers ACPI events. Here is the output when I sequentially press Fn+ F2toF7:
Fn + F1 (Toggle TouchPad, not working) press down:
button/fnf1 FNF1 00000080 00000000 K
sony/hotkey SNY5001:00 00000001 0000000c
Fn + F1 release:
sony/hotkey SNY5001:00 00000001 0000003b
Fn + F2 press down:
button/mute MUTE 00000080 00000000 K
Fn + F3 press down:
button/volumedown VOLDN 00000080 00000000 K
Fn + F4 press down:
button/volumeup VOLUP 00000080 00000000 K
Fn + F5 press down:
video/brightnessdown BRTDN 00000087 00000000
Fn + F6 press down:
video/brightnessup BRTUP 00000086 00000000
Fn + F7 release:
video/switchmode VMOD 00000080 00000000 K
sony/hotkey SNY5001:00 00000001 00000012
Fn + F7 release:
sony/hotkey SNY5001:00 00000001 0000003b
I've observed that ACPI events are triggered only when the special key combinations are pressed, ie no event is generated if I press Fn+A. So I can't assign short cuts like Fn+A, but can't I somehow manipulate the key combinations for which ACPI events are triggered?
Edit: I found keyboard mapping of scan codes to key codes in /lib/udev/hwdb.d/60-keyboard.hwdb
. It's relevant sections are posted here. But the udev configuration is overridden by something else, because I swapped the vol up and mute keys, and the change was not reflected even after a reboot.
Edit 2: Output of X event of each key [Fn+ F2toF7] using xev -event keyboard
.
xev -event keyboard
xev -event keyboard
and hw info. I will add reference links to each acpi events later. Also, I thought of remapping Alt + F4 and F5 (refresh) to Alt+4 and Alt+5 respectively.