Adding a way to ignore bits in the state. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit f4a6c20f464df79a9b15b4a2a11daaa7a06c60a0
 (DIR) parent e0ec2cf984ff8006b99cf4ca8590ceec7113daac
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sat, 16 Feb 2013 13:57:12 +0100
       
       Adding a way to ignore bits in the state.
       
       Diffstat:
         M config.def.h                        |       6 ++++++
         M st.c                                |       3 +++
       
       2 files changed, 9 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -104,6 +104,12 @@ static Shortcut shortcuts[] = {
         */
        static KeySym mappedkeys[] = { -1 };
        
       +/*
       + * Which bits of the state should be ignored. By default the state bit for the
       + * keyboard layout (XK_SWITCH_MOD) is ignored.
       + */
       +uint ignoremod = XK_SWITCH_MOD;
       +
        /* key, mask, output, keypad, cursor, crlf */
        static Key key[] = {
                /* keysym             mask         string         keypad cursor crlf */
 (DIR) diff --git a/st.c b/st.c
       @@ -61,6 +61,7 @@
        #define DRAW_BUF_SIZ  20*1024
        #define XK_ANY_MOD    UINT_MAX
        #define XK_NO_MOD     0
       +#define XK_SWITCH_MOD (1<<13)
        
        #define REDRAW_TIMEOUT (80*1000) /* 80 ms */
        
       @@ -3008,6 +3009,8 @@ focus(XEvent *ev) {
        
        inline bool
        match(uint mask, uint state) {
       +        state &= ~(ignoremod);
       +
                if(mask == XK_NO_MOD && state)
                        return false;
                if(mask != XK_ANY_MOD && mask != XK_NO_MOD && !state)