keymap.c 30 KB

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