diff options
author | Edgar (gimli) Hucek <gimli@dark-green.com> | 2010-11-03 10:36:18 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2010-11-03 10:36:18 -0400 |
commit | 99b9f758bbc904f22faffcf4d83205f4a5e7bc0c (patch) | |
tree | 5b5579af0351d6d7937e51c4bc535c64cb0b66b9 /drivers/hid/hid-apple.c | |
parent | 04561c5aa243c98cae93cde27e05740df787e692 (diff) |
HID: add MacBookAir 3,1 and 3,2 support
This patch add support for the MacBookAir3,1 and MacBookAir3,2 to the hid
driver.
Signed-off-by: Edgar (gimli) Hucek <gimli@dark-green.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-apple.c')
-rw-r--r-- | drivers/hid/hid-apple.c | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c index eaeca564a8d3..6c52203cdbdf 100644 --- a/drivers/hid/hid-apple.c +++ b/drivers/hid/hid-apple.c | |||
@@ -59,6 +59,27 @@ struct apple_key_translation { | |||
59 | u8 flags; | 59 | u8 flags; |
60 | }; | 60 | }; |
61 | 61 | ||
62 | static const struct apple_key_translation macbookair_fn_keys[] = { | ||
63 | { KEY_BACKSPACE, KEY_DELETE }, | ||
64 | { KEY_ENTER, KEY_INSERT }, | ||
65 | { KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY }, | ||
66 | { KEY_F2, KEY_BRIGHTNESSUP, APPLE_FLAG_FKEY }, | ||
67 | { KEY_F3, KEY_SCALE, APPLE_FLAG_FKEY }, | ||
68 | { KEY_F4, KEY_DASHBOARD, APPLE_FLAG_FKEY }, | ||
69 | { KEY_F6, KEY_PREVIOUSSONG, APPLE_FLAG_FKEY }, | ||
70 | { KEY_F7, KEY_PLAYPAUSE, APPLE_FLAG_FKEY }, | ||
71 | { KEY_F8, KEY_NEXTSONG, APPLE_FLAG_FKEY }, | ||
72 | { KEY_F9, KEY_MUTE, APPLE_FLAG_FKEY }, | ||
73 | { KEY_F10, KEY_VOLUMEDOWN, APPLE_FLAG_FKEY }, | ||
74 | { KEY_F11, KEY_VOLUMEUP, APPLE_FLAG_FKEY }, | ||
75 | { KEY_F12, KEY_EJECTCD, APPLE_FLAG_FKEY }, | ||
76 | { KEY_UP, KEY_PAGEUP }, | ||
77 | { KEY_DOWN, KEY_PAGEDOWN }, | ||
78 | { KEY_LEFT, KEY_HOME }, | ||
79 | { KEY_RIGHT, KEY_END }, | ||
80 | { } | ||
81 | }; | ||
82 | |||
62 | static const struct apple_key_translation apple_fn_keys[] = { | 83 | static const struct apple_key_translation apple_fn_keys[] = { |
63 | { KEY_BACKSPACE, KEY_DELETE }, | 84 | { KEY_BACKSPACE, KEY_DELETE }, |
64 | { KEY_ENTER, KEY_INSERT }, | 85 | { KEY_ENTER, KEY_INSERT }, |
@@ -157,10 +178,15 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input, | |||
157 | if (fnmode) { | 178 | if (fnmode) { |
158 | int do_translate; | 179 | int do_translate; |
159 | 180 | ||
160 | trans = apple_find_translation((hid->product < 0x21d || | 181 | if(hid->product >= USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI && |
161 | hid->product >= 0x300) ? | 182 | hid->product <= USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) { |
162 | powerbook_fn_keys : apple_fn_keys, | 183 | trans = apple_find_translation(macbookair_fn_keys, usage->code); |
163 | usage->code); | 184 | } else if (hid->product < 0x21d || hid->product >= 0x300) { |
185 | trans = apple_find_translation(powerbook_fn_keys, usage->code); | ||
186 | } else { | ||
187 | trans = apple_find_translation(apple_fn_keys, usage->code); | ||
188 | } | ||
189 | |||
164 | if (trans) { | 190 | if (trans) { |
165 | if (test_bit(usage->code, asc->pressed_fn)) | 191 | if (test_bit(usage->code, asc->pressed_fn)) |
166 | do_translate = 1; | 192 | do_translate = 1; |
@@ -440,6 +466,18 @@ static const struct hid_device_id apple_devices[] = { | |||
440 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, | 466 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, |
441 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), | 467 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), |
442 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, | 468 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, |
469 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI), | ||
470 | .driver_data = APPLE_HAS_FN }, | ||
471 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO), | ||
472 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, | ||
473 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS), | ||
474 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, | ||
475 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI), | ||
476 | .driver_data = APPLE_HAS_FN }, | ||
477 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO), | ||
478 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, | ||
479 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS), | ||
480 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, | ||
443 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), | 481 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), |
444 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, | 482 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, |
445 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), | 483 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), |