X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=scrotwm.c;h=55b889699c04a9c6d0c5ca0bebb2c30f9f24393b;hb=6d109bd69200cccec6ec77834195af993dfa6b7b;hp=6c1fc2437cf9007fce87cf95a180ee064d88a1e7;hpb=74a35e47dc7bd2dce2478bc96547fc125dc761a8;p=spectrwm.git diff --git a/scrotwm.c b/scrotwm.c index 6c1fc24..55b8896 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -250,6 +250,7 @@ void max_stack(struct workspace *, struct swm_geometry *); void grabbuttons(struct ws_win *, int); void new_region(struct swm_screen *, int, int, int, int); +void update_modkey(unsigned int); struct layout { void (*l_stack)(struct workspace *, struct swm_geometry *); @@ -502,6 +503,7 @@ conf_load(char *filename) char *line, *cp, *var, *val; size_t len, lineno = 0; int i, sc; + unsigned int modkey; DNPRINTF(SWM_D_MISC, "conf_load: filename %s\n", filename); @@ -572,6 +574,22 @@ conf_load(char *filename) goto bad; break; + case 'm': + if (!strncmp(var, "modkey", strlen("modkey"))) { + modkey = MODKEY; + if (!strncmp(val, "Mod2", strlen("Mod2"))) + modkey = Mod2Mask; + else if (!strncmp(val, "Mod3", strlen("Mod3"))) + modkey = Mod3Mask; + else if (!strncmp(val, "Mod4", strlen("Mod4"))) + modkey = Mod4Mask; + else + modkey = Mod1Mask; + update_modkey(modkey); + } else + goto bad; + break; + case 'r': if (!strncmp(var, "region", strlen("region"))) custom_region(val); @@ -2080,6 +2098,24 @@ struct button { }; void +update_modkey(unsigned int mod) +{ + int i; + + for (i = 0; i < LENGTH(keys); i++) + if (keys[i].mod & ShiftMask) + keys[i].mod = mod | ShiftMask; + else + keys[i].mod = mod; + + for (i = 0; i < LENGTH(buttons); i++) + if (buttons[i].mask & ShiftMask) + buttons[i].mask = mod | ShiftMask; + else + buttons[i].mask = mod; +} + +void updatenumlockmask(void) { unsigned int i, j;