keymap.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /* Copyright 2018 Markus Weimar
  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 "xd75.h"
  17. #include "keymap_german.h"
  18. #define ________ KC_TRNS
  19. #define ___xx___ KC_NO
  20. #define NKRO_TG MAGIC_TOGGLE_NKRO
  21. enum my_layers {
  22. _QWZ,
  23. _QWY,
  24. _GAM,
  25. _FN1,
  26. _FN2,
  27. _FN3,
  28. };
  29. enum my_keycodes {
  30. QWERTZ = SAFE_RANGE,
  31. QWERTY,
  32. GAMING,
  33. FN1,
  34. FN2,
  35. FN3
  36. };
  37. enum my_ucis {
  38. UNI_LNX,
  39. UNI_MAC,
  40. UNI_WIN,
  41. };
  42. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  43. /* QWERTZ
  44. * .--------------------------------------------------------------------------------------------------------------------------------------.
  45. * | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | Mute | Vol- | Vol+ | 7 / | 8 ( | 9 ) | 0 = | ẞ ? | Ü |
  46. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  47. * | Esc | Q | W | E | R | T | Home | Play | End | Z | U | I | O | P | Ä |
  48. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  49. * | LShift | A | S | D | F | G | Pg Up | Up | Pg Dn | H | J | K | L | Ö | RShift |
  50. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  51. * | LCtrl | Y | X | C | V | B | Left | Down | Right | N | M | , ; | . : | - _ | RCtrl |
  52. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  53. * | Caps | Fn3 | LGUI | LAlt | Fn2 | Fn1 | Tab | Del | Enter | Space | Bksp | LAlt | LGUI | Fn3 | Ins |
  54. * '--------------------------------------------------------------------------------------------------------------------------------------'
  55. */
  56. [_QWZ] = {
  57. { DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UE },
  58. { KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_AE },
  59. { KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_OE, KC_RSFT },
  60. { KC_LCTL, DE_Y, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL },
  61. { KC_CAPS, MO(_FN3), KC_LGUI, KC_LALT, MO(_FN2), MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS },
  62. },
  63. /* QWERTY
  64. * .--------------------------------------------------------------------------------------------------------------------------------------.
  65. * | | | | | | | | | | | | | | | |
  66. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  67. * | | | | | | | | | | Y | | | | | |
  68. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  69. * | | | | | | | | | | | | | | | |
  70. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  71. * | | Z | | | | | | | | | | | | | |
  72. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  73. * | | | | | | | | | | | | | | | |
  74. * '--------------------------------------------------------------------------------------------------------------------------------------'
  75. */
  76. [_QWY] = {
  77. { DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UE },
  78. { KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Y, DE_U, DE_I, DE_O, DE_P, DE_AE },
  79. { KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_OE, KC_RSFT },
  80. { KC_LCTL, DE_Z, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL },
  81. { KC_CAPS, MO(_FN3), KC_LGUI, KC_LALT, MO(_FN2), MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS },
  82. },
  83. /* GAMING
  84. * .--------------------------------------------------------------------------------------------------------------------------------------.
  85. * | | | | | | | | | | | | | | | |
  86. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  87. * | | | | | | | | | | Y | | | | | |
  88. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  89. * | | | | | | | | | | | | | | | |
  90. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  91. * | | Z | | | | | | | | | | | | | |
  92. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  93. * | Fn2 | | | | Space | | | | | | | | | | |
  94. * '--------------------------------------------------------------------------------------------------------------------------------------'
  95. */
  96. [_GAM] = {
  97. { DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UE },
  98. { KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Y, DE_U, DE_I, DE_O, DE_P, DE_AE },
  99. { KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_OE, KC_RSFT },
  100. { KC_LCTL, DE_Z, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL },
  101. { MO(_FN2), MO(_FN3), KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS },
  102. },
  103. /* FN1
  104. * .--------------------------------------------------------------------------------------------------------------------------------------.
  105. * | F1 | F2 | F3 | F4 | F5 | F6 | Prev | Play | Next | F7 | F8 | F9 | F10 | F11 | F12 |
  106. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  107. * | | @ | ~ | € | ´ | ` | | | | \ | { | } | + | * | |
  108. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  109. * | | " | ' | ‚ | ‘ | ’ | | | | | | [ | ] | ! | ? | |
  110. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  111. * | | ° | ^ | „ | “ | ” | | | | # | < | > | … | – | |
  112. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  113. * | | | | | | | | | | | | | | | |
  114. * '--------------------------------------------------------------------------------------------------------------------------------------'
  115. */
  116. [_FN1] = {
  117. { KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 },
  118. { ________, DE_AT, DE_TILD, DE_EURO, DE_ACUT, DE_GRV, ________, ___xx___, ________, DE_BSLS, DE_LCBR, DE_RCBR, DE_PLUS, DE_ASTR, ___xx___ },
  119. { ________, DE_DQOT, DE_QUOT, UC(L'‚'), UC(L'‘'), UC(L'’'), ________, ________, ________, DE_PIPE, DE_LBRC, DE_RBRC, DE_EXLM, DE_QST, ________ },
  120. { ________, DE_RING, DE_CIRC, UC(L'„'), UC(L'“'), UC(L'”'), ________, ________, ________, DE_HASH, DE_LESS, DE_MORE, UC(L'…'), UC(L'–'), ________ },
  121. { ___xx___, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________ },
  122. },
  123. /* FN2
  124. * .--------------------------------------------------------------------------------------------------------------------------------------.
  125. * | | | | | % | ( | ) | P/ | P* | P- | Print | Scroll | Pause | ẞ | |
  126. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  127. * | | | Mute | Vol- | Vol+ | Bspc | P7 | P8 | P9 | P+ | WH_U | MS_U | WH_D | × | ÷ |
  128. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  129. * | | App | ACL0 | ACL1 | ACL2 | Space | P4 | P5 | P6 | WH_L | MS_L | MS_D | MS_R | WH_R | |
  130. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  131. * | | | Prev | Play | Next | Tab | P1 | P2 | P3 | PEnter | BTN1 | BTN2 | BTN3 | — | |
  132. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  133. * | Fn2 | | | | | PEnter | P0 | . : | P, | BTN1 | BTN2 | BTN3 | | | |
  134. * '--------------------------------------------------------------------------------------------------------------------------------------'
  135. */
  136. [_FN2] = {
  137. { ___xx___, ___xx___, ___xx___, ___xx___, DE_PERC, DE_LPRN, DE_RPRN, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_LSCR, KC_PAUS, UC(L'ẞ'), ___xx___ },
  138. { ________, ___xx___, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_WH_U, KC_MS_U, KC_WH_D, UC(L'×'), UC(L'÷') },
  139. { ________, KC_APP, KC_ACL2, KC_ACL1, KC_ACL0, KC_SPC, KC_P4, KC_P5, KC_P6, KC_WH_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_R, ________ },
  140. { ________, ___xx___, KC_MPRV, KC_MPLY, KC_MNXT, KC_TAB, KC_P1, KC_P2, KC_P3, KC_PENT, KC_BTN1, KC_BTN2, KC_BTN3, UC(L'—'), ________ },
  141. { MO(_FN2), ________, ________, ________, ________, KC_PENT, KC_P0, DE_DOT, KC_PDOT, KC_BTN1, KC_BTN2, KC_BTN3, ________, ________, ________ },
  142. },
  143. /* FN3
  144. * .--------------------------------------------------------------------------------------------------------------------------------------.
  145. * | F13 | F14 | F15 | F16 | F17 | F18 | U LNX | U WIN | U MAC | F19 | F20 | F21 | F22 | F23 | F24 |
  146. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  147. * | | QWERTZ | QWERTY | | NKRO | ThinSp | L TOG | L MP | L MOD | | Pg Up | Up | Pg Dn | | |
  148. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  149. * | | NaNbSp | | › | ‹ | GAMING | L HUI | L SAI | L VAI | Home | Left | Down | Right | End | |
  150. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  151. * | | | | » | « | | L HUD | L SAD | L VAD | FigSp | | | | NbHyph | |
  152. * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
  153. * | | | | | | | | Reset | | NbSp | | | | | |
  154. * '--------------------------------------------------------------------------------------------------------------------------------------'
  155. */
  156. [_FN3] = {
  157. { KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, UNI_LNX, UNI_WIN, UNI_MAC, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 },
  158. { ________, QWERTZ, QWERTY, ___xx___, NKRO_TG, UC(L' '), RGB_TOG, RGB_M_P, RGB_MOD, ___xx___, KC_PGUP, KC_UP, KC_PGDN, ___xx___, ___xx___ },
  159. { ________, UC(L' '), ___xx___, UC(L'›'), UC(L'‹'), GAMING, RGB_HUI, RGB_SAI, RGB_VAI, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, ________ },
  160. { ________, ___xx___, ___xx___, UC(L'»'), UC(L'«'), ___xx___, RGB_HUD, RGB_SAD, RGB_VAD, UC(L' '), ___xx___, ___xx___, ___xx___, UC(L'‑'), ________ },
  161. { ___xx___, ________, ________, ________, ________, ________, ________, RESET, ________, UC(L' '), ________, ________, ________, ________, ________ },
  162. },
  163. };
  164. void matrix_init_user(){
  165. set_unicode_input_mode(UC_LNX);
  166. }
  167. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  168. switch(keycode) {
  169. case QWERTZ:
  170. if (record->event.pressed) {
  171. set_single_persistent_default_layer(_QWZ);
  172. }
  173. return false;
  174. break;
  175. case QWERTY:
  176. if (record->event.pressed) {
  177. set_single_persistent_default_layer(_QWY);
  178. }
  179. return false;
  180. break;
  181. case GAMING:
  182. if (record->event.pressed) {
  183. set_single_persistent_default_layer(_GAM);
  184. }
  185. return false;
  186. break;
  187. case UNI_LNX:
  188. set_unicode_input_mode(UC_LNX);
  189. return false;
  190. break;
  191. case UNI_WIN:
  192. set_unicode_input_mode(UC_WINC);
  193. return false;
  194. break;
  195. case UNI_MAC:
  196. set_unicode_input_mode(UC_OSX);
  197. return false;
  198. break;
  199. }
  200. return true;
  201. }