diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/action.c | 172 | ||||
| -rw-r--r-- | common/action.h | 148 | ||||
| -rw-r--r-- | common/command.c | 1 | ||||
| -rw-r--r-- | common/layer_switch.c | 90 | ||||
| -rw-r--r-- | common/layer_switch.h | 42 | 
5 files changed, 86 insertions, 367 deletions
diff --git a/common/action.c b/common/action.c index 07a3a64d6..ef04851b1 100644 --- a/common/action.c +++ b/common/action.c @@ -56,7 +56,6 @@ void process_action(keyrecord_t *record)      action_t action = layer_switch_get_action(event.key);      debug("ACTION: "); debug_action(action); -    debug(" overlays: "); overlay_debug();      debug(" keymaps: "); keymap_debug();      debug(" default_layer: "); debug_dec(default_layer); debug("\n"); @@ -199,31 +198,28 @@ void process_action(keyrecord_t *record)              }              break;  #endif -#ifndef NO_ACTION_KEYMAP -        case ACT_KEYMAP: +#ifndef NO_ACTION_LAYER +        case ACT_LAYER: +        case ACT_LAYER1:              switch (action.layer.code) {                  /* Keymap clear */                  case OP_RESET:                      switch (action.layer.val & 0x03) {                          case 0:                              // NOTE: reserved -                            overlay_clear();                              keymap_clear();                              break;                          case ON_PRESS:                              if (event.pressed) { -                                overlay_clear();                                  keymap_clear();                              }                              break;                          case ON_RELEASE:                              if (!event.pressed) { -                                overlay_clear();                                  keymap_clear();                              }                              break;                          case ON_BOTH: -                            overlay_clear();                              keymap_clear();                              break;                          /* NOTE: 4-7 rserved */ @@ -362,161 +358,6 @@ void process_action(keyrecord_t *record)              }              break;  #endif -#ifndef NO_ACTION_OVERLAY -        case ACT_OVERLAY: -            switch (action.layer.code) { -                // Overlay Invert bit4 -                case OP_INV4 | 0: -                    if (action.layer.val == 0) { -                        // NOTE: reserved for future use -                        overlay_clear(); -                    } else { -                        overlay_set(overlay_stat ^ action.layer.val); -                    } -                    break; -                case OP_INV4 | 1: -                    if (action.layer.val == 0) { -                        // on pressed -                        if (event.pressed) overlay_clear(); -                    } else { -                        overlay_set(overlay_stat ^ action.layer.val<<4); -                    } -                    break; -                case OP_INV4 | 2: -                    if (action.layer.val == 0) { -                        // on released -                        if (!event.pressed) overlay_clear(); -                    } else { -                        overlay_set(overlay_stat ^ action.layer.val<<8); -                    } -                    break; -                case OP_INV4 | 3: -                    if (action.layer.val == 0) { -                        // on both -                        overlay_clear(); -                    } else { -                        overlay_set(overlay_stat ^ action.layer.val<<12); -                    } -                    break; - -                /* Overlay Bit invert */ -                case OP_INV: -                    /* with tap toggle */ -                    if (event.pressed) { -                        if (tap_count < TAPPING_TOGGLE) { -                            debug("OVERLAY_INV: tap toggle(press).\n"); -                            overlay_invert(action.layer.val); -                        } -                    } else { -                        if (tap_count <= TAPPING_TOGGLE) { -                            debug("OVERLAY_INV: tap toggle(release).\n"); -                            overlay_invert(action.layer.val); -                        } -                    } -                    break; -                case (OP_INV | ON_PRESS): -                    if (event.pressed) { -                        overlay_invert(action.layer.val); -                    } -                    break; -                case (OP_INV | ON_RELEASE): -                    if (!event.pressed) { -                        overlay_invert(action.layer.val); -                    } -                    break; -                case (OP_INV | ON_BOTH): -                    overlay_invert(action.layer.val); -                    break; - -                /* Overlay Bit on */ -                case OP_ON: -                    if (event.pressed) { -                        overlay_on(action.layer.val); -                    } else { -                        overlay_off(action.layer.val); -                    } -                    break; -                case (OP_ON | ON_PRESS): -                    if (event.pressed) { -                        overlay_on(action.layer.val); -                    } -                    break; -                case (OP_ON | ON_RELEASE): -                    if (!event.pressed) { -                        overlay_on(action.layer.val); -                    } -                    break; -                case (OP_ON | ON_BOTH): -                    overlay_on(action.layer.val); -                    break; - -                /* Overlay Bit off */ -                case OP_OFF: -                    if (event.pressed) { -                        overlay_off(action.layer.val); -                    } else { -                        overlay_on(action.layer.val); -                    } -                    break; -                case (OP_OFF | ON_PRESS): -                    if (event.pressed) { -                        overlay_off(action.layer.val); -                    } -                    break; -                case (OP_OFF | ON_RELEASE): -                    if (!event.pressed) { -                        overlay_off(action.layer.val); -                    } -                    break; -                case (OP_OFF | ON_BOTH): -                    overlay_off(action.layer.val); -                    break; - -                /* Overlay Bit set */ -                case OP_SET: -                    if (event.pressed) { -                        overlay_move(action.layer.val); -                    } else { -                        overlay_clear(); -                    } -                    break; -                case (OP_SET | ON_PRESS): -                    if (event.pressed) { -                        overlay_move(action.layer.val); -                    } -                    break; -                case (OP_SET | ON_RELEASE): -                    if (!event.pressed) { -                        overlay_move(action.layer.val); -                    } -                    break; -                case (OP_SET | ON_BOTH): -                    overlay_move(action.layer.val); -                    break; - -                /* Overlay Bit invert with tap key */ -                default: -                    if (event.pressed) { -                        if (tap_count > 0) { -                            debug("OVERLAY_TAP_KEY: Tap: register_code\n"); -                            register_code(action.layer.code); -                        } else { -                            debug("OVERLAY_TAP_KEY: No tap: On on press\n"); -                            overlay_on(action.layer.val); -                        } -                    } else { -                        if (tap_count > 0) { -                            debug("OVERLAY_TAP_KEY: Tap: unregister_code\n"); -                            unregister_code(action.layer.code); -                        } else { -                            debug("OVERLAY_TAP_KEY: No tap: Off on release\n"); -                            overlay_off(action.layer.val); -                        } -                    } -                    break; -            } -            break; -#endif          /* Extentions */  #ifndef NO_ACTION_MACRO          case ACT_MACRO: @@ -668,8 +509,7 @@ bool is_tap_key(key_t key)          case ACT_LMODS_TAP:          case ACT_RMODS_TAP:              return true; -        case ACT_KEYMAP: -        case ACT_OVERLAY: +        case ACT_LAYER:              switch (action.layer.code) {                  case 0x04 ... 0xEF:    /* tap key */                  case OP_INV: @@ -714,8 +554,8 @@ void debug_action(action_t action)          case ACT_RMODS_TAP:         debug("ACT_RMODS_TAP");         break;          case ACT_USAGE:             debug("ACT_USAGE");             break;          case ACT_MOUSEKEY:          debug("ACT_MOUSEKEY");          break; -        case ACT_KEYMAP:            debug("ACT_KEYMAP");            break; -        case ACT_OVERLAY:           debug("ACT_OVERLAY");           break; +        case ACT_LAYER:             debug("ACT_LAYER");             break; +        case ACT_LAYER_BITOP:       debug("ACT_LAYER_BITOP");       break;          case ACT_MACRO:             debug("ACT_MACRO");             break;          case ACT_COMMAND:           debug("ACT_COMMAND");           break;          case ACT_FUNCTION:          debug("ACT_FUNCTION");          break; diff --git a/common/action.h b/common/action.h index a6cb45384..2c4f306a4 100644 --- a/common/action.h +++ b/common/action.h @@ -65,8 +65,8 @@ typedef union {      } key;      struct action_layer {          uint8_t  code   :8; -        uint8_t  val    :4; -        uint8_t  kind   :4; +        uint8_t  val    :5; +        uint8_t  kind   :3;      } layer;      struct action_usage {          uint16_t code   :10; @@ -170,35 +170,42 @@ void debug_action(action_t action);   *   * Layer Actions(10XX)   * ------------------- - * ACT_KEYMAP: - * 1000|--xx|0000 0000   Clear keyamp and overlay - * 1000|LLLL|0000 00xx   Reset default layer and clear keymap and overlay - * 1000|LLLL| keycode    Invert with tap key - * 1000|LLLL|1111 0000   Invert with tap toggle - * 1000|LLLL|1111 00xx   Invert[^=  1<<L] - * 1000|LLLL|1111 0100   On/Off - * 1000|LLLL|1111 01xx   On[|= 1<<L] - * 1000|LLLL|1111 1000   Off/On - * 1000|LLLL|1111 10xx   Off[&= ~(1<<L)] - * 1000|LLLL|1111 1100   Set/Clear - * 1000|LLLL|1111 11xx   Set[= 1<<L] - * default layer: 0-15(4bit) + * ACT_LAYER:  + * 1000|--xx|0000 0000   Clear keyamp + * 100X|LLLL|0000 00xx   Reset default layer and clear keymap + * 100X|LLLL| keycode    Invert with tap key + * 100X|LLLL|1111 0000   Invert with tap toggle + * 100X|LLLL|1111 00xx   Invert[^= 1<<L] + * 100X|LLLL|1111 0100   On/Off + * 100X|LLLL|1111 01xx   On[|= 1<<L] + * 100X|LLLL|1111 1000   Off/On + * 100X|LLLL|1111 10xx   Off[&= ~(1<<L)] + * 100X|LLLL|1111 1100   Set/Clear + * 100X|LLLL|1111 11xx   Set[= 1<<L] + * XLLLL: Layer 0-31   * xx: On {00:for special use, 01:press, 10:release, 11:both}   * - * ACT_OVERLAY: - * 1011|0000|0000 0000   Clear overlay - * 1011|LLLL|0000 00ss   Invert 4-bit chunk [^= L<<(4*ss)] - * 1011|LLLL| keycode    Invert with tap key - * 1011|LLLL|1111 0000   Invert with tap toggle - * 1011|LLLL|1111 00xx   Invert[^= 1<<L] - * 1011|LLLL|1111 0100   On/Off(momentary) - * 1011|LLLL|1111 01xx   On[|= 1<<L] - * 1011|LLLL|1111 1000   Off/On - * 1011|LLLL|1111 10xx   Off[&= ~(1<<L)] - * 1011|LLLL|1111 1100   Set/Clear - * 1011|LLLL|1111 11xx   Set[= 1<<L] - * overlays: 16-layer on/off status(16bit) - * xx: On {00:for special use, 01:press, 10:release, 11:both} + * ACT_LAYER_BITOP: + * 101B|Booo|xxxx xxxx   bit operation + * BB: operand. which part of layer state bits + *      00: 0-7th bit + *      01: 8-15th bit + *      10: 16-23th bit + *      11: 24-31th bit + * ooo: operation. + *      000: AND + *      001: OR + *      010: XOR + *      011:  + *      100: LSHIFT + *      101: RSHIFT + *      110:  + *      111:  + * bbbb bbbb: bits + * layer_state |= (((layer_state>>(0bBB*8)) & 0xff) BITOP 0bxxxxxxxx)<<(0bBB*8) + * layer_state: 32-bit layer switch state + * + *   *   *   * Extensions(11XX) @@ -216,16 +223,20 @@ void debug_action(action_t action);   *   */  enum action_kind_id { +    ACT_MODS            = 0b0000,      ACT_LMODS           = 0b0000,      ACT_RMODS           = 0b0001, +    ACT_MODS_TAP        = 0b0010,      ACT_LMODS_TAP       = 0b0010,      ACT_RMODS_TAP       = 0b0011,      ACT_USAGE           = 0b0100,      ACT_MOUSEKEY        = 0b0101, -    ACT_KEYMAP          = 0b1000, -    ACT_OVERLAY         = 0b1001, +    ACT_LAYER           = 0b1000, +    ACT_LAYER1          = 0b1001, +    ACT_LAYER_BITOP     = 0b1010, +    ACT_LAYER1_BITOP    = 0b1011,      ACT_MACRO           = 0b1100,      ACT_COMMAND         = 0b1110, @@ -285,12 +296,14 @@ enum usage_pages {   *      Set     layer = (1<<layer)   *      Clear   layer = 0   */ -enum layer_params { +enum layer_param_on {      ON_PRESS    = 1,      ON_RELEASE  = 2,      ON_BOTH     = 3, +}; -    OP_RESET  = 0x00, +enum layer_pram_op { +    OP_RESET = 0x00,      OP_INV4  = 0x00,      OP_INV   = 0xF0,      OP_ON    = 0xF4, @@ -298,56 +311,49 @@ enum layer_params {      OP_SET   = 0xFC,  }; +enum layer_pram_bitop { +    BITOP_AND, +    BITOP_OR, +    BITOP_XOR, +    BITOP_LSHIFT, +    BITOP_RSHIFT, +}; +  /*    * Default Layer   */ -#define ACTION_DEFAULT_LAYER                     ACTION(ACT_KEYMAP, ON_RELEASE<<8 | OP_RESET | 0) +#define ACTION_DEFAULT_LAYER                     ACTION(ACT_LAYER, ON_RELEASE<<8 | OP_RESET | 0)  #define ACTION_DEFAULT_LAYER_SET(layer)          ACTION_DEFAULT_LAYER_TO(layer, ON_RELEASE) -#define ACTION_DEFAULT_LAYER_TO(layer, on)       ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | (on)) +#define ACTION_DEFAULT_LAYER_TO(layer, on)       ACTION(ACT_LAYER, (layer)<<8 | OP_RESET | (on)) +  /*   * Keymap Layer   */ -#define ACTION_KEYMAP_MOMENTARY(layer)           ACTION_KEYMAP_ON_OFF(layer) -#define ACTION_KEYMAP_TOGGLE(layer)              ACTION_KEYMAP_INV(layer, ON_RELEASE) +#define ACTION_LAYER_MOMENTARY(layer)           ACTION_LAYER_ON_OFF(layer) +#define ACTION_LAYER_TOGGLE(layer)              ACTION_LAYER_INV(layer, ON_RELEASE)  /* Keymap Invert */ -#define ACTION_KEYMAP_INV(layer, on)             ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | (on)) -#define ACTION_KEYMAP_TAP_TOGGLE(layer)          ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0) +#define ACTION_LAYER_INV(layer, on)             ACTION(ACT_LAYER, (layer)<<8 | OP_INV | (on)) +#define ACTION_LAYER_TAP_TOGGLE(layer)          ACTION(ACT_LAYER, (layer)<<8 | OP_INV | 0)  /* Keymap On */ -#define ACTION_KEYMAP_ON(layer, on)              ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON  | (on)) -#define ACTION_KEYMAP_ON_OFF(layer)              ACTION(ACT_KEYMAP, (layer)<<8 | OP_ON  | 0) +#define ACTION_LAYER_ON(layer, on)              ACTION(ACT_LAYER, (layer)<<8 | OP_ON  | (on)) +#define ACTION_LAYER_ON_OFF(layer)              ACTION(ACT_LAYER, (layer)<<8 | OP_ON  | 0)  /* Keymap Off */ -#define ACTION_KEYMAP_OFF(layer, on)             ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | (on)) -#define ACTION_KEYMAP_OFF_ON(layer)              ACTION(ACT_KEYMAP, (layer)<<8 | OP_OFF | 0) +#define ACTION_LAYER_OFF(layer, on)             ACTION(ACT_LAYER, (layer)<<8 | OP_OFF | (on)) +#define ACTION_LAYER_OFF_ON(layer)              ACTION(ACT_LAYER, (layer)<<8 | OP_OFF | 0)  /* Keymap Set */ -#define ACTION_KEYMAP_SET(layer, on)             ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | (on)) -#define ACTION_KEYMAP_SET_CLEAR(layer)           ACTION(ACT_KEYMAP, (layer)<<8 | OP_SET | 0) +#define ACTION_LAYER_SET(layer, on)             ACTION(ACT_LAYER, (layer)<<8 | OP_SET | (on)) +#define ACTION_LAYER_SET_CLEAR(layer)           ACTION(ACT_LAYER, (layer)<<8 | OP_SET | 0)  /* Keymap Invert with tap key */ -#define ACTION_KEYMAP_TAP_KEY(layer, key)        ACTION(ACT_KEYMAP, (layer)<<8 | (key)) - -/* - * Overlay Layer - */ -#define ACTION_OVERLAY_MOMENTARY(layer)           ACTION_OVERLAY_ON_OFF(layer) -#define ACTION_OVERLAY_TOGGLE(layer)              ACTION_OVERLAY_INV(layer, ON_RELEASE) -/* Overlay Clear */ -#define ACTION_OVERLAY_CLEAR(on)                  ACTION(ACT_OVERLAY, 0<<8 | OP_INV4 | (on)) -/* Overlay Invert 4-bit chunk */ -#define ACTION_OVERLAY_INV4(bits, shift)          ACTION(ACT_OVERLAY, (bits)<<8 | OP_INV4 | shift) -/* Overlay Invert */ -#define ACTION_OVERLAY_INV(layer, on)             ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | (on)) -#define ACTION_OVERLAY_TAP_TOGGLE(layer)          ACTION(ACT_OVERLAY, (layer)<<8 | OP_INV | 0) -/* Overlay On */ -#define ACTION_OVERLAY_ON(layer, on)              ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON  | (on)) -#define ACTION_OVERLAY_ON_OFF(layer)              ACTION(ACT_OVERLAY, (layer)<<8 | OP_ON  | 0) -/* Overlay Off */ -#define ACTION_OVERLAY_OFF(layer, on)             ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | (on)) -#define ACTION_OVERLAY_OFF_ON(layer)              ACTION(ACT_OVERLAY, (layer)<<8 | OP_OFF | 0) -/* Overlay Set */ -#define ACTION_OVERLAY_SET(layer, on)             ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | (on)) -#define ACTION_OVERLAY_SET_CLEAR(layer)           ACTION(ACT_OVERLAY, (layer)<<8 | OP_SET | 0) -/* Overlay Invert with tap key */ -#define ACTION_OVERLAY_TAP_KEY(layer, key)        ACTION(ACT_OVERLAY, (layer)<<8 | (key)) - +#define ACTION_LAYER_TAP_KEY(layer, key)        ACTION(ACT_LAYER, (layer)<<8 | (key)) + +/* Layer BitOp: 101|BB|ooo|xxxxxxxx */ +#define ACTION_LAYER_BITOP(op, part, bits)      (ACT_LAYER_BITOP<<12 | (part&0x3)<<11 | (op&0x7)<<8 | bits) +#define ACTION_LAYER_AND(part, bits)            ACTION_LAYER_BITOP(BITOP_AND, part, bits) +#define ACTION_LAYER_OR(part, bits)             ACTION_LAYER_BITOP(BITOP_OR, part, bits) +#define ACTION_LAYER_XOR(part, bits)            ACTION_LAYER_BITOP(BITOP_XOR, part, bits) +#define ACTION_LAYER_LSHIFT(part, bits)         ACTION_LAYER_BITOP(BITOP_LSHIFT, part, bits) +#define ACTION_LAYER_RSHIFT(part, bits)         ACTION_LAYER_BITOP(BITOP_RSHIFT, part, bits) +   /*   * Extensions diff --git a/common/command.c b/common/command.c index b29333883..e197a8f80 100644 --- a/common/command.c +++ b/common/command.c @@ -575,6 +575,5 @@ static void switch_default_layer(uint8_t layer)  {      print("switch_default_layer: "); print_dec(default_layer); print(" to "); print_dec(layer); print("\n");      default_layer_set(layer); -    overlay_clear();      clear_keyboard();  } diff --git a/common/layer_switch.c b/common/layer_switch.c index a5d426a89..359e6b9d8 100644 --- a/common/layer_switch.c +++ b/common/layer_switch.c @@ -24,7 +24,7 @@ void default_layer_set(uint8_t layer)  } -#ifndef NO_ACTION_KEYMAP +#ifndef NO_ACTION_LAYER  /*    * Keymap Layer (0-15)   */ @@ -100,98 +100,12 @@ void keymap_debug(void) -#ifndef NO_ACTION_OVERLAY -/*  - * Overlay Layer (16-31 = 0-15|0x10) - */ -uint16_t overlay_stat = 0; - -/* return highest layer whose state is on */ -uint8_t overlay_get_layer(void) -{ -    return biton16(overlay_stat); -} - -static void overlay_stat_set(uint16_t stat) -{ -    debug("overlay: "); -    overlay_debug(); debug(" to "); - -    overlay_stat = stat; - -    overlay_debug(); debug("\n"); - -    clear_keyboard_but_mods(); // To avoid stuck keys -} - -void overlay_clear(void) -{ -    overlay_stat_set(0); -} - - -void overlay_set(uint16_t stat) -{ -    overlay_stat_set(stat); -} - -void overlay_move(uint8_t layer) -{ -    overlay_stat_set(1<<layer); -} - -void overlay_on(uint8_t layer) -{ -    overlay_stat_set(overlay_stat | (1<<layer)); -} - -void overlay_off(uint8_t layer) -{ -    overlay_stat_set(overlay_stat & ~(1<<layer)); -} - -void overlay_invert(uint8_t layer) -{ -    overlay_stat_set(overlay_stat ^ (1<<layer)); -} - -void overlay_or(uint16_t stat) -{ -    overlay_stat_set(overlay_stat | stat); -} -void overlay_and(uint16_t stat) -{ -    overlay_stat_set(overlay_stat & stat); -} -void overlay_xor(uint16_t stat) -{ -    overlay_stat_set(overlay_stat ^ stat); -} - -void overlay_debug(void) -{ -    debug_hex16(overlay_stat); debug("("); debug_dec(overlay_get_layer()); debug(")"); -} -#endif -  action_t layer_switch_get_action(key_t key)  {      action_t action;      action.code = ACTION_TRANSPARENT; -#ifndef NO_ACTION_OVERLAY -    /* overlay: top layer first */ -    for (int8_t i = 15; i >= 0; i--) { -        if (overlay_stat & (1<<i)) { -            action = action_for_key(i | OVERLAY_BIT, key); -            if (action.code != ACTION_TRANSPARENT) { -                return action; -            } -        } -    } -#endif - -#ifndef NO_ACTION_KEYMAP +#ifndef NO_ACTION_LAYER      /* keymap: top layer first */      for (int8_t i = 15; i >= 0; i--) {          if (keymap_stat & (1<<i)) { diff --git a/common/layer_switch.h b/common/layer_switch.h index eb4cf61ba..423dafb5b 100644 --- a/common/layer_switch.h +++ b/common/layer_switch.h @@ -22,11 +22,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #include "action.h" -/* overlays are asigned at layer 16-31 */ -#define OVERLAY_BIT      0x10 -#define OVERLAY_MASK     0x0F - -  /*   * Default Layer   */ @@ -38,7 +33,7 @@ void default_layer_set(uint8_t layer);  /*   * Keymap Layer   */ -#ifndef NO_ACTION_KEYMAP +#ifndef NO_ACTION_LAYER  extern uint16_t keymap_stat;  /* return current active layer */  uint8_t keymap_get_layer(void); @@ -69,41 +64,6 @@ void keymap_debug(void);  #endif -/* - * Overlay Layer - */ -#ifndef NO_ACTION_OVERLAY -extern uint16_t overlay_stat; -/* return current active layer */ -uint8_t overlay_get_layer(void); -void overlay_clear(void); -void overlay_set(uint16_t stat); -void overlay_move(uint8_t layer); -void overlay_on(uint8_t layer); -void overlay_off(uint8_t layer); -void overlay_invert(uint8_t layer); -/* bitwise operation */ -void overlay_or(uint16_t stat); -void overlay_and(uint16_t stat); -void overlay_xor(uint16_t stat); -void overlay_debug(void); -#else -#define overlay_stat            0 -#define overlay_get_layer() -#define overlay_clear() -#define overlay_set(stat) -#define overlay_move(layer) -#define overlay_on(layer) -#define overlay_off(layer) -#define overlay_invert(layer) -#define overlay_or(stat) -#define overlay_and(stat) -#define overlay_xor(stat) -#define overlay_debug() -#endif - - -  /* return action depending on current layer status */  action_t layer_switch_get_action(key_t key);  | 
