]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/lfkeyboards/lfk87/lfk87.h
Add readme for "major" keyboards to eliminate more QMK Configurator errors (#2718)
[qmk_firmware.git] / keyboards / lfkeyboards / lfk87 / lfk87.h
1 #ifndef LFK87_H
2 #define LFK87_H
3
4 /* if the kb.h file exists (because we're running from qmkbuilder) include it */
5 #if __has_include("kb.h")
6 #include "kb.h"
7 #endif
8
9 #include "quantum.h"
10 #include "matrix.h"
11 #include <avr/sfr_defs.h>
12
13 #ifndef cbi
14 #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
15 #endif
16
17 #ifndef sbi
18 #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
19 #endif
20
21
22 typedef struct RGB_Color {
23     uint16_t red;
24     uint16_t green;
25     uint16_t blue;
26 } RGB_Color;
27
28 typedef struct Layer_Info {
29     uint32_t layer;
30     uint32_t mask;
31     RGB_Color color;
32 } Layer_Info;
33
34 extern const uint32_t layer_count;
35 extern const Layer_Info layer_info[];
36
37 enum action_functions {
38     LFK_CLEAR = 0,          // Resets all layers
39     LFK_ESC_TILDE,          // esc+lshift = ~
40     LFK_SET_DEFAULT_LAYER,  // changes and saves current base layer to eeprom
41     LFK_CLICK_TOGGLE,       // Adjusts click duration
42     LFK_CLICK_FREQ_HIGHER,  // Adjusts click frequency
43     LFK_CLICK_FREQ_LOWER,   // Adjusts click frequency
44     LFK_CLICK_TIME_LONGER,  // Adjusts click duration
45     LFK_CLICK_TIME_SHORTER, // Adjusts click duration
46     LFK_DEBUG_SETTINGS,     // prints LED and click settings to HID
47     LFK_LED_TEST,           // cycles through switch and RGB LEDs
48     LFK_PLAY_ONEUP
49 };
50
51 #define CLICK_HZ 500
52 #define CLICK_MS 2
53 #define CLICK_ENABLED 0
54
55 void reset_keyboard_kb(void);
56 void click(uint16_t freq, uint16_t duration);
57
58 #define k00 KC_NO
59 #ifdef LFK_TKL_REV_A
60     #ifndef LAYOUT
61         #define LAYOUT( \
62             k11,       k13, k14, k15, k16,    k17, k18, k19, k1a,     k1b, k1c, k1d, k1e,   k1f, k1g, k1h, \
63             k21,  k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d,        k2e,   k2f, k2g, k2h, \
64             k31,    k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,      k3e,   k3f, k3g, k3h, \
65             k41,     k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c,          k4d, \
66             k51,      k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c,              k5d,        k5g, \
67             k61,   k62,   k63,                 k67,             k6b,   k6c,   k6d,   k6e,   k6f, k6g, k6h  \
68         ) \
69         { \
70             {k11, k00, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h}, \
71             {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h}, \
72             {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g, k3h}, \
73             {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k00, k00, k00, k00}, \
74             {k51, k00, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k00, k00, k5g, k00}, \
75             {k61, k62, k63, k00, k00, k00, k67, k00, k00, k00, k6b, k6c, k6d, k6e, k6f, k6g, k6h}, \
76         }
77
78     #endif //!KEYMAP#endif
79     #ifndef LAYOUT_iso
80         #define LAYOUT_iso( \
81             k11,       k13, k14, k15, k16,    k17, k18, k19, k1a,     k1b, k1c, k1d, k1e,   k1f, k1g, k1h, \
82             k21,  k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d,        k2e,   k2f, k2g, k2h, \
83             k31,    k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,      k3e,   k3f, k3g, k3h, \
84             k41,     k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c,          k4d, \
85             k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c,              k5d,        k5g, \
86             k61,   k62,   k63,                 k67,             k6b,   k6c,   k6d,   k6e,   k6f, k6g, k6h  \
87         ) \
88         { \
89             {k11, k00, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h}, \
90             {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h}, \
91             {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g, k3h}, \
92             {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k00, k00, k00, k00}, \
93             {k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k00, k00, k5g, k00}, \
94             {k61, k62, k63, k00, k00, k00, k67, k00, k00, k00, k6b, k6c, k6d, k6e, k6f, k6g, k6h}, \
95         }
96     #endif //!ISO_KEYMAP
97 #else  // RevC+ keymaps
98     #ifndef LAYOUT
99         #define LAYOUT( \
100             k71,      k11, k12, k13, k14,      k15, k16, k17, k18,      k19, k1a, k1b, k1c,   k1e, k1f, k1g, \
101             k72, k73, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,           k2c,   k2e, k2f, k2g, \
102             k74,  k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c,          k3d,   k3e, k3f, k3g, \
103             k61,   k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b,              k4c, \
104             k62,    k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b,                  k5c,        k5f, \
105             k63,   k64,   k65,                 k67,               k6a,   k6b,   k6c,   k6d,   k6e, k6f, k6g  \
106         ) \
107         { \
108             {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k00, k1e, k1f, k1g}, \
109             {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k00, k2e, k2f, k2g}, \
110             {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g}, \
111             {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k00, k00, k00, k00}, \
112             {k00, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k00, k00, k5f, k00}, \
113             {k61, k62, k63, k64, k65, k00, k67, k00, k00, k6a, k6b, k6c, k6d, k6e, k6f, k6g}, \
114             {k71, k72, k73, k74, k00, k00, k00, k00, k00, k00, k00, k00, k00, k00, k00, k00}, \
115         }
116
117     #endif //!KEYMAP#endif
118     #ifndef LAYOUT_iso
119         #define LAYOUT_iso( \
120             k71,      k11, k12, k13, k14,      k15, k16, k17, k18,      k19, k1a, k1b, k1c,   k1e, k1f, k1g, \
121             k72, k73, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,           k2c,   k2e, k2f, k2g, \
122             k74,  k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c,          k3d,   k3e, k3f, k3g, \
123             k61,   k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b,              k4c, \
124             k62,  k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b,               k5c,        k5f, \
125             k63,   k64,   k65,                 k67,               k6a,   k6b,   k6c,   k6d,   k6e, k6f, k6g  \
126         ) \
127         { \
128             {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k00, k1e, k1f, k1g}, \
129             {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k00, k2e, k2f, k2g}, \
130             {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g}, \
131             {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k00, k00, k00, k00}, \
132             {k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k00, k00, k5f, k00}, \
133             {k61, k62, k63, k64, k65, k00, k67, k00, k00, k6a, k6b, k6c, k6d, k6e, k6f, k6g}, \
134             {k71, k72, k73, k74, k00, k00, k00, k00, k00, k00, k00, k00, k00, k00, k00, k00}, \
135         }
136     #endif //!LAYOUT_iso
137 #endif //Rev
138
139 #endif //LFK87_H