> On 12 Feb 2025, at 11:06 PM, Aditya Garg <gargaditya08@xxxxxxxx> wrote: > > Hi Alex > >> On 17 Jan 2025, at 11:42 AM, Alex Henrie <alexhenrie24@xxxxxxxxx> wrote: >> >> The Omoton KB066 is an Apple A1255 keyboard clone (HID product code >> 05ac:022c). On both keyboards, the F6 key becomes Num Lock when the Fn >> key is held. But unlike its Apple exemplar, when the Omoton's F6 key is >> pressed without Fn, it sends the usage code 0xC0301 from the reserved >> section of the consumer page instead of the standard F6 usage code >> 0x7003F from the keyboard page. The nonstandard code is translated to >> KEY_UNKNOWN and becomes useless on Linux. The Omoton KB066 is a pretty >> popular keyboard, judging from its 29,058 reviews on Amazon at time of >> writing, so let's account for its quirk to make it more usable. >> >> By the way, it would be nice if we could automatically set fnmode to 0 >> for Omoton keyboards because they handle the Fn key internally and the >> kernel's Fn key handling creates undesirable side effects such as making >> F1 and F2 always Brightness Up and Brightness Down in fnmode=1 (the >> default) or always F1 and F2 in fnmode=2. Unfortunately I don't think >> there's a way to identify Bluetooth keyboards more specifically than the >> HID product code which is obviously inaccurate. Users of Omoton >> keyboards will just have to set fnmode to 0 manually to get full Fn key >> functionality. > > Regarding the the fnmode=0 thing, could you test this patch: > > -->8— > From e2b2ef3f579800f11ee293fb45838a4004ccaf23 Mon Sep 17 00:00:00 2001 > From: Aditya Garg <gargaditya08@xxxxxxxx> > Date: Wed, 12 Feb 2025 22:57:58 +0530 > Subject: [PATCH] HID: apple: Add quirk to disable fn key on some non-apple > keyboards > > --- > drivers/hid/hid-apple.c | 54 +++++++++++++++++++++++++++++------------ > 1 file changed, 39 insertions(+), 15 deletions(-) > > diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c > index 49812a76b..9d4cbe636 100644 > --- a/drivers/hid/hid-apple.c > +++ b/drivers/hid/hid-apple.c > @@ -42,6 +42,7 @@ > #define APPLE_BACKLIGHT_CTL BIT(10) > #define APPLE_IS_NON_APPLE BIT(11) > #define APPLE_MAGIC_BACKLIGHT BIT(12) > +#define APPLE_DISABLE_FN BIT(13) > > #define APPLE_FLAG_FKEY 0x01 > > @@ -89,6 +90,19 @@ struct apple_sc_backlight { > struct hid_device *hdev; > }; > > +struct apple_backlight_config_report { > + u8 report_id; > + u8 version; > + u16 backlight_off, backlight_on_min, backlight_on_max; > +}; > + > +struct apple_backlight_set_report { > + u8 report_id; > + u8 version; > + u16 backlight; > + u16 rate; > +}; > + > struct apple_magic_backlight { > struct led_classdev cdev; > struct hid_report *brightness; > @@ -152,20 +166,6 @@ static const struct apple_key_translation magic_keyboard_2015_fn_keys[] = { > { } > }; > > -struct apple_backlight_config_report { > - u8 report_id; > - u8 version; > - u16 backlight_off, backlight_on_min, backlight_on_max; > -}; > - > -struct apple_backlight_set_report { > - u8 report_id; > - u8 version; > - u16 backlight; > - u16 rate; > -}; > - > - > static const struct apple_key_translation apple2021_fn_keys[] = { > { KEY_BACKSPACE, KEY_DELETE }, > { KEY_ENTER, KEY_INSERT }, > @@ -364,6 +364,10 @@ static const struct apple_non_apple_keyboard non_apple_keyboards[] = { > { "WKB603" }, > }; > > +static const struct apple_non_apple_keyboard non_apple_keyboards_disable_fn[] = { > + { "Omoton" }, You could try replacing Omoton with OMOTON as well here if it does not work. Alternatively, you could try logging hdev->name for this device and put it in this table to get the correct name.