diff --git a/server/src/main/java/com/genymobile/scrcpy/KeyComposition.java b/server/src/main/java/com/genymobile/scrcpy/KeyComposition.java index 2f2835c9..c87de2cd 100644 --- a/server/src/main/java/com/genymobile/scrcpy/KeyComposition.java +++ b/server/src/main/java/com/genymobile/scrcpy/KeyComposition.java @@ -19,7 +19,9 @@ public final class KeyComposition { private static final String KEY_DEAD_ACUTE = "\u0301"; private static final String KEY_DEAD_CIRCUMFLEX = "\u0302"; private static final String KEY_DEAD_TILDE = "\u0303"; + private static final String KEY_DEAD_DOTABOVE = "\u0307"; private static final String KEY_DEAD_UMLAUT = "\u0308"; + private static final String KEY_DEAD_OGONEK = "\u0328"; private static final Map COMPOSITION_MAP = createDecompositionMap(); @@ -51,6 +53,14 @@ public final class KeyComposition { return KEY_DEAD_UMLAUT + c; } + private static String dotabove(char c) { + return KEY_DEAD_DOTABOVE + c; + } + + private static String ogonek(char c) { + return KEY_DEAD_OGONEK + c; + } + private static Map createDecompositionMap() { Map map = new HashMap<>(); map.put('À', grave('A')); @@ -169,6 +179,57 @@ public final class KeyComposition { map.put('ẍ', umlaut('x')); map.put('ẗ', umlaut('t')); + map.put('Ȧ', dotabove('A')); + map.put('Ḃ', dotabove('B')); + map.put('Ċ', dotabove('C')); + map.put('Ḋ', dotabove('D')); + map.put('Ė', dotabove('E')); + map.put('Ḟ', dotabove('F')); + map.put('Ġ', dotabove('G')); + map.put('Ḣ', dotabove('H')); + map.put('İ', dotabove('I')); + map.put('Ṁ', dotabove('M')); + map.put('Ṅ', dotabove('N')); + map.put('Ȯ', dotabove('O')); + map.put('Ṗ', dotabove('P')); + map.put('Ṙ', dotabove('R')); + map.put('Ṡ', dotabove('S')); + map.put('Ṫ', dotabove('T')); + map.put('Ẇ', dotabove('W')); + map.put('Ẋ', dotabove('X')); + map.put('Ẏ', dotabove('Y')); + map.put('Ż', dotabove('Z')); + map.put('ȧ', dotabove('a')); + map.put('ḃ', dotabove('b')); + map.put('ċ', dotabove('c')); + map.put('ḋ', dotabove('d')); + map.put('ė', dotabove('e')); + map.put('ḟ', dotabove('f')); + map.put('ġ', dotabove('g')); + map.put('ḣ', dotabove('h')); + map.put('ṁ', dotabove('m')); + map.put('ṅ', dotabove('n')); + map.put('ȯ', dotabove('o')); + map.put('ṗ', dotabove('p')); + map.put('ṙ', dotabove('r')); + map.put('ṡ', dotabove('s')); + map.put('ṫ', dotabove('t')); + map.put('ẇ', dotabove('w')); + map.put('ẋ', dotabove('x')); + map.put('ẏ', dotabove('y')); + map.put('ż', dotabove('z')); + + map.put('Ą', ogonek('A')); + map.put('Ę', ogonek('E')); + map.put('Į', ogonek('I')); + map.put('Ǫ', ogonek('O')); + map.put('Ų', ogonek('U')); + map.put('ą', ogonek('a')); + map.put('ę', ogonek('e')); + map.put('į', ogonek('i')); + map.put('ǫ', ogonek('o')); + map.put('ų', ogonek('u')); + return map; } }