keysym.h (3039B)
1 #pragma once 2 3 #define XXXXXXX KC_NO 4 #define _______ KC_TRNS 5 6 #define MASK(hi, lo) ((1U << (hi)) - (1U << (lo))) 7 8 #define IS_KC(x) (!((x) & ~MASK(B_TOGGLE, 0))) 9 #define IS_CTRL(x) ((x) & (1U << B_CTRL)) 10 #define IS_SHIFT(x) ((x) & (1U << B_SHIFT)) 11 #define IS_ALT(x) ((x) & (1U << B_ALT)) 12 #define IS_GUI(x) ((x) & (1U << B_GUI)) 13 #define IS_RIGHT(x) ((x) & (1U << B_RIGHT)) 14 #define IS_TOGGLE(x) ((x) & (1U << B_TOGGLE)) 15 #define IS_REBASE(x) ((x) & (1U << B_REBASE)) 16 #define IS_SWITCH(x) ((x) & (1U << B_SWITCH)) 17 #define IS_SPECIAL(x) ((x) & (1U << B_SPECIAL)) 18 #define IS_USER(x) ((x) & (1U << B_USER)) 19 20 #define IS_MOUSE(x) (IS_SPECIAL(x) && (TO_SPECIAL(x) == S_MOUSE)) 21 #define IS_SYSTEM(x) (IS_SPECIAL(x) && (TO_SPECIAL(x) == S_SYSTEM)) 22 #define IS_CONSUMER(x) (IS_SPECIAL(x) && (TO_SPECIAL(x) == S_CONSUMER)) 23 24 #define IS_MACRO_HOLD(x) ((x) & (1U << B_MACRO_HOLD)) 25 #define IS_MACRO_RELEASE(x) ((x) & (1U << B_MACRO_RELEASE)) 26 #define IS_MACRO_DELAY(x) ((x) & (1U << B_MACRO_DELAY)) 27 #define IS_MACRO_PRESS(x) (!IS_MACRO_HOLD(x) && !IS_MACRO_RELEASE(x) \ 28 && !IS_MACRO_DELAY(x)) 29 30 #define IS_LEFT_CTRL(x) (IS_CTRL(x) && !IS_RIGHT(x)) 31 #define IS_RIGHT_CTRL(x) (IS_CTRL(x) && IS_RIGHT(x)) 32 #define IS_LEFT_SHIFT(x) (IS_SHIFT(x) && !IS_RIGHT(x)) 33 #define IS_RIGHT_SHIFT(x) (IS_SHIFT(x) && IS_RIGHT(x)) 34 #define IS_LEFT_ALT(x) (IS_ALT(x) && !IS_RIGHT(x)) 35 #define IS_RIGHT_ALT(x) (IS_ALT(x) && IS_RIGHT(x)) 36 #define IS_LEFT_GUI(x) (IS_GUI(x) && !IS_RIGHT(x)) 37 #define IS_RIGHT_GUI(x) (IS_GUI(x) && IS_RIGHT(x)) 38 39 #define IS_MOD(x) ((x) & MASK(B_TOGGLE, B_CTRL)) 40 41 #define TO_SPECIAL(x) (((x) >> B_SPECIAL_SEL) & 0b11) 42 #define TO_KC(x) ((x) & 0xFF) 43 #define TO_USER(x) ((x) & 0xFF) 44 #define TO_LAYER(x) ((x) & 0xFF) 45 #define TO_SYM(x) ((x) & 0xFFFF) 46 #define TO_DELAY(x) ((x) & 0xFFFF) 47 48 #define SPECIAL(x, g) ((x) | (1U << B_SPECIAL) | ((g) << B_SPECIAL_SEL)) 49 50 #define LCTL(x) ((x) | (1 << B_CTRL)) 51 #define LSFT(x) ((x) | (1 << B_SHIFT)) 52 #define LALT(x) ((x) | (1 << B_ALT)) 53 #define LGUI(x) ((x) | (1 << B_GUI)) 54 #define RIGH(x) ((x) | (1 << B_RIGHT)) 55 56 #define HOLD(x) ((x) | (1 << B_MACRO_HOLD)) 57 #define RELEASE(x) ((x) | (1 << B_MACRO_RELEASE)) 58 #define DELAY(x) ((x) | (1 << B_MACRO_DELAY)) 59 60 #define SW(x) ((x) | (1 << B_SWITCH)) 61 #define TO(x) ((x) | (1 << B_TOGGLE)) 62 #define RB(x) ((x) | (1 << B_REBASE)) 63 #define SX(x) ((x) | (1 << B_USER)) 64 65 #define RCTL(x) RIGH(LCTL(x)) 66 #define RSFT(x) RIGH(LSFT(x)) 67 #define RALT(x) RIGH(LALT(x)) 68 #define RGUI(x) RIGH(LGUI(x)) 69 70 #define LOPT(x) LALT(x) 71 #define LCMD(x) LGUI(x) 72 #define LWIN(x) LGUI(x) 73 #define ALGR(x) RALT(x) 74 #define ROPT(x) RALT(x) 75 #define RCMD(x) RGUI(x) 76 77 #define CS(x) C(SW(x)) 78 #define AS(x) A(SW(x)) 79 #define GS(x) G(SW(x)) 80 81 #define C(x) LCTL(x) 82 #define S(x) LSFT(x) 83 #define A(x) LALT(x) 84 #define G(x) LGUI(x) 85 86 enum { 87 S_CONSUMER, 88 S_MOUSE, 89 S_SYSTEM 90 }; 91 92 enum { 93 B_SPECIAL_SEL = 6, 94 B_CTRL = 8, 95 B_SHIFT, 96 B_ALT, 97 B_GUI, 98 B_RIGHT, 99 B_TOGGLE, 100 B_REBASE, 101 B_SWITCH, 102 B_SPECIAL, 103 B_USER, 104 B_MACRO_HOLD, 105 B_MACRO_RELEASE, 106 B_MACRO_DELAY /* >= 16 */ 107 }; 108