You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
8.1 KiB

  1. #include QMK_KEYBOARD_H
  2. extern keymap_config_t keymap_config;
  3. #define _BASE 0
  4. #define _META 1
  5. #define _SYMB 2
  6. #define _GAME 3
  7. enum custom_keycodes {
  8. BASE = SAFE_RANGE,
  9. META,
  10. SYMB,
  11. GAME,
  12. EISU,
  13. KANA
  14. };
  15. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  16. /* BASE
  17. * ,------------------------------------------------. ,------------------------------------------------.
  18. * | = | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | - |
  19. * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
  20. * | Tab | A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
  21. * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
  22. * | Sft | Z | X | C | V | B | { | | } | N | M | , | . | / |\/Sft |
  23. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
  24. * | EISU | Ctrl | Alt | GUI | ESC/ |Del |Back | |Enter |Space | META | GUI |=>GAME|=>SYMB| KANA |
  25. * | | | | | SYMB | |Space | | | | | | | | |
  26. * `------------------------------------------------' `------------------------------------------------'
  27. */
  28. [_BASE] = LAYOUT( \
  29. KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \
  30. KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
  31. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, \
  32. EISU, KC_LCTRL, KC_LALT, KC_LGUI, LT(_SYMB, KC_ESC),KC_DEL, KC_BSPC, KC_ENT, KC_SPC, META, KC_LGUI, TG(_GAME), TG(_SYMB), KANA \
  33. ),
  34. /* META
  35. * ,------------------------------------------------. ,------------------------------------------------.
  36. * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
  37. * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
  38. * | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | PgUp | |
  39. * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
  40. * | | F7 | F8 | F9 | F10 | F11 | F12 | | | Home | End |Alt+ |Alt+ | PgDn | |
  41. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
  42. * | | | | | | | | | | | |Reset | | | |
  43. * | | | | | | | | | | | | | | | |
  44. * `------------------------------------------------' `------------------------------------------------'
  45. */
  46. [_META] = LAYOUT( \
  47. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
  48. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PGUP, _______, \
  49. _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, KC_END, LALT(KC_LEFT), LALT(KC_RGHT), KC_PGDN, _______, \
  50. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
  51. ),
  52. /* SYMB
  53. * ,------------------------------------------------. ,------------------------------------------------.
  54. * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | - |
  55. * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
  56. * | | F1 | F2 | F3 | F4 | F5 | F6 | | | Left | Down | Up |Right | PgUp | |
  57. * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
  58. * | | F7 | F8 | F9 | F10 | F11 | F12 | | | Home | End |Alt+ |Alt+ | PgDn | |
  59. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
  60. * | | | | | | | | | | | |Reset | | | |
  61. * | | | | | | | | | | | | | | | |
  62. * `------------------------------------------------' `------------------------------------------------'
  63. */
  64. [_SYMB] = LAYOUT( \
  65. KC_TILD, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), _______, _______, S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), _______, \
  66. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PGUP, _______, \
  67. _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, KC_END, LALT(KC_LEFT), LALT(KC_RGHT), KC_PGDN, _______, \
  68. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
  69. ),
  70. /* GAME
  71. * ,------------------------------------------------. ,------------------------------------------------.
  72. * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | @ |
  73. * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
  74. * | Alt | A | S | D | F | G | ( | | ) | H | J | K | L | ; | : |
  75. * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
  76. * | Sft | Z | X | C | V | B | { | | } | N | M | , | . | / |\/Sft |
  77. * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
  78. * | Ctrl | GUI | App |PrtSc | ESC |Space |Tab | |Back |Enter | Del |PrtSc |=>GAME|=>SYMB| \ |
  79. * | | | | | | | | |Space | | | | | | |
  80. * `------------------------------------------------' `------------------------------------------------'
  81. */
  82. [_GAME] = LAYOUT( \
  83. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \
  84. KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, S(KC_8), S(KC_9), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
  85. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_RBRC), S(KC_BSLS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RO), \
  86. KC_LCTRL, KC_LGUI, KC_APP, KC_PSCR, KC_ESC, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_DELT, KC_PSCR, _______, _______, KC_JYEN \
  87. )
  88. };
  89. void persistent_default_layer_set(uint16_t default_layer) {
  90. eeconfig_update_default_layer(default_layer);
  91. default_layer_set(default_layer);
  92. }
  93. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  94. switch (keycode) {
  95. case BASE:
  96. if (record->event.pressed) {
  97. persistent_default_layer_set(1UL<<_BASE);
  98. }
  99. return false;
  100. break;
  101. case META:
  102. if (record->event.pressed) {
  103. layer_on(_META);
  104. update_tri_layer(_META, _SYMB, _GAME);
  105. } else {
  106. layer_off(_META);
  107. update_tri_layer(_META, _SYMB, _GAME);
  108. }
  109. return false;
  110. break;
  111. case SYMB:
  112. if (record->event.pressed) {
  113. layer_on(_SYMB);
  114. update_tri_layer(_META, _SYMB, _GAME);
  115. } else {
  116. layer_off(_SYMB);
  117. update_tri_layer(_META, _SYMB, _GAME);
  118. }
  119. return false;
  120. break;
  121. case GAME:
  122. if (record->event.pressed) {
  123. layer_on(_GAME);
  124. } else {
  125. layer_off(_GAME);
  126. }
  127. return false;
  128. break;
  129. case EISU:
  130. if (record->event.pressed) {
  131. register_code(KC_LANG2);
  132. } else {
  133. unregister_code(KC_LANG2);
  134. }
  135. return false;
  136. break;
  137. case KANA:
  138. if (record->event.pressed) {
  139. register_code(KC_LANG1);
  140. } else {
  141. unregister_code(KC_LANG1);
  142. }
  143. return false;
  144. break;
  145. }
  146. return true;
  147. }