keymap.c 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  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. _MOUSE,
  16. _ADJUST,
  17. _MDIA,
  18. _SYMB,
  19. };
  20. enum ergodox_keycodes {
  21. QWERTY = SAFE_RANGE,
  22. COLEMAK,
  23. QWOC,
  24. LOWER,
  25. RAISE,
  26. PLOVER,
  27. SUPERDUPER,
  28. MOUSE,
  29. BACKLIT,
  30. EXT_PLV,
  31. SDTOGG, // Toggle SuperDuper
  32. EPRM,
  33. VRSN,
  34. RGB_SLD,
  35. GUI_UNDS,
  36. LSFT_LPRN,
  37. RSFT_RPRN,
  38. };
  39. // Narze : Custom Macros
  40. #define HPR_ESC ALL_T(KC_ESC)
  41. #define SFT_ENT SFT_T(KC_ENT)
  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/Mo | 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(_MOUSE, 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. LT(_RAISE, KC_BSPC), KC_BSPC,KC_RALT,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/Mo | 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(_MOUSE, 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. LT(_RAISE, KC_BSPC), KC_BSPC,KC_RALT,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. LT(_RAISE, KC_BSPC), KC_BSPC,KC_RALT,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. /* Mouse
  314. *
  315. * ,--------------------------------------------------. ,--------------------------------------------------.
  316. * | | | | | | | | | | | | | | | |
  317. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  318. * | | | S↑ | M↑ | S↓ | | | | | | | S↑ | S↓ | | |
  319. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  320. * | | | M← | M↓ | M→ | |------| |------| M← | M↓ | M↑ | M→ | | |
  321. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  322. * | |[Mouse| | | | M3 | | | | M3 | | | | | |
  323. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  324. * | | | | | M2 | | M2 | | | | |
  325. * `----------------------------------' `----------------------------------'
  326. * ,-------------. ,-------------.
  327. * | | | | | |
  328. * ,------|------|------| |------+--------+------.
  329. * | | | | | | | |
  330. * | Left | |------| |------| | Left |
  331. * | Click| | | | | | Click|
  332. * `--------------------' `----------------------'
  333. */
  334. [_MOUSE] = LAYOUT_ergodox(
  335. // left hand
  336. _______, _______, _______, _______, _______, _______, _______,
  337. _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
  338. _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
  339. _______, _______, _______, _______, _______, KC_BTN3, _______,
  340. _______, _______, _______, _______, KC_BTN2,
  341. _______, _______,
  342. _______,
  343. KC_BTN1,_______,_______,
  344. // right hand
  345. _______, _______, _______, _______, _______, _______, _______,
  346. _______, _______, _______, KC_WH_U, KC_WH_D, _______, _______,
  347. KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
  348. _______, KC_BTN3, _______, _______, _______, _______, _______,
  349. KC_BTN2, _______, _______, _______, _______,
  350. _______, _______,
  351. _______,
  352. _______,_______, KC_BTN1
  353. ),
  354. /* Adjust (Lower + Raise)
  355. *
  356. * ,--------------------------------------------------. ,--------------------------------------------------.
  357. * | | | | | | | | | | | | | | | |
  358. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  359. * | |Reset | | | | | | | | | | | | | Del |
  360. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  361. * | | | | | |AGnorm|------| |------|AGswap|Qwerty|Colemk|QwOnCo|Plover| |
  362. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  363. * | | | | | | | | | |SDTogg| | | | | |
  364. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  365. * | | | | | | | | | | | BACKLIT|
  366. * `----------------------------------' `----------------------------------'
  367. * ,-------------. ,-------------.
  368. * | | | | | |
  369. * ,------|------|------| |------+--------+------.
  370. * | | | | | | | |
  371. * | | |------| |------| | |
  372. * | | | | | | | |
  373. * `--------------------' `----------------------'
  374. */
  375. [_ADJUST] = LAYOUT_ergodox(
  376. // left hand
  377. _______, _______, _______, _______, _______, _______, _______,
  378. _______, RESET, _______, _______, _______, _______, _______,
  379. _______, _______, _______, _______, _______, AG_NORM,
  380. _______, _______, _______, _______, _______, _______, _______,
  381. _______, _______, _______, _______, _______,
  382. _______, _______,
  383. _______,
  384. _______,_______,_______,
  385. // right hand
  386. _______, _______, _______, _______, _______, _______, _______,
  387. _______, _______, _______, _______, _______, _______, KC_DEL,
  388. AG_SWAP, QWERTY, COLEMAK, QWOC, PLOVER, _______,
  389. _______, SDTOGG, _______, _______, _______, _______, _______,
  390. _______, _______, _______, _______, BACKLIT,
  391. _______, _______,
  392. _______,
  393. _______,_______, _______
  394. ),
  395. /* Layers below are not actively used but kept for future reference */
  396. /* Symbol
  397. * ,---------------------------------------------------. ,--------------------------------------------------.
  398. * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
  399. * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  400. * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
  401. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  402. * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
  403. * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  404. * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
  405. * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  406. * | EPRM | | | | | | | . | 0 | = | |
  407. * `-----------------------------------' `----------------------------------'
  408. * ,-------------. ,-------------.
  409. * |Animat| | |Toggle|Solid |
  410. * ,------|------|------| |------+------+------.
  411. * |Bright|Bright| | | |Hue- |Hue+ |
  412. * |ness- |ness+ |------| |------| | |
  413. * | | | | | | | |
  414. * `--------------------' `--------------------'
  415. */
  416. // SYMBOLS
  417. [_SYMB] = LAYOUT_ergodox(
  418. // left hand
  419. VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
  420. _______,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,_______,
  421. _______,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
  422. _______,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,_______,
  423. EPRM,_______,_______,_______,_______,
  424. RGB_MOD,_______,
  425. _______,
  426. RGB_VAD,RGB_VAI,_______,
  427. // right hand
  428. _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  429. _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
  430. KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______,
  431. _______, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______,
  432. _______,KC_DOT, KC_0, KC_EQL, _______,
  433. RGB_TOG, RGB_SLD,
  434. _______,
  435. _______, RGB_HUD, RGB_HUI
  436. ),
  437. /* Media and mouse keys
  438. *
  439. * ,--------------------------------------------------. ,--------------------------------------------------.
  440. * | | | | | | | | | | | | | | | |
  441. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  442. * | | | | MsUp | | | | | | | | | | | |
  443. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  444. * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
  445. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  446. * | | | | | | | | | | | | Prev | Next | | |
  447. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  448. * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
  449. * `----------------------------------' `----------------------------------'
  450. * ,-------------. ,-------------.
  451. * | | | | | |
  452. * ,------|------|------| |------+------+------.
  453. * | | | | | | |Brwser|
  454. * | | |------| |------| |Back |
  455. * | | | | | | | |
  456. * `--------------------' `--------------------'
  457. */
  458. // MEDIA AND MOUSE
  459. [_MDIA] = LAYOUT_ergodox(
  460. _______, _______, _______, _______, _______, _______, _______,
  461. _______, _______, _______, KC_MS_U, _______, _______, _______,
  462. _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,
  463. _______, _______, _______, _______, _______, _______, _______,
  464. _______, _______, _______, KC_BTN1, KC_BTN2,
  465. _______, _______,
  466. _______,
  467. _______, _______, _______,
  468. // right hand
  469. _______, _______, _______, _______, _______, _______, _______,
  470. _______, _______, _______, _______, _______, _______, _______,
  471. _______, _______, _______, _______, _______, KC_MPLY,
  472. _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______,
  473. KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
  474. _______, _______,
  475. _______,
  476. _______, _______, KC_WBAK
  477. )
  478. };
  479. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  480. switch (keycode) {
  481. case QWERTY:
  482. if (record->event.pressed) {
  483. set_single_persistent_default_layer(_QWERTY);
  484. set_superduper_key_combo_layer(_QWERTY);
  485. }
  486. return false;
  487. case COLEMAK:
  488. if (record->event.pressed) {
  489. set_single_persistent_default_layer(_COLEMAK);
  490. set_superduper_key_combo_layer(_COLEMAK);
  491. }
  492. return false;
  493. case QWOC:
  494. if (record->event.pressed) {
  495. set_single_persistent_default_layer(_QWOC);
  496. set_superduper_key_combo_layer(_QWOC);
  497. }
  498. return false;
  499. case LOWER:
  500. if (record->event.pressed) {
  501. layer_on(_LOWER);
  502. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  503. } else {
  504. layer_off(_LOWER);
  505. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  506. }
  507. return false;
  508. case RAISE:
  509. if (record->event.pressed) {
  510. layer_on(_RAISE);
  511. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  512. } else {
  513. layer_off(_RAISE);
  514. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  515. }
  516. return false;
  517. case BACKLIT:
  518. if (record->event.pressed) {
  519. register_code(KC_RSFT);
  520. #ifdef BACKLIGHT_ENABLE
  521. backlight_step();
  522. #endif
  523. } else {
  524. unregister_code(KC_RSFT);
  525. }
  526. return false;
  527. case PLOVER:
  528. if (record->event.pressed) {
  529. layer_off(_RAISE);
  530. layer_off(_LOWER);
  531. layer_off(_ADJUST);
  532. layer_on(_PLOVER);
  533. if (!eeconfig_is_enabled()) {
  534. eeconfig_init();
  535. }
  536. keymap_config.raw = eeconfig_read_keymap();
  537. keymap_config.nkro = 1;
  538. eeconfig_update_keymap(keymap_config.raw);
  539. }
  540. return false;
  541. case EXT_PLV:
  542. if (record->event.pressed) {
  543. layer_off(_PLOVER);
  544. }
  545. return false;
  546. case SDTOGG:
  547. if (record->event.pressed) {
  548. toggle_superduper_mode();
  549. }
  550. return false;
  551. case VRSN:
  552. if (record->event.pressed) {
  553. SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  554. }
  555. return false;
  556. case RGB_SLD:
  557. if (record->event.pressed) {
  558. #ifdef RGBLIGHT_ENABLE
  559. rgblight_mode(1);
  560. #endif
  561. }
  562. return false;
  563. // Macros
  564. // 1. Hold for LGUI, tap for Underscore
  565. case GUI_UNDS:
  566. perform_space_cadet(record, KC_LGUI, KC_LSFT, KC_MINS);
  567. return false;
  568. // 2. Hold for LSHIFT, tap for Parens open
  569. case LSFT_LPRN:
  570. perform_space_cadet(record, KC_LSFT, KC_LSFT, KC_9);
  571. return false;
  572. // 3. Hold for RSHIFT, tap for Parens close
  573. case RSFT_RPRN:
  574. perform_space_cadet(record, KC_RSFT, KC_RSFT, KC_0);
  575. return false;
  576. }
  577. return true;
  578. }
  579. void matrix_init_user(void) {
  580. }
  581. void matrix_setup(void) {
  582. set_superduper_key_combos();
  583. }
  584. void matrix_scan_user(void) {
  585. // uint8_t layer = biton32(layer_state);
  586. // ergodox_board_led_off();
  587. // ergodox_right_led_1_off();
  588. // ergodox_right_led_2_off();
  589. // ergodox_right_led_3_off();
  590. // switch (layer) {
  591. // // TODO: Make this relevant to the ErgoDox EZ.
  592. // case 1:
  593. // ergodox_right_led_1_on();
  594. // break;
  595. // case 2:
  596. // ergodox_right_led_2_on();
  597. // break;
  598. // default:
  599. // // none
  600. // break;
  601. // }
  602. }
  603. // Combos
  604. void process_combo_event(uint8_t combo_index, bool pressed) {
  605. if (pressed) {
  606. switch(combo_index) {
  607. case CB_SUPERDUPER:
  608. layer_on(_SUPERDUPER);
  609. ergodox_board_led_on();
  610. break;
  611. }
  612. } else {
  613. layer_off(_SUPERDUPER);
  614. ergodox_board_led_off();
  615. unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them
  616. }
  617. }