lighting_map.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  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_RGB_MATRIX_EFFECTS = 0
  27. | (1ULL << 0x00)
  28. #ifdef ENABLE_RGB_MATRIX_ALPHAS_MODS
  29. | (1ULL << 0x01)
  30. #endif
  31. #ifdef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
  32. | (1ULL << 0x02)
  33. #endif
  34. #ifdef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
  35. | (1ULL << 0x03)
  36. #endif
  37. #ifdef ENABLE_RGB_MATRIX_BREATHING
  38. | (1ULL << 0x04)
  39. #endif
  40. #ifdef ENABLE_RGB_MATRIX_BAND_SAT
  41. | (1ULL << 0x05)
  42. #endif
  43. #ifdef ENABLE_RGB_MATRIX_BAND_VAL
  44. | (1ULL << 0x06)
  45. #endif
  46. #ifdef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
  47. | (1ULL << 0x07)
  48. #endif
  49. #ifdef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
  50. | (1ULL << 0x08)
  51. #endif
  52. #ifdef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
  53. | (1ULL << 0x09)
  54. #endif
  55. #ifdef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
  56. | (1ULL << 0x0A)
  57. #endif
  58. #ifdef ENABLE_RGB_MATRIX_CYCLE_ALL
  59. | (1ULL << 0x0B)
  60. #endif
  61. #ifdef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
  62. | (1ULL << 0x0C)
  63. #endif
  64. #ifdef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
  65. | (1ULL << 0x0D)
  66. #endif
  67. #ifdef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
  68. | (1ULL << 0x0E)
  69. #endif
  70. #ifdef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
  71. | (1ULL << 0x0F)
  72. #endif
  73. #ifdef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
  74. | (1ULL << 0x10)
  75. #endif
  76. #ifdef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
  77. | (1ULL << 0x11)
  78. #endif
  79. #ifdef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
  80. | (1ULL << 0x12)
  81. #endif
  82. #ifdef ENABLE_RGB_MATRIX_DUAL_BEACON
  83. | (1ULL << 0x13)
  84. #endif
  85. #ifdef ENABLE_RGB_MATRIX_RAINBOW_BEACON
  86. | (1ULL << 0x14)
  87. #endif
  88. #ifdef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
  89. | (1ULL << 0x15)
  90. #endif
  91. #ifdef ENABLE_RGB_MATRIX_RAINDROPS
  92. | (1ULL << 0x16)
  93. #endif
  94. #ifdef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
  95. | (1ULL << 0x17)
  96. #endif
  97. #ifdef ENABLE_RGB_MATRIX_HUE_BREATHING
  98. | (1ULL << 0x18)
  99. #endif
  100. #ifdef ENABLE_RGB_MATRIX_HUE_PENDULUM
  101. | (1ULL << 0x19)
  102. #endif
  103. #ifdef ENABLE_RGB_MATRIX_HUE_WAVE
  104. | (1ULL << 0x1A)
  105. #endif
  106. #ifdef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
  107. | (1ULL << 0x1B)
  108. #endif
  109. #ifdef ENABLE_RGB_MATRIX_PIXEL_FLOW
  110. | (1ULL << 0x1C)
  111. #endif
  112. #ifdef ENABLE_RGB_MATRIX_PIXEL_RAIN
  113. | (1ULL << 0x1D)
  114. #endif
  115. #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
  116. #ifdef ENABLE_RGB_MATRIX_TYPING_HEATMAP
  117. | (1ULL << 0x1E)
  118. #endif
  119. #endif
  120. #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
  121. #ifdef ENABLE_RGB_MATRIX_DIGITAL_RAIN
  122. | (1ULL << 0x1F)
  123. #endif
  124. #endif
  125. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  126. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
  127. | (1ULL << 0x20)
  128. #endif
  129. #endif
  130. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  131. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE
  132. | (1ULL << 0x21)
  133. #endif
  134. #endif
  135. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  136. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
  137. | (1ULL << 0x22)
  138. #endif
  139. #endif
  140. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  141. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
  142. | (1ULL << 0x23)
  143. #endif
  144. #endif
  145. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  146. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
  147. | (1ULL << 0x24)
  148. #endif
  149. #endif
  150. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  151. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
  152. | (1ULL << 0x25)
  153. #endif
  154. #endif
  155. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  156. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
  157. | (1ULL << 0x26)
  158. #endif
  159. #endif
  160. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  161. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
  162. | (1ULL << 0x27)
  163. #endif
  164. #endif
  165. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  166. #ifdef ENABLE_RGB_MATRIX_SPLASH
  167. | (1ULL << 0x28)
  168. #endif
  169. #endif
  170. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  171. #ifdef ENABLE_RGB_MATRIX_MULTISPLASH
  172. | (1ULL << 0x29)
  173. #endif
  174. #endif
  175. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  176. #ifdef ENABLE_RGB_MATRIX_SOLID_SPLASH
  177. | (1ULL << 0x2A)
  178. #endif
  179. #endif
  180. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  181. #ifdef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
  182. | (1ULL << 0x2B)
  183. #endif
  184. #endif
  185. #ifdef ENABLE_RGB_MATRIX_FLOWER_BLOOMING
  186. | (1ULL << 0x2C)
  187. #endif
  188. #ifdef ENABLE_RGB_MATRIX_STARLIGHT
  189. | (1ULL << 0x2D)
  190. #endif
  191. #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT
  192. | (1ULL << 0x2E)
  193. #endif
  194. #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE
  195. | (1ULL << 0x2F)
  196. #endif
  197. #ifdef ENABLE_RGB_MATRIX_RIVERFLOW
  198. | (1ULL << 0x30)
  199. #endif
  200. };
  201. static const uint8_t rgb_matrix_effect_map[][2] PROGMEM = {
  202. { 0x00, RGB_MATRIX_SOLID_COLOR},
  203. #ifdef ENABLE_RGB_MATRIX_ALPHAS_MODS
  204. { 0x01, RGB_MATRIX_ALPHAS_MODS},
  205. #endif
  206. #ifdef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
  207. { 0x02, RGB_MATRIX_GRADIENT_UP_DOWN},
  208. #endif
  209. #ifdef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
  210. { 0x03, RGB_MATRIX_GRADIENT_LEFT_RIGHT},
  211. #endif
  212. #ifdef ENABLE_RGB_MATRIX_BREATHING
  213. { 0x04, RGB_MATRIX_BREATHING},
  214. #endif
  215. #ifdef ENABLE_RGB_MATRIX_BAND_SAT
  216. { 0x05, RGB_MATRIX_BAND_SAT},
  217. #endif
  218. #ifdef ENABLE_RGB_MATRIX_BAND_VAL
  219. { 0x06, RGB_MATRIX_BAND_VAL},
  220. #endif
  221. #ifdef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
  222. { 0x07, RGB_MATRIX_BAND_PINWHEEL_SAT},
  223. #endif
  224. #ifdef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
  225. { 0x08, RGB_MATRIX_BAND_PINWHEEL_VAL},
  226. #endif
  227. #ifdef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
  228. { 0x09, RGB_MATRIX_BAND_SPIRAL_SAT},
  229. #endif
  230. #ifdef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
  231. { 0x0A, RGB_MATRIX_BAND_SPIRAL_VAL},
  232. #endif
  233. #ifdef ENABLE_RGB_MATRIX_CYCLE_ALL
  234. { 0x0B, RGB_MATRIX_CYCLE_ALL},
  235. #endif
  236. #ifdef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
  237. { 0x0C, RGB_MATRIX_CYCLE_LEFT_RIGHT},
  238. #endif
  239. #ifdef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
  240. { 0x0D, RGB_MATRIX_CYCLE_UP_DOWN},
  241. #endif
  242. #ifdef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
  243. { 0x0E, RGB_MATRIX_CYCLE_OUT_IN},
  244. #endif
  245. #ifdef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
  246. { 0x0F, RGB_MATRIX_CYCLE_OUT_IN_DUAL},
  247. #endif
  248. #ifdef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
  249. { 0x10, RGB_MATRIX_RAINBOW_MOVING_CHEVRON},
  250. #endif
  251. #ifdef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
  252. { 0x11, RGB_MATRIX_CYCLE_PINWHEEL},
  253. #endif
  254. #ifdef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
  255. { 0x12, RGB_MATRIX_CYCLE_SPIRAL},
  256. #endif
  257. #ifdef ENABLE_RGB_MATRIX_DUAL_BEACON
  258. { 0x13, RGB_MATRIX_DUAL_BEACON},
  259. #endif
  260. #ifdef ENABLE_RGB_MATRIX_RAINBOW_BEACON
  261. { 0x14, RGB_MATRIX_RAINBOW_BEACON},
  262. #endif
  263. #ifdef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
  264. { 0x15, RGB_MATRIX_RAINBOW_PINWHEELS},
  265. #endif
  266. #ifdef ENABLE_RGB_MATRIX_RAINDROPS
  267. { 0x16, RGB_MATRIX_RAINDROPS},
  268. #endif
  269. #ifdef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
  270. { 0x17, RGB_MATRIX_JELLYBEAN_RAINDROPS},
  271. #endif
  272. #ifdef ENABLE_RGB_MATRIX_HUE_BREATHING
  273. { 0x18, RGB_MATRIX_HUE_BREATHING},
  274. #endif
  275. #ifdef ENABLE_RGB_MATRIX_HUE_PENDULUM
  276. { 0x19, RGB_MATRIX_HUE_PENDULUM},
  277. #endif
  278. #ifdef ENABLE_RGB_MATRIX_HUE_WAVE
  279. { 0x1A, RGB_MATRIX_HUE_WAVE},
  280. #endif
  281. #ifdef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
  282. { 0x1B, RGB_MATRIX_PIXEL_FRACTAL},
  283. #endif
  284. #ifdef ENABLE_RGB_MATRIX_PIXEL_FLOW
  285. { 0x1C, RGB_MATRIX_PIXEL_FLOW},
  286. #endif
  287. #ifdef ENABLE_RGB_MATRIX_PIXEL_RAIN
  288. { 0x1D, RGB_MATRIX_PIXEL_RAIN},
  289. #endif
  290. #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
  291. #ifdef ENABLE_RGB_MATRIX_TYPING_HEATMAP
  292. { 0x1E, RGB_MATRIX_TYPING_HEATMAP},
  293. #endif
  294. #endif
  295. #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
  296. #ifdef ENABLE_RGB_MATRIX_DIGITAL_RAIN
  297. { 0x1F, RGB_MATRIX_DIGITAL_RAIN},
  298. #endif
  299. #endif
  300. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  301. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
  302. { 0x20, RGB_MATRIX_SOLID_REACTIVE_SIMPLE},
  303. #endif
  304. #endif
  305. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  306. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE
  307. { 0x21, RGB_MATRIX_SOLID_REACTIVE},
  308. #endif
  309. #endif
  310. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  311. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
  312. { 0x22, RGB_MATRIX_SOLID_REACTIVE_WIDE},
  313. #endif
  314. #endif
  315. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  316. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
  317. { 0x23, RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE},
  318. #endif
  319. #endif
  320. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  321. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
  322. { 0x24, RGB_MATRIX_SOLID_REACTIVE_CROSS},
  323. #endif
  324. #endif
  325. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  326. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
  327. { 0x25, RGB_MATRIX_SOLID_REACTIVE_MULTICROSS},
  328. #endif
  329. #endif
  330. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  331. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
  332. { 0x26, RGB_MATRIX_SOLID_REACTIVE_NEXUS},
  333. #endif
  334. #endif
  335. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  336. #ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
  337. { 0x27, RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS},
  338. #endif
  339. #endif
  340. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  341. #ifdef ENABLE_RGB_MATRIX_SPLASH
  342. { 0x28, RGB_MATRIX_SPLASH},
  343. #endif
  344. #endif
  345. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  346. #ifdef ENABLE_RGB_MATRIX_MULTISPLASH
  347. { 0x29, RGB_MATRIX_MULTISPLASH},
  348. #endif
  349. #endif
  350. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  351. #ifdef ENABLE_RGB_MATRIX_SOLID_SPLASH
  352. { 0x2A, RGB_MATRIX_SOLID_SPLASH},
  353. #endif
  354. #endif
  355. #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
  356. #ifdef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
  357. { 0x2B, RGB_MATRIX_SOLID_MULTISPLASH},
  358. #endif
  359. #endif
  360. #ifdef ENABLE_RGB_MATRIX_FLOWER_BLOOMING
  361. { 0x2C, RGB_MATRIX_FLOWER_BLOOMING},
  362. #endif
  363. #ifdef ENABLE_RGB_MATRIX_STARLIGHT
  364. { 0x2D, RGB_MATRIX_STARLIGHT},
  365. #endif
  366. #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT
  367. { 0x2E, RGB_MATRIX_STARLIGHT_DUAL_SAT},
  368. #endif
  369. #ifdef ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE
  370. { 0x2F, RGB_MATRIX_STARLIGHT_DUAL_HUE},
  371. #endif
  372. #ifdef ENABLE_RGB_MATRIX_RIVERFLOW
  373. { 0x30, RGB_MATRIX_RIVERFLOW},
  374. #endif
  375. };
  376. uint8_t rgb_matrix_effect_to_id(uint8_t val) {
  377. for(uint8_t i = 0; i < ARRAY_SIZE(rgb_matrix_effect_map); i++) {
  378. if (pgm_read_byte(&rgb_matrix_effect_map[i][1]) == val)
  379. return pgm_read_byte(&rgb_matrix_effect_map[i][0]);
  380. }
  381. return 0xFF;
  382. }
  383. uint8_t rgb_matrix_id_to_effect(uint8_t val) {
  384. for(uint8_t i = 0; i < ARRAY_SIZE(rgb_matrix_effect_map); i++) {
  385. if (pgm_read_byte(&rgb_matrix_effect_map[i][0]) == val)
  386. return pgm_read_byte(&rgb_matrix_effect_map[i][1]);
  387. }
  388. return 0xFF;
  389. }