Skip to content

Commit 6248573

Browse files
alexhenriegregkh
authored andcommitted
HID: apple: disable Fn key handling on the Omoton KB066
commit 221cea1 upstream. 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: 819083c ("HID: apple: fix up the F6 key on the Omoton KB066 keyboard") Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Reviewed-by: Aditya Garg <gargaditya08@live.com> Signed-off-by: Jiri Kosina <jkosina@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent a09e085 commit 6248573

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

drivers/hid/hid-apple.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,12 @@ static bool apple_is_non_apple_keyboard(struct hid_device *hdev)
363363
return false;
364364
}
365365

366+
static bool apple_is_omoton_kb066(struct hid_device *hdev)
367+
{
368+
return hdev->product == USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI &&
369+
strcmp(hdev->name, "Bluetooth Keyboard") == 0;
370+
}
371+
366372
static inline void apple_setup_key_translation(struct input_dev *input,
367373
const struct apple_key_translation *table)
368374
{
@@ -531,9 +537,6 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
531537
}
532538
}
533539

534-
if (usage->hid == 0xc0301) /* Omoton KB066 quirk */
535-
code = KEY_F6;
536-
537540
if (usage->code != code) {
538541
input_event_with_scancode(input, usage->type, code, usage->hid, value);
539542

@@ -713,7 +716,7 @@ static int apple_input_configured(struct hid_device *hdev,
713716
{
714717
struct apple_sc *asc = hid_get_drvdata(hdev);
715718

716-
if ((asc->quirks & APPLE_HAS_FN) && !asc->fn_found) {
719+
if (((asc->quirks & APPLE_HAS_FN) && !asc->fn_found) || apple_is_omoton_kb066(hdev)) {
717720
hid_info(hdev, "Fn key not found (Apple Wireless Keyboard clone?), disabling Fn key handling\n");
718721
asc->quirks &= ~APPLE_HAS_FN;
719722
}

0 commit comments

Comments
 (0)