Use a command string rather than an action enum

This commit is contained in:
emersion 2017-10-02 17:53:30 +02:00
parent 97d0fe8976
commit 238ded1578
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
3 changed files with 6 additions and 19 deletions

View File

@ -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;
};

View File

@ -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;

View File

@ -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);
}
}
}