keyboard-function-keys-linux icon indicating copy to clipboard operation
keyboard-function-keys-linux copied to clipboard

A small script to allow various keyboards to boot up with function keys enabled by default.

Update : July 12th, 2022

This repository was originally named after the Keychron K2 keyboard, but after multiple other keyboards were reported to work, I decided to make the name more generic.

To be clear, this solution will not work without systemd; a crontab could work as well if you don't have systemd.

Contributing

If you confirm that your keyboard works with this script as expected, create a ticket and I'll add it to the list of user-tested keyboards. Alternatively, submit a PR with a modification to this readme.

User Tested Keyboards


Enable Function Keys On Keychron/Various Mechanical Keyboards Under Linux, with systemd

(or, disable pesky media keys)

Below, you'll find the steps required to create a systemd command that will run at boot to disable the media keys and restore f1-f12 functionality.

Step 1

Open a terminal window and enter the following command:

# Set the EDITOR variable with EDITOR=nano, uncommenting the line directly below
# EDITOR=nano
sudoedit /etc/systemd/system/keychron.service

Step 2

Paste the following into the window:

[Unit]
Description=Disables media keys for the Keychron K2 and enables function keys

[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo 0 > /sys/module/hid_apple/parameters/fnmode"

[Install]
WantedBy=multi-user.target

Press ctrl+o and then ctrl+x to exit.

Step 3

In the terminal, type the following:

systemctl enable keychron

Step 4

That's it! A reboot, and you'll see that the function keys have been re-enabled. Alternatively, run this command to see the changes right away: systemctl start keychron

Closing Remarks

If you want to simply drag/drop the file that you create manually in the steps provided, I have it under the scripts folder in this repo. Download it and drop it in /etc/systemd/system/, doing Step 3 at the end.