diff options
author | emersion <contact@emersion.fr> | 2017-12-08 17:03:05 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2017-12-08 17:03:05 +0100 |
commit | a3c0f9781073a29c020d8f5c992b8019264dc219 (patch) | |
tree | e840e9682ba190759368ecd7e2312ed53c0da8b7 /rootston | |
parent | 703df2a6711322fac90581f2005750b5a72dd148 (diff) |
Make keyboard repeat info configurable
Diffstat (limited to 'rootston')
-rw-r--r-- | rootston/config.c | 4 | ||||
-rw-r--r-- | rootston/keyboard.c | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/rootston/config.c b/rootston/config.c index 59adf13c..6e596852 100644 --- a/rootston/config.c +++ b/rootston/config.c @@ -213,6 +213,10 @@ static void config_handle_keyboard(struct roots_config *config, kc->variant = strdup(value); } else if (strcmp(name, "options") == 0) { kc->options = strdup(value); + } else if (strcmp(name, "repeat-rate") == 0) { + kc->repeat_rate = strtol(value, NULL, 10); + } else if (strcmp(name, "repeat-delay") == 0) { + kc->repeat_delay = strtol(value, NULL, 10); } else { wlr_log(L_ERROR, "got unknown keyboard config: %s", name); } diff --git a/rootston/keyboard.c b/rootston/keyboard.c index 85033613..4aaf2d48 100644 --- a/rootston/keyboard.c +++ b/rootston/keyboard.c @@ -306,6 +306,12 @@ static void keyboard_config_merge(struct roots_keyboard_config *config, if (config->name == NULL) { config->name = fallback->name; } + if (config->repeat_rate <= 0) { + config->repeat_rate = fallback->repeat_rate; + } + if (config->repeat_delay <= 0) { + config->repeat_delay = fallback->repeat_delay; + } } struct roots_keyboard *roots_keyboard_create(struct wlr_input_device *device, @@ -337,8 +343,7 @@ struct roots_keyboard *roots_keyboard_create(struct wlr_input_device *device, keyboard_config_merge(config, &env_config); keyboard->config = config; - struct xkb_rule_names rules; - memset(&rules, 0, sizeof(rules)); + struct xkb_rule_names rules = { 0 }; rules.rules = config->rules; rules.model = config->model; rules.layout = config->layout; @@ -353,6 +358,10 @@ struct roots_keyboard *roots_keyboard_create(struct wlr_input_device *device, &rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); xkb_context_unref(context); + int repeat_rate = (config->repeat_rate > 0) ? config->repeat_rate : 25; + int repeat_delay = (config->repeat_delay > 0) ? config->repeat_delay : 600; + wlr_keyboard_set_repeat_info(device->keyboard, repeat_rate, repeat_delay); + return keyboard; } |