You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

697 lines
39 KiB

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