2
0

keymap.c 38 KB

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