mirror of
https://github.com/brl/mutter.git
synced 2024-12-27 05:12:15 +00:00
backends/native: Assign capabilities to input devices
These are extracted from the individual libinput_devices. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2331>
This commit is contained in:
parent
15d4402d08
commit
1f3fb8441f
@ -1350,6 +1350,30 @@ determine_device_type (struct libinput_device *ldev)
|
|||||||
return CLUTTER_EXTENSION_DEVICE;
|
return CLUTTER_EXTENSION_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ClutterInputCapabilities
|
||||||
|
translate_device_capabilities (struct libinput_device *ldev)
|
||||||
|
{
|
||||||
|
ClutterInputCapabilities caps = 0;
|
||||||
|
|
||||||
|
/* This setting is specific to touchpads and alike, only in these
|
||||||
|
* devices there is this additional layer of touch event interpretation.
|
||||||
|
*/
|
||||||
|
if (libinput_device_config_tap_get_finger_count (ldev) > 0)
|
||||||
|
caps |= CLUTTER_INPUT_CAPABILITY_TOUCHPAD;
|
||||||
|
if (libinput_device_has_capability (ldev, LIBINPUT_DEVICE_CAP_TABLET_TOOL))
|
||||||
|
caps |= CLUTTER_INPUT_CAPABILITY_TABLET_TOOL;
|
||||||
|
if (libinput_device_has_capability (ldev, LIBINPUT_DEVICE_CAP_TABLET_PAD))
|
||||||
|
caps |= CLUTTER_INPUT_CAPABILITY_TABLET_PAD;
|
||||||
|
if (libinput_device_has_capability (ldev, LIBINPUT_DEVICE_CAP_POINTER))
|
||||||
|
caps |= CLUTTER_INPUT_CAPABILITY_POINTER;
|
||||||
|
if (libinput_device_has_capability (ldev, LIBINPUT_DEVICE_CAP_TOUCH))
|
||||||
|
caps |= CLUTTER_INPUT_CAPABILITY_TOUCH;
|
||||||
|
if (libinput_device_has_capability (ldev, LIBINPUT_DEVICE_CAP_KEYBOARD))
|
||||||
|
caps |= CLUTTER_INPUT_CAPABILITY_KEYBOARD;
|
||||||
|
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* meta_input_device_native_new:
|
* meta_input_device_native_new:
|
||||||
* @manager: the device manager
|
* @manager: the device manager
|
||||||
@ -1365,11 +1389,13 @@ meta_input_device_native_new_in_impl (MetaSeatImpl *seat_impl,
|
|||||||
{
|
{
|
||||||
MetaInputDeviceNative *device;
|
MetaInputDeviceNative *device;
|
||||||
ClutterInputDeviceType type;
|
ClutterInputDeviceType type;
|
||||||
|
ClutterInputCapabilities capabilities;
|
||||||
char *vendor, *product;
|
char *vendor, *product;
|
||||||
int n_rings = 0, n_strips = 0, n_groups = 1, n_buttons = 0;
|
int n_rings = 0, n_strips = 0, n_groups = 1, n_buttons = 0;
|
||||||
char *node_path;
|
char *node_path;
|
||||||
double width, height;
|
double width, height;
|
||||||
|
|
||||||
|
capabilities = translate_device_capabilities (libinput_device);
|
||||||
type = determine_device_type (libinput_device);
|
type = determine_device_type (libinput_device);
|
||||||
vendor = g_strdup_printf ("%.4x", libinput_device_get_id_vendor (libinput_device));
|
vendor = g_strdup_printf ("%.4x", libinput_device_get_id_vendor (libinput_device));
|
||||||
product = g_strdup_printf ("%.4x", libinput_device_get_id_product (libinput_device));
|
product = g_strdup_printf ("%.4x", libinput_device_get_id_product (libinput_device));
|
||||||
@ -1387,6 +1413,7 @@ meta_input_device_native_new_in_impl (MetaSeatImpl *seat_impl,
|
|||||||
device = g_object_new (META_TYPE_INPUT_DEVICE_NATIVE,
|
device = g_object_new (META_TYPE_INPUT_DEVICE_NATIVE,
|
||||||
"name", libinput_device_get_name (libinput_device),
|
"name", libinput_device_get_name (libinput_device),
|
||||||
"device-type", type,
|
"device-type", type,
|
||||||
|
"capabilities", capabilities,
|
||||||
"device-mode", CLUTTER_INPUT_MODE_PHYSICAL,
|
"device-mode", CLUTTER_INPUT_MODE_PHYSICAL,
|
||||||
"vendor-id", vendor,
|
"vendor-id", vendor,
|
||||||
"product-id", product,
|
"product-id", product,
|
||||||
|
Loading…
Reference in New Issue
Block a user