aboutsummaryrefslogtreecommitdiffstats
path: root/src/keysym.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/keysym.h')
-rw-r--r--src/keysym.h55
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 */
};