Message ID | B17D84D1-F91C-4CF0-A931-C19D0278E329@live.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Jiri Kosina |
Headers | show |
Series | [v3,1/3] HID: apple: Add support for keyboard backlight on certain T2 Macs. | expand |
On Thu, 3 Feb 2022, Aditya Garg wrote: > From: Aditya Garg <gargaditya08@live.com> > > This patch adds the Fn mapping for keyboards on certain T2 Macs. > > Signed-off-by: Aditya Garg <gargaditya08@live.com> > --- > v2 :- Use better approach to map fn keys > v3 :- Use BIT(10) for APPLE_BACKLIGHT_CTL since 0x0200 (BIT (9)) has been used. > drivers/hid/hid-apple.c | 62 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 62 insertions(+) > > diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c > index 658d79375..5448e5a66 100644 > --- a/drivers/hid/hid-apple.c > +++ b/drivers/hid/hid-apple.c > @@ -142,6 +142,51 @@ static const struct apple_key_translation macbookair_fn_keys[] = { > { } > }; > > +static const struct apple_key_translation macbookpro_no_esc_fn_keys[] = { > + { KEY_BACKSPACE, KEY_DELETE }, > + { KEY_ENTER, KEY_INSERT }, > + { KEY_GRAVE, KEY_ESC }, > + { KEY_1, KEY_F1 }, > + { KEY_2, KEY_F2 }, > + { KEY_3, KEY_F3 }, > + { KEY_4, KEY_F4 }, > + { KEY_5, KEY_F5 }, > + { KEY_6, KEY_F6 }, > + { KEY_7, KEY_F7 }, > + { KEY_8, KEY_F8 }, > + { KEY_9, KEY_F9 }, > + { KEY_0, KEY_F10 }, > + { KEY_MINUS, KEY_F11 }, > + { KEY_EQUAL, KEY_F12 }, > + { KEY_UP, KEY_PAGEUP }, > + { KEY_DOWN, KEY_PAGEDOWN }, > + { KEY_LEFT, KEY_HOME }, > + { KEY_RIGHT, KEY_END }, > + { } > +}; > + > +static const struct apple_key_translation macbookpro_dedicated_esc_fn_keys[] = { > + { KEY_BACKSPACE, KEY_DELETE }, > + { KEY_ENTER, KEY_INSERT }, > + { KEY_1, KEY_F1 }, > + { KEY_2, KEY_F2 }, > + { KEY_3, KEY_F3 }, > + { KEY_4, KEY_F4 }, > + { KEY_5, KEY_F5 }, > + { KEY_6, KEY_F6 }, > + { KEY_7, KEY_F7 }, > + { KEY_8, KEY_F8 }, > + { KEY_9, KEY_F9 }, > + { KEY_0, KEY_F10 }, > + { KEY_MINUS, KEY_F11 }, > + { KEY_EQUAL, KEY_F12 }, > + { KEY_UP, KEY_PAGEUP }, > + { KEY_DOWN, KEY_PAGEDOWN }, > + { KEY_LEFT, KEY_HOME }, > + { KEY_RIGHT, KEY_END }, > + { } > +}; > + > static const struct apple_key_translation apple_fn_keys[] = { > { KEY_BACKSPACE, KEY_DELETE }, > { KEY_ENTER, KEY_INSERT }, > @@ -269,6 +314,17 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input, > hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 || > hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021) > table = apple2021_fn_keys; > + else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 || > + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 || > + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213) > + table = macbookpro_no_esc_fn_keys; > + else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K || > + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 || > + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F) > + table = macbookpro_dedicated_esc_fn_keys; > + else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K || > + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K) > + table = apple_fn_keys; > else if (hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI && > hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) > table = macbookair_fn_keys; > @@ -480,6 +536,12 @@ static void apple_setup_input(struct input_dev *input) > set_bit(KEY_NUMLOCK, input->keybit); > > /* Enable all needed keys */ > + for (trans = macbookpro_no_esc_fn_keys; trans->from; trans++) > + set_bit(trans->to, input->keybit); > + > + for (trans = macbookpro_dedicated_esc_fn_keys; trans->from; trans++) > + set_bit(trans->to, input->keybit); > + This needed to be rebased on top of earlier José's refactoring of the mapping setup patches; I've done that and pushed the whole series to for-5.18/apple Thanks,
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c index 658d79375..5448e5a66 100644 --- a/drivers/hid/hid-apple.c +++ b/drivers/hid/hid-apple.c @@ -142,6 +142,51 @@ static const struct apple_key_translation macbookair_fn_keys[] = { { } }; +static const struct apple_key_translation macbookpro_no_esc_fn_keys[] = { + { KEY_BACKSPACE, KEY_DELETE }, + { KEY_ENTER, KEY_INSERT }, + { KEY_GRAVE, KEY_ESC }, + { KEY_1, KEY_F1 }, + { KEY_2, KEY_F2 }, + { KEY_3, KEY_F3 }, + { KEY_4, KEY_F4 }, + { KEY_5, KEY_F5 }, + { KEY_6, KEY_F6 }, + { KEY_7, KEY_F7 }, + { KEY_8, KEY_F8 }, + { KEY_9, KEY_F9 }, + { KEY_0, KEY_F10 }, + { KEY_MINUS, KEY_F11 }, + { KEY_EQUAL, KEY_F12 }, + { KEY_UP, KEY_PAGEUP }, + { KEY_DOWN, KEY_PAGEDOWN }, + { KEY_LEFT, KEY_HOME }, + { KEY_RIGHT, KEY_END }, + { } +}; + +static const struct apple_key_translation macbookpro_dedicated_esc_fn_keys[] = { + { KEY_BACKSPACE, KEY_DELETE }, + { KEY_ENTER, KEY_INSERT }, + { KEY_1, KEY_F1 }, + { KEY_2, KEY_F2 }, + { KEY_3, KEY_F3 }, + { KEY_4, KEY_F4 }, + { KEY_5, KEY_F5 }, + { KEY_6, KEY_F6 }, + { KEY_7, KEY_F7 }, + { KEY_8, KEY_F8 }, + { KEY_9, KEY_F9 }, + { KEY_0, KEY_F10 }, + { KEY_MINUS, KEY_F11 }, + { KEY_EQUAL, KEY_F12 }, + { KEY_UP, KEY_PAGEUP }, + { KEY_DOWN, KEY_PAGEDOWN }, + { KEY_LEFT, KEY_HOME }, + { KEY_RIGHT, KEY_END }, + { } +}; + static const struct apple_key_translation apple_fn_keys[] = { { KEY_BACKSPACE, KEY_DELETE }, { KEY_ENTER, KEY_INSERT }, @@ -269,6 +314,17 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input, hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 || hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021) table = apple2021_fn_keys; + else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 || + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 || + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213) + table = macbookpro_no_esc_fn_keys; + else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K || + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 || + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F) + table = macbookpro_dedicated_esc_fn_keys; + else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K || + hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K) + table = apple_fn_keys; else if (hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI && hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) table = macbookair_fn_keys; @@ -480,6 +536,12 @@ static void apple_setup_input(struct input_dev *input) set_bit(KEY_NUMLOCK, input->keybit); /* Enable all needed keys */ + for (trans = macbookpro_no_esc_fn_keys; trans->from; trans++) + set_bit(trans->to, input->keybit); + + for (trans = macbookpro_dedicated_esc_fn_keys; trans->from; trans++) + set_bit(trans->to, input->keybit); + for (trans = apple_fn_keys; trans->from; trans++) set_bit(trans->to, input->keybit);