tools: map KEY_UP/DOWN to pointer acceleration
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 3 Jul 2014 23:04:10 +0000 (09:04 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 23 Sep 2014 00:46:40 +0000 (10:46 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
tools/event-gui.c

index fcae236..142990d 100644 (file)
@@ -224,6 +224,41 @@ window_cleanup(struct window *w)
 }
 
 static void
+change_ptraccel(struct window *w, double amount)
+{
+       struct libinput_device **dev;
+
+       ARRAY_FOR_EACH(w->devices, dev) {
+               double speed;
+               enum libinput_config_status status;
+
+               if (*dev == NULL)
+                       continue;
+
+               if (!libinput_device_config_accel_is_available(*dev))
+                       continue;
+
+               speed = libinput_device_config_accel_get_speed(*dev);
+               speed = clip(speed + amount, -1, 1);
+
+               status = libinput_device_config_accel_set_speed(*dev, speed);
+
+               if (status != LIBINPUT_CONFIG_STATUS_SUCCESS) {
+                       msg("%s: failed to change accel to %.2f (%s)\n",
+                           libinput_device_get_name(*dev),
+                           speed,
+                           libinput_config_status_to_str(status));
+               } else {
+                       printf("%s: speed is %.2f\n",
+                              libinput_device_get_name(*dev),
+                              speed);
+               }
+
+       }
+}
+
+
+static void
 handle_event_device_notify(struct libinput_event *ev)
 {
        struct libinput_device *dev = libinput_event_get_device(ev);
@@ -344,9 +379,24 @@ static int
 handle_event_keyboard(struct libinput_event *ev, struct window *w)
 {
        struct libinput_event_keyboard *k = libinput_event_get_keyboard_event(ev);
+       unsigned int key = libinput_event_keyboard_get_key(k);
+
+       if (libinput_event_keyboard_get_key_state(k) ==
+           LIBINPUT_KEY_STATE_RELEASED)
+               return 0;
 
-       if (libinput_event_keyboard_get_key(k) == KEY_ESC)
+       switch(key) {
+       case KEY_ESC:
                return 1;
+       case KEY_UP:
+               change_ptraccel(w, 0.1);
+               break;
+       case KEY_DOWN:
+               change_ptraccel(w, -0.1);
+               break;
+       default:
+               break;
+       }
 
        return 0;
 }