diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 3cbe82e8b6b97..6987e0987c24d 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -4421,14 +4421,12 @@ public final class ViewRootImpl implements ViewParent, int groupNavigationDirection = 0; - if (event.getAction() == KeyEvent.ACTION_DOWN && event.isCtrlPressed()) { - final int character = - event.getUnicodeChar(event.getMetaState() & ~KeyEvent.META_CTRL_MASK); - if (character == '+') { + if (event.getAction() == KeyEvent.ACTION_DOWN + && event.getKeyCode() == KeyEvent.KEYCODE_TAB) { + if (KeyEvent.metaStateHasModifiers(event.getMetaState(), KeyEvent.META_META_ON)) { groupNavigationDirection = View.FOCUS_FORWARD; - } - - if (character == '_') { + } else if (KeyEvent.metaStateHasModifiers(event.getMetaState(), + KeyEvent.META_META_ON | KeyEvent.META_SHIFT_ON)) { groupNavigationDirection = View.FOCUS_BACKWARD; } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index c25ad468cf098..ab9fc69101755 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3563,6 +3563,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { dispatchDirectAudioEvent(event); return -1; } + } else if (keyCode == KeyEvent.KEYCODE_TAB && event.isMetaPressed()) { + // Pass through keyboard navigation keys. + return 0; } // Toggle Caps Lock on META-ALT.