Fix tab key
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Wed, 14 Nov 2012 10:14:29 +0000 (11:14 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Wed, 14 Nov 2012 10:14:29 +0000 (11:14 +0100)
When Shift + Tab is pressed X server send the event XK_ISO_Left_Tab with
ShiftMask, so this is the entry we need in config.def.h

This patch also revert the previous patch for this issue because it breaks
the keyboard.
---
 config.def.h |    2 +-
 st.c         |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

config.def.h
st.c

index 5d887fc..972285b 100644 (file)
@@ -141,7 +141,7 @@ static Key key[] = {
        { XK_Right,         ShiftMask,      "\033[1;2C",     0,    0,    0},
        { XK_Right,         ControlMask,    "\033[1;5C",     0,    0,    0},
        { XK_Right,         Mod1Mask,       "\033[1;3C",     0,    0,    0},
        { XK_Right,         ShiftMask,      "\033[1;2C",     0,    0,    0},
        { XK_Right,         ControlMask,    "\033[1;5C",     0,    0,    0},
        { XK_Right,         Mod1Mask,       "\033[1;3C",     0,    0,    0},
-       { XK_Tab,           ShiftMask,      "\033[Z",        0,    0,    0},
+       { XK_ISO_Left_Tab,  ShiftMask,      "\033[Z",        0,    0,    0},
        { XK_Return,        XK_NO_MOD,      "\n",            0,    0,   -1},
        { XK_Return,        XK_NO_MOD,      "\r\n",          0,    0,   +1},
        { XK_Return,        Mod1Mask,       "\033\n",        0,    0,   -1},
        { XK_Return,        XK_NO_MOD,      "\n",            0,    0,   -1},
        { XK_Return,        XK_NO_MOD,      "\r\n",          0,    0,   +1},
        { XK_Return,        Mod1Mask,       "\033\n",        0,    0,   -1},
diff --git a/st.c b/st.c
index ca4248a..932253c 100644 (file)
--- a/st.c
+++ b/st.c
@@ -2700,7 +2700,7 @@ kmap(KeySym k, uint state) {
                if(kp->k != k)
                        continue;
 
                if(kp->k != k)
                        continue;
 
-               if((state & mask) != mask ||
+               if((state & mask) != mask &&
                                (mask == XK_NO_MOD && state)) {
                        continue;
                }
                                (mask == XK_NO_MOD && state)) {
                        continue;
                }