working on old repo, merging recent changesets. - st - Simple Terminal
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b032814e25ddb166b4621262be4b8a1a0a609e37
 (DIR) parent 8e66b5cc16831583a1086f3ba9cd0eaa55f02230
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       Date:   Fri, 16 Sep 2011 18:24:13 +0200
       
       working on old repo, merging recent changesets.
       
       Diffstat:
         config.def.h                        |      52 +++++++++++++++++--------------
         st.c                                |       9 +++++++--
         st.info                             |       2 +-
       
       3 files changed, 37 insertions(+), 26 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -25,34 +25,40 @@ static const char *colorname[] = {
                "white"
        };
        
       -/* Default colors (colorname index) */
       -/* foreground, background, cursor   */
       +/* Default colors (colorname index)
       +   foreground, background, cursor   */
        #define DefaultFG 7
        #define DefaultBG 0
        #define DefaultCS 1
        
       -/* Special keys (change & recompile st.info accordingly) */
       -/*    key,        mask,  output */
       +/* Special keys (change & recompile st.info accordingly)
       +   Keep in mind that kpress() in st.c hardcodes some keys.
       +
       +   Mask value:
       +   * Use XK_ANY_MOD to match the key no matter modifiers state
       +   * Use XK_NO_MOD to match the key alone (no modifiers)
       +   
       +      key,        mask,  output */
        static Key key[] = {
       -        { XK_BackSpace, 0, "\177" },
       -        { XK_Insert,    0, "\033[2~" },
       -        { XK_Delete,    0, "\033[3~" },
       -        { XK_Home,      0, "\033[1~" },
       -        { XK_End,       0, "\033[4~" },
       -        { XK_Prior,     0, "\033[5~" },
       -        { XK_Next,      0, "\033[6~" },
       -        { XK_F1,        0, "\033OP"   },
       -        { XK_F2,        0, "\033OQ"   },
       -        { XK_F3,        0, "\033OR"   },
       -        { XK_F4,        0, "\033OS"   },
       -        { XK_F5,        0, "\033[15~" },
       -        { XK_F6,        0, "\033[17~" },
       -        { XK_F7,        0, "\033[18~" },
       -        { XK_F8,        0, "\033[19~" },
       -        { XK_F9,        0, "\033[20~" },
       -        { XK_F10,       0, "\033[21~" },
       -        { XK_F11,       0, "\033[23~" },
       -        { XK_F12,       0, "\033[24~" },
       +        { XK_BackSpace, XK_NO_MOD, "\177" },
       +           { XK_Insert,    XK_NO_MOD, "\033[2~" },
       +        { XK_Delete,    XK_NO_MOD, "\033[3~" },
       +        { XK_Home,      XK_NO_MOD, "\033[1~" },
       +        { XK_End,       XK_NO_MOD, "\033[4~" },
       +        { XK_Prior,     XK_NO_MOD, "\033[5~" },
       +        { XK_Next,      XK_NO_MOD, "\033[6~" },
       +        { XK_F1,        XK_NO_MOD, "\033OP"   },
       +        { XK_F2,        XK_NO_MOD, "\033OQ"   },
       +        { XK_F3,        XK_NO_MOD, "\033OR"   },
       +        { XK_F4,        XK_NO_MOD, "\033OS"   },
       +        { XK_F5,        XK_NO_MOD, "\033[15~" },
       +        { XK_F6,        XK_NO_MOD, "\033[17~" },
       +        { XK_F7,        XK_NO_MOD, "\033[18~" },
       +        { XK_F8,        XK_NO_MOD, "\033[19~" },
       +        { XK_F9,        XK_NO_MOD, "\033[20~" },
       +        { XK_F10,       XK_NO_MOD, "\033[21~" },
       +        { XK_F11,       XK_NO_MOD, "\033[23~" },
       +        { XK_F12,       XK_NO_MOD, "\033[24~" },
        };
        
        /* Line drawing characters (sometime specific to each font...) */
 (DIR) diff --git a/st.c b/st.c
       @@ -47,6 +47,8 @@
        #define ESC_ARG_SIZ   16
        #define DRAW_BUF_SIZ  1024
        #define UTF_SIZ       4
       +#define XK_NO_MOD     UINT_MAX
       +#define XK_ANY_MOD    0
        
        #define SERRNO strerror(errno)
        #define MIN(a, b)  ((a) < (b) ? (a) : (b))
       @@ -1840,9 +1842,12 @@ focus(XEvent *ev) {
        char*
        kmap(KeySym k, unsigned int state) {
                int i;
       -        for(i = 0; i < LEN(key); i++)
       -                if(key[i].k == k && (key[i].mask == 0 || key[i].mask & state))
       +        state &= ~Mod2Mask;
       +        for(i = 0; i < LEN(key); i++) {
       +                unsigned int mask = key[i].mask;
       +                if(key[i].k == k && ((state & mask) == mask || (mask == XK_NO_MOD && !state)))
                                return (char*)key[i].s;
       +        }
                return NULL;
        }
        
 (DIR) diff --git a/st.info b/st.info
       @@ -79,7 +79,7 @@ st| simpleterm,
                mir,
                msgr,
                ncv#3,
       -        op=\E[37;40m,
       +        op=\E[39;49m,
                pairs#64,
                rc=\E8,
                rev=\E[7m,