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

482 lines
38 KiB

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