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

View file

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

View file

@ -460,12 +460,19 @@ fill_libinput_category(char *nodename, char *content)
string_truncate_at_pattern(nodename, ".device.libinput"); string_truncate_at_pattern(nodename, ".device.libinput");
if (!strcmp(nodename, "category")) { if (!strcmp(nodename, "category")) {
if (!strcmp(content, "touch") /*
|| !strcmp(content, "touchpad") * First we try to get a type based on a number of pre-defined
|| !strcmp(content, "non-touch") * terms, for example: 'default', 'touch', 'touchpad' and
|| !strcmp(content, "default")) { * 'non-touch'
*/
current_libinput_category->type = get_device_type(content); 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); current_libinput_category->name = xstrdup(content);
} }
} else if (!strcasecmp(nodename, "naturalScroll")) { } else if (!strcasecmp(nodename, "naturalScroll")) {