summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Josep del Río <joseprio@google.com> 2024-02-16 19:03:43 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-02-16 19:03:43 +0000
commitbc1bf620bb60f50505f19e0d30c4c663fe27807e (patch)
tree6fb605c1da6cb1ee8caf4fa1abf07852220f7cfb
parent6014fdd8565e3dcad23d124aa71768c37db13e95 (diff)
parent2a721827b649cf18c5ff690674fad5bb6f6a348c (diff)
Merge "Support dead characters when key presses are shown" into main
-rw-r--r--core/java/android/view/KeyCharacterMap.java11
-rw-r--r--services/core/java/com/android/server/input/debug/FocusEventDebugView.java11
2 files changed, 21 insertions, 1 deletions
diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java
index 4fe53c2410f5..a8d4e2d2c70a 100644
--- a/core/java/android/view/KeyCharacterMap.java
+++ b/core/java/android/view/KeyCharacterMap.java
@@ -579,6 +579,17 @@ public class KeyCharacterMap implements Parcelable {
}
/**
+ * Get the combining character that corresponds with the provided accent.
+ *
+ * @param accent The accent character. eg. '`'
+ * @return The combining character
+ * @hide
+ */
+ public static int getCombiningChar(int accent) {
+ return sAccentToCombining.get(accent);
+ }
+
+ /**
* Describes the character mappings associated with a key.
*
* @deprecated instead use {@link KeyCharacterMap#getDisplayLabel(int)},
diff --git a/services/core/java/com/android/server/input/debug/FocusEventDebugView.java b/services/core/java/com/android/server/input/debug/FocusEventDebugView.java
index 6eec0dee9152..3ffd2e1dec71 100644
--- a/services/core/java/com/android/server/input/debug/FocusEventDebugView.java
+++ b/services/core/java/com/android/server/input/debug/FocusEventDebugView.java
@@ -34,6 +34,7 @@ import android.util.Slog;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.InputDevice;
+import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.RoundedCorner;
@@ -335,7 +336,15 @@ public class FocusEventDebugView extends RelativeLayout {
final int unicodeChar = event.getUnicodeChar();
if (unicodeChar != 0) {
- return new String(Character.toChars(unicodeChar));
+ if ((unicodeChar & KeyCharacterMap.COMBINING_ACCENT) != 0) {
+ // Show combining character
+ final int combiningChar = KeyCharacterMap.getCombiningChar(
+ unicodeChar & KeyCharacterMap.COMBINING_ACCENT_MASK);
+ // Return the Unicode dotted circle as part of the label as it is used is used to
+ // illustrate the effect of a combining marks
+ return "\u25cc" + String.valueOf((char) combiningChar);
+ }
+ return String.valueOf((char) unicodeChar);
}
final var label = KeyEvent.keyCodeToString(event.getKeyCode());