Fix issue #221: LGUI(KC_LSFT) does not work
on mod keys, register LGUI, LSFT etc. as normal mods instead of weak mods: - they won't be cleared when pressing another key (#188) - they won't be cleared by layer switching - LSFT(KC_LGUI) will now have the same behavior as LGUI(KC_LSFT)
This commit is contained in:
parent
931b0a79fc
commit
08871e56f7
1 changed files with 12 additions and 2 deletions
|
@ -88,14 +88,24 @@ void process_action(keyrecord_t *record)
|
||||||
action.key.mods<<4;
|
action.key.mods<<4;
|
||||||
if (event.pressed) {
|
if (event.pressed) {
|
||||||
if (mods) {
|
if (mods) {
|
||||||
|
if (IS_MOD(action.key.code)) {
|
||||||
|
// e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless.
|
||||||
|
// this also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT)
|
||||||
|
add_mods(mods);
|
||||||
|
} else {
|
||||||
add_weak_mods(mods);
|
add_weak_mods(mods);
|
||||||
|
}
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
}
|
}
|
||||||
register_code(action.key.code);
|
register_code(action.key.code);
|
||||||
} else {
|
} else {
|
||||||
unregister_code(action.key.code);
|
unregister_code(action.key.code);
|
||||||
if (mods) {
|
if (mods) {
|
||||||
|
if (IS_MOD(action.key.code)) {
|
||||||
|
del_mods(mods);
|
||||||
|
} else {
|
||||||
del_weak_mods(mods);
|
del_weak_mods(mods);
|
||||||
|
}
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue