keymap.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /* -*- eval: (turn-on-orgtbl); -*-
  2. * lxol HHKB Layout
  3. */
  4. #include "hhkb.h"
  5. #define BASE 0
  6. #define WIN 1
  7. #define HHKB 2
  8. #define RGUILEV 3
  9. #define LGUILEV 4
  10. #define RALTLEV 5
  11. #define LALTLEV 6
  12. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  13. /* Layer 0: Default Layer
  14. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  15. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
  16. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  17. | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
  18. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  19. | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | |
  20. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  21. | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
  22. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  23. |------+------+-------+------+------|
  24. | LAlt | LGUI | Space | RGUI | RAlt |
  25. |------+------+-------+------+------|
  26. */
  27. [BASE] = KEYMAP( // layer 0 : default
  28. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
  29. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
  30. KC_LCTL, LT(LALTLEV,KC_A), LT(LGUILEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RGUILEV,KC_L), LT(RALTLEV,KC_SCLN), KC_QUOT, KC_FN0, \
  31. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
  32. KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT),
  33. /* Layer 1: HHKB mode (HHKB Fn)
  34. |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
  35. | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
  36. |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
  37. | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
  38. |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
  39. | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
  40. |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
  41. | | | | | | | + | - | End | PgD | Dow | | | | |
  42. |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
  43. |---+---+---+---+---|
  44. | | | | | |
  45. |---+---+---+---+---|
  46. */
  47. [HHKB] = KEYMAP(
  48. KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
  49. KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC, \
  50. KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
  51. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
  52. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  53. /* Layer LGUI: All keys with RGUI modifier
  54. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  55. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
  56. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  57. | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
  58. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  59. | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
  60. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  61. | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
  62. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  63. |------+------+-------+------+------|
  64. | LAlt | LGUI | Space | RGUI | RAlt |
  65. |------+------+-------+------+------|
  66. */
  67. [RGUILEV] = KEYMAP( // Right GUI layer by KC_L
  68. RGUI(KC_ESC), RGUI(KC_1), RGUI(KC_2), RGUI(KC_3), RGUI(KC_4), RGUI(KC_5), RGUI(KC_6), RGUI(KC_7), RGUI(KC_8), RGUI(KC_9), RGUI(KC_0), RGUI(KC_MINS), RGUI(KC_EQL), RGUI(KC_BSLS), RGUI(KC_GRV), \
  69. RGUI(KC_TAB), RGUI(KC_Q), RGUI(KC_W), RGUI(KC_E), RGUI(KC_R), RGUI(KC_T), RGUI(KC_Y), RGUI(KC_U), RGUI(KC_I), RGUI(KC_O), RGUI(KC_P), RGUI(KC_LBRC), RGUI(KC_RBRC), RGUI(KC_BSPC), \
  70. RGUI(KC_LCTL), RGUI(KC_A), RGUI(KC_S), RGUI(KC_D), RGUI(KC_F), RGUI(KC_G), RGUI(KC_H), RGUI(KC_J), RGUI(KC_K), KC_TRNS, KC_TRNS, RGUI(KC_QUOT), KC_FN0, \
  71. RGUI(KC_LSFT), RGUI(KC_Z), RGUI(KC_X), RGUI(KC_C), RGUI(KC_V), RGUI(KC_B), RGUI(KC_N), RGUI(KC_M), RGUI(KC_COMM), RGUI(KC_DOT), RGUI(KC_SLSH), RGUI(KC_RSFT), KC_TRNS, \
  72. KC_LALT, KC_LGUI, RGUI(KC_SPC), KC_RGUI, KC_RALT),
  73. /* Layer LGUI: All keys with LGUI modifier
  74. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  75. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
  76. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  77. | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
  78. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  79. | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
  80. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  81. | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
  82. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  83. |------+------+-------+------+------|
  84. | LAlt | LGUI | Space | LGUI | RAlt |
  85. |------+------+-------+------+------|
  86. */
  87. [LGUILEV] = KEYMAP( // Right GUI layer by KC_L
  88. LGUI(KC_ESC), LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS), LGUI(KC_EQL), LGUI(KC_BSLS), LGUI(KC_GRV), \
  89. LGUI(KC_TAB), LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), LGUI(KC_BSPC), \
  90. LGUI(KC_LCTL), KC_TRNS, KC_TRNS, LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), LGUI(KC_SCLN), LGUI(KC_QUOT), KC_FN0, \
  91. KC_LSFT, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), KC_RSFT, KC_TRNS, \
  92. KC_LALT, KC_LGUI, LGUI(KC_SPC), KC_LGUI, KC_RALT),
  93. /* Layer LALT: All keys with RALT modifier
  94. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  95. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
  96. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  97. | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
  98. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  99. | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
  100. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  101. | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
  102. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  103. |------+------+-------+------+------|
  104. | LAlt | LGUI | Space | RGUI | RAlt |
  105. |------+------+-------+------+------|
  106. */
  107. [RALTLEV] = KEYMAP( // Right ALT layer by KC_L
  108. RALT(KC_ESC), RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_5), RALT(KC_6), RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS), RALT(KC_EQL), RALT(KC_BSLS), RALT(KC_GRV), \
  109. RALT(KC_TAB), RALT(KC_Q), RALT(KC_W), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(KC_Y), RALT(KC_U), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC), RALT(KC_RBRC), RALT(KC_BSPC), \
  110. RALT(KC_LCTL), RALT(KC_A), RALT(KC_S), RALT(KC_D), RALT(KC_F), RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), KC_TRNS, KC_TRNS, RALT(KC_QUOT), KC_FN0, \
  111. RALT(KC_LSFT), RALT(KC_Z), RALT(KC_X), RALT(KC_C), RALT(KC_V), RALT(KC_B), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), RALT(KC_SLSH), RALT(KC_RSFT), KC_TRNS, \
  112. KC_LALT, KC_LGUI, RALT(KC_SPC), KC_RGUI, KC_RALT),
  113. /* Layer LALT: All keys with LALT modifier
  114. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  115. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
  116. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  117. | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
  118. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  119. | Contro | A | S | D | F | G | H | J | K | | ; | ' | RCtl/Ent | | |
  120. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  121. | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0 | | |
  122. |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
  123. |------+------+-------+------+------|
  124. | LAlt | LGUI | Space | LGUI | RAlt |
  125. |------+------+-------+------+------|
  126. */
  127. [LALTLEV] = KEYMAP( // Right ALT layer by KC_L
  128. LALT(KC_ESC), LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5), LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0), LALT(KC_MINS), LALT(KC_EQL), LALT(KC_BSLS), LALT(KC_GRV), \
  129. LALT(KC_TAB), LALT(KC_Q), LALT(KC_W), LALT(KC_E), LALT(KC_R), LALT(KC_T), LALT(KC_Y), LALT(KC_U), LALT(KC_I), LALT(KC_O), LALT(KC_P), LALT(KC_LBRC), LALT(KC_RBRC), LALT(KC_BSPC), \
  130. LALT(KC_LCTL), KC_TRNS, KC_TRNS, LALT(KC_D), LALT(KC_F), LALT(KC_G), LALT(KC_H), LALT(KC_J), LALT(KC_K), LALT(KC_L), LALT(KC_SCLN), LALT(KC_QUOT), KC_FN0, \
  131. KC_LSFT, LALT(KC_Z), LALT(KC_X), LALT(KC_C), LALT(KC_V), LALT(KC_B), LALT(KC_N), LALT(KC_M), LALT(KC_COMM), LALT(KC_DOT), LALT(KC_SLSH), KC_RSFT, KC_TRNS, \
  132. KC_LALT, KC_LGUI, LALT(KC_SPC), KC_LGUI, KC_RALT),
  133. /* Layer WIN: Win layer
  134. |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
  135. | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
  136. |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
  137. | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
  138. |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
  139. | Contro | A | S | D | F | G | H | J | K | L | ; | ' | RCtl/Ent | | |
  140. |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
  141. | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
  142. |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
  143. |------+------+-------+------+------|
  144. | LGui | LAlt | Space | RGui | Ralt |
  145. |------+------+-------+------+------|
  146. */
  147. [WIN] = KEYMAP( // BASE level with swapped GUI/ALT
  148. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
  149. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
  150. KC_LCTL, LT(LGUILEV,KC_A), LT(LALTLEV,KC_S), KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT(RALTLEV,KC_L), LT(RGUILEV,KC_SCLN), KC_QUOT, KC_FN0, \
  151. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
  152. KC_RGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI)};
  153. const uint16_t PROGMEM fn_actions[] = {
  154. [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT) // RControl with tap Enter*
  155. };
  156. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  157. {
  158. // MACRODOWN only works in this function
  159. switch(id) {
  160. case 0:
  161. if (record->event.pressed) {
  162. register_code(KC_RSFT);
  163. } else {
  164. unregister_code(KC_RSFT);
  165. }
  166. break;
  167. }
  168. return MACRO_NONE;
  169. };