1 // 2019, g Heavy Industries
2 // Blessed mother of Christ, please keep this readable
3 // and protect us from segfaults. For thine is the clock,
4 // the slave and the master. Until we return from main.
8 #include QMK_KEYBOARD_H
11 #include "keymap_steno.h"
14 extern size_t keymapsCount; // Total keymaps
15 extern uint32_t cChord; // Current Chord
18 void processChord(bool useFakeSteno);
19 uint32_t processQwerty(bool lookup);
20 uint32_t processFakeSteno(bool lookup);
21 void saveState(uint32_t cChord);
22 void restoreState(void);
24 // Macros for use in keymap.c
25 void SEND(uint8_t kc);
27 void SET_STICKY(uint32_t);
28 void SWITCH_LAYER(int);
29 void CLICK_MOUSE(uint8_t);
32 #define P(chord, act) if (cChord == (chord)) { if (!lookup) {act;} return chord;}
34 // Shift to internal representation
35 // i.e) S(teno)R(ight)F
36 #define STN(n) (1L<<n)
38 SFN = 0, SPWR, SST1, SST2, SST3, SST4, SNUML, SNUMR,
39 SLSU, SLSD, SLT, SLK, SLP, SLW, SLH, SLR, SLA, SLO,
40 SRE, SRU, SRF, SRR, SRP, SRB, SRL, SRG, SRT, SRS, SRD, SRZ, SRES1, SRES2
50 #define LNO STN(SNUML) // STN1-6
51 #define RNO STN(SNUMR) // STN7-C
52 #define RES1 STN(SRES1) // Use reserved for sticky state
53 #define RES2 STN(SRES2)
57 #define LFT STN(SLT) // (L)e(F)t (T), preprocessor conflict