aboutsummaryrefslogtreecommitdiff
path: root/sway/commands/seat
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands/seat')
-rw-r--r--sway/commands/seat/keyboard_grouping.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/sway/commands/seat/keyboard_grouping.c b/sway/commands/seat/keyboard_grouping.c
new file mode 100644
index 00000000..959c6f94
--- /dev/null
+++ b/sway/commands/seat/keyboard_grouping.c
@@ -0,0 +1,26 @@
+#include <string.h>
+#include "sway/commands.h"
+#include "sway/config.h"
+#include "stringop.h"
+
+struct cmd_results *seat_cmd_keyboard_grouping(int argc, char **argv) {
+ struct cmd_results *error = NULL;
+ if ((error = checkarg(argc, "keyboard_grouping", EXPECTED_EQUAL_TO, 1))) {
+ return error;
+ }
+ if (!config->handler_context.seat_config) {
+ return cmd_results_new(CMD_INVALID, "No seat defined");
+ }
+
+ struct seat_config *seat_config = config->handler_context.seat_config;
+ if (strcmp(argv[0], "none") == 0) {
+ seat_config->keyboard_grouping = KEYBOARD_GROUP_NONE;
+ } else if (strcmp(argv[0], "keymap") == 0) {
+ seat_config->keyboard_grouping = KEYBOARD_GROUP_KEYMAP;
+ } else {
+ return cmd_results_new(CMD_INVALID,
+ "Expected syntax `keyboard_grouping none|keymap`");
+ }
+
+ return cmd_results_new(CMD_SUCCESS, NULL);
+}