diff options
-rw-r--r-- | meson.build | 5 | ||||
-rw-r--r-- | tools/Makefile.am | 8 | ||||
-rw-r--r-- | tools/libinput-debug-events.c | 15 | ||||
-rw-r--r-- | tools/libinput-tool.c | 8 | ||||
-rw-r--r-- | tools/libinput-tool.h | 1 | ||||
-rw-r--r-- | tools/libinput.1 | 60 | ||||
-rw-r--r-- | tools/shared.c | 36 | ||||
-rw-r--r-- | tools/shared.h | 5 |
8 files changed, 120 insertions, 18 deletions
diff --git a/meson.build b/meson.build index a547890..1606401 100644 --- a/meson.build +++ b/meson.build @@ -344,6 +344,7 @@ executable('event-debug', event_debug_sources, dependencies : dep_libinput, include_directories : include_directories('src'), + c_args : [ '-DTOOLS_BUILD_STANDALONE=1' ], install : false ) @@ -352,6 +353,7 @@ executable('libinput-debug-events', libinput_debug_events_sources, dependencies : dep_libinput, include_directories : include_directories('src'), + c_args : [ '-DTOOLS_BUILD_STANDALONE=1' ], install : true ) @@ -364,7 +366,8 @@ executable('libinput-list-devices', install : true, ) -libinput_sources = [ 'tools/libinput-tool.c' ] + libinput_list_devices_sources +libinput_sources = [ 'tools/libinput-tool.c' ] + libinput_list_devices_sources + libinput_debug_events_sources + executable('libinput', libinput_sources, dependencies : dep_libinput, diff --git a/tools/Makefile.am b/tools/Makefile.am index 94765ce..77b4e74 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -11,10 +11,12 @@ shared_sources = \ shared.c \ shared.h +event_debug_sources = libinput-debug-events.c $(shared_sources) event_debug_SOURCES = libinput-debug-events.c $(shared_sources) event_debug_LDADD = ../src/libinput.la $(LIBUDEV_LIBS) $(LIBEVDEV_LIBS) event_debug_LDFLAGS = -no-install -event_debug_CFLAGS = $(AM_CFLAGS) $(LIBUDEV_CFLAGS) $(LIBEVDEV_CFLAGS) +event_debug_CFLAGS = $(AM_CFLAGS) $(LIBUDEV_CFLAGS) $(LIBEVDEV_CFLAGS) \ + -DTOOLS_BUILD_STANDALONE=1 ptraccel_debug_SOURCES = ptraccel-debug.c ptraccel_debug_LDADD = ../src/libfilter.la ../src/libinput.la @@ -28,12 +30,14 @@ dist_man1_MANS = libinput-list-devices.1 libinput_debug_events_SOURCES = $(event_debug_SOURCES) libinput_debug_events_LDADD = $(event_debug_LDADD) -libinput_debug_events_CFLAGS = $(AM_CFLAGS) $(event_debug_CFLAGS) +libinput_debug_events_CFLAGS = $(AM_CFLAGS) $(event_debug_CFLAGS) \ + -DTOOLS_BUILD_STANDALONE=1 dist_man1_MANS += libinput-debug-events.1 libinput_SOURCES = \ libinput-tool.c \ libinput-tool.h \ + libinput-debug-events.c \ libinput-list-devices.c \ $(shared_sources) libinput_LDADD = ../src/libinput.la $(LIBUDEV_LIBS) $(LIBEVDEV_LIBS) diff --git a/tools/libinput-debug-events.c b/tools/libinput-debug-events.c index 574fa9e..f64708d 100644 --- a/tools/libinput-debug-events.c +++ b/tools/libinput-debug-events.c @@ -39,6 +39,7 @@ #include <libinput.h> #include <libevdev/libevdev.h> +#include "libinput-tool.h" #include "shared.h" uint32_t start_time; @@ -896,7 +897,7 @@ mainloop(struct libinput *li) } int -main(int argc, char **argv) +libinput_debug_events(struct global_options *opts, int argc, char **argv) { struct libinput *li; struct timespec tp; @@ -909,7 +910,7 @@ main(int argc, char **argv) if (tools_parse_args(argc, argv, &context)) return 1; - be_quiet = context.options.quiet; + be_quiet = context.options.global_options.quiet; li = tools_open_backend(&context); if (!li) @@ -921,3 +922,13 @@ main(int argc, char **argv) return 0; } + +#if TOOLS_BUILD_STANDALONE +int +main(int argc, char **argv) +{ + struct global_options opts = {0}; + + return libinput_debug_events(&opts, argc, argv); +} +#endif diff --git a/tools/libinput-tool.c b/tools/libinput-tool.c index b20ed0f..12204ab 100644 --- a/tools/libinput-tool.c +++ b/tools/libinput-tool.c @@ -57,12 +57,16 @@ libinput_tool_usage(void) "Commands:\n" " list-devices\n" " List all devices with their default configuration options\n" + "\n" + " debug-events\n" + " Print events to stdout\n" "\n"); } enum command { COMMAND_NONE, COMMAND_LIST_DEVICES, + COMMAND_DEBUG_EVENTS, }; enum global_opts { @@ -84,6 +88,8 @@ parse_args_cmd(enum command cmd, break; case COMMAND_LIST_DEVICES: return libinput_list_devices(global_options, argc, argv); + case COMMAND_DEBUG_EVENTS: + return libinput_debug_events(global_options, argc, argv); } return true; } @@ -144,6 +150,8 @@ main(int argc, char **argv) if (streq(command, "list-devices")) { cmd = COMMAND_LIST_DEVICES; + } else if (streq(command, "debug-events")) { + cmd = COMMAND_DEBUG_EVENTS; } else { fprintf(stderr, "Invalid command '%s'\n", command); return EXIT_FAILURE; diff --git a/tools/libinput-tool.h b/tools/libinput-tool.h index 7b3b8b6..c451857 100644 --- a/tools/libinput-tool.h +++ b/tools/libinput-tool.h @@ -35,5 +35,6 @@ struct global_options { void libinput_tool_usage(void); int libinput_list_devices(struct global_options *opts, int argc, char **argv); +int libinput_debug_events(struct global_options *opts, int argc, char **argv); #endif diff --git a/tools/libinput.1 b/tools/libinput.1 index 2f2476e..0dd596e 100644 --- a/tools/libinput.1 +++ b/tools/libinput.1 @@ -42,12 +42,70 @@ will be omitted. The exact behavior of quiet mode depends on the All commands support a .B --help argument that prints command-specific usage -information +information (e.g. +.B libinput debug-events --help) +.TP 8 +.B debug-events [ARGS] +Print all events as seen by libinput. See section +.B debug-events .TP 8 .B list-devices List all devices recognized by libinput. See section .B list-devices +.SS debug-events [...] +Print all events from these devices. +.PP +This is a debugging tool only, its output may change at any time. Do not +rely on the output. +.PP +.B --device /path/to/device +.IP +Use a path backend for the device for the given path. This option is +mutually exclusive with the +.B --udev +option. +.PP +.B --grab +.IP +Exclusively grab all devices. This will prevent events from being sent to +any other caller. It is recommended this option is only used together with +the +.B --device +option, otherwise a user may not be able to terminate this tool. +.PP +.B --udev <name> +.IP +Use a udev backend for this context with the given seat name. This option is +mutually exclusive with the +.B --device +option. +.PP +.B --show-keycodes +.IP +Print all keycodes as-is. Without this argument, most key events shown by +this tool are obfuscated to avoid passwords and other sensitive +information showing up in the output. +.PP +.B --enable-<feature> +or +.B --disable-<feature> +.IP +Enable or disable the given feature. For a full list of features, see the +.B --help +output. Requests to enable or disable a feature on a device that does +not provide that feature, or where that feature is already enabled or +disabled will be silently ignored. +.PP +.B --set-<feature>=<value> +.IP +Set the given feature to the given value. For a full list of features, see +the +.B --help +output. Requests to set a feature on a device that does not provide that +feature, or where that feature is already set to that value, or where the +value is not available on that device will be silently ignored + .SS list-devices List all devices recognized by libinput. Each device shows available configurations the respective diff --git a/tools/shared.c b/tools/shared.c index 830e0cb..af23415 100644 --- a/tools/shared.c +++ b/tools/shared.c @@ -34,6 +34,7 @@ #include <libevdev/libevdev.h> #include <libinput-util.h> +#include "libinput-tool.h" #include "shared.h" enum options { @@ -94,8 +95,13 @@ log_handler(struct libinput *li, void tools_usage(void) { - printf("Usage: %s [options] [--udev [<seat>]|--device /dev/input/event0]\n" - "--udev <seat>.... Use udev device discovery (default).\n" +#if TOOLS_BUILD_STANDALONE + printf("Usage: %s [options] [--udev [<seat>]|--device /dev/input/event0]\n", + program_invocation_short_name); +#else + printf("Usage: libinput debug-events [options] [--udev [<seat>]|--device /dev/input/event0]\n"); +#endif + printf("--udev <seat>.... Use udev device discovery (default).\n" " Specifying a seat ID is optional.\n" "--device /path/to/device .... open the given device only\n" "\n" @@ -127,10 +133,12 @@ tools_usage(void) "\n" "Other options:\n" "--grab .......... Exclusively grab all openend devices\n" - "--verbose ....... Print debugging output.\n" - "--quiet ......... Only print libinput messages, useful in combination with --verbose.\n" - "--help .......... Print this help.\n", - program_invocation_short_name); + "--help .......... Print this help.\n" + ); +#if TOOLS_BUILD_STANDALONE + printf("--verbose ....... Print debugging output.\n" + "--quiet ......... Only print libinput messages, useful in combination with --verbose.\n"); +#endif } void @@ -172,8 +180,10 @@ tools_parse_args(int argc, char **argv, struct tools_context *context) { "udev", no_argument, 0, OPT_UDEV }, { "grab", no_argument, 0, OPT_GRAB }, { "help", no_argument, 0, OPT_HELP }, +#if TOOLS_BUILD_STANDALONE { "verbose", no_argument, 0, OPT_VERBOSE }, { "quiet", no_argument, 0, OPT_QUIET }, +#endif { "enable-tap", no_argument, 0, OPT_TAP_ENABLE }, { "disable-tap", no_argument, 0, OPT_TAP_DISABLE }, { "enable-drag", no_argument, 0, OPT_DRAG_ENABLE }, @@ -224,7 +234,7 @@ tools_parse_args(int argc, char **argv, struct tools_context *context) options->grab = 1; break; case OPT_VERBOSE: - options->verbose = 1; + options->global_options.verbose = 1; break; case OPT_TAP_ENABLE: options->tapping = 1; @@ -363,7 +373,7 @@ tools_parse_args(int argc, char **argv, struct tools_context *context) options->show_keycodes = true; break; case OPT_QUIET: - options->quiet = true; + options->global_options.quiet = true; break; default: tools_usage(); @@ -482,9 +492,15 @@ tools_open_backend(struct tools_context *context) struct tools_options *options = &context->options; if (options->backend == BACKEND_UDEV) { - li = open_udev(&interface, context, options->seat, options->verbose); + li = open_udev(&interface, + context, + options->seat, + options->global_options.verbose); } else if (options->backend == BACKEND_DEVICE) { - li = open_device(&interface, context, options->device, options->verbose); + li = open_device(&interface, + context, + options->device, + options->global_options.verbose); } else abort(); diff --git a/tools/shared.h b/tools/shared.h index d19d52a..03838e1 100644 --- a/tools/shared.h +++ b/tools/shared.h @@ -28,20 +28,21 @@ #include <libinput.h> +#include "libinput-tool.h" + enum tools_backend { BACKEND_DEVICE, BACKEND_UDEV }; struct tools_options { + struct global_options global_options; enum tools_backend backend; const char *device; /* if backend is BACKEND_DEVICE */ const char *seat; /* if backend is BACKEND_UDEV */ int grab; /* EVIOCGRAB */ bool show_keycodes; /* show keycodes */ - bool quiet; /* only print libinput messages */ - int verbose; int tapping; int drag; int drag_lock; |