logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

keymap.c (18274B)


  1. /* Copyright 2023 Etienne Collin (@etiennecollin)
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 3 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <https://www.gnu.org/licenses/>.
  15. */
  16. #include QMK_KEYBOARD_H
  17. enum custom_layers {
  18. COL,
  19. QWE,
  20. GAM,
  21. MED,
  22. NAV,
  23. MOS,
  24. SYM,
  25. NUM,
  26. FUN,
  27. SYS,
  28. };
  29. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  30. [COL] = LAYOUT_split_3x5_3(
  31. // ----------------------------------------- -----------------------------------------
  32. // | q | w | f | p | b | | j | l | u | y | ' |
  33. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  34. // | a | r | s | t | g | | m | n | e | i | o |
  35. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  36. // | z | x | c | d | v | | k | h | , | . | / |
  37. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  38. // | esc | spc | tab | | ent | bsp | del |
  39. // --------+-------+-------- --------+-------+--------
  40. KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
  41. LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
  42. KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH,
  43. LT(MED, KC_ESC), LT(NAV, KC_SPC), LT(MOS, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL)
  44. ),
  45. [QWE] = LAYOUT_split_3x5_3(
  46. // ----------------------------------------- -----------------------------------------
  47. // | q | w | e | r | t | | y | u | i | o | p |
  48. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  49. // | a | s | d | f | g | | h | j | k | l | ' |
  50. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  51. // | z | x | c | v | b | | n | m | , | . | / |
  52. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  53. // | esc | spc | tab | | ent | bsp | del |
  54. // --------+-------+-------- --------+-------+--------
  55. KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
  56. LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
  57. KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
  58. LT(MED, KC_ESC), LT(NAV, KC_SPC), LT(MOS, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL)
  59. ),
  60. [GAM] = LAYOUT_split_3x5_3(
  61. // ----------------------------------------- -----------------------------------------
  62. // | tab | q | w | e | r | | t | y | u | i | o |
  63. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  64. // | sht | a | s | d | f | | g | h | j | k | l |
  65. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  66. // | ctl | z | x | c | v | | b | n | m | , | . |
  67. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  68. // | alt | cps | spc | | ent | bsp | esc |
  69. // --------+-------+-------- --------+-------+--------
  70. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O,
  71. KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
  72. KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,
  73. KC_LALT, KC_CAPS, KC_SPC, LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_ESC)
  74. ),
  75. [MED] = LAYOUT_split_3x5_3(
  76. // ----------------------------------------- -----------------------------------------
  77. // | | | | | | | | | | | |
  78. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  79. // | gui | alt | ctl | sht | | | | prev | vol - | vol + | next |
  80. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  81. // | | | | | | | | | | | |
  82. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  83. // | ___ | | | | stop | pause | mute |
  84. // --------+-------+-------- --------+-------+--------
  85. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  86. KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT,
  87. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MRWD, XXXXXXX, XXXXXXX, KC_MFFD,
  88. _______, XXXXXXX, XXXXXXX, KC_MSTP, KC_MPLY, KC_MUTE
  89. ),
  90. [NAV] = LAYOUT_split_3x5_3(
  91. // ----------------------------------------- -----------------------------------------
  92. // | | | | | | | | | | | |
  93. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  94. // | gui | alt | ctl | sht | | | cps | ← | ↓ | ↑ | → |
  95. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  96. // | | | | | | | insrt | home | pageu | paged | end |
  97. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  98. // | | ___ | | | ent | bsp | del |
  99. // --------+-------+-------- --------+-------+--------
  100. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  101. KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
  102. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
  103. XXXXXXX, _______, XXXXXXX, KC_ENT, KC_BSPC, KC_DEL
  104. ),
  105. [MOS] = LAYOUT_split_3x5_3(
  106. // ----------------------------------------- -----------------------------------------
  107. // | | | | | | | | acc0 | acc1 | acc2 | |
  108. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  109. // | gui | alt | ctl | sht | | | | ← | ↓ | ↑ | → |
  110. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  111. // | | | | | | | | w← | w↓ | w↑ | w→ |
  112. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  113. // | | | ___ | | left | right | mid |
  114. // --------+-------+-------- --------+-------+--------
  115. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX,
  116. KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R,
  117. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R,
  118. XXXXXXX, XXXXXXX, _______, KC_BTN1, KC_BTN2, KC_BTN3
  119. ),
  120. [SYM] = LAYOUT_split_3x5_3(
  121. // ----------------------------------------- -----------------------------------------
  122. // | { | & | * | ( | } | | | | | | |
  123. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  124. // | : | $ | % | ^ | + | | | sht | ctl | alt | gui |
  125. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  126. // | ~ | ! | @ | # | | | | | | | | |
  127. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  128. // | ( | ) | _ | | ___ | | |
  129. // --------+-------+-------- --------+-------+--------
  130. KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  131. KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
  132. KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  133. KC_LPRN, KC_RPRN, KC_UNDS, _______, XXXXXXX, XXXXXXX
  134. ),
  135. [NUM] = LAYOUT_split_3x5_3(
  136. // ----------------------------------------- -----------------------------------------
  137. // | [ { | 7 & | 8 * | 9 ( | ] } | | | | | | |
  138. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  139. // | ; : | 4 $ | 5 % | 6 ^ | = + | | | sht | ctl | alt | gui |
  140. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  141. // | ` ~ | 1 ! | 2 @ | 3 # | \ | | | | | | | |
  142. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  143. // | . > | 0 ) | - _ | | | ___ | |
  144. // --------+-------+-------- --------+-------+--------
  145. KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  146. KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
  147. KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  148. KC_DOT, KC_0, KC_MINS, XXXXXXX, _______, XXXXXXX
  149. ),
  150. [FUN] = LAYOUT_split_3x5_3(
  151. // ----------------------------------------- -----------------------------------------
  152. // | F12 | F 7 | F 8 | F 9 | PrScr | | | | | | |
  153. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  154. // | F11 | F 4 | F 5 | F 6 | pause | | | sht | ctl | alt | gui |
  155. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  156. // | F10 | F 1 | F 2 | F 3 | scrlk | | | | | | |
  157. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  158. // | app | spc | tab | | | | ___ |
  159. // --------+-------+-------- --------+-------+--------
  160. KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  161. KC_F11, KC_F4, KC_F5, KC_F6, KC_PAUS, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
  162. KC_F10, KC_F1, KC_F2, KC_F3, KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  163. KC_APP, KC_SPC, KC_TAB, XXXXXXX, XXXXXXX, _______
  164. ),
  165. [SYS] = LAYOUT_split_3x5_3(
  166. // ----------------------------------------- -----------------------------------------
  167. // | BOOT | | GAME | QWERT | COLMK | | COLMK | QWERT | GAME | | BOOT |
  168. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  169. // | | | | | | | | | | | |
  170. // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  171. // | | | | | | | | | | | |
  172. // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
  173. // | | | | | | | |
  174. // --------+-------+-------- --------+-------+--------
  175. QK_BOOT, XXXXXXX, DF(GAM), DF(QWE), DF(COL), DF(COL), DF(QWE), DF(GAM), XXXXXXX, QK_BOOT,
  176. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  177. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  178. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
  179. )
  180. };
  181. const uint16_t PROGMEM combo_sys[] = {LT(MED, KC_ESC), LT(FUN, KC_DEL), COMBO_END};
  182. const uint16_t PROGMEM combo_sys_gam[] = {KC_LALT, LT(FUN, KC_ESC), COMBO_END};
  183. combo_t key_combos[] = {
  184. COMBO(combo_sys, MO(SYS)),
  185. COMBO(combo_sys_gam, MO(SYS))
  186. };