tools: rename list-quirks to the more generic "quirks list"

Enables us to easily add more tools where needed and it is
more consistent with the existing tools.

The commands are now:
   libinput quirks list
   libinput quirks validate

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/66

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2018-06-26 13:15:13 +10:00
parent 0d8c70baef
commit e723398c14
7 changed files with 105 additions and 70 deletions

View file

@ -54,21 +54,23 @@ Once the required section has been added, use the information from section
@section device-quirks-debugging Debugging device quirks @section device-quirks-debugging Debugging device quirks
libinput provides the `libinput list-quirks` tool to list and debug model libinput provides the `libinput quirks` tool to debug the quirks database.
quirks that apply to one or more local devices. 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 @verbatim
$ libinput list-quirks /dev/input/event19 $ libinput quirks list /dev/input/event19
Device has no quirks defined Device has no quirks defined
$ libinput list-quirks /dev/input/event0 $ libinput quirks list /dev/input/event0
AttrLidSwitchReliability AttrLidSwitchReliability
@endverbatim @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: information about all files and its attempts to match the device:
@verbatim @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 is data root
quirks debug: /usr/share/share/libinput/10-generic-keyboard.quirks quirks debug: /usr/share/share/libinput/10-generic-keyboard.quirks
quirks debug: /usr/share/share/libinput/10-generic-lid.quirks quirks debug: /usr/share/share/libinput/10-generic-lid.quirks

View file

@ -471,21 +471,34 @@ configure_file(input : 'tools/libinput-debug-events.man',
install_dir : join_paths(get_option('mandir'), 'man1') install_dir : join_paths(get_option('mandir'), 'man1')
) )
libinput_list_quirks_sources = [ 'tools/libinput-list-quirks.c' ] libinput_quirks_sources = [ 'tools/libinput-quirks.c' ]
libinput_list_quirks = executable('libinput-list-quirks', libinput_quirks = executable('libinput-quirks',
libinput_list_quirks_sources, libinput_quirks_sources,
dependencies : [dep_libquirks, dep_tools_shared, dep_libinput], dependencies : [dep_libquirks, dep_tools_shared, dep_libinput],
include_directories : [includes_src, includes_include], include_directories : [includes_src, includes_include],
install_dir : libinput_tool_path, install_dir : libinput_tool_path,
install : true install : true
) )
test('validate-quirks', test('validate-quirks',
libinput_list_quirks, libinput_quirks,
args: ['--validate-only', '--data-dir=@0@'.format(join_paths(meson.source_root(), 'data'))] args: ['validate', '--data-dir=@0@'.format(join_paths(meson.source_root(), 'data'))]
) )
configure_file(input : 'tools/libinput-list-quirks.man', configure_file(input : 'tools/libinput-quirks.man',
output : 'libinput-list-quirks.1', 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, configuration : man_config,
install : true, install : true,
install_dir : join_paths(get_option('mandir'), 'man1') 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 = configuration_data()
config_builddir.set('BUILDDIR', meson.build_root()) config_builddir.set('BUILDDIR', meson.build_root())
# libinput-measure-touchpad-pressure gets built but we install_data the # 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. # and should be used for debugging.
install_data('tools/libinput-measure-touchpad-pressure', install_data('tools/libinput-measure-touchpad-pressure',
install_dir : libinput_tool_path) 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') install_dir : join_paths(get_option('mandir'), 'man1')
) )
# libinput-measure-touch-size gets built but we install_data the source # 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. # should be used for debugging.
install_data('tools/libinput-measure-touch-size', install_data('tools/libinput-measure-touch-size',
install_dir : libinput_tool_path) install_dir : libinput_tool_path)

View file

@ -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

View file

@ -224,12 +224,12 @@ class Device(object):
def _init_thresholds_from_quirks(self): def _init_thresholds_from_quirks(self):
# This is replaced for the version in builddir but left as-is for # 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 # the installed version. For the builddir one we need to run the
# builddir list-quirks # builddir quirks list
builddir = '@BUILDDIR@' builddir = '@BUILDDIR@'
if builddir != '@' + 'BUILDDIR' + '@': if builddir != '@' + 'BUILDDIR' + '@':
command = [os.path.join(builddir, 'libinput-list-quirks')] command = [os.path.join(builddir, 'libinput-quirks'), 'list']
else: else:
command = ['libinput', 'list-quirks'] command = ['libinput', 'quirks', 'list']
command.append(self.path) command.append(self.path)
cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if cmd.returncode != 0: if cmd.returncode != 0:

View file

@ -202,12 +202,12 @@ class Device(object):
def _init_thresholds_from_quirks(self): def _init_thresholds_from_quirks(self):
# This is replaced for the version in builddir but left as-is for # 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 # the installed version. For the builddir one we need to run the
# builddir list-quirks # builddir quirks list
builddir = '@BUILDDIR@' builddir = '@BUILDDIR@'
if builddir != '@' + 'BUILDDIR' + '@': if builddir != '@' + 'BUILDDIR' + '@':
command = [os.path.join(builddir, 'libinput-list-quirks')] command = [os.path.join(builddir, 'libinput-quirks'), 'list']
else: else:
command = ['libinput', 'list-quirks'] command = ['libinput', 'quirks', 'list']
command.append(self.path) command.append(self.path)
cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if cmd.returncode != 0: if cmd.returncode != 0:

View file

@ -74,10 +74,10 @@ static void
usage(void) usage(void)
{ {
printf("Usage:\n" 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" " Print the quirks for the given device\n"
"\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"); " Validate the database\n");
} }
@ -105,13 +105,11 @@ main(int argc, char **argv)
enum { enum {
OPT_VERBOSE, OPT_VERBOSE,
OPT_DATADIR, OPT_DATADIR,
OPT_VALIDATE,
}; };
static struct option opts[] = { static struct option opts[] = {
{ "help", no_argument, 0, 'h' }, { "help", no_argument, 0, 'h' },
{ "verbose", no_argument, 0, OPT_VERBOSE }, { "verbose", no_argument, 0, OPT_VERBOSE },
{ "data-dir", required_argument, 0, OPT_DATADIR }, { "data-dir", required_argument, 0, OPT_DATADIR },
{ "validate-only", no_argument, 0, OPT_VALIDATE },
{ 0, 0, 0, 0} { 0, 0, 0, 0}
}; };
@ -133,20 +131,35 @@ main(int argc, char **argv)
case OPT_DATADIR: case OPT_DATADIR:
data_path = optarg; data_path = optarg;
break; break;
case OPT_VALIDATE:
validate = true;
break;
default: default:
usage(); usage();
return 1; return 1;
} }
} }
if (optind >= argc && !validate) { if (optind >= argc) {
usage(); usage();
return 1; 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 */ /* Overriding the data dir means no custom override file */
if (!data_path) { if (!data_path) {
data_path = LIBINPUT_DATA_DIR; data_path = LIBINPUT_DATA_DIR;

43
tools/libinput-quirks.man Normal file
View file

@ -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