Take the input device into account for meta state
Interesting nits about this:
- getMetaState(long) and getMetaState(long, int) do not
seem to be used anywhere in the framework. Maybe we
want to skip adding getMetaState(long, KeyEvent) and
getMetaState(long, int, KeyEvent).
- getMetaState(CharSequence, int) is used extensively
throughout the code. In some places, a KeyEvent is
available and should be considered - this change does
implement this. In many other cases, there is no
relevant KeyEvent for this action (for example,
Editor#extractTextInternal). In these cases, the
behavior is affected by the current latch state, so
it's fine to leave them as is.
Bug: 8303489
Change-Id: I4a948c497c49e48f83ba1048520e7fe5bfe84727
diff --git a/core/java/android/text/method/QwertyKeyListener.java b/core/java/android/text/method/QwertyKeyListener.java
index 98316ae..0bd46bc 100644
--- a/core/java/android/text/method/QwertyKeyListener.java
+++ b/core/java/android/text/method/QwertyKeyListener.java
@@ -108,7 +108,7 @@
// QWERTY keyboard normal case
- int i = event.getUnicodeChar(event.getMetaState() | getMetaState(content));
+ int i = event.getUnicodeChar(getMetaState(content, event));
if (!mFullKeyboard) {
int count = event.getRepeatCount();