From: tmk Date: Tue, 12 Feb 2013 08:12:04 +0000 (+0900) Subject: Change ACTION_LAYER_SET_LAYER behaviour X-Git-Url: https://git.friedersdorff.com/?a=commitdiff_plain;h=77af88042a0622946d7af7aff489cc6e18469104;p=max%2Ftmk_keyboard.git Change ACTION_LAYER_SET_LAYER behaviour --- diff --git a/common/action.c b/common/action.c index 6d533675..aadf5e16 100644 --- a/common/action.c +++ b/common/action.c @@ -358,6 +358,7 @@ static void process_action(keyrecord_t *record) layer_switch(action.layer.val); } else { + // NOTE: This is needed by legacy keymap support layer_switch(default_layer); } break; @@ -421,7 +422,7 @@ static void process_action(keyrecord_t *record) unregister_code(action.layer.code); } else { //debug("LAYER_PRESSED: No tap: NO ACTION\n"); -//TODO: this is ok? + // NOTE: This is needed by legacy keymap support debug("LAYER_PRESSED: No tap: return to default layer\n"); layer_switch(default_layer); } diff --git a/common/action.h b/common/action.h index 9b559cb1..ac44b1a7 100644 --- a/common/action.h +++ b/common/action.h @@ -157,7 +157,7 @@ ACT_LAYER_BIT(1001): Bit-op layer 1000|LLLL|0000 0001 set L to layer on press 1000|LLLL|0000 0010 set L to layer on release 1000|----|0000 0011 set default to layer on both(return to default layer) -1000|LLLL|xxxx xxxx set L to layer while hold and send key on tap +1000|LLLL| keycode set L to layer while hold and send key on tap 1000|LLLL|1111 0000 set L to layer while hold and toggle on several taps 1000|LLLL|1111 1111 set L to default and layer(on press) @@ -165,7 +165,7 @@ ACT_LAYER_BIT(1001): Bit-op layer 1001|BBBB|0000 0001 bit-xor layer with B on press 1001|BBBB|0000 0010 bit-xor layer with B on release 1001|BBBB|0000 0011 bit-xor layer with B on both(momentary) -1001|BBBB|xxxx xxxx bit-xor layer with B while hold and send key on tap +1001|BBBB| keycode bit-xor layer with B while hold and send key on tap 1001|BBBB|1111 0000 bit-xor layer with B while hold and toggle on several taps 1001|BBBB|1111 1111 bit-xor default with B and set layer(on press) @@ -213,10 +213,10 @@ enum action_kind_id { /* Key */ #define ACTION_KEY(key) ACTION(ACT_LMODS, key) /* Mods & key */ -#define ACTION_LMODS(mods) ACTION(ACT_LMODS, (mods)<<8 | 0x00) -#define ACTION_LMODS_KEY(mods, key) ACTION(ACT_LMODS, (mods)<<8 | (key)) -#define ACTION_RMODS(mods) ACTION(ACT_RMODS, (mods)<<8 | 0x00) -#define ACTION_RMODS_KEY(mods, key) ACTION(ACT_RMODS, (mods)<<8 | (key)) +#define ACTION_LMODS(mods) ACTION(ACT_LMODS, MODS4(mods)<<8 | 0x00) +#define ACTION_LMODS_KEY(mods, key) ACTION(ACT_LMODS, MODS4(mods)<<8 | (key)) +#define ACTION_RMODS(mods) ACTION(ACT_RMODS, MODS4(mods)<<8 | 0x00) +#define ACTION_RMODS_KEY(mods, key) ACTION(ACT_RMODS, MODS4(mods)<<8 | (key)) /* Mod & key */ #define ACTION_LMOD(mod) ACTION(ACT_LMODS, MODS4(MOD_BIT(mod))<<8 | 0x00) #define ACTION_LMOD_KEY(mod, key) ACTION(ACT_LMODS, MODS4(MOD_BIT(mod))<<8 | (key)) @@ -268,8 +268,9 @@ enum layer_vals_default { /* * Set layer */ -/* set layer on press and set default on release */ -#define ACTION_LAYER_SET(layer) ACTION_LAYER_SET_MOMENTARY(layer) +/* set layer on press and none on release */ +#define ACTION_LAYER_SET(layer) ACTION_LAYER_SET_P(layer) +/* set layer on press and set default on release (This is needed by legacy keymap support.) */ #define ACTION_LAYER_SET_MOMENTARY(layer) ACTION(ACT_LAYER, (layer)<<8 | LAYER_MOMENTARY) /* set layer on press and none on release */ #define ACTION_LAYER_SET_TOGGLE(layer) ACTION_LAYER_SET_R(layer)