From 55f63935ab9319da8e145b49edc1a7ae3e6782c6 Mon Sep 17 00:00:00 2001 From: Mikkel Oscar Lyderik Date: Thu, 7 Jan 2016 21:43:00 +0100 Subject: Implement bindsym --release This is a "simple" version of --release (same as i3) that only supports a binding that contain one normal key. e.g.: bindsym --release $mod+x exec somthing-fun I didn't bother implementing it for a combination like `$mod+x+z` since it is a bit tricky to get right and also a bit weird to actually do on a keyboard. --- sway/commands.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'sway/commands.c') diff --git a/sway/commands.c b/sway/commands.c index 4e5bc712..6a316596 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -163,9 +163,25 @@ static struct cmd_results *cmd_bindsym(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "bindsym", "Can only be used in config file."); } + struct sway_binding *binding = malloc(sizeof(struct sway_binding)); binding->keys = create_list(); binding->modifiers = 0; + binding->release = false; + + // Handle --release + if (strcmp("--release", argv[0]) == 0) { + if (argc >= 3) { + binding->release = true; + argv++; + argc--; + } else { + return cmd_results_new(CMD_FAILURE, "bindsym", + "Invalid bindsym command" + "(expected more than 2 arguments, got %d)", argc); + } + } + binding->command = join_args(argv + 1, argc - 1); list_t *split = split_string(argv[0], "+"); -- cgit v1.2.3