switches.h (7947B)
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);