logo

qmk_firmware

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

ansi_encoder.c (6092B)


  1. /* Copyright 2022 @ Keychron (https://www.keychron.com)
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include "quantum.h"
  17. #ifdef RGB_MATRIX_ENABLE
  18. const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
  19. /* Refer to SNLED27351 manual for these locations
  20. * driver
  21. * | R location
  22. * | | G location
  23. * | | | B location
  24. * | | | | */
  25. {0, CB3_CA15, CB1_CA15, CB2_CA15}, // Esc
  26. {0, CB3_CA14, CB1_CA14, CB2_CA14}, // 1!
  27. {0, CB3_CA13, CB1_CA13, CB2_CA13}, // 2@
  28. {0, CB3_CA12, CB1_CA12, CB2_CA12}, // 3#
  29. {0, CB3_CA11, CB1_CA11, CB2_CA11}, // 4$
  30. {0, CB3_CA10, CB1_CA10, CB2_CA10}, // 5%
  31. {0, CB3_CA9, CB1_CA9, CB2_CA9}, // 6^
  32. {0, CB3_CA8, CB1_CA8, CB2_CA8}, // 7&
  33. {0, CB3_CA7, CB1_CA7, CB2_CA7}, // 8*
  34. {0, CB3_CA6, CB1_CA6, CB2_CA6}, // 9(
  35. {0, CB3_CA5, CB1_CA5, CB2_CA5}, // 0)
  36. {0, CB3_CA4, CB1_CA4, CB2_CA4}, // -_
  37. {0, CB3_CA3, CB1_CA3, CB2_CA3}, // =+
  38. {0, CB3_CA2, CB1_CA2, CB2_CA2}, // BackSpace
  39. {0, CB3_CA1, CB1_CA1, CB2_CA1}, // Delete
  40. {0, CB6_CA16, CB4_CA16, CB5_CA16}, // Macro2
  41. {0, CB6_CA15, CB4_CA15, CB5_CA15}, // Tab
  42. {0, CB6_CA14, CB4_CA14, CB5_CA14}, // Q
  43. {0, CB6_CA13, CB4_CA13, CB5_CA13}, // W
  44. {0, CB6_CA12, CB4_CA12, CB5_CA12}, // E
  45. {0, CB6_CA11, CB4_CA11, CB5_CA11}, // R
  46. {0, CB6_CA10, CB4_CA10, CB5_CA10}, // T
  47. {0, CB6_CA9, CB4_CA9, CB5_CA9}, // Y
  48. {0, CB6_CA8, CB4_CA8, CB5_CA8}, // U
  49. {0, CB6_CA7, CB4_CA7, CB5_CA7}, // I
  50. {0, CB6_CA6, CB4_CA6, CB5_CA6}, // O
  51. {0, CB6_CA5, CB4_CA5, CB5_CA5}, // P
  52. {0, CB6_CA4, CB4_CA4, CB5_CA4}, // [{
  53. {0, CB6_CA3, CB4_CA3, CB5_CA3}, // ]}
  54. {0, CB6_CA2, CB4_CA2, CB5_CA2}, // |
  55. {0, CB6_CA1, CB4_CA1, CB5_CA1}, // PageUp
  56. {1, CB3_CA16, CB1_CA16, CB2_CA16}, // Macro3
  57. {1, CB3_CA15, CB1_CA15, CB2_CA15}, // CapsLock
  58. {1, CB3_CA14, CB1_CA14, CB2_CA14}, // A
  59. {1, CB3_CA13, CB1_CA13, CB2_CA13}, // S
  60. {1, CB3_CA12, CB1_CA12, CB2_CA12}, // D
  61. {1, CB3_CA11, CB1_CA11, CB2_CA11}, // F
  62. {1, CB3_CA10, CB1_CA10, CB2_CA10}, // G
  63. {1, CB3_CA9, CB1_CA9, CB2_CA9}, // H
  64. {1, CB3_CA8, CB1_CA8, CB2_CA8}, // J
  65. {1, CB3_CA7, CB1_CA7, CB2_CA7}, // K
  66. {1, CB3_CA6, CB1_CA6, CB2_CA6}, // L
  67. {1, CB3_CA5, CB1_CA5, CB2_CA5}, // ;:
  68. {1, CB3_CA4, CB1_CA4, CB2_CA4}, // '"
  69. {1, CB3_CA2, CB1_CA2, CB2_CA2}, // Enter
  70. {1, CB3_CA1, CB1_CA1, CB2_CA1}, // PageDown
  71. {1, CB9_CA16, CB7_CA16, CB8_CA16}, // Macro4
  72. {1, CB9_CA15, CB7_CA15, CB8_CA15}, // LeftShift
  73. {1, CB9_CA13, CB7_CA13, CB8_CA13}, // Z
  74. {1, CB9_CA12, CB7_CA12, CB8_CA12}, // X
  75. {1, CB9_CA11, CB7_CA11, CB8_CA11}, // C
  76. {1, CB9_CA10, CB7_CA10, CB8_CA10}, // V
  77. {1, CB9_CA9, CB7_CA9, CB8_CA9}, // B
  78. {1, CB9_CA8, CB7_CA8, CB8_CA8}, // N
  79. {1, CB9_CA7, CB7_CA7, CB8_CA7}, // M
  80. {1, CB9_CA6, CB7_CA6, CB8_CA6}, // ,<
  81. {1, CB9_CA5, CB7_CA5, CB8_CA5}, // .>
  82. {1, CB9_CA4, CB7_CA4, CB8_CA4}, // /?
  83. {1, CB9_CA3, CB7_CA3, CB8_CA3}, // RightShift
  84. {1, CB9_CA2, CB7_CA2, CB8_CA2}, // Up
  85. {1, CB9_CA1, CB7_CA1, CB8_CA1}, // Home
  86. {1, CB6_CA16, CB4_CA16, CB5_CA16}, // Macro5
  87. {1, CB6_CA15, CB4_CA15, CB5_CA15}, // LeftControl
  88. {1, CB6_CA14, CB4_CA14, CB5_CA14}, // LeftOption
  89. {1, CB6_CA13, CB4_CA13, CB5_CA13}, // LeftCommand
  90. {1, CB6_CA9, CB4_CA9, CB5_CA9}, // Space
  91. {1, CB6_CA6, CB4_CA6, CB5_CA6}, // RightCommand
  92. {1, CB6_CA5, CB4_CA5, CB5_CA5}, // Fn1
  93. {1, CB6_CA4, CB4_CA4, CB5_CA4}, // Fn2
  94. {1, CB6_CA3, CB4_CA3, CB5_CA3}, // Left
  95. {1, CB6_CA2, CB4_CA2, CB5_CA2}, // Down
  96. {1, CB6_CA1, CB4_CA1, CB5_CA1}, // Right
  97. };
  98. #define __ NO_LED
  99. led_config_t g_led_config = {
  100. {
  101. // Key Matrix to LED Index
  102. { __, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
  103. { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
  104. { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, __, 44, 45 },
  105. { 46, 47, __, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 },
  106. { 61, 62, 63, 64, __, __, __, 65, __, __, 66, 67, 68, 69, 70, 71 },
  107. },
  108. {
  109. // LED Index to Physical Position
  110. {20,0}, {33,0}, {47,0}, {60,0}, {73,0}, {86,0}, {99,0}, {112,0}, {125,0}, {138,0}, {151,0}, {164,0}, {177,0}, {197,0}, {224,0},
  111. {0,15}, {24,15}, {40,15}, {53,15}, {66,15}, {79,15}, {92,15}, {105,15}, {119,15}, {132,15}, {145,15}, {158,15}, {171,15}, {184,15}, {200,15}, {224,15},
  112. {0,30}, {25,30}, {43,30}, {56,30}, {69,30}, {83,30}, {96,30}, {109,30}, {122,30}, {135,30}, {148,30}, {161,30}, {174,30}, {195,30}, {224,30},
  113. {0,45}, {29,45}, {50,45}, {63,45}, {76,45}, {89,45}, {102,45}, {115,45}, {128,45}, {141,45}, {155,45}, {168,45}, {186,45}, {207,49}, {224,45},
  114. {0,60}, {22,60}, {38,60}, {55,60}, {104,60}, {151,60}, {164,60}, {177,60}, {194,64}, {207,64}, {220,64},
  115. },
  116. {
  117. // RGB LED Index to Flag
  118. 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
  119. 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
  120. 1, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
  121. 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
  122. 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
  123. }
  124. };
  125. #endif // RGB_MATRIX_ENABLE