Re: [PATCH] hid: apple: disable Fn key handling on the Omoton KB066

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

 



I was about to send something similar

> On 24 Feb 2025, at 11:07 AM, Alex Henrie <alexhenrie24@xxxxxxxxx> wrote:
> 
> Remove the fixup to make the Omoton KB066's F6 key F6 when not holding
> Fn. That was really just a hack to allow typing F6 in fnmode>0, and it
> didn't fix any of the other F keys that were likewise untypable in
> fnmode>0. Instead, because the Omoton's Fn key is entirely internal to
> the keyboard, completely disable Fn key translation when an Omoton is
> detected, which will prevent the hid-apple driver from interfering with
> the keyboard's built-in Fn key handling. All of the F keys, including
> F6, are then typable when Fn is held.
> 
> The Omoton KB066 and the Apple A1255 both have HID product code
> 05ac:022c. The self-reported name of every original A1255 when they left
> the factory was "Apple Wireless Keyboard". By default, Mac OS changes
> the name to "<username>'s keyboard" when pairing with the keyboard, but
> Mac OS allows the user to set the internal name of Apple keyboards to
> anything they like. The Omoton KB066's name, on the other hand, is not
> configurable: It is always "Bluetooth Keyboard". Because that name is so
> generic that a user might conceivably use the same name for a real Apple
> keyboard, detect Omoton keyboards based on both having that exact name
> and having HID product code 022c.
> 
> Fixes: 819083cb6eed ("HID: apple: fix up the F6 key on the Omoton KB066 keyboard")
> Signed-off-by: Alex Henrie <alexhenrie24@xxxxxxxxx>
> ---
> drivers/hid/hid-apple.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
> index 49812a76b7ed..d900dd05c335 100644
> --- a/drivers/hid/hid-apple.c
> +++ b/drivers/hid/hid-apple.c
> @@ -378,6 +378,12 @@ static bool apple_is_non_apple_keyboard(struct hid_device *hdev)
>    return false;
> }
> 
> +static bool apple_is_omoton_kb066(struct hid_device *hdev)
> +{
> +    return hdev->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI &&
> +        strcmp(hdev->name, "Bluetooth Keyboard") == 0;
> +}
> +

Should be make a table here so that similar keyboards who want fn to be disabled can be put?

> static inline void apple_setup_key_translation(struct input_dev *input,
>        const struct apple_key_translation *table)
> {
> @@ -546,9 +552,6 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
>        }
>    }
> 
> -    if (usage->hid == 0xc0301) /* Omoton KB066 quirk */
> -        code = KEY_F6;
> -
>    if (usage->code != code) {
>        input_event_with_scancode(input, usage->type, code, usage->hid, value);
> 
> @@ -728,7 +731,7 @@ static int apple_input_configured(struct hid_device *hdev,
> {
>    struct apple_sc *asc = hid_get_drvdata(hdev);
> 
> -    if ((asc->quirks & APPLE_HAS_FN) && !asc->fn_found) {
> +    if (((asc->quirks & APPLE_HAS_FN) && !asc->fn_found) || apple_is_omoton_kb066(hdev)) {
>        hid_info(hdev, "Fn key not found (Apple Wireless Keyboard clone?), disabling Fn key handling\n");

Probably change the message here to Fn key not found or has internal handling

>        asc->quirks &= ~APPLE_HAS_FN;
>    }
> --
> 2.48.1
> 

Thanks
Aditya




[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