keymap.c 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781
  1. #include QMK_KEYBOARD_H
  2. #include "keymap_dvorak.h"
  3. #include "sendstring_dvorak.h"
  4. #include "keymap_plover.h"
  5. #include "keymap_plover_dvorak.h"
  6. #define SCTL(kc) LSFT(LCTL(kc))
  7. // Layers
  8. enum layers {
  9. DVORAK_US = 0,
  10. PLOVER_US,
  11. GAMING_US,
  12. ARROWS_US,
  13. MOUSE_US,
  14. NUMPAD_US,
  15. LAYERS_US,
  16. DVORAK_DV,
  17. PLOVER_DV,
  18. GAMING_DV,
  19. ARROWS_DV,
  20. MOUSE_DV,
  21. NUMPAD_DV,
  22. LAYERS_DV,
  23. MEDIA_FN,
  24. HYPER_FN,
  25. MEH_FN,
  26. MEH_FN_PLUS,
  27. FIRMWARE
  28. };
  29. int CAPS_LOCK = 0;
  30. int NUM_LOCK = 0;
  31. int SCROLL_LOCK = 0;
  32. enum tap_dances {
  33. TD_ESC_CAPS = 0
  34. };
  35. qk_tap_dance_action_t tap_dance_actions[] = {
  36. [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CLCK)
  37. };
  38. enum custom_keycodes {
  39. PLACEHOLDER = SAFE_RANGE, // can always be here
  40. RGB_GREEN // to set default RGB layer as green once
  41. };
  42. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  43. /*
  44. * ,--------------------------------------------------. ,--------------------------------------------------.
  45. * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
  46. * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
  47. * | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
  48. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  49. * | 14 | 15 | 16 | 17 | 18 | 19 |------| |------| 52 | 53 | 54 | 55 | 56 | 57 |
  50. * |--------+------+------+------+------+------| 26 | | 58 |------+------+------+------+------+--------|
  51. * | 20 | 21 | 22 | 23 | 24 | 25 | | | | 59 | 60 | 61 | 62 | 63 | 64 |
  52. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  53. * | 27 | 28 | 29 | 30 | 31 | | 65 | 66 | 67 | 68 | 69 |
  54. * `----------------------------------' `----------------------------------'
  55. * ,-------------. ,-------------.
  56. * | 32 | 33 | | 70 | 71 |
  57. * ,------+------+------| |------+------+------.
  58. * | | | 34 | | 72 | | |
  59. * | 35 | 36 |------| |------| 74 | 75 |
  60. * | | | 37 | | 73 | | |
  61. * `--------------------' `--------------------'
  62. */
  63. [DVORAK_US] = LAYOUT_ergodox(
  64. // left hand
  65. KC_ESC, KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_EXLM, KC_AMPR,
  66. KC_TAB, KC_QUOT, SCMD_T(KC_COMM), MEH_T(KC_DOT), ALL_T(KC_P), KC_Y, KC_AT,
  67. KC_EQL, CTL_T(KC_A), SFT_T(KC_O), LT(NUMPAD_US, KC_E), LT(ARROWS_US, KC_U), KC_I,
  68. KC_BSLS, ALGR_T(KC_SCLN), ALT_T(KC_Q), LT(MEDIA_FN, KC_J), GUI_T(KC_K), KC_X, KC_PERC,
  69. MO(MEH_FN), TG(LAYERS_US), KC_CIRC, KC_PLUS, KC_COLN,
  70. // left thumb
  71. KC_LEFT, KC_RGHT,
  72. KC_HOME,
  73. KC_SPC, KC_BSPC, KC_END,
  74. // right hand
  75. KC_PIPE, KC_QUES, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, KC_ASTR,
  76. KC_HASH, KC_F, ALL_T(KC_G), MEH_T(KC_C), SCMD_T(KC_R), KC_L, KC_SLSH,
  77. KC_D, LT(MOUSE_US, KC_H), LT(HYPER_FN, KC_T), SFT_T(KC_N), CTL_T(KC_S), KC_MINS,
  78. KC_DLR, KC_B, GUI_T(KC_M), LT(MEDIA_FN, KC_W), ALT_T(KC_V), ALGR_T(KC_Z), KC_GRV,
  79. KC_DQUO, KC_UNDS, KC_TILD, TG(DVORAK_DV), MO(MEH_FN_PLUS),
  80. // right thumb
  81. KC_UP, KC_DOWN,
  82. KC_PGUP,
  83. KC_PGDN, KC_DEL, KC_ENT
  84. ),
  85. [PLOVER_US] = LAYOUT_ergodox(
  86. // left hand
  87. XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO),
  88. KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM,
  89. KC_TAB, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
  90. KC_CLCK, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
  91. MO(MEH_FN), TG(LAYERS_US), PV_NUM, PV_NUM, PV_NUM,
  92. // left thumb
  93. KC_SPACE, KC_BSPACE,
  94. KC_HOME,
  95. PV_A, PV_O, KC_END,
  96. // right hand
  97. KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP,
  98. PV_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
  99. PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
  100. PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
  101. PV_NUM, PV_NUM, PV_NUM, PV_NUM, MO(MEH_FN_PLUS),
  102. // right thumb
  103. KC_DELETE, KC_ENTER,
  104. KC_PGUP,
  105. KC_PGDOWN, PV_E, PV_U
  106. ),
  107. [GAMING_US] = LAYOUT_ergodox(
  108. // left hand
  109. KC_ESCAPE, GUI_T(KC_MINS), KC_I, KC_O, KC_P, ALGR_T(KC_EQL), KC_T,
  110. KC_TAB, KC_LALT, KC_Q, KC_W, KC_E, ALL_T(KC_R), KC_G,
  111. LT(MOUSE_US, KC_GRV), KC_LCTRL, KC_A, KC_S, KC_D, MEH_T(KC_F),
  112. KC_BSLS, KC_LSHIFT, KC_Z, KC_X, KC_C, SCMD_T(KC_V), KC_M,
  113. MO(MEH_FN), TG(LAYERS_US), KC_COMM, KC_DOT, KC_LBRC,
  114. // left thumb
  115. MO(MEDIA_FN), KC_NLCK,
  116. KC_SCLN,
  117. KC_SPACE, KC_ENTER, KC_BSPACE,
  118. // right hand
  119. KC_QUOT, KC_Y, KC_K, KC_U, KC_KP_7, KC_KP_8, KC_KP_9,
  120. KC_MS_WH_UP, KC_H, KC_J, KC_L, KC_KP_4, KC_KP_2, KC_KP_6,
  121. KC_B, KC_MS_UP, KC_N, KC_KP_1, KC_KP_5, KC_KP_3,
  122. KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, KC_SLASH,
  123. KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS),
  124. // right thumb
  125. KC_MS_BTN5, MO(HYPER_FN),
  126. KC_MS_BTN4,
  127. KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
  128. ),
  129. [ARROWS_US] = LAYOUT_ergodox(
  130. // left hand
  131. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  132. XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
  133. XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX,
  134. XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
  135. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  136. // left thumb
  137. XXXXXXX, XXXXXXX,
  138. KC_HOME,
  139. KC_SPACE, KC_BSPACE, KC_END,
  140. // right hand
  141. LGUI(KC_X), XXXXXXX, LCTL(KC_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX,
  142. LGUI(KC_C), XXXXXXX, LCTL(KC_C), KC_UP, SCTL(KC_C), LCTL(KC_Z), LGUI(KC_Z),
  143. KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION,
  144. LGUI(KC_V), XXXXXXX, LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V), LCTL(KC_Y), SGUI(KC_Z),
  145. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK,
  146. // right thumb
  147. XXXXXXX, XXXXXXX,
  148. KC_PGUP,
  149. KC_PGDOWN, KC_DELETE, KC_ENTER
  150. ),
  151. [MOUSE_US] = LAYOUT_ergodox(
  152. // left hand
  153. XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(KC_X), XXXXXXX, LGUI(KC_X),
  154. LGUI(KC_Z), LCTL(KC_Z), SCTL(KC_C), KC_MS_UP, LCTL(KC_C), KC_MS_BTN4, LGUI(KC_C),
  155. KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT,
  156. LGUI(KC_Z), LCTL(KC_Y), SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V), KC_MS_BTN5, LGUI(KC_V),
  157. KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  158. // left thumb
  159. XXXXXXX, XXXXXXX,
  160. XXXXXXX,
  161. KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
  162. // right hand
  163. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  164. XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
  165. XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2,
  166. XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX,
  167. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  168. // right thumb
  169. XXXXXXX, XXXXXXX,
  170. XXXXXXX,
  171. XXXXXXX, XXXXXXX, KC_MS_ACCEL0
  172. ),
  173. [NUMPAD_US] = LAYOUT_ergodox(
  174. // left hand
  175. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  176. XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX,
  177. _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX,
  178. XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
  179. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  180. // left thumb
  181. XXXXXXX, XXXXXXX,
  182. KC_HOME,
  183. KC_SPACE, KC_BSPACE, KC_END,
  184. // right hand
  185. KC_X, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F,
  186. KC_O, KC_I, KC_1, KC_2, KC_3, KC_SLSH, KC_PERC,
  187. KC_M, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS,
  188. KC_L, KC_J, KC_7, KC_8, KC_9, KC_ASTR, KC_CIRC,
  189. KC_DOT, KC_0, KC_COMM, KC_UNDS, KC_BSLS,
  190. // right thumb
  191. XXXXXXX, XXXXXXX,
  192. KC_PGUP,
  193. KC_PGDOWN, KC_DELETE, KC_ENTER
  194. ),
  195. [LAYERS_US] = LAYOUT_ergodox(
  196. // left hand
  197. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  198. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  199. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  200. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  201. XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
  202. // left thumb
  203. XXXXXXX, XXXXXXX,
  204. XXXXXXX,
  205. XXXXXXX, XXXXXXX, XXXXXXX,
  206. // right hand
  207. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  208. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  209. XXXXXXX, TO(DVORAK_US), TO(PLOVER_US), TO(GAMING_US), XXXXXXX, XXXXXXX,
  210. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  211. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  212. // right thumb
  213. XXXXXXX, XXXXXXX,
  214. XXXXXXX,
  215. XXXXXXX, XXXXXXX, XXXXXXX
  216. ),
  217. [DVORAK_DV] = LAYOUT_ergodox(
  218. // left hand
  219. KC_ESC, DV_LABK, DV_LCBR, DV_LBRC, DV_LPRN, DV_EXLM, DV_AMPR,
  220. KC_TAB, DV_QUOT, SCMD_T(DV_COMM), MEH_T(DV_DOT), ALL_T(DV_P), DV_Y, DV_AT,
  221. DV_EQL, CTL_T(DV_A), SFT_T(DV_O), LT(NUMPAD_DV, DV_E), LT(ARROWS_DV, DV_U), DV_I,
  222. DV_BSLS, ALGR_T(DV_SCLN), ALT_T(DV_Q), LT(MEDIA_FN, DV_J), GUI_T(DV_K), DV_X, DV_PERC,
  223. MO(MEH_FN), TG(LAYERS_DV), DV_CIRC, DV_PLUS, DV_COLN,
  224. // left thumb
  225. KC_LEFT, KC_RGHT,
  226. KC_HOME,
  227. KC_SPC, KC_BSPC, KC_END,
  228. // right hand
  229. DV_PIPE, DV_QUES, DV_RPRN, DV_RBRC, DV_RCBR, DV_RABK, DV_ASTR,
  230. DV_HASH, DV_F, ALL_T(DV_G), MEH_T(DV_C), SCMD_T(DV_R), DV_L, DV_SLSH,
  231. DV_D, LT(MOUSE_DV, DV_H), LT(HYPER_FN, DV_T), SFT_T(DV_N), CTL_T(DV_S), DV_MINS,
  232. DV_DLR, DV_B, GUI_T(DV_M), LT(MEDIA_FN, DV_W), ALT_T(DV_V), ALGR_T(DV_Z), DV_GRV,
  233. DV_DQUO, DV_UNDS, DV_TILD, _______, MO(MEH_FN_PLUS),
  234. // right thumb
  235. KC_UP, KC_DOWN,
  236. KC_PGUP,
  237. KC_PGDN, KC_DEL, KC_ENT
  238. ),
  239. [PLOVER_DV] = LAYOUT_ergodox(
  240. // left hand
  241. XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_BTN3, GUI_T(KC_NO),
  242. KC_ESC, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PD_NUM,
  243. KC_TAB, PD_LS, PD_LT, PD_LP, PD_LH, PD_STAR,
  244. KC_CLCK, PD_LS, PD_LK, PD_LW, PD_LR, PD_STAR, PD_STAR,
  245. MO(MEH_FN), TG(LAYERS_DV), PD_NUM, PD_NUM, PD_NUM,
  246. // left thumb
  247. KC_SPACE, KC_BSPACE,
  248. KC_HOME,
  249. PD_A, PD_O, KC_END,
  250. // right hand
  251. KC_MS_ACCEL2, KC_MS_ACCEL1, KC_MS_ACCEL0, KC_UP, KC_APPLICATION, XXXXXXX, KC_MS_WH_UP,
  252. PD_NUM, KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
  253. PD_STAR, PD_RF, PD_RP, PD_RL, PD_RT, PD_RD,
  254. PD_STAR, PD_STAR, PD_RR, PD_RB, PD_RG, PD_RS, PD_RZ,
  255. PD_NUM, PD_NUM, PD_NUM, PD_NUM, MO(MEH_FN_PLUS),
  256. // right thumb
  257. KC_DELETE, KC_ENTER,
  258. KC_PGUP,
  259. KC_PGDOWN, PD_E, PD_U
  260. ),
  261. [GAMING_DV] = LAYOUT_ergodox(
  262. // left hand
  263. KC_ESCAPE, GUI_T(DV_MINS), DV_I, DV_O, DV_P, ALGR_T(DV_EQL), DV_T,
  264. KC_TAB, KC_LALT, DV_Q, DV_W, DV_E, ALL_T(DV_R), DV_G,
  265. LT(MOUSE_DV, DV_GRV), KC_LCTRL, DV_A, DV_S, DV_D, MEH_T(DV_F),
  266. DV_BSLS, KC_LSHIFT, DV_Z, DV_X, DV_C, SCMD_T(DV_V), DV_M,
  267. MO(MEH_FN), TG(LAYERS_DV), DV_COMM, DV_DOT, DV_LBRC,
  268. // left thumb
  269. MO(MEDIA_FN), KC_NLCK,
  270. DV_SCLN,
  271. KC_SPACE, KC_ENTER, KC_BSPACE,
  272. // right hand
  273. DV_QUOT, DV_Y, DV_K, DV_U, KC_KP_7, KC_KP_8, KC_KP_9,
  274. KC_MS_WH_UP, DV_H, DV_J, DV_L, KC_KP_4, KC_KP_2, KC_KP_6,
  275. DV_B, KC_MS_UP, DV_N, KC_KP_1, KC_KP_5, KC_KP_3,
  276. KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP, KC_KP_0, DV_SLSH,
  277. DV_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS),
  278. // right thumb
  279. KC_MS_BTN5, MO(HYPER_FN),
  280. KC_MS_BTN4,
  281. KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
  282. ),
  283. [ARROWS_DV] = LAYOUT_ergodox(
  284. // left hand
  285. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  286. XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
  287. XXXXXXX, KC_LCTRL, KC_LSHIFT, XXXXXXX, _______, XXXXXXX,
  288. XXXXXXX, KC_RALT, KC_LALT, GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
  289. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  290. // left thumb
  291. XXXXXXX, XXXXXXX,
  292. KC_HOME,
  293. KC_SPACE, KC_BSPACE, KC_END,
  294. // right hand
  295. LGUI(DV_X), XXXXXXX, LCTL(DV_X), KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX,
  296. LGUI(DV_C), XXXXXXX, LCTL(DV_C), KC_UP, SCTL(DV_C), LCTL(DV_Z), LGUI(DV_Z),
  297. KC_MS_WH_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_RIGHT, KC_APPLICATION,
  298. LGUI(DV_V), XXXXXXX, LCTL(DV_V), KC_MS_WH_DOWN, SCTL(DV_V), LCTL(DV_Y), SGUI(DV_Z),
  299. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK,
  300. // right thumb
  301. XXXXXXX, XXXXXXX,
  302. KC_PGUP,
  303. KC_PGDOWN, KC_DELETE, KC_ENTER
  304. ),
  305. [MOUSE_DV] = LAYOUT_ergodox(
  306. // left hand
  307. XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_WH_UP, LCTL(DV_X), XXXXXXX, LGUI(DV_X),
  308. LGUI(DV_Z), LCTL(DV_Z), SCTL(DV_C), KC_MS_UP, LCTL(DV_C), KC_MS_BTN4, LGUI(DV_C),
  309. KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_RIGHT,
  310. LGUI(DV_Z), LCTL(DV_Y), SCTL(DV_V), KC_MS_WH_DOWN, LCTL(DV_V), KC_MS_BTN5, LGUI(DV_V),
  311. KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  312. // left thumb
  313. XXXXXXX, XXXXXXX,
  314. XXXXXXX,
  315. KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
  316. // right hand
  317. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  318. XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
  319. XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT, KC_LCTRL, KC_MS_ACCEL2,
  320. XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT, KC_RALT, XXXXXXX,
  321. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  322. // right thumb
  323. XXXXXXX, XXXXXXX,
  324. XXXXXXX,
  325. XXXXXXX, XXXXXXX, KC_MS_ACCEL0
  326. ),
  327. [NUMPAD_DV] = LAYOUT_ergodox(
  328. // left hand
  329. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  330. XXXXXXX, XXXXXXX, GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO), XXXXXXX, XXXXXXX,
  331. _______, KC_LCTRL, KC_LSHIFT, _______, MEH_T(KC_NO), XXXXXXX,
  332. XXXXXXX, KC_RALT, KC_LALT, XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
  333. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  334. // left thumb
  335. XXXXXXX, XXXXXXX,
  336. KC_HOME,
  337. KC_SPACE, KC_BSPACE, KC_END,
  338. // right hand
  339. DV_X, DV_A, DV_B, DV_C, DV_D, DV_E, DV_F,
  340. DV_O, DV_I, DV_1, DV_2, DV_3, DV_SLSH, DV_PERC,
  341. DV_M, DV_4, DV_5, DV_6, DV_PLUS, DV_MINS,
  342. DV_L, DV_J, DV_7, DV_8, DV_9, DV_ASTR, DV_CIRC,
  343. DV_DOT, DV_0, DV_COMM, DV_UNDS, DV_BSLS,
  344. // right thumb
  345. XXXXXXX, XXXXXXX,
  346. KC_PGUP,
  347. KC_PGDOWN, KC_DELETE, KC_ENTER
  348. ),
  349. [LAYERS_DV] = LAYOUT_ergodox(
  350. // left hand
  351. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  352. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  353. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  354. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  355. XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
  356. // left thumb
  357. XXXXXXX, XXXXXXX,
  358. XXXXXXX,
  359. XXXXXXX, XXXXXXX, XXXXXXX,
  360. // right hand
  361. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  362. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  363. XXXXXXX, TO(DVORAK_DV), TO(PLOVER_DV), TO(GAMING_DV), XXXXXXX, XXXXXXX,
  364. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  365. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  366. // right thumb
  367. XXXXXXX, XXXXXXX,
  368. XXXXXXX,
  369. XXXXXXX, XXXXXXX, XXXXXXX
  370. ),
  371. [MEDIA_FN] = LAYOUT_ergodox(
  372. // left hand
  373. KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, RGB_TOG, XXXXXXX, KC_MAIL, KC_FIND, KC_WWW_REFRESH,
  374. KC_MEDIA_PREV_TRACK, KC_F9, KC_F7, KC_F5, KC_F3, KC_F1, KC_WWW_HOME,
  375. KC_PAUSE, KC_F19, KC_F17, KC_F15, KC_F13, KC_F11,
  376. RGB_HUD, XXXXXXX, XXXXXXX, _______, KC_F23, KC_F21, KC_WWW_BACK,
  377. RGB_VAD, KC_CLCK, KC_PSCREEN, XXXXXXX, MO(FIRMWARE),
  378. // left thumb
  379. _______, XXXXXXX,
  380. XXXXXXX,
  381. XXXXXXX, XXXXXXX, KC_MEDIA_EJECT,
  382. // right hand
  383. KC_WWW_FAVORITES, KC_MY_COMPUTER, KC_CALCULATOR, XXXXXXX, RGB_MOD, RGB_M_P, KC_AUDIO_VOL_UP,
  384. KC_WWW_SEARCH, KC_F2, KC_F4, KC_F6, KC_F8, KC_F10, KC_MEDIA_NEXT_TRACK,
  385. KC_F12, KC_F14, KC_F16, KC_F18, KC_F20, KC_MEDIA_PLAY_PAUSE,
  386. KC_WWW_FORWARD, KC_F22, KC_F24, _______, XXXXXXX, XXXXXXX, RGB_HUI,
  387. KC_SYSTEM_POWER, XXXXXXX, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, RGB_VAI,
  388. // right thumb
  389. XXXXXXX, XXXXXXX,
  390. XXXXXXX,
  391. RGB_GREEN, XXXXXXX, XXXXXXX
  392. ),
  393. [HYPER_FN] = LAYOUT_ergodox(
  394. // left hand
  395. XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX,
  396. XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX,
  397. XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15),
  398. XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX,
  399. XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24),
  400. // left thumb
  401. XXXXXXX, XXXXXXX,
  402. XXXXXXX,
  403. XXXXXXX, XXXXXXX, XXXXXXX,
  404. // right hand
  405. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  406. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  407. XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
  408. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  409. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  410. // right thumb
  411. XXXXXXX, _______,
  412. XXXXXXX,
  413. XXXXXXX, XXXXXXX, XXXXXXX
  414. ),
  415. [MEH_FN] = LAYOUT_ergodox(
  416. // left hand
  417. LCA(KC_F11), LCA(KC_F9), LCA(KC_F7), LCA(KC_F5), LCA(KC_F3), LCA(KC_F1), XXXXXXX,
  418. LCAG(KC_F11), LCAG(KC_F9), LCAG(KC_F7), LCAG(KC_F5), LCAG(KC_F3), LCAG(KC_F1), XXXXXXX,
  419. MEH(KC_F11), MEH(KC_F9), MEH(KC_F7), MEH(KC_F5), MEH(KC_F3), MEH(KC_F1),
  420. SGUI(KC_F11), SGUI(KC_F9), SGUI(KC_F7), SGUI(KC_F5), SGUI(KC_F3), SGUI(KC_F1), XXXXXXX,
  421. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  422. // left thumb
  423. XXXXXXX, XXXXXXX,
  424. XXXXXXX,
  425. XXXXXXX, XXXXXXX, XXXXXXX,
  426. // right hand
  427. XXXXXXX, LCA(KC_F2), LCA(KC_F4), LCA(KC_F6), LCA(KC_F8), LCA(KC_F10), LCA(KC_F12),
  428. XXXXXXX, LCAG(KC_F2), LCAG(KC_F4), LCAG(KC_F6), LCAG(KC_F8), LCAG(KC_F10), LCAG(KC_F12),
  429. MEH(KC_F2), MEH(KC_F4), MEH(KC_F6), MEH(KC_F8), MEH(KC_F10), MEH(KC_F12),
  430. XXXXXXX, SGUI(KC_F2), SGUI(KC_F4), SGUI(KC_F6), SGUI(KC_F8), SGUI(KC_F10), SGUI(KC_F12),
  431. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  432. // right thumb
  433. XXXXXXX, XXXXXXX,
  434. XXXXXXX,
  435. XXXXXXX, XXXXXXX, XXXXXXX
  436. ),
  437. [MEH_FN_PLUS] = LAYOUT_ergodox(
  438. // left hand
  439. LCA(KC_F23), LCA(KC_F21), LCA(KC_F19), LCA(KC_F17), LCA(KC_F15), LCA(KC_F13), XXXXXXX,
  440. LCAG(KC_F23), LCAG(KC_F21), LCAG(KC_F19), LCAG(KC_F17), LCAG(KC_F15), LCAG(KC_F13), XXXXXXX,
  441. MEH(KC_F23), MEH(KC_F21), MEH(KC_F19), MEH(KC_F17), MEH(KC_F15), MEH(KC_F13),
  442. SGUI(KC_F23), SGUI(KC_F21), SGUI(KC_F19), SGUI(KC_F17), SGUI(KC_F15), SGUI(KC_F13), XXXXXXX,
  443. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  444. // left thumb
  445. XXXXXXX, XXXXXXX,
  446. XXXXXXX,
  447. XXXXXXX, XXXXXXX, XXXXXXX,
  448. // right hand
  449. XXXXXXX, LCA(KC_F14), LCA(KC_F16), LCA(KC_F18), LCA(KC_F20), LCA(KC_F22), LCA(KC_F24),
  450. XXXXXXX, LCAG(KC_F14), LCAG(KC_F16), LCAG(KC_F18), LCAG(KC_F20), LCAG(KC_F22), LCAG(KC_F24),
  451. MEH(KC_F14), MEH(KC_F16), MEH(KC_F18), MEH(KC_F20), MEH(KC_F22), MEH(KC_F24),
  452. XXXXXXX, SGUI(KC_F14), SGUI(KC_F16), SGUI(KC_F18), SGUI(KC_F20), SGUI(KC_F22), SGUI(KC_F24),
  453. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  454. // right thumb
  455. XXXXXXX, XXXXXXX,
  456. XXXXXXX,
  457. XXXXXXX, XXXXXXX, XXXXXXX
  458. ),
  459. [FIRMWARE] = LAYOUT_ergodox(
  460. // left hand
  461. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  462. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  463. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  464. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  465. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  466. // left thumb
  467. XXXXXXX, XXXXXXX,
  468. XXXXXXX,
  469. RESET, XXXXXXX, XXXXXXX,
  470. // right hand
  471. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  472. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  473. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  474. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  475. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  476. // right thumb
  477. XXXXXXX, XXXXXXX,
  478. XXXXXXX,
  479. XXXXXXX, XXXXXXX, EEP_RST
  480. )
  481. };
  482. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  483. switch (keycode) {
  484. case RGB_GREEN:
  485. if (record->event.pressed) {
  486. #ifdef RGBLIGHT_ENABLE
  487. rgblight_enable();
  488. rgblight_mode(1);
  489. rgblight_sethsv_red();
  490. #endif
  491. }
  492. return false;
  493. case KC_CLCK:
  494. if (record->event.pressed) {
  495. if (!(CAPS_LOCK)) {
  496. ergodox_right_led_1_on();
  497. CAPS_LOCK = 1;
  498. } else {
  499. ergodox_right_led_1_off();
  500. CAPS_LOCK = 0;
  501. }
  502. }
  503. return true;
  504. case KC_NLCK:
  505. if (record->event.pressed) {
  506. if (!(NUM_LOCK)) {
  507. ergodox_right_led_2_on();
  508. NUM_LOCK = 1;
  509. } else {
  510. ergodox_right_led_2_off();
  511. NUM_LOCK = 0;
  512. }
  513. }
  514. return true;
  515. case KC_SLCK:
  516. if (record->event.pressed) {
  517. if (!(SCROLL_LOCK)) {
  518. ergodox_right_led_3_on();
  519. SCROLL_LOCK = 1;
  520. } else {
  521. ergodox_right_led_3_off();
  522. SCROLL_LOCK = 0;
  523. }
  524. }
  525. case KC_MS_WH_LEFT:
  526. if (record->event.pressed) {
  527. if (SCROLL_LOCK) {
  528. return false;
  529. } else {
  530. return true;
  531. }
  532. }
  533. case KC_MS_WH_UP:
  534. if (record->event.pressed) {
  535. if (SCROLL_LOCK) {
  536. return false;
  537. } else {
  538. return true;
  539. }
  540. }
  541. case KC_MS_WH_DOWN:
  542. if (record->event.pressed) {
  543. if (SCROLL_LOCK) {
  544. return false;
  545. } else {
  546. return true;
  547. }
  548. }
  549. case KC_MS_WH_RIGHT:
  550. if (record->event.pressed) {
  551. if (SCROLL_LOCK) {
  552. return false;
  553. } else {
  554. return true;
  555. }
  556. }
  557. default:
  558. return true;
  559. }
  560. }
  561. uint32_t layer_state_set_user(uint32_t state) {
  562. uint8_t layer = biton32(state);
  563. switch (layer) {
  564. case DVORAK_US:
  565. rgblight_sethsv_noeeprom_red();
  566. rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
  567. break;
  568. case PLOVER_US:
  569. rgblight_sethsv_noeeprom_red();
  570. rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
  571. break;
  572. case GAMING_US:
  573. rgblight_sethsv_noeeprom_red();
  574. rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
  575. break;
  576. case ARROWS_US:
  577. rgblight_sethsv_noeeprom_blue();
  578. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  579. break;
  580. case MOUSE_US:
  581. rgblight_sethsv_noeeprom_blue();
  582. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  583. break;
  584. case NUMPAD_US:
  585. rgblight_sethsv_noeeprom_blue();
  586. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  587. break;
  588. case LAYERS_US:
  589. rgblight_sethsv_noeeprom_cyan();
  590. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  591. break;
  592. case DVORAK_DV:
  593. rgblight_sethsv_noeeprom_green();
  594. rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
  595. break;
  596. case PLOVER_DV:
  597. rgblight_sethsv_noeeprom_green();
  598. rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
  599. break;
  600. case GAMING_DV:
  601. rgblight_sethsv_noeeprom_green();
  602. rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
  603. break;
  604. case ARROWS_DV:
  605. rgblight_sethsv_noeeprom_blue();
  606. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  607. break;
  608. case MOUSE_DV:
  609. rgblight_sethsv_noeeprom_blue();
  610. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  611. break;
  612. case NUMPAD_DV:
  613. rgblight_sethsv_noeeprom_blue();
  614. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  615. break;
  616. case LAYERS_DV:
  617. rgblight_sethsv_noeeprom_cyan();
  618. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  619. break;
  620. case MEDIA_FN:
  621. rgblight_sethsv_noeeprom_yellow();
  622. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  623. break;
  624. case HYPER_FN:
  625. rgblight_sethsv_noeeprom_magenta();
  626. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  627. break;
  628. case MEH_FN:
  629. rgblight_sethsv_noeeprom_magenta();
  630. rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 4);
  631. break;
  632. case MEH_FN_PLUS:
  633. rgblight_sethsv_noeeprom_magenta();
  634. rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5);
  635. break;
  636. case FIRMWARE:
  637. rgblight_sethsv_noeeprom_pink();
  638. rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
  639. break;
  640. default:
  641. break;
  642. }
  643. return state;
  644. };