keymap_ergodox_ez.c 11 KB

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