forked from mirrors/qmk_firmware
Add tap toggle modifiers
Including documentation.
This commit is contained in:
parent
821578293c
commit
a6afa845b9
3 changed files with 20 additions and 0 deletions
|
@ -128,6 +128,17 @@ void process_action(keyrecord_t *record)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case MODS_TAP_TOGGLE:
|
||||||
|
if (event.pressed) {
|
||||||
|
if (tap_count <= TAPPING_TOGGLE) {
|
||||||
|
register_mods(mods);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (tap_count < TAPPING_TOGGLE) {
|
||||||
|
unregister_mods(mods);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (event.pressed) {
|
if (event.pressed) {
|
||||||
if (tap_count > 0) {
|
if (tap_count > 0) {
|
||||||
|
|
|
@ -34,6 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* ACT_MODS_TAP(001r):
|
* ACT_MODS_TAP(001r):
|
||||||
* 001r|mods|0000 0000 Modifiers with OneShot
|
* 001r|mods|0000 0000 Modifiers with OneShot
|
||||||
|
* 001r|mods|0000 0001 Modifiers with tap toggle
|
||||||
* 001r|mods|0000 00xx (reserved)
|
* 001r|mods|0000 00xx (reserved)
|
||||||
* 001r|mods| keycode Modifiers with Tap Key(Dual role)
|
* 001r|mods| keycode Modifiers with Tap Key(Dual role)
|
||||||
*
|
*
|
||||||
|
@ -205,12 +206,14 @@ enum mods_bit {
|
||||||
};
|
};
|
||||||
enum mods_codes {
|
enum mods_codes {
|
||||||
MODS_ONESHOT = 0x00,
|
MODS_ONESHOT = 0x00,
|
||||||
|
MODS_TAP_TOGGLE = 0x01,
|
||||||
};
|
};
|
||||||
#define ACTION_KEY(key) ACTION(ACT_MODS, (key))
|
#define ACTION_KEY(key) ACTION(ACT_MODS, (key))
|
||||||
#define ACTION_MODS(mods) ACTION(ACT_MODS, (mods&0x1f)<<8 | 0)
|
#define ACTION_MODS(mods) ACTION(ACT_MODS, (mods&0x1f)<<8 | 0)
|
||||||
#define ACTION_MODS_KEY(mods, key) ACTION(ACT_MODS, (mods&0x1f)<<8 | (key))
|
#define ACTION_MODS_KEY(mods, key) ACTION(ACT_MODS, (mods&0x1f)<<8 | (key))
|
||||||
#define ACTION_MODS_TAP_KEY(mods, key) ACTION(ACT_MODS_TAP, (mods&0x1f)<<8 | (key))
|
#define ACTION_MODS_TAP_KEY(mods, key) ACTION(ACT_MODS_TAP, (mods&0x1f)<<8 | (key))
|
||||||
#define ACTION_MODS_ONESHOT(mods) ACTION(ACT_MODS_TAP, (mods&0x1f)<<8 | MODS_ONESHOT)
|
#define ACTION_MODS_ONESHOT(mods) ACTION(ACT_MODS_TAP, (mods&0x1f)<<8 | MODS_ONESHOT)
|
||||||
|
#define ACTION_MODS_TAP_TOGGLE(mods) ACTION(ACT_MODS_TAP, (mods&0x1f)<<8 | MODS_TAP_TOGGLE)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -526,6 +526,12 @@ Say you want to type 'The', you have to push and hold Shift key before type 't'
|
||||||
Oneshot effect is cancel unless following key is pressed down within `ONESHOT_TIMEOUT` of `config.h`. No timeout when it is `0` or not defined.
|
Oneshot effect is cancel unless following key is pressed down within `ONESHOT_TIMEOUT` of `config.h`. No timeout when it is `0` or not defined.
|
||||||
|
|
||||||
|
|
||||||
|
### 4.4 Tap Toggle Mods
|
||||||
|
Similar to layer tap toggle, this works as a momentary modifier when holding, but toggles on with several taps. A single tap will 'unstick' the modifier again.
|
||||||
|
|
||||||
|
ACTION_MODS_TAP_TOGGLE(MOD_LSFT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 5. Legacy Keymap
|
## 5. Legacy Keymap
|
||||||
|
|
Loading…
Reference in a new issue