Wednesday, December 7, 2016

xinput is not a configuration UI

xinput is a tool to query and modify X input device properties (amongst other things). Every so-often someone-complains about it's non-intuitive interface, but this is where users are mistaken: xinput is a not a configuration UI. It is a DUI - a developer user interface [1] - intended to test things without having to write custom (more user-friendly) for each new property. It is nothing but a tool to access what is effectively a key-value store. To use it you need to know not only the key name(s) but also the allowed formats, some of which are only documented in header files. It is intended to be run under user supervision, anything it does won't survive device hotplugging. Relying on xinput for configuration is the same as relying on 'echo' to toggle parameters in /sys for kernel configuration. It kinda possibly maybe works most of the time but it's not pretty. And it's not intended to be, so please don't complain to me about the arcane user interface.

[1] don't do it, things will be a bit confusing, you may not do the right thing, you can easily do damage, etc. A lot of similarities... ;)


Sudhir Khanger said...

I am disappointed that Plasma system settings doesn't allow me to disable horizontal scrolling that xinput sets by default.

It is the top reason I don't use xinput. System becomes impossible to use when things scroll randomly in all directions.

Peter Hutterer said...

Sudhir: xinput doesn't set it by default, it doesn't do anything by default. That's a bit like saying "echo sets it by default" :)

Sudhir Khanger said...

Not sure what's going on. If I have libinput installed then horizontal scrolling options are enabled and grayed out so that it can't be changed. When I use synaptics its disabled and options are also not grayed out so that they can be changed.

djb said...

Post the bug on the KDE tracker, so that they can investigate it in context, and so any other users of Plasma can benefit... rather than hoping the relatively small number of people who will see this comment thread will somehow fix someone else's product for you.