clutter: Move evdev evcode data to Clutter button/key events
We have this as platform-dependent data in the native backend, and a bunch of fallback code done in place in the evcode users. Stop making this platform-dependent data, and move it to the relevant ClutterEvents. The fallback code for the X11 backend case is about the same, but now it is done directly by the X11 backend. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1623>
This commit is contained in:

committed by
Marge Bot

parent
09b956997c
commit
9f5c453fc7
@ -18,6 +18,7 @@
|
||||
*/
|
||||
#include "config.h"
|
||||
|
||||
#include <linux/input-event-codes.h>
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#include <X11/extensions/XKB.h>
|
||||
|
||||
@ -1709,6 +1710,35 @@ get_source_device_checked (MetaSeatX11 *seat,
|
||||
return source_device;
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
evdev_button_code (uint32_t x_button)
|
||||
{
|
||||
uint32_t button;
|
||||
|
||||
switch (x_button)
|
||||
{
|
||||
case 1:
|
||||
button = BTN_LEFT;
|
||||
break;
|
||||
|
||||
/* The evdev input right and middle button numbers are swapped
|
||||
relative to how Clutter numbers them */
|
||||
case 2:
|
||||
button = BTN_MIDDLE;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
button = BTN_RIGHT;
|
||||
break;
|
||||
|
||||
default:
|
||||
button = x_button + (BTN_LEFT - 1) + 4;
|
||||
break;
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_seat_x11_translate_event (MetaSeatX11 *seat,
|
||||
XEvent *xevent,
|
||||
@ -1812,6 +1842,10 @@ meta_seat_x11_translate_event (MetaSeatX11 *seat,
|
||||
meta_input_device_x11_translate_state (event, &xev->mods, &xev->buttons, &xev->group);
|
||||
event->key.hardware_keycode = xev->detail;
|
||||
|
||||
/* clutter-xkb-utils.c adds a fixed offset of 8 to go into XKB's
|
||||
* range, so we do the reverse here. */
|
||||
event->key.evdev_code = event->key.hardware_keycode - 8;
|
||||
|
||||
/* keyval is the key ignoring all modifiers ('1' vs. '!') */
|
||||
event->key.keyval =
|
||||
meta_keymap_x11_translate_key_state (keymap_x11,
|
||||
@ -1992,6 +2026,7 @@ meta_seat_x11_translate_event (MetaSeatX11 *seat,
|
||||
event->button.time = xev->time;
|
||||
translate_coords (stage_x11, xev->event_x, xev->event_y, &event->button.x, &event->button.y);
|
||||
event->button.button = xev->detail;
|
||||
event->button.evdev_code = evdev_button_code (xev->detail);
|
||||
meta_input_device_x11_translate_state (event,
|
||||
&xev->mods,
|
||||
&xev->buttons,
|
||||
|
Reference in New Issue
Block a user