qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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);