diff --git a/app/src/activity.c b/app/src/activity.c index 57ccaf9c..6a5151af 100644 --- a/app/src/activity.c +++ b/app/src/activity.c @@ -72,19 +72,21 @@ int activity_event_listener(const zmk_event_t *eh) { void activity_work_handler(struct k_work *work) { int32_t current = k_uptime_get(); int32_t inactive_time = current - activity_last_uptime; + #if IS_ENABLED(CONFIG_ZMK_SLEEP) - if (inactive_time > MAX_SLEEP_MS && !is_usb_power_present() + bool prevent_sleep = is_usb_power_present(); + #if IS_ENABLED(CONFIG_ZMK_NO_SLEEP_WHILE_BLE_CONNECTED) /* if user inactive and USB is not connected, * keyboard will sleep as soon as BLE is disconnected */ #if !IS_ENABLED(CONFIG_ZMK_SPLIT) || IS_ENABLED(CONFIG_ZMK_SPLIT_ROLE_CENTRAL) - && !zmk_ble_active_profile_is_connected() + prevent_sleep = prevent_sleep || zmk_ble_active_profile_is_connected(); #else - && !zmk_split_bt_peripheral_is_connected() + prevent_sleep = prevent_sleep || zmk_split_bt_peripheral_is_connected(); #endif #endif - ) { + if (inactive_time > MAX_SLEEP_MX && !prevent_sleep) { // Put devices in suspend power mode before sleeping set_state(ZMK_ACTIVITY_SLEEP);