2
0

keymap.c 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. #include "kinesis.h"
  2. #include "action_layer.h"
  3. #include "eeconfig.h"
  4. extern keymap_config_t keymap_config;
  5. enum kinesis_layers {
  6. _CMODDH, // Colemak Mod-DH Matrix (default layer)
  7. _QWERTY, // Qwerty
  8. _COLEMAK, // Colemak
  9. _NUMBERS, // Numbers & Symbols
  10. _NUMBERS2, // Numbers & Symbols 2 (identical as _NUMBERS; basically used for tri-layer access to _ADJUST)
  11. _FUNCTION, // Function
  12. _FUNCTION2, // Function 2 (identical as _FUNCTION; used to allow for easier use of space and backspace while using function layer arrows)
  13. _NUMPAD, // Numpad
  14. _CMODDHGM, // Colemak Mod-DH Matrix gaming/vanilla (no dual-role keys with layer access)
  15. _QWERTYGM, // QWERTY gaming/vanilla (no dual-role keys with layer access)
  16. _ADJUST // Adjust layer
  17. };
  18. enum kinesis_keycodes {
  19. CMODDH = SAFE_RANGE,
  20. QWERTY,
  21. COLEMAK,
  22. CMODDHGM,
  23. QWERTYGM,
  24. SPCFN = LT(_FUNCTION, KC_SPC),
  25. BSPCFN = LT(_FUNCTION2, KC_BSPC),
  26. ENTNS = LT(_NUMBERS, KC_ENT),
  27. DELNS = LT(_NUMBERS2, KC_DEL),
  28. CTLESC = CTL_T(KC_ESC),
  29. NKROTG = MAGIC_TOGGLE_NKRO
  30. };
  31. #define _______ KC_TRNS
  32. #define XXXXXXX KC_NO
  33. //Tap Dance Declarations
  34. enum {
  35. ADJ = 0,
  36. LBCB,
  37. RBCB,
  38. EQPL,
  39. PLEQ,
  40. MNUN,
  41. SLAS,
  42. GVTL,
  43. PPLEQ,
  44. PMNUN,
  45. PSLPAS
  46. };
  47. void dance_LAYER_finished(qk_tap_dance_state_t *state, void *user_data) {
  48. if (state->count == 2) {
  49. layer_on(_ADJUST);
  50. set_oneshot_layer(_ADJUST, ONESHOT_START);
  51. }
  52. }
  53. void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) {
  54. if (state->count == 2) {
  55. layer_off(_ADJUST);
  56. clear_oneshot_layer_state(ONESHOT_PRESSED);
  57. }
  58. }
  59. qk_tap_dance_action_t tap_dance_actions[] = {
  60. [ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer
  61. [LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap
  62. [RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap
  63. [EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap
  64. [PLEQ] = ACTION_TAP_DANCE_DOUBLE(KC_PLUS, KC_EQL), // Equal sign on a single-tap, plus sign on a double-tap
  65. [MNUN] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS), // Minus sign on a single-tap, underscore on a double-tap
  66. [SLAS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_ASTR), // Slash in a single-tap, asterisk in a double-tap
  67. [GVTL] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD), // Grave on a single-tap, tilde on a double-tap
  68. [PPLEQ] = ACTION_TAP_DANCE_DOUBLE(KC_PPLS, KC_EQL), // Numpad plus sign on a single-tap, equal sign on a double-tap
  69. [PMNUN] = ACTION_TAP_DANCE_DOUBLE(KC_PMNS, KC_UNDS), // Numpad minus sign on a single-tap, underscore on a double-tap
  70. [PSLPAS] = ACTION_TAP_DANCE_DOUBLE(KC_PSLS, KC_PAST) // Numpad slash on a single-tap, numpad asterisk on a double-tap
  71. };
  72. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  73. /* Colemak Mod-DH Matrix
  74. * (Defauit layer; keys separated by /: tap for first, hold for second; uses Space Cadet Shifts)
  75. * ,-----------------------------------------------------------------------------------------------------------.
  76. * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PScr| SLck| Paus|Numpd|Adjst|
  77. * `-----------------------------------------------------------------------------------------------------------'
  78. * ,-------------------------------------------. ,-------------------------------------------.
  79. * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
  80. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  81. * | Tab | Q | W | F | P | B | | J | L | U | Y | ; | \ |
  82. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  83. * |Esc/Ctrl| A | R | S | T | G | | M | N | E | I | O | ' |
  84. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  85. * |SC Shift| Z | X | C | D | V | | K | H | , | . | / |SC Shift|
  86. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  87. * | Ins | ` | [ | ] | | Left | Down | Up | Right|
  88. * `---------------------------' `---------------------------'
  89. * ,---------------. ,---------------.
  90. * |Esc/Ctl| Hyper | | RAlt | RCtl |
  91. * ,-------|-------|-------| |-------+-------+-------.
  92. * | Space | Enter |App/Alt| | RGUI | Delete| Bspc |
  93. * | / | / |-------| |-------| / | / |
  94. * | Fn | Number| Bspc | | Tab |Number2| Fn2 |
  95. * `-----------------------' `-----------------------'
  96. */
  97. [_CMODDH] = KEYMAP(
  98. // Left Hand
  99. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
  100. KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
  101. KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B,
  102. CTLESC, KC_A, KC_R, KC_S, KC_T, KC_G,
  103. KC_LSPO, KC_Z, KC_X, KC_C, KC_D, KC_V,
  104. KC_INS, KC_GRV, KC_LBRC, KC_RBRC,
  105. //Left Thumb
  106. CTLESC, ALL_T(KC_NO),
  107. ALT_T(KC_APP),
  108. SPCFN, ENTNS, KC_BSPC,
  109. //Right Hand
  110. KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_NUMPAD), MO(_ADJUST),
  111. KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  112. KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
  113. KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
  114. KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
  115. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
  116. //Right Thumb
  117. KC_RALT, KC_RCTL,
  118. KC_RGUI,
  119. KC_TAB, DELNS, BSPCFN
  120. ),
  121. /* QWERTY
  122. * (Keys separated by /: tap for first, hold for second; uses Space Cadet Shifts)
  123. * ,-----------------------------------------------------------------------------------------------------------.
  124. * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PScr| SLck| Paus|Numpd|Adjst|
  125. * `-----------------------------------------------------------------------------------------------------------'
  126. * ,-------------------------------------------. ,-------------------------------------------.
  127. * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
  128. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  129. * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
  130. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  131. * |Esc/Ctrl| A | S | D | F | G | | H | J | K | L | ; | ' |
  132. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  133. * |SC Shift| Z | X | C | V | B | | N | M | , | . | / |SC Shift|
  134. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  135. * | Ins | ` | [ | ] | | Left | Down | Up | Right|
  136. * `---------------------------' `---------------------------'
  137. * ,---------------. ,---------------.
  138. * |Esc/Ctl| Hyper | | RAlt | RCtl |
  139. * ,-------|-------|-------| |-------+-------+-------.
  140. * | Space | Enter |App/Alt| | RGUI | Delete| Bspc |
  141. * | / | / |-------| |-------| / | / |
  142. * | Fn | Number| Bspc | | Tab |Number2| Fn2 |
  143. * `-----------------------' `-----------------------'
  144. */
  145. [_QWERTY] = KEYMAP(
  146. // Left Hand
  147. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
  148. KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
  149. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
  150. CTLESC, KC_A, KC_S, KC_D, KC_F, KC_G,
  151. KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B,
  152. KC_INS, KC_GRV, KC_LBRC, KC_RBRC,
  153. //Left Thumb
  154. CTLESC, ALL_T(KC_NO),
  155. ALT_T(KC_APP),
  156. SPCFN, ENTNS, KC_BSPC,
  157. //Right Hand
  158. KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_NUMPAD), MO(_ADJUST),
  159. KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  160. KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  161. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  162. KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
  163. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
  164. //Right Thumb
  165. KC_RALT, KC_RCTL,
  166. KC_RGUI,
  167. KC_TAB, DELNS, BSPCFN
  168. ),
  169. /* Colemak
  170. * (Keys separated by /: tap for first, hold for second; uses Space Cadet Shifts)
  171. * ,-----------------------------------------------------------------------------------------------------------.
  172. * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PScr| SLck| Paus|Numpd|Adjst|
  173. * `-----------------------------------------------------------------------------------------------------------'
  174. * ,-------------------------------------------. ,-------------------------------------------.
  175. * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
  176. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  177. * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ |
  178. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  179. * |Esc/Ctrl| A | R | S | T | D | | H | N | E | I | O | ' |
  180. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  181. * |SC Shift| Z | X | C | V | B | | K | M | , | . | / |SC Shift|
  182. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  183. * | Ins | ` | [ | ] | | Left | Down | Up | Right|
  184. * `---------------------------' `---------------------------'
  185. * ,---------------. ,---------------.
  186. * |Esc/Ctl| Hyper | | RAlt | RCtl |
  187. * ,-------|-------|-------| |-------+-------+-------.
  188. * | Space | Enter |App/Alt| | RGUI | Delete| Bspc |
  189. * | / | / |-------| |-------| / | / |
  190. * | Fn | Number| Bspc | | Tab |Number2| Fn2 |
  191. * `-----------------------' `-----------------------'
  192. */
  193. [_COLEMAK] = KEYMAP(
  194. // Left Hand
  195. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
  196. KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
  197. KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G,
  198. CTLESC, KC_A, KC_R, KC_S, KC_T, KC_D,
  199. KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B,
  200. KC_INS, KC_GRV, KC_LBRC, KC_RBRC,
  201. //Left Thumb
  202. CTLESC, ALL_T(KC_NO),
  203. ALT_T(KC_APP),
  204. SPCFN, ENTNS, KC_BSPC,
  205. //Right Hand
  206. KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_NUMPAD), MO(_ADJUST),
  207. KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  208. KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
  209. KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
  210. KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
  211. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
  212. //Right Thumb
  213. KC_RALT, KC_RCTL,
  214. KC_RGUI,
  215. KC_TAB, DELNS, BSPCFN
  216. ),
  217. /* Number/symbol layer
  218. * (Multiple characters: single-tap for first, double-tap for second)
  219. * ,-----------------------------------------------------------------------------------------------------------.
  220. * | | | | | | | | | | | | | | | | | | |
  221. * `-----------------------------------------------------------------------------------------------------------'
  222. * ,-------------------------------------------. ,-------------------------------------------.
  223. * | F12 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
  224. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  225. * | | 6 | 7 | 8 | 9 | 0 | | ^ | & | * | ( | ) | |
  226. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  227. * | | 1 | 2 | 3 | 4 | 5 | | ! | @ | # | $ | % | |
  228. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  229. * | | | . | / * | - _ | + = | | ` ~ | [ { | ] } | | | |
  230. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  231. * | ( | ) | [ { | ] } | | | | | |
  232. * `---------------------------' `---------------------------'
  233. * ,---------------. ,---------------.
  234. * | | | | | |
  235. * ,-------|-------|-------| |-------+-------+-------.
  236. * | | | | | | | |
  237. * | | |-------| |-------| | |
  238. * | | | | | | | |
  239. * `-----------------------' `-----------------------'
  240. */
  241. [_NUMBERS] = KEYMAP(
  242. // Left Hand
  243. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  244. KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  245. _______, KC_6, KC_7, KC_8, KC_9, KC_0,
  246. _______, KC_1, KC_2, KC_3, KC_4, KC_5,
  247. _______, _______, KC_DOT, TD(SLAS), TD(MNUN), TD(PLEQ),
  248. KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB),
  249. // Left Thumb
  250. _______, _______,
  251. _______,
  252. _______, _______, _______,
  253. // Right Hand
  254. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  255. KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  256. KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
  257. KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
  258. TD(GVTL), TD(LBCB), TD(RBCB), _______, _______, _______,
  259. _______, _______, _______, _______,
  260. // Right Thumb
  261. _______, _______,
  262. _______,
  263. _______, _______, _______
  264. ),
  265. [_NUMBERS2] = KEYMAP(
  266. // Left Hand
  267. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  268. KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  269. _______, KC_6, KC_7, KC_8, KC_9, KC_0,
  270. _______, KC_1, KC_2, KC_3, KC_4, KC_5,
  271. _______, _______, KC_DOT, TD(SLAS), TD(MNUN), TD(PLEQ),
  272. KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB),
  273. // Left Thumb
  274. _______, _______,
  275. _______,
  276. _______, _______, _______,
  277. // Right Hand
  278. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  279. KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  280. KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
  281. KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______,
  282. TD(GVTL), TD(LBCB), TD(RBCB), _______, _______, _______,
  283. _______, _______, _______, _______,
  284. // Right Thumb
  285. _______, _______,
  286. _______,
  287. _______, _______, _______
  288. ),
  289. /* Function layer
  290. * ,-----------------------------------------------------------------------------------------------------------.
  291. * | | | | | | | | | | | | | | | | | | |
  292. * `-----------------------------------------------------------------------------------------------------------'
  293. * ,-------------------------------------------. ,-------------------------------------------.
  294. * | F12 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
  295. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  296. * | | | | Up | | | | | | Up |Ctrl+Y| | |
  297. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  298. * | |Ctrl+A| Left | Down | Right|C+A+Tb| | PgUp | Right| Down | Left | Home | |
  299. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  300. * | |Ctrl+Z|Ctrl+X|Ctrl+C|Ctrl+V| Bspc | | PgDn | Mute | Vol- | Vol+ | End | |
  301. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  302. * | | | | | | Prev | Play | Next | Stop |
  303. * `---------------------------' `---------------------------'
  304. * ,---------------. ,---------------.
  305. * | | | | | |
  306. * ,-------|-------|-------| |-------+-------+-------.
  307. * | | | | | | | |
  308. * | | |-------| |-------| | |
  309. * | | | | |C+A+Tab| | |
  310. * `-----------------------' `-----------------------'
  311. */
  312. [_FUNCTION] = KEYMAP(
  313. // Left Hand
  314. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  315. KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  316. _______, _______, _______, KC_UP, _______, _______,
  317. _______, LCTL(KC_A), KC_LEFT, KC_DOWN, KC_RGHT, LCA(KC_TAB),
  318. _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_BSPC,
  319. _______, _______, _______, _______,
  320. // Left Thumb
  321. _______, _______,
  322. _______,
  323. _______, _______, _______,
  324. // Right Hand
  325. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  326. KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  327. _______, _______, KC_UP, LCTL(KC_Y), _______, _______,
  328. KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______,
  329. KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, KC_END, _______,
  330. KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP,
  331. // Right Thumb
  332. _______, _______,
  333. _______,
  334. LCA(KC_TAB), _______, _______
  335. ),
  336. [_FUNCTION2] = KEYMAP(
  337. // Left Hand
  338. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  339. KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
  340. _______, _______, _______, KC_UP, _______, _______,
  341. _______, LCTL(KC_A), KC_LEFT, KC_DOWN, KC_RGHT, LCA(KC_TAB),
  342. _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_BSPC,
  343. _______, _______, _______, _______,
  344. // Left Thumb
  345. _______, _______,
  346. _______,
  347. _______, _______, _______,
  348. // Right Hand
  349. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  350. KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  351. _______, _______, KC_UP, LCTL(KC_Y), _______, _______,
  352. KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______,
  353. KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, KC_END, _______,
  354. KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP,
  355. // Right Thumb
  356. _______, _______,
  357. _______,
  358. LCA(KC_TAB), _______, _______
  359. ),
  360. /* Numpad layer
  361. * (Left side duplicates layout from the Numbers layer, just with numpad output; right side layout close to PC numpad layout)
  362. * ,-----------------------------------------------------------------------------------------------------------.
  363. * | | | | | | | | | | | | | | | | | | |
  364. * `-----------------------------------------------------------------------------------------------------------'
  365. * ,-------------------------------------------. ,-------------------------------------------.
  366. * | | NumLk| | | | | | Tab | NumLk| KP / | kP *| KP - | |
  367. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  368. * | | KP 6 | KP 7 | KP 8 | KP 9 | KP 0 | | | KP 7 | KP 8 | KP 9 | KP + | |
  369. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  370. * | | KP 1 | KP 2 | KP 3 | KP 4 | KP 5 | | | KP 4 | KP 5 | KP 6 | = | |
  371. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  372. * | | | KP . |KP/KP*| KP- _| KP+ =| | | KP 1 | KP 2 | KP 3 |KP Ent| |
  373. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  374. * | ( | ) | [ { | ] } | | KP 0 | , | KP . |KP Ent|
  375. * `---------------------------' `---------------------------'
  376. * ,---------------. ,---------------.
  377. * | | | | | |
  378. * ,-------|-------|-------| |-------+-------+-------.
  379. * | | | | | | | |
  380. * | | |-------| |-------| | |
  381. * | | | | | | | |
  382. * `-----------------------' `-----------------------'
  383. */
  384. [_NUMPAD] = KEYMAP(
  385. // Left Hand
  386. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  387. _______, KC_NLCK, _______, _______, _______, _______,
  388. _______, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0,
  389. _______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5,
  390. _______, _______, KC_PDOT, TD(PSLPAS), TD(PMNUN), TD(PPLEQ),
  391. KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB),
  392. // Left Thumb
  393. _______, _______,
  394. _______,
  395. _______, _______, _______,
  396. // Right Hand
  397. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  398. KC_TAB, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, _______,
  399. _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
  400. _______, KC_P4, KC_P5, KC_P6, KC_EQL, _______,
  401. _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______,
  402. KC_P0, KC_COMM, KC_PDOT, KC_PENT,
  403. // Right Thumb
  404. _______, _______,
  405. _______,
  406. _______, _______, _______
  407. ),
  408. /* Colemak Mod-DH Matrix gaming/vanilla
  409. * (No access to Function or Numbers layers; mainly used for gaming; double-tap the TD(ADJ) above LAlt to access Adjust layer)
  410. * ,-----------------------------------------------------------------------------------------------------------.
  411. * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PScr| SLck| Paus|Numpd|Adjst|
  412. * `-----------------------------------------------------------------------------------------------------------'
  413. * ,-------------------------------------------. ,-------------------------------------------.
  414. * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
  415. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  416. * | Tab | Q | W | F | P | B | | J | L | U | Y | ; | \ |
  417. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  418. * | Ctrl | A | R | S | T | G | | M | N | E | I | O | ' |
  419. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  420. * | Shift | Z | X | C | D | V | | K | H | , | . | / | Shift |
  421. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  422. * | Ins | ` | [ | ] | | Left | Down | Up | Right|
  423. * `---------------------------' `---------------------------'
  424. * ,---------------. ,---------------.
  425. * |Esc/Ctl|TD(ADJ)| | RAlt | RCtl |
  426. * ,-------|-------|-------| |-------+-------+-------.
  427. * | | | LAlt | | RGUI | | |
  428. * | Space | Enter |-------| |-------| Delete| Bspc |
  429. * | | | Bspc | | Tab | | |
  430. * `-----------------------' `-----------------------'
  431. */
  432. [_CMODDHGM] = KEYMAP(
  433. // Left Hand
  434. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
  435. KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
  436. KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B,
  437. KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_G,
  438. KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V,
  439. KC_INS, KC_GRV, KC_LBRC, KC_RBRC,
  440. //Left Thumb
  441. CTLESC, TD(ADJ),
  442. KC_LALT,
  443. KC_SPC, KC_ENT, KC_BSPC,
  444. //Right Hand
  445. KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_NUMPAD), MO(_ADJUST),
  446. KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  447. KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
  448. KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
  449. KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
  450. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
  451. //Right Thumb
  452. KC_RALT, KC_RCTL,
  453. KC_RGUI,
  454. KC_TAB, KC_DEL, KC_BSPC
  455. ),
  456. /* QWERTY gaming/vanilla
  457. * (No access to Function or Numbers layers; mainly used for gaming; double-tap the TD(ADJ) above LAlt to access Adjust layer)
  458. * ,-----------------------------------------------------------------------------------------------------------.
  459. * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PScr| SLck| Paus|Numpd|Adjst|
  460. * `-----------------------------------------------------------------------------------------------------------'
  461. * ,-------------------------------------------. ,-------------------------------------------.
  462. * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
  463. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  464. * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
  465. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  466. * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
  467. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  468. * | Shift | Z | X | C | V | B | | N | M | , | . | / | Shift |
  469. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  470. * | Ins | ` | [ | ] | | Left | Down | Up | Right|
  471. * `---------------------------' `---------------------------'
  472. * ,---------------. ,---------------.
  473. * |Esc/Ctl|TD(ADJ)| | RAlt | RCtl |
  474. * ,-------|-------|-------| |-------+-------+-------.
  475. * | | | LAlt | | RGUI | | |
  476. * | Space | Enter |-------| |-------| Delete| Bspc |
  477. * | | | Bspc | | Tab | | |
  478. * `-----------------------' `-----------------------'
  479. */
  480. [_QWERTYGM] = KEYMAP(
  481. // Left Hand
  482. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
  483. KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
  484. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
  485. KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
  486. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
  487. KC_INS, KC_GRV, KC_LBRC, KC_RBRC,
  488. //Left Thumb
  489. CTLESC, TD(ADJ),
  490. KC_LALT,
  491. KC_SPC, KC_ENT, KC_BSPC,
  492. //Right Hand
  493. KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_NUMPAD), MO(_ADJUST),
  494. KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  495. KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  496. KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  497. KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
  498. KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
  499. //Right Thumb
  500. KC_RALT, KC_RCTL,
  501. KC_RGUI,
  502. KC_TAB, KC_DEL, KC_BSPC
  503. ),
  504. /* Adjust layer
  505. * (Enter/Number + Delete/Number2 under non-gaming/vanilla layers)
  506. * ,-----------------------------------------------------------------------------------------------------------.
  507. * | | | | | | | | | | | | | | | | | | |
  508. * `-----------------------------------------------------------------------------------------------------------'
  509. * ,-------------------------------------------. ,-------------------------------------------.
  510. * | |CModDH|Qwerty|Colmak|CMoDGM| QWGM | |Numpad| | | | | RESET |
  511. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  512. * | | | | | | | | | | | | | |
  513. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  514. * | | | | | | | | |NKROTG| | | | |
  515. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  516. * | | | | | | | | | | | | | |
  517. * `--------+------+------+------+------+------' `------+------+------+------+------+--------'
  518. * | | | | | | | | | |
  519. * `---------------------------' `---------------------------'
  520. * ,---------------. ,---------------.
  521. * | | | | | |
  522. * ,-------|-------|-------| |-------+-------+-------.
  523. * | | | | | | | |
  524. * | | |-------| |-------| | |
  525. * | | | | | | | |
  526. * `-----------------------' `-----------------------'
  527. */
  528. [_ADJUST] = KEYMAP(
  529. // Left Hand
  530. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  531. _______, CMODDH, QWERTY, COLEMAK, CMODDHGM, QWERTYGM,
  532. _______, _______, _______, _______, _______, _______,
  533. _______, _______, _______, _______, _______, _______,
  534. _______, _______, _______, _______, _______, _______,
  535. _______, _______, _______, _______,
  536. // Left Thumb
  537. _______, _______,
  538. _______,
  539. _______, _______, _______,
  540. // Right Hand
  541. _______, _______, _______, _______, _______, _______, _______, _______, _______,
  542. TG(_NUMPAD), _______, _______, _______, _______, RESET,
  543. _______, _______, _______, _______, _______, _______,
  544. _______, NKROTG, _______, _______, _______, _______,
  545. _______, _______, _______, _______, _______, _______,
  546. _______, _______, _______, _______,
  547. // Right Thumb
  548. _______, _______,
  549. _______,
  550. _______, _______, _______
  551. )
  552. };
  553. uint32_t layer_state_set_user(uint32_t state) {
  554. return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST);
  555. }
  556. void persistent_default_layer_set(uint16_t default_layer) {
  557. eeconfig_update_default_layer(default_layer);
  558. default_layer_set(default_layer);
  559. }
  560. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  561. switch (keycode) {
  562. case CMODDH:
  563. if (record->event.pressed) {
  564. persistent_default_layer_set(1UL << _CMODDH);
  565. layer_off ( _QWERTY);
  566. layer_off ( _COLEMAK);
  567. layer_off ( _NUMBERS);
  568. layer_off ( _NUMBERS2);
  569. layer_off ( _FUNCTION);
  570. layer_off ( _FUNCTION2);
  571. layer_off ( _NUMPAD);
  572. layer_off ( _CMODDHGM);
  573. layer_off ( _QWERTYGM);
  574. layer_off ( _ADJUST);
  575. }
  576. return false;
  577. break;
  578. case QWERTY:
  579. if (record->event.pressed) {
  580. persistent_default_layer_set(1UL << _QWERTY);
  581. layer_off ( _CMODDH);
  582. layer_off ( _COLEMAK);
  583. layer_off ( _NUMBERS);
  584. layer_off ( _NUMBERS2);
  585. layer_off ( _FUNCTION);
  586. layer_off ( _FUNCTION2);
  587. layer_off ( _NUMPAD);
  588. layer_off ( _CMODDHGM);
  589. layer_off ( _QWERTYGM);
  590. layer_off ( _ADJUST);
  591. }
  592. return false;
  593. break;
  594. case COLEMAK:
  595. if (record->event.pressed) {
  596. persistent_default_layer_set(1UL << _COLEMAK);
  597. layer_off ( _CMODDH);
  598. layer_off ( _QWERTY);
  599. layer_off ( _NUMBERS);
  600. layer_off ( _NUMBERS2);
  601. layer_off ( _FUNCTION);
  602. layer_off ( _FUNCTION2);
  603. layer_off ( _NUMPAD);
  604. layer_off ( _CMODDHGM);
  605. layer_off ( _QWERTYGM);
  606. layer_off ( _ADJUST);
  607. }
  608. return false;
  609. break;
  610. case CMODDHGM:
  611. if (record->event.pressed) {
  612. default_layer_set(1UL << _CMODDHGM);
  613. layer_off ( _CMODDH);
  614. layer_off ( _QWERTY);
  615. layer_off ( _COLEMAK);
  616. layer_off ( _NUMBERS);
  617. layer_off ( _NUMBERS2);
  618. layer_off ( _FUNCTION);
  619. layer_off ( _FUNCTION2);
  620. layer_off ( _NUMPAD);
  621. layer_off ( _QWERTYGM);
  622. layer_off ( _ADJUST);
  623. }
  624. return false;
  625. break;
  626. case QWERTYGM:
  627. if (record->event.pressed) {
  628. default_layer_set(1UL << _QWERTYGM);
  629. layer_off ( _CMODDH);
  630. layer_off ( _QWERTY);
  631. layer_off ( _COLEMAK);
  632. layer_off ( _NUMBERS);
  633. layer_off ( _NUMBERS2);
  634. layer_off ( _FUNCTION);
  635. layer_off ( _FUNCTION2);
  636. layer_off ( _NUMPAD);
  637. layer_off ( _CMODDHGM);
  638. layer_off ( _ADJUST);
  639. }
  640. return false;
  641. break;
  642. }
  643. return true;
  644. }