1
0
Fork 0

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:
Eric.a Gebhart 2023-02-12 11:31:04 -05:00 committed by GitHub
parent bbf7a20b33
commit db1eeea478
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 104 additions and 8 deletions

View file

@ -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