summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Fourdan <ofourdan@redhat.com>2019-02-27 16:01:29 +0100
committerOlivier Fourdan <ofourdan@redhat.com>2019-06-06 13:04:50 +0200
commit144b24bfcc62c77dac7c470a7ae12b20b201f2a4 (patch)
tree54f8fb740953d65e0403553e3cccb8fe2978e188
parent4d21650d6d9aaee263191f7ed019869a9d4152dc (diff)
downloadmutter-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.c77
-rw-r--r--clutter/clutter/evdev/clutter-input-device-evdev.h1
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;