|
@@ -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) {
|
|
- add_weak_mods(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);
|
|
|
|
+ }
|
|
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) {
|
|
- del_weak_mods(mods);
|
|
|
|
|
|
+ if (IS_MOD(action.key.code)) {
|
|
|
|
+ del_mods(mods);
|
|
|
|
+ } else {
|
|
|
|
+ del_weak_mods(mods);
|
|
|
|
+ }
|
|
send_keyboard_report();
|
|
send_keyboard_report();
|
|
}
|
|
}
|
|
}
|
|
}
|