]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/butterstick/sten.h
[Keyboard] fixed pins for numpad_5x4 layout (#6311)
[qmk_firmware.git] / keyboards / butterstick / sten.h
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.
5 //
6 // Amen.
7
8 #include QMK_KEYBOARD_H
9 #include "mousekey.h"
10 #include "keymap.h"
11 #include "keymap_steno.h"
12 #include "wait.h"
13
14 extern size_t keymapsCount;                     // Total keymaps
15 extern uint32_t cChord;                         // Current Chord
16
17 // Function defs
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);
23
24 // Macros for use in keymap.c
25 void                    SEND(uint8_t kc);
26 void                    REPEAT(void);
27 void                    SET_STICKY(uint32_t);
28 void                    SWITCH_LAYER(int);
29 void                    CLICK_MOUSE(uint8_t);
30
31 // Keymap helper
32 #define P(chord, act) if (cChord == (chord)) { if (!lookup) {act;} return chord;}
33
34 // Shift to internal representation
35 // i.e) S(teno)R(ight)F
36 #define STN(n) (1L<<n)
37 enum ORDER { 
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
41 };
42
43 // Break it all out
44 #define FN      STN(SFN)
45 #define PWR     STN(SPWR)
46 #define ST1 STN(SST1)
47 #define ST2 STN(SST2)
48 #define ST3 STN(SST3)
49 #define ST4 STN(SST4)
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)
54
55 #define LSU STN(SLSU)
56 #define LSD STN(SLSD)
57 #define LFT STN(SLT)    // (L)e(F)t (T), preprocessor conflict
58 #define LK  STN(SLK)
59 #define LP  STN(SLP)
60 #define LW  STN(SLW)
61 #define LH  STN(SLH)
62 #define LR  STN(SLR)
63 #define LA  STN(SLA)
64 #define LO  STN(SLO)
65
66 #define RE  STN(SRE)
67 #define RU  STN(SRU)
68 #define RF  STN(SRF)
69 #define RR  STN(SRR)
70 #define RP  STN(SRP)
71 #define RB  STN(SRB)
72 #define RL  STN(SRL)
73 #define RG  STN(SRG)
74 #define RT  STN(SRT)
75 #define RS  STN(SRS)
76 #define RD  STN(SRD)
77 #define RZ  STN(SRZ)