Document the issue of stuck modifiers
This commit is contained in:
parent
c2480884aa
commit
8d55a12a95
20
README.md
20
README.md
@ -98,6 +98,26 @@ We've added shortcuts to make common modifier/tap (mod-tap) mappings more compac
|
|||||||
|
|
||||||
`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
|
`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does.
|
||||||
|
|
||||||
|
### Prevent stuck modifiers
|
||||||
|
|
||||||
|
Consider the following scenario:
|
||||||
|
|
||||||
|
1. Layer 0 has a key defined as Shift.
|
||||||
|
2. The same key is defined on layer 1 as the letter A.
|
||||||
|
3. User presses Shift.
|
||||||
|
4. User switches to layer 1 for whatever reason.
|
||||||
|
5. User releases Shift, or rather the letter A.
|
||||||
|
6. User switches back to layer 0.
|
||||||
|
|
||||||
|
Shift was actually never released and is still considered pressed.
|
||||||
|
|
||||||
|
If such situation bothers you add this to your `config.h`:
|
||||||
|
|
||||||
|
#define PREVENT_STUCK_MODIFIERS
|
||||||
|
|
||||||
|
Warning: This option uses up 2 bytes of memory per key. For example on
|
||||||
|
Planck it uses 2\*4\*12=96 bytes.
|
||||||
|
|
||||||
### Remember: These are just aliases
|
### Remember: These are just aliases
|
||||||
|
|
||||||
These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
|
These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk ACTION_* functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/tmk_core/doc/keymap.md#2-action).
|
||||||
|
@ -61,7 +61,7 @@ void action_exec(keyevent_t event)
|
|||||||
*/
|
*/
|
||||||
action_t store_or_get_action(bool pressed, keypos_t key)
|
action_t store_or_get_action(bool pressed, keypos_t key)
|
||||||
{
|
{
|
||||||
#ifndef NO_ACTION_LAYER
|
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
|
||||||
static action_t pressed_actions[MATRIX_ROWS][MATRIX_COLS];
|
static action_t pressed_actions[MATRIX_ROWS][MATRIX_COLS];
|
||||||
|
|
||||||
if (pressed) {
|
if (pressed) {
|
||||||
|
Loading…
Reference in New Issue
Block a user