logo

qmk_firmware

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

keymap.c (13197B)


  1. // Copyright 2023 QMK
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include QMK_KEYBOARD_H
  4. enum sofle_layers {
  5. /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
  6. _QWERTY,
  7. _COLEMAK,
  8. _LOWER,
  9. _RAISE,
  10. _ADJUST,
  11. };
  12. enum custom_keycodes {
  13. KC_PRVWD = QK_USER,
  14. KC_NXTWD,
  15. KC_LSTRT,
  16. KC_LEND
  17. };
  18. #define KC_QWERTY PDF(_QWERTY)
  19. #define KC_COLEMAK PDF(_COLEMAK)
  20. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  21. /*
  22. * QWERTY
  23. * ,-----------------------------------------. ,-----------------------------------------.
  24. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
  25. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  26. * | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
  27. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  28. * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
  29. * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
  30. * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
  31. * `-----------------------------------------/ / \ \-----------------------------------------'
  32. * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
  33. * | | | | |/ / \ \ | | | | |
  34. * `----------------------------------' '------''---------------------------'
  35. */
  36. [_QWERTY] = LAYOUT(
  37. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
  38. KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
  39. KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  40. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
  41. KC_LGUI,KC_LALT,KC_LCTL, TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
  42. ),
  43. /*
  44. * COLEMAK
  45. * ,-----------------------------------------. ,-----------------------------------------.
  46. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
  47. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  48. * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
  49. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  50. * | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
  51. * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
  52. * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift|
  53. * `-----------------------------------------/ / \ \-----------------------------------------'
  54. * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
  55. * | | | | |/ / \ \ | | | | |
  56. * `----------------------------------' '------''---------------------------'
  57. */
  58. [_COLEMAK] = LAYOUT(
  59. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
  60. KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
  61. KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
  62. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
  63. KC_LGUI,KC_LALT,KC_LCTL,TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
  64. ),
  65. /* LOWER
  66. * ,-----------------------------------------. ,-----------------------------------------.
  67. * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
  68. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  69. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
  70. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  71. * | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
  72. * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
  73. * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
  74. * `-----------------------------------------/ / \ \-----------------------------------------'
  75. * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
  76. * | | | | |/ / \ \ | | | | |
  77. * `----------------------------------' '------''---------------------------'
  78. */
  79. [_LOWER] = LAYOUT(
  80. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  81. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
  82. _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
  83. _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
  84. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  85. ),
  86. /* RAISE
  87. * ,----------------------------------------. ,-----------------------------------------.
  88. * | | | | | | | | | | | | | |
  89. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  90. * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
  91. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  92. * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
  93. * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
  94. * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
  95. * `-----------------------------------------/ / \ \-----------------------------------------'
  96. * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
  97. * | | | | |/ / \ \ | | | | |
  98. * `----------------------------------' '------''---------------------------'
  99. */
  100. [_RAISE] = LAYOUT(
  101. _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
  102. _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,C(KC_BSPC), KC_BSPC,
  103. _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
  104. _______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
  105. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  106. ),
  107. /* ADJUST
  108. * ,-----------------------------------------. ,-----------------------------------------.
  109. * | | | | | | | | | | | | | |
  110. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  111. * | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | |
  112. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  113. * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
  114. * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
  115. * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | |
  116. * `-----------------------------------------/ / \ \-----------------------------------------'
  117. * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
  118. * | | | | |/ / \ \ | | | | |
  119. * `----------------------------------' '------''---------------------------'
  120. */
  121. [_ADJUST] = LAYOUT(
  122. XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  123. QK_BOOT , XXXXXXX,KC_QWERTY,KC_COLEMAK,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  124. XXXXXXX , XXXXXXX,CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX,
  125. XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
  126. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  127. )
  128. };
  129. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  130. switch (keycode) {
  131. case KC_PRVWD:
  132. if (record->event.pressed) {
  133. if (keymap_config.swap_lctl_lgui) {
  134. register_mods(mod_config(MOD_LALT));
  135. register_code(KC_LEFT);
  136. } else {
  137. register_mods(mod_config(MOD_LCTL));
  138. register_code(KC_LEFT);
  139. }
  140. } else {
  141. if (keymap_config.swap_lctl_lgui) {
  142. unregister_mods(mod_config(MOD_LALT));
  143. unregister_code(KC_LEFT);
  144. } else {
  145. unregister_mods(mod_config(MOD_LCTL));
  146. unregister_code(KC_LEFT);
  147. }
  148. }
  149. break;
  150. case KC_NXTWD:
  151. if (record->event.pressed) {
  152. if (keymap_config.swap_lctl_lgui) {
  153. register_mods(mod_config(MOD_LALT));
  154. register_code(KC_RIGHT);
  155. } else {
  156. register_mods(mod_config(MOD_LCTL));
  157. register_code(KC_RIGHT);
  158. }
  159. } else {
  160. if (keymap_config.swap_lctl_lgui) {
  161. unregister_mods(mod_config(MOD_LALT));
  162. unregister_code(KC_RIGHT);
  163. } else {
  164. unregister_mods(mod_config(MOD_LCTL));
  165. unregister_code(KC_RIGHT);
  166. }
  167. }
  168. break;
  169. case KC_LSTRT:
  170. if (record->event.pressed) {
  171. if (keymap_config.swap_lctl_lgui) {
  172. //CMD-arrow on Mac, but we have CTL and GUI swapped
  173. register_mods(mod_config(MOD_LCTL));
  174. register_code(KC_LEFT);
  175. } else {
  176. register_code(KC_HOME);
  177. }
  178. } else {
  179. if (keymap_config.swap_lctl_lgui) {
  180. unregister_mods(mod_config(MOD_LCTL));
  181. unregister_code(KC_LEFT);
  182. } else {
  183. unregister_code(KC_HOME);
  184. }
  185. }
  186. break;
  187. case KC_LEND:
  188. if (record->event.pressed) {
  189. if (keymap_config.swap_lctl_lgui) {
  190. //CMD-arrow on Mac, but we have CTL and GUI swapped
  191. register_mods(mod_config(MOD_LCTL));
  192. register_code(KC_RIGHT);
  193. } else {
  194. register_code(KC_END);
  195. }
  196. } else {
  197. if (keymap_config.swap_lctl_lgui) {
  198. unregister_mods(mod_config(MOD_LCTL));
  199. unregister_code(KC_RIGHT);
  200. } else {
  201. unregister_code(KC_END);
  202. }
  203. }
  204. break;
  205. }
  206. return true;
  207. }