logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

switches.h (7947B)


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