@@ -37,6 +37,8 @@ import io.github.sds100.keymapper.common.utils.withFlag
3737import io.github.sds100.keymapper.data.Keys
3838import io.github.sds100.keymapper.data.PreferenceDefaults
3939import io.github.sds100.keymapper.data.repositories.PreferenceRepository
40+ import io.github.sds100.keymapper.sysbridge.manager.SystemBridgeConnectionManager
41+ import io.github.sds100.keymapper.sysbridge.manager.SystemBridgeConnectionState
4042import io.github.sds100.keymapper.system.airplanemode.AirplaneModeAdapter
4143import io.github.sds100.keymapper.system.apps.AppShortcutAdapter
4244import io.github.sds100.keymapper.system.apps.PackageManagerAdapter
@@ -47,6 +49,7 @@ import io.github.sds100.keymapper.system.display.DisplayAdapter
4749import io.github.sds100.keymapper.system.files.FileAdapter
4850import io.github.sds100.keymapper.system.files.FileUtils
4951import io.github.sds100.keymapper.system.inputevents.KeyEventUtils
52+ import io.github.sds100.keymapper.system.inputevents.Scancode
5053import io.github.sds100.keymapper.system.inputmethod.InputMethodAdapter
5154import io.github.sds100.keymapper.system.intents.IntentAdapter
5255import io.github.sds100.keymapper.system.intents.IntentTarget
@@ -102,6 +105,7 @@ class PerformActionsUseCaseImpl @AssistedInject constructor(
102105 private val ringtoneAdapter : RingtoneAdapter ,
103106 private val settingsRepository : PreferenceRepository ,
104107 private val inputEventHub : InputEventHub ,
108+ private val systemBridgeConnectionManager : SystemBridgeConnectionManager
105109) : PerformActionsUseCase {
106110
107111 @AssistedFactory
@@ -785,7 +789,22 @@ class PerformActionsUseCaseImpl @AssistedInject constructor(
785789 }
786790
787791 is ActionData .ScreenOnOff -> {
788- result = suAdapter.execute(" input keyevent ${KeyEvent .KEYCODE_POWER } " )
792+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .Q &&
793+ systemBridgeConnectionManager.connectionState.value is SystemBridgeConnectionState .Connected
794+ ) {
795+ val model = InjectKeyEventModel (
796+ keyCode = KeyEvent .KEYCODE_POWER ,
797+ action = KeyEvent .ACTION_DOWN ,
798+ metaState = 0 ,
799+ deviceId = - 1 ,
800+ scanCode = Scancode .KEY_POWER ,
801+ source = InputDevice .SOURCE_UNKNOWN
802+ )
803+ result = inputEventHub.injectKeyEvent(model)
804+ .then { inputEventHub.injectKeyEvent(model.copy(action = KeyEvent .ACTION_UP )) }
805+ } else {
806+ result = suAdapter.execute(" input keyevent ${KeyEvent .KEYCODE_POWER } " )
807+ }
789808 }
790809
791810 is ActionData .SecureLock -> {
0 commit comments