evdev: split scroll button state check out

Rather than checking the physical key's state, set a flag for the button to be
down. This enables us to use non-physical buttons (middle button emulation).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Peter Hutterer 2016-04-12 12:59:59 +10:00
parent d76263a00f
commit aeb0c21b1c
2 changed files with 4 additions and 1 deletions

View file

@ -273,7 +273,7 @@ evdev_post_trackpoint_scroll(struct evdev_device *device,
uint64_t time)
{
if (device->scroll.method != LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN ||
!hw_is_key_down(device, device->scroll.button))
!device->scroll.button_scroll_btn_pressed)
return false;
if (device->scroll.button_scroll_active)
@ -494,6 +494,8 @@ static void
evdev_button_scroll_button(struct evdev_device *device,
uint64_t time, int is_press)
{
device->scroll.button_scroll_btn_pressed = is_press;
if (is_press) {
libinput_timer_set(&device->scroll.timer,
time + DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT);

View file

@ -172,6 +172,7 @@ struct evdev_device {
/* Checks if buttons are down and commits the setting */
void (*change_scroll_method)(struct evdev_device *device);
bool button_scroll_active;
bool button_scroll_btn_pressed;
double threshold;
double direction_lock_threshold;
uint32_t direction;