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.
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.
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.
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.servicePaste the following into the window:
[Unit]
Description=Disable media keys and substitute in function keys
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/bin/bash -c "echo 0 > /sys/module/hid_apple/parameters/fnmode"
ExecStop=/bin/bash -c "echo 1 > /sys/module/hid_apple/parameters/fnmode"
[Install]
WantedBy=multi-user.targetPress ctrl+o and then ctrl+x to exit.
In the terminal, type the following:
systemctl enable keychron
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
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.