config.def.h (2820B)
1 /* See LICENSE file for license details. */ 2 /* Requires: wchar.h, X11/X.h, util.h */ 3 4 #define CURS (1<<0) /* Application cursor mode */ 5 #define KPAD (1<<1) /* Application keypad mode */ 6 #define NMLK (1<<2) /* Num lock */ 7 #define RELS (1<<3) /* Key/buttom release */ 8 /* To allow checking more boolean properties when matching key/button events, 9 * define them here and modify MODOFFS and confstate. */ 10 #define MODOFFS 4 11 #define SHFT (ShiftMask<<MODOFFS) 12 #define CTRL (ControlMask<<MODOFFS) 13 #define ALT (Mod1Mask<<MODOFFS) 14 #define BTN1 (Button1Mask<<MODOFFS) 15 #define BTN2 (Button2Mask<<MODOFFS) 16 #define BTN3 (Button3Mask<<MODOFFS) 17 #define BTN4 (Button4Mask<<MODOFFS) 18 #define BTN5 (Button5Mask<<MODOFFS) 19 #define KMOD (SHFT|CTRL|ALT) 20 #define KEXCL(m) (KMOD&~(m)) 21 22 typedef union { 23 int i; 24 uint u; 25 double d; 26 const void *v; 27 struct { 28 uint l; /* Length of s, excluding null */ 29 const char *s; 30 } str; 31 struct { 32 uint n; /* First parameter; ignored if 0 or 1 */ 33 uint m; /* State bits to ignore when encoding as CSI */ 34 char c; 35 } csi; 36 } Arg; 37 #define ARG_STR(s_) { .str.l = sizeof(s_)-1, .str.s = (s_) } 38 #define ARG_CSI(n_,m_,c_) { .csi.n = (n_), .csi.m = (m_), .csi.c = (c_) } 39 40 typedef void (*Handler)(uint state, Arg arg); 41 42 /* Tristate logic: each bit in set/clr is interpreted as follows: 43 * set clr 44 * 0 0 don't care 45 * 0 1 bit must be clear 46 * 1 0 bit must be set 47 * 1 1 unsatisfiable (i.e., useless configuration) */ 48 49 typedef struct { 50 uint btn; 51 uint set, clr; 52 Handler fn; 53 Arg arg; 54 } Btn; 55 56 typedef struct { 57 KeySym sym; 58 uint set, clr; 59 Handler fn; 60 Arg arg; 61 } Key; 62 63 typedef struct { 64 int type; 65 uint set, clr; 66 } SelType; 67 68 extern char *font; 69 extern int borderpx; 70 extern float cwscale; 71 extern float chscale; 72 extern char *shell; 73 extern char *utmp; 74 extern char *scroll; 75 extern char *stty_args; 76 extern char *vtiden; 77 extern wchar_t *worddelimiters; 78 extern uint doubleclicktimeout; 79 extern uint tripleclicktimeout; 80 extern int allowaltscreen; 81 extern int allowwindowops; 82 extern double minlatency; 83 extern double maxlatency; 84 extern uint blinktimeout; 85 extern uint cursorthickness; 86 extern int bellvolume; 87 extern char *termname; 88 extern uint tabspaces; 89 extern const char *colorname[]; 90 extern uint defaultfg; 91 extern uint defaultbg; 92 extern uint defaultcs; 93 extern uint defaultrcs; 94 extern uint cursorshape; 95 extern uint cols; 96 extern uint rows; 97 extern uint mouseshape; 98 extern uint mousefg; 99 extern uint mousebg; 100 extern uint defaultattr; 101 extern uint ignoremod; 102 extern Btn btns[]; 103 extern Key keys[]; 104 extern SelType seltypes[]; 105 106 /* confstate takes the "X state" (i.e., the raw keyboard modifier state 107 * received from X lib) and converts it into "st state" (i.e., the boolean 108 * properties used in matching events to actions in the btns, keys, and 109 * seltypes tables). */ 110 uint confstate(uint, int);