Commit 252b771656e7
keyboards/moonlander/config/config.h
@@ -26,8 +26,8 @@
#define QUICK_TAP_TERM 0 // 175
#define COMBO_TERM 40
-#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD 1
-#define CAPS_WORD_INVERT_ON_SHIFT 1
+/* #define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD 1 */
+/* #define CAPS_WORD_INVERT_ON_SHIFT 1 */
// Left-hand home row mods
#define HM_GUI_A LGUI_T(KC_A) // Qwerty and Bépo
@@ -55,8 +55,11 @@
// French accents
#define FR_QUOT_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_QUOTE) SS_DELAY(50) SS_TAP(X_SPACE)
#define FR_E_AIGU_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_QUOTE) SS_DELAY(50) SS_TAP(X_E) // é
+#define FR_E_AIGU_CAPS_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_QUOTE) SS_DELAY(50) SS_RSFT(SS_TAP(X_E)) // É
#define FR_E_GRAVE_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_GRAVE) SS_DELAY(50) SS_TAP(X_E) // è
+#define FR_E_GRAVE_CAPS_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_GRAVE) SS_DELAY(50) SS_RSFT(SS_TAP(X_E)) // È
#define FR_A_GRAVE_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_GRAVE) SS_DELAY(50) SS_TAP(X_A) // à
+#define FR_A_GRAVE_CAPS_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_GRAVE) SS_DELAY(50) SS_RSFT(SS_TAP(X_A)) // À
#define FR_U_GRAVE_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_GRAVE) SS_DELAY(50) SS_TAP(X_U) // ù
#define FR_C_CEDILLE_M SS_TAP(X_RALT) SS_DELAY(50) SS_TAP(X_COMMA) SS_DELAY(50) SS_TAP(X_C) // ç
#define FR_A_CIRONFL_M SS_TAP(X_RALT) SS_DELAY(50) SS_RSFT(SS_TAP(X_6)) SS_DELAY(50) SS_TAP(X_A) // â
keyboards/moonlander/config/keymap.c
@@ -37,8 +37,11 @@ enum custom_keycodes {
VRSN = SAFE_RANGE,
FR_QUOT,
FR_E_AIGU,
+ FR_E_AIGU_CAPS,
FR_E_GRAVE,
+ FR_E_GRAVE_CAPS,
FR_A_GRAVE,
+ FR_A_GRAVE_CAPS,
};
const key_override_t circ_exclamation_override = ko_make_with_layers(MOD_MASK_SHIFT, KC_CIRC, KC_EXLM, 1 << BEPO);
@@ -191,17 +194,54 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break;
case FR_E_AIGU:
if (record->event.pressed) {
- SEND_STRING(FR_E_AIGU_M);
+ if (get_mods() & MOD_MASK_SHIFT) {
+ // É
+ del_mods(MOD_MASK_SHIFT);
+ SEND_STRING(FR_E_AIGU_CAPS_M);
+ } else {
+ // é
+ SEND_STRING(FR_E_AIGU_M);
+ }
+ }
+ break;
+ case FR_E_AIGU_CAPS:
+ if (record->event.pressed) {
+ SEND_STRING(FR_E_AIGU_CAPS_M);
}
break;
case FR_E_GRAVE:
if (record->event.pressed) {
- SEND_STRING(FR_E_GRAVE_M);
+ if (get_mods() & MOD_MASK_SHIFT) {
+ //
+ del_mods(MOD_MASK_SHIFT);
+ SEND_STRING(FR_E_GRAVE_CAPS_M);
+ } else {
+ // è
+ SEND_STRING(FR_E_GRAVE_M);
+ }
+ }
+ break;
+ case FR_E_GRAVE_CAPS:
+ if (record->event.pressed) {
+ SEND_STRING(FR_E_GRAVE_CAPS_M);
}
break;
case FR_A_GRAVE:
if (record->event.pressed) {
- SEND_STRING(FR_A_GRAVE_M);
+
+ if (get_mods() & MOD_MASK_SHIFT) {
+ //
+ del_mods(MOD_MASK_SHIFT);
+ SEND_STRING(FR_A_GRAVE_CAPS_M);
+ } else {
+ // à
+ SEND_STRING(FR_A_GRAVE_M);
+ }
+ }
+ break;
+ case FR_A_GRAVE_CAPS:
+ if (record->event.pressed) {
+ SEND_STRING(FR_A_GRAVE_CAPS_M);
}
break;
}