keymap.c 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699
  1. #include QMK_KEYBOARD_H
  2. #include "narze.h"
  3. #include "version.h"
  4. #include "keymap_colemak.h"
  5. extern keymap_config_t keymap_config;
  6. enum ergodox_layers {
  7. _QWERTY,
  8. _COLEMAK,
  9. _QWOC,
  10. _LOWER,
  11. _RAISE,
  12. _PLOVER,
  13. // Intermediate layers for SuperDuper (Combo keys does not work on Infinity yet)
  14. _SUPERDUPER,
  15. _DEV,
  16. _MOUSE,
  17. _ADJUST,
  18. _MDIA,
  19. _SYMB,
  20. };
  21. enum ergodox_keycodes {
  22. QWERTY = SAFE_RANGE,
  23. COLEMAK,
  24. QWOC,
  25. LOWER,
  26. RAISE,
  27. PLOVER,
  28. SUPERDUPER,
  29. DEV,
  30. MOUSE,
  31. BACKLIT,
  32. EXT_PLV,
  33. SDTOGG, // Toggle SuperDuper
  34. EPRM,
  35. VRSN,
  36. RGB_SLD,
  37. GUI_UNDS,
  38. LSFT_LPRN,
  39. RSFT_RPRN,
  40. };
  41. // Narze : Custom Macros
  42. #define HPR_ESC ALL_T(KC_ESC)
  43. #define SFT_ENT SFT_T(KC_ENT)
  44. #define SFT_PO LSFT_LPRN
  45. #define SFT_PC RSFT_RPRN
  46. enum process_combo_event {
  47. CB_SUPERDUPER,
  48. };
  49. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  50. /* Qwerty
  51. *
  52. * ,--------------------------------------------------. ,--------------------------------------------------.
  53. * | ` | 1 | 2 | 3 | 4 | 5 | Mdia | | Mdia | 6 | 7 | 8 | 9 | 0 | - |
  54. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  55. * | Tab | Q | W | E | R | T | Symb | | Symb | Y | U | I | O | P | \ |
  56. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  57. * | Hp/Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
  58. * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
  59. * | Sft/( | Z/Dv | X | C | V | B | | | | N | M | , | . | SD-/ | Sft/) |
  60. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  61. * |Rse/[ | Ctrl | Alt | Gui/_| Lwr | | Rse/B| Bksp | Alt | Ctrl | Low/] |
  62. * `----------------------------------' `----------------------------------'
  63. * ,-------------. ,-------------.
  64. * | Enter| LGui | | Alt |Ctrl/Esc|
  65. * ,------|------|------| |------+--------+------.
  66. * | | | Home | | PgUp | | |
  67. * | Space| Back |------| |------| Back |Enter |
  68. * | | Space| End | | PgDn | Space | |
  69. * `--------------------' `----------------------'
  70. */
  71. [_QWERTY] = LAYOUT_ergodox(
  72. // left hand
  73. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
  74. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SYMB, KC_NO),
  75. HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
  76. SFT_PO, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
  77. LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
  78. KC_ENT, KC_LGUI,
  79. KC_HOME,
  80. KC_SPC,KC_BSPC,KC_END,
  81. // right hand
  82. LT(_MDIA, KC_NO), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  83. LT(_SYMB, KC_NO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  84. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  85. MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC,
  86. RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC),
  87. KC_LALT, CTL_T(KC_ESC),
  88. KC_PGUP,
  89. KC_PGDN,KC_BSPC, KC_ENT
  90. ),
  91. /* Colemak
  92. *
  93. * ,--------------------------------------------------. ,--------------------------------------------------.
  94. * | ` | 1 | 2 | 3 | 4 | 5 | Mdia | | Mdia | 6 | 7 | 8 | 9 | 0 | - |
  95. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  96. * | Tab | Q | W | F | P | G | Symb | | Symb | J | L | U | Y | ; | \ |
  97. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  98. * | Hp/Esc | A | R | S | T | D |------| |------| H | N | E | I | O | ' |
  99. * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
  100. * | Sft/( | Z/Dv | X | C | V | B | | | | K | M | , | . | SD-/ | Sft/) |
  101. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  102. * |Rse/[ | Ctrl | Alt | Gui/_| Lwr | | Rse/B| Bksp | Alt | Ctrl | Low/] |
  103. * `----------------------------------' `----------------------------------'
  104. * ,-------------. ,-------------.
  105. * | Enter| LGui | | Alt |Ctrl/Esc|
  106. * ,------|------|------| |------+--------+------.
  107. * | | | Home | | PgUp | | |
  108. * | Space| Back |------| |------| Back |Enter |
  109. * | | Space| End | | PgDn | Space | |
  110. * `--------------------' `----------------------'
  111. */
  112. [_COLEMAK] = LAYOUT_ergodox(
  113. // left hand
  114. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
  115. KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SYMB, KC_NO),
  116. HPR_ESC, KC_A, KC_R, KC_S, KC_T, KC_D,
  117. SFT_PO, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
  118. LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
  119. KC_ENT, KC_LGUI,
  120. KC_HOME,
  121. KC_SPC,KC_BSPC,KC_END,
  122. // right hand
  123. LT(_MDIA, KC_NO), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  124. LT(_SYMB, KC_NO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
  125. KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
  126. MEH_T(KC_NO),KC_K, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC,
  127. RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC),
  128. KC_LALT, CTL_T(KC_ESC),
  129. KC_PGUP,
  130. KC_PGDN,KC_BSPC, KC_ENT
  131. ),
  132. /* Qwerty on software Colemak : Useful for gaming with qwerty keymaps! */
  133. [_QWOC] = LAYOUT_ergodox(
  134. // left hand
  135. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_MDIA, KC_NO),
  136. KC_TAB, CM_Q, CM_W, CM_E, CM_R, CM_T, LT(_SYMB, KC_NO),
  137. HPR_ESC, CM_A, CM_S, CM_D, CM_F, CM_G,
  138. SFT_PO, LT(_MOUSE, CM_Z), CM_X, CM_C, CM_V, CM_B, ALL_T(KC_NO),
  139. LT(_RAISE, KC_LBRC),KC_LCTL, KC_LALT, GUI_UNDS, LOWER,
  140. KC_ENT, KC_LGUI,
  141. KC_HOME,
  142. KC_SPC,KC_BSPC,KC_END,
  143. // right hand
  144. LT(_MDIA, KC_NO), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  145. LT(_SYMB, KC_NO), CM_Y, CM_U, CM_I, CM_O, CM_P, KC_BSLS,
  146. CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT,
  147. MEH_T(KC_NO),CM_N, CM_M, CM_COMM,CM_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC,
  148. RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC),
  149. KC_LALT, CTL_T(KC_ESC),
  150. KC_PGUP,
  151. KC_PGDN,KC_BSPC, KC_ENT
  152. ),
  153. /* Lower
  154. *
  155. * ,--------------------------------------------------. ,--------------------------------------------------.
  156. * | | | | | | | | | | | | | | | |
  157. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  158. * | | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | |
  159. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  160. * | | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | _ | + | { | } | | |
  161. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  162. * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | | | |
  163. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  164. * | | | | | | | | | | | |
  165. * `----------------------------------' `----------------------------------'
  166. * ,-------------. ,-------------.
  167. * | | | | | |
  168. * ,------|------|------| |------+------+------.
  169. * | | | | | | | |
  170. * | | |------| |------| | |
  171. * | | | | | | | |
  172. * `--------------------' `--------------------'
  173. */
  174. [_LOWER] = LAYOUT_ergodox(
  175. _______, _______, _______, _______, _______, _______, _______,
  176. _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
  177. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  178. _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
  179. _______, _______, _______, KC_BTN1, KC_BTN2,
  180. _______, _______,
  181. _______,
  182. _______, _______, _______,
  183. // right hand
  184. _______, _______, _______, _______, _______, _______, _______,
  185. _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
  186. KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
  187. _______, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, _______, _______,
  188. _______, _______, _______, _______, _______,
  189. _______, _______,
  190. _______,
  191. _______, _______, _______
  192. ),
  193. /* Raise
  194. *
  195. * ,--------------------------------------------------. ,--------------------------------------------------.
  196. * | | | | | | | | | | | | | | | |
  197. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  198. * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
  199. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  200. * | | F1 | F2 | F3 | F4 | F5 |------| |------| F6 | - | = | [ | ] | \ |
  201. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  202. * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | | | |
  203. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  204. * | | | | | | | | | | | |
  205. * `----------------------------------' `----------------------------------'
  206. * ,-------------. ,-------------.
  207. * | | | | | |
  208. * ,------|------|------| |------+------+------.
  209. * | | | | | | | |
  210. * | | |------| |------| | |
  211. * | | | | | | | |
  212. * `--------------------' `--------------------'
  213. */
  214. [_RAISE] = LAYOUT_ergodox(
  215. _______, _______, _______, _______, _______, _______, _______,
  216. _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______,
  217. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  218. _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
  219. _______, _______, _______, KC_BTN1, KC_BTN2,
  220. _______, _______,
  221. _______,
  222. _______, _______, _______,
  223. // right hand
  224. _______, _______, _______, _______, _______, _______, _______,
  225. _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
  226. KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
  227. _______, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, _______, _______,
  228. _______, _______, _______, _______, _______,
  229. _______, _______,
  230. _______,
  231. _______, _______, _______
  232. ),
  233. /* Plover
  234. *
  235. * ,--------------------------------------------------. ,--------------------------------------------------.
  236. * | # | # | # | # | # | # | | | | # | # | # | # | # | # |
  237. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  238. * | | # | # | # | # | # | | | | # | # | # | # | # | # |
  239. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  240. * | Hp/Esc | S | T | P | H | * |------| |------| * | F | P | L | T | D |
  241. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  242. * | Sft/( | S | K | W | R | * | | | | * | R | B | G | S | Z |
  243. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  244. * | Exit | | | A | O | | E | U | | | |
  245. * `----------------------------------' `----------------------------------'
  246. * ,-------------. ,-------------.
  247. * | Enter| LGui | | Alt |Ctrl/Esc|
  248. * ,------|------|------| |------+--------+------.
  249. * | | | Home | | PgUp | | |
  250. * | Space| Back |------| |------| Back |Enter |
  251. * | | Space| End | | PgDn | Space | |
  252. * `--------------------' `----------------------'
  253. */
  254. [_PLOVER] = LAYOUT_ergodox(
  255. // left hand
  256. KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
  257. XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
  258. XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T,
  259. XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX,
  260. EXT_PLV, XXXXXXX, XXXXXXX,KC_C, KC_V,
  261. KC_ENT, KC_LGUI,
  262. KC_HOME,
  263. KC_SPC,KC_BSPC,KC_END,
  264. // right hand
  265. XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
  266. XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX,
  267. KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  268. XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  269. KC_N, KC_M,XXXXXXX,XXXXXXX, XXXXXXX,
  270. KC_LALT, CTL_T(KC_ESC),
  271. KC_PGUP,
  272. KC_PGDN,KC_BSPC, KC_ENT
  273. ),
  274. /* SuperDuper : https://gist.github.com/narze/861e2167784842d38771
  275. *
  276. * ,--------------------------------------------------. ,--------------------------------------------------.
  277. * | | | | | | | | | | | | | | | |
  278. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  279. * | | | | | | | | | | | | T← | T→ | | |
  280. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  281. * | | A | [SuperDuper]| Bksp | Gui |------| |------| ← | ↓ | ↑ | → | Del | |
  282. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  283. * | | | | | | | | | | | | | | | |
  284. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  285. * | | | | | | | | | | | |
  286. * `----------------------------------' `----------------------------------'
  287. * ,-------------. ,-------------.
  288. * | | | | | |
  289. * ,------|------|------| |------+--------+------.
  290. * | | | | | | | |
  291. * | Shift| |------| |------| |Shift |
  292. * | | | | | | | |
  293. * `--------------------' `----------------------'
  294. */
  295. [_SUPERDUPER] = LAYOUT_ergodox(
  296. // left hand
  297. _______, _______, _______, _______, _______, _______, _______,
  298. _______, _______, _______, _______, _______, _______, _______,
  299. _______, KC_LALT, _______, _______, KC_BSPC, KC_LGUI,
  300. _______, _______, _______, _______, _______, _______, _______,
  301. _______, _______, _______, _______, _______,
  302. _______, _______,
  303. _______,
  304. KC_LSFT,_______,_______,
  305. // right hand
  306. _______, _______, _______, _______, _______, _______, _______,
  307. _______, _______, _______, S(LGUI(KC_LBRC)), S(LGUI(KC_RBRC)), _______, _______,
  308. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, _______,
  309. _______, _______, _______, _______, _______, _______, _______,
  310. _______, _______, _______, _______, _______,
  311. _______, _______,
  312. _______,
  313. _______,_______, KC_LSFT
  314. ),
  315. /* Dev Layer
  316. *
  317. * ,--------------------------------------------------. ,--------------------------------------------------.
  318. * | | | | | | | | | | | | | | | |
  319. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  320. * | | | | | | | | | | | - | + | ( | ) | |
  321. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  322. * | | | | | | |------| |------| _ | [ | ] | { | } | |
  323. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  324. * | | | | | | | | | | = | | | < | > | ? | |
  325. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  326. * | | | | | | | | | | | |
  327. * `----------------------------------' `----------------------------------'
  328. * ,-------------. ,-------------.
  329. * | | | | | |
  330. * ,------|------|------| |------+--------+------.
  331. * | | | | | | | |
  332. * | | |------| |------| | |
  333. * | | | | | | | |
  334. * `--------------------' `----------------------'
  335. */
  336. [_DEV] = LAYOUT_ergodox(
  337. // left hand
  338. _______, _______, _______, _______, _______, _______, _______,
  339. _______, _______, _______, _______, _______, _______, _______,
  340. _______, _______, _______, _______, _______, _______,
  341. _______, _______, _______, _______, _______, _______, _______,
  342. _______, _______, _______, _______, _______,
  343. _______, _______,
  344. _______,
  345. _______,_______,_______,
  346. // right hand
  347. _______, _______, _______, _______, _______, _______, _______,
  348. _______, _______, KC_MINS, S(KC_EQL), S(KC_9), S(KC_0), _______,
  349. S(KC_MINS), KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), _______,
  350. _______, KC_EQL, S(KC_BSLASH), S(KC_COMM), S(KC_DOT), S(KC_SLSH), _______,
  351. _______, _______, _______, _______, _______,
  352. _______, _______,
  353. _______,
  354. _______,_______, _______
  355. ),
  356. /* Mouse
  357. *
  358. * ,--------------------------------------------------. ,--------------------------------------------------.
  359. * | | | | | | | | | | | | | | | |
  360. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  361. * | | | S↑ | M↑ | S↓ | | | | | | | S↑ | S↓ | | |
  362. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  363. * | | | M← | M↓ | M→ | |------| |------| M← | M↓ | M↑ | M→ | | |
  364. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  365. * | |[Mouse| | | | M3 | | | | M3 | | | | | |
  366. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  367. * | | | | | M2 | | M2 | | | | |
  368. * `----------------------------------' `----------------------------------'
  369. * ,-------------. ,-------------.
  370. * | | | | | |
  371. * ,------|------|------| |------+--------+------.
  372. * | | | | | | | |
  373. * | Left | |------| |------| | Left |
  374. * | Click| | | | | | Click|
  375. * `--------------------' `----------------------'
  376. */
  377. [_MOUSE] = LAYOUT_ergodox(
  378. // left hand
  379. _______, _______, _______, _______, _______, _______, _______,
  380. _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
  381. _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
  382. _______, _______, _______, _______, _______, KC_BTN3, _______,
  383. _______, _______, _______, _______, KC_BTN2,
  384. _______, _______,
  385. _______,
  386. KC_BTN1,_______,_______,
  387. // right hand
  388. _______, _______, _______, _______, _______, _______, _______,
  389. _______, _______, _______, KC_WH_U, KC_WH_D, _______, _______,
  390. KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
  391. _______, KC_BTN3, _______, _______, _______, _______, _______,
  392. KC_BTN2, _______, _______, _______, _______,
  393. _______, _______,
  394. _______,
  395. _______,_______, KC_BTN1
  396. ),
  397. /* Adjust (Lower + Raise)
  398. *
  399. * ,--------------------------------------------------. ,--------------------------------------------------.
  400. * | | | | | | | | | | | | | | | |
  401. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  402. * | |Reset | | | | | | | | | | | | | Del |
  403. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  404. * | | | | | |AGnorm|------| |------|AGswap|Qwerty|Colemk|QwOnCo|Plover| |
  405. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  406. * | | | | | | | | | |SDTogg| | | | | |
  407. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  408. * | | | | | | | | | | | BACKLIT|
  409. * `----------------------------------' `----------------------------------'
  410. * ,-------------. ,-------------.
  411. * | | | | | |
  412. * ,------|------|------| |------+--------+------.
  413. * | | | | | | | |
  414. * | | |------| |------| | |
  415. * | | | | | | | |
  416. * `--------------------' `----------------------'
  417. */
  418. [_ADJUST] = LAYOUT_ergodox(
  419. // left hand
  420. _______, _______, _______, _______, _______, _______, _______,
  421. _______, RESET, _______, _______, _______, _______, _______,
  422. _______, _______, _______, _______, _______, AG_NORM,
  423. _______, _______, _______, _______, _______, _______, _______,
  424. _______, _______, _______, _______, _______,
  425. _______, _______,
  426. _______,
  427. _______,_______,_______,
  428. // right hand
  429. _______, _______, _______, _______, _______, _______, _______,
  430. _______, _______, _______, _______, _______, _______, KC_DEL,
  431. AG_SWAP, QWERTY, COLEMAK, QWOC, PLOVER, _______,
  432. _______, SDTOGG, _______, _______, _______, _______, _______,
  433. _______, _______, _______, _______, BACKLIT,
  434. _______, _______,
  435. _______,
  436. _______,_______, _______
  437. ),
  438. /* Layers below are not actively used but kept for future reference */
  439. /* Symbol
  440. * ,---------------------------------------------------. ,--------------------------------------------------.
  441. * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
  442. * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  443. * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
  444. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  445. * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
  446. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  447. * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
  448. * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  449. * | EPRM | | | | | | | . | 0 | = | |
  450. * `-----------------------------------' `----------------------------------'
  451. * ,-------------. ,-------------.
  452. * |Animat| | |Toggle|Solid |
  453. * ,------|------|------| |------+------+------.
  454. * |Bright|Bright| | | |Hue- |Hue+ |
  455. * |ness- |ness+ |------| |------| | |
  456. * | | | | | | | |
  457. * `--------------------' `--------------------'
  458. */
  459. // SYMBOLS
  460. [_SYMB] = LAYOUT_ergodox(
  461. // left hand
  462. VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
  463. _______,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,_______,
  464. _______,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
  465. _______,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,_______,
  466. EPRM,_______,_______,_______,_______,
  467. RGB_MOD,_______,
  468. _______,
  469. RGB_VAD,RGB_VAI,_______,
  470. // right hand
  471. _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  472. _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
  473. KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______,
  474. _______, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______,
  475. _______,KC_DOT, KC_0, KC_EQL, _______,
  476. RGB_TOG, RGB_SLD,
  477. _______,
  478. _______, RGB_HUD, RGB_HUI
  479. ),
  480. /* Media and mouse keys
  481. *
  482. * ,--------------------------------------------------. ,--------------------------------------------------.
  483. * | | | | | | | | | | | | | | | |
  484. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  485. * | | | | MsUp | | | | | | | | | | | |
  486. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  487. * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
  488. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  489. * | | | | | | | | | | | | Prev | Next | | |
  490. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  491. * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
  492. * `----------------------------------' `----------------------------------'
  493. * ,-------------. ,-------------.
  494. * | | | | | |
  495. * ,------|------|------| |------+------+------.
  496. * | | | | | | |Brwser|
  497. * | | |------| |------| |Back |
  498. * | | | | | | | |
  499. * `--------------------' `--------------------'
  500. */
  501. // MEDIA AND MOUSE
  502. [_MDIA] = LAYOUT_ergodox(
  503. _______, _______, _______, _______, _______, _______, _______,
  504. _______, _______, _______, KC_MS_U, _______, _______, _______,
  505. _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
  506. _______, _______, _______, _______, _______, _______, _______,
  507. _______, _______, _______, KC_BTN1, KC_BTN2,
  508. _______, _______,
  509. _______,
  510. _______, _______, _______,
  511. // right hand
  512. _______, _______, _______, _______, _______, _______, _______,
  513. _______, _______, _______, _______, _______, _______, _______,
  514. _______, _______, _______, _______, _______, KC_MPLY,
  515. _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______,
  516. KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
  517. _______, _______,
  518. _______,
  519. _______, _______, KC_WBAK
  520. )
  521. };
  522. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  523. switch (keycode) {
  524. case QWERTY:
  525. if (record->event.pressed) {
  526. set_single_persistent_default_layer(_QWERTY);
  527. set_superduper_key_combo_layer(_QWERTY);
  528. }
  529. return false;
  530. case COLEMAK:
  531. if (record->event.pressed) {
  532. set_single_persistent_default_layer(_COLEMAK);
  533. set_superduper_key_combo_layer(_COLEMAK);
  534. }
  535. return false;
  536. case QWOC:
  537. if (record->event.pressed) {
  538. set_single_persistent_default_layer(_QWOC);
  539. set_superduper_key_combo_layer(_QWOC);
  540. }
  541. return false;
  542. case LOWER:
  543. if (record->event.pressed) {
  544. layer_on(_LOWER);
  545. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  546. } else {
  547. layer_off(_LOWER);
  548. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  549. }
  550. return false;
  551. case RAISE:
  552. if (record->event.pressed) {
  553. layer_on(_RAISE);
  554. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  555. } else {
  556. layer_off(_RAISE);
  557. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  558. }
  559. return false;
  560. case BACKLIT:
  561. if (record->event.pressed) {
  562. register_code(KC_RSFT);
  563. #ifdef BACKLIGHT_ENABLE
  564. backlight_step();
  565. #endif
  566. } else {
  567. unregister_code(KC_RSFT);
  568. }
  569. return false;
  570. case PLOVER:
  571. if (record->event.pressed) {
  572. layer_off(_RAISE);
  573. layer_off(_LOWER);
  574. layer_off(_ADJUST);
  575. layer_on(_PLOVER);
  576. if (!eeconfig_is_enabled()) {
  577. eeconfig_init();
  578. }
  579. keymap_config.raw = eeconfig_read_keymap();
  580. keymap_config.nkro = 1;
  581. eeconfig_update_keymap(keymap_config.raw);
  582. }
  583. return false;
  584. case EXT_PLV:
  585. if (record->event.pressed) {
  586. layer_off(_PLOVER);
  587. }
  588. return false;
  589. case SDTOGG:
  590. if (record->event.pressed) {
  591. toggle_superduper_mode();
  592. }
  593. return false;
  594. case VRSN:
  595. if (record->event.pressed) {
  596. SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  597. }
  598. return false;
  599. case RGB_SLD:
  600. if (record->event.pressed) {
  601. #ifdef RGBLIGHT_ENABLE
  602. rgblight_mode(1);
  603. #endif
  604. }
  605. return false;
  606. // Macros
  607. // 1. Hold for LGUI, tap for Underscore
  608. case GUI_UNDS:
  609. perform_space_cadet(record, KC_LGUI, KC_LSFT, KC_MINS);
  610. return false;
  611. // 2. Hold for LSHIFT, tap for Parens open
  612. case LSFT_LPRN:
  613. perform_space_cadet(record, KC_LSFT, KC_LSFT, KC_9);
  614. return false;
  615. // 3. Hold for RSHIFT, tap for Parens close
  616. case RSFT_RPRN:
  617. perform_space_cadet(record, KC_RSFT, KC_RSFT, KC_0);
  618. return false;
  619. }
  620. return true;
  621. }
  622. void matrix_init_user(void) {
  623. }
  624. void matrix_setup(void) {
  625. set_superduper_key_combos();
  626. }
  627. void matrix_scan_user(void) {
  628. // uint8_t layer = biton32(layer_state);
  629. // ergodox_board_led_off();
  630. // ergodox_right_led_1_off();
  631. // ergodox_right_led_2_off();
  632. // ergodox_right_led_3_off();
  633. // switch (layer) {
  634. // // TODO: Make this relevant to the ErgoDox EZ.
  635. // case 1:
  636. // ergodox_right_led_1_on();
  637. // break;
  638. // case 2:
  639. // ergodox_right_led_2_on();
  640. // break;
  641. // default:
  642. // // none
  643. // break;
  644. // }
  645. }
  646. // Combos
  647. void process_combo_event(uint8_t combo_index, bool pressed) {
  648. if (pressed) {
  649. switch(combo_index) {
  650. case CB_SUPERDUPER:
  651. layer_on(_SUPERDUPER);
  652. ergodox_board_led_on();
  653. break;
  654. }
  655. } else {
  656. layer_off(_SUPERDUPER);
  657. ergodox_board_led_off();
  658. unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them
  659. }
  660. }