st

st fork
git clone git://git.rr3.xyz/st
Log | Files | Refs | README | LICENSE

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);