backend: Introduce helpers for turning from/to clutter/evdev buttons
We have multiple implementations of these types of transformations, and one is broken. Instead of just fixing it, add this helper so that it can use it instead. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3325>
This commit is contained in:
@ -209,3 +209,9 @@ void meta_backend_update_from_event (MetaBackend *backend,
|
||||
|
||||
char * meta_backend_get_vendor_name (MetaBackend *backend,
|
||||
const char *pnp_id);
|
||||
|
||||
META_EXPORT_TEST
|
||||
uint32_t meta_clutter_button_to_evdev (uint32_t clutter_button);
|
||||
|
||||
META_EXPORT_TEST
|
||||
uint32_t meta_evdev_button_to_clutter (uint32_t evdev_button);
|
||||
|
@ -119,6 +119,12 @@ static guint signals[N_SIGNALS];
|
||||
|
||||
#define HIDDEN_POINTER_TIMEOUT 300 /* ms */
|
||||
|
||||
#ifndef BTN_LEFT
|
||||
#define BTN_LEFT 0x110
|
||||
#define BTN_RIGHT 0x111
|
||||
#define BTN_MIDDLE 0x112
|
||||
#endif
|
||||
|
||||
struct _MetaBackendPrivate
|
||||
{
|
||||
MetaContext *context;
|
||||
@ -1797,3 +1803,37 @@ meta_backend_get_vendor_name (MetaBackend *backend,
|
||||
return g_strdup (pnp_id);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t
|
||||
meta_clutter_button_to_evdev (uint32_t clutter_button)
|
||||
{
|
||||
switch (clutter_button)
|
||||
{
|
||||
case CLUTTER_BUTTON_PRIMARY:
|
||||
return BTN_LEFT;
|
||||
case CLUTTER_BUTTON_SECONDARY:
|
||||
return BTN_RIGHT;
|
||||
case CLUTTER_BUTTON_MIDDLE:
|
||||
return BTN_MIDDLE;
|
||||
}
|
||||
|
||||
return (clutter_button + (BTN_LEFT - 1)) - 4;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
meta_evdev_button_to_clutter (uint32_t evdev_button)
|
||||
{
|
||||
switch (evdev_button)
|
||||
{
|
||||
case BTN_LEFT:
|
||||
return CLUTTER_BUTTON_PRIMARY;
|
||||
case BTN_RIGHT:
|
||||
return CLUTTER_BUTTON_SECONDARY;
|
||||
case BTN_MIDDLE:
|
||||
return CLUTTER_BUTTON_MIDDLE;
|
||||
}
|
||||
|
||||
g_return_val_if_fail (evdev_button > BTN_LEFT, 0);
|
||||
|
||||
return (evdev_button - (BTN_LEFT - 1)) + 4;
|
||||
}
|
||||
|
Reference in New Issue
Block a user