]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/1upkeyboards/sweet16/keymaps/switchtester/switches.h
[Keyboard] Add QMK configurator JSON for Alice PCB (#6397)
[qmk_firmware.git] / keyboards / 1upkeyboards / sweet16 / keymaps / switchtester / switches.h
1 #pragma once
2
3 struct mechswitch
4 {
5   unsigned int brand: 4;
6   unsigned int variant: 4;
7   unsigned int color: 5;
8 };
9
10 #define MAX_SWITCH_NAME_LENGTH 256
11
12 #define BRAND_KAILH     1
13 #define BRAND_KAILH_LOW 2
14 #define BRAND_GATERON   3
15 #define BRAND_CHERRY_MX 4
16 #define BRAND_CHERRY_ML 5
17 #define BRAND_OUTEMU    6
18 #define BRAND_GREETECH  7
19 #define BRAND_VARMILO   8
20 #define BRAND_MOD       9
21 #define BRAND_HAKO      10
22
23 #define COLOR_NO 0
24 #define COLOR_WHITE 1
25 #define COLOR_BLACK 2
26 #define COLOR_BLUE 3
27 #define COLOR_RED 4
28 #define COLOR_YELLOW 5
29 #define COLOR_BROWN 6
30 #define COLOR_GREEN 7
31 #define COLOR_CLEAR 8
32 #define COLOR_SILVER 9
33 #define COLOR_NATURE_WHITE 10
34 #define COLOR_GREY 11
35 #define COLOR_JADE 12
36 #define COLOR_NAVY 13
37 #define COLOR_BURNT_ORANGE 14
38 #define COLOR_PALE_BLUE 15
39 #define COLOR_DARK_YELLOW 16
40 #define COLOR_GOLD 17
41 #define COLOR_CHOCOLATE_WHITE 18
42 #define COLOR_BURGUNDY 19
43 #define COLOR_PURPLE 20
44 #define COLOR_LIGHT_GREEN 21
45 #define COLOR_TRUE 22
46 #define COLOR_BERRY 23
47 #define COLOR_PLUM 24
48 #define COLOR_SAGE 25
49 #define COLOR_VIOLET 26
50 #define COLOR_L 27
51 #define COLOR_M 28
52 #define COLOR_H 29
53 #define COLOR_SH 30
54
55 #define VARIANT_NO          0
56 #define VARIANT_BOX         1
57 #define VARIANT_BOX_THICK   2
58 #define VARIANT_BOX_HEAVY   3
59 #define VARIANT_SILENT      4
60 #define VARIANT_TACTILE     5
61 #define VARIANT_LINEAR      6
62 #define VARIANT_SPEED       7
63 #define VARIANT_SPEED_HEAVY 8
64 #define VARIANT_SPEED_CLICK_THICK 9
65 #define VARIANT_PRO         10
66 #define VARIANT_PRO_HEAVY   11
67 #define VARIANT_ROYAL       12
68 #define VARIANT_CLICK_THICK 13
69
70 #define CHERRY_MX_BLUE {BRAND_CHERRY_MX, VARIANT_NO, COLOR_BLUE}
71 #define CHERRY_MX_RED {BRAND_CHERRY_MX, VARIANT_NO, COLOR_RED}
72 #define CHERRY_MX_BROWN {BRAND_CHERRY_MX, VARIANT_NO, COLOR_BROWN}
73 #define CHERRY_MX_BLACK {BRAND_CHERRY_MX, VARIANT_NO, COLOR_BLACK}
74 #define CHERRY_MX_GREEN {BRAND_CHERRY_MX, VARIANT_NO, COLOR_GREEN}
75 #define CHERRY_MX_CLEAR {BRAND_CHERRY_MX, VARIANT_NO, COLOR_CLEAR}
76 #define CHERRY_MX_WHITE {BRAND_CHERRY_MX, VARIANT_NO, COLOR_WHITE}
77 #define CHERRY_MX_SILVER {BRAND_CHERRY_MX, VARIANT_NO, COLOR_SILVER}
78 #define CHERRY_MX_NATURE_WHITE {BRAND_CHERRY_MX, VARIANT_NO, COLOR_NATURE_WHITE}
79 #define CHERRY_MX_SILENT_BLACK {BRAND_CHERRY_MX, VARIANT_SILENT, COLOR_BLACK}
80 #define CHERRY_MX_SILENT_RED {BRAND_CHERRY_MX, VARIANT_SILENT, COLOR_RED}
81 #define CHERRY_MX_TACTILE_BLACK {BRAND_CHERRY_MX, VARIANT_SILENT, COLOR_GREY}
82 #define CHERRY_MX_LINEAR_BLACK {BRAND_CHERRY_MX, VARIANT_LINEAR, COLOR_GREY}
83
84 #define CHERRY_ML {BRAND_CHERRY_ML, VARIANT_NO, COLOR_NO}
85
86 #define GATERON_BLUE {BRAND_GATERON, VARIANT_NO, COLOR_BLUE}
87 #define GATERON_BROWN {BRAND_GATERON, VARIANT_NO, COLOR_BROWN}
88 #define GATERON_BLACK {BRAND_GATERON, VARIANT_NO, COLOR_BLACK}
89 #define GATERON_RED {BRAND_GATERON, VARIANT_NO, COLOR_RED}
90 #define GATERON_CLEAR {BRAND_GATERON, VARIANT_NO, COLOR_CLEAR}
91 #define GATERON_GREEN {BRAND_GATERON, VARIANT_NO, COLOR_GREEN}
92 #define GATERON_YELLOW {BRAND_GATERON, VARIANT_NO, COLOR_YELLOW}
93
94 #define GATERON_SILENT_CLEAR {BRAND_GATERON, VARIANT_SILENT, COLOR_CLEAR}
95 #define GATERON_SILENT_RED {BRAND_GATERON, VARIANT_SILENT, COLOR_RED}
96 #define GATERON_SILENT_YELLOW {BRAND_GATERON, VARIANT_SILENT, COLOR_YELLOW}
97 #define GATERON_SILENT_BLACK {BRAND_GATERON, VARIANT_SILENT, COLOR_BLACK}
98 #define GATERON_SILENT_BROWN {BRAND_GATERON, VARIANT_SILENT, COLOR_BROWN}
99
100 #define GREETECH_BLUE {BRAND_GREETECH, VARIANT_NO, COLOR_BLUE}
101 #define GREETECH_BROWN {BRAND_GREETECH, VARIANT_NO, COLOR_BROWN}
102 #define GREETECH_BLACK {BRAND_GREETECH, VARIANT_NO, COLOR_BLACK}
103 #define GREETECH_RED {BRAND_GREETECH, VARIANT_NO, COLOR_RED}
104
105 #define OUTEMU_BLUE {BRAND_OUTEMU, VARIANT_NO, COLOR_BLUE}
106 #define OUTEMU_BROWN {BRAND_OUTEMU, VARIANT_NO, COLOR_BROWN}
107 #define OUTEMU_BLACK {BRAND_OUTEMU, VARIANT_NO, COLOR_BLACK}
108 #define OUTEMU_RED {BRAND_OUTEMU, VARIANT_NO, COLOR_RED}
109
110 #define KAILH_BLUE {BRAND_KAILH, VARIANT_NO, COLOR_BLUE}
111 #define KAILH_BROWN {BRAND_KAILH, VARIANT_NO, COLOR_BROWN}
112 #define KAILH_BLACK {BRAND_KAILH, VARIANT_NO, COLOR_BLACK}
113 #define KAILH_RED {BRAND_KAILH, VARIANT_NO, COLOR_RED}
114 #define KAILH_GREEN {BRAND_KAILH, VARIANT_NO, COLOR_GREEN}
115
116 #define KAILH_BOX_WHITE {BRAND_KAILH, VARIANT_BOX, COLOR_WHITE}
117 #define KAILH_BOX_RED {BRAND_KAILH, VARIANT_BOX, COLOR_RED}
118 #define KAILH_BOX_BLACK {BRAND_KAILH, VARIANT_BOX, COLOR_BLACK}
119 #define KAILH_BOX_BROWN {BRAND_KAILH, VARIANT_BOX, COLOR_BROWN}
120 #define KAILH_BOX_ROYAL {BRAND_KAILH, VARIANT_BOX, COLOR_ROYAL}
121
122 #define KAILH_BOX_THICK_JADE {BRAND_KAILH, VARIANT_BOX_THICK, COLOR_JADE}
123 #define KAILH_BOX_THICK_NAVY {BRAND_KAILH, VARIANT_BOX_THICK, COLOR_NAVY}
124 #define KAILH_BOX_HEAVY_BURNT_ORANGE {BRAND_KAILH, VARIANT_BOX_HEAVY, COLOR_BURNT_ORANGE}
125 #define KAILH_BOX_HEAVY_PALE_BLUE {BRAND_KAILH, VARIANT_BOX_HEAVY, COLOR_PALE_BLUE}
126 #define KAILH_BOX_HEAVY_DARK_YELLOW {BRAND_KAILH, VARIANT_BOX_HEAVY, COLOR_DARK_YELLOW}
127
128 #define KAILH_SPEED_BRONZE {BRAND_KAILH, VARIANT_SPEED, COLOR_BRONZE}
129 #define KAILH_SPEED_COPPER {BRAND_KAILH, VARIANT_SPEED, COLOR_COPPER}
130 #define KAILH_SPEED_GOLD {BRAND_KAILH, VARIANT_SPEED, COLOR_GOLD}
131 #define KAILH_SPEED_SILVER {BRAND_KAILH, VARIANT_SPEED, COLOR_SILVER}
132
133 #define KAILH_SPEED_HEAVY_BURNT_ORANGE {BRAND_KAILH, VARIANT_SPEED_HEAVY, COLOR_BURNT_ORANGE}
134 #define KAILH_SPEED_HEAVY_PALE_BLUE {BRAND_KAILH, VARIANT_SPEED_HEAVY, COLOR_PALE_BLUE}
135 #define KAILH_SPEED_HEAVY_DARK_YELLOW {BRAND_KAILH, VARIANT_SPEED_HEAVY, COLOR_DARK_YELLOW}
136
137 #define KAILH_SPEED_THICK_CLICK_NAVY {BRAND_KAILH, VARIANT_SPEED_CLICK_THICK, COLOR_NAVY}
138
139 #define KAILH_PRO_BURGUNDY {BRAND_KAILH, VARIANT_PRO, COLOR_BURGUNDY}
140 #define KAILH_PRO_PURPLE {BRAND_KAILH, VARIANT_PRO, COLOR_PURPLE}
141 #define KAILH_PRO_LIGHT_GREEN {BRAND_KAILH, VARIANT_PRO, COLOR_LIGHT_GREEN}
142
143 #define KAILH_PRO_HEAVY_BERRY {BRAND_KAILH, VARIANT_PRO_HEAVY, COLOR_BERRY}
144 #define KAILH_PRO_HEAVY_PLUM {BRAND_KAILH, VARIANT_PRO_HEAVY, COLOR_PLUM}
145 #define KAILH_PRO_GEAVY_SAGE {BRAND_KAILH, VARIANT_PRO_HEAVY, COLOR_SAGE}
146
147 #define KAILH_LOW_WHITE {BRAND_KAILH_LOW, VARIANT_NO, COLOR_WHITE}
148 #define KAILH_LOW_BROWN {BRAND_KAILH_LOW, VARIANT_NO, COLOR_BROWN}
149 #define KAILH_LOW_RED {BRAND_KAILH_LOW, VARIANT_NO, COLOR_RED}
150 #define KAILH_LOW_CHOCOLATE_WHITE {BRAND_KAILH_LOW, VARIANT_NO, COLOR_CHOCOLATE_WHITE}
151 #define KAILH_LOW_THICK_CLICK_NAVY {BRAND_KAILH_LOW, VARIANT_THICK_CLICK, COLOR_NAVY}
152 #define KAILH_LOW_THICK_CLICK_JADE {BRAND_KAILH_LOW, VARIANT_THICK_CLICK, COLOR_JADE}
153 #define KAILH_LOW_HEAVY_DARK_YELLOW {BRAND_KAILH_LOW, VARIANT_HEAVY, COLOR_DARK_YELLOW}
154 #define KAILH_LOW_HEAVY_BURNT_ORANGE {BRAND_KAILH_LOW, VARIANT_HEAVY, COLOR_BURNT_ORANGE}
155 #define KAILH_LOW_HEAVY_PALE_BLUE {BRAND_KAILH_LOW, VARIANT_HEAVY, COLOR_PALE_BLUE}
156
157 #define HAKO_ROYAL_CLEAR {BRAND_HAKO, VARIANT_ROYAL, COLOR_CLEAR}
158 #define HAKO_ROYAL_TRUE {BRAND_HAKO, VARIANT_ROYAL, COLOR_TRUE}
159
160 #define HAKO_CLEAR {BRAND_HAKO, VARIANT_NO, COLOR_CLEAR}
161 #define HAKO_TRUE {BRAND_HAKO, VARIANT_NO, COLOR_TRUE}
162 #define HAKO_VIOLET {BRAND_HAKO, VARIANT_NO, COLOR_VIOLET}
163
164 #define MOD_L_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_L}
165 #define MOD_M_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_M}
166 #define MOD_H_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_H}
167 #define MOD_SH_TACTILE {BRAND_MOD, VARIANT_TACTILE, COLOR_SH}
168
169 #define MOD_L_LINEAR {BRAND_MOD, VARIANT_LINEAR, COLOR_L}
170 #define MOD_M_LINEAR {BRAND_MOD, VARIANT_LINEAR, COLOR_M}
171 #define MOD_H_LINEAR {BRAND_MOD, VARIANT_LINEAR, COLOR_H}
172
173 #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
174 #define BYTE_TO_BINARY(byte)  \
175   (byte & 0x80 ? '1' : '0'), \
176   (byte & 0x40 ? '1' : '0'), \
177   (byte & 0x20 ? '1' : '0'), \
178   (byte & 0x10 ? '1' : '0'), \
179   (byte & 0x08 ? '1' : '0'), \
180   (byte & 0x04 ? '1' : '0'), \
181   (byte & 0x02 ? '1' : '0'), \
182   (byte & 0x01 ? '1' : '0') 
183
184
185 const char *brand_name(struct mechswitch ms);
186 const char *variant_name(struct mechswitch ms);
187 const char *color_name(struct mechswitch ms);
188 void switch_name(struct mechswitch ms, char *buf);
189 int bitfieldtoi(struct mechswitch ms);