From 23da95ecb55b2b3d4d827f3228cfe139f058988f Mon Sep 17 00:00:00 2001 From: Kawamashi Date: Sun, 28 Sep 2025 16:39:07 +0200 Subject: [PATCH] =?UTF-8?q?=C3=A7a=20marche=E2=80=AF!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rev1/base/keymaps/Kawamashi/clever_keys.c | 2 +- .../features/clever_keys_utilities.c | 2 +- .../keymaps/Kawamashi/features/odk_layer.c | 43 ++++--------------- .../keymaps/Kawamashi/features/odk_layer.h | 1 - .../base/keymaps/Kawamashi/features/os4a.c | 10 ++--- .../base/keymaps/Kawamashi/features_conf.c | 15 ++++--- .../rev1/base/keymaps/Kawamashi/keymap.c | 9 +--- .../rev1/base/keymaps/Kawamashi/keymap.h | 1 - 8 files changed, 25 insertions(+), 58 deletions(-) diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/clever_keys.c b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/clever_keys.c index 806259ec..f6e683d7 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/clever_keys.c +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/clever_keys.c @@ -178,7 +178,7 @@ void get_clever_keycode(uint16_t* next_keycode, keyrecord_t* record) { default: // "à" - process_key(MOD_ODK, record); + process_key(PG_ODK, record); return replace_ongoing_key(PG_A, next_keycode, record); } diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/clever_keys_utilities.c b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/clever_keys_utilities.c index ca1004cd..e3e572f5 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/clever_keys_utilities.c +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/clever_keys_utilities.c @@ -42,7 +42,7 @@ uint16_t get_ongoing_keycode(uint16_t keycode, keyrecord_t* record) { //if (mods & ~(MOD_MASK_SHIFT | MOD_BIT(KC_ALGR))) { if (mods & ~MOD_MASK_SHIFT) { - clear_recent_keys(); // Avoid interfering with ctrl, left alt, alt-gr and gui. + clear_recent_keys(); // Avoid interfering with ctrl, alt, alt-gr and gui. return KC_NO; } diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.c b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.c index 22e7310a..914d7fe7 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.c +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.c @@ -21,7 +21,7 @@ bool process_odk_layer(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { // On press const uint8_t mods = get_mods() | get_weak_mods() | get_oneshot_mods(); - //bool mod_odk = false; + bool invoke_odk = false; //const uint8_t mods = get_mods() | get_oneshot_mods(); if (keycode == OS_ODK) { @@ -33,8 +33,7 @@ bool process_odk_layer(uint16_t keycode, keyrecord_t *record) { return true; } else if (keycode == PG_ODK) { - //mod_odk = true; - return true; + invoke_odk = true; } else if (IS_LAYER_ON(_ODK)) { switch (keycode) { @@ -50,19 +49,14 @@ bool process_odk_layer(uint16_t keycode, keyrecord_t *record) { return true; default: - mod_odk(); - //mod_odk = true; - //process_odk_layer(MOD_ODK, record); - // Don't use tap_code, it doesn't go through process_record. - // therefore it doesn't trigger the special behaviour of PG_ODK described above - //invoke_key(PG_ODK, record); + invoke_odk = true; } } -/* if (mod_odk) { + if (invoke_odk) { // Special behaviour of PG_ODK when shifted // Shift must apply to the next keycode - mod_odk = false; + //invoke_odk = false; bool is_shifted = false; if (mods & MOD_MASK_SHIFT) { @@ -76,31 +70,10 @@ bool process_odk_layer(uint16_t keycode, keyrecord_t *record) { if (is_shifted) { set_oneshot_mods(MOD_BIT(KC_LSFT)); // Don't use weak mods ! - is_shifted = false; + //is_shifted = false; } - if (keycode == MOD_ODK) { return false; } - } */ + if (keycode == PG_ODK) { return false; } + } } return true; -} - -void mod_odk(void) { - // Special behaviour of PG_ODK when shifted - // Shift must apply to the next keycode - bool is_shifted = false; - const uint8_t mods = get_mods() | get_weak_mods() | get_oneshot_mods(); - - if (mods & MOD_MASK_SHIFT) { - del_weak_mods(MOD_MASK_SHIFT); - del_oneshot_mods(MOD_MASK_SHIFT); - unregister_mods(MOD_MASK_SHIFT); - is_shifted = true; - } - - tap_code(PG_ODK); - - if (is_shifted) { - set_oneshot_mods(MOD_BIT(KC_LSFT)); // Don't use weak mods ! - is_shifted = false; - } } \ No newline at end of file diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.h b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.h index e18ee343..dad5bf25 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.h +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/odk_layer.h @@ -25,7 +25,6 @@ extern "C" { #endif bool process_odk_layer(uint16_t keycode, keyrecord_t *record); -void mod_odk(void); #ifdef __cplusplus } diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/os4a.c b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/os4a.c index 16a25edd..671ca35a 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/os4a.c +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features/os4a.c @@ -99,12 +99,12 @@ bool process_mods(uint16_t keycode, keyrecord_t *record) { if (IS_OS4A_KEY(keycode)) { return process_os4a_keys(keycode, record); } // Behaviour of the OS4A layers - if (os4a_layer != 0) { exit_os4a_layer = process_os4a_layers(keycode, record); } + if (record->event.pressed) { + if (os4a_layer != 0) { exit_os4a_layer = process_os4a_layers(keycode, record); } - // When Ctrl or Shift are released, for mouse use. - //if (mods_for_mouse(keycode)) { mouse_mods_key_up(keycode, record); } - - if (!record->event.pressed) { + } else { + // When Ctrl or Shift are released, for mouse use. + //if (mods_for_mouse(keycode)) { mouse_mods_key_up(keycode, record); } if (os4a_layer != 0 && exit_os4a_layer) { os4a_layer_off(os4a_layer); } } return true; diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features_conf.c b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features_conf.c index 4759c9d2..e8f6b9f1 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features_conf.c +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/features_conf.c @@ -205,7 +205,6 @@ uint8_t get_os4a_layer(uint16_t keycode) { bool os4a_layer_changer(uint16_t keycode) { switch (keycode) { case OS_FA: - //case OS_WMNT: case NUMWORD: case TG_FA: case OS_RSA: @@ -246,17 +245,20 @@ bool is_oneshot_cancel_key(uint16_t keycode) { } bool is_oneshot_ignored_key(uint16_t keycode) { - // On veut que la touche typo soit ignorée par tous les Callum mods sauf Alt-gr. - // Ça permet de transmettre les mods à la touche suivante, par ex pour faire Ctrl + K. - // Alt-gr et shift s'appliquent à la touche typo, pour permettre de faire les majuscules plus facilement ainsi que ] avec. - uint8_t mods = get_mods() | get_weak_mods() | get_oneshot_mods(); + + const uint8_t mods = get_mods() | get_weak_mods() | get_oneshot_mods(); //if (keycode == OS_ODK && (mods & ~(MOD_MASK_SHIFT | MOD_BIT(KC_ALGR)))) { return true; } + //if (keycode == OS_ODK && (mods & ~MOD_BIT(KC_ALGR))) { return true; } switch (keycode) { case OS_ODK: + // On veut que la touche typo soit ignorée par tous les Callum mods sauf Alt-gr. + // Ça permet de transmettre les mods à la touche suivante, par ex pour faire Ctrl + K. + // Alt-gr doit pouvoir s’appliquer à la touche typo, pour permettre de faire la touche morte "~" avec. + // OS_ODK ne doit être ignored_key que lorsqu’elle est employée avec Alt-gr + // sous peine de ne pas pouvoir faire shift + typo + touche de l'autre côté if (mods & ~MOD_BIT(KC_ALGR)) { return true; } break; - //case OS_ODK: /!\ A ne pas remettre, sous peine de ne pas pouvoir faire shift + typo + touche de l'autre côté case L_OS4A: case R_OS4A: case OS_SHFT: @@ -267,7 +269,6 @@ bool is_oneshot_ignored_key(uint16_t keycode) { case OS_FA: case NUMWORD: case TG_FA: - //case OS_WMNT: return true; /* default: return false; */ diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.c b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.c index 1fa16b6b..1372feca 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.c +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.c @@ -40,8 +40,8 @@ bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { if (record->event.key.col != next_record.event.key.col) { - // La ligne suivante n'est nécessaire que si on a besoin de doubler rapidement un caractère présent sur la moitié droite du clavier. - // Ce n'est pas nécessaire pour l'instant, vu que les guillemets sont passés à gauche. + // Permet de doubler rapidement un caractère présent sur la moitié droite du clavier. + // Fait également gagner pas mal de place sur le FW. if (keycode == OS_ODK) { return true; } if (forbidden_chord(keycode, record, next_keycode, &next_record)) { @@ -55,16 +55,11 @@ bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { return false; } -/* bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { - return !forbidden_chord(keycode, record, next_keycode, &next_record); -} */ - // Matrix scan void matrix_scan_user(void) { recent_keys_task(); - //swapper_task(); } diff --git a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.h b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.h index 7bdf6d19..4ff6636c 100644 --- a/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.h +++ b/keyboards/splitkb/kyria/rev1/base/keymaps/Kawamashi/keymap.h @@ -52,7 +52,6 @@ enum custom_keycodes { OS4A, RAZ, CAPSWORD, - MOD_ODK, OU_GRV, MAGIC, OS_SHFT,