Hi, As the new owner of a Keychron C1 keyboard, I recently found this thread from this mailing list (linux-input): https://lore.kernel.org/all/897e57a9-38d8-c05f-ceed-01d486f02726@xxxxxxxxxx/T/ To summarize the findings in that thread: * Keychron keyboards (C-series and K-series) use the vendor:product IDs from a 2009 Apple keyboard. When set to "Mac" mode, they actually do behave like that device, but in "Windows" mode, the Fn key doesn't generate a scancode, making it impossible to use F1-F12 when the fnmode parameter is set to its default value of 1. * The universally accepted "fix" among Keychron owners online is to set fnmode=2 in /etc/modprobe.d/hid_apple.conf. (See https://gist.github.com/andrebrait/961cefe730f4a2c41f57911e6195e444) * Keychron devices can be distinguished from Apple ones by the USB manufacturer string, but it's impossible for the kernel to programatically detect whether a Keychron keyboard is in "Windows" or "Mac" mode. The thread arrives at a conclusion I agree with: that fnmode=2 should be the default behavior for Keychron keyboards. But no one has actually implemented this change yet, so I decided to do it myself. My patch sets the default fnmode to the new value of 3, which behaves like fnmode=2 for Keychron keyboards, and like the previous default of fnmode=1 for real Apple keyboards and any non-Keychron clones. This should produce sensible behavior in all cases, including the corner case where someone plugs a Keychron keyboard into their MacBook. This change does mean that Keychron function keys in "Mac" mode won't default to Apple-like behavior, but even in that case, both the Fn and non-Fn versions of the keys are still usable. And as Bastian Venthur said in the thread linked above, there's no particular reason for a user to expect Apple-like behavior when using a non-Apple device with a non-Apple operating system. This is my first time contributing to the kernel, so please let me know if I need to do anything differently. Also, I don't have an Apple keyboard on hand to test with, so I'd appreciate if someone could test my patch with one to verify that their function key behavior is unchanged. Regards, Bryan Bryan Cain (1): HID: apple: Properly handle function keys on Keychron keyboards drivers/hid/hid-apple.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) -- 2.25.1