Adding a way to ignore bits in the state.
This commit is contained in:
		@ -104,6 +104,12 @@ static Shortcut shortcuts[] = {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
static KeySym mappedkeys[] = { -1 };
 | 
					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 */
 | 
					/* key, mask, output, keypad, cursor, crlf */
 | 
				
			||||||
static Key key[] = {
 | 
					static Key key[] = {
 | 
				
			||||||
	/* keysym             mask         string         keypad cursor crlf */
 | 
						/* keysym             mask         string         keypad cursor crlf */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								st.c
									
									
									
									
									
								
							@ -61,6 +61,7 @@
 | 
				
			|||||||
#define DRAW_BUF_SIZ  20*1024
 | 
					#define DRAW_BUF_SIZ  20*1024
 | 
				
			||||||
#define XK_ANY_MOD    UINT_MAX
 | 
					#define XK_ANY_MOD    UINT_MAX
 | 
				
			||||||
#define XK_NO_MOD     0
 | 
					#define XK_NO_MOD     0
 | 
				
			||||||
 | 
					#define XK_SWITCH_MOD (1<<13)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define REDRAW_TIMEOUT (80*1000) /* 80 ms */
 | 
					#define REDRAW_TIMEOUT (80*1000) /* 80 ms */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3008,6 +3009,8 @@ focus(XEvent *ev) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
inline bool
 | 
					inline bool
 | 
				
			||||||
match(uint mask, uint state) {
 | 
					match(uint mask, uint state) {
 | 
				
			||||||
 | 
						state &= ~(ignoremod);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(mask == XK_NO_MOD && state)
 | 
						if(mask == XK_NO_MOD && state)
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	if(mask != XK_ANY_MOD && mask != XK_NO_MOD && !state)
 | 
						if(mask != XK_ANY_MOD && mask != XK_NO_MOD && !state)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user