From e4bde3d1537e3c6b80afc74c98a7fd45fa921aa9 Mon Sep 17 00:00:00 2001 From: Jack Palevich Date: Sun, 14 Oct 2012 09:57:22 -0700 Subject: Change Alt-sends-esc behavior to allow phones to use Alt. Alt-sends-esc is no longer the default. The opposite of alt-sends-esc is to pass through Alt un-altered, which allows phone keyboards to use alt to provide extra characters. There's no longer any way to have Alt set the high bit. --- .../jackpal/androidterm/emulatorview/EmulatorView.java | 3 ++- .../jackpal/androidterm/emulatorview/TermKeyListener.java | 15 +++++++++------ res/values/defaults.xml | 2 +- res/values/strings.xml | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libraries/emulatorview/src/jackpal/androidterm/emulatorview/EmulatorView.java b/libraries/emulatorview/src/jackpal/androidterm/emulatorview/EmulatorView.java index 94b9c92..80353d5 100644 --- a/libraries/emulatorview/src/jackpal/androidterm/emulatorview/EmulatorView.java +++ b/libraries/emulatorview/src/jackpal/androidterm/emulatorview/EmulatorView.java @@ -1028,12 +1028,13 @@ public class EmulatorView extends View implements GestureDetector.OnGestureListe @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (sTrapAltAndMeta) { + boolean altEsc = mKeyListener.getAltSendsEsc(); boolean altOn = (event.getMetaState() & KeyEvent.META_ALT_ON) != 0; boolean metaOn = (event.getMetaState() & KeyEvent.META_META_ON) != 0; boolean altPressed = (keyCode == KeyEvent.KEYCODE_ALT_LEFT) || (keyCode == KeyEvent.KEYCODE_ALT_RIGHT); boolean altActive = mKeyListener.isAltActive(); - if (altOn || altPressed || altActive || metaOn) { + if (altEsc && (altOn || altPressed || altActive || metaOn)) { if (event.getAction() == KeyEvent.ACTION_DOWN) { return onKeyDown(keyCode, event); } else { diff --git a/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TermKeyListener.java b/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TermKeyListener.java index 506cc36..9d6ed1e 100644 --- a/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TermKeyListener.java +++ b/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TermKeyListener.java @@ -13,6 +13,8 @@ import android.view.KeyEvent; * the current state of the alt, shift, and control keys. */ class TermKeyListener { + /** Disabled for now because it interferes with ALT processing on phones with physical keyboards. */ + private boolean SUPPORT_8_BIT_META = false; /** * Android key codes that are defined in the Android 2.3 API. * We want to recognize these codes, because they will be sent to our @@ -843,25 +845,26 @@ class TermKeyListener { if (mAltSendsEsc) { mTermSession.write(new byte[]{0x1b},0,1); effectiveMetaState &= ~KeyEvent.META_ALT_MASK; - } else { - // Legacy behavior: Pass Alt through to allow composing characters. - // effectiveMetaState |= KeyEvent.META_ALT_ON; + } else if (SUPPORT_8_BIT_META) { setHighBit = true; effectiveMetaState &= ~KeyEvent.META_ALT_MASK; + } else { + // Legacy behavior: Pass Alt through to allow composing characters. } } // Note: The Hacker keyboard IME key labeled Alt actually sends Meta. - // Either send an ESC, or set the high bit of the character. if ((metaState & KeyEvent.META_META_ON) != 0) { if (mAltSendsEsc) { mTermSession.write(new byte[]{0x1b},0,1); effectiveMetaState &= ~KeyEvent.META_META_MASK; } else { - setHighBit = true; - effectiveMetaState &= ~KeyEvent.META_META_MASK; + if (SUPPORT_8_BIT_META) { + setHighBit = true; + effectiveMetaState &= ~KeyEvent.META_META_MASK; + } } } result = event.getUnicodeChar(effectiveMetaState); diff --git a/res/values/defaults.xml b/res/values/defaults.xml index 1ccc579..67287b2 100644 --- a/res/values/defaults.xml +++ b/res/values/defaults.xml @@ -12,7 +12,7 @@ 5 4 0 - true + false /system/bin/sh - screen diff --git a/res/values/strings.xml b/res/values/strings.xml index 8d3022d..f1464e9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -147,6 +147,6 @@ Alt key sends ESC Alt key sends ESC. - Alt key sets high bit. + Alt key does not send ESC. -- cgit v1.2.3