Re: [PATCH resend] HID: apple: fix up the F6 key on the Omoton KB066 keyboard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> 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.




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux