keymap.c 14 KB

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