commit cf341732455fdcbfe03aa2171239d32af135b7e3 from: witcher via: Thomas Böhler date: Sun Feb 11 13:19:27 2024 UTC add key overrides add key overrides for german layout to behave exactly like the english one, avoiding confusing when having to use one or the other. commit - c1b85aae162656b0097d85e2918c880048fe186e commit + cf341732455fdcbfe03aa2171239d32af135b7e3 blob - 6c36549749f4c2b5c9197d1ca3af138fb46c1854 blob + 35eedf6afb5dca993c469b31a2822ff83db46988 --- keyboards/crkbd/keymaps/witcher/keymap.c +++ keyboards/crkbd/keymaps/witcher/keymap.c @@ -112,6 +112,61 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_C ), }; +#ifdef KEY_OVERRIDE_ENABLE +// layers 5, 4 and 3 are layers for a german keyboard layout +#define GERMAN_LAYERS_BITMAP (1 << 5) | (1 << 4) | (1 << 3) +// override german keys to act like english layout when shift keys are pressed +const key_override_t colon_key_override = { + .trigger = DE_SCLN, + .trigger_mods = MOD_MASK_SHIFT, + .replacement = DE_COLN, + .layers = GERMAN_LAYERS_BITMAP, + .options = ko_options_default, +}; +const key_override_t comma_key_override = { + .trigger = DE_COMM, + .trigger_mods = MOD_MASK_SHIFT, + .replacement = DE_LABK, + .layers = GERMAN_LAYERS_BITMAP, + .options = ko_options_default, + .suppressed_mods = MOD_MASK_SHIFT, +}; +const key_override_t period_key_override = { + .trigger = DE_DOT, + .trigger_mods = MOD_MASK_SHIFT, + .replacement = DE_RABK, + .layers = GERMAN_LAYERS_BITMAP, + .options = ko_options_default, +}; +const key_override_t apostrophe_key_override = { + .trigger = DE_QUOT, + .trigger_mods = MOD_MASK_SHIFT, + .replacement = DE_DQUO, + .layers = GERMAN_LAYERS_BITMAP, + .options = ko_options_default, +}; +const key_override_t slash_key_override = { + .trigger = DE_SLSH, + .trigger_mods = MOD_MASK_SHIFT, + .replacement = DE_QUES, + .layers = GERMAN_LAYERS_BITMAP, + .options = ko_options_default, +}; + +// universal overrides +const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL); + +const key_override_t ** key_overrides = (const key_override_t *[]) { + &colon_key_override, + &comma_key_override, + &period_key_override, + &apostrophe_key_override, + &slash_key_override, + &delete_key_override, + NULL +}; +#endif // KEY_OVERRIDE_ENABLE + #ifdef OLED_ENABLE # include blob - b7c57d87b9eda065de63493729d1bd2dbba01edb blob + e7a4764e5c7f4646f0e7f285a6dc725e561e4fc2 --- keyboards/crkbd/keymaps/witcher/rules.mk +++ keyboards/crkbd/keymaps/witcher/rules.mk @@ -1,3 +1,4 @@ OLED_ENABLE = yes OLED_DRIVER = SSD1306 LTO_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes