config: remove duplication in libinput-category parsing

Related-to: #1382
This commit is contained in:
Johan Malm 2023-12-29 19:50:37 +00:00 committed by Johan Malm
parent aff673bee4
commit 5337eda242
3 changed files with 21 additions and 8 deletions

View file

@ -7,6 +7,9 @@
#include <wayland-server-core.h>
enum device_type {
LAB_LIBINPUT_DEVICE_NONE = 0,
// FIXME: Rename the entries below with a LAB_LIBINPUT_ prefix
DEFAULT_DEVICE,
TOUCH_DEVICE,
TOUCHPAD_DEVICE,

View file

@ -26,7 +26,10 @@ libinput_category_init(struct libinput_category *l)
enum device_type
get_device_type(const char *s)
{
if (!s) {
if (!s || !*s) {
return LAB_LIBINPUT_DEVICE_NONE;
}
if (!strcasecmp(s, "default")) {
return DEFAULT_DEVICE;
}
if (!strcasecmp(s, "touch")) {
@ -38,7 +41,7 @@ get_device_type(const char *s)
if (!strcasecmp(s, "non-touch")) {
return NON_TOUCH_DEVICE;
}
return DEFAULT_DEVICE;
return LAB_LIBINPUT_DEVICE_NONE;
}
struct libinput_category *

View file

@ -460,12 +460,19 @@ fill_libinput_category(char *nodename, char *content)
string_truncate_at_pattern(nodename, ".device.libinput");
if (!strcmp(nodename, "category")) {
if (!strcmp(content, "touch")
|| !strcmp(content, "touchpad")
|| !strcmp(content, "non-touch")
|| !strcmp(content, "default")) {
/*
* First we try to get a type based on a number of pre-defined
* terms, for example: 'default', 'touch', 'touchpad' and
* 'non-touch'
*/
current_libinput_category->type = get_device_type(content);
} else {
/*
* If we couldn't match against any of those terms, we use the
* provided value to define the device name that the settings
* should be applicable to.
*/
if (current_libinput_category->type == LAB_LIBINPUT_DEVICE_NONE) {
current_libinput_category->name = xstrdup(content);
}
} else if (!strcasecmp(nodename, "naturalScroll")) {