keymap.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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 "drashna.h"
  17. enum more_custom_keycodes {
  18. KC_SWAP_NUM = USER_SAFE_RANGE,
  19. };
  20. // clang-format off
  21. #define LAYOUT_moonlander_wrapper(...) LAYOUT_moonlander(__VA_ARGS__)
  22. #define LAYOUT_moonlander_base( \
  23. K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
  24. K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
  25. K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
  26. ) \
  27. LAYOUT_moonlander_wrapper( \
  28. KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
  29. KC_TAB, K01, K02, K03, K04, K05, TG_DBLO, TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
  30. KC_C1R3, K11, K12, K13, K14, K15, TG_GAME, TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \
  31. KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \
  32. KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, UC_CLUE, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC_IRNY, \
  33. KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \
  34. )
  35. #define LAYOUT_base_wrapper(...) LAYOUT_moonlander_base(__VA_ARGS__)
  36. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  37. [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper(
  38. _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
  39. _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
  40. _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
  41. ),
  42. [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper(
  43. ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________,
  44. ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________,
  45. ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________
  46. ),
  47. [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper(
  48. _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
  49. _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
  50. _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
  51. ),
  52. [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper(
  53. _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
  54. _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
  55. _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
  56. ),
  57. [_GAMEPAD] = LAYOUT_moonlander_wrapper(
  58. KC_ESC, XXXXXXX, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_NO,
  59. KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  60. KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, TG_GAME, KC_I, KC_O, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  61. KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  62. KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
  63. KC_V, KC_SPC, KC_H, KC_NO, XXXXXXX,KC_SWAP_NUM
  64. ),
  65. [_DIABLO] = LAYOUT_moonlander_wrapper(
  66. KC_ESC, KC_V, KC_D, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_NO,
  67. KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  68. XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_G, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  69. KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  70. XXXXXXX, XXXXXXX, KC_L, KC_J, KC_F, KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  71. KC_DIABLO_CLEAR, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_PGDN, KC_DEL, KC_ENT
  72. ),
  73. [_DIABLOII] = LAYOUT_moonlander_wrapper(
  74. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, XXXXXXX, _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_NO,
  75. KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, TG(_DIABLOII), _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  76. KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  77. KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  78. XXXXXXX, XXXXXXX, KC_G, KC_F, KC_L, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
  79. KC_G, KC_LSFT, KC_LCTL, KC_PGDN, KC_DEL, KC_ENT
  80. ),
  81. [_LOWER] = LAYOUT_moonlander_wrapper(
  82. KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11,
  83. _______, _________________LOWER_L1__________________, _______, _______, _________________LOWER_R1__________________, KC_PIPE,
  84. _______, _________________LOWER_L2__________________, _______, _______, _________________LOWER_R2__________________, KC_DQUO,
  85. _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, KC_PSCR,
  86. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,
  87. _______, _______, _______, _______, _______, _______
  88. ),
  89. [_RAISE] = LAYOUT_moonlander_wrapper(
  90. KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11,
  91. _______, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, KC_BSLS,
  92. _______, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_QUOT,
  93. _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, KC_PSCR,
  94. _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PAUS,
  95. _______, _______, _______, _______, _______, _______
  96. ),
  97. [_ADJUST] = LAYOUT_moonlander_wrapper(
  98. QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE,_______, KC_NUKE,KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT,
  99. VRSN, _________________ADJUST_L1_________________, TG(_DIABLOII), _______, _________________ADJUST_R1_________________, EE_CLR,
  100. KEYLOCK, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, RGB_IDL,
  101. UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
  102. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, AUTO_CTN,
  103. QK_RBT, _______, _______, _______, _______, _______
  104. ),
  105. };
  106. /* Blank
  107. [_LAYER] = LAYOUT_moonlander_wrapper(
  108. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  109. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  110. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  111. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  112. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  113. _______, _______, _______, _______, _______, _______
  114. ),
  115. */
  116. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  117. switch (keycode) {
  118. case KC_1:
  119. if (layer_state_is(_GAMEPAD) && userspace_config.swapped_numbers) {
  120. if (record->event.pressed) {
  121. register_code(KC_2);
  122. } else {
  123. unregister_code(KC_2);
  124. }
  125. return false;
  126. }
  127. break;
  128. case KC_2:
  129. if (layer_state_is(_GAMEPAD) && userspace_config.swapped_numbers) {
  130. if (record->event.pressed) {
  131. register_code(KC_1);
  132. } else {
  133. unregister_code(KC_1);
  134. }
  135. return false;
  136. }
  137. break;
  138. case KC_SWAP_NUM:
  139. if (record->event.pressed) {
  140. userspace_config.swapped_numbers ^= 1;
  141. eeconfig_update_user(userspace_config.raw);
  142. unregister_code(KC_1);
  143. unregister_code(KC_2);
  144. }
  145. break;
  146. }
  147. return true;
  148. }
  149. #ifdef RGB_MATRIX_ENABLE
  150. bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
  151. if (layer_state_is(_GAMEPAD)) {
  152. RGB_MATRIX_INDICATOR_SET_COLOR(11, 0x00, 0xFF, 0x00); // Q
  153. RGB_MATRIX_INDICATOR_SET_COLOR(16, 0x00, 0xFF, 0xFF); // W
  154. RGB_MATRIX_INDICATOR_SET_COLOR(21, 0xFF, 0x00, 0x00); // E
  155. RGB_MATRIX_INDICATOR_SET_COLOR(26, 0xFF, 0x80, 0x00); // R
  156. RGB_MATRIX_INDICATOR_SET_COLOR(12, 0x00, 0xFF, 0xFF); // A
  157. RGB_MATRIX_INDICATOR_SET_COLOR(17, 0x00, 0xFF, 0xFF); // S
  158. RGB_MATRIX_INDICATOR_SET_COLOR(22, 0x00, 0xFF, 0xFF); // D
  159. RGB_MATRIX_INDICATOR_SET_COLOR(27, 0x7A, 0x00, 0xFF); // F
  160. RGB_MATRIX_INDICATOR_SET_COLOR((userspace_config.swapped_numbers ? 15 : 10), 0xFF, 0xFF, 0xFF); // 1
  161. RGB_MATRIX_INDICATOR_SET_COLOR((userspace_config.swapped_numbers ? 10 : 15), 0x00, 0xFF, 0x00); // 2
  162. RGB_MATRIX_INDICATOR_SET_COLOR(20, 0x7A, 0x00, 0xFF); // 3
  163. }
  164. return true;
  165. }
  166. #endif
  167. #ifdef TAPPING_TERM_PER_KEY
  168. uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
  169. if (keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) {
  170. if (mod_config(keycode & 0xf) & MOD_MASK_ALT) {
  171. return (2 * TAPPING_TERM);
  172. }
  173. }
  174. return TAPPING_TERM;
  175. }
  176. #endif