summaryrefslogtreecommitdiff
path: root/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c')
-rw-r--r--keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c639
1 files changed, 472 insertions, 167 deletions
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
index d6bd3818b4..d5bf9f0223 100644
--- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
@@ -7,193 +7,498 @@
/* Only for basis letters
Exceptions like Tab or Enter */
bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_TAB:
+ // case KC_ENT:
- switch (keycode) {
-
- case KC_TAB:
- case KC_ENT:
-
- // --
- case KC_A:
- case KC_B:
- case KC_C:
- case KC_D:
- case KC_E:
- case KC_F:
- case KC_G:
- case KC_H:
- case KC_I:
- case KC_J:
- case KC_K:
- case KC_L:
- case KC_M:
- case KC_N:
- case KC_O:
- case KC_P:
- case KC_Q:
- case KC_R:
- case KC_S:
- case KC_T:
- case KC_U:
- case KC_V:
- case KC_W:
- case KC_X:
- case KC_Y:
- case KC_Z:
-
- return true;
- }
-
- return get_custom_auto_shifted_key(keycode, record);
-}
+ case US_EACU:
+ case US_CCED:
+ case US_AE:
+ case US_OE:
+
+ // --
+ case KC_A:
+ case KC_B:
+ case KC_C:
+ case KC_D:
+ case KC_E:
+ case KC_F:
+ case KC_G:
+ case KC_H:
+ case KC_I:
+ case KC_J:
+ case KC_K:
+ case KC_L:
+ case KC_M:
+ case KC_N:
+ case KC_O:
+ case KC_P:
+ case KC_Q:
+ case KC_R:
+ case KC_S:
+ case KC_T:
+ case KC_U:
+ case KC_V:
+ case KC_W:
+ case KC_X:
+ case KC_Y:
+ case KC_Z:
+ return true;
+ }
+
+ return get_custom_auto_shifted_key(keycode, record);
+}
/* Custom auto shift
I use this instead of tap dance because double tap is horrible
Add here the letter or the custom enum, then add in press_user and press_release the actions */
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
- switch(keycode) {
+ switch (keycode) {
+ case KC_BSPC:
- case KC_BSPC:
- case KC_LABK: // Easy indent with vim
- case KC_RABK:
+ // Double them !!!
+ case KC_AMPERSAND:
+ case KC_AT:
+ case KC_BACKSLASH:
+ case KC_CIRCUMFLEX:
+ case KC_COLON:
+ case KC_DOLLAR:
+ case KC_EQUAL:
+ case KC_EXCLAIM:
+ case KC_GRAVE:
+ case KC_HASH:
+ case KC_MINUS:
+ case KC_PERC:
+ case KC_PIPE:
+ case KC_PLUS:
+ case KC_QUESTION:
+ case KC_QUOTE:
+ case KC_DOUBLE_QUOTE:
+ case KC_SEMICOLON:
+ case KC_SLASH:
+ case KC_ASTERISK:
+ case KC_TILDE:
+ case KC_UNDERSCORE:
- /* French */
- case CS_E_ACUTE:
+ case KC_LEFT_ANGLE_BRACKET: // Easy indent with vim
+ case KC_RIGHT_ANGLE_BRACKET:
- case CS_A_GRAVE:
- case CS_E_GRAVE:
- case CS_I_GRAVE:
- case CS_O_GRAVE:
- case CS_U_GRAVE:
+ case KC_LEFT_BRACKET:
+ case KC_RIGHT_BRACKET:
+ case KC_LEFT_CURLY_BRACE:
+ case KC_RIGHT_CURLY_BRACE:
+ case KC_LEFT_PAREN:
+ case KC_RIGHT_PAREN:
- case CS_A_CIRCUMFLEX:
- case CS_E_CIRCUMFLEX:
- case CS_I_CIRCUMFLEX:
- case CS_O_CIRCUMFLEX:
- case CS_U_CIRCUMFLEX:
+ /* French */
+ case CS_A_GRAVE:
+ case CS_E_GRAVE:
+ case CS_U_GRAVE:
- case CS_A_DIAERESIS:
- case CS_E_DIAERESIS:
- case CS_I_DIAERESIS:
- case CS_O_DIAERESIS:
- case CS_U_DIAERESIS:
- case CS_Y_DIAERESIS:
+ case CS_A_CIRCUMFLEX:
+ case CS_E_CIRCUMFLEX:
+ case CS_I_CIRCUMFLEX:
+ case CS_O_CIRCUMFLEX:
+ case CS_U_CIRCUMFLEX:
- case CS_C_CEDILLA:
- case CS_AE:
- case CS_OE:
+ case CS_E_DIAERESIS:
+ case CS_I_DIAERESIS:
+ case CS_U_DIAERESIS:
+ case CS_Y_DIAERESIS:
+ return true;
- return true;
-
- default:
- return false;
- }
+ default:
+ return false;
+ }
}
void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
- switch(keycode) {
-
- case KC_BSPC:
- register_code16((!shifted) ? KC_BSPC : KC_DEL);
- break;
-
- case KC_LABK:
- if (shifted) { send_unicode_string("<<"); }
- else { send_unicode_string("<"); } break;
-
- case KC_RABK:
- if (shifted) { send_unicode_string(">>"); }
- else { send_unicode_string(">"); } break;
-
- /* French
- Release is not necessary with 'send_unicode_string()' */
- case CS_E_ACUTE:
- if (shifted) { send_unicode_string("É"); }
- else { send_unicode_string("é"); } break;
-
- case CS_A_GRAVE:
- if (shifted) { send_unicode_string("À"); }
- else { send_unicode_string("à"); } break;
- case CS_E_GRAVE:
- if (shifted) { send_unicode_string("È"); }
- else { send_unicode_string("è"); } break;
- case CS_I_GRAVE:
- if (shifted) { send_unicode_string("Ì"); }
- else { send_unicode_string("ì"); } break;
- case CS_O_GRAVE:
- if (shifted) { send_unicode_string("Ò"); }
- else { send_unicode_string("ò"); } break;
- case CS_U_GRAVE:
- if (shifted) { send_unicode_string("Ù"); }
- else { send_unicode_string("ù"); } break;
-
- case CS_A_CIRCUMFLEX:
- if (shifted) { send_unicode_string("Â"); }
- else { send_unicode_string("â"); } break;
- case CS_E_CIRCUMFLEX:
- if (shifted) { send_unicode_string("Ê"); }
- else { send_unicode_string("ê"); } break;
- case CS_I_CIRCUMFLEX:
- if (shifted) { send_unicode_string("Î"); }
- else { send_unicode_string("î"); } break;
- case CS_O_CIRCUMFLEX:
- if (shifted) { send_unicode_string("Ô"); }
- else { send_unicode_string("ô"); } break;
- case CS_U_CIRCUMFLEX:
- if (shifted) { send_unicode_string("Û"); }
- else { send_unicode_string("û"); } break;
-
- case CS_A_DIAERESIS:
- if (shifted) { send_unicode_string("Ä"); }
- else { send_unicode_string("ä"); } break;
- case CS_E_DIAERESIS:
- if (shifted) { send_unicode_string("Ë"); }
- else { send_unicode_string("ë"); } break;
- case CS_I_DIAERESIS:
- if (shifted) { send_unicode_string("Ï"); }
- else { send_unicode_string("ï"); } break;
- case CS_O_DIAERESIS:
- if (shifted) { send_unicode_string("Ö"); }
- else { send_unicode_string("ö"); } break;
- case CS_U_DIAERESIS:
- if (shifted) { send_unicode_string("Ü"); }
- else { send_unicode_string("ü"); } break;
- case CS_Y_DIAERESIS:
- if (shifted) { send_unicode_string("Ÿ"); }
- else { send_unicode_string("ÿ"); } break;
-
- case CS_C_CEDILLA:
- if (shifted) { send_unicode_string("Ç"); }
- else { send_unicode_string("ç"); } break;
- case CS_AE:
- if (shifted) { send_unicode_string("Æ"); }
- else { send_unicode_string("æ"); } break;
- case CS_OE:
- if (shifted) { send_unicode_string("Œ"); }
- else { send_unicode_string("œ"); } 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);
+ switch (keycode) {
+ case KC_BSPC:
+ if (shifted) {
+ tap_code16(KC_DEL);
+ } else {
+ tap_code16(KC_BSPC);
}
-}
+ break;
+ break;
-void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
- switch(keycode) {
+ case KC_AMPERSAND:
+ if (shifted) {
+ tap_code16(KC_AMPERSAND);
+ tap_code16(KC_AMPERSAND);
+ } else {
+ tap_code16(KC_AMPERSAND);
+ }
+ break;
+ case KC_AT:
+ if (shifted) {
+ tap_code16(KC_AT);
+ tap_code16(KC_AT);
+ } else {
+ tap_code16(KC_AT);
+ }
+ break;
+ case KC_BACKSLASH:
+ if (shifted) {
+ tap_code16(KC_BACKSLASH);
+ tap_code16(KC_BACKSLASH);
+ } else {
+ tap_code16(KC_BACKSLASH);
+ }
+ break;
+ case KC_CIRCUMFLEX:
+ if (shifted) {
+ tap_code16(KC_CIRCUMFLEX);
+ tap_code16(KC_CIRCUMFLEX);
+ } else {
+ tap_code16(KC_CIRCUMFLEX);
+ }
+ break;
+ case KC_COLON:
+ if (shifted) {
+ tap_code16(KC_COLON);
+ tap_code16(KC_COLON);
+ } else {
+ tap_code16(KC_COLON);
+ }
+ break;
+ case KC_DOLLAR:
+ if (shifted) {
+ tap_code16(KC_DOLLAR);
+ tap_code16(KC_DOLLAR);
+ } else {
+ tap_code16(KC_DOLLAR);
+ }
+ break;
+ case KC_EQUAL:
+ if (shifted) {
+ tap_code16(KC_EQUAL);
+ tap_code16(KC_EQUAL);
+ } else {
+ tap_code16(KC_EQUAL);
+ }
+ break;
+ case KC_EXCLAIM:
+ if (shifted) {
+ tap_code16(KC_EXCLAIM);
+ tap_code16(KC_EXCLAIM);
+ } else {
+ tap_code16(KC_EXCLAIM);
+ }
+ break;
+ case KC_GRAVE:
+ if (shifted) {
+ tap_code16(KC_GRAVE);
+ tap_code16(KC_GRAVE);
+ } else {
+ tap_code16(KC_GRAVE);
+ }
+ break;
+ case KC_HASH:
+ if (shifted) {
+ tap_code16(KC_HASH);
+ tap_code16(KC_HASH);
+ } else {
+ tap_code16(KC_HASH);
+ }
+ break;
+ case KC_MINUS:
+ if (shifted) {
+ tap_code16(KC_MINUS);
+ tap_code16(KC_MINUS);
+ } else {
+ tap_code16(KC_MINUS);
+ }
+ break;
+ case KC_PERCENT:
+ if (shifted) {
+ tap_code16(KC_PERCENT);
+ tap_code16(KC_PERCENT);
+ } else {
+ tap_code16(KC_PERCENT);
+ }
+ break;
+ case KC_PIPE:
+ if (shifted) {
+ tap_code16(KC_PIPE);
+ tap_code16(KC_PIPE);
+ } else {
+ tap_code16(KC_PIPE);
+ }
+ break;
+ case KC_PLUS:
+ if (shifted) {
+ tap_code16(KC_PLUS);
+ tap_code16(KC_PLUS);
+ } else {
+ tap_code16(KC_PLUS);
+ }
+ break;
+ case KC_QUESTION:
+ if (shifted) {
+ tap_code16(KC_QUESTION);
+ tap_code16(KC_QUESTION);
+ } else {
+ tap_code16(KC_QUESTION);
+ }
+ break;
+ case KC_QUOTE:
+ if (shifted) {
+ tap_code16(KC_QUOTE);
+ tap_code16(KC_QUOTE);
+ } else {
+ tap_code16(KC_QUOTE);
+ }
+ break;
+ case KC_DOUBLE_QUOTE:
+ if (shifted) {
+ tap_code16(KC_DOUBLE_QUOTE);
+ tap_code16(KC_DOUBLE_QUOTE);
+ } else {
+ tap_code16(KC_DOUBLE_QUOTE);
+ }
+ break;
+ case KC_SEMICOLON:
+ if (shifted) {
+ tap_code16(KC_SEMICOLON);
+ tap_code16(KC_SEMICOLON);
+ } else {
+ tap_code16(KC_SEMICOLON);
+ }
+ break;
+ case KC_SLASH:
+ if (shifted) {
+ tap_code16(KC_SLASH);
+ tap_code16(KC_SLASH);
+ } else {
+ tap_code16(KC_SLASH);
+ }
+ break;
+ case KC_ASTERISK:
+ if (shifted) {
+ tap_code16(KC_ASTERISK);
+ tap_code16(KC_ASTERISK);
+ } else {
+ tap_code16(KC_ASTERISK);
+ }
+ break;
+ case KC_TILDE:
+ if (shifted) {
+ tap_code16(KC_TILDE);
+ tap_code16(KC_TILDE);
+ } else {
+ tap_code16(KC_TILDE);
+ }
+ break;
+ case KC_UNDERSCORE:
+ if (shifted) {
+ tap_code16(KC_UNDERSCORE);
+ tap_code16(KC_UNDERSCORE);
+ } else {
+ tap_code16(KC_UNDERSCORE);
+ }
+ break;
- case KC_BSPC:
- unregister_code16((!shifted) ? KC_BSPC : KC_DEL);
- break;
+ case KC_LEFT_ANGLE_BRACKET:
+ if (shifted) {
+ tap_code16(KC_LEFT_ANGLE_BRACKET);
+ tap_code16(KC_LEFT_ANGLE_BRACKET);
+ } else {
+ tap_code16(KC_LEFT_ANGLE_BRACKET);
+ }
+ break;
+ case KC_RIGHT_ANGLE_BRACKET:
+ if (shifted) {
+ tap_code16(KC_RIGHT_ANGLE_BRACKET);
+ tap_code16(KC_RIGHT_ANGLE_BRACKET);
+ } else {
+ tap_code16(KC_RIGHT_ANGLE_BRACKET);
+ }
+ 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);
+ case KC_LEFT_BRACKET:
+ if (shifted) {
+ tap_code16(KC_LEFT_BRACKET);
+ tap_code16(KC_LEFT_BRACKET);
+ } else {
+ tap_code16(KC_LEFT_BRACKET);
+ }
+ break;
+ case KC_RIGHT_BRACKET:
+ if (shifted) {
+ tap_code16(KC_RIGHT_BRACKET);
+ tap_code16(KC_RIGHT_BRACKET);
+ } else {
+ tap_code16(KC_RIGHT_BRACKET);
+ }
+ break;
+ case KC_LEFT_CURLY_BRACE:
+ if (shifted) {
+ tap_code16(KC_LEFT_CURLY_BRACE);
+ tap_code16(KC_LEFT_CURLY_BRACE);
+ } else {
+ tap_code16(KC_LEFT_CURLY_BRACE);
+ }
+ break;
+ case KC_RIGHT_CURLY_BRACE:
+ if (shifted) {
+ tap_code16(KC_RIGHT_CURLY_BRACE);
+ tap_code16(KC_RIGHT_CURLY_BRACE);
+ } else {
+ tap_code16(KC_RIGHT_CURLY_BRACE);
+ }
+ break;
+ case KC_LEFT_PAREN:
+ if (shifted) {
+ tap_code16(KC_LEFT_PAREN);
+ tap_code16(KC_LEFT_PAREN);
+ } else {
+ tap_code16(KC_LEFT_PAREN);
+ }
+ break;
+ case KC_RIGHT_PAREN:
+ if (shifted) {
+ tap_code16(KC_RIGHT_PAREN);
+ tap_code16(KC_RIGHT_PAREN);
+ } else {
+ tap_code16(KC_RIGHT_PAREN);
+ }
+ break;
+
+ /* French
+ Release is not necessary with 'send_unicode_string()' */
+ case CS_A_GRAVE:
+ if (shifted) {
+ tap_code16(US_DGRV);
+ tap_code16(S(KC_A));
+ } else {
+ tap_code16(US_DGRV);
+ tap_code16(KC_A);
+ }
+ break;
+ case CS_E_GRAVE:
+ if (shifted) {
+ tap_code16(US_DGRV);
+ tap_code16(S(KC_E));
+ } else {
+ tap_code16(US_DGRV);
+ tap_code16(KC_E);
+ }
+ break;
+ case CS_U_GRAVE:
+ if (shifted) {
+ tap_code16(US_DGRV);
+ tap_code16(S(KC_U));
+ } else {
+ tap_code16(US_DGRV);
+ tap_code16(KC_U);
+ }
+ break;
+
+ case CS_A_CIRCUMFLEX:
+ if (shifted) {
+ tap_code16(US_DCIR);
+ tap_code16(S(KC_A));
+ } else {
+ tap_code16(US_DCIR);
+ tap_code16(KC_A);
+ }
+ break;
+ case CS_E_CIRCUMFLEX:
+ if (shifted) {
+ tap_code16(US_DCIR);
+ tap_code16(S(KC_E));
+ } else {
+ tap_code16(US_DCIR);
+ tap_code16(KC_E);
}
+ break;
+ case CS_I_CIRCUMFLEX:
+ if (shifted) {
+ tap_code16(US_DCIR);
+ tap_code16(S(KC_I));
+ } else {
+ tap_code16(US_DCIR);
+ tap_code16(KC_I);
+ }
+ break;
+ case CS_O_CIRCUMFLEX:
+ if (shifted) {
+ tap_code16(US_DCIR);
+ tap_code16(S(KC_O));
+ } else {
+ tap_code16(US_DCIR);
+ tap_code16(KC_O);
+ }
+ break;
+ case CS_U_CIRCUMFLEX:
+ if (shifted) {
+ tap_code16(US_DCIR);
+ tap_code16(S(KC_U));
+ } else {
+ tap_code16(US_DCIR);
+ tap_code16(KC_U);
+ }
+ break;
+
+ case CS_E_DIAERESIS:
+ if (shifted) {
+ tap_code16(US_DIAE);
+ tap_code16(S(KC_E));
+ } else {
+ tap_code16(US_DIAE);
+ tap_code16(KC_E);
+ }
+ break;
+ case CS_I_DIAERESIS:
+ if (shifted) {
+ tap_code16(US_DIAE);
+ tap_code16(S(KC_I));
+ } else {
+ tap_code16(US_DIAE);
+ tap_code16(KC_I);
+ }
+ break;
+ case CS_U_DIAERESIS:
+ if (shifted) {
+ tap_code16(US_DIAE);
+ tap_code16(S(KC_U));
+ } else {
+ tap_code16(US_DIAE);
+ tap_code16(KC_U);
+ }
+ break;
+ case CS_Y_DIAERESIS:
+ if (shifted) {
+ tap_code16(US_DIAE);
+ tap_code16(S(KC_Y));
+ } else {
+ tap_code16(US_DIAE);
+ tap_code16(KC_Y);
+ }
+ 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 KC_BSPC:
+ unregister_code16((!shifted) ? KC_BSPC : KC_DEL);
+ 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);
+ }
}