diff options
Diffstat (limited to 'src/keysym.h')
| -rw-r--r-- | src/keysym.h | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/src/keysym.h b/src/keysym.h index 79dce3a..7e3f6f2 100644 --- a/src/keysym.h +++ b/src/keysym.h @@ -12,17 +12,19 @@ #define IS_GUI(x) ((x) & (1U << B_GUI)) #define IS_RIGHT(x) ((x) & (1U << B_RIGHT)) #define IS_TOGGLE(x) ((x) & (1U << B_TOGGLE)) +#define IS_REBASE(x) ((x) & (1U << B_REBASE)) #define IS_SWITCH(x) ((x) & (1U << B_SWITCH)) #define IS_SPECIAL(x) ((x) & (1U << B_SPECIAL)) #define IS_USER(x) ((x) & (1U << B_USER)) -#define KEYSYM_MOUSE_MASK ((1U << B_SPECIAL) | (0b01 << B_SPECIAL_SEL)) -#define KEYSYM_SYSTEM_MASK ((1U << B_SPECIAL) | (0b10 << B_SPECIAL_SEL)) -#define KEYSYM_CONSUMER_MASK ((1U << B_SPECIAL) | (0b11 << B_SPECIAL_SEL)) +#define IS_MOUSE(x) (IS_SPECIAL(x) && (TO_SPECIAL(x) == S_MOUSE)) +#define IS_SYSTEM(x) (IS_SPECIAL(x) && (TO_SPECIAL(x) == S_SYSTEM)) +#define IS_CONSUMER(x) (IS_SPECIAL(x) && (TO_SPECIAL(x) == S_CONSUMER)) -#define IS_MOUSE(x) ((x) & (KEYSYM_MOUSE_MASK)) -#define IS_SYSTEM(x) ((x) & (KEYSYM_SYSTEM_MASK)) -#define IS_CONSUMER(x) ((x) & (KEYSYM_CONSUMER_MASK)) +#define IS_MACRO_HOLD(x) ((x) & (1U << B_MACRO_HOLD)) +#define IS_MACRO_RELEASE(x) ((x) & (1U << B_MACRO_RELEASE)) +#define IS_MACRO_PRESS(x) (!IS_MACRO_HOLD(x) && !IS_MACRO_RELEASE(x)) +#define IS_MACRO_DELAY(x) ((x) & (1U << B_MACRO_DELAY)) #define IS_LEFT_CTRL(x) (IS_CTRL(x) && !IS_RIGHT(x)) #define IS_RIGHT_CTRL(x) (IS_CTRL(x) && IS_RIGHT(x)) @@ -35,23 +37,34 @@ #define IS_MOD(x) ((x) & MASK(B_TOGGLE, B_CTRL)) -#define TO_KC(x) ((x) & 0xFF) -#define TO_SYM(x) ((x) & 0xFF) +#define TO_SPECIAL(x) (((x) >> B_SPECIAL_SEL) & 0b11) +#define TO_KC(x) ((x) & 0xFF) +#define TO_SYM(x) ((x) & 0xFF) #define TO_LAYER(x) ((x) & 0xFF) +#define TO_DELAY(x) ((x) & 0xFFFF) + +#define SPECIAL(x, g) ((x) | (1U << B_SPECIAL) | ((g) << B_SPECIAL_SEL)) #define LCTL(x) ((x) | (1 << B_CTRL)) #define LSFT(x) ((x) | (1 << B_SHIFT)) #define LALT(x) ((x) | (1 << B_ALT)) #define LGUI(x) ((x) | (1 << B_GUI)) -#define RCTL(x) (LCTL(x) | (1 << B_RIGHT)) -#define RSFT(x) (LSFT(x) | (1 << B_RIGHT)) -#define RALT(x) (LALT(x) | (1 << B_RIGHT)) -#define RGUI(x) (LGUI(x) | (1 << B_RIGHT)) +#define RIGH(x) ((x) | (1 << B_RIGHT)) + +#define HOLD(x) ((x) | (1 << B_MACRO_HOLD)) +#define RELEASE(x) ((x) | (1 << B_MACRO_RELEASE)) +#define DELAY(x) ((x) | (1 << B_MACRO_DELAY)) #define SW(x) ((x) | (1 << B_SWITCH)) #define TO(x) ((x) | (1 << B_TOGGLE)) +#define RB(x) ((x) | (1 << B_REBASE)) #define SX(x) ((x) | (1 << B_USER)) +#define RCTL(x) RIGH(LCTL(x)) +#define RSFT(x) RIGH(LSFT(x)) +#define RALT(x) RIGH(LALT(x)) +#define RGUI(x) RIGH(LGUI(x)) + #define LOPT(x) LALT(x) #define LCMD(x) LGUI(x) #define LWIN(x) LGUI(x) @@ -59,14 +72,20 @@ #define ROPT(x) RALT(x) #define RCMD(x) RGUI(x) +#define CS(x) C(SW(x)) +#define AS(x) A(SW(x)) +#define GS(x) G(SW(x)) + #define C(x) LCTL(x) #define S(x) LSFT(x) #define A(x) LALT(x) #define G(x) LGUI(x) -#define CS(x) C(SW(x)) -#define AS(x) A(SW(x)) -#define GS(x) G(SW(x)) +enum { + S_CONSUMER, + S_MOUSE, + S_SYSTEM +}; enum { B_SPECIAL_SEL = 6, @@ -76,8 +95,12 @@ enum { B_GUI, B_RIGHT, B_TOGGLE, + B_REBASE, B_SWITCH, B_SPECIAL, - B_USER + B_USER, + B_MACRO_HOLD, + B_MACRO_RELEASE, + B_MACRO_DELAY /* >= 16 */ }; |
