diff options
-rw-r--r-- | config.def.h | 16 | ||||
-rw-r--r-- | config.h | 19 | ||||
-rw-r--r-- | dwl.c | 23 |
3 files changed, 13 insertions, 45 deletions
diff --git a/config.def.h b/config.def.h index 4d91aa5..cbad373 100644 --- a/config.def.h +++ b/config.def.h @@ -74,15 +74,12 @@ static const MonitorRule monrules[] = { }; /* keyboard */ -static const struct xkb_rule_names xkb_rules[] = { - { - .layout = "us" - }, - /*{ - .layout = "us", - .variant = "dvp", - .options = "compose:102,numpad:shift3,kpdl:semi,keypad:atm,caps:super" - }*/ +static const struct xkb_rule_names xkb_rules = { + /* can specify fields: rules, model, layout, variant, options */ + /* example: + .options = "ctrl:nocaps", + */ + .options = NULL, }; static const int repeat_rate = 25; @@ -192,7 +189,6 @@ static const Key keys[] = { { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_A, incxkbrules, {.i = +1} }, TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), @@ -84,18 +84,12 @@ static const MonitorRule monrules[] = { }; /* keyboard */ -static const struct xkb_rule_names xkb_rules[] = { - { - .layout = "us" - }, - { - .layout = "ca" - }, - /*{ - .layout = "us", - .variant = "dvp", - .options = "compose:102,numpad:shift3,kpdl:semi,keypad:atm,caps:super" - }*/ +static const struct xkb_rule_names xkb_rules = { + /* can specify fields: rules, model, layout, variant, options */ + /* example: + .options = "ctrl:nocaps", + */ + .options = NULL, }; static const int repeat_rate = 50; @@ -205,7 +199,6 @@ static const Key keys[] = { { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_less, tagmon, {.i = WLR_DIRECTION_LEFT} }, { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_greater, tagmon, {.i = WLR_DIRECTION_RIGHT} }, - { WLR_MODIFIER_ALT, XKB_KEY_Return, incxkbrules, {.i = +1} }, TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), @@ -377,7 +377,6 @@ static void setsel(struct wl_listener *listener, void *data); static void setup(void); static void spawn(const Arg *arg); static void startdrag(struct wl_listener *listener, void *data); -static void incxkbrules(const Arg *arg); static int status_in(int fd, unsigned int mask, void *data); static void tag(const Arg *arg); static void tagmon(const Arg *arg); @@ -451,7 +450,6 @@ static struct wl_listener lock_listener = {.notify = locksession}; static struct wlr_seat *seat; static KeyboardGroup *kb_group; -static unsigned int kblayout = 0; static unsigned int cursor_mode; static Client *grabc; static Client initial_grabc; @@ -1067,7 +1065,7 @@ createkeyboardgroup(void) /* Prepare an XKB keymap and assign it to the keyboard group. */ context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); - if (!(keymap = xkb_keymap_new_from_names(context, &xkb_rules[kblayout], + if (!(keymap = xkb_keymap_new_from_names(context, &xkb_rules, XKB_KEYMAP_COMPILE_NO_FLAGS))) die("failed to compile keymap"); @@ -3124,25 +3122,6 @@ status_in(int fd, unsigned int mask, void *data) } void -incxkbrules(const Arg *arg) -{ - KeyboardGroup *group; - struct wlr_keyboard_group *wlr_group; - const struct xkb_rule_names newrule = xkb_rules[(kblayout + 1) % LENGTH(xkb_rules)]; - - wl_list_for_each(group, &kb_group->link, link) { - wl_list_for_each(wlr_group, &group->wlr_group->keys, keys) { - struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS); - struct xkb_keymap *keymap = xkb_map_new_from_names(context, &newrule, - XKB_KEYMAP_COMPILE_NO_FLAGS); - wlr_keyboard_set_keymap(&wlr_group->keyboard, keymap); - xkb_keymap_unref(keymap); - xkb_context_unref(context); - } - } -} - -void tag(const Arg *arg) { Client *sel = focustop(selmon); |