keymap.c 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /* Copyright 2021 3araht
  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 QMK_KEYBOARD_H
  17. // Defines names for use in layer keycodes and the keymap
  18. enum layer_names {
  19. #ifndef PEDAL_NORMALLY_CLOSED
  20. _OPEN,
  21. #endif
  22. _CLOSE,
  23. #ifdef PEDAL_NORMALLY_CLOSED
  24. _OPEN,
  25. #endif
  26. _MISC,
  27. _FN
  28. };
  29. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  30. [_OPEN] = LAYOUT(
  31. MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
  32. MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1,
  33. MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP,
  34. MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1,
  35. MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
  36. MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE,
  37. MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU,
  38. MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
  39. TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
  40. MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
  41. MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4
  42. ),
  43. [_CLOSE] = LAYOUT(
  44. MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3,
  45. MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1,
  46. MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP,
  47. MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1,
  48. MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
  49. MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE,
  50. MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU,
  51. MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
  52. TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
  53. MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
  54. MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4
  55. ),
  56. [_MISC] = LAYOUT(
  57. _______, _______, _______, _______, _______,
  58. _______, _______, _______, _______, _______, _______, _______,
  59. _______, _______, _______, _______, _______, _______, _______,
  60. _______, _______, _______, _______, _______, _______, _______,
  61. _______, _______, _______, _______, _______, _______, _______, _______,
  62. _______, _______, _______, _______, _______, _______,
  63. _______, _______, _______, _______, _______, _______, _______,
  64. _______, _______, _______, _______, _______, _______,
  65. _______, _______, _______, _______, _______, _______, _______, _______,
  66. _______, _______, _______, _______, _______, _______, _______, _______,
  67. _______, _______, _______, _______, _______, _______, _______, _______, _______
  68. ),
  69. [_FN] = LAYOUT(
  70. DF_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  71. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  72. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  73. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  74. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  75. _______, MI_OCTD, MI_OCTU, MI_VELD, MI_VELU, _______,
  76. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD,
  77. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  78. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  79. RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI,
  80. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD, EEP_RST, RGB_TOG
  81. )
  82. };
  83. void my_init(void){
  84. // Set octave to MI_OCT_0
  85. midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
  86. // avoid using 127 since it is used as a special number in some sound sources.
  87. midi_config.velocity = MIDI_INITIAL_VELOCITY;
  88. }
  89. void eeconfig_init_user(void) { // EEPROM is getting reset!
  90. midi_init();
  91. my_init();
  92. #ifdef RGB_MATRIX_ENABLE
  93. rgb_matrix_enable();
  94. rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
  95. rgb_matrix_sethsv(HSV_BLUE);
  96. rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE);
  97. // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
  98. #endif
  99. }
  100. void keyboard_post_init_user(void) {
  101. my_init();
  102. };
  103. #ifdef RGB_MATRIX_ENABLE
  104. void rgb_matrix_indicators_user(void) {
  105. if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
  106. uint8_t layer = get_highest_layer(layer_state);
  107. switch (layer) {
  108. case _CLOSE:
  109. // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy.
  110. // Close state indicator
  111. rgb_matrix_set_color( 0, RGB_DARKWHITE); // oc
  112. break;
  113. case _FN:
  114. // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy.
  115. rgb_matrix_set_color(14, RGB_DARKYELLOW); // MI_OCTD
  116. rgb_matrix_set_color(25, RGB_DARKGREEN); // MI_OCTU
  117. rgb_matrix_set_color(14, RGB_DARKYELLOW); // MI_VELD
  118. rgb_matrix_set_color(25, RGB_DARKGREEN); // MI_VELU
  119. rgb_matrix_set_color( 6, RGB_DARKBLUE); // RGB_SAD
  120. rgb_matrix_set_color( 9, RGB_DARKBLUE); // RGB_SAI
  121. rgb_matrix_set_color(18, RGB_DARKBLUE); // RGB_HUD
  122. rgb_matrix_set_color(21, RGB_DARKBLUE); // RGB_HUI
  123. rgb_matrix_set_color(29, RGB_DARKBLUE); // RGB_SPD
  124. rgb_matrix_set_color(32, RGB_DARKBLUE); // RGB_SPI
  125. rgb_matrix_set_color(36, RGB_DARKBLUE); // RGB_VAD
  126. rgb_matrix_set_color(39, RGB_DARKBLUE); // RGB_VAI
  127. rgb_matrix_set_color(31, RGB_DARKBLUE); // RGB_RMOD
  128. rgb_matrix_set_color(37, RGB_DARKBLUE); // RGB_MOD
  129. rgb_matrix_set_color(38, RGB_DARKPINK); // EEP_RST
  130. rgb_matrix_set_color(40, RGB_DARKRED); // RGB_TOG
  131. rgb_matrix_set_color(41, RGB_DARKORANGE); // _FN
  132. break;
  133. }
  134. }
  135. }
  136. #endif