Comments on Auto-enable FN-toggling for the first N FN keys
Parent
Auto-enable FN-toggling for the first N FN keys
How can I auto-enable FN-toggling for the first N FN keys? F7-F12 on my keyboard are used for audio control, while, many games that I play, use the lower FN keys. Therefore, I'd like to relieve myself of the need to hold down the FN key for F1-F6. In other words, I'd like to change the default FN key state for those keys only.
Post
It is true that Fn combinations are usually implemented in hardware, but in X11 (not Wayland of course!) you can circumvent this issue for most or all your keys.[1]
For example, my F3 -> F3
and my Fn+F3 -> {Switch monitor}
.
Find out the keycodes of the keys
In a terminal, launch xev
. Press Fn+F3 and see the output in the terminal:
KeyRelease event, serial 32, synthetic NO, window 0x1400001,
root 0x25a, subw 0x0, time 11205128, (-592,394), root:(2,689),
state 0x0, keycode 235 (keysym 0x1008ff59, XF86Display), same_screen YES,
So the keycode for Fn+F3 is 235. Repeat the steps for F3 to determine that the keycode for F3 is 69.
Dump your XKB map to a file
xkbcomp "$DISPLAY" xkb
Swap the keycodes in the map
Open the created xkb
file in your text editor.
In the xkb_keycodes
section of the file, swap the keycode 69 <-> 235. I.e., if the section looks like this initially,
<FK01> = 67;
<FK02> = 68;
<FK03> = 69;
[...]
<I235> = 235;
<I236> = 236;
<I237> = 237;
it should look like this afterwards:
<FK01> = 67;
<FK02> = 68;
<FK03> = 235;
[...]
<I235> = 69;
<I236> = 236;
<I237> = 237;
Load your new XKB map
xkbcomp xkb "$DISPLAY"
Now F3 -> {Switch monitor}
and Fn+F3 -> F3
.
Further reading
- X keyboard extension (xkb) on the Arch wiki
-
This won't work for combinations that also work directly via hardware, for example, in my computer Fn+F2 will turn the screen on or off. If
xev
doesn't detect the combination, you are out of luck — unless it is detected byacpi_listen
and you can contrive something... food for thought, I really did not try. ↩︎
1 comment thread