aboutsummaryrefslogtreecommitdiff
path: root/sway/input
diff options
context:
space:
mode:
authorTony Crisci <tony@dubstepdish.com>2018-01-20 14:10:11 -0500
committerTony Crisci <tony@dubstepdish.com>2018-01-20 14:10:11 -0500
commitc353e01c85049cfbc09510657e453b6aa5fd9c2d (patch)
treec6ef14cfc08861ff8c62675ca1fbbbb00e9197cf /sway/input
parentcc3c713889e529c74888d9cd89af7039bfbae20c (diff)
downloadsway-c353e01c85049cfbc09510657e453b6aa5fd9c2d.tar.xz
add kill command
Diffstat (limited to 'sway/input')
-rw-r--r--sway/input/input-manager.c11
-rw-r--r--sway/input/keyboard.c9
2 files changed, 17 insertions, 3 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 26cf5035..7b19991b 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -369,3 +369,14 @@ void sway_input_manager_configure_xcursor(struct sway_input_manager *input) {
sway_seat_configure_xcursor(seat);
}
}
+
+struct sway_seat *sway_input_manager_get_default_seat(
+ struct sway_input_manager *input) {
+ struct sway_seat *seat = NULL;
+ wl_list_for_each(seat, &input->seats, link) {
+ if (strcmp(seat->wlr_seat->name, "seat0") == 0) {
+ return seat;
+ }
+ }
+ return seat;
+}
diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c
index 5827a1ca..6dc57d46 100644
--- a/sway/input/keyboard.c
+++ b/sway/input/keyboard.c
@@ -89,9 +89,12 @@ static bool binding_matches_key_state(struct sway_binding *binding,
return false;
}
-static void binding_execute_command(struct sway_binding *binding) {
+static void keyboard_execute_command(struct sway_keyboard *keyboard,
+ struct sway_binding *binding) {
wlr_log(L_DEBUG, "running command for binding: %s",
binding->command);
+ config_clear_handler_context(config);
+ config->handler_context.seat = keyboard->seat_device->sway_seat;
struct cmd_results *results = handle_command(binding->command);
if (results->status != CMD_SUCCESS) {
wlr_log(L_DEBUG, "could not run command for binding: %s",
@@ -160,7 +163,7 @@ static bool keyboard_execute_bindsym(struct sway_keyboard *keyboard,
}
if (match) {
- binding_execute_command(binding);
+ keyboard_execute_command(keyboard, binding);
return true;
}
}
@@ -267,7 +270,7 @@ static bool keyboard_execute_bindcode(struct sway_keyboard *keyboard,
for (int i = 0; i < keycode_bindings->length; ++i) {
struct sway_binding *binding = keycode_bindings->items[i];
if (binding_matches_keycodes(wlr_keyboard, binding, event)) {
- binding_execute_command(binding);
+ keyboard_execute_command(keyboard, binding);
return true;
}
}