keymap.c 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568
  1. #include QMK_KEYBOARD_H
  2. #include "debug.h"
  3. #include "action_layer.h"
  4. #include "version.h"
  5. enum custom_layers {
  6. _QWERTY,
  7. _DVORAK,
  8. _WORKMAN,
  9. _GAME,
  10. _MOUSE,
  11. _NUM,
  12. _LOWER,
  13. _RAISE,
  14. _ADJUST,
  15. };
  16. enum custom_keycodes {
  17. QWERTY = SAFE_RANGE,
  18. DVORAK,
  19. WORKMAN,
  20. LOWER,
  21. RAISE,
  22. GAME,
  23. MOUSE,
  24. NUM,
  25. EPRM,
  26. VRSN,
  27. RGB_SLD
  28. };
  29. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  30. /* Keymap 0: Basic QWERTY layer
  31. *
  32. * ,---------------------------------------------. ,---------------------------------------------.
  33. * | - | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
  34. * |--------+-----+-----+-----+-----+------------| |------+-----+-----+-----+-----+-----+--------|
  35. * | Tab | Q | W | E | R | T | [{ | | ]} | Y | U | I | O | P | BSPC |
  36. * |--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
  37. * | ESC | A | S | D | F | G |------| |------| H | J | K | L | ; | '" |
  38. * |--------+-----+-----+-----+-----+-----| L1 | | L1 |-----+-----+-----+-----+-----+--------|
  39. * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | Enter |
  40. * `--------+-----+-----+-----+-----+------------' `------------+-----+-----+-----+-----+--------'
  41. * | Num |Ctrl | Alt |LGUI |Lower| |Raise|Left |Down | Up |Right |
  42. * `------------------------------' `------------------------------'
  43. * ,------------. ,------------.
  44. * |Play |Mouse | | Num |Mouse|
  45. * ,----|-----|------| |------+-----+-----.
  46. * | | | Alt | | Alt | | |
  47. * |BSPC|LOWER|------| |------|RAISE|Space|
  48. * | | | LGUI | | LGUI | | |
  49. * `-----------------' `------------------'
  50. */
  51. [_QWERTY] = LAYOUT_ergodox(
  52. // left hand
  53. KC_MINUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
  54. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRACKET,
  55. KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
  56. KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_FN1,
  57. TG(_NUM), KC_LCTL, KC_LALT, KC_LGUI, LOWER,
  58. KC_MPLY, TG(_MOUSE),
  59. KC_LALT,
  60. LOWER, KC_BSPACE, KC_LGUI,
  61. // right hand
  62. KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
  63. KC_RBRACKET, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE,
  64. KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE,
  65. KC_FN1, KC_N, KC_M, KC_COMM, KC_DOT, LT(_MOUSE, KC_SLSH), KC_ENTER,
  66. RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,
  67. TG(_NUM), TG(_MOUSE),
  68. KC_LALT,
  69. KC_LGUI, KC_SPACE, RAISE
  70. ),
  71. /* Keymap 0: Basic Dvorak layer
  72. *
  73. * ,---------------------------------------------. ,--------------------------------------------.
  74. * | - | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
  75. * |--------+-----+-----+-----+-----+------------| |------+-----+-----+-----+-----+-----+--------|
  76. * | Tab | ' | , | . | P | Y | [{ | | ]} | F | G | C | R | L | BSPC |
  77. * |--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
  78. * | ESC | A | O | E | U | I |------| |------| D | H | T | N | S | / |
  79. * |--------+-----+-----+-----+-----+-----| L1 | | L1 |-----+-----+-----+-----+-----+--------|
  80. * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | Enter |
  81. * `--------+-----+-----+-----+-----+------------' `------------+-----+-----+-----+-----+--------'
  82. * | Num |Ctrl | Alt |LGUI |Lower| |Raise|Left |Down | Up |Right |
  83. * `------------------------------' `------------------------------'
  84. * ,------------. ,------------.
  85. * |Play |Mouse | | Num |Mouse|
  86. * ,----|-----|------| |------+-----+-----.
  87. * | | | Alt | | Alt | | |
  88. * |BSPC|LOWER|------| |------|RAISE|Space|
  89. * | | | LGUI | | LGUI | | |
  90. * `-----------------' `------------------'
  91. */
  92. [_DVORAK] = LAYOUT_ergodox(
  93. // left hand
  94. KC_MINUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
  95. KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_LBRACKET,
  96. KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I,
  97. KC_LSPO, KC_SCOLON, KC_Q, KC_J, KC_K, KC_X, KC_FN1,
  98. TG(_NUM), KC_LCTL, KC_LALT, KC_LGUI, LOWER,
  99. KC_MPLY, TG(_MOUSE),
  100. KC_LALT,
  101. KC_BSPACE, LOWER, KC_LGUI,
  102. // right hand
  103. KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
  104. KC_RBRACKET, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPACE,
  105. KC_D, KC_H, KC_T, KC_N, KC_S, LT(MOUSE, KC_SLSH),
  106. KC_FN1, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENTER,
  107. RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,
  108. TG(_NUM), TG(_MOUSE),
  109. KC_LALT,
  110. KC_LGUI, RAISE, KC_SPACE
  111. ),
  112. /* Keymap 0: Basic Workman layer
  113. *
  114. * ,---------------------------------------------. ,--------------------------------------------.
  115. * | - | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
  116. * |--------+-----+-----+-----+-----+------------| |------+-----+-----+-----+-----+-----+--------|
  117. * | Tab | Q | D | R | W | B | [{ | | ]} | J | F | U | P | ; | BSPC |
  118. * |--------+-----+-----+-----+-----+-----| | | |-----+-----+-----+-----+-----+--------|
  119. * | ESC | A | S | H | T | G |------| |------| Y | N | E | O | I | '" |
  120. * |--------+-----+-----+-----+-----+-----| L1 | | L1 |-----+-----+-----+-----+-----+--------|
  121. * | LShift | Z | X | M | C | V | | | | K | L | , | . | / | Enter |
  122. * `--------+-----+-----+-----+-----+------------' `------------+-----+-----+-----+-----+--------'
  123. * | Num |Ctrl | Alt |LGUI |Lower| |Raise|Left |Down | Up |Right |
  124. * `------------------------------' `------------------------------'
  125. * ,------------. ,------------.
  126. * |Play |Mouse | | Num |Mouse|
  127. * ,----|-----|------| |------+-----+-----.
  128. * | | | Alt | | Alt | | |
  129. * |BSPC|LOWER|------| |------|RAISE|Space|
  130. * | | | LGUI | | LGUI | | |
  131. * `-----------------' `------------------'
  132. */
  133. [_WORKMAN] = LAYOUT_ergodox(
  134. // left hand
  135. KC_MINUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
  136. KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_LBRACKET,
  137. KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G,
  138. KC_LSPO, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_FN1,
  139. TG(_NUM), KC_LCTL, KC_LALT, KC_LGUI, LOWER,
  140. KC_MPLY, TG(_MOUSE),
  141. KC_LALT,
  142. KC_BSPACE, LOWER, KC_LGUI,
  143. // right hand
  144. KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
  145. KC_RBRACKET, KC_J, KC_F, KC_U, KC_P, KC_SCOLON, KC_BSPACE,
  146. KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOTE,
  147. KC_FN1, KC_K, KC_L, KC_COMM, KC_DOT, LT(_MOUSE, KC_SLSH), KC_ENTER,
  148. RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,
  149. NUM, TG(_MOUSE),
  150. KC_LALT,
  151. KC_LGUI, RAISE, KC_SPACE
  152. ),
  153. /* Lower
  154. *
  155. * ,---------------------------------------------------. ,--------------------------------------------------.
  156. * | Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
  157. * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  158. * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | |
  159. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  160. * | Del | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | _ | + | { | } | | |
  161. * |---------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
  162. * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | Home | End | |
  163. * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  164. * | | | | | | | | Next | Vol- | Vol+ | Play |
  165. * `-----------------------------------' `----------------------------------'
  166. * ,-------------. ,-------------.
  167. * |Animat| | |Toggle|Solid |
  168. * ,------|------|------| |------+------+------.
  169. * |Bright|Bright| | | |Hue- |Hue+ |
  170. * |ness- |ness+ |------| |------| | |
  171. * | | | | | | | |
  172. * `--------------------' `--------------------'
  173. */
  174. [_LOWER] = LAYOUT_ergodox(
  175. // left hand
  176. VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
  177. KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
  178. KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  179. _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
  180. _______, _______, _______, _______, _______,
  181. _______, _______,
  182. _______,
  183. _______, _______, _______,
  184. // right hand
  185. KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  186. _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
  187. KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
  188. _______, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
  189. _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
  190. _______, _______,
  191. _______,
  192. _______, _______, _______
  193. ),
  194. /* Raise
  195. *
  196. * ,---------------------------------------------------. ,--------------------------------------------------.
  197. * | Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | F11 |
  198. * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  199. * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
  200. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  201. * | Del | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | - | = | [ | ] | \ |
  202. * |---------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------|
  203. * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
  204. * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  205. * | | | | | | | | Next | Vol- | Vol+ | Play |
  206. * `-----------------------------------' `----------------------------------'
  207. * ,-------------. ,-------------.
  208. * |Animat| | |Toggle|Solid |
  209. * ,------|------|------| |------+------+------.
  210. * |Bright|Bright| | | |Hue- |Hue+ |
  211. * |ness- |ness+ |------| |------| | |
  212. * | | | | | | | |
  213. * `--------------------' `--------------------'
  214. */
  215. [_RAISE] = LAYOUT_ergodox(
  216. // left hand
  217. VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
  218. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______,
  219. KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  220. _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
  221. _______, _______, _______, _______, _______,
  222. _______, _______,
  223. _______,
  224. _______, _______, _______,
  225. // right hand
  226. KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  227. _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
  228. KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
  229. _______, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
  230. _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
  231. _______, _______,
  232. _______,
  233. _______, _______, _______
  234. ),
  235. /* Adjust
  236. *
  237. * ,--------------------------------------------------. ,--------------------------------------------------.
  238. * |Version | | | | | | | | | | | | | | |
  239. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  240. * | |Reset |Debug | | | | | | | |TRM on|TRMoff| | | Del |
  241. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  242. * | | | | | |AG Nrm|------| |------|AG Swp|QWERTY|Wrkman|Dvorak| | |
  243. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  244. * | | | | | | | | | | | | Prev | Next | | |
  245. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  246. * | | | | | | |VolUp |VolDn | Mute | | |
  247. * `----------------------------------' `----------------------------------'
  248. * ,-------------. ,-------------.
  249. * | | | | | |
  250. * ,------|------|------| |------+------+------.
  251. * | | | | | | | |
  252. * | | |------| |------| | |
  253. * | | | | | | | |
  254. * `--------------------' `--------------------'
  255. */
  256. [_ADJUST] = LAYOUT_ergodox(
  257. // left hand
  258. VRSN, _______, _______, _______, _______, _______, _______,
  259. _______, RESET, DEBUG, _______, _______, _______, _______,
  260. _______, _______, _______, _______, _______, AG_NORM,
  261. _______, _______, _______, _______, _______, _______, _______,
  262. _______, _______, _______, _______, _______,
  263. _______, _______,
  264. _______,
  265. _______, _______, _______,
  266. // right hand
  267. _______, _______, _______, _______, _______, _______, _______,
  268. _______, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
  269. AG_SWAP, QWERTY, WORKMAN, DVORAK, _______, _______,
  270. _______, _______, _______, _______, _______, _______, _______,
  271. _______, _______, _______, _______, _______,
  272. _______, _______,
  273. _______,
  274. _______, _______, _______
  275. ),
  276. /* Keymap 2: Media and mouse keys
  277. *
  278. * ,--------------------------------------------------. ,--------------------------------------------------.
  279. * | | | | | | | | | | | | | | | |
  280. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  281. * | | | Lclk | MsUp | Rclk |Wh Up | | | | | | | | | |
  282. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  283. * | | |MsLeft|MsDown|MsRght|Wh Dn |------| |------| | | | | | Play |
  284. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  285. * | | | | | | | | | | | | Prev | Next | | |
  286. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  287. * | | | | | | |VolUp |VolDn | Mute | | |
  288. * `----------------------------------' `----------------------------------'
  289. * ,-------------. ,-------------.
  290. * | | | | | |
  291. * ,------|------|------| |------+------+------.
  292. * | | | | | |Brwser|Brwser|
  293. * | Lclk | Rclk |------| |------|Back |Fwd |
  294. * | | | | | | | |
  295. * `--------------------' `--------------------'
  296. */
  297. // MOUSE
  298. [_MOUSE] = LAYOUT_ergodox(
  299. // left hand
  300. _______, _______, _______, _______, _______, _______, _______,
  301. _______, _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_D, _______,
  302. _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U,
  303. _______, _______, KC_WH_L, KC_BTN3, KC_WH_R, _______, TO(_GAME),
  304. _______, _______, _______, _______, _______,
  305. _______, _______,
  306. KC_WH_D,
  307. KC_BTN1, KC_BTN2, KC_WH_U,
  308. // right hand
  309. _______, _______, _______, _______, _______, _______, _______,
  310. _______, _______, _______, _______, _______, _______, _______,
  311. _______, _______, _______, _______, _______, KC_MPLY,
  312. TO(_GAME), _______, _______, KC_MPRV, KC_MNXT, _______, _______,
  313. KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
  314. _______, _______,
  315. _______,
  316. _______, KC_WBAK, KC_WFWD
  317. ),
  318. /* Keymap 2: GAME
  319. *
  320. * ,--------------------------------------------------. ,--------------------------------------------------.
  321. * | | | | | | | | | | | | | | | |
  322. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  323. * | | | Lclk | MsUp | Rclk | | | | | | | | | | |
  324. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  325. * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
  326. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  327. * | | | | | | | | | | | | Prev | Next | | |
  328. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  329. * | | | | | | |VolUp |VolDn | Mute | | |
  330. * `----------------------------------' `----------------------------------'
  331. * ,-------------. ,-------------.
  332. * | | | | | |
  333. * ,------|------|------| |------+------+------.
  334. * | | | | | |Brwser|Brwser|
  335. * | Lclk | Rclk |------| |------|Back |Fwd |
  336. * | | | | | | | |
  337. * `--------------------' `--------------------'
  338. */
  339. [_GAME] = LAYOUT_ergodox(
  340. // left hand
  341. _______, _______, _______, _______, _______, _______, _______,
  342. _______, _______, _______, _______, _______, _______, _______,
  343. _______, _______, _______, _______, _______, _______,
  344. _______, _______, _______, _______, _______, _______, _______,
  345. _______, _______, _______, _______, _______,
  346. _______, _______,
  347. _______,
  348. KC_SPACE, KC_LGUI, KC_LALT,
  349. // right hand
  350. _______, _______, _______, _______, _______, _______, _______,
  351. _______, _______, _______, _______, _______, _______, _______,
  352. _______, _______, _______, _______, _______, _______,
  353. _______, _______, _______, _______, _______, _______, _______,
  354. _______, _______, _______, _______, _______,
  355. TG(_MOUSE), TG(_NUM),
  356. _______,
  357. _______, _______, _______
  358. ),
  359. /* Keymap 2: NUMPAD
  360. *
  361. * ,--------------------------------------------------. ,--------------------------------------------------.
  362. * | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
  363. * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  364. * | | ! | @ | { | } | | | | | | | 7 | 8 | 9 | * | |
  365. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  366. * | | # | $ | ( | ) | ` |------| |------| | 4 | 5 | 6 | + | |
  367. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  368. * | | % | ^ | [ | ] | ~ | | | | | 1 | 2 | 3 | \ | |
  369. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  370. * | | | | | | | . | 0 | 0 | = | |
  371. * `----------------------------------' `----------------------------------'
  372. * ,-------------. ,-------------.
  373. * | | | | | |
  374. * ,------|------|------| |------+------+------.
  375. * | | | | | | | |
  376. * | | |------| |------| | |
  377. * | | | | | | | |
  378. * `--------------------' `--------------------'
  379. */
  380. [_NUM] = LAYOUT_ergodox(
  381. // left hand
  382. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
  383. _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______,
  384. _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
  385. _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______,
  386. _______, _______, _______, _______, _______,
  387. _______, _______,
  388. _______,
  389. _______, _______, _______,
  390. // right hand
  391. KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  392. _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, _______,
  393. _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______,
  394. _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______,
  395. KC_KP_DOT, KC_KP_0, KC_KP_0, KC_KP_EQUAL, _______,
  396. _______, _______,
  397. _______,
  398. _______, _______, _______
  399. ),
  400. };
  401. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  402. {
  403. // MACRODOWN only works in this function
  404. switch(id) {
  405. case 0:
  406. if (record->event.pressed) {
  407. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  408. }
  409. break;
  410. case 1:
  411. if (record->event.pressed) { // For resetting EEPROM
  412. eeconfig_init();
  413. }
  414. break;
  415. }
  416. return MACRO_NONE;
  417. };
  418. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  419. switch (keycode) {
  420. case QWERTY:
  421. if (record->event.pressed) {
  422. print("mode just switched to qwerty and this is a huge string\n");
  423. set_single_persistent_default_layer(_QWERTY);
  424. }
  425. return false;
  426. break;
  427. case WORKMAN:
  428. if (record->event.pressed) {
  429. set_single_persistent_default_layer(_WORKMAN);
  430. }
  431. return false;
  432. break;
  433. case DVORAK:
  434. if (record->event.pressed) {
  435. set_single_persistent_default_layer(_DVORAK);
  436. }
  437. return false;
  438. break;
  439. case LOWER:
  440. if (record->event.pressed) {
  441. layer_on(_LOWER);
  442. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  443. if (IS_LAYER_ON(_ADJUST)) {
  444. layer_off(_LOWER);
  445. layer_off(_RAISE);
  446. }
  447. } else {
  448. layer_off(_LOWER);
  449. if (IS_LAYER_ON(_ADJUST)) {
  450. layer_off(_ADJUST);
  451. layer_on(_RAISE);
  452. }
  453. }
  454. return false;
  455. break;
  456. case RAISE:
  457. if (record->event.pressed) {
  458. layer_on(_RAISE);
  459. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  460. if (IS_LAYER_ON(_ADJUST)) {
  461. layer_off(_RAISE);
  462. layer_off(_LOWER);
  463. }
  464. } else {
  465. layer_off(_RAISE);
  466. if (IS_LAYER_ON(_ADJUST)) {
  467. layer_off(_ADJUST);
  468. layer_on(_LOWER);
  469. }
  470. }
  471. return false;
  472. break;
  473. case EPRM:
  474. if (record->event.pressed) {
  475. eeconfig_init();
  476. }
  477. return false;
  478. break;
  479. case VRSN:
  480. if (record->event.pressed) {
  481. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  482. }
  483. return false;
  484. break;
  485. case RGB_SLD:
  486. if (record->event.pressed) {
  487. #ifdef RGBLIGHT_ENABLE
  488. rgblight_mode(1);
  489. #endif
  490. }
  491. return false;
  492. break;
  493. }
  494. return true;
  495. }
  496. /**
  497. * Runs just one time when the keyboard initializes.
  498. */
  499. void matrix_init_user(void) {
  500. };
  501. /**
  502. * Runs constantly in the background, in a loop.
  503. */
  504. void matrix_scan_user(void) {
  505. uint8_t layer = biton32(layer_state);
  506. ergodox_board_led_off();
  507. ergodox_right_led_1_off();
  508. ergodox_right_led_2_off();
  509. ergodox_right_led_3_off();
  510. switch (layer) {
  511. case _LOWER:
  512. ergodox_right_led_1_on();
  513. break;
  514. case _RAISE:
  515. ergodox_right_led_2_on();
  516. break;
  517. case _ADJUST:
  518. ergodox_right_led_3_on();
  519. break;
  520. }
  521. };