2
0

keymap.c 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. #include "ergodox.h"
  2. #include "debug.h"
  3. #include "action_layer.h"
  4. #include "version.h"
  5. #define BASE 0 // default layer
  6. #define ARRW 1 // function, media, arrow keys
  7. #define NUMP 2 // numpad
  8. #define INTL 3 // international symbols
  9. // Fillers to make layering more clear
  10. #define _______ KC_TRNS
  11. #define XXXXXXX KC_NO
  12. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  13. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
  14. // Otherwise, it needs KC_*
  15. /* layer 0 : default
  16. *
  17. * ,--------------------------------------------------. ,--------------------------------------------------.
  18. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BCKSPC |
  19. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  20. * | TAB | Q | W | E | R | T | HOME | | PGUP | Y | U | I | O | P | DELETE |
  21. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  22. * | CLEAR | A | S | D | F | G |------| |------| H | J | K | L | ; | ENTER |
  23. * |--------+------+------+------+------+------| END | | PGDN |------+------+------+------+------+--------|
  24. * | (/LSFT | Z | X | C | V | B | | | | N | M | , | . | UP | )/RSFT |
  25. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  26. * | LCTRL | LGUI | MENU | ' | " | | [ | ] | LEFT | DOWN | RIGHT |
  27. * `------------------------------------' `------------------------------------'
  28. * ,-------------. ,-------------.
  29. * |PRTSCR| ESC | | VOL- | VOL+ |
  30. * ,------|------|------| |------+------+------.
  31. * | ALT/ |SLASH/| NUMLK| | MUTE |WHACK/| ALT/ |
  32. * | SPC | MO(1)|------| |------|MO(1) | SPC |
  33. * | | | LAY3 | | LAY2 | | |
  34. * `--------------------' `--------------------'
  35. */
  36. [BASE] = KEYMAP(
  37. // left hand
  38. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
  39. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME,
  40. KC_CLEAR, KC_A, KC_S, KC_D, KC_F, KC_G,
  41. KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END,
  42. KC_LCTL, KC_LGUI, KC_MENU, KC_QUOT, S(KC_QUOT),
  43. KC_INS, KC_ESC,
  44. KC_NLCK,
  45. ALT_T(KC_SPC), LT(ARRW,KC_SLSH), TG(INTL),
  46. // right hand
  47. KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
  48. KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
  49. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER,
  50. KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSPC,
  51. KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_RGHT,
  52. KC_VOLD, KC_VOLU,
  53. KC_MUTE,
  54. TG(NUMP), LT(ARRW,KC_BSLS), ALT_T(KC_SPC)
  55. ),
  56. /* layer 1 : functions and arrows
  57. *
  58. * ,--------------------------------------------------. ,--------------------------------------------------.
  59. * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
  60. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  61. * | | | | UP | | | | | | | | | | | INSERT |
  62. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  63. * |CAPSLOCK| | LEFT | DOWN |RIGHT | |------| |------| LEFT | DOWN | UP | RIGHT| | |
  64. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  65. * | |M_PREV|M_STOP|M_PLPS|M_NEXT| | | | | | | | | PGUP | |
  66. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  67. * | | | | | | | | | HOME | PGDN | END |
  68. * `------------------------------------' `------------------------------------'
  69. * ,-------------. ,-------------.
  70. * |SYSREQ| PAUSE| | | |
  71. * ,------|------|------| |------+------+------.
  72. * | | | SCRLK| | | | |
  73. * | | |------| |------| | |
  74. * | | | | | | | |
  75. * `--------------------' `--------------------'
  76. */
  77. [ARRW] = KEYMAP(
  78. // left hand
  79. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
  80. _______, _______, _______, KC_UP, _______, _______, _______,
  81. KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
  82. _______, _______, _______, _______, _______, _______, _______,
  83. _______, _______, _______, _______, _______,
  84. KC_SYSREQ, KC_PAUSE,
  85. KC_SLCK,
  86. _______, _______, _______,
  87. // right hand
  88. KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
  89. _______, _______, _______, _______, _______, _______, KC_INS,
  90. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
  91. _______, _______, _______, _______, _______, KC_PGUP, _______,
  92. _______, _______, KC_HOME, KC_PGDN, KC_END,
  93. _______, _______,
  94. _______,
  95. _______, _______, _______
  96. ),
  97. /* layer 2 : numberpad
  98. *
  99. * ,--------------------------------------------------. ,--------------------------------------------------.
  100. * | | | | | | | | | | | ( | ) | ÷ | × | |
  101. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  102. * | | | | | | | | | | | 7 | 8 | 9 | - | |
  103. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  104. * | | | | | | |------| |------| | 4 | 5 | 6 | + | |
  105. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  106. * | | | | | | | | | | | 1 | 2 | 3 | = | |
  107. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  108. * | | | | | | | 0 | . | , | ENTER| |
  109. * `------------------------------------' `------------------------------------'
  110. * ,-------------. ,-------------.
  111. * | | | | | |
  112. * ,------|------|------| |------+------+------.
  113. * | | | | | | | |
  114. * | | |------| |------| | |
  115. * | | | | | | | |
  116. * `--------------------' `--------------------'
  117. */
  118. [NUMP] = KEYMAP(
  119. // left hand
  120. _______, _______, _______, _______, _______, _______, _______,
  121. _______, _______, _______, _______, _______, _______, _______,
  122. _______, _______, _______, _______, _______, _______,
  123. _______, _______, _______, _______, _______, _______, _______,
  124. _______, _______, _______, _______, _______,
  125. _______, _______,
  126. _______,
  127. _______, _______, _______,
  128. // right hand
  129. _______, _______, S(KC_9), S(KC_0), KC_PSLS, KC_PAST, _______,
  130. _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______,
  131. _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
  132. _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PEQL, _______,
  133. KC_KP_0, KC_KP_DOT, KC_PCMM, KC_PENT, _______,
  134. _______, _______,
  135. _______,
  136. _______, _______, _______
  137. ),
  138. /* layer 3: International symbols, etc
  139. *
  140. * ,--------------------------------------------------. ,--------------------------------------------------.
  141. * | | | | | | | | | | | | | | | |
  142. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  143. * | | | | | | | | | | | | | | | |
  144. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  145. * | | | | | | |------| |------| | | | | | |
  146. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  147. * | | | | | | | | | | | | | | | |
  148. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  149. * | | | | | | | | | | | |
  150. * `------------------------------------' `------------------------------------'
  151. * ,-------------. ,-------------.
  152. * | | | | | |
  153. * ,------|------|------| |------+------+------.
  154. * | | | | | | | |
  155. * | | |------| |------| | |
  156. * | | | | | | | |
  157. * `--------------------' `--------------------'
  158. */
  159. [INTL] = KEYMAP(
  160. // left hand
  161. _______, _______, _______, _______, _______, _______, _______,
  162. _______, _______, _______, _______, _______, _______, _______,
  163. _______, _______, _______, _______, _______, _______,
  164. _______, _______, _______, _______, _______, _______, _______,
  165. _______, _______, _______, _______, _______,
  166. _______, _______,
  167. _______,
  168. _______, _______, _______,
  169. // right hand
  170. _______, _______, _______, _______, _______, _______, _______,
  171. _______, _______, _______, _______, _______, _______, _______,
  172. _______, _______, _______, _______, _______, _______,
  173. _______, _______, _______, _______, _______, _______, _______,
  174. _______, _______, _______, _______, _______,
  175. _______, _______,
  176. _______,
  177. _______, _______, _______
  178. ),
  179. };
  180. // Runs just one time when the keyboard initializes.
  181. void matrix_init_user(void) {
  182. };
  183. // Runs constantly in the background, in a loop.
  184. void matrix_scan_user(void) {
  185. uint8_t layer = biton32(layer_state);
  186. ergodox_board_led_off();
  187. ergodox_right_led_1_off();
  188. ergodox_right_led_2_off();
  189. ergodox_right_led_3_off();
  190. switch (layer) {
  191. case 1:
  192. ergodox_right_led_1_on();
  193. break;
  194. case 2:
  195. ergodox_right_led_2_on();
  196. break;
  197. case 3:
  198. ergodox_right_led_3_on();
  199. break;
  200. default:
  201. // none
  202. break;
  203. }
  204. };