logo

qmk_firmware

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

keymap.c (20239B)


  1. /* Copyright 2021 Christoph Rehmann (crehmann)
  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 2 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 <http://www.gnu.org/licenses/>.
  15. */
  16. #include QMK_KEYBOARD_H
  17. enum layers {
  18. _BASE = 0,
  19. _NAVR,
  20. _SYMB,
  21. _NUMR,
  22. _FUNL,
  23. _ADJL
  24. };
  25. // Aliases for readability
  26. #define BASE DF(_BASE)
  27. #define NAVR MO(_NAVR)
  28. #define SYMB MO(_SYMB)
  29. #define NUMR MO(_NUMR)
  30. #define FUNL MO(_FUNL)
  31. #define ADJL MO(_ADJL)
  32. // Left-hand home row mods
  33. #define RALT_X RALT_T(KC_X)
  34. #define GUI_A LGUI_T(KC_A)
  35. #define ALT_S LALT_T(KC_S)
  36. #define CTL_D LCTL_T(KC_D)
  37. #define SFT_F LSFT_T(KC_F)
  38. // Right-hand home row mods
  39. #define SFT_J RSFT_T(KC_J)
  40. #define CTL_K RCTL_T(KC_K)
  41. #define ALT_L LALT_T(KC_L)
  42. #define GUI_SCL RGUI_T(KC_SCLN)
  43. #define RALT_DT RALT_T(KC_DOT)
  44. // Left-hand outer column
  45. #define CTL_ESC MT(MOD_LCTL, KC_ESC)
  46. #define SFT_TAB MT(MOD_LSFT, KC_TAB)
  47. // Thumbcluster
  48. #define UC_TL1 KC_BTN1
  49. #define UC_TL2 LT(NAVR, KC_SPC)
  50. #define UC_TL3 LT(NUMR, KC_TAB)
  51. #define UC_TR3 LT(FUNL, KC_BSPC)
  52. #define UC_TR2 LT(SYMB, KC_ENT)
  53. #define UC_TR1 KC_BTN2
  54. // Shortcuts
  55. #define UC_COPY LCTL(KC_C)
  56. #define UC_PSTE LCTL(KC_V)
  57. #define UC_CUT LCTL(KC_X)
  58. #define UC_OSFT OSM(MOD_LSFT)
  59. // clang-format off
  60. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  61. // /*
  62. // * Base Layer
  63. // *
  64. // * ,----------------------------------. ,----------------------------------.
  65. // * | Q | W | E | R | T | | Y | U | I | O | P |
  66. // * | | | | | | | | | | | |
  67. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  68. // * | OSM | A | S | D | F | G | | H | J | K | L | ; : | Bksp |
  69. // * | Shift| GUI | LALT | LCTL | LSFT | | | | LSFT | LCTL | ALT | GUI | |
  70. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  71. // * | ESC | Z | X | C | F | B | | N | M | , < | . > | / ? | ADJL |
  72. // * | CTL | | RALT | | | | | | | | RALT | | |
  73. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  74. // * | BTN1 | Space| TAB | | Bksp| Enter| BTN2 |
  75. // * | | NAVR | NUMR | | FUNL| SYML | |
  76. // * `--------------------' `--------------------'
  77. // */
  78. [_BASE] = LAYOUT(
  79. KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
  80. UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_DEL,
  81. CTL_ESC, KC_Z , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, ADJL ,
  82. KC_BTN1, UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1
  83. ),
  84. // /*
  85. // * Navigation Layer (Right)
  86. // *
  87. // * ,----------------------------------. ,----------------------------------.
  88. // * | | | | | | |Insert| Cut | PgUp | PgDn | |
  89. // * | | | | | | | | | | | |
  90. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  91. // * | | | | | | | | Copy | ← | ↑ | ↓ | → | |
  92. // * | | | | | | | | | | | | | |
  93. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  94. // * | | | | | | | | Paste| Home | WH_U | WH_D | End | |
  95. // * | | | | | | | | | | | | | |
  96. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  97. // * | | | | | Bksp | Enter| |
  98. // * | | | | | | | |
  99. // * `--------------------' `--------------------'
  100. // */
  101. [_NAVR] = LAYOUT(
  102. _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______,
  103. _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______,
  104. _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, KC_WH_U, KC_WH_D, KC_END , _______,
  105. _______, _______, _______, KC_BSPC, KC_ENT , _______
  106. ),
  107. // --------------------------------------------------------------------------------------------------------------------------------------------------------
  108. // /*
  109. // * Symbol Layer (Right)
  110. //
  111. // * ,----------------------------------. ,----------------------------------.
  112. // * | ` | ~ | | | \ | | | | / | + | = | ? |
  113. // * | | | | | | | | | | | |
  114. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  115. // * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
  116. // * | | | | | | | | | | | | | |
  117. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  118. // * | | : | ; | - | [ | { | | } | ] | _ | , | . | |
  119. // * | | | | | | | | | | | | | |
  120. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  121. // * | | Space| TAB | | Bksp | Enter| |
  122. // * | | | | | | | |
  123. // * `--------------------' `--------------------'
  124. // *
  125. [_SYMB] = LAYOUT(
  126. KC_GRV , KC_TILD, KC_PIPE, KC_BSLS, _______, _______, KC_SLSH, KC_PLUS, KC_EQL , KC_QUES,
  127. _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
  128. _______, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT , _______,
  129. _______, KC_SPC , KC_TAB , KC_BSPC, KC_ENT , _______
  130. ),
  131. // /*
  132. // * Number Layer (Right)
  133. // *
  134. // * ,----------------------------------. ,----------------------------------.
  135. // * | | | | | | | / | 7 | 8 | 9 | - |
  136. // * | | | | | | | | | | | |
  137. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  138. // * | | | | | | | | * | 4 | 5 | 6 | + | |
  139. // * | | | | | | | | | | | | | |
  140. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  141. // * | | | | | | | | 0 | 1 | 2 | 3 | . | |
  142. // * | | | | | | | | | | | | | |
  143. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  144. // * | | | | | Bksp | Enter| |
  145. // * | | | | | | | |
  146. // * `--------------------' `--------------------'
  147. // */
  148. [_NUMR] = LAYOUT(
  149. _______, _______, _______, _______, _______, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_MINS,
  150. _______, _______, _______, _______, _______, _______, KC_ASTR, KC_4 , KC_5 , KC_6 , KC_PLUS, _______,
  151. _______, _______, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , KC_DOT , _______,
  152. _______, _______, _______, KC_BSPC, KC_ENT , _______
  153. ),
  154. // /*
  155. // * Function Layer (Left)
  156. // *
  157. // * ,----------------------------------. ,----------------------------------.
  158. // * | F12 | F7 | F8 | F9 | Pause| | | | | | |
  159. // * | | | | | | | | | | | |
  160. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  161. // * | | F11 | F4 | F5 | F6 | PrScr| | | | | | | |
  162. // * | | | | | | | | | | | | | |
  163. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  164. // * | | F10 | F1 | F2 | F3 | CapsL| | | | | | | |
  165. // * | | | | | | | | | | | | | |
  166. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  167. // * | | Space| TAB | | | | |
  168. // * | | | | | | | |
  169. // * `--------------------' `--------------------'
  170. // */
  171. [_FUNL] = LAYOUT(
  172. KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_PAUS, _______, _______, _______, _______, _______,
  173. _______, KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_PSCR, _______, _______, _______, _______, _______, _______,
  174. _______, KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_CAPS, _______, _______, _______, _______, _______, _______,
  175. _______, KC_SPC , KC_TAB , _______, _______, _______
  176. ),
  177. // /*
  178. // * Adjustment Layer (Left)
  179. // *
  180. // * ,----------------------------------. ,----------------------------------.
  181. // * | | | | | | | | | | | |
  182. // * | | | | | | | | | | | |
  183. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  184. // * | |M Prev| VolDn| VolDn|M Next| | | | | | | | |
  185. // * | | | | | | | | | | | | | |
  186. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  187. // * | | | | Mute | Play | | | | | | | | |
  188. // * | | | | | | | | | | | | | |
  189. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  190. // * | | Space| TAB | | | | |
  191. // * | | | | | | | |
  192. // * `--------------------' `--------------------'
  193. // */
  194. [_ADJL] = LAYOUT(
  195. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  196. _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______, _______, _______, _______, _______, _______,
  197. _______, _______, _______, KC_MUTE, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
  198. _______, KC_SPC , KC_TAB , _______, _______, _______
  199. ),
  200. // -------------------------------------------------------- TEMPLATE -------------------------------------------------------------------------------------
  201. // /*
  202. // * Layer
  203. // *
  204. // * ,----------------------------------. ,----------------------------------.
  205. // * | | | | | | | | | | | |
  206. // * | | | | | | | | | | | |
  207. // * ,------+------+------+------+------+------| |------+------+------+------+------+------.
  208. // * | | | | | | | | | | | | | |
  209. // * | | | | | | | | | | | | | |
  210. // * |------+------+------+------+------+------| |------+------+------+------+------+------|
  211. // * | | | | | | | | | | | | | |
  212. // * | | | | | | | | | | | | | |
  213. // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
  214. // * | | | | | | | |
  215. // * | | | | | | | |
  216. // * `--------------------' `--------------------'
  217. // */
  218. // [_LAYERINDEX] = LAYOUT(
  219. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  220. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  221. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  222. // _______, _______, _______, _______, _______, _______
  223. // ),
  224. // --------------------------------------------------------------------------------------------------------------------------------------------------------
  225. };
  226. // uncommint this and modify the timings if the home row mods are not working for you
  227. /*
  228. uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
  229. switch (keycode) {
  230. case GUI_A:
  231. return TAPPING_TERM + 150;
  232. case ALT_S:
  233. return TAPPING_TERM + 50;
  234. case ALT_L:
  235. return TAPPING_TERM + 50;
  236. case GUI_SCL:
  237. return TAPPING_TERM + 150;
  238. default:
  239. return TAPPING_TERM;
  240. }
  241. }
  242. */
  243. #ifdef HAPTIC_ENABLE
  244. bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) {
  245. switch (keycode) {
  246. case KC_BTN1 ... KC_BTN5:
  247. return true;
  248. break;
  249. }
  250. return false;
  251. }
  252. #endif