From 26e4f9f0deb16b51860f3b89b32d2371648da3be Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 14 Aug 2009 13:00:35 +1000 Subject: [PATCH] Allow 0 as wheel emulation button for unconditional scrolling (#20529) If wheel emulation is on and the emulation button is 0, then any x/y motion of the device is converted into wheel events. The devices becomes a scrolling-only device. X.Org Bug 20529 Signed-off-by: Peter Hutterer --- include/evdev-properties.h | 2 +- man/evdev.man | 5 ++++- src/emuWheel.c | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/evdev-properties.h b/include/evdev-properties.h index 55c5a39..3e3c194 100644 --- a/include/evdev-properties.h +++ b/include/evdev-properties.h @@ -43,7 +43,7 @@ #define EVDEV_PROP_WHEEL_INERTIA "Evdev Wheel Emulation Inertia" /* CARD16 */ #define EVDEV_PROP_WHEEL_TIMEOUT "Evdev Wheel Emulation Timeout" -/* CARD8, value range 0-32 */ +/* CARD8, value range 0-32, 0 to always scroll */ #define EVDEV_PROP_WHEEL_BUTTON "Evdev Wheel Emulation Button" /* Drag lock */ diff --git a/man/evdev.man b/man/evdev.man index 07f125a..c3c5551 100644 --- a/man/evdev.man +++ b/man/evdev.man @@ -105,7 +105,10 @@ press/release events as specified for the .B XAxisMapping and .B YAxisMapping -settings. Default: 4. Property: "Evdev Wheel Emulation Button". +settings. If the button is 0 and +.BR EmulateWheel +is on, any motion of the device is converted into wheel events. Default: 4. +Property: "Evdev Wheel Emulation Button". .TP 7 .BI "Option \*qEmulateWheelInertia\*q \*q" integer \*q Specifies how far (in pixels) the pointer must move to generate button diff --git a/src/emuWheel.c b/src/emuWheel.c index 421477e..9bff731 100644 --- a/src/emuWheel.c +++ b/src/emuWheel.c @@ -106,8 +106,10 @@ EvdevWheelEmuFilterMotion(InputInfoPtr pInfo, struct input_event *pEv) if (!pEvdev->emulateWheel.enabled) return FALSE; - /* Handle our motion events if the emuWheel button is pressed*/ - if (pEvdev->emulateWheel.button_state) { + /* Handle our motion events if the emuWheel button is pressed + * wheel button of 0 means always emulate wheel. + */ + if (pEvdev->emulateWheel.button_state || !pEvdev->emulateWheel.button) { /* Just return if the timeout hasn't expired yet */ ms = pEvdev->emulateWheel.expires - GetTimeInMillis(); if (ms > 0) -- 1.6.3.rc1.2.g0164.dirty