123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- #pragma once
- #include <stdbool.h>
- #include <stddef.h>
- #include <stdint.h>
- #include "action_layer.h"
- typedef enum {
-
- ko_option_activation_trigger_down = (1 << 0),
-
- ko_option_activation_required_mod_down = (1 << 1),
-
- ko_option_activation_negative_mod_up = (1 << 2),
- ko_options_all_activations = ko_option_activation_negative_mod_up | ko_option_activation_required_mod_down | ko_option_activation_trigger_down,
-
- ko_option_one_mod = (1 << 3),
-
- ko_option_no_reregister_trigger = (1 << 4),
-
- ko_option_no_unregister_on_other_key_down = (1 << 5),
-
- ko_options_default = ko_options_all_activations,
- } ko_option_t;
- typedef struct {
-
- uint16_t trigger;
-
- uint8_t trigger_mods;
-
- layer_state_t layers;
-
- uint8_t negative_mod_mask;
-
- uint8_t suppressed_mods;
-
- uint16_t replacement;
-
- ko_option_t options;
-
- bool (*custom_action)(bool activated, void *context);
-
- void *context;
-
- bool *enabled;
- } key_override_t;
- extern const key_override_t **key_overrides;
- void key_override_on(void);
- void key_override_off(void);
- void key_override_toggle(void);
- bool key_override_is_enabled(void);
- bool process_key_override(const uint16_t keycode, const keyrecord_t *const record);
- void key_override_task(void);
- #define ko_make_basic(trigger_mods, trigger_key, replacement_key) \
- ko_make_with_layers(trigger_mods, trigger_key, replacement_key, ~0)
- #define ko_make_with_layers(trigger_mods, trigger_key, replacement_key, layers) \
- ko_make_with_layers_and_negmods(trigger_mods, trigger_key, replacement_key, layers, 0)
- #define ko_make_with_layers_and_negmods(trigger_mods, trigger_key, replacement_key, layers, negative_mask) \
- ko_make_with_layers_negmods_and_options(trigger_mods, trigger_key, replacement_key, layers, negative_mask, ko_options_default)
-
- #define ko_make_with_layers_negmods_and_options(trigger_mods_, trigger_key, replacement_key, layer_mask, negative_mask, options_) \
- ((const key_override_t){ \
- .trigger_mods = (trigger_mods_), \
- .layers = (layer_mask), \
- .suppressed_mods = (trigger_mods_), \
- .options = (options_), \
- .negative_mod_mask = (negative_mask), \
- .custom_action = NULL, \
- .context = NULL, \
- .trigger = (trigger_key), \
- .replacement = (replacement_key), \
- .enabled = NULL \
- })
|