mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-06-20 01:38:37 +02:00
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.
This commit is contained in:
parent
75e6add091
commit
01bfe73fc7
@ -42,7 +42,7 @@ class KeyModifier
|
|||||||
case GRAVE: return apply_dead_char(k, '\u02CB');
|
case GRAVE: return apply_dead_char(k, '\u02CB');
|
||||||
case AIGU: return apply_dead_char(k, '\u00B4');
|
case AIGU: return apply_dead_char(k, '\u00B4');
|
||||||
case CIRCONFLEXE: return apply_dead_char(k, '\u02C6');
|
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 CEDILLE: return apply_dead_char(k, '\u00B8');
|
||||||
case TREMA: return apply_dead_char(k, '\u00A8');
|
case TREMA: return apply_dead_char(k, '\u00A8');
|
||||||
case CARON: return apply_dead_char(k, '\u02C7');
|
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)
|
private static KeyValue apply_combining(KeyValue k, String combining)
|
||||||
{
|
{
|
||||||
switch (k.getKind())
|
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 =
|
private static final Map_char map_char_double_aigu =
|
||||||
new Map_char() {
|
new Map_char() {
|
||||||
public char apply(char c)
|
public char apply(char c)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user