Add action 'Momentary switching with Modifiers'
This commit is contained in:
parent
8cec0bc9d6
commit
821c719e98
@ -237,6 +237,16 @@ void process_action(keyrecord_t *record)
|
|||||||
case ACT_LAYER_TAP:
|
case ACT_LAYER_TAP:
|
||||||
case ACT_LAYER_TAP_EXT:
|
case ACT_LAYER_TAP_EXT:
|
||||||
switch (action.layer_tap.code) {
|
switch (action.layer_tap.code) {
|
||||||
|
case 0xe0 ... 0xef:
|
||||||
|
/* layer On/Off with modifiers(left only) */
|
||||||
|
if (event.pressed) {
|
||||||
|
layer_on(action.layer_tap.val);
|
||||||
|
register_mods(action.layer_tap.code & 0x0f);
|
||||||
|
} else {
|
||||||
|
layer_off(action.layer_tap.val);
|
||||||
|
unregister_mods(action.layer_tap.code & 0x0f);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case OP_TAP_TOGGLE:
|
case OP_TAP_TOGGLE:
|
||||||
/* tap toggle */
|
/* tap toggle */
|
||||||
if (event.pressed) {
|
if (event.pressed) {
|
||||||
|
@ -71,7 +71,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
*
|
*
|
||||||
* ACT_LAYER_TAP(101x):
|
* ACT_LAYER_TAP(101x):
|
||||||
* 101E|LLLL| keycode On/Off with tap key
|
* 101E|LLLL| keycode On/Off with tap key
|
||||||
* 101E|LLLL|1110 xxxx Reserved(0xE0-EF)
|
* 101E|LLLL|1110 mods On/Off with modifiers(0xE0-EF)
|
||||||
* 101E|LLLL|1111 0000 Invert with tap toggle(0xF0)
|
* 101E|LLLL|1111 0000 Invert with tap toggle(0xF0)
|
||||||
* 101E|LLLL|1111 0001 On/Off
|
* 101E|LLLL|1111 0001 On/Off
|
||||||
* 101E|LLLL|1111 0010 Off/On
|
* 101E|LLLL|1111 0010 Off/On
|
||||||
@ -266,6 +266,7 @@ enum layer_pram_tap_op {
|
|||||||
#define ACTION_LAYER_ON_OFF(layer) ACTION_LAYER_TAP((layer), OP_ON_OFF)
|
#define ACTION_LAYER_ON_OFF(layer) ACTION_LAYER_TAP((layer), OP_ON_OFF)
|
||||||
#define ACTION_LAYER_OFF_ON(layer) ACTION_LAYER_TAP((layer), OP_OFF_ON)
|
#define ACTION_LAYER_OFF_ON(layer) ACTION_LAYER_TAP((layer), OP_OFF_ON)
|
||||||
#define ACTION_LAYER_SET_CLEAR(layer) ACTION_LAYER_TAP((layer), OP_SET_CLEAR)
|
#define ACTION_LAYER_SET_CLEAR(layer) ACTION_LAYER_TAP((layer), OP_SET_CLEAR)
|
||||||
|
#define ACTION_LAYER_MODS(layer, mods) ACTION_LAYER_TAP((layer), 0xe0 | (mods)&0x0f)
|
||||||
/* With Tapping */
|
/* With Tapping */
|
||||||
#define ACTION_LAYER_TAP_KEY(layer, key) ACTION_LAYER_TAP((layer), (key))
|
#define ACTION_LAYER_TAP_KEY(layer, key) ACTION_LAYER_TAP((layer), (key))
|
||||||
#define ACTION_LAYER_TAP_TOGGLE(layer) ACTION_LAYER_TAP((layer), OP_TAP_TOGGLE)
|
#define ACTION_LAYER_TAP_TOGGLE(layer) ACTION_LAYER_TAP((layer), OP_TAP_TOGGLE)
|
||||||
|
@ -497,6 +497,13 @@ Number of taps can be configured with `TAPPING_TOGGLE` in `config.h`, `5` by def
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3.5 Momentary switching with Modifiers
|
||||||
|
This registers modifier key(s) simultaneously with layer switching.
|
||||||
|
|
||||||
|
ACTION_LAYER_MODS(2, MOD_LSFT | MOD_LALT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 4. Tapping
|
## 4. Tapping
|
||||||
Tapping is to press and release a key quickly. Tapping speed is determined with setting of `TAPPING_TERM`, which can be defined in `config.h`, 200ms by default.
|
Tapping is to press and release a key quickly. Tapping speed is determined with setting of `TAPPING_TERM`, which can be defined in `config.h`, 200ms by default.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user