4 #include "keymap_german.h"
6 enum userspace_layers {
7 _DEADKEY = 14, // Change if more than 16 layers are required
11 enum userspace_custom_keycodes {
12 CU_GAME = SAFE_RANGE, // Toggle game mode on/off
14 KC_P00, // Numpad double zero
23 CU_QUOT, // ' | Enable deadkey layer
36 CU_Z, // Z | Y in conjunction with ctrl
37 CU_Y, // Y | Z in conjunction wiht ctrl
38 CU_ESCT, // Toggle escape of grv and circ on/off
45 CU_ED, // Escape deadkey layer
48 #ifdef RGBLIGHT_ENABLE
49 CU_RGBV, // Cycle through RGB brightness
52 NEW_SAFE_RANGE // Use for keymap specific keycodes
60 extern uint16_t lshift_timer;
61 extern uint16_t rshift_timer;
63 extern uint8_t prev_indx;
64 extern uint16_t prev_kcs[6];
65 void add_to_prev(uint16_t kc);
66 void unreg_prev(void);
72 extern uint16_t navesc_timer;
76 void timer_timeout(void);
78 bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
80 #define CTRLX LCTL(KC_X)
81 #define CTRLC LCTL(KC_C)
82 #define CTRLV LCTL(KC_V)
84 #define ALTF4 LALT(KC_F4)
86 #define GUIU LGUI(KC_UP)
87 #define GUID LGUI(KC_DOWN)
88 #define GUIL LGUI(KC_LEFT)
89 #define GUIR RGUI(KC_RIGHT)
91 #define CTLENT CTL_T(KC_ENT)
94 Templates for Keys, with custom shifted and non shifted Characters
97 // Normal shift status
98 #define SHIFT_NORM(kc1, kc2) \
99 if (record->event.pressed) { \
101 if (lshift || rshift) { \
102 register_code(KC_LSFT); \
103 unregister_code(kc2); \
104 register_code(kc2); \
107 unregister_code(KC_LSFT); \
108 unregister_code(kc1); \
109 register_code(kc1); \
112 unregister_code(kc1); \
113 unregister_code(kc2); \
117 // Inverted shift status
118 #define SHIFT_SWITCH(kc1, kc2) \
119 if (record->event.pressed) { \
121 if (lshift || rshift) { \
122 unregister_code(KC_LSFT); \
123 unregister_code(kc2); \
124 register_code(kc2); \
127 register_code(KC_LSFT); \
128 unregister_code(kc1); \
129 register_code(kc1); \
133 unregister_code(kc1); \
134 unregister_code(kc2); \
136 if (lshift || rshift) \
137 register_code(KC_LSFT); \
139 unregister_code(KC_LSFT); \
144 #define SHIFT_ALL(kc1, kc2) \
145 if (record->event.pressed) { \
147 register_code(KC_LSFT); \
148 if (lshift || rshift) { \
149 unregister_code(kc2); \
150 register_code(kc2); \
153 unregister_code(kc1); \
154 register_code(kc1); \
158 unregister_code(kc1); \
159 unregister_code(kc2); \
161 if (lshift || rshift) \
162 register_code(KC_LSFT); \
164 unregister_code(KC_LSFT); \
169 #define SHIFT_NO(kc1, kc2) \
170 if (record->event.pressed) { \
172 unregister_code(KC_LSFT); \
173 if (lshift || rshift) { \
174 unregister_code(kc2); \
175 register_code(kc2); \
178 unregister_code(kc1); \
179 register_code(kc1); \
182 unregister_code(kc1); \
183 unregister_code(kc2); \
185 if (lshift || rshift) \
186 register_code(KC_LSFT); \
188 unregister_code(KC_LSFT); \
193 #define SHIFT_ALGR(kc1, kc2) \
194 if (record->event.pressed) { \
196 unregister_code(KC_LSFT); \
197 register_code(KC_ALGR); \
198 if (lshift || rshift) { \
199 unregister_code(kc2); \
200 register_code(kc2); \
201 unregister_code(kc2); \
202 register_code(KC_LSFT); \
204 unregister_code(kc1); \
205 register_code(kc1); \
206 unregister_code(kc1); \
208 unregister_code(KC_ALGR); \
212 // Different keycode when Ctrl is pressed
213 #define CTRL(kc1, kc2) \
214 if(record->event.pressed) { \
216 if (lshift || rshift) \
217 register_code(KC_LSFT); \
219 unregister_code(KC_LSFT); \
220 if (keyboard_report->mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL))){ \
221 register_code(kc2); \
223 register_code(kc1); \
226 unregister_code(kc1); \
227 unregister_code(kc2); \
231 // Template for keys on deadkey layer (mostly Umlaute)
233 if(record->event.pressed) { \
235 if (lshift || rshift) \
236 register_code(KC_LSFT); \
238 unregister_code(KC_LSFT); \
240 unregister_code(kc); \
241 layer_off(_DEADKEY); \