You are not logged in.
Just received my Keychron K8 a few hours ago and promptly used it with my work machine (which runs Windows). I noticed 0 oddities, bugs or whatever, all went smoothly.
On Linux, it is different. In short: Keychron apparently hardcodes their mapping to a different mode.
This seems to be an issue because there isn't a "hidden/secret" remapping like on Windows... I think Windows remaps the key presses on-the-fly.
So that is why there are posts like the following ones:
They all end up with the same advice (heavily inspired by this page):
You can use the command
echo 0 | sudo tee /sys/module/hid_apple/parameters/fnmode.
To make the fnmode change persistent, add a module option for hid_apple:
echo "options hid_apple fnmode=0" | sudo tee -a /etc/modprobe.d/hid_apple.confYou may need to rebuild your initramfs if hid_apple is included. - ubuntu: sudo update-initramfs -u or for arch: mkinitcpio -P
=> So the moment I do not use my Keychron keyboard but any other one, I should switch the fnmode value, at least temporarily, right?
Last edited by jones (2022-06-08 21:17:14)
Offline
Why do you want to rebuild initramfs for another keyboard? fnmode=0 is applied to keyboards handled by hid_apple module only, not to any other keyboards.
Offline
Oh, right.
Well I did not really catch that. Thank you!
Offline
Here is a description of the fnmode parameter for apple keyboards. If you want to use the media keys then you may want to use another setting:
https://wiki.archlinux.org/title/Apple_ … le_options
Last edited by progandy (2022-06-08 21:14:24)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |
Offline
Yes I do!
I should use the value 2.
=> SOLVED
Offline
I have a KeyChron K2 (love it). I created a file called keychron.service in /etc/systemd/system with the following contents:
Unit]
Description=The command to make the Keychron K2 work
[Service]
Type=oneshot
ExecStart=/bin/bash -c "echo 0 > /sys/module/hid_apple/parameters/fnmode"
[Install]
WantedBy=multi-user.targetNow I can enable or disable this on boot with:
sudo systemctl enable keychron.service
sudo systemctl disable keychron.serviceOr if I want to start/stop it on the fly (without rebooting):
sudo systemctl start keychron.service
sudo systemctl stop keychron.serviceOffline
Interesting! And quite clever, if I may say so. ![]()
Thank you, dear Andy Turfer.
Also a belated thanks to progandy. ![]()
Last edited by jones (2022-06-09 19:29:28)
Offline