lighting_map.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. // Copyright 2026 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. /*******************************************************************************
  4. 88888888888 888 d8b .d888 d8b 888 d8b
  5. 888 888 Y8P d88P" Y8P 888 Y8P
  6. 888 888 888 888
  7. 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
  8. 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
  9. 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
  10. 888 888 888 888 X88 888 888 888 Y8b. 888 X88
  11. 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
  12. 888 888
  13. 888 888
  14. 888 888
  15. .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
  16. d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
  17. 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
  18. Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
  19. "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
  20. 888
  21. Y8b d88P
  22. "Y88P"
  23. *******************************************************************************/
  24. #pragma once
  25. // clang-format off
  26. enum { ENABLED_LED_MATRIX_EFFECTS = 0
  27. | (1ULL << 0x00)
  28. #ifdef ENABLE_LED_MATRIX_ALPHAS_MODS
  29. | (1ULL << 0x01)
  30. #endif
  31. #ifdef ENABLE_LED_MATRIX_BREATHING
  32. | (1ULL << 0x02)
  33. #endif
  34. #ifdef ENABLE_LED_MATRIX_BAND
  35. | (1ULL << 0x03)
  36. #endif
  37. #ifdef ENABLE_LED_MATRIX_BAND_PINWHEEL
  38. | (1ULL << 0x04)
  39. #endif
  40. #ifdef ENABLE_LED_MATRIX_BAND_SPIRAL
  41. | (1ULL << 0x05)
  42. #endif
  43. #ifdef ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
  44. | (1ULL << 0x06)
  45. #endif
  46. #ifdef ENABLE_LED_MATRIX_CYCLE_UP_DOWN
  47. | (1ULL << 0x07)
  48. #endif
  49. #ifdef ENABLE_LED_MATRIX_CYCLE_OUT_IN
  50. | (1ULL << 0x08)
  51. #endif
  52. #ifdef ENABLE_LED_MATRIX_DUAL_BEACON
  53. | (1ULL << 0x09)
  54. #endif
  55. #ifdef ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
  56. | (1ULL << 0x0A)
  57. #endif
  58. #ifdef ENABLE_LED_MATRIX_WAVE_UP_DOWN
  59. | (1ULL << 0x0B)
  60. #endif
  61. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  62. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
  63. | (1ULL << 0x0C)
  64. #endif
  65. #endif
  66. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  67. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
  68. | (1ULL << 0x0D)
  69. #endif
  70. #endif
  71. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  72. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
  73. | (1ULL << 0x0E)
  74. #endif
  75. #endif
  76. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  77. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
  78. | (1ULL << 0x0F)
  79. #endif
  80. #endif
  81. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  82. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
  83. | (1ULL << 0x10)
  84. #endif
  85. #endif
  86. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  87. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
  88. | (1ULL << 0x11)
  89. #endif
  90. #endif
  91. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  92. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
  93. | (1ULL << 0x12)
  94. #endif
  95. #endif
  96. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  97. #ifdef ENABLE_LED_MATRIX_SOLID_SPLASH
  98. | (1ULL << 0x13)
  99. #endif
  100. #endif
  101. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  102. #ifdef ENABLE_LED_MATRIX_SOLID_MULTISPLASH
  103. | (1ULL << 0x14)
  104. #endif
  105. #endif
  106. };
  107. static const uint8_t led_matrix_effect_map[][2] PROGMEM = {
  108. { 0x00, LED_MATRIX_SOLID},
  109. #ifdef ENABLE_LED_MATRIX_ALPHAS_MODS
  110. { 0x01, LED_MATRIX_ALPHAS_MODS},
  111. #endif
  112. #ifdef ENABLE_LED_MATRIX_BREATHING
  113. { 0x02, LED_MATRIX_BREATHING},
  114. #endif
  115. #ifdef ENABLE_LED_MATRIX_BAND
  116. { 0x03, LED_MATRIX_BAND},
  117. #endif
  118. #ifdef ENABLE_LED_MATRIX_BAND_PINWHEEL
  119. { 0x04, LED_MATRIX_BAND_PINWHEEL},
  120. #endif
  121. #ifdef ENABLE_LED_MATRIX_BAND_SPIRAL
  122. { 0x05, LED_MATRIX_BAND_SPIRAL},
  123. #endif
  124. #ifdef ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
  125. { 0x06, LED_MATRIX_CYCLE_LEFT_RIGHT},
  126. #endif
  127. #ifdef ENABLE_LED_MATRIX_CYCLE_UP_DOWN
  128. { 0x07, LED_MATRIX_CYCLE_UP_DOWN},
  129. #endif
  130. #ifdef ENABLE_LED_MATRIX_CYCLE_OUT_IN
  131. { 0x08, LED_MATRIX_CYCLE_OUT_IN},
  132. #endif
  133. #ifdef ENABLE_LED_MATRIX_DUAL_BEACON
  134. { 0x09, LED_MATRIX_DUAL_BEACON},
  135. #endif
  136. #ifdef ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
  137. { 0x0A, LED_MATRIX_WAVE_LEFT_RIGHT},
  138. #endif
  139. #ifdef ENABLE_LED_MATRIX_WAVE_UP_DOWN
  140. { 0x0B, LED_MATRIX_WAVE_UP_DOWN},
  141. #endif
  142. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  143. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
  144. { 0x0C, LED_MATRIX_SOLID_REACTIVE_SIMPLE},
  145. #endif
  146. #endif
  147. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  148. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
  149. { 0x0D, LED_MATRIX_SOLID_REACTIVE_WIDE},
  150. #endif
  151. #endif
  152. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  153. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
  154. { 0x0E, LED_MATRIX_SOLID_REACTIVE_MULTIWIDE},
  155. #endif
  156. #endif
  157. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  158. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
  159. { 0x0F, LED_MATRIX_SOLID_REACTIVE_CROSS},
  160. #endif
  161. #endif
  162. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  163. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
  164. { 0x10, LED_MATRIX_SOLID_REACTIVE_MULTICROSS},
  165. #endif
  166. #endif
  167. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  168. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
  169. { 0x11, LED_MATRIX_SOLID_REACTIVE_NEXUS},
  170. #endif
  171. #endif
  172. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  173. #ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
  174. { 0x12, LED_MATRIX_SOLID_REACTIVE_MULTINEXUS},
  175. #endif
  176. #endif
  177. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  178. #ifdef ENABLE_LED_MATRIX_SOLID_SPLASH
  179. { 0x13, LED_MATRIX_SOLID_SPLASH},
  180. #endif
  181. #endif
  182. #ifdef LED_MATRIX_KEYREACTIVE_ENABLED
  183. #ifdef ENABLE_LED_MATRIX_SOLID_MULTISPLASH
  184. { 0x14, LED_MATRIX_SOLID_MULTISPLASH},
  185. #endif
  186. #endif
  187. };
  188. uint8_t led_matrix_effect_to_id(uint8_t val) {
  189. for(uint8_t i = 0; i < ARRAY_SIZE(led_matrix_effect_map); i++) {
  190. if (pgm_read_byte(&led_matrix_effect_map[i][1]) == val)
  191. return pgm_read_byte(&led_matrix_effect_map[i][0]);
  192. }
  193. return 0xFF;
  194. }
  195. uint8_t led_matrix_id_to_effect(uint8_t val) {
  196. for(uint8_t i = 0; i < ARRAY_SIZE(led_matrix_effect_map); i++) {
  197. if (pgm_read_byte(&led_matrix_effect_map[i][0]) == val)
  198. return pgm_read_byte(&led_matrix_effect_map[i][1]);
  199. }
  200. return 0xFF;
  201. }