~ruther/qmk_firmware

196164146363d5f3bfb97435f3ac6dfa13c8da72 — tmk 10 years ago a58b9dd + 821c719
Merge branch 'action_fix'
3 files changed, 19 insertions(+), 1 deletions(-)

M common/action.c
M common/action_code.h
M doc/keymap.md
M common/action.c => common/action.c +10 -0
@@ 237,6 237,16 @@ void process_action(keyrecord_t *record)
        case ACT_LAYER_TAP:
        case ACT_LAYER_TAP_EXT:
            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:
                    /* tap toggle */
                    if (event.pressed) {

M common/action_code.h => common/action_code.h +2 -1
@@ 71,7 71,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * ACT_LAYER_TAP(101x):
 * 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 0001   On/Off
 * 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_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_MODS(layer, mods)              ACTION_LAYER_TAP((layer), 0xe0 | (mods)&0x0f)
/* With Tapping */
#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)

M doc/keymap.md => doc/keymap.md +7 -0
@@ 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
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.