From 8474d71a03c4d327e15f03ddad70dc42ef573543 Mon Sep 17 00:00:00 2001 From: Ronald Y Date: Sun, 18 Feb 2024 14:40:58 +0800 Subject: [PATCH] meta-key --- .../termux/extrakeys/ExtraKeysView.java | 1 + .../termux/extrakeys/SpecialButton.java | 1 + .../termux/x11/utils/TermuxX11ExtraKeys.java | 24 +++++++++++++++---- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/termux/shared/termux/extrakeys/ExtraKeysView.java b/app/src/main/java/com/termux/shared/termux/extrakeys/ExtraKeysView.java index 4958cf2c3..9fda1b3a7 100644 --- a/app/src/main/java/com/termux/shared/termux/extrakeys/ExtraKeysView.java +++ b/app/src/main/java/com/termux/shared/termux/extrakeys/ExtraKeysView.java @@ -273,6 +273,7 @@ public Map getDefaultSpecialButtons(ExtraKeys put(SpecialButton.CTRL, new SpecialButtonState(extraKeysView)); put(SpecialButton.ALT, new SpecialButtonState(extraKeysView)); put(SpecialButton.SHIFT, new SpecialButtonState(extraKeysView)); + put(SpecialButton.META, new SpecialButtonState(extraKeysView)); put(SpecialButton.FN, new SpecialButtonState(extraKeysView)); }}; } diff --git a/app/src/main/java/com/termux/shared/termux/extrakeys/SpecialButton.java b/app/src/main/java/com/termux/shared/termux/extrakeys/SpecialButton.java index 382377b4b..6cb30528f 100644 --- a/app/src/main/java/com/termux/shared/termux/extrakeys/SpecialButton.java +++ b/app/src/main/java/com/termux/shared/termux/extrakeys/SpecialButton.java @@ -12,6 +12,7 @@ public class SpecialButton { public static final SpecialButton CTRL = new SpecialButton("CTRL"); public static final SpecialButton ALT = new SpecialButton("ALT"); public static final SpecialButton SHIFT = new SpecialButton("SHIFT"); + public static final SpecialButton META = new SpecialButton("META"); public static final SpecialButton FN = new SpecialButton("FN"); /** The special button key. */ diff --git a/app/src/main/java/com/termux/x11/utils/TermuxX11ExtraKeys.java b/app/src/main/java/com/termux/x11/utils/TermuxX11ExtraKeys.java index 8bdd4f115..8097ee69b 100644 --- a/app/src/main/java/com/termux/x11/utils/TermuxX11ExtraKeys.java +++ b/app/src/main/java/com/termux/x11/utils/TermuxX11ExtraKeys.java @@ -40,6 +40,7 @@ public class TermuxX11ExtraKeys implements ExtraKeysView.IExtraKeysView { private boolean ctrlDown; private boolean altDown; private boolean shiftDown; + private boolean metaDown; /** Defines the key for extra keys */ public static final String DEFAULT_IVALUE_EXTRA_KEYS = "[['ESC','/',{key: '-', popup: '|'},'HOME','UP','END','PGUP'], ['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]"; // Double row @@ -61,6 +62,7 @@ public void onExtraKeyButtonClick(View view, ExtraKeyButton buttonInfo, Button b boolean ctrlDown = false; boolean altDown = false; boolean shiftDown = false; + boolean metaDown = false; boolean fnDown = false; for (String key : keys) { if (SpecialButton.CTRL.getKey().equals(key)) { @@ -69,22 +71,25 @@ public void onExtraKeyButtonClick(View view, ExtraKeyButton buttonInfo, Button b altDown = true; } else if (SpecialButton.SHIFT.getKey().equals(key)) { shiftDown = true; + } else if (SpecialButton.META.getKey().equals(key)) { + metaDown = true; } else if (SpecialButton.FN.getKey().equals(key)) { fnDown = true; } else { ctrlDown = false; altDown = false; shiftDown = false; + metaDown = false; fnDown = false; } - onLorieExtraKeyButtonClick(view, key, ctrlDown, altDown, shiftDown, fnDown); + onLorieExtraKeyButtonClick(view, key, ctrlDown, altDown, shiftDown, metaDown, fnDown); } } else { - onLorieExtraKeyButtonClick(view, buttonInfo.key, false, false, false, false); + onLorieExtraKeyButtonClick(view, buttonInfo.key, false, false, false, false, false); } } - protected void onTerminalExtraKeyButtonClick(@SuppressWarnings("unused") View view, String key, boolean ctrlDown, boolean altDown, boolean shiftDown, @SuppressWarnings("unused") boolean fnDown) { + protected void onTerminalExtraKeyButtonClick(@SuppressWarnings("unused") View view, String key, boolean ctrlDown, boolean altDown, boolean shiftDown, boolean metaDown, @SuppressWarnings("unused") boolean fnDown) { if (this.ctrlDown != ctrlDown) { this.ctrlDown = ctrlDown; mActivity.getLorieView().sendKeyEvent(0, KeyEvent.KEYCODE_CTRL_LEFT, ctrlDown); @@ -100,6 +105,11 @@ protected void onTerminalExtraKeyButtonClick(@SuppressWarnings("unused") View vi mActivity.getLorieView().sendKeyEvent(0, KeyEvent.KEYCODE_SHIFT_LEFT, shiftDown); } + if (this.metaDown != metaDown) { + this.metaDown = metaDown; + mActivity.getLorieView().sendKeyEvent(0, KeyEvent.KEYCODE_META_LEFT, metaDown); + } + if (PRIMARY_KEY_CODES_FOR_STRINGS.containsKey(key)) { Integer keyCode = PRIMARY_KEY_CODES_FOR_STRINGS.get(key); if (keyCode == null) return; @@ -129,6 +139,10 @@ public boolean performExtraKeyButtonHapticFeedback(View view, ExtraKeyButton but pressed = Boolean.TRUE.equals(mExtraKeysView.readSpecialButton(SpecialButton.SHIFT, false)); mActivity.getLorieView().sendKeyEvent(0, KeyEvent.KEYCODE_SHIFT_LEFT, pressed); break; + case "META": + pressed = Boolean.TRUE.equals(mExtraKeysView.readSpecialButton(SpecialButton.META, false)); + mActivity.getLorieView().sendKeyEvent(0, KeyEvent.KEYCODE_META_LEFT, pressed); + break; } }, 100); @@ -150,7 +164,7 @@ private ViewPager getToolbarViewPager() { } @SuppressLint("RtlHardcoded") - public void onLorieExtraKeyButtonClick(View view, String key, boolean ctrlDown, boolean altDown, boolean shiftDown, boolean fnDown) { + public void onLorieExtraKeyButtonClick(View view, String key, boolean ctrlDown, boolean altDown, boolean shiftDown, boolean metaDown, boolean fnDown) { if ("KEYBOARD".equals(key)) { if (getToolbarViewPager()!=null) { getToolbarViewPager().requestFocus(); @@ -168,7 +182,7 @@ public void onLorieExtraKeyButtonClick(View view, String key, boolean ctrlDown, if (!TextUtils.isEmpty(pasted)) paste(pasted); } } else { - onTerminalExtraKeyButtonClick(view, key, ctrlDown, altDown, shiftDown, fnDown); + onTerminalExtraKeyButtonClick(view, key, ctrlDown, altDown, shiftDown, metaDown, fnDown); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e1129a0be..ec4cc968e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,7 +36,7 @@ Not connected    Help       Preferences    - Here you can set value of extra-keys variable like in Termux app. Read this. + Here you can set value of extra-keys variable like in Termux app (read this) and more (e.g. META). Put empty string for the default value.