]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/xd75/keymaps/markus/keymap.c
e61fb09b1b967a86c4622eafea0b31ebfa3e8051
[qmk_firmware.git] / keyboards / xd75 / keymaps / markus / keymap.c
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
17 #include "xd75.h"
18 #include "keymap_german.h"
19
20 #define ________ KC_TRNS
21 #define ___xx___ KC_NO
22 #define NKRO_TG MAGIC_TOGGLE_NKRO
23
24 enum my_layers {
25   _QWZ,
26   _QWY,
27   _GAM,
28   _FN1,
29   _FN2,
30   _FN3,
31 };
32
33 enum my_keycodes {
34   QWERTZ = SAFE_RANGE,
35   QWERTY,
36   GAMING,
37   FN1,
38   FN2,
39   FN3
40 };
41
42 enum my_ucis {
43   UNI_LNX,
44   UNI_MAC,
45   UNI_WIN,
46 };
47
48 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
49
50 /* QWERTZ
51  * .--------------------------------------------------------------------------------------------------------------------------------------.
52  * | 1 !    | 2 "    | 3 §    | 4 $    | 5 %    | 6 &    | Mute   | Vol-   | Vol+   | 7 /    | 8 (    | 9 )    | 0 =    | ẞ ?    | Ü      |
53  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
54  * | Esc    | Q      | W      | E      | R      | T      | Home   | Play   | End    | Z      | U      | I      | O      | P      | Ä      |
55  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
56  * | LShift | A      | S      | D      | F      | G      | Pg Up  | Up     | Pg Dn  | H      | J      | K      | L      | Ö      | RShift |
57  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
58  * | LCtrl  | Y      | X      | C      | V      | B      | Left   | Down   | Right  | N      | M      | , ;    | . :    | - _    | RCtrl  |
59  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
60  * | Caps   | Fn3    | LGUI   | LAlt   | Fn2    | Fn1    | Tab    | Del    | Enter  | Space  | Bksp   | LAlt   | LGUI   | Fn3    | Ins    |
61  * '--------------------------------------------------------------------------------------------------------------------------------------'
62  */
63 [_QWZ] = {
64 { 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    },
65 { 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    },
66 { 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  },
67 { 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  },
68 { 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   },
69 },
70
71 /* QWERTY
72  * .--------------------------------------------------------------------------------------------------------------------------------------.
73  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
74  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
75  * |        |        |        |        |        |        |        |        |        | Y      |        |        |        |        |        |
76  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
77  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
78  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
79  * |        | Z      |        |        |        |        |        |        |        |        |        |        |        |        |        |
80  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
81  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
82  * '--------------------------------------------------------------------------------------------------------------------------------------'
83  */
84 [_QWY] = {
85 { 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    },
86 { 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    },
87 { 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  },
88 { 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  },
89 { 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   },
90 },
91
92 /* GAMING
93  * .--------------------------------------------------------------------------------------------------------------------------------------.
94  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
95  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
96  * |        |        |        |        |        |        |        |        |        | Y      |        |        |        |        |        |
97  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
98  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
99  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
100  * |        | Z      |        |        |        |        |        |        |        |        |        |        |        |        |        |
101  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
102  * | Fn2    |        |        |        | Space  |        |        |        |        |        |        |        |        |        |        |
103  * '--------------------------------------------------------------------------------------------------------------------------------------'
104  */
105 [_GAM] = {
106 { 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    },
107 { 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    },
108 { 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  },
109 { 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  },
110 { 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   },
111 },
112
113 /* FN1
114  * .--------------------------------------------------------------------------------------------------------------------------------------.
115  * | F1     | F2     | F3     | F4     | F5     | F6     | Prev   | Play   | Next   | F7     | F8     | F9     | F10    | F11    | F12    |
116  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
117  * |        | @      | ~      | €      | ´      | `      |        |        |        | \      | {      | }      | +      | *      |        |
118  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
119  * |        | "      | '      | ‚      | ‘      | ’      |        |        |        | |      | [      | ]      | !      | ?      |        |
120  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
121  * |        | °      | ^      | „      | “      | ”      |        |        |        | #      | <      | >      | …      | –      |        |
122  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
123  * |        |        |        |        |        |        |        |        |        |        |        |        |        |        |        |
124  * '--------------------------------------------------------------------------------------------------------------------------------------'
125  */
126 [_FN1] = {
127 { 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   },
128 { ________, DE_AT,    DE_TILD,  DE_EURO,  DE_ACUT,  DE_GRV,   ________, ___xx___, ________, DE_BSLS,  DE_LCBR,  DE_RCBR,  DE_PLUS,  DE_ASTR,  ___xx___ },
129 { ________, DE_DQOT,  DE_QUOT,  UC(L'‚'), UC(L'‘'), UC(L'’'), ________, ________, ________, DE_PIPE,  DE_LBRC,  DE_RBRC,  DE_EXLM,  DE_QST,   ________ },
130 { ________, DE_RING,  DE_CIRC,  UC(L'„'), UC(L'“'), UC(L'”'), ________, ________, ________, DE_HASH,  DE_LESS,  DE_MORE,  UC(L'…'), UC(L'–'), ________ },
131 { ___xx___, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________ },
132 },
133
134 /* FN2
135  * .--------------------------------------------------------------------------------------------------------------------------------------.
136  * |        |        |        |        | %      | (      | )      | P/     | P*     | P-     | Print  | Scroll | Pause  | ẞ      |        |
137  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
138  * |        |        | Mute   | Vol-   | Vol+   | Bspc   | P7     | P8     | P9     | P+     | WH_U   | MS_U   | WH_D   | ×      | ÷      |
139  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
140  * |        | App    | ACL0   | ACL1   | ACL2   | Space  | P4     | P5     | P6     | WH_L   | MS_L   | MS_D   | MS_R   | WH_R   |        |
141  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
142  * |        |        | Prev   | Play   | Next   | Tab    | P1     | P2     | P3     | PEnter | BTN1   | BTN2   | BTN3   | —      |        |
143  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
144  * | Fn2    |        |        |        |        | PEnter | P0     | . :    | P,     | BTN1   | BTN2   | BTN3   |        |        |        |
145  * '--------------------------------------------------------------------------------------------------------------------------------------'
146  */
147 [_FN2] = {
148 { ___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___ },
149 { ________, ___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'÷') },
150 { ________, 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,  ________ },
151 { ________, ___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'—'), ________ },
152 { MO(_FN2), ________, ________, ________, ________, KC_PENT,  KC_P0,    DE_DOT,   KC_PDOT,  KC_BTN1,  KC_BTN2,  KC_BTN3,  ________, ________, ________ },
153 },
154
155 /* FN3
156  * .--------------------------------------------------------------------------------------------------------------------------------------.
157  * | F13    | F14    | F15    | F16    | F17    | F18    | U LNX  | U WIN  | U MAC  | F19    | F20    | F21    | F22    | F23    | F24    |
158  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
159  * |        | QWERTZ | QWERTY |        | NKRO   | ThinSp | L TOG  | L MP   | L MOD  |        | Pg Up  | Up     | Pg Dn  |        |        |
160  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
161  * |        | NaNbSp |        | ›      | ‹      | GAMING | L HUI  | L SAI  | L VAI  | Home   | Left   | Down   | Right  | End    |        |
162  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
163  * |        |        |        | »      | «      |        | L HUD  | L SAD  | L VAD  | FigSp  |        |        |        | NbHyph |        |
164  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
165  * |        |        |        |        |        |        |        | Reset  |        | NbSp   |        |        |        |        |        |
166  * '--------------------------------------------------------------------------------------------------------------------------------------'
167  */
168 [_FN3] = {
169 { 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   },
170 { ________, QWERTZ,   QWERTY,   ___xx___, NKRO_TG,  UC(L' '), RGB_TOG,  RGB_M_P,  RGB_MOD,  ___xx___, KC_PGUP,  KC_UP,    KC_PGDN,  ___xx___, ___xx___ },
171 { ________, UC(L' '), ___xx___, UC(L'›'), UC(L'‹'), GAMING,   RGB_HUI,  RGB_SAI,  RGB_VAI,  KC_HOME,  KC_LEFT,  KC_DOWN,  KC_RIGHT, KC_END,   ________ },
172 { ________, ___xx___, ___xx___, UC(L'»'), UC(L'«'), ___xx___, RGB_HUD,  RGB_SAD,  RGB_VAD,  UC(L' '), ___xx___, ___xx___, ___xx___, UC(L'‑'), ________ },
173 { ___xx___, ________, ________, ________, ________, ________, ________, RESET,    ________, UC(L' '), ________, ________, ________, ________, ________ },
174 },
175
176 };
177
178 void matrix_init_user(){
179   set_unicode_input_mode(UC_LNX);
180 }
181
182 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
183   switch(keycode) {
184     case QWERTZ:
185       if (record->event.pressed) {
186         set_single_persistent_default_layer(_QWZ);
187       }
188       return false;
189       break;
190     case QWERTY:
191       if (record->event.pressed) {
192         set_single_persistent_default_layer(_QWY);
193       }
194       return false;
195       break;
196     case GAMING:
197       if (record->event.pressed) {
198         set_single_persistent_default_layer(_GAM);
199       }
200       return false;
201       break;
202     case UNI_LNX:
203       set_unicode_input_mode(UC_LNX);
204       return false;
205       break;
206     case UNI_WIN:
207       set_unicode_input_mode(UC_WINC);
208       return false;
209       break;
210     case UNI_MAC:
211       set_unicode_input_mode(UC_OSX);
212       return false;
213       break;
214   }
215   return true;
216 }