Keychron Function Keys on Linux

Telling Linux to treat F1-F12 as normal F-keys

Recently I bought a Keychron K5 SE keyboard (with clicky blue optical switches, thank you for asking). When I started using it on an Ubuntu Linux machine, it worked great except one thing: the F1-F12 function keys did not work well. As with so many laptops and other keyboards, they defaulted to their “special” meaning, controlling brightness, volume, that kind of thing. The real issue, though, is that fn + F-key did not work either.

This is due to the Linux kernel recognising the keyboard as an Apple keyboard clone. Fortunately it’s easy to revert that:

echo 0 | sudo tee /sys/module/hid_apple/parameters/fnmode

This command should immediately make F-keys register as normal function keys, so F5 actually works as F5. Try pressing it to reload this article!

This fix works immediately, but doesn’t survive reboots. To make the fix permanent:

echo "options hid_apple fnmode=0" | sudo tee /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -c -k all  # To make sure it's loaded early enough.

I was put on this path by Jeremy Cheng’s article on the same topic. Only a minor change was needed (putting 0 there instead of the 2 he uses). And I needed to add the update-initramfs command for my Ubuntu install. Thanks Jeremy!

dr. Sybren A. Stüvel
dr. Sybren A. Stüvel
Open Source software developer, photographer, drummer, and electronics tinkerer