diff --git a/src/keyboard.c b/src/keyboard.c index beaee92b014e72c1578b8804329cdf426b4ddafd..86c01eaf626c9e2c7dbed43d267cdf59dfeadec5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -30,8 +30,6 @@ #include "keyboard.h" #include "debug.h" -#define PARSEKEY(s, k) strstr(g_ascii_strdown (s, strlen (s)), g_ascii_strdown(k, strlen (k))) - unsigned int KeyMask; unsigned int ButtonMask; unsigned int ButtonKeyMask; @@ -59,15 +57,29 @@ void parseKeyString(Display * dpy, MyKey * key, char *str) k = strrchr(str, '+'); if(k) { + gchar *tmp; + + tmp = g_ascii_strdown(str, -1); + key->keycode = XKeysymToKeycode(dpy, XStringToKeysym(k + 1)); - if(PARSEKEY(str, "Shift")) + if(strstr(str, "shift")) + { key->modifier = key->modifier | ShiftMask; - if(PARSEKEY(str, "Control")) + } + if(strstr(str, "control")) + { key->modifier = key->modifier | ControlMask; - if(PARSEKEY(str, "Alt") || PARSEKEY(str, "Mod1")) + } + if(strstr(str, "alt") || strstr(str, "mod1")) + { key->modifier = key->modifier | AltMask; - if(PARSEKEY(str, "Meta") || PARSEKEY(str, "Mod2")) + } + if(strstr(str, "meta") || strstr(str, "mod2")) + { key->modifier = key->modifier | MetaMask; + } + + g_free(tmp); } }