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:
Didier Loiseau 2016-04-06 00:19:12 +02:00
parent 931b0a79fc
commit 08871e56f7

View File

@ -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();
} }
} }