mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-05 15:40:27 +01:00
evdev-touchpad: Implement two finger scroll
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
parent
68449fc8e8
commit
64545a2977
1 changed files with 23 additions and 6 deletions
|
|
@ -477,9 +477,23 @@ touchpad_update_state(struct touchpad_dispatch *touchpad, uint32_t time)
|
|||
|
||||
filter_motion(touchpad, &dx, &dy, time);
|
||||
|
||||
touchpad->device->rel.dx = wl_fixed_from_double(dx);
|
||||
touchpad->device->rel.dy = wl_fixed_from_double(dy);
|
||||
touchpad->device->pending_events |= EVDEV_RELATIVE_MOTION;
|
||||
if (touchpad->finger_state == TOUCHPAD_FINGERS_ONE) {
|
||||
touchpad->device->rel.dx = wl_fixed_from_double(dx);
|
||||
touchpad->device->rel.dy = wl_fixed_from_double(dy);
|
||||
touchpad->device->pending_events |=
|
||||
EVDEV_RELATIVE_MOTION;
|
||||
} else if (touchpad->finger_state == TOUCHPAD_FINGERS_TWO) {
|
||||
if (dx != 0.0)
|
||||
notify_axis(touchpad->device->seat,
|
||||
time,
|
||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
||||
wl_fixed_from_double(dx));
|
||||
if (dy != 0.0)
|
||||
notify_axis(touchpad->device->seat,
|
||||
time,
|
||||
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
||||
wl_fixed_from_double(dy));
|
||||
}
|
||||
}
|
||||
|
||||
if (!(touchpad->state & TOUCHPAD_STATE_MOVE) &&
|
||||
|
|
@ -579,19 +593,22 @@ process_key(struct touchpad_dispatch *touchpad,
|
|||
touchpad->reset = 1;
|
||||
break;
|
||||
case BTN_TOOL_FINGER:
|
||||
touchpad->finger_state &= ~TOUCHPAD_FINGERS_ONE;
|
||||
if (e->value)
|
||||
touchpad->finger_state |= TOUCHPAD_FINGERS_ONE;
|
||||
else
|
||||
touchpad->finger_state &= ~TOUCHPAD_FINGERS_ONE;
|
||||
break;
|
||||
case BTN_TOOL_DOUBLETAP:
|
||||
touchpad->finger_state &= ~TOUCHPAD_FINGERS_TWO;
|
||||
if (e->value)
|
||||
touchpad->finger_state |= TOUCHPAD_FINGERS_TWO;
|
||||
else
|
||||
touchpad->finger_state &= ~TOUCHPAD_FINGERS_TWO;
|
||||
break;
|
||||
case BTN_TOOL_TRIPLETAP:
|
||||
touchpad->finger_state &= ~TOUCHPAD_FINGERS_THREE;
|
||||
if (e->value)
|
||||
touchpad->finger_state |= TOUCHPAD_FINGERS_THREE;
|
||||
else
|
||||
touchpad->finger_state &= ~TOUCHPAD_FINGERS_THREE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue