diff --git a/src/keyboard.c b/src/keyboard.c
index 10b14b03776d92bb78d7f1145ddb46dedd1066ed..beaee92b014e72c1578b8804329cdf426b4ddafd 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -30,6 +30,8 @@
 #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;
@@ -58,13 +60,13 @@ void parseKeyString(Display * dpy, MyKey * key, char *str)
     if(k)
     {
         key->keycode = XKeysymToKeycode(dpy, XStringToKeysym(k + 1));
-        if(strstr(str, "Shift"))
+        if(PARSEKEY(str, "Shift"))
             key->modifier = key->modifier | ShiftMask;
-        if(strstr(str, "Control"))
+        if(PARSEKEY(str, "Control"))
             key->modifier = key->modifier | ControlMask;
-        if(strstr(str, "Alt"))
+        if(PARSEKEY(str, "Alt") || PARSEKEY(str, "Mod1"))
             key->modifier = key->modifier | AltMask;
-        if(strstr(str, "Meta"))
+        if(PARSEKEY(str, "Meta") || PARSEKEY(str, "Mod2"))
             key->modifier = key->modifier | MetaMask;
     }
 }