diff options
| author | 2024-02-16 19:03:43 +0000 | |
|---|---|---|
| committer | 2024-02-16 19:03:43 +0000 | |
| commit | bc1bf620bb60f50505f19e0d30c4c663fe27807e (patch) | |
| tree | 6fb605c1da6cb1ee8caf4fa1abf07852220f7cfb | |
| parent | 6014fdd8565e3dcad23d124aa71768c37db13e95 (diff) | |
| parent | 2a721827b649cf18c5ff690674fad5bb6f6a348c (diff) | |
Merge "Support dead characters when key presses are shown" into main
| -rw-r--r-- | core/java/android/view/KeyCharacterMap.java | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/input/debug/FocusEventDebugView.java | 11 |
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()); |