Add combo hook to allow per layer combo reference layers. (#16699)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
This commit is contained in:
parent
bbf7a20b33
commit
db1eeea478
3 changed files with 104 additions and 8 deletions
|
@ -1,4 +1,10 @@
|
|||
// Keymap helpers
|
||||
// define reference layers per layer.
|
||||
#define REF_LAYER_FOR_LAYER(LAYER, REF_LAYER) \
|
||||
case LAYER: return REF_LAYER;
|
||||
|
||||
#define DEF_REF_LAYER(LAYER) \
|
||||
default: return LAYER;
|
||||
|
||||
#define K_ENUM(name, key, ...) name,
|
||||
#define K_DATA(name, key, ...) const uint16_t PROGMEM cmb_##name[] = {__VA_ARGS__, COMBO_END};
|
||||
|
@ -7,17 +13,22 @@
|
|||
#define A_ENUM(name, string, ...) name,
|
||||
#define A_DATA(name, string, ...) const uint16_t PROGMEM cmb_##name[] = {__VA_ARGS__, COMBO_END};
|
||||
#define A_COMB(name, string, ...) [name] = COMBO_ACTION(cmb_##name),
|
||||
#define A_ACTI(name, string, ...) \
|
||||
case name: \
|
||||
if (pressed) SEND_STRING(string); \
|
||||
#define A_ACTI(name, string, ...) \
|
||||
case name: \
|
||||
if (pressed) SEND_STRING(string); \
|
||||
break;
|
||||
|
||||
#define A_TOGG(name, layer, ...) \
|
||||
case name: \
|
||||
if (pressed) layer_invert(layer); \
|
||||
#define A_TOGG(name, layer, ...) \
|
||||
case name: \
|
||||
if (pressed) layer_invert(layer); \
|
||||
break;
|
||||
|
||||
#define BLANK(...)
|
||||
#undef COMBO_REF_LAYER
|
||||
#undef DEFAULT_REF_LAYER
|
||||
#define COMBO_REF_LAYER BLANK
|
||||
#define DEFAULT_REF_LAYER BLANK
|
||||
|
||||
// Generate data needed for combos/actions
|
||||
// Create Enum
|
||||
#undef COMB
|
||||
|
@ -66,10 +77,33 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
|
|||
}
|
||||
|
||||
// Allow user overrides per keymap
|
||||
#if __has_include("inject.h")
|
||||
#if __has_include("inject.h")
|
||||
# include "inject.h"
|
||||
#endif
|
||||
}
|
||||
#undef COMB
|
||||
#undef SUBS
|
||||
#undef TOGG
|
||||
|
||||
// Allow reference layers per layer.
|
||||
#define COMB BLANK
|
||||
#define SUBS BLANK
|
||||
#define TOGG BLANK
|
||||
|
||||
#undef DEFAULT_REF_LAYER
|
||||
#undef COMBO_REF_LAYER
|
||||
#define COMBO_REF_LAYER REF_LAYER_FOR_LAYER
|
||||
#define DEFAULT_REF_LAYER DEF_REF_LAYER
|
||||
|
||||
uint8_t combo_ref_from_layer(uint8_t current_layer){
|
||||
switch (current_layer){
|
||||
#include "combos.def"
|
||||
}
|
||||
return current_layer;
|
||||
}
|
||||
|
||||
#undef COMB
|
||||
#undef SUBS
|
||||
#undef TOGG
|
||||
#undef COMBO_REF_LAYER
|
||||
#undef DEFAULT_REF_LAYER
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue