Преглед на файлове

Adding a way to ignore bits in the state.

Christoph Lohmann преди 12 години
родител
ревизия
f4a6c20f46
променени са 2 файла, в които са добавени 9 реда и са изтрити 0 реда
  1. 6 0
      config.def.h
  2. 3 0
      st.c

+ 6 - 0
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 */

+ 3 - 0
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)