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.

205 lines
14 KiB

7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
  1. #include QMK_KEYBOARD_H
  2. #include "debug.h"
  3. #include "action_layer.h"
  4. #define BASE 0 // default layer
  5. #define SYMB 1 // symbols
  6. #define ARRW 2 // arrow keys
  7. #define MDIA 3 // media keys, including mouse
  8. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  9. /* Keymap 0: Basic layer
  10. *
  11. * ,--------------------------------------------------. ,--------------------------------------------------.
  12. * | = | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | - |
  13. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  14. * | Tab | Q | W | E | R | T | L1 | | CAPS | Y | U | I | O | P | \ |
  15. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  16. * | ESC | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
  17. * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
  18. * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
  19. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  20. * | | Grv | |*SYMB*|*ARRW*| |*MDIA*|*SYMB*| [ | ] | |
  21. * `----------------------------------' `----------------------------------'
  22. * ,-------------. ,-------------.
  23. * | | | | | |
  24. * ,------|------|------| |------+--------+------.
  25. * | | | | | | | |
  26. * | Space| Bksp |------| |------| Tab |Enter |
  27. * | ctrl | gui | Alt | | Alt | gui | ctrl |
  28. * `--------------------' `----------------------'
  29. */
  30. // TODO: maybe look into changing the delay or whatever for the holding macros... not sure which way you would go with this. if the macro automatically kicks in if you hold it and press another button (no matter how long you held it for), then it wouldn't hurt to have a longer period i think... although if you hold a button and then decide not to, then you;ll register a space/bksp/etc. on accident. on the other hand, if it's too short of a delay, then you might be able to register spc/bksp/etc quickly enough, although i don't see this as big of an issue
  31. // not sure if gui is meta key or super... it says meta on the basic keycodes page, and i think that's consitent with other shit, but you should really figure out how to program the keyboard to have meta and super separately instead of hacking your init.el to recognize alt as meta... because shit will get fucked up beteween awesome and emacs and other shit i'm guessing
  32. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
  33. // Otherwise, it needs KC_*
  34. [BASE] = LAYOUT_ergodox( // layer 0 : default
  35. // left hand
  36. KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
  37. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
  38. KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
  39. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
  40. KC_TRNS, KC_GRV, KC_TRNS,MO(SYMB),MO(ARRW),
  41. KC_TRNS, KC_TRNS,
  42. KC_TRNS,
  43. CTL_T(KC_SPC),GUI_T(KC_BSPC),KC_LALT,
  44. // right hand
  45. KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  46. KC_CAPSLOCK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  47. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  48. MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
  49. MO(MDIA), MO(SYMB), KC_LBRC,KC_RBRC, KC_TRNS,
  50. KC_TRNS, KC_TRNS,
  51. KC_TRNS,
  52. KC_RALT,GUI_T(KC_TAB), CTL_T(KC_ENT)
  53. ),
  54. /* Keymap 1: Symbol Layer
  55. *
  56. * ,--------------------------------------------------. ,--------------------------------------------------.
  57. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
  58. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  59. * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
  60. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  61. * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | . |
  62. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  63. * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
  64. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  65. * | | | | | | | | | 0 | = | |
  66. * `----------------------------------' `----------------------------------'
  67. * ,-------------. ,-------------.
  68. * | | | | | |
  69. * ,------|------|------| |------+------+------.
  70. * | | | | | | | |
  71. * | | |------| |------| | |
  72. * | | | | | | | |
  73. * `--------------------' `--------------------'
  74. */
  75. // SYMBOLS
  76. [SYMB] = LAYOUT_ergodox(
  77. // left hand
  78. KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
  79. KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
  80. KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
  81. KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
  82. KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
  83. KC_TRNS,KC_TRNS,
  84. KC_TRNS,
  85. KC_TRNS,KC_TRNS,KC_TRNS,
  86. // right hand
  87. KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  88. KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
  89. KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_DOT,
  90. KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
  91. KC_TRNS,KC_TRNS, KC_0, KC_EQL, KC_TRNS,
  92. KC_TRNS, KC_TRNS,
  93. KC_TRNS,
  94. KC_TRNS, KC_TRNS, KC_TRNS
  95. ),
  96. /* Keymap 2: Arrow keys
  97. *
  98. * ,--------------------------------------------------. ,--------------------------------------------------.
  99. * | | | | | | | | | | | | | | | |
  100. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  101. * | | | | | | | | | | |PGDOWN| PGUP | | | |
  102. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  103. * | | | | | | |------| |------| LEFT | DOWN | UP |RIGHT | | |
  104. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  105. * | | | | | | | | | | | HOME | END | | | |
  106. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  107. * | | | | | | | | | | | |
  108. * `----------------------------------' `----------------------------------'
  109. * ,-------------. ,-------------.
  110. * | | | | | |
  111. * ,------|------|------| |------+------+------.
  112. * | | | | | | | |
  113. * | | |------| |------| | |
  114. * | | | | | | | |
  115. * `--------------------' `--------------------'
  116. */
  117. // MEDIA AND MOUSE
  118. [ARRW] = LAYOUT_ergodox(
  119. // left hand
  120. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  121. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  122. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  123. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  124. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  125. KC_TRNS, KC_TRNS,
  126. KC_TRNS,
  127. KC_TRNS, KC_TRNS, KC_TRNS,
  128. // right hand
  129. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  130. KC_TRNS, KC_TRNS, KC_PGDOWN, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
  131. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
  132. KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_TRNS,
  133. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  134. KC_TRNS, KC_TRNS,
  135. KC_TRNS,
  136. KC_TRNS, KC_TRNS, KC_TRNS
  137. ),
  138. /* Keymap 3: Media and mouse keys
  139. *
  140. * ,--------------------------------------------------. ,--------------------------------------------------.
  141. * | | | | | | | | | | | | | | | |
  142. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  143. * | | | | MsUp | | | | | | | | | | | |
  144. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  145. * | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | |
  146. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  147. * | | |Mute |VolDn | VolUp| | | | | | | | | | |
  148. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  149. * | | | Prev | Play | Next | | | | | | |
  150. * `----------------------------------' `----------------------------------'
  151. * ,-------------. ,-------------.
  152. * | | | | | |
  153. * ,------|------|------| |------+------+------.
  154. * |Brwser| | | | | | |
  155. * |Back | |------| |------| | |
  156. * | | | | | | | |
  157. * `--------------------' `--------------------'
  158. */
  159. // MEDIA AND MOUSE
  160. [MDIA] = LAYOUT_ergodox(
  161. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  162. KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
  163. KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
  164. KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
  165. KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT,
  166. KC_TRNS, KC_TRNS,
  167. KC_TRNS,
  168. KC_WBAK, KC_TRNS, KC_TRNS,
  169. // right hand
  170. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  171. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  172. KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
  173. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  174. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  175. KC_TRNS, KC_TRNS,
  176. KC_TRNS,
  177. KC_TRNS, KC_TRNS, KC_TRNS
  178. ),
  179. };
  180. // Runs constantly in the background, in a loop.
  181. void matrix_scan_user(void) {
  182. uint8_t layer = biton32(layer_state);
  183. ergodox_board_led_off();
  184. ergodox_right_led_1_off();
  185. ergodox_right_led_2_off();
  186. ergodox_right_led_3_off();
  187. switch (layer) {
  188. // TODO: Make this relevant to the ErgoDox EZ.
  189. case 1:
  190. ergodox_right_led_1_on();
  191. break;
  192. case 2:
  193. ergodox_right_led_2_on();
  194. break;
  195. default:
  196. // none
  197. break;
  198. }
  199. };