diff --git a/doc/device-quirks.dox b/doc/device-quirks.dox index 35e78215..d4368664 100644 --- a/doc/device-quirks.dox +++ b/doc/device-quirks.dox @@ -54,21 +54,23 @@ Once the required section has been added, use the information from section @section device-quirks-debugging Debugging device quirks -libinput provides the `libinput list-quirks` tool to list and debug model -quirks that apply to one or more local devices. +libinput provides the `libinput quirks` tool to debug the quirks database. +This tool takes an action as first argument, the most common invocation is +`libinput quirks list` to list model quirks that apply to one or more local +devices. @verbatim -$ libinput list-quirks /dev/input/event19 +$ libinput quirks list /dev/input/event19 Device has no quirks defined -$ libinput list-quirks /dev/input/event0 +$ libinput quirks list /dev/input/event0 AttrLidSwitchReliability @endverbatim -When called with the `--verbose` argument, `libinput list-quirks` prints +When called with the `--verbose` argument, `libinput quirks list` prints information about all files and its attempts to match the device: @verbatim -$ libinput list-quirks --verbose /dev/input/event0 +$ libinput quirks list --verbose /dev/input/event0 quirks debug: /usr/share/share/libinput is data root quirks debug: /usr/share/share/libinput/10-generic-keyboard.quirks quirks debug: /usr/share/share/libinput/10-generic-lid.quirks diff --git a/meson.build b/meson.build index d01c4af9..58e909b6 100644 --- a/meson.build +++ b/meson.build @@ -471,21 +471,34 @@ configure_file(input : 'tools/libinput-debug-events.man', install_dir : join_paths(get_option('mandir'), 'man1') ) -libinput_list_quirks_sources = [ 'tools/libinput-list-quirks.c' ] -libinput_list_quirks = executable('libinput-list-quirks', - libinput_list_quirks_sources, - dependencies : [dep_libquirks, dep_tools_shared, dep_libinput], - include_directories : [includes_src, includes_include], - install_dir : libinput_tool_path, - install : true - ) +libinput_quirks_sources = [ 'tools/libinput-quirks.c' ] +libinput_quirks = executable('libinput-quirks', + libinput_quirks_sources, + dependencies : [dep_libquirks, dep_tools_shared, dep_libinput], + include_directories : [includes_src, includes_include], + install_dir : libinput_tool_path, + install : true + ) test('validate-quirks', - libinput_list_quirks, - args: ['--validate-only', '--data-dir=@0@'.format(join_paths(meson.source_root(), 'data'))] + libinput_quirks, + args: ['validate', '--data-dir=@0@'.format(join_paths(meson.source_root(), 'data'))] ) -configure_file(input : 'tools/libinput-list-quirks.man', - output : 'libinput-list-quirks.1', +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks.1', + configuration : man_config, + install : true, + install_dir : join_paths(get_option('mandir'), 'man1') + ) +# Same man page for the subtools to stay consistent with the other tools +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks-list.1', + configuration : man_config, + install : true, + install_dir : join_paths(get_option('mandir'), 'man1') + ) +configure_file(input : 'tools/libinput-quirks.man', + output : 'libinput-quirks-validate.1', configuration : man_config, install : true, install_dir : join_paths(get_option('mandir'), 'man1') @@ -544,7 +557,7 @@ configure_file(input : 'tools/libinput-measure-touchpad-tap.man', config_builddir = configuration_data() config_builddir.set('BUILDDIR', meson.build_root()) # libinput-measure-touchpad-pressure gets built but we install_data the -# source instead. The built file is the one that uses the local list-quirks +# source instead. The built file is the one that uses the local quirks # and should be used for debugging. install_data('tools/libinput-measure-touchpad-pressure', install_dir : libinput_tool_path) @@ -560,7 +573,7 @@ configure_file(input : 'tools/libinput-measure-touchpad-pressure.man', install_dir : join_paths(get_option('mandir'), 'man1') ) # libinput-measure-touch-size gets built but we install_data the source -# instead. The built file is the one that uses the local list-quirks and +# instead. The built file is the one that uses the local quirks and # should be used for debugging. install_data('tools/libinput-measure-touch-size', install_dir : libinput_tool_path) diff --git a/tools/libinput-list-quirks.man b/tools/libinput-list-quirks.man deleted file mode 100644 index e18495f3..00000000 --- a/tools/libinput-list-quirks.man +++ /dev/null @@ -1,36 +0,0 @@ -.TH libinput-list-quirks "1" "" "libinput @LIBINPUT_VERSION@" "libinput Manual" -.SH NAME -libinput\-list\-quirks \- quirk debug helper for libinput -.SH SYNOPSIS -.B libinput list\-quirks [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] \fI/dev/input/event0\fB -.br -.B libinput list\-quirks [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] \-\-validate\-only -.br -.B libinput list\-quirks [\-\-help] -.SH DESCRIPTION -.PP -The -.B "libinput list\-quirks" -tool parses the quirks file in \fIdata\-dir\fR and prints all quirks applied -to the given device. -.PP -This is a debugging tool only, its output and behavior may change at any -time. Do not rely on the output. -.SH OPTIONS -.TP 8 -.B \-\-data\-dir \fI/path/to/dir\fR -Use the given directory as data directory for quirks files. -.TP 8 -.B \-\-help -Print help -.TP 8 -.B \-\-validate\-only -Only validate that the quirks files can be parsed. When this option is -given, no device file should be supplied. -.TP 8 -.B \-\-verbose -Use verbose output, useful for debugging. -.SH LIBINPUT -Part of the -.B libinput(1) -suite diff --git a/tools/libinput-measure-touch-size b/tools/libinput-measure-touch-size index 990a72a7..a2624354 100755 --- a/tools/libinput-measure-touch-size +++ b/tools/libinput-measure-touch-size @@ -224,12 +224,12 @@ class Device(object): def _init_thresholds_from_quirks(self): # This is replaced for the version in builddir but left as-is for # the installed version. For the builddir one we need to run the - # builddir list-quirks + # builddir quirks list builddir = '@BUILDDIR@' if builddir != '@' + 'BUILDDIR' + '@': - command = [os.path.join(builddir, 'libinput-list-quirks')] + command = [os.path.join(builddir, 'libinput-quirks'), 'list'] else: - command = ['libinput', 'list-quirks'] + command = ['libinput', 'quirks', 'list'] command.append(self.path) cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if cmd.returncode != 0: diff --git a/tools/libinput-measure-touchpad-pressure b/tools/libinput-measure-touchpad-pressure index 23ec513b..b842cbd2 100755 --- a/tools/libinput-measure-touchpad-pressure +++ b/tools/libinput-measure-touchpad-pressure @@ -202,12 +202,12 @@ class Device(object): def _init_thresholds_from_quirks(self): # This is replaced for the version in builddir but left as-is for # the installed version. For the builddir one we need to run the - # builddir list-quirks + # builddir quirks list builddir = '@BUILDDIR@' if builddir != '@' + 'BUILDDIR' + '@': - command = [os.path.join(builddir, 'libinput-list-quirks')] + command = [os.path.join(builddir, 'libinput-quirks'), 'list'] else: - command = ['libinput', 'list-quirks'] + command = ['libinput', 'quirks', 'list'] command.append(self.path) cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if cmd.returncode != 0: diff --git a/tools/libinput-list-quirks.c b/tools/libinput-quirks.c similarity index 90% rename from tools/libinput-list-quirks.c rename to tools/libinput-quirks.c index 050b505b..88c860e4 100644 --- a/tools/libinput-list-quirks.c +++ b/tools/libinput-quirks.c @@ -74,10 +74,10 @@ static void usage(void) { printf("Usage:\n" - " libinput list-quirks [--data-dir /path/to/data/dir] /dev/input/event0\n" + " libinput quirks list [--data-dir /path/to/data/dir] /dev/input/event0\n" " Print the quirks for the given device\n" "\n" - " libinput list-quirks [--data-dir /path/to/data/dir] --validate-only\n" + " libinput quirks validate [--data-dir /path/to/data/dir]\n" " Validate the database\n"); } @@ -105,13 +105,11 @@ main(int argc, char **argv) enum { OPT_VERBOSE, OPT_DATADIR, - OPT_VALIDATE, }; static struct option opts[] = { { "help", no_argument, 0, 'h' }, { "verbose", no_argument, 0, OPT_VERBOSE }, { "data-dir", required_argument, 0, OPT_DATADIR }, - { "validate-only", no_argument, 0, OPT_VALIDATE }, { 0, 0, 0, 0} }; @@ -133,20 +131,35 @@ main(int argc, char **argv) case OPT_DATADIR: data_path = optarg; break; - case OPT_VALIDATE: - validate = true; - break; default: usage(); return 1; } } - if (optind >= argc && !validate) { + if (optind >= argc) { usage(); return 1; } + if (streq(argv[optind], "list")) { + optind++; + if (optind >= argc) { + usage(); + return 1; + } + } else if (streq(argv[optind], "validate")) { + optind++; + if (optind < argc) { + usage(); + return 1; + } + validate = true; + } else { + fprintf(stderr, "Unnkown action '%s'\n", argv[optind]); + return 1; + } + /* Overriding the data dir means no custom override file */ if (!data_path) { data_path = LIBINPUT_DATA_DIR; diff --git a/tools/libinput-quirks.man b/tools/libinput-quirks.man new file mode 100644 index 00000000..097dabea --- /dev/null +++ b/tools/libinput-quirks.man @@ -0,0 +1,43 @@ +.TH libinput-quirks "1" "" "libinput @LIBINPUT_VERSION@" "libinput Manual" +.SH NAME +libinput\-quirks \- quirk debug helper for libinput +.SH SYNOPSIS +.B libinput quirks list [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] \fI/dev/input/event0\fB +.br +.sp +.B libinput quirks validate [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] +.br +.sp +.B libinput quirks \-\-help +.SH DESCRIPTION +.PP +The +.B "libinput quirks" +tool interacts with libinput's quirks database. +.PP +When invoked as +.B libinput quirks list, +the tool lists all quirks applied to the given device. +.PP +When invoked as +.B libinput quirks validate, +the tool checks for parsing errors in the quirks files and fails +if a parsing error is encountered. +.PP +This is a debugging tool only, its output and behavior may change at any +time. Do not rely on the output. +.SH OPTIONS +.TP 8 +.B \-\-data\-dir \fI/path/to/dir\fR +Use the given directory as data directory for quirks files. When omitted, +the default directories are used. +.TP 8 +.B \-\-help +Print help +.TP 8 +.B \-\-verbose +Use verbose output, useful for debugging. +.SH LIBINPUT +Part of the +.B libinput(1) +suite