diff options
author | Olivier Fourdan <ofourdan@redhat.com> | 2019-02-27 16:01:29 +0100 |
---|---|---|
committer | Olivier Fourdan <ofourdan@redhat.com> | 2019-06-06 13:04:50 +0200 |
commit | 144b24bfcc62c77dac7c470a7ae12b20b201f2a4 (patch) | |
tree | 54f8fb740953d65e0403553e3cccb8fe2978e188 | |
parent | 4d21650d6d9aaee263191f7ed019869a9d4152dc (diff) | |
download | mutter-144b24bfcc62c77dac7c470a7ae12b20b201f2a4.tar.gz |
clutter/evdev: Use the accessibility virtual device
Instead of adding one specifically for keyboard accessibility in evdev,
use the one from ClutterInputDevice instead.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/512
-rw-r--r-- | clutter/clutter/evdev/clutter-input-device-evdev.c | 77 | ||||
-rw-r--r-- | clutter/clutter/evdev/clutter-input-device-evdev.h | 1 |
2 files changed, 41 insertions, 37 deletions
diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.c b/clutter/clutter/evdev/clutter-input-device-evdev.c index 73072b4c7..ca38e4d7d 100644 --- a/clutter/clutter/evdev/clutter-input-device-evdev.c +++ b/clutter/clutter/evdev/clutter-input-device-evdev.c @@ -739,31 +739,33 @@ get_button_index (gint button) } static void -emulate_button_press (ClutterInputDeviceEvdev *device) +emulate_button_press (ClutterInputDeviceEvdev *device_evdev) { - gint btn = device->mousekeys_btn; + ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); + gint btn = device_evdev->mousekeys_btn; - if (device->mousekeys_btn_states[get_button_index (btn)]) + if (device_evdev->mousekeys_btn_states[get_button_index (btn)]) return; - clutter_virtual_input_device_notify_button (device->mousekeys_virtual_device, + clutter_virtual_input_device_notify_button (device->accessibility_virtual_device, g_get_monotonic_time (), btn, CLUTTER_BUTTON_STATE_PRESSED); - device->mousekeys_btn_states[get_button_index (btn)] = CLUTTER_BUTTON_STATE_PRESSED; + device_evdev->mousekeys_btn_states[get_button_index (btn)] = CLUTTER_BUTTON_STATE_PRESSED; } static void -emulate_button_release (ClutterInputDeviceEvdev *device) +emulate_button_release (ClutterInputDeviceEvdev *device_evdev) { - gint btn = device->mousekeys_btn; + ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); + gint btn = device_evdev->mousekeys_btn; - if (device->mousekeys_btn_states[get_button_index (btn)] == CLUTTER_BUTTON_STATE_RELEASED) + if (device_evdev->mousekeys_btn_states[get_button_index (btn)] == CLUTTER_BUTTON_STATE_RELEASED) return; - clutter_virtual_input_device_notify_button (device->mousekeys_virtual_device, + clutter_virtual_input_device_notify_button (device->accessibility_virtual_device, g_get_monotonic_time (), btn, CLUTTER_BUTTON_STATE_RELEASED); - device->mousekeys_btn_states[get_button_index (btn)] = CLUTTER_BUTTON_STATE_RELEASED; + device_evdev->mousekeys_btn_states[get_button_index (btn)] = CLUTTER_BUTTON_STATE_RELEASED; } static void @@ -830,17 +832,18 @@ mousekeys_get_speed_factor (ClutterInputDeviceEvdev *device, #undef MOUSEKEYS_CURVE static void -emulate_pointer_motion (ClutterInputDeviceEvdev *device, +emulate_pointer_motion (ClutterInputDeviceEvdev *device_evdev, gint dx, gint dy) { + ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); gdouble dx_motion; gdouble dy_motion; gdouble speed; gint64 time_us; time_us = g_get_monotonic_time (); - speed = mousekeys_get_speed_factor (device, time_us); + speed = mousekeys_get_speed_factor (device_evdev, time_us); if (dx < 0) dx_motion = floor (((gdouble) dx) * speed); @@ -852,7 +855,7 @@ emulate_pointer_motion (ClutterInputDeviceEvdev *device, else dy_motion = ceil (((gdouble) dy) * speed); - clutter_virtual_input_device_notify_relative_motion (device->mousekeys_virtual_device, + clutter_virtual_input_device_notify_relative_motion (device->accessibility_virtual_device, time_us, dx_motion, dy_motion); } static gboolean @@ -865,51 +868,53 @@ is_numlock_active (ClutterInputDeviceEvdev *device) } static void -enable_mousekeys (ClutterInputDeviceEvdev *device) +enable_mousekeys (ClutterInputDeviceEvdev *device_evdev) { - ClutterDeviceManager *manager; + ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); + ClutterDeviceManager *manager = device->device_manager; - device->mousekeys_btn = CLUTTER_BUTTON_PRIMARY; - device->move_mousekeys_timer = 0; - device->mousekeys_first_motion_time = 0; - device->mousekeys_last_motion_time = 0; - device->last_mousekeys_key = 0; + device_evdev->mousekeys_btn = CLUTTER_BUTTON_PRIMARY; + device_evdev->move_mousekeys_timer = 0; + device_evdev->mousekeys_first_motion_time = 0; + device_evdev->mousekeys_last_motion_time = 0; + device_evdev->last_mousekeys_key = 0; - if (device->mousekeys_virtual_device) + if (device->accessibility_virtual_device) return; - manager = CLUTTER_INPUT_DEVICE (device)->device_manager; - device->mousekeys_virtual_device = + device->accessibility_virtual_device = clutter_device_manager_create_virtual_device (manager, CLUTTER_POINTER_DEVICE); } static void -disable_mousekeys (ClutterInputDeviceEvdev *device) +disable_mousekeys (ClutterInputDeviceEvdev *device_evdev) { - stop_mousekeys_move (device); + ClutterInputDevice *device = CLUTTER_INPUT_DEVICE (device_evdev); + + stop_mousekeys_move (device_evdev); /* Make sure we don't leave button pressed behind... */ - if (device->mousekeys_btn_states[get_button_index (CLUTTER_BUTTON_PRIMARY)]) + if (device_evdev->mousekeys_btn_states[get_button_index (CLUTTER_BUTTON_PRIMARY)]) { - device->mousekeys_btn = CLUTTER_BUTTON_PRIMARY; - emulate_button_release (device); + device_evdev->mousekeys_btn = CLUTTER_BUTTON_PRIMARY; + emulate_button_release (device_evdev); } - if (device->mousekeys_btn_states[get_button_index (CLUTTER_BUTTON_MIDDLE)]) + if (device_evdev->mousekeys_btn_states[get_button_index (CLUTTER_BUTTON_MIDDLE)]) { - device->mousekeys_btn = CLUTTER_BUTTON_MIDDLE; - emulate_button_release (device); + device_evdev->mousekeys_btn = CLUTTER_BUTTON_MIDDLE; + emulate_button_release (device_evdev); } - if (device->mousekeys_btn_states[get_button_index (CLUTTER_BUTTON_SECONDARY)]) + if (device_evdev->mousekeys_btn_states[get_button_index (CLUTTER_BUTTON_SECONDARY)]) { - device->mousekeys_btn = CLUTTER_BUTTON_SECONDARY; - emulate_button_release (device); + device_evdev->mousekeys_btn = CLUTTER_BUTTON_SECONDARY; + emulate_button_release (device_evdev); } - if (device->mousekeys_virtual_device) - g_clear_object (&device->mousekeys_virtual_device); + if (device->accessibility_virtual_device) + g_clear_object (&device->accessibility_virtual_device); } static gboolean diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.h b/clutter/clutter/evdev/clutter-input-device-evdev.h index 90463ee14..d3cd45a44 100644 --- a/clutter/clutter/evdev/clutter-input-device-evdev.h +++ b/clutter/clutter/evdev/clutter-input-device-evdev.h @@ -94,7 +94,6 @@ struct _ClutterInputDeviceEvdev gdouble mousekeys_curve_factor; guint move_mousekeys_timer; guint16 last_mousekeys_key; - ClutterVirtualInputDevice *mousekeys_virtual_device; }; GType _clutter_input_device_evdev_get_type (void) G_GNUC_CONST; |