fix: GP requrements (#2312)

This commit is contained in:
NickVs2015
2026-03-06 12:05:16 +03:00
committed by GitHub
parent aea8ff4961
commit 83d045af64

View File

@@ -303,91 +303,31 @@ class AmneziaActivity : QtActivity() {
} }
override fun dispatchKeyEvent(event: KeyEvent): Boolean { override fun dispatchKeyEvent(event: KeyEvent): Boolean {
val deviceId = event.deviceId
val keyCode = event.keyCode val keyCode = event.keyCode
val pressed = event.action == KeyEvent.ACTION_DOWN val pressed = event.action == KeyEvent.ACTION_DOWN
val source = event.source
if (deviceId < 0 && pressed) { when (keyCode) {
when (keyCode) { KeyEvent.KEYCODE_BUTTON_A,
KeyEvent.KEYCODE_BUTTON_A, KeyEvent.KEYCODE_BUTTON_B,
KeyEvent.KEYCODE_BUTTON_B, KeyEvent.KEYCODE_BUTTON_X,
KeyEvent.KEYCODE_BUTTON_X, KeyEvent.KEYCODE_BUTTON_Y,
KeyEvent.KEYCODE_BUTTON_Y, KeyEvent.KEYCODE_BUTTON_START,
KeyEvent.KEYCODE_BUTTON_START, KeyEvent.KEYCODE_BUTTON_SELECT -> {
KeyEvent.KEYCODE_BUTTON_SELECT -> { nativeGamepadKeyEvent(0, keyCode, pressed)
nativeGamepadKeyEvent(0, keyCode, true) return true
nativeGamepadKeyEvent(0, keyCode, false) }
return true KeyEvent.KEYCODE_DPAD_CENTER,
} KeyEvent.KEYCODE_DPAD_UP,
KeyEvent.KEYCODE_DPAD_CENTER -> { KeyEvent.KEYCODE_DPAD_DOWN,
if (isOnTv()) { KeyEvent.KEYCODE_DPAD_LEFT,
val down = KeyEvent( KeyEvent.KEYCODE_DPAD_RIGHT -> {
event.downTime, val syntheticKeyCode = if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) KeyEvent.KEYCODE_ENTER else keyCode
event.eventTime, val synthetic = KeyEvent(
KeyEvent.ACTION_DOWN, event.downTime, event.eventTime, event.action, syntheticKeyCode,
KeyEvent.KEYCODE_ENTER, event.repeatCount, event.metaState, -1, event.scanCode,
0, event.flags, InputDevice.SOURCE_KEYBOARD
event.metaState, )
0, return super.dispatchKeyEvent(synthetic)
event.scanCode,
event.flags,
event.source
)
val up = KeyEvent(
event.downTime,
event.eventTime,
KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_ENTER,
0,
event.metaState,
0,
event.scanCode,
event.flags,
event.source
)
super.dispatchKeyEvent(down)
super.dispatchKeyEvent(up)
return true
}
nativeGamepadKeyEvent(0, keyCode, true)
nativeGamepadKeyEvent(0, keyCode, false)
return true
}
}
}
// Real devices (remotes and gamepads) have deviceId >= 0.
if (deviceId >= 0) {
val isGamepad = (source and InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD
val isJoystick = (source and InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK
val isDpad = (source and InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD
if (isGamepad || isJoystick || isDpad) {
when (keyCode) {
KeyEvent.KEYCODE_BUTTON_A,
KeyEvent.KEYCODE_BUTTON_B,
KeyEvent.KEYCODE_BUTTON_X,
KeyEvent.KEYCODE_BUTTON_Y,
KeyEvent.KEYCODE_BUTTON_START,
KeyEvent.KEYCODE_BUTTON_SELECT,
KeyEvent.KEYCODE_DPAD_CENTER -> {
nativeGamepadKeyEvent(0, keyCode, pressed)
return true
}
KeyEvent.KEYCODE_DPAD_UP,
KeyEvent.KEYCODE_DPAD_DOWN,
KeyEvent.KEYCODE_DPAD_LEFT,
KeyEvent.KEYCODE_DPAD_RIGHT -> {
val synthetic = KeyEvent(
event.downTime, event.eventTime, event.action, event.keyCode,
event.repeatCount, event.metaState, -1, event.scanCode,
event.flags, InputDevice.SOURCE_KEYBOARD
)
return super.dispatchKeyEvent(synthetic)
}
}
return super.dispatchKeyEvent(event)
} }
} }