From cc4e1e20de199fe7f73ef8e69f08aa4fd30568d4 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Mon, 25 May 2020 03:13:18 +0200 Subject: [PATCH] Add more convenience methods for injection Expose methods to inject key events and key codes with an additional parameter to specify the "mode" (async, wait for finish, wait for result). --- .../main/java/com/genymobile/scrcpy/Device.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/genymobile/scrcpy/Device.java b/server/src/main/java/com/genymobile/scrcpy/Device.java index 349486c3..3a98ebd2 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Device.java +++ b/server/src/main/java/com/genymobile/scrcpy/Device.java @@ -167,15 +167,23 @@ public final class Device { return injectEvent(event, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC); } - public boolean injectKeyEvent(int action, int keyCode, int repeat, int metaState) { + public boolean injectKeyEvent(int action, int keyCode, int repeat, int metaState, int mode) { long now = SystemClock.uptimeMillis(); KeyEvent event = new KeyEvent(now, now, action, keyCode, repeat, metaState, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, 0, InputDevice.SOURCE_KEYBOARD); - return injectEvent(event); + return injectEvent(event, mode); + } + + public boolean injectKeyEvent(int action, int keyCode, int repeat, int metaState) { + return injectKeyEvent(action, keyCode, repeat, metaState, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC); + } + + public boolean injectKeycode(int keyCode, int mode) { + return injectKeyEvent(KeyEvent.ACTION_DOWN, keyCode, 0, 0) && injectKeyEvent(KeyEvent.ACTION_UP, keyCode, 0, 0, mode); } public boolean injectKeycode(int keyCode) { - return injectKeyEvent(KeyEvent.ACTION_DOWN, keyCode, 0, 0) && injectKeyEvent(KeyEvent.ACTION_UP, keyCode, 0, 0); + return injectKeycode(keyCode, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC); } public boolean isScreenOn() {