keymap.c 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. #include QMK_KEYBOARD_H
  2. #include "keymap_german.h"
  3. #define BASE 0 // default layer / VIM
  4. #define ARW 1 // arrow layer / Terminal
  5. #define DIAK 2 // diakritika layer
  6. #define BRACK 3 // brackets layer
  7. #define SYMBOLS 4 // symbols
  8. #define MEDIA 5 // media keys / Mouse-Navigation
  9. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  10. /* Keymap 0: Basic layer / VIM
  11. * ,--------------------------------------------------. ,--------------------------------------------------.
  12. * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Media |
  13. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  14. * | | P | U | Dia-L| , | Q | | | | V | C | L | M | B | |
  15. * |--------+------+------+------+------+------| G | | gg |------+------+------+------+------+--------|
  16. * | Symbols| H | I | E | A | O |------| |------| D | T | R | N | S | ARW |
  17. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  18. * | LShift | K | Y | . | ' | X |str-D | |str-U | J | G | Z | W | F | RShift |
  19. * * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  20. * | Ctrl | Alt | | | | | H | J | K | L | Ctrl |
  21. * `----------------------------------' `----------------------------------'
  22. * LShift is Tab on Click
  23. *
  24. * ,-------------. ,-------------.
  25. * | ^ | / | | ? | $ |
  26. * ,------|------|------| |------+--------+------.
  27. * | | |str+a | |str+c | | |
  28. * | Brack| Space|------| |------| Enter |BSpace|
  29. * | -Lay |/shift| Tab/ | | | | |
  30. * | | | GUI | | ESC | | |
  31. * `--------------------' `----------------------'
  32. * GUI is one shot
  33. * str + a is for tmux etc.
  34. * str + c is for stopping programs
  35. */
  36. [BASE] = LAYOUT_ergodox( // layer 0 : default
  37. // left hand
  38. KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
  39. TG(SYMBOLS), DE_P, DE_U, OSL(DIAK), DE_COMM, DE_Q, LSFT(DE_G),
  40. OSL(SYMBOLS), DE_H, DE_I, DE_E, DE_A, DE_O,
  41. SFT_T(KC_TAB), DE_K, DE_Y, DE_DOT, DE_QUOT, DE_X, LCTL(DE_D),
  42. KC_LCTRL, KC_LALT, KC_NO, KC_NO, KC_NO,
  43. // left hand thumb-cluster
  44. DE_CIRC, DE_SLSH,
  45. LCTL(DE_A),
  46. OSL(BRACK), SFT_T(KC_SPACE), GUI_T(KC_TAB),
  47. // right hand
  48. KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, TG(MEDIA),
  49. DE_G, DE_V, DE_C, DE_L, DE_M, DE_B, KC_NO,
  50. DE_D, DE_T, DE_R, DE_N, DE_S, TG(ARW),
  51. LCTL(DE_U), DE_J, DE_G, DE_Z, DE_W, DE_F, KC_RSFT,
  52. KC_H, KC_J, KC_K, KC_L, KC_RCTRL,
  53. // right thumb-cluster
  54. DE_QUES, DE_DLR,
  55. LCTL(DE_C),
  56. KC_ESCAPE, KC_ENTER, KC_BSPACE
  57. ),
  58. /* Keymap 1: Arrow Layer / Terminal
  59. *
  60. * ,--------------------------------------------------. ,--------------------------------------------------.
  61. * | | | | | | | | | | | | | | | |
  62. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  63. * | | | | | | | | | | | | | | | |
  64. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  65. * | | | | | | |------| |------| | | | | | |
  66. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  67. * | | | | | | |P-Down| |P-Up | | | | | | |
  68. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  69. * | | | | | | | Left | Bot | Top | Right| |
  70. * `----------------------------------' `----------------------------------'
  71. * ,-------------. ,-------------.
  72. * | Home | | | | End |
  73. * ,------|------|------| |------+------+------.
  74. * | | | | | | | |
  75. * | | |------| |------| | |
  76. * | | | | | | | |
  77. * `--------------------' `--------------------'
  78. */
  79. // Arrows
  80. [ARW] = LAYOUT_ergodox(
  81. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  82. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  83. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  84. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDOWN,
  85. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  86. KC_HOME, KC_TRNS,
  87. KC_TRNS,
  88. KC_TRNS, KC_TRNS, KC_TRNS,
  89. // right hand
  90. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  91. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  92. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  93. KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  94. KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS,
  95. KC_TRNS, KC_END,
  96. KC_TRNS,
  97. KC_TRNS, KC_TRNS, KC_TRNS
  98. ),
  99. /* Keymap 2: Diakritika Layer
  100. *
  101. * ,--------------------------------------------------. ,--------------------------------------------------.
  102. * | | | | | | | | | | | | | | | |
  103. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  104. * | | | Ü | | | | | | | | | | | | |
  105. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  106. * | | | | | Ä | Ö |------| |------| | | | | ß | |
  107. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  108. * | | | | | | | | | | | | | | | |
  109. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  110. * | | | | | | | | | | | |
  111. * `----------------------------------' `----------------------------------'
  112. * ,-------------. ,-------------.
  113. * | | | | | |
  114. * ,------|------|------| |------+------+------.
  115. * | | | | | | | |
  116. * | | |------| |------| | |
  117. * | | | | | | | |
  118. * `--------------------' `--------------------'
  119. */
  120. // Diakritika
  121. [DIAK] = LAYOUT_ergodox(
  122. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  123. KC_TRNS, KC_TRNS, DE_UDIA, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  124. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_ADIA, DE_ODIA,
  125. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  126. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  127. KC_TRNS, KC_TRNS,
  128. KC_TRNS,
  129. KC_TRNS, KC_TRNS, KC_TRNS,
  130. // right hand
  131. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  132. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  133. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_SS, KC_TRNS,
  134. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  135. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  136. KC_TRNS, KC_TRNS,
  137. KC_TRNS,
  138. KC_TRNS, KC_TRNS, KC_TRNS
  139. ),
  140. /* Keymap 3: Brackets Layer
  141. *
  142. * ,--------------------------------------------------. ,--------------------------------------------------.
  143. * | | | | | | | | | | | | | | | |
  144. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  145. * | | | | | | | | | | | | | | | |
  146. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  147. * | | | ( | { | [ | |------| |------| | ] | } | ) | | |
  148. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  149. * | | | | | | | | | | | | | | | |
  150. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  151. * | | | | | | | | | | | |
  152. * `----------------------------------' `----------------------------------'
  153. * ,-------------. ,-------------.
  154. * | | | | | |
  155. * ,------|------|------| |------+------+------.
  156. * | | | | | | | |
  157. * | | |------| |------| | |
  158. * | | | | | | | |
  159. * `--------------------' `--------------------'
  160. */
  161. // BRACK
  162. [BRACK] = LAYOUT_ergodox(
  163. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  164. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  165. KC_TRNS, KC_TRNS, DE_LPRN, DE_LCBR, DE_LBRC, KC_TRNS,
  166. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  167. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  168. KC_TRNS, KC_TRNS,
  169. KC_TRNS,
  170. KC_TRNS, KC_TRNS, KC_TRNS,
  171. // right hand
  172. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  173. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  174. KC_TRNS, DE_RBRC, DE_RCBR, DE_RPRN, KC_TRNS, KC_TRNS,
  175. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  176. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  177. KC_TRNS, KC_TRNS,
  178. KC_TRNS,
  179. KC_TRNS, KC_TRNS, KC_TRNS
  180. ),
  181. /* Keymap 4: Symbol Layer
  182. *
  183. *
  184. * Original:
  185. * ,--------------------------------------------------. ,--------------------------------------------------.
  186. * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
  187. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  188. * | | ² | ° | ~ | @ | ! | | | | ? | & | § | " | ³ | |
  189. * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
  190. * | | ´ | ' | : | ^ | < |------| |------| > | $ | ; | | | ` | |
  191. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  192. * | | € | + | = | * | / | { | | } | \ | % | # | - | _ | |
  193. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  194. * | | | | | | | | | | | |
  195. * `----------------------------------' `----------------------------------'
  196. */
  197. // SYMBOLS
  198. [SYMBOLS] = LAYOUT_ergodox(
  199. // left hand
  200. KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, //DE_LBRC,
  201. KC_TRNS,DE_SUP2,DE_DEG, DE_TILD, DE_AT, DE_EXLM, DE_LPRN,
  202. KC_TRNS,DE_ACUT,DE_QUOT, DE_COLN, DE_CIRC, DE_LABK,
  203. KC_TRNS,DE_EURO,DE_PLUS, DE_EQL, DE_ASTR, DE_SLSH, DE_LCBR,
  204. KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
  205. KC_TRNS,KC_TRNS,
  206. KC_TRNS,
  207. KC_TRNS,KC_TRNS,KC_TRNS,
  208. // right hand
  209. //DE_RBRC,
  210. KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
  211. DE_RPRN, DE_QUES, DE_AMPR, DE_SECT, DE_DQUO, DE_SUP3, KC_TRNS,
  212. DE_RABK, DE_DLR, DE_SCLN, DE_PIPE, DE_GRV, KC_TRNS,
  213. DE_RCBR, DE_BSLS, DE_PERC, DE_HASH, DE_MINS, DE_UNDS, KC_TRNS,
  214. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  215. KC_TRNS, KC_TRNS,
  216. KC_TRNS,
  217. KC_TRNS, KC_TRNS, KC_TRNS
  218. ),
  219. /* Keymap 5: Numbers
  220. *
  221. * ,--------------------------------------------------. ,--------------------------------------------------.
  222. * | | | | | | | | | | | | Num | / | * | - |
  223. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  224. * | | | | | | | | | | | | 7 | 8 | 9 | + |
  225. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  226. * | | | | | | |------| |------| | | 4 | 5 | 6 | + |
  227. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  228. * | | | | | | | | | | | | 1 | 2 | 3 | Enter |
  229. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  230. * | | | | | | | 0 | , | | | Enter|
  231. * `----------------------------------' `----------------------------------'
  232. * ,-------------. ,-------------.
  233. * | | | | | |
  234. * ,------|------|------| |------+------+------.
  235. * | | | | | | | |
  236. * | | |------| |------| | |
  237. * | | | | | | | |
  238. * `--------------------' `--------------------'
  239. // NUMBERS
  240. [NUMBERS] = LAYOUT_ergodox(
  241. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  242. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  243. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  244. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  245. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  246. KC_TRNS, KC_TRNS,
  247. KC_TRNS,
  248. KC_TRNS, KC_TRNS, KC_TRNS,
  249. // right hand
  250. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  251. KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS,
  252. KC_TRNS, KC_TRNS, KC_4, KC_5, KC_8, KC_TRNS,
  253. KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS,
  254. KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
  255. KC_TRNS, KC_TRNS,
  256. KC_TRNS,
  257. KC_TRNS, KC_TRNS, KC_TRNS
  258. ),
  259. */
  260. /* Keymap 6: Media and mouse keys
  261. *
  262. * ,--------------------------------------------------. ,--------------------------------------------------.
  263. * | | | | | | | | | | | | | | | |
  264. * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
  265. * | | Sleep| | | | | | | | | | | | | |
  266. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  267. * | | Wake | | | | |------| |------| |MsLeft|MsDown| MsUp |MsRght| |
  268. * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
  269. * | | | | | | | | | | | | | | | |
  270. * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
  271. * | | | Mute| VolDn| VolUp| | Play| Prev | Next | Stop | |
  272. * `----------------------------------' `----------------------------------'
  273. * ,-------------. ,-------------.
  274. * | | | | | |
  275. * ,------|------|------| |------+------+------.
  276. * | | | | | | | |
  277. * | | Lclk|------| |------|Rclk | |
  278. * | | | | | | | |
  279. * `--------------------' `--------------------'
  280. */
  281. // MEDIA AND MOUSE
  282. [MEDIA] = LAYOUT_ergodox(
  283. KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  284. KC_TRNS, KC_SLEP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  285. KC_TRNS, KC_WAKE, KC_NO, KC_NO, KC_NO, KC_TRNS,
  286. KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  287. KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU,
  288. KC_TRNS, KC_TRNS,
  289. KC_TRNS,
  290. KC_TRNS, KC_BTN1, KC_TRNS,
  291. // right hand
  292. KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
  293. KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
  294. KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS,
  295. KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
  296. KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS,
  297. KC_TRNS, KC_TRNS,
  298. KC_TRNS,
  299. KC_TRNS, KC_BTN2, KC_TRNS
  300. ),
  301. };
  302. // Runs constantly in the background, in a loop.
  303. void matrix_scan_user_keyboard(void) {
  304. ergodox_board_led_on();
  305. ergodox_led_all_on();
  306. }