84 lines
No EOL
2.7 KiB
C
84 lines
No EOL
2.7 KiB
C
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
|
|
switch(keycode) {
|
|
case DK_MINS:
|
|
case DK_SLSH:
|
|
case DK_LPRN:
|
|
case DK_LBRC:
|
|
case DK_LCBR:
|
|
case DK_LABK:
|
|
case DK_QUOT:
|
|
return true;
|
|
default:
|
|
// Enable Auto-Shift for mod-tap keys (for Retro-Shift to work)
|
|
if (IS_RETRO(keycode)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
|
|
switch(keycode) {
|
|
case DK_MINS:
|
|
register_code16((!shifted) ? DK_MINS : DK_UNDS);
|
|
break;
|
|
case DK_SLSH:
|
|
register_code16((!shifted) ? DK_SLSH : DK_BSLS);
|
|
break;
|
|
case DK_LPRN:
|
|
register_code16((!shifted) ? DK_LPRN : DK_RPRN);
|
|
break;
|
|
case DK_LBRC:
|
|
register_code16((!shifted) ? DK_LBRC : DK_RBRC);
|
|
break;
|
|
case DK_LCBR:
|
|
register_code16((!shifted) ? DK_LCBR : DK_RCBR);
|
|
break;
|
|
case DK_LABK:
|
|
register_code16((!shifted) ? DK_LABK : DK_RABK);
|
|
break;
|
|
case DK_QUOT:
|
|
register_code16((!shifted) ? DK_QUOT : DK_DQUO);
|
|
break;
|
|
case DK_DLR:
|
|
register_code16((!shifted) ? DK_DLR : DK_EURO);
|
|
break;
|
|
default:
|
|
if (shifted) {
|
|
add_weak_mods(MOD_BIT(KC_LSFT));
|
|
}
|
|
// & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
|
|
register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
|
|
}
|
|
}
|
|
|
|
void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
|
|
switch(keycode) {
|
|
case DK_MINS:
|
|
unregister_code16((!shifted) ? DK_MINS : DK_UNDS);
|
|
break;
|
|
case DK_SLSH:
|
|
unregister_code16((!shifted) ? DK_SLSH : DK_BSLS);
|
|
break;
|
|
case DK_LPRN:
|
|
unregister_code16((!shifted) ? DK_LPRN : DK_RPRN);
|
|
break;
|
|
case DK_LBRC:
|
|
unregister_code16((!shifted) ? DK_LBRC : DK_RBRC);
|
|
break;
|
|
case DK_LCBR:
|
|
unregister_code16((!shifted) ? DK_LCBR : DK_RCBR);
|
|
break;
|
|
case DK_LABK:
|
|
unregister_code16((!shifted) ? DK_LABK : DK_RABK);
|
|
break;
|
|
case DK_QUOT:
|
|
unregister_code16((!shifted) ? DK_QUOT : DK_DQUO);
|
|
break;
|
|
default:
|
|
// & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
|
|
// The IS_RETRO check isn't really necessary here, always using
|
|
// keycode & 0xFF would be fine.
|
|
unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
|
|
}
|
|
} |