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();