mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-13 15:31:26 +01:00
tools: move printing device quirks to the shared tools lib
This way we can re-use this from libinput-record instead of having to duplicate all this. Since the two tools use different printfs, just make the actual printing a simple callback. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
76233364b1
commit
07e93f077e
4 changed files with 151 additions and 129 deletions
|
|
@ -474,7 +474,7 @@ configure_file(input : 'tools/libinput-debug-events.man',
|
|||
libinput_list_quirks_sources = [ 'tools/libinput-list-quirks.c' ]
|
||||
libinput_list_quirks = executable('libinput-list-quirks',
|
||||
libinput_list_quirks_sources,
|
||||
dependencies : [dep_libquirks, dep_libinput],
|
||||
dependencies : [dep_libquirks, dep_tools_shared, dep_libinput],
|
||||
include_directories : [includes_src, includes_include],
|
||||
install_dir : libinput_tool_path,
|
||||
install : true
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
#include "libinput-util.h"
|
||||
#include "quirks.h"
|
||||
#include "shared.h"
|
||||
|
||||
static bool verbose = false;
|
||||
|
||||
|
|
@ -69,133 +70,6 @@ log_handler(struct libinput *this_is_null,
|
|||
vfprintf(out, buf, args);
|
||||
}
|
||||
|
||||
static void
|
||||
list_device_quirks(struct quirks_context *ctx, struct udev_device *device)
|
||||
{
|
||||
struct quirks *quirks;
|
||||
enum quirk qlist[] = {
|
||||
QUIRK_MODEL_ALPS_TOUCHPAD,
|
||||
QUIRK_MODEL_APPLE_TOUCHPAD,
|
||||
QUIRK_MODEL_APPLE_MAGICMOUSE,
|
||||
QUIRK_MODEL_TABLET_NO_TILT,
|
||||
QUIRK_MODEL_APPLE_TOUCHPAD_ONEBUTTON,
|
||||
QUIRK_MODEL_TOUCHPAD_VISIBLE_MARKER,
|
||||
QUIRK_MODEL_CYBORG_RAT,
|
||||
QUIRK_MODEL_CHROMEBOOK,
|
||||
QUIRK_MODEL_HP6910_TOUCHPAD,
|
||||
QUIRK_MODEL_HP8510_TOUCHPAD,
|
||||
QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD,
|
||||
QUIRK_MODEL_HP_STREAM11_TOUCHPAD,
|
||||
QUIRK_MODEL_HP_ZBOOK_STUDIO_G3,
|
||||
QUIRK_MODEL_TABLET_NO_PROXIMITY_OUT,
|
||||
QUIRK_MODEL_LENOVO_SCROLLPOINT,
|
||||
QUIRK_MODEL_LENOVO_X230,
|
||||
QUIRK_MODEL_LENOVO_T450_TOUCHPAD,
|
||||
QUIRK_MODEL_TABLET_MODE_NO_SUSPEND,
|
||||
QUIRK_MODEL_LENOVO_CARBON_X1_6TH,
|
||||
QUIRK_MODEL_TRACKBALL,
|
||||
QUIRK_MODEL_LOGITECH_MARBLE_MOUSE,
|
||||
QUIRK_MODEL_BOUNCING_KEYS,
|
||||
QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD,
|
||||
QUIRK_MODEL_SYSTEM76_BONOBO,
|
||||
QUIRK_MODEL_CLEVO_W740SU,
|
||||
QUIRK_MODEL_SYSTEM76_GALAGO,
|
||||
QUIRK_MODEL_SYSTEM76_KUDU,
|
||||
QUIRK_MODEL_WACOM_TOUCHPAD,
|
||||
|
||||
|
||||
QUIRK_ATTR_SIZE_HINT,
|
||||
QUIRK_ATTR_TOUCH_SIZE_RANGE,
|
||||
QUIRK_ATTR_PALM_SIZE_THRESHOLD,
|
||||
QUIRK_ATTR_LID_SWITCH_RELIABILITY,
|
||||
QUIRK_ATTR_KEYBOARD_INTEGRATION,
|
||||
QUIRK_ATTR_TPKBCOMBO_LAYOUT,
|
||||
QUIRK_ATTR_PRESSURE_RANGE,
|
||||
QUIRK_ATTR_PALM_PRESSURE_THRESHOLD,
|
||||
QUIRK_ATTR_RESOLUTION_HINT,
|
||||
QUIRK_ATTR_TRACKPOINT_RANGE,
|
||||
QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD,
|
||||
};
|
||||
enum quirk *q;
|
||||
|
||||
quirks = quirks_fetch_for_device(ctx, device);
|
||||
if (!quirks) {
|
||||
fprintf(stderr, "Device has no quirks defined\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ARRAY_FOR_EACH(qlist, q) {
|
||||
const char *name;
|
||||
struct quirk_dimensions dim;
|
||||
struct quirk_range r;
|
||||
uint32_t v;
|
||||
char *s;
|
||||
|
||||
if (!quirks_has_quirk(quirks, *q))
|
||||
continue;
|
||||
|
||||
name = quirk_get_name(*q);
|
||||
|
||||
switch (*q) {
|
||||
case QUIRK_MODEL_ALPS_TOUCHPAD:
|
||||
case QUIRK_MODEL_APPLE_TOUCHPAD:
|
||||
case QUIRK_MODEL_APPLE_MAGICMOUSE:
|
||||
case QUIRK_MODEL_TABLET_NO_TILT:
|
||||
case QUIRK_MODEL_APPLE_TOUCHPAD_ONEBUTTON:
|
||||
case QUIRK_MODEL_TOUCHPAD_VISIBLE_MARKER:
|
||||
case QUIRK_MODEL_CYBORG_RAT:
|
||||
case QUIRK_MODEL_CHROMEBOOK:
|
||||
case QUIRK_MODEL_HP6910_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP8510_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP_STREAM11_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP_ZBOOK_STUDIO_G3:
|
||||
case QUIRK_MODEL_TABLET_NO_PROXIMITY_OUT:
|
||||
case QUIRK_MODEL_LENOVO_SCROLLPOINT:
|
||||
case QUIRK_MODEL_LENOVO_X230:
|
||||
case QUIRK_MODEL_LENOVO_T450_TOUCHPAD:
|
||||
case QUIRK_MODEL_TABLET_MODE_NO_SUSPEND:
|
||||
case QUIRK_MODEL_LENOVO_CARBON_X1_6TH:
|
||||
case QUIRK_MODEL_TRACKBALL:
|
||||
case QUIRK_MODEL_LOGITECH_MARBLE_MOUSE:
|
||||
case QUIRK_MODEL_BOUNCING_KEYS:
|
||||
case QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD:
|
||||
case QUIRK_MODEL_SYSTEM76_BONOBO:
|
||||
case QUIRK_MODEL_CLEVO_W740SU:
|
||||
case QUIRK_MODEL_SYSTEM76_GALAGO:
|
||||
case QUIRK_MODEL_SYSTEM76_KUDU:
|
||||
case QUIRK_MODEL_WACOM_TOUCHPAD:
|
||||
printf("%s=1\n", name);
|
||||
break;
|
||||
case QUIRK_ATTR_SIZE_HINT:
|
||||
case QUIRK_ATTR_RESOLUTION_HINT:
|
||||
quirks_get_dimensions(quirks, *q, &dim);
|
||||
printf("%s=%ldx%ld\n", name, dim.x, dim.y);
|
||||
break;
|
||||
case QUIRK_ATTR_TOUCH_SIZE_RANGE:
|
||||
case QUIRK_ATTR_PRESSURE_RANGE:
|
||||
quirks_get_range(quirks, *q, &r);
|
||||
printf("%s=%d:%d\n", name, r.upper, r.lower);
|
||||
break;
|
||||
case QUIRK_ATTR_PALM_SIZE_THRESHOLD:
|
||||
case QUIRK_ATTR_PALM_PRESSURE_THRESHOLD:
|
||||
case QUIRK_ATTR_TRACKPOINT_RANGE:
|
||||
case QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD:
|
||||
quirks_get_uint32(quirks, *q, &v);
|
||||
printf("%s=%u\n", name, v);
|
||||
break;
|
||||
case QUIRK_ATTR_LID_SWITCH_RELIABILITY:
|
||||
case QUIRK_ATTR_KEYBOARD_INTEGRATION:
|
||||
case QUIRK_ATTR_TPKBCOMBO_LAYOUT:
|
||||
quirks_get_string(quirks, *q, &s);
|
||||
printf("%s=%s\n", name, s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
quirks_unref(quirks);
|
||||
}
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
|
|
@ -207,6 +81,12 @@ usage(void)
|
|||
" Validate the database\n");
|
||||
}
|
||||
|
||||
static void
|
||||
simple_printf(void *userdata, const char *val)
|
||||
{
|
||||
printf("%s\n", val);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
|
|
@ -305,7 +185,7 @@ main(int argc, char **argv)
|
|||
device = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
|
||||
}
|
||||
if (device) {
|
||||
list_device_quirks(quirks, device);
|
||||
tools_list_device_quirks(quirks, device, simple_printf, NULL);
|
||||
rc = 0;
|
||||
} else {
|
||||
usage();
|
||||
|
|
|
|||
135
tools/shared.c
135
tools/shared.c
|
|
@ -527,3 +527,138 @@ tools_exec_command(const char *prefix, int real_argc, char **real_argv)
|
|||
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
void
|
||||
tools_list_device_quirks(struct quirks_context *ctx,
|
||||
struct udev_device *device,
|
||||
void (*callback)(void *data, const char *str),
|
||||
void *userdata)
|
||||
{
|
||||
char buf[256];
|
||||
|
||||
struct quirks *quirks;
|
||||
enum quirk qlist[] = {
|
||||
QUIRK_MODEL_ALPS_TOUCHPAD,
|
||||
QUIRK_MODEL_APPLE_TOUCHPAD,
|
||||
QUIRK_MODEL_APPLE_MAGICMOUSE,
|
||||
QUIRK_MODEL_TABLET_NO_TILT,
|
||||
QUIRK_MODEL_APPLE_TOUCHPAD_ONEBUTTON,
|
||||
QUIRK_MODEL_TOUCHPAD_VISIBLE_MARKER,
|
||||
QUIRK_MODEL_CYBORG_RAT,
|
||||
QUIRK_MODEL_CHROMEBOOK,
|
||||
QUIRK_MODEL_HP6910_TOUCHPAD,
|
||||
QUIRK_MODEL_HP8510_TOUCHPAD,
|
||||
QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD,
|
||||
QUIRK_MODEL_HP_STREAM11_TOUCHPAD,
|
||||
QUIRK_MODEL_HP_ZBOOK_STUDIO_G3,
|
||||
QUIRK_MODEL_TABLET_NO_PROXIMITY_OUT,
|
||||
QUIRK_MODEL_LENOVO_SCROLLPOINT,
|
||||
QUIRK_MODEL_LENOVO_X230,
|
||||
QUIRK_MODEL_LENOVO_T450_TOUCHPAD,
|
||||
QUIRK_MODEL_TABLET_MODE_NO_SUSPEND,
|
||||
QUIRK_MODEL_LENOVO_CARBON_X1_6TH,
|
||||
QUIRK_MODEL_TRACKBALL,
|
||||
QUIRK_MODEL_LOGITECH_MARBLE_MOUSE,
|
||||
QUIRK_MODEL_BOUNCING_KEYS,
|
||||
QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD,
|
||||
QUIRK_MODEL_SYSTEM76_BONOBO,
|
||||
QUIRK_MODEL_CLEVO_W740SU,
|
||||
QUIRK_MODEL_SYSTEM76_GALAGO,
|
||||
QUIRK_MODEL_SYSTEM76_KUDU,
|
||||
QUIRK_MODEL_WACOM_TOUCHPAD,
|
||||
|
||||
|
||||
QUIRK_ATTR_SIZE_HINT,
|
||||
QUIRK_ATTR_TOUCH_SIZE_RANGE,
|
||||
QUIRK_ATTR_PALM_SIZE_THRESHOLD,
|
||||
QUIRK_ATTR_LID_SWITCH_RELIABILITY,
|
||||
QUIRK_ATTR_KEYBOARD_INTEGRATION,
|
||||
QUIRK_ATTR_TPKBCOMBO_LAYOUT,
|
||||
QUIRK_ATTR_PRESSURE_RANGE,
|
||||
QUIRK_ATTR_PALM_PRESSURE_THRESHOLD,
|
||||
QUIRK_ATTR_RESOLUTION_HINT,
|
||||
QUIRK_ATTR_TRACKPOINT_RANGE,
|
||||
QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD,
|
||||
};
|
||||
enum quirk *q;
|
||||
|
||||
quirks = quirks_fetch_for_device(ctx, device);
|
||||
if (!quirks)
|
||||
return;
|
||||
|
||||
ARRAY_FOR_EACH(qlist, q) {
|
||||
const char *name;
|
||||
struct quirk_dimensions dim;
|
||||
struct quirk_range r;
|
||||
uint32_t v;
|
||||
char *s;
|
||||
|
||||
if (!quirks_has_quirk(quirks, *q))
|
||||
continue;
|
||||
|
||||
name = quirk_get_name(*q);
|
||||
|
||||
switch (*q) {
|
||||
case QUIRK_MODEL_ALPS_TOUCHPAD:
|
||||
case QUIRK_MODEL_APPLE_TOUCHPAD:
|
||||
case QUIRK_MODEL_APPLE_MAGICMOUSE:
|
||||
case QUIRK_MODEL_TABLET_NO_TILT:
|
||||
case QUIRK_MODEL_APPLE_TOUCHPAD_ONEBUTTON:
|
||||
case QUIRK_MODEL_TOUCHPAD_VISIBLE_MARKER:
|
||||
case QUIRK_MODEL_CYBORG_RAT:
|
||||
case QUIRK_MODEL_CHROMEBOOK:
|
||||
case QUIRK_MODEL_HP6910_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP8510_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP_PAVILION_DM4_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP_STREAM11_TOUCHPAD:
|
||||
case QUIRK_MODEL_HP_ZBOOK_STUDIO_G3:
|
||||
case QUIRK_MODEL_TABLET_NO_PROXIMITY_OUT:
|
||||
case QUIRK_MODEL_LENOVO_SCROLLPOINT:
|
||||
case QUIRK_MODEL_LENOVO_X230:
|
||||
case QUIRK_MODEL_LENOVO_T450_TOUCHPAD:
|
||||
case QUIRK_MODEL_TABLET_MODE_NO_SUSPEND:
|
||||
case QUIRK_MODEL_LENOVO_CARBON_X1_6TH:
|
||||
case QUIRK_MODEL_TRACKBALL:
|
||||
case QUIRK_MODEL_LOGITECH_MARBLE_MOUSE:
|
||||
case QUIRK_MODEL_BOUNCING_KEYS:
|
||||
case QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD:
|
||||
case QUIRK_MODEL_SYSTEM76_BONOBO:
|
||||
case QUIRK_MODEL_CLEVO_W740SU:
|
||||
case QUIRK_MODEL_SYSTEM76_GALAGO:
|
||||
case QUIRK_MODEL_SYSTEM76_KUDU:
|
||||
case QUIRK_MODEL_WACOM_TOUCHPAD:
|
||||
snprintf(buf, sizeof(buf), "%s=1", name);
|
||||
callback(userdata, buf);
|
||||
break;
|
||||
case QUIRK_ATTR_SIZE_HINT:
|
||||
case QUIRK_ATTR_RESOLUTION_HINT:
|
||||
quirks_get_dimensions(quirks, *q, &dim);
|
||||
snprintf(buf, sizeof(buf), "%s=%ldx%ld", name, dim.x, dim.y);
|
||||
callback(userdata, buf);
|
||||
break;
|
||||
case QUIRK_ATTR_TOUCH_SIZE_RANGE:
|
||||
case QUIRK_ATTR_PRESSURE_RANGE:
|
||||
quirks_get_range(quirks, *q, &r);
|
||||
snprintf(buf, sizeof(buf), "%s=%d:%d", name, r.upper, r.lower);
|
||||
callback(userdata, buf);
|
||||
break;
|
||||
case QUIRK_ATTR_PALM_SIZE_THRESHOLD:
|
||||
case QUIRK_ATTR_PALM_PRESSURE_THRESHOLD:
|
||||
case QUIRK_ATTR_TRACKPOINT_RANGE:
|
||||
case QUIRK_ATTR_THUMB_PRESSURE_THRESHOLD:
|
||||
quirks_get_uint32(quirks, *q, &v);
|
||||
snprintf(buf, sizeof(buf), "%s=%u", name, v);
|
||||
callback(userdata, buf);
|
||||
break;
|
||||
case QUIRK_ATTR_LID_SWITCH_RELIABILITY:
|
||||
case QUIRK_ATTR_KEYBOARD_INTEGRATION:
|
||||
case QUIRK_ATTR_TPKBCOMBO_LAYOUT:
|
||||
quirks_get_string(quirks, *q, &s);
|
||||
snprintf(buf, sizeof(buf), "%s=%s", name, s);
|
||||
callback(userdata, buf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
quirks_unref(quirks);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <quirks.h>
|
||||
#include <libinput.h>
|
||||
|
||||
enum configuration_options {
|
||||
|
|
@ -112,4 +113,10 @@ int tools_exec_command(const char *prefix, int argc, char **argv);
|
|||
bool find_touchpad_device(char *path, size_t path_len);
|
||||
bool is_touchpad_device(const char *devnode);
|
||||
|
||||
void
|
||||
tools_list_device_quirks(struct quirks_context *ctx,
|
||||
struct udev_device *device,
|
||||
void (*callback)(void *userdata, const char *str),
|
||||
void *userdata);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue