| From d762cc290b9f17e346f4297fd5984b70ce71ef66 Mon Sep 17 00:00:00 2001 |
| From: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> |
| Date: Sat, 1 Oct 2011 15:54:53 +0900 |
| Subject: HID: Add support MacbookAir 4,1 keyboard |
| |
| From: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> |
| |
| commit d762cc290b9f17e346f4297fd5984b70ce71ef66 upstream. |
| |
| Added USB device IDs and keyboard map for MacBookAir 4,1 keyboard. |
| |
| Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/hid/hid-apple.c | 31 +++++++++++++++++++++++++++++++ |
| drivers/hid/hid-core.c | 3 +++ |
| drivers/hid/hid-ids.h | 3 +++ |
| 3 files changed, 37 insertions(+) |
| |
| --- a/drivers/hid/hid-apple.c |
| +++ b/drivers/hid/hid-apple.c |
| @@ -82,6 +82,28 @@ static const struct apple_key_translatio |
| { } |
| }; |
| |
| +static const struct apple_key_translation macbookair4_fn_keys[] = { |
| + { KEY_BACKSPACE, KEY_DELETE }, |
| + { KEY_ENTER, KEY_INSERT }, |
| + { KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY }, |
| + { KEY_F2, KEY_BRIGHTNESSUP, APPLE_FLAG_FKEY }, |
| + { KEY_F3, KEY_SCALE, APPLE_FLAG_FKEY }, |
| + { KEY_F4, KEY_DASHBOARD, APPLE_FLAG_FKEY }, |
| + { KEY_F5, KEY_KBDILLUMDOWN, APPLE_FLAG_FKEY }, |
| + { KEY_F6, KEY_KBDILLUMUP, APPLE_FLAG_FKEY }, |
| + { KEY_F7, KEY_PREVIOUSSONG, APPLE_FLAG_FKEY }, |
| + { KEY_F8, KEY_PLAYPAUSE, APPLE_FLAG_FKEY }, |
| + { KEY_F9, KEY_NEXTSONG, APPLE_FLAG_FKEY }, |
| + { KEY_F10, KEY_MUTE, APPLE_FLAG_FKEY }, |
| + { KEY_F11, KEY_VOLUMEDOWN, APPLE_FLAG_FKEY }, |
| + { KEY_F12, KEY_VOLUMEUP, APPLE_FLAG_FKEY }, |
| + { 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 }, |
| @@ -186,6 +208,9 @@ static int hidinput_apple_event(struct h |
| else if (hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI && |
| hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) |
| table = macbookair_fn_keys; |
| + else if (hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI && |
| + hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) |
| + table = macbookair4_fn_keys; |
| else if (hid->product < 0x21d || hid->product >= 0x300) |
| table = powerbook_fn_keys; |
| else |
| @@ -502,6 +527,12 @@ static const struct hid_device_id apple_ |
| .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS), |
| .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, |
| + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI), |
| + .driver_data = APPLE_HAS_FN }, |
| + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO), |
| + .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, |
| + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS), |
| + .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, |
| { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), |
| .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, |
| { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), |
| --- a/drivers/hid/hid-core.c |
| +++ b/drivers/hid/hid-core.c |
| @@ -1343,6 +1343,9 @@ static const struct hid_device_id hid_ha |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI) }, |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO) }, |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) }, |
| + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) }, |
| + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) }, |
| + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) }, |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI) }, |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ISO) }, |
| { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_JIS) }, |
| --- a/drivers/hid/hid-ids.h |
| +++ b/drivers/hid/hid-ids.h |
| @@ -109,6 +109,9 @@ |
| #define USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI 0x0245 |
| #define USB_DEVICE_ID_APPLE_WELLSPRING5_ISO 0x0246 |
| #define USB_DEVICE_ID_APPLE_WELLSPRING5_JIS 0x0247 |
| +#define USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI 0x0249 |
| +#define USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO 0x024a |
| +#define USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS 0x024b |
| #define USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI 0x024c |
| #define USB_DEVICE_ID_APPLE_WELLSPRING6_ISO 0x024d |
| #define USB_DEVICE_ID_APPLE_WELLSPRING6_JIS 0x024e |