Skip to content

Commit 69b2be1

Browse files
author
Jeff Brown
committed
Add yet more keyboard layouts.
Bug: 6110399 Change-Id: I8e2ce1cd350dddb006df51286e127dce65a8117f
1 parent 1fa1de5 commit 69b2be1

18 files changed

+5014
-13
lines changed

core/java/android/view/KeyCharacterMap.java

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,20 +153,26 @@ public class KeyCharacterMap implements Parcelable {
153153
private static final int ACCENT_BREVE = '\u02D8';
154154
private static final int ACCENT_CARON = '\u02C7';
155155
private static final int ACCENT_CEDILLA = '\u00B8';
156+
private static final int ACCENT_CIRCUMFLEX = '\u02C6';
156157
private static final int ACCENT_COMMA_ABOVE = '\u1FBD';
157158
private static final int ACCENT_COMMA_ABOVE_RIGHT = '\u02BC';
158159
private static final int ACCENT_DOT_ABOVE = '\u02D9';
160+
private static final int ACCENT_DOT_BELOW = '.'; // approximate
159161
private static final int ACCENT_DOUBLE_ACUTE = '\u02DD';
160162
private static final int ACCENT_GRAVE = '\u02CB';
161-
private static final int ACCENT_CIRCUMFLEX = '\u02C6';
163+
private static final int ACCENT_HOOK_ABOVE = '\u02C0';
164+
private static final int ACCENT_HORN = '\''; // approximate
162165
private static final int ACCENT_MACRON = '\u00AF';
163166
private static final int ACCENT_MACRON_BELOW = '\u02CD';
164167
private static final int ACCENT_OGONEK = '\u02DB';
165168
private static final int ACCENT_REVERSED_COMMA_ABOVE = '\u02BD';
166169
private static final int ACCENT_RING_ABOVE = '\u02DA';
170+
private static final int ACCENT_STROKE = '-'; // approximate
167171
private static final int ACCENT_TILDE = '\u02DC';
168172
private static final int ACCENT_TURNED_COMMA_ABOVE = '\u02BB';
169173
private static final int ACCENT_UMLAUT = '\u00A8';
174+
private static final int ACCENT_VERTICAL_LINE_ABOVE = '\u02C8';
175+
private static final int ACCENT_VERTICAL_LINE_BELOW = '\u02CC';
170176

171177
/* Legacy dead key display characters used in previous versions of the API.
172178
* We still support these characters by mapping them to their non-legacy version. */
@@ -188,11 +194,11 @@ public class KeyCharacterMap implements Parcelable {
188194
addCombining('\u0306', ACCENT_BREVE);
189195
addCombining('\u0307', ACCENT_DOT_ABOVE);
190196
addCombining('\u0308', ACCENT_UMLAUT);
191-
//addCombining('\u0309', ACCENT_HOOK_ABOVE);
197+
addCombining('\u0309', ACCENT_HOOK_ABOVE);
192198
addCombining('\u030A', ACCENT_RING_ABOVE);
193199
addCombining('\u030B', ACCENT_DOUBLE_ACUTE);
194200
addCombining('\u030C', ACCENT_CARON);
195-
//addCombining('\u030D', ACCENT_VERTICAL_LINE_ABOVE);
201+
addCombining('\u030D', ACCENT_VERTICAL_LINE_ABOVE);
196202
//addCombining('\u030E', ACCENT_DOUBLE_VERTICAL_LINE_ABOVE);
197203
//addCombining('\u030F', ACCENT_DOUBLE_GRAVE);
198204
//addCombining('\u0310', ACCENT_CANDRABINDU);
@@ -201,13 +207,14 @@ public class KeyCharacterMap implements Parcelable {
201207
addCombining('\u0313', ACCENT_COMMA_ABOVE);
202208
addCombining('\u0314', ACCENT_REVERSED_COMMA_ABOVE);
203209
addCombining('\u0315', ACCENT_COMMA_ABOVE_RIGHT);
204-
//addCombining('\u031B', ACCENT_HORN);
205-
//addCombining('\u0323', ACCENT_DOT_BELOW);
210+
addCombining('\u031B', ACCENT_HORN);
211+
addCombining('\u0323', ACCENT_DOT_BELOW);
206212
//addCombining('\u0326', ACCENT_COMMA_BELOW);
207213
addCombining('\u0327', ACCENT_CEDILLA);
208214
addCombining('\u0328', ACCENT_OGONEK);
209-
//addCombining('\u0329', ACCENT_VERTICAL_LINE_BELOW);
215+
addCombining('\u0329', ACCENT_VERTICAL_LINE_BELOW);
210216
addCombining('\u0331', ACCENT_MACRON_BELOW);
217+
addCombining('\u0335', ACCENT_STROKE);
211218
//addCombining('\u0342', ACCENT_PERISPOMENI);
212219
//addCombining('\u0344', ACCENT_DIALYTIKA_TONOS);
213220
//addCombining('\u0345', ACCENT_YPOGEGRAMMENI);
@@ -235,6 +242,33 @@ private static void addCombining(int combining, int accent) {
235242
*/
236243
private static final SparseIntArray sDeadKeyCache = new SparseIntArray();
237244
private static final StringBuilder sDeadKeyBuilder = new StringBuilder();
245+
static {
246+
// Non-standard decompositions.
247+
// Stroke modifier for Finnish multilingual keyboard and others.
248+
addDeadKey(ACCENT_STROKE, 'D', '\u0110');
249+
addDeadKey(ACCENT_STROKE, 'G', '\u01e4');
250+
addDeadKey(ACCENT_STROKE, 'H', '\u0126');
251+
addDeadKey(ACCENT_STROKE, 'I', '\u0197');
252+
addDeadKey(ACCENT_STROKE, 'L', '\u0141');
253+
addDeadKey(ACCENT_STROKE, 'O', '\u00d8');
254+
addDeadKey(ACCENT_STROKE, 'T', '\u0166');
255+
addDeadKey(ACCENT_STROKE, 'd', '\u0111');
256+
addDeadKey(ACCENT_STROKE, 'g', '\u01e5');
257+
addDeadKey(ACCENT_STROKE, 'h', '\u0127');
258+
addDeadKey(ACCENT_STROKE, 'i', '\u0268');
259+
addDeadKey(ACCENT_STROKE, 'l', '\u0142');
260+
addDeadKey(ACCENT_STROKE, 'o', '\u00f8');
261+
addDeadKey(ACCENT_STROKE, 't', '\u0167');
262+
}
263+
264+
private static void addDeadKey(int accent, int c, int result) {
265+
final int combining = sAccentToCombining.get(accent);
266+
if (combining == 0) {
267+
throw new IllegalStateException("Invalid dead key declaration.");
268+
}
269+
final int combination = (combining << 16) | c;
270+
sDeadKeyCache.put(combination, result);
271+
}
238272

239273
public static final Parcelable.Creator<KeyCharacterMap> CREATOR =
240274
new Parcelable.Creator<KeyCharacterMap>() {

0 commit comments

Comments
 (0)