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
22 CU_QUOT, // ' | Enable deadkey layer
35 CU_Z, // Z | Y in conjunction with ctrl
36 CU_Y, // Y | Z in conjunction wiht ctrl
37 CU_ESCT, // Toggle escape of grv and circ on/off
44 CU_ED, // Escape deadkey layer
47 #ifdef RGBLIGHT_ENABLE
48 CU_RGBV, // Cycle through RGB brightness
51 NEW_SAFE_RANGE // Use for keymap specific keycodes
55 // these save the current shift status
58 // stuff for custom space cadet shift
61 extern uint16_t lshift_timer;
62 extern uint16_t rshift_timer;
64 extern uint8_t prev_indx;
65 extern uint16_t prev_kcs[6];
67 void add_to_prev(uint16_t kc);
68 void unreg_prev(void);
75 extern uint16_t navesc_timer;
79 void timer_timeout(void);
81 bool process_record_userspace(uint16_t keycode, keyrecord_t *record);
83 #define CTRLX LCTL(KC_X)
84 #define CTRLC LCTL(KC_C)
85 #define CTRLV LCTL(KC_V)
87 #define GUIU LGUI(KC_UP)
88 #define GUID LGUI(KC_DOWN)
89 #define GUIL LGUI(KC_LEFT)
90 #define GUIR RGUI(KC_RIGHT)
93 // Templates for Keys, with custom shifted and non shifted Characters
96 // Normal shift status
97 #define SHIFT_NORM(kc1, kc2) \
98 if (record->event.pressed) { \
100 if (lshift || rshift) { \
101 register_code(KC_LSFT); \
102 unregister_code(kc2); \
103 register_code(kc2); \
106 unregister_code(KC_LSFT); \
107 unregister_code(kc1); \
108 register_code(kc1); \
111 unregister_code(kc1); \
112 unregister_code(kc2); \
116 // Inverted shift status
117 #define SHIFT_SWITCH(kc1, kc2) \
118 if (record->event.pressed) { \
120 if (lshift || rshift) { \
121 unregister_code(KC_LSFT); \
122 unregister_code(kc2); \
123 register_code(kc2); \
126 register_code(KC_LSFT); \
127 unregister_code(kc1); \
128 register_code(kc1); \
132 unregister_code(kc1); \
133 unregister_code(kc2); \
135 if (lshift || rshift) \
136 register_code(KC_LSFT); \
138 unregister_code(KC_LSFT); \
143 #define SHIFT_ALL(kc1, kc2) \
144 if (record->event.pressed) { \
146 register_code(KC_LSFT); \
147 if (lshift || rshift) { \
148 unregister_code(kc2); \
149 register_code(kc2); \
152 unregister_code(kc1); \
153 register_code(kc1); \
157 unregister_code(kc1); \
158 unregister_code(kc2); \
160 if (lshift || rshift) \
161 register_code(KC_LSFT); \
163 unregister_code(KC_LSFT); \
168 #define SHIFT_NO(kc1, kc2) \
169 if (record->event.pressed) { \
171 unregister_code(KC_LSFT); \
172 if (lshift || rshift) { \
173 unregister_code(kc2); \
174 register_code(kc2); \
177 unregister_code(kc1); \
178 register_code(kc1); \
181 unregister_code(kc1); \
182 unregister_code(kc2); \
184 if (lshift || rshift) \
185 register_code(KC_LSFT); \
187 unregister_code(KC_LSFT); \
192 #define SHIFT_ALGR(kc1, kc2) \
193 if (record->event.pressed) { \
195 unregister_code(KC_LSFT); \
196 register_code(DE_ALGR); \
197 if (lshift || rshift) { \
198 unregister_code(kc2); \
199 register_code(kc2); \
200 unregister_code(kc2); \
201 register_code(KC_LSFT); \
203 unregister_code(kc1); \
204 register_code(kc1); \
205 unregister_code(kc1); \
207 unregister_code(DE_ALGR); \
211 // Different keycode for ctrl
212 #define CTRL(kc1, kc2) \
213 if(record->event.pressed) { \
215 if (lshift || rshift) \
216 register_code(KC_LSFT); \
218 unregister_code(KC_LSFT); \
219 if (keyboard_report->mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL))){ \
220 register_code(kc2); \
222 register_code(kc1); \
225 unregister_code(kc1); \
226 unregister_code(kc2); \
230 // Umlaute for deadkey layer
232 if(record->event.pressed) { \
234 if (lshift || rshift) \
235 register_code(KC_LSFT); \
237 unregister_code(KC_LSFT); \
239 unregister_code(kc); \
240 layer_off(_DEADKEY); \