core: Fix LAYER_MODS() and LAYER_TAP()

- LAYER_MODS() accepts either left or right modifiers
- LAYER_TAP() can use modifier as tap key, related to #422
This commit is contained in:
tmk 2017-01-11 10:30:47 +09:00
parent be80ed2ef3
commit c0f0909051
4 changed files with 36 additions and 18 deletions

View file

@ -101,7 +101,7 @@ void process_action(keyrecord_t *record)
{
uint8_t mods = (action.kind.id == ACT_LMODS_TAP) ? action.key.mods :
action.key.mods<<4;
switch (action.layer_tap.code) {
switch (action.key.code) {
#ifndef NO_ACTION_ONESHOT
case MODS_ONESHOT:
// Oneshot modifier
@ -247,14 +247,18 @@ 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) */
case 0xc0 ... 0xdf:
/* layer On/Off with modifiers */
if (event.pressed) {
layer_on(action.layer_tap.val);
register_mods(action.layer_tap.code & 0x0f);
register_mods((action.layer_tap.code & 0x10) ?
(action.layer_tap.code & 0x0f) << 4 :
(action.layer_tap.code & 0x0f));
} else {
layer_off(action.layer_tap.val);
unregister_mods(action.layer_tap.code & 0x0f);
unregister_mods((action.layer_tap.code & 0x10) ?
(action.layer_tap.code & 0x0f) << 4 :
(action.layer_tap.code & 0x0f));
}
break;
case OP_TAP_TOGGLE:
@ -532,12 +536,20 @@ bool is_tap_key(keypos_t key)
switch (action.kind.id) {
case ACT_LMODS_TAP:
case ACT_RMODS_TAP:
switch (action.key.code) {
case MODS_ONESHOT:
case MODS_TAP_TOGGLE:
case KC_A ... KC_EXSEL: // tap key
case KC_LCTRL ... KC_RGUI: // tap key
return true;
}
case ACT_LAYER_TAP:
case ACT_LAYER_TAP_EXT:
switch (action.layer_tap.code) {
case KC_A ... KC_EXSEL:
case KC_KP_00 ... KC_KP_HEXADECIMAL:
case KC_LCTRL ... KC_RGUI:
case 0xc0 ... 0xdf: // with modifiers
return false;
case KC_A ... KC_EXSEL: // tap key
case KC_LCTRL ... KC_RGUI: // tap key
case OP_TAP_TOGGLE:
return true;
}