|
|
|
@ -28,7 +28,7 @@
|
|
|
|
|
#define APPLE_IGNORE_MOUSE 0x0002
|
|
|
|
|
#define APPLE_HAS_FN 0x0004
|
|
|
|
|
#define APPLE_HIDDEV 0x0008
|
|
|
|
|
#define APPLE_ISO_KEYBOARD 0x0010
|
|
|
|
|
/* 0x0010 reserved, was: APPLE_ISO_KEYBOARD */
|
|
|
|
|
#define APPLE_MIGHTYMOUSE 0x0020
|
|
|
|
|
#define APPLE_INVERT_HWHEEL 0x0040
|
|
|
|
|
#define APPLE_IGNORE_HIDINPUT 0x0080
|
|
|
|
@ -36,6 +36,8 @@
|
|
|
|
|
|
|
|
|
|
#define APPLE_FLAG_FKEY 0x01
|
|
|
|
|
|
|
|
|
|
#define HID_COUNTRY_INTERNATIONAL_ISO 13
|
|
|
|
|
|
|
|
|
|
static unsigned int fnmode = 1;
|
|
|
|
|
module_param(fnmode, uint, 0644);
|
|
|
|
|
MODULE_PARM_DESC(fnmode, "Mode of fn key on Apple keyboards (0 = disabled, "
|
|
|
|
@ -247,7 +249,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (iso_layout) {
|
|
|
|
|
if (asc->quirks & APPLE_ISO_KEYBOARD) {
|
|
|
|
|
if (hid->country == HID_COUNTRY_INTERNATIONAL_ISO) {
|
|
|
|
|
trans = apple_find_translation(apple_iso_keyboard, usage->code);
|
|
|
|
|
if (trans) {
|
|
|
|
|
input_event(input, usage->type, trans->to, value);
|
|
|
|
@ -412,60 +414,54 @@ static const struct hid_device_id apple_devices[] = {
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE,
|
|
|
|
|
USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
@ -479,86 +475,85 @@ static const struct hid_device_id apple_devices[] = {
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ 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 },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI),
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO),
|
|
|
|
|
.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_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),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN |
|
|
|
|
|
APPLE_ISO_KEYBOARD },
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS),
|
|
|
|
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
|
|
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY),
|
|
|
|
|