summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2018-09-18 09:27:48 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2018-09-26 13:12:46 +1000
commit4bf471f5141ec94b97e0d6a284352b8c1fe97c70 (patch)
tree710c5c4b30150cd93d81e6943251bf5ab52120a3
parent6e1f6d41823ac768fceb5ef62a4f957bf90596ed (diff)
downloadlibinput-4bf471f5141ec94b97e0d6a284352b8c1fe97c70.tar.gz
evdev: add a quirk for the Kensington Orbit
Pretends to have a middle button where there is none. Fixes #142 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--meson.build1
-rw-r--r--quirks/30-vendor-kensington.quirks6
-rw-r--r--src/evdev.c8
-rw-r--r--src/quirks.c1
-rw-r--r--src/quirks.h1
5 files changed, 15 insertions, 2 deletions
diff --git a/meson.build b/meson.build
index cc4acdc9..471f701b 100644
--- a/meson.build
+++ b/meson.build
@@ -255,6 +255,7 @@ quirks_data = [
'quirks/30-vendor-elantech.quirks',
'quirks/30-vendor-huion.quirks',
'quirks/30-vendor-ibm.quirks',
+ 'quirks/30-vendor-kensington.quirks',
'quirks/30-vendor-logitech.quirks',
'quirks/30-vendor-microsoft.quirks',
'quirks/30-vendor-razer.quirks',
diff --git a/quirks/30-vendor-kensington.quirks b/quirks/30-vendor-kensington.quirks
new file mode 100644
index 00000000..02eb40f7
--- /dev/null
+++ b/quirks/30-vendor-kensington.quirks
@@ -0,0 +1,6 @@
+[Kensington Orbit Scroll Wheel]
+MatchBus=usb
+MatchVendor=0x047d
+MatchProduct=0x2048
+ModelKensingtonOrbit=1
+ModelTrackball=1
diff --git a/src/evdev.c b/src/evdev.c
index ec275203..4afdbce7 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1955,8 +1955,12 @@ evdev_pre_configure_model_quirks(struct evdev_device *device)
if (evdev_device_has_model_quirk(device, QUIRK_MODEL_HP_ZBOOK_STUDIO_G3))
libevdev_set_abs_maximum(device->evdev, ABS_MT_SLOT, 1);
- /* Logitech Marble Mouse claims to have a middle button */
- if (evdev_device_has_model_quirk(device, QUIRK_MODEL_LOGITECH_MARBLE_MOUSE))
+ /* Logitech Marble Mouse claims to have a middle button, same for
+ * the Kensington Orbit */
+ if (evdev_device_has_model_quirk(device,
+ QUIRK_MODEL_LOGITECH_MARBLE_MOUSE) ||
+ evdev_device_has_model_quirk(device,
+ QUIRK_MODEL_KENSINGTON_ORBIT))
libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
/* Aiptek tablets have tilt but don't send events */
diff --git a/src/quirks.c b/src/quirks.c
index 722f22a4..22c86d02 100644
--- a/src/quirks.c
+++ b/src/quirks.c
@@ -240,6 +240,7 @@ quirk_get_name(enum quirk q)
case QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD: return "ModelHPPavilionDM4Touchpad";
case QUIRK_MODEL_HP_STREAM11_TOUCHPAD: return "ModelHPStream11Touchpad";
case QUIRK_MODEL_HP_ZBOOK_STUDIO_G3: return "ModelHPZBookStudioG3";
+ case QUIRK_MODEL_KENSINGTON_ORBIT: return "ModelKensingtonOrbit";
case QUIRK_MODEL_LENOVO_CARBON_X1_6TH: return "ModelLenovoCarbonX16th";
case QUIRK_MODEL_LENOVO_SCROLLPOINT: return "ModelLenovoScrollPoint";
case QUIRK_MODEL_LENOVO_T450_TOUCHPAD: return "ModelLenovoT450Touchpad";
diff --git a/src/quirks.h b/src/quirks.h
index 7029d540..bd08a19b 100644
--- a/src/quirks.h
+++ b/src/quirks.h
@@ -67,6 +67,7 @@ enum quirk {
QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD,
QUIRK_MODEL_HP_STREAM11_TOUCHPAD,
QUIRK_MODEL_HP_ZBOOK_STUDIO_G3,
+ QUIRK_MODEL_KENSINGTON_ORBIT,
QUIRK_MODEL_LENOVO_CARBON_X1_6TH,
QUIRK_MODEL_LENOVO_SCROLLPOINT,
QUIRK_MODEL_LENOVO_T450_TOUCHPAD,