diff options
Diffstat (limited to 'sys-kernel/mactel-linux-sources/files/2.6.24-mactel-patches-r155/hid-add-new-apple-keyboard.patch')
-rw-r--r-- | sys-kernel/mactel-linux-sources/files/2.6.24-mactel-patches-r155/hid-add-new-apple-keyboard.patch | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/sys-kernel/mactel-linux-sources/files/2.6.24-mactel-patches-r155/hid-add-new-apple-keyboard.patch b/sys-kernel/mactel-linux-sources/files/2.6.24-mactel-patches-r155/hid-add-new-apple-keyboard.patch deleted file mode 100644 index e2fbf92..0000000 --- a/sys-kernel/mactel-linux-sources/files/2.6.24-mactel-patches-r155/hid-add-new-apple-keyboard.patch +++ /dev/null @@ -1,182 +0,0 @@ - - -From: Nicolas Boichat <nicolas@boichat.ch> - - ---- - - drivers/hid/hid-input.c | 48 +++++++++++++++++++++++++++++++++--- - drivers/hid/usbhid/hid-quirks.c | 52 +++++++++++++++++++++++++++++++++++++++ - include/linux/hid.h | 1 + - 3 files changed, 97 insertions(+), 4 deletions(-) - - -diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c -index 0b27da7..a39de6c 100644 ---- a/drivers/hid/hid-input.c -+++ b/drivers/hid/hid-input.c -@@ -119,6 +119,30 @@ static struct hidinput_key_translation powerbook_fn_keys[] = { - { } - }; - -+static struct hidinput_key_translation apple_keyboard_fn_keys[] = { -+ { KEY_BACKSPACE, KEY_DELETE }, -+ { KEY_F1, KEY_BRIGHTNESSDOWN, POWERBOOK_FLAG_FKEY }, -+ { KEY_F2, KEY_BRIGHTNESSUP, POWERBOOK_FLAG_FKEY }, -+ { KEY_F3, KEY_CYCLEWINDOWS, POWERBOOK_FLAG_FKEY }, -+ { KEY_F4, KEY_CONFIG, POWERBOOK_FLAG_FKEY }, -+ { KEY_F7, KEY_PREVIOUSSONG, POWERBOOK_FLAG_FKEY }, -+ { KEY_F8, KEY_PLAYPAUSE, POWERBOOK_FLAG_FKEY }, -+ { KEY_F9, KEY_NEXTSONG, POWERBOOK_FLAG_FKEY }, -+ { KEY_F10, KEY_MUTE, POWERBOOK_FLAG_FKEY }, -+ { KEY_F11, KEY_VOLUMEDOWN, POWERBOOK_FLAG_FKEY }, -+ { KEY_F12, KEY_VOLUMEUP, POWERBOOK_FLAG_FKEY }, -+ { KEY_UP, KEY_PAGEUP }, -+ { KEY_DOWN, KEY_PAGEDOWN }, -+ { KEY_LEFT, KEY_HOME }, -+ { KEY_RIGHT, KEY_END }, -+ { } -+}; -+ -+static struct hidinput_key_translation apple_keyboard[] = { -+ { KEY_VOLUMEUP, KEY_EJECTCD }, -+ { } -+}; -+ - static struct hidinput_key_translation powerbook_numlock_keys[] = { - { KEY_J, KEY_KP1 }, - { KEY_K, KEY_KP2 }, -@@ -176,8 +200,10 @@ static int hidinput_pb_event(struct hid_device *hid, struct input_dev *input, - - if (hid_pb_fnmode) { - int do_translate; -- -- trans = find_translation(powerbook_fn_keys, usage->code); -+ if (hid->quirks & HID_QUIRK_APPLE_KEYBOARD) -+ trans = find_translation(apple_keyboard_fn_keys, usage->code); -+ else -+ trans = find_translation(powerbook_fn_keys, usage->code); - if (trans) { - if (test_bit(usage->code, hid->pb_pressed_fn)) - do_translate = 1; -@@ -200,8 +226,8 @@ static int hidinput_pb_event(struct hid_device *hid, struct input_dev *input, - } - } - -- if (test_bit(usage->code, hid->pb_pressed_numlock) || -- test_bit(LED_NUML, input->led)) { -+ if (!(hid->quirks & HID_QUIRK_APPLE_KEYBOARD) && (test_bit(usage->code, hid->pb_pressed_numlock) || -+ test_bit(LED_NUML, input->led))) { - trans = find_translation(powerbook_numlock_keys, usage->code); - - if (trans) { -@@ -217,6 +243,14 @@ static int hidinput_pb_event(struct hid_device *hid, struct input_dev *input, - } - } - -+ if (hid->quirks & HID_QUIRK_APPLE_KEYBOARD) { -+ trans = find_translation(apple_keyboard, usage->code); -+ if (trans) { -+ input_event(input, usage->type, trans->to, value); -+ return 1; -+ } -+ } -+ - if (hid->quirks & HID_QUIRK_POWERBOOK_ISO_KEYBOARD) { - trans = find_translation(powerbook_iso_keyboard, usage->code); - if (trans) { -@@ -241,6 +275,12 @@ static void hidinput_pb_setup(struct input_dev *input) - for (trans = powerbook_numlock_keys; trans->from; trans++) - set_bit(trans->to, input->keybit); - -+ for (trans = apple_keyboard_fn_keys; trans->from; trans++) -+ set_bit(trans->to, input->keybit); -+ -+ for (trans = apple_keyboard; trans->from; trans++) -+ set_bit(trans->to, input->keybit); -+ - for (trans = powerbook_iso_keyboard; trans->from; trans++) - set_bit(trans->to, input->keybit); - -diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c -index a255285..8d21c83 100644 ---- a/drivers/hid/usbhid/hid-quirks.c -+++ b/drivers/hid/usbhid/hid-quirks.c -@@ -59,6 +59,32 @@ - #define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a - #define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b - #define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c -+ -+/* Apple 2007 Wired keyboards */ -+#define USB_DEVICE_ID_APPLE_KEYBOARD_ANSI 0x0220 -+#define USB_DEVICE_ID_APPLE_KEYBOARD_ISO 0x0221 -+#define USB_DEVICE_ID_APPLE_KEYBOARD_JIS 0x0222 -+ -+/* macbook3,1 keyboards */ -+#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI 0x0229 -+#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO 0x022a -+#define USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS 0x022b -+ -+/* Apple WellSpring keyboard + trackpad */ -+#define USB_PRODUCT_ID_WELLSPRING_ANSI 0x0223 -+#define USB_PRODUCT_ID_WELLSPRING_ISO 0x0224 -+#define USB_PRODUCT_ID_WELLSPRING_JIS 0x0225 -+ -+/* Apple WellSpring II keyboard + trackpad */ -+#define USB_PRODUCT_ID_WELLSPRING2_ANSI 0x0230 -+#define USB_PRODUCT_ID_WELLSPRING2_ISO 0x0231 -+#define USB_PRODUCT_ID_WELLSPRING2_JIS 0x0232 -+ -+/* Apple 2007 Wireless keyboards */ -+#define USB_DEVICE_ID_APPLE_WIRELESS_KEYBOARD_ANSI 0x022c -+#define USB_DEVICE_ID_APPLE_WIRELESS_KEYBOARD_ISO 0x022d -+#define USB_DEVICE_ID_APPLE_WIRELESS_KEYBOARD_JIS 0x022e -+ - #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a - #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b - #define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242 -@@ -551,6 +577,32 @@ static const struct hid_blacklist { - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, -+ -+ /* Apple 2007 Wired keyboards */ -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_KEYBOARD_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_KEYBOARD_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_KEYBOARD_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD}, -+ -+ /* macbook3,1 keyboards */ -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD}, -+ -+ /* Apple 2007 Wireless keyboards */ -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WIRELESS_KEYBOARD_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WIRELESS_KEYBOARD_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WIRELESS_KEYBOARD_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_KEYBOARD}, -+ -+ /* Apple WellSpring keyboard + trackpad */ -+ { USB_VENDOR_ID_APPLE, USB_PRODUCT_ID_WELLSPRING_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_APPLE_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_PRODUCT_ID_WELLSPRING_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_APPLE_KEYBOARD | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_PRODUCT_ID_WELLSPRING_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_APPLE_KEYBOARD}, -+ -+ /* Apple WellSpring II keyboard + trackpad */ -+ { USB_VENDOR_ID_APPLE, USB_PRODUCT_ID_WELLSPRING2_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_APPLE_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_PRODUCT_ID_WELLSPRING2_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_APPLE_KEYBOARD | HID_QUIRK_POWERBOOK_ISO_KEYBOARD}, -+ { USB_VENDOR_ID_APPLE, USB_PRODUCT_ID_WELLSPRING2_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_APPLE_KEYBOARD}, -+ - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, - { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, - -diff --git a/include/linux/hid.h b/include/linux/hid.h -index 6e35b92..04b26b5 100644 ---- a/include/linux/hid.h -+++ b/include/linux/hid.h -@@ -281,6 +281,7 @@ struct hid_item { - #define HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL 0x00400000 - #define HID_QUIRK_LOGITECH_EXPANDED_KEYMAP 0x00800000 - #define HID_QUIRK_IGNORE_HIDINPUT 0x01000000 -+#define HID_QUIRK_APPLE_KEYBOARD 0x02000000 - - /* - * Separate quirks for runtime report descriptor fixup |