aboutsummaryrefslogtreecommitdiffstats
path: root/src/keysym.h
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2022-12-19 19:29:41 +0100
committerLouis Burda <quent.burda@gmail.com>2022-12-19 19:29:41 +0100
commit878eb23b8394109aeb32cd505f79b96c74ec97f6 (patch)
treeed5aa20a4018fcecd0d7f922d66c92633822117c /src/keysym.h
parentd7c506450be613d6575649218fbcc90a4fabd150 (diff)
downloadsxkbd-878eb23b8394109aeb32cd505f79b96c74ec97f6.tar.gz
sxkbd-878eb23b8394109aeb32cd505f79b96c74ec97f6.zip
Add special hid functionality, consumer control working
Diffstat (limited to 'src/keysym.h')
-rw-r--r--src/keysym.h32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/keysym.h b/src/keysym.h
index 7737284..79dce3a 100644
--- a/src/keysym.h
+++ b/src/keysym.h
@@ -1,21 +1,28 @@
#pragma once
-#include "keycode.h"
-
#define XXXXXXX KC_NO
#define _______ KC_TRNS
#define MASK(hi, lo) ((1U << (hi)) - (1U << (lo)))
#define IS_KC(x) (!((x) & ~MASK(B_TOGGLE, 0)))
-#define IS_CTRL(x) ((x) & (1 << B_CTRL))
-#define IS_SHIFT(x) ((x) & (1 << B_SHIFT))
-#define IS_ALT(x) ((x) & (1 << B_ALT))
-#define IS_GUI(x) ((x) & (1 << B_GUI))
-#define IS_RIGHT(x) ((x) & (1 << B_RIGHT))
-#define IS_TOGGLE(x) ((x) & (1 << B_TOGGLE))
-#define IS_SWITCH(x) ((x) & (1 << B_SWITCH))
-#define IS_USER(x) ((x) & (1 << B_USER))
+#define IS_CTRL(x) ((x) & (1U << B_CTRL))
+#define IS_SHIFT(x) ((x) & (1U << B_SHIFT))
+#define IS_ALT(x) ((x) & (1U << B_ALT))
+#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_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) ((x) & (KEYSYM_MOUSE_MASK))
+#define IS_SYSTEM(x) ((x) & (KEYSYM_SYSTEM_MASK))
+#define IS_CONSUMER(x) ((x) & (KEYSYM_CONSUMER_MASK))
#define IS_LEFT_CTRL(x) (IS_CTRL(x) && !IS_RIGHT(x))
#define IS_RIGHT_CTRL(x) (IS_CTRL(x) && IS_RIGHT(x))
@@ -26,7 +33,7 @@
#define IS_LEFT_GUI(x) (IS_GUI(x) && !IS_RIGHT(x))
#define IS_RIGHT_GUI(x) (IS_GUI(x) && IS_RIGHT(x))
-#define IS_MOD(x) ((x) & MASK(B_TOGGLE, 8))
+#define IS_MOD(x) ((x) & MASK(B_TOGGLE, B_CTRL))
#define TO_KC(x) ((x) & 0xFF)
#define TO_SYM(x) ((x) & 0xFF)
@@ -58,9 +65,11 @@
#define G(x) LGUI(x)
#define CS(x) C(SW(x))
+#define AS(x) A(SW(x))
#define GS(x) G(SW(x))
enum {
+ B_SPECIAL_SEL = 6,
B_CTRL = 8,
B_SHIFT,
B_ALT,
@@ -68,6 +77,7 @@ enum {
B_RIGHT,
B_TOGGLE,
B_SWITCH,
+ B_SPECIAL,
B_USER
};