mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-23 01:40:30 +00:00
HID: lenovo: Add support for IBM/Lenovo Scrollpoint mice
The IBM/Lenovo Scrollpoint mice feature a trackpoint-like stick instead of a scrolling wheel capable of 2-D (vertical+horizontal) scrolling. hid-generic does only expose 1-D (vertical) scrolling functionality for these mice. This patch adds support for horizontal scrolling for the IBM/Lenovo Scrollpoint mice to hid-lenovo. [jkosina@suse.cz: remove change versioning from git changelog] Signed-off-by: Peter Ganzhorn <peter.ganzhorn@gmail.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Peter De Wachter <pdewacht@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
b658912cb0
commit
a230cd52b8
@ -462,10 +462,11 @@ config HID_LENOVO
|
|||||||
select NEW_LEDS
|
select NEW_LEDS
|
||||||
select LEDS_CLASS
|
select LEDS_CLASS
|
||||||
---help---
|
---help---
|
||||||
Support for Lenovo devices that are not fully compliant with HID standard.
|
Support for IBM/Lenovo devices that are not fully compliant with HID standard.
|
||||||
|
|
||||||
Say Y if you want support for the non-compliant features of the Lenovo
|
Say Y if you want support for horizontal scrolling of the IBM/Lenovo
|
||||||
Thinkpad standalone keyboards, e.g:
|
Scrollpoint mice or the non-compliant features of the Lenovo Thinkpad
|
||||||
|
standalone keyboards, e.g:
|
||||||
- ThinkPad USB Keyboard with TrackPoint (supports extra LEDs and trackpoint
|
- ThinkPad USB Keyboard with TrackPoint (supports extra LEDs and trackpoint
|
||||||
configuration)
|
configuration)
|
||||||
- ThinkPad Compact Bluetooth Keyboard with TrackPoint (supports Fn keys)
|
- ThinkPad Compact Bluetooth Keyboard with TrackPoint (supports Fn keys)
|
||||||
|
@ -552,6 +552,13 @@
|
|||||||
#define USB_VENDOR_ID_HUION 0x256c
|
#define USB_VENDOR_ID_HUION 0x256c
|
||||||
#define USB_DEVICE_ID_HUION_TABLET 0x006e
|
#define USB_DEVICE_ID_HUION_TABLET 0x006e
|
||||||
|
|
||||||
|
#define USB_VENDOR_ID_IBM 0x04b3
|
||||||
|
#define USB_DEVICE_ID_IBM_SCROLLPOINT_III 0x3100
|
||||||
|
#define USB_DEVICE_ID_IBM_SCROLLPOINT_PRO 0x3103
|
||||||
|
#define USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL 0x3105
|
||||||
|
#define USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL 0x3108
|
||||||
|
#define USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO 0x3109
|
||||||
|
|
||||||
#define USB_VENDOR_ID_IDEACOM 0x1cb6
|
#define USB_VENDOR_ID_IDEACOM 0x1cb6
|
||||||
#define USB_DEVICE_ID_IDEACOM_IDC6650 0x6650
|
#define USB_DEVICE_ID_IDEACOM_IDC6650 0x6650
|
||||||
#define USB_DEVICE_ID_IDEACOM_IDC6651 0x6651
|
#define USB_DEVICE_ID_IDEACOM_IDC6651 0x6651
|
||||||
@ -684,6 +691,7 @@
|
|||||||
#define USB_DEVICE_ID_LENOVO_TPKBD 0x6009
|
#define USB_DEVICE_ID_LENOVO_TPKBD 0x6009
|
||||||
#define USB_DEVICE_ID_LENOVO_CUSBKBD 0x6047
|
#define USB_DEVICE_ID_LENOVO_CUSBKBD 0x6047
|
||||||
#define USB_DEVICE_ID_LENOVO_CBTKBD 0x6048
|
#define USB_DEVICE_ID_LENOVO_CBTKBD 0x6048
|
||||||
|
#define USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL 0x6049
|
||||||
#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067
|
#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067
|
||||||
#define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085
|
#define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085
|
||||||
#define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3
|
#define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3
|
||||||
|
@ -6,6 +6,17 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2012 Bernhard Seibold
|
* Copyright (c) 2012 Bernhard Seibold
|
||||||
* Copyright (c) 2014 Jamie Lentin <jm@lentin.co.uk>
|
* Copyright (c) 2014 Jamie Lentin <jm@lentin.co.uk>
|
||||||
|
*
|
||||||
|
* Linux IBM/Lenovo Scrollpoint mouse driver:
|
||||||
|
* - IBM Scrollpoint III
|
||||||
|
* - IBM Scrollpoint Pro
|
||||||
|
* - IBM Scrollpoint Optical
|
||||||
|
* - IBM Scrollpoint Optical 800dpi
|
||||||
|
* - IBM Scrollpoint Optical 800dpi Pro
|
||||||
|
* - Lenovo Scrollpoint Optical
|
||||||
|
*
|
||||||
|
* Copyright (c) 2012 Peter De Wachter <pdewacht@gmail.com>
|
||||||
|
* Copyright (c) 2018 Peter Ganzhorn <peter.ganzhorn@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -160,6 +171,17 @@ static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lenovo_input_mapping_scrollpoint(struct hid_device *hdev,
|
||||||
|
struct hid_input *hi, struct hid_field *field,
|
||||||
|
struct hid_usage *usage, unsigned long **bit, int *max)
|
||||||
|
{
|
||||||
|
if (usage->hid == HID_GD_Z) {
|
||||||
|
hid_map_usage(hi, usage, bit, max, EV_REL, REL_HWHEEL);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int lenovo_input_mapping(struct hid_device *hdev,
|
static int lenovo_input_mapping(struct hid_device *hdev,
|
||||||
struct hid_input *hi, struct hid_field *field,
|
struct hid_input *hi, struct hid_field *field,
|
||||||
struct hid_usage *usage, unsigned long **bit, int *max)
|
struct hid_usage *usage, unsigned long **bit, int *max)
|
||||||
@ -172,6 +194,14 @@ static int lenovo_input_mapping(struct hid_device *hdev,
|
|||||||
case USB_DEVICE_ID_LENOVO_CBTKBD:
|
case USB_DEVICE_ID_LENOVO_CBTKBD:
|
||||||
return lenovo_input_mapping_cptkbd(hdev, hi, field,
|
return lenovo_input_mapping_cptkbd(hdev, hi, field,
|
||||||
usage, bit, max);
|
usage, bit, max);
|
||||||
|
case USB_DEVICE_ID_IBM_SCROLLPOINT_III:
|
||||||
|
case USB_DEVICE_ID_IBM_SCROLLPOINT_PRO:
|
||||||
|
case USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL:
|
||||||
|
case USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL:
|
||||||
|
case USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO:
|
||||||
|
case USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL:
|
||||||
|
return lenovo_input_mapping_scrollpoint(hdev, hi, field,
|
||||||
|
usage, bit, max);
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -883,6 +913,12 @@ static const struct hid_device_id lenovo_devices[] = {
|
|||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) },
|
||||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) },
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPPRODOCK) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPPRODOCK) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_III) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_PRO) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL) },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user