diff options
author | adophoxia <[email protected]> | 2025-07-07 22:52:55 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2025-07-07 23:52:55 -0600 |
commit | bf28a303c6cc66ce06fb30c6de01c0986c808311 (patch) | |
tree | 845cc5eef3ac0cdff588e5f4b297565d9280257b | |
parent | e814bb94538f9226d87c8366648d3831e88180d0 (diff) | |
download | qmk_firmware-bf28a303c6cc66ce06fb30c6de01c0986c808311.tar.gz qmk_firmware-bf28a303c6cc66ce06fb30c6de01c0986c808311.zip |
Keychron C3 Pro `c3_pro.c` corrections (#25049)
* Update `c3_pro.c`
* Redo layer switching logic; will default back to 0 if EEPROM reset
* Update keyboards/keychron/c3_pro/c3_pro.c
Co-authored-by: Joel Challis <[email protected]>
* Re-re-did layer switching logic
* Update GPIO control functions
* Apply suggestions from code review
Co-authored-by: Joel Challis <[email protected]>
---------
Co-authored-by: Joel Challis <[email protected]>
-rw-r--r-- | keyboards/keychron/c3_pro/c3_pro.c | 71 |
1 files changed, 30 insertions, 41 deletions
diff --git a/keyboards/keychron/c3_pro/c3_pro.c b/keyboards/keychron/c3_pro/c3_pro.c index 905eb86f5a..0c584b0938 100644 --- a/keyboards/keychron/c3_pro/c3_pro.c +++ b/keyboards/keychron/c3_pro/c3_pro.c @@ -16,6 +16,26 @@ #include "c3_pro.h" +void keyboard_post_init_kb(void) { + gpio_set_pin_output_push_pull(LED_MAC_OS_PIN); + gpio_set_pin_output_push_pull(LED_WIN_OS_PIN); + gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE); + + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + if (get_highest_layer(default_layer_state) == 0) { + gpio_write_pin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE); + } + if (get_highest_layer(default_layer_state) == 2) { + gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE); + } +} + bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if (!process_record_user(keycode, record)) { return false; @@ -61,9 +81,12 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { #endif case KC_OSSW: if (record->event.pressed) { - default_layer_xor(1U << 0); - default_layer_xor(1U << 2); - eeconfig_update_default_layer(default_layer_state); + // Switches default layer between `MAC_BASE` and `WIN_BASE` (0 and 2) + if (get_highest_layer(default_layer_state) == 2 ) { + set_single_persistent_default_layer(0); + } else { + set_single_persistent_default_layer(2); + } } return false; default: @@ -71,42 +94,8 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { } } -#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) - -bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { - if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { - return false; - } - // RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue); - - if (host_keyboard_led_state().caps_lock) { - RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255); - } else { - if (!rgb_matrix_get_flags()) { - RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0); - } - } - return true; -} - -#endif // RGB_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX - -#if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) - -bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { - if (!led_matrix_indicators_advanced_user(led_min, led_max)) { - return false; - } - - if (host_keyboard_led_state().caps_lock) { - led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255); - - } else { - if (!led_matrix_get_flags()) { - led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0); - } - } - return true; +void suspend_power_down_kb(void) { + gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE); + gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE); + suspend_power_down_user(); } - -#endif // LED_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX |