diff options
| author | Jules Aguillon | 2023-06-04 23:07:35 +0200 |
|---|---|---|
| committer | Jules Aguillon | 2023-06-04 23:07:35 +0200 |
| commit | 01bfe73fc7a89406d1296979d05122d67427f2d6 (patch) | |
| tree | 52dd8e8c8e820bb25fcb0050163cb6ef717c52be /srcs/juloo.keyboard2/KeyModifier.java | |
| parent | 75e6add0912ee8ef23e8d0560c399d7fa42eadbc (diff) | |
| download | unexpected-keyboard-01bfe73fc7a89406d1296979d05122d67427f2d6.tar.gz unexpected-keyboard-01bfe73fc7a89406d1296979d05122d67427f2d6.zip | |
Explicitly map dead key for ñ
`KeyCharacterMap.getDeadChar` seems to not give the expected result on
Android 4.0. This might affect many more dead key combinations that are
not fixed by this commit.
Diffstat (limited to 'srcs/juloo.keyboard2/KeyModifier.java')
| -rw-r--r-- | srcs/juloo.keyboard2/KeyModifier.java | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java index d9b5a47..ac67c91 100644 --- a/srcs/juloo.keyboard2/KeyModifier.java +++ b/srcs/juloo.keyboard2/KeyModifier.java @@ -42,7 +42,7 @@ class KeyModifier case GRAVE: return apply_dead_char(k, '\u02CB'); case AIGU: return apply_dead_char(k, '\u00B4'); case CIRCONFLEXE: return apply_dead_char(k, '\u02C6'); - case TILDE: return apply_dead_char(k, '\u02DC'); + case TILDE: return apply_map_or_dead_char(k, map_char_tilde, '\u02DC'); case CEDILLE: return apply_dead_char(k, '\u00B8'); case TREMA: return apply_dead_char(k, '\u00A8'); case CARON: return apply_dead_char(k, '\u02C7'); @@ -107,6 +107,21 @@ class KeyModifier } } + /** Apply a [Map_char] or fallback to [apply_dead_char]. */ + private static KeyValue apply_map_or_dead_char(KeyValue k, Map_char map, char dead_char) + { + switch (k.getKind()) + { + case Char: + char kc = k.getChar(); + char c = map.apply(kc); + if (kc == c) + return apply_dead_char(k, dead_char); + return k.withChar(c); + default: return k; + } + } + private static KeyValue apply_combining(KeyValue k, String combining) { switch (k.getKind()) @@ -459,6 +474,18 @@ class KeyModifier } } + private static final Map_char map_char_tilde = + new Map_char() { + public char apply(char c) + { + switch (c) + { + case 'n': return 'ñ'; + default: return c; + } + } + }; + private static final Map_char map_char_double_aigu = new Map_char() { public char apply(char c) |
