keymap.c 31 KB

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