mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-04-14 11:44:16 +00:00
Compare commits
6 Commits
tracking/x
...
xf86-input
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e41befa83f | ||
|
|
34619347b7 | ||
|
|
1a031657b9 | ||
|
|
51575b60b1 | ||
|
|
f285567d37 | ||
|
|
af1d085877 |
@@ -23,7 +23,7 @@
|
|||||||
# Initialize Autoconf
|
# Initialize Autoconf
|
||||||
AC_PREREQ([2.60])
|
AC_PREREQ([2.60])
|
||||||
AC_INIT([xf86-input-evdev],
|
AC_INIT([xf86-input-evdev],
|
||||||
[2.8.1],
|
[2.8.3],
|
||||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||||
[xf86-input-evdev])
|
[xf86-input-evdev])
|
||||||
AC_CONFIG_SRCDIR([Makefile.am])
|
AC_CONFIG_SRCDIR([Makefile.am])
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ EvdevWheelEmuFilterMotion(InputInfoPtr pInfo, struct input_event *pEv)
|
|||||||
EvdevPtr pEvdev = (EvdevPtr)pInfo->private;
|
EvdevPtr pEvdev = (EvdevPtr)pInfo->private;
|
||||||
WheelAxisPtr pAxis = NULL, pOtherAxis = NULL;
|
WheelAxisPtr pAxis = NULL, pOtherAxis = NULL;
|
||||||
int value = pEv->value;
|
int value = pEv->value;
|
||||||
int oldValue;
|
|
||||||
|
|
||||||
/* Has wheel emulation been configured to be enabled? */
|
/* Has wheel emulation been configured to be enabled? */
|
||||||
if (!pEvdev->emulateWheel.enabled)
|
if (!pEvdev->emulateWheel.enabled)
|
||||||
@@ -118,9 +117,13 @@ EvdevWheelEmuFilterMotion(InputInfoPtr pInfo, struct input_event *pEv)
|
|||||||
/* We don't want to intercept real mouse wheel events */
|
/* We don't want to intercept real mouse wheel events */
|
||||||
if(pEv->type == EV_ABS) {
|
if(pEv->type == EV_ABS) {
|
||||||
int axis = pEvdev->abs_axis_map[pEv->code];
|
int axis = pEvdev->abs_axis_map[pEv->code];
|
||||||
oldValue = valuator_mask_get(pEvdev->vals, axis);
|
int oldValue;
|
||||||
valuator_mask_set(pEvdev->vals, axis, value);
|
|
||||||
value -= oldValue; /* make value into a differential measurement */
|
if (axis > -1 && valuator_mask_fetch(pEvdev->old_vals, axis, &oldValue)) {
|
||||||
|
valuator_mask_set(pEvdev->vals, axis, value);
|
||||||
|
value -= oldValue; /* make value into a differential measurement */
|
||||||
|
} else
|
||||||
|
value = 0; /* avoid a jump on the first touch */
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(pEv->code) {
|
switch(pEv->code) {
|
||||||
|
|||||||
60
src/evdev.c
60
src/evdev.c
@@ -493,31 +493,39 @@ EvdevProcessValuators(InputInfoPtr pInfo)
|
|||||||
EvdevPtr pEvdev = pInfo->private;
|
EvdevPtr pEvdev = pInfo->private;
|
||||||
int *delta = pEvdev->delta;
|
int *delta = pEvdev->delta;
|
||||||
|
|
||||||
/* convert to relative motion for touchpads */
|
if (pEvdev->abs_queued) {
|
||||||
if (pEvdev->abs_queued && (pEvdev->flags & EVDEV_RELATIVE_MODE)) {
|
/* convert to relative motion for touchpads */
|
||||||
if (pEvdev->in_proximity) {
|
if (pEvdev->flags & EVDEV_RELATIVE_MODE) {
|
||||||
if (valuator_mask_isset(pEvdev->vals, 0))
|
if (pEvdev->in_proximity) {
|
||||||
{
|
if (valuator_mask_isset(pEvdev->vals, 0))
|
||||||
if (valuator_mask_isset(pEvdev->old_vals, 0))
|
{
|
||||||
delta[REL_X] = valuator_mask_get(pEvdev->vals, 0) -
|
if (valuator_mask_isset(pEvdev->old_vals, 0))
|
||||||
valuator_mask_get(pEvdev->old_vals, 0);
|
delta[REL_X] = valuator_mask_get(pEvdev->vals, 0) -
|
||||||
valuator_mask_set(pEvdev->old_vals, 0,
|
valuator_mask_get(pEvdev->old_vals, 0);
|
||||||
valuator_mask_get(pEvdev->vals, 0));
|
valuator_mask_set(pEvdev->old_vals, 0,
|
||||||
}
|
valuator_mask_get(pEvdev->vals, 0));
|
||||||
if (valuator_mask_isset(pEvdev->vals, 1))
|
}
|
||||||
{
|
if (valuator_mask_isset(pEvdev->vals, 1))
|
||||||
if (valuator_mask_isset(pEvdev->old_vals, 1))
|
{
|
||||||
delta[REL_Y] = valuator_mask_get(pEvdev->vals, 1) -
|
if (valuator_mask_isset(pEvdev->old_vals, 1))
|
||||||
valuator_mask_get(pEvdev->old_vals, 1);
|
delta[REL_Y] = valuator_mask_get(pEvdev->vals, 1) -
|
||||||
valuator_mask_set(pEvdev->old_vals, 1,
|
valuator_mask_get(pEvdev->old_vals, 1);
|
||||||
valuator_mask_get(pEvdev->vals, 1));
|
valuator_mask_set(pEvdev->old_vals, 1,
|
||||||
|
valuator_mask_get(pEvdev->vals, 1));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
valuator_mask_zero(pEvdev->old_vals);
|
||||||
}
|
}
|
||||||
|
valuator_mask_zero(pEvdev->vals);
|
||||||
|
pEvdev->abs_queued = 0;
|
||||||
|
pEvdev->rel_queued = 1;
|
||||||
} else {
|
} else {
|
||||||
valuator_mask_zero(pEvdev->old_vals);
|
int val;
|
||||||
|
if (valuator_mask_fetch(pEvdev->vals, 0, &val))
|
||||||
|
valuator_mask_set(pEvdev->old_vals, 0, val);
|
||||||
|
if (valuator_mask_fetch(pEvdev->vals, 1, &val))
|
||||||
|
valuator_mask_set(pEvdev->old_vals, 1, val);
|
||||||
}
|
}
|
||||||
valuator_mask_zero(pEvdev->vals);
|
|
||||||
pEvdev->abs_queued = 0;
|
|
||||||
pEvdev->rel_queued = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pEvdev->rel_queued) {
|
if (pEvdev->rel_queued) {
|
||||||
@@ -1157,7 +1165,7 @@ EvdevKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl)
|
|||||||
};
|
};
|
||||||
|
|
||||||
InputInfoPtr pInfo;
|
InputInfoPtr pInfo;
|
||||||
struct input_event ev[ArrayLength(bits)];
|
struct input_event ev[ArrayLength(bits) + 1];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
memset(ev, 0, sizeof(ev));
|
memset(ev, 0, sizeof(ev));
|
||||||
@@ -1169,6 +1177,10 @@ EvdevKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl)
|
|||||||
ev[i].value = (ctrl->leds & bits[i].xbit) > 0;
|
ev[i].value = (ctrl->leds & bits[i].xbit) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ev[i].type = EV_SYN;
|
||||||
|
ev[i].code = SYN_REPORT;
|
||||||
|
ev[i].value = 0;
|
||||||
|
|
||||||
write(pInfo->fd, ev, sizeof ev);
|
write(pInfo->fd, ev, sizeof ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1684,7 +1696,7 @@ EvdevAddRelValuatorClass(DeviceIntPtr device)
|
|||||||
if (axis == REL_WHEEL)
|
if (axis == REL_WHEEL)
|
||||||
SetScrollValuator(device, axnum, SCROLL_TYPE_VERTICAL, -1.0, SCROLL_FLAG_PREFERRED);
|
SetScrollValuator(device, axnum, SCROLL_TYPE_VERTICAL, -1.0, SCROLL_FLAG_PREFERRED);
|
||||||
else if (axis == REL_DIAL)
|
else if (axis == REL_DIAL)
|
||||||
SetScrollValuator(device, axnum, SCROLL_TYPE_VERTICAL, -1.0, SCROLL_FLAG_NONE);
|
SetScrollValuator(device, axnum, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE);
|
||||||
else if (axis == REL_HWHEEL)
|
else if (axis == REL_HWHEEL)
|
||||||
SetScrollValuator(device, axnum, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE);
|
SetScrollValuator(device, axnum, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user