aboutsummaryrefslogtreecommitdiff
path: root/rootston
diff options
context:
space:
mode:
Diffstat (limited to 'rootston')
-rw-r--r--rootston/config.c4
-rw-r--r--rootston/keyboard.c13
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;
}