keymap.c 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include QMK_KEYBOARD_H
  2. #include "xulkal.h"
  3. #include "muse.h"
  4. #define EXPAND_LAYOUT(...) LAYOUT_preonic_grid(__VA_ARGS__)
  5. // Define your non-alpha grouping in this define's LAYOUT, and all your BASE_LAYERS will share the same mod/macro columns
  6. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  7. /* Qwerty Layout
  8. * ,------------------------------------------------. ,------------------------------------------------.
  9. * | GESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | BkSp |
  10. * |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
  11. * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
  12. * |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
  13. * |FN(CAPS)| A | S | D | F | G | ` | | ' | H | J | K | L | ; | Enter|
  14. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
  15. * | Sft[ | Z | X | C | V | B | RGB | |RGBRST| N | M | , | . | / | Sft] |
  16. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
  17. * | Ctrl | Win | LOWER| RAISE| Alt | Space|RGBRMOD| |RGBMOD| Space| Left | Up | Down | Right| Ctrl |
  18. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
  19. * | Space| DEL | | Enter| Space|
  20. * `-------------' `-------------'
  21. */
  22. [_QWERTY] = EXPAND_LAYOUT( \
  23. _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, \
  24. _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, \
  25. _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, \
  26. _________________QWERTY_L4_________________, _________________QWERTY_R4_________________, \
  27. _________________QWERTY_L5_________________, _________________QWERTY_R5_________________ \
  28. ),
  29. #ifndef GAMELAYER_DISABLE
  30. [_GAME] = EXPAND_LAYOUT( \
  31. ___________________GAME_L1_________________, ___________________GAME_R1_________________, \
  32. ___________________GAME_L2_________________, ___________________GAME_R2_________________, \
  33. ___________________GAME_L3_________________, ___________________GAME_R3_________________, \
  34. ___________________GAME_L4_________________, ___________________GAME_R4_________________, \
  35. ___________________GAME_L5_________________, ___________________GAME_R5_________________ \
  36. ),
  37. #endif
  38. [_LOWER] = EXPAND_LAYOUT( \
  39. __________________LOWER_L1_________________, __________________LOWER_R1_________________, \
  40. __________________LOWER_L2_________________, __________________LOWER_R2_________________, \
  41. __________________LOWER_L3_________________, __________________LOWER_R3_________________, \
  42. __________________LOWER_L4_________________, __________________LOWER_R4_________________, \
  43. __________________LOWER_L5_________________, __________________LOWER_R5_________________ \
  44. ),
  45. [_RAISE] = EXPAND_LAYOUT( \
  46. __________________RAISE_L1_________________, __________________RAISE_R1_________________, \
  47. __________________RAISE_L2_________________, __________________RAISE_R2_________________, \
  48. __________________RAISE_L3_________________, __________________RAISE_R3_________________, \
  49. __________________RAISE_L4_________________, __________________RAISE_R4_________________, \
  50. __________________RAISE_L5_________________, __________________RAISE_R5_________________ \
  51. ),
  52. #ifdef TRILAYER_ENABLED
  53. [_ADJUST] = EXPAND_LAYOUT( \
  54. _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, \
  55. _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, \
  56. _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, \
  57. _________________ADJUST_L4_________________, _________________ADJUST_R4_________________, \
  58. _________________ADJUST_L5_________________, _________________ADJUST_R5_________________ \
  59. ),
  60. #endif
  61. };
  62. bool muse_mode = false;
  63. uint8_t last_muse_note = 0;
  64. uint16_t muse_counter = 0;
  65. uint8_t muse_offset = 70;
  66. uint16_t muse_tempo = 50;
  67. bool encoder_update_user(uint8_t index, bool clockwise) {
  68. if (muse_mode) {
  69. if (IS_LAYER_ON(_RAISE)) {
  70. if (clockwise) {
  71. muse_offset++;
  72. } else {
  73. muse_offset--;
  74. }
  75. } else {
  76. if (clockwise) {
  77. muse_tempo+=1;
  78. } else {
  79. muse_tempo-=1;
  80. }
  81. }
  82. } else {
  83. if (clockwise) {
  84. register_code(KC_PGDN);
  85. unregister_code(KC_PGDN);
  86. } else {
  87. register_code(KC_PGUP);
  88. unregister_code(KC_PGUP);
  89. }
  90. }
  91. return true;
  92. }
  93. bool dip_switch_update_user(uint8_t index, bool active) {
  94. switch (index) {
  95. case 0:
  96. if (active) {
  97. layer_on(_ADJUST);
  98. } else {
  99. layer_off(_ADJUST);
  100. }
  101. break;
  102. case 1:
  103. if (active) {
  104. muse_mode = true;
  105. } else {
  106. muse_mode = false;
  107. #ifdef AUDIO_ENABLE
  108. stop_all_notes();
  109. #endif
  110. }
  111. }
  112. return true
  113. }
  114. void matrix_scan_user(void) {
  115. #ifdef AUDIO_ENABLE
  116. if (muse_mode) {
  117. if (muse_counter == 0) {
  118. uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
  119. if (muse_note != last_muse_note) {
  120. stop_note(compute_freq_for_midi_note(last_muse_note));
  121. play_note(compute_freq_for_midi_note(muse_note), 0xF);
  122. last_muse_note = muse_note;
  123. }
  124. }
  125. muse_counter = (muse_counter + 1) % muse_tempo;
  126. }
  127. #endif
  128. }
  129. bool music_mask_user(uint16_t keycode) {
  130. switch (keycode) {
  131. case RAISE:
  132. case LOWER:
  133. return false;
  134. default:
  135. return true;
  136. }
  137. }