aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/rootston/config.h6
-rw-r--r--rootston/config.c11
-rw-r--r--rootston/keyboard.c8
3 files changed, 6 insertions, 19 deletions
diff --git a/include/rootston/config.h b/include/rootston/config.h
index deff7578..ef101f2d 100644
--- a/include/rootston/config.h
+++ b/include/rootston/config.h
@@ -18,14 +18,10 @@ struct device_config {
struct wl_list link;
};
-enum binding_config_action {
- BINDING_CONFIG_ACTION_QUIT,
-};
-
struct binding_config {
xkb_keysym_t *keysyms;
size_t keysyms_len;
- enum binding_config_action action;
+ char *command;
struct wl_list link;
};
diff --git a/rootston/config.c b/rootston/config.c
index 5c889975..1f524ab2 100644
--- a/rootston/config.c
+++ b/rootston/config.c
@@ -175,14 +175,7 @@ static int config_ini_handler(void *user, const char *section, const char *name,
struct binding_config *bc = calloc(1, sizeof(struct binding_config));
wl_list_insert(&config->bindings, &bc->link);
- if (strcmp(value, "quit") == 0) {
- bc->action = BINDING_CONFIG_ACTION_QUIT;
- } else {
- wlr_log(L_ERROR, "got unknown key binding action: %s", value);
- wl_list_remove(&bc->link);
- free(bc);
- return 1;
- }
+ bc->command = strdup(value);
bc->keysyms_len = 1;
char *symnames = strdup(name);
@@ -226,7 +219,7 @@ struct roots_config *parse_args(int argc, char *argv[]) {
// TEMPORARY, probably
struct binding_config *bc = calloc(1, sizeof(struct binding_config));
wl_list_insert(&config->bindings, &bc->link);
- bc->action = BINDING_CONFIG_ACTION_QUIT;
+ bc->command = strdup("exit");
bc->keysyms_len = 1;
bc->keysyms = calloc(1, sizeof(xkb_keysym_t));
bc->keysyms[0] = XKB_KEY_Escape;
diff --git a/rootston/keyboard.c b/rootston/keyboard.c
index 79295ab4..d3f0bc67 100644
--- a/rootston/keyboard.c
+++ b/rootston/keyboard.c
@@ -21,12 +21,10 @@ static ssize_t keyboard_pressed_keysym_index(struct roots_keyboard *keyboard,
}
static void keyboard_binding_execute(struct roots_keyboard *keyboard,
- struct binding_config *bc) {
+ char *command) {
struct roots_server *server = keyboard->input->server;
- switch (bc->action) {
- case BINDING_CONFIG_ACTION_QUIT:
+ if (strcmp(command, "exit") == 0) {
wl_display_terminate(server->wl_display);
- break;
}
}
@@ -67,7 +65,7 @@ static void keyboard_keysym_press(struct roots_keyboard *keyboard,
}
if (ok) {
- keyboard_binding_execute(keyboard, bc);
+ keyboard_binding_execute(keyboard, bc->command);
}
}
}