From 90e6260d5e05211ec3e6dfeb9e6e631b56062281 Mon Sep 17 00:00:00 2001 From: Edontin <1924446+Edontin@users.noreply.github.com> Date: Sat, 26 Jan 2019 22:31:55 +1100 Subject: [PATCH] Allow the user to disable virtual key emulation. Use volume-keys=volume within termux.properties to disable. --- app/src/main/java/com/termux/app/TermuxPreferences.java | 2 ++ app/src/main/java/com/termux/app/TermuxViewClient.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/termux/app/TermuxPreferences.java b/app/src/main/java/com/termux/app/TermuxPreferences.java index f6095837..1fbac2b7 100644 --- a/app/src/main/java/com/termux/app/TermuxPreferences.java +++ b/app/src/main/java/com/termux/app/TermuxPreferences.java @@ -66,6 +66,7 @@ final class TermuxPreferences { int mBellBehaviour = BELL_VIBRATE; boolean mBackIsEscape; + boolean mDisableVolumeVirtualKeys; boolean mShowExtraKeys; String[][] mExtraKeys; @@ -198,6 +199,7 @@ final class TermuxPreferences { } mBackIsEscape = "escape".equals(props.getProperty("back-key", "back")); + mDisableVolumeVirtualKeys = "volume".equals(props.getProperty("volume-keys", "virtual")); shortcuts.clear(); parseAction("shortcut.create-session", SHORTCUT_ACTION_CREATE_SESSION, props); diff --git a/app/src/main/java/com/termux/app/TermuxViewClient.java b/app/src/main/java/com/termux/app/TermuxViewClient.java index 0b8aee23..3dcc406c 100644 --- a/app/src/main/java/com/termux/app/TermuxViewClient.java +++ b/app/src/main/java/com/termux/app/TermuxViewClient.java @@ -264,7 +264,9 @@ public final class TermuxViewClient implements TerminalViewClient { /** Handle dedicated volume buttons as virtual keys if applicable. */ private boolean handleVirtualKeys(int keyCode, KeyEvent event, boolean down) { InputDevice inputDevice = event.getDevice(); - if (inputDevice != null && inputDevice.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) { + if (mActivity.mSettings.mDisableVolumeVirtualKeys) { + return false; + } else if (inputDevice != null && inputDevice.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) { // Do not steal dedicated buttons from a full external keyboard. return false; } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {