keymap_ergodox_ez.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. // TODO: Move all of this stuff into the default keymap, and then get rid of this file.
  2. #include "action_util.h"
  3. #include "action_layer.h"
  4. #define KC_SW0 KC_FN0
  5. #define DEBUG_ACTION
  6. static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  7. /* Keymap 0: Basic layer
  8. *
  9. * ,--------------------------------------------------. ,--------------------------------------------------.
  10. * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
  11. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  12. * | Del | Q | W | E | R | T | Up | | Up | Y | U | I | O | P | \ |
  13. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  14. * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' |
  15. * |--------+------+------+------+------+------| L1 | | L1 |------+------+------+------+------+--------|
  16. * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
  17. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  18. * |Grv/L1| ~L1 | TAB | Left | Right| | Up | Down | [ | ] | ~L1 |
  19. * `----------------------------------' `----------------------------------'
  20. * ,-------------. ,-------------.
  21. * | Rclk | LGui | | Alt |Ctrl/Esc|
  22. * ,------|------|------| |------+--------+------.
  23. * | | | Home | | PgUp | | |
  24. * | Space| Enter|------| |------| Tab |Enter |
  25. * | | | End | | PgDn | | |
  26. * `--------------------' `----------------------'
  27. */
  28. // Basic layer
  29. KEYMAP(
  30. EQL, 1, 2, 3, 4, 5, LEFT,
  31. DEL, Q, W, E, R, T, UP,
  32. BSPC, A, S, D, F, G,
  33. LSFT, FN29, X, C, V, B, FN1,
  34. FN30, FN4, TAB, LEFT, RIGHT,
  35. BTN2,LGUI,
  36. HOME,
  37. SPC, ENT, END,
  38. //RIGHT
  39. RIGHT,6, 7, 8, 9, 0, MINS,
  40. UP, Y, U, I, O, P, BSLS,
  41. H, J, K, L, FN31, QUOT,
  42. FN1, N, M, COMM, DOT, FN28, RSFT,
  43. UP, DOWN, LBRC, RBRC, FN4,
  44. LALT, FN27,
  45. PGUP,
  46. PGDN, TAB, ENT
  47. ),
  48. /* Keymap 1: Symbol Layer
  49. *
  50. * ,--------------------------------------------------. ,--------------------------------------------------.
  51. * | Flash | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
  52. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  53. * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
  54. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  55. * | : | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
  56. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  57. * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
  58. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  59. * | | | | | | | | . | 0 | = | |
  60. * `----------------------------------' `----------------------------------'
  61. * ,-------------. ,-------------.
  62. * | | | | | |
  63. * ,------|------|------| |------+------+------.
  64. * | | | | | | | |
  65. * | | |------| |------| | |
  66. * | | | | | | | |
  67. * `--------------------' `--------------------'
  68. */
  69. // SYMBOLS
  70. KEYMAP(
  71. FN0, F1, F2, F3, F4, F5, TRNS,
  72. TRNS, FN7, FN8, FN23, FN24, FN18, TRNS,
  73. FN22, FN9, FN10, FN15, FN16, GRV,
  74. TRNS, FN11, FN12, LBRC, RBRC, FN17, TRNS,
  75. TRNS, TRNS, TRNS, TRNS, TRNS,
  76. TRNS, TRNS,
  77. TRNS,
  78. TRNS, TRNS, TRNS,
  79. // right hand
  80. TRNS, F6, F7, F8, F9, F10, F11,
  81. TRNS, UP, 7, 8, 9, FN14, F12,
  82. DOWN, 4, 5, 6, FN26, TRNS,
  83. TRNS, FN13, 1, 2, 3, BSLS, TRNS,
  84. TRNS,DOT, 0, EQL, TRNS,
  85. TRNS, TRNS,
  86. TRNS,
  87. TRNS, TRNS, TRNS
  88. ),
  89. /* Keymap 2: Media and mouse keys
  90. *
  91. * ,--------------------------------------------------. ,--------------------------------------------------.
  92. * | | | | | | | | | | | | | | | |
  93. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  94. * | | | MsUp | | | | | | | | | | | | |
  95. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  96. * | |MsLeft|MsDown|MsRght| | |------| |------| | | | Play | | Mute |
  97. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  98. * | | | | | | | | | | | | Prev | Next | | |
  99. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  100. * | | | | Lclk | Rclk | |VolUp |VolDn | | | |
  101. * `----------------------------------' `----------------------------------'
  102. * ,-------------. ,-------------.
  103. * | | | | | |
  104. * ,------|------|------| |------+------+------.
  105. * | | | | | | | |
  106. * | | |------| |------| | |
  107. * | | | | | | | |
  108. * `--------------------' `--------------------'
  109. */
  110. // MEDIA AND MOUSE
  111. KEYMAP(
  112. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  113. TRNS, TRNS, MS_U, TRNS, TRNS, TRNS, TRNS,
  114. TRNS, MS_L, MS_D, MS_R, TRNS, TRNS,
  115. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  116. TRNS, TRNS, TRNS, BTN3, BTN2,
  117. TRNS, TRNS,
  118. TRNS,
  119. TRNS, TRNS, TRNS,
  120. // right hand
  121. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  122. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  123. TRNS, TRNS, TRNS, MPLY, TRNS, TRNS,
  124. TRNS, TRNS, TRNS, MPRV, MNXT, TRNS, TRNS,
  125. VOLU, VOLD, TRNS, TRNS, TRNS,
  126. TRNS, TRNS,
  127. TRNS,
  128. TRNS, TRNS, WBAK
  129. ),
  130. };
  131. /* id for user defined functions */
  132. enum function_id {
  133. TEENSY_KEY,
  134. };
  135. /*
  136. * Fn action definition
  137. */
  138. static const uint16_t PROGMEM fn_actions[] = {
  139. [0] = ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key
  140. [1] = ACTION_LAYER_INVERT(1, ON_RELEASE), // FN1 - Toggle 1
  141. [2] = ACTION_LAYER_TOGGLE(2), // FN2 - Toggle 2
  142. [3] = ACTION_LAYER_TOGGLE(3), // FN3 - Toggle 3
  143. [4] = ACTION_LAYER_TAP_TOGGLE(1), // FN4 - Momentary Layer 1
  144. [5] = ACTION_LAYER_MOMENTARY(2), // FN5 - Momentary L2
  145. // SYMBOLS
  146. ACTION_MODS_KEY(MOD_LSFT, KC_QUOT), // FN6 - "
  147. ACTION_MODS_KEY(MOD_LSFT, KC_1), // FN7 - !
  148. ACTION_MODS_KEY(MOD_LSFT, KC_2), // FN8 - @
  149. ACTION_MODS_KEY(MOD_LSFT, KC_3), // FN9 - #
  150. ACTION_MODS_KEY(MOD_LSFT, KC_4), // FN10 - $
  151. ACTION_MODS_KEY(MOD_LSFT, KC_5), // FN11 - %
  152. ACTION_MODS_KEY(MOD_LSFT, KC_6), // FN12 - ^
  153. ACTION_MODS_KEY(MOD_LSFT, KC_7), // FN13 - &
  154. ACTION_MODS_KEY(MOD_LSFT, KC_8), // FN14 - *
  155. ACTION_MODS_KEY(MOD_LSFT, KC_9), // FN15 - (
  156. ACTION_MODS_KEY(MOD_LSFT, KC_0), // FN16 - )
  157. ACTION_MODS_KEY(MOD_LSFT, KC_GRV), // FN17 - ~
  158. ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN18 - |
  159. ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // FN19 - _
  160. ACTION_MODS_KEY(MOD_LSFT, KC_COMM), // FN20 - <
  161. ACTION_MODS_KEY(MOD_LSFT, KC_DOT), // FN21 - >
  162. ACTION_MODS_KEY(MOD_LSFT, KC_SCLN), // FN22 - :
  163. ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // FN23 - {
  164. ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // FN24 - }
  165. ACTION_MODS_KEY(MOD_LSFT, KC_SLSH), // FN25 - ?
  166. ACTION_MODS_KEY(MOD_LSFT, KC_EQL), // FN26 - +
  167. ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC), // FN27 - Control/esc on tap
  168. ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SLSH), // FN28 - slash becomes Ctrl when held (right pinky)
  169. ACTION_MODS_TAP_KEY(MOD_LCTL, KC_Z), // FN29 - z becomes Ctrl when held (left pinky)
  170. // Fancy tapping/toggling
  171. ACTION_LAYER_TAP_KEY(1, KC_GRV), // FN30 - Layer 1 when holding backtick key
  172. ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN31 - Layer 2 when holding semicolon key
  173. };
  174. void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
  175. {
  176. print("action_function called\n");
  177. print("id = "); phex(id); print("\n");
  178. print("opt = "); phex(opt); print("\n");
  179. if (id == TEENSY_KEY) {
  180. clear_keyboard();
  181. print("\n\nJump to bootloader... ");
  182. _delay_ms(250);
  183. bootloader_jump(); // should not return
  184. print("not supported.\n");
  185. }
  186. }
  187. void * matrix_init_user(void) {
  188. };
  189. void * matrix_scan_user(void) {
  190. };