summaryrefslogtreecommitdiff
path: root/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
blob: 3c70d3266f1f26d8cc45e919f025decbda56ca48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.inputmethod.keyboard.layout;

import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
import com.android.inputmethod.latin.Constants;

import java.util.Locale;

/**
 * The Myanmar alphabet keyboard.
 */
public final class Myanmar extends LayoutBase {
    private static final String LAYOUT_NAME = "myanmar";

    public Myanmar(final LayoutCustomizer customizer) {
        super(customizer, Symbols.class, SymbolsShifted.class);
    }

    @Override
    public String getName() { return LAYOUT_NAME; }

    public static class MyanmarCustomizer extends LayoutCustomizer {
        public MyanmarCustomizer(final Locale locale) { super(locale); }

        @Override
        public int getNumberOfRows() { return 5; }

        @Override
        public ExpectedKey getAlphabetKey() { return MYANMAR_ALPHABET_KEY; }

        @Override
        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
        }

        @Override
        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
            // U+002C: "," COMMA
            // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
                    : joinKeys(key("\u104A", moreKey(","), SETTINGS_KEY));
        }

        @Override
        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
            // U+104B: "။" MYANMAR SIGN SECTION
            final ExpectedKey periodKey = key("\u104B", getPunctuationMoreKeys(isPhone));
            return joinKeys(periodKey);
        }

        @Override
        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
            return isPhone ? MYANMAR_PHONE_PUNCTUATION_MORE_KEYS
                    : MYANMAR_TABLET_PUNCTUATION_MORE_KEYS;
        }

        // U+1000: "က" MYANMAR LETTER KA
        // U+1001: "ခ" MYANMAR LETTER KHA
        // U+1002: "ဂ" MYANMAR LETTER GA
        private static final ExpectedKey MYANMAR_ALPHABET_KEY = key(
                "\u1000\u1001\u1002", Constants.CODE_SWITCH_ALPHA_SYMBOL);

        // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
        // Punctuation more keys for phone form factor.
        private static final ExpectedKey[] MYANMAR_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
                "\u104A", ".", "?", "!", "#", ")", "(", "/", ";",
                "...", "'", "@", ":", "-", "\"", "+", "%", "&");
        // Punctuation more keys for tablet form factor.
        private static final ExpectedKey[] MYANMAR_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
                ".", "'", "#", ")", "(", "/", ";", "@",
                "...", ":", "-", "\"", "+", "%", "&");
    }

    @Override
    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }

    @Override
    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
            final int elementId) {
        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
            return getCommonAlphabetLayout(isPhone);
        }
        return ALPHABET_SHIFTED_COMMON;
    }

    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
            .setKeysOfRow(1,
                    // U+1041: "၁" MYANMAR DIGIT ONE
                    key("\u1041", moreKey("1")),
                    // U+1042: "၂" MYANMAR DIGIT TWO
                    key("\u1042", moreKey("2")),
                    // U+1043: "၃" MYANMAR DIGIT THREE
                    key("\u1043", moreKey("3")),
                    // U+1044: "၄" MYANMAR DIGIT FOUR
                    key("\u1044", moreKey("4")),
                    // U+1045: "၅" MYANMAR DIGIT FIVE
                    key("\u1045", moreKey("5")),
                    // U+1046: "၆" MYANMAR DIGIT SIX
                    key("\u1046", moreKey("6")),
                    // U+1047: "၇" MYANMAR DIGIT SEVEN
                    key("\u1047", moreKey("7")),
                    // U+1048: "၈" MYANMAR DIGIT EIGHT
                    key("\u1048", moreKey("8")),
                    // U+1049: "၉" MYANMAR DIGIT NINE
                    key("\u1049", moreKey("9")),
                    // U+1040: "၀" MYANMAR DIGIT ZERO
                    key("\u1040", moreKey("0")))
            .setKeysOfRow(2,
                    // U+1006: "ဆ" MYANMAR LETTER CHA
                    // U+1039/U+1006: "္ဆ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CHA
                    key("\u1006", moreKey("\u1039\u1006")),
                    // U+1010: "တ" MYANMAR LETTER TA
                    // U+1039/U+1010: "္တ" MYANMAR SIGN VIRAMA/MYANMAR LETTER TA
                    key("\u1010", moreKey("\u1039\u1010")),
                    // U+1014: "န" MYANMAR LETTER NA
                    // U+1039/U+1014: "္န" MYANMAR SIGN VIRAMA/MYANMAR LETTER NA
                    key("\u1014", moreKey("\u1039\u1014")),
                    // U+1019: "မ" MYANMAR LETTER MA
                    // U+1039/U+1019: "္မ" MYANMAR SIGN VIRAMA/MYANMAR LETTER MA
                    key("\u1019", moreKey("\u1039\u1019")),
                    // U+1021: "အ" MYANMAR LETTER A
                    // U+1015: "ပ" MYANMAR LETTER PA
                    "\u1021", "\u1015",
                    // U+1000: "က" MYANMAR LETTER KA
                    // U+1039/U+1000: "္က" MYANMAR SIGN VIRAMA/MYANMAR LETTER KA
                    key("\u1000", moreKey("\u1039\u1000")),
                    // U+1004: "င" MYANMAR LETTER NGA
                    // U+101E: "သ" MYANMAR LETTER SA
                    "\u1004", "\u101E",
                    // U+1005: "စ" MYANMAR LETTER CA
                    // U+1039/U+1005: "္စ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CA
                    key("\u1005", moreKey("\u1039\u1005")))
            .setKeysOfRow(3,
                    // U+1031: "ေ" MYANMAR VOWEL SIGN E
                    // U+103B: "ျ" MYANMAR CONSONANT SIGN MEDIAL YA
                    // U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA
                    "\u1031", "\u103B", "\u103C",
                    // U+103D: "ွ" MYANMAR CONSONANT SIGN MEDIAL WA
                    // U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
                    // U+103D/U+103E:
                    //     "ွှ" MYANMAR CONSONANT SIGN MEDIAL WA/MYANMAR CONSONANT SIGN MEDIAL HA
                    key("\u103D", joinMoreKeys("\u103E", "\u103D\u103E")),
                    // U+102D: "ိ" MYANMAR VOWEL SIGN I
                    // U+102E: "ီ" MYANMAR VOWEL SIGN II
                    key("\u102D", moreKey("\u102E")),
                    // U+102F: "ု" MYANMAR VOWEL SIGN U
                    // U+1030: "ူ" MYANMAR VOWEL SIGN UU
                    key("\u102F", moreKey("\u1030")),
                    // U+102C: "ာ" MYANMAR VOWEL SIGN AA
                    // U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA
                    key("\u102C", moreKey("\u102B")),
                    // U+103A: "်" MYANMAR SIGN ASAT
                    // U+1032: "ဲ" MYANMAR VOWEL SIGN AI
                    key("\u103A", moreKey("\u1032")),
                    // U+1037: "့" MYANMAR SIGN DOT BELOW
                    // U+1036: "ံ" MYANMAR SIGN ANUSVARA
                    key("\u1037", moreKey("\u1036")),
                    // U+1038: "း" MYANMAR SIGN VISARGA
                    "\u1038")
            .setKeysOfRow(4,
                    // U+1016: "ဖ" MYANMAR LETTER PHA
                    "\u1016",
                    // U+1011: "ထ" MYANMAR LETTER THA
                    // U+1039/U+1011: "္ထ" MYANMAR SIGN VIRAMA/MYANMAR LETTER THA
                    key("\u1011", moreKey("\u1039\u1011")),
                    // U+1001: "ခ" MYANMAR LETTER KHA
                    // U+1039/U+1001: "္ခ" MYANMAR SIGN VIRAMA/MYANMAR LETTER KHA
                    key("\u1001", moreKey("\u1039\u1001")),
                    // U+101C: "လ" MYANMAR LETTER LA
                    // U+1039/U+101C: "္လ" MYANMAR SIGN VIRAMA/MYANMAR LETTER LA
                    key("\u101C", moreKey("\u1039\u101C")),
                    // U+1018: "ဘ" MYANMAR LETTER BHA
                    // U+1039/U+1018: "္ဘ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BHA
                    key("\u1018", moreKey("\u1039\u1018")),
                    // U+100A: "ည" MYANMAR LETTER NNYA
                    // U+1009: "ဉ" MYANMAR LETTER NYA
                    key("\u100A", moreKey("\u1009")),
                    // U+101B: "ရ" MYANMAR LETTER RA
                    // U+101D: "ဝ" MYANMAR LETTER WA
                    "\u101B", "\u101D")
            .build();

    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
            .setKeysOfRow(1,
                    // U+1027: "ဧ" MYANMAR LETTER E
                    // U+104F: "၏" MYANMAR SYMBOL GENITIVE
                    // U+1024: "ဤ" MYANMAR LETTER II
                    // U+1023: "ဣ" MYANMAR LETTER I
                    // U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED
                    // U+1000/U+103B/U+1015/U+103A: "ကျပ်" MYANMAR LETTER KA
                    //     /MYANMAR CONSONANT SIGN MEDIAL YA/MYANMAR LETTER PA/MYANMAR SIGN ASAT
                    // U+1029: "ဩ" MYANMAR LETTER O
                    // U+102A: "ဪ" MYANMAR LETTER AU
                    // U+104D: "၍" MYANMAR SYMBOL COMPLETED
                    // U+104C: "၌" MYANMAR SYMBOL LOCATIVE
                    "\u1027", "\u104F", "\u1024", "\u1023", "\u104E", "\u1000\u103B\u1015\u103A",
                    "\u1029", "\u102A", "\u104D", "\u104C")
            .setKeysOfRow(2,
                    // U+1017: "ဗ" MYANMAR LETTER BA
                    // U+1039/U+1017: "္ဗ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BA
                    key("\u1017", moreKey("\u1039\u1017")),
                    // U+1012: "ဒ" MYANMAR LETTER DA
                    // U+1039/U+1012: "္ဒ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DA
                    key("\u1012", moreKey("\u1039\u1012")),
                    // U+1013: "ဓ" MYANMAR LETTER DHA
                    // U+1039/U+1013: "္ဓ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DHA
                    key("\u1013", moreKey("\u1039\u1013")),
                    // U+1003: "ဃ" MYANMAR LETTER GHA
                    // U+100E: "ဎ" MYANMAR LETTER DDHA
                    // U+103F: "ဿ" MYANMAR LETTER GREAT SA
                    // U+100F: "ဏ" MYANMAR LETTER NNA
                    "\u1003", "\u100E", "\u103F", "\u100F",
                    // U+1008: "ဈ" MYANMAR LETTER JHA
                    // U+1039/U+1008: "္ဈ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JHA
                    key("\u1008", moreKey("\u1039\u1008")),
                    // U+1007: "ဇ" MYANMAR LETTER JA
                    // U+1039/U+1007: "္ဇ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JA
                    key("\u1007", moreKey("\u1039\u1007")),
                    // U+1002: "ဂ" MYANMAR LETTER GA
                    // U+1039/U+1002: "္ဂ" MYANMAR SIGN VIRAMA/MYANMAR LETTER GA
                    key("\u1002", moreKey("\u1039\u1002")))
            .setKeysOfRow(3,
                    // U+101A: "ယ" MYANMAR LETTER YA
                    // U+1039: "္" MYANMAR SIGN VIRAMA
                    // U+1004/U+103A/U+1039: "င်္င" MYANMAR LETTER NGA
                    //     /MYANMAR SIGN ASAT/MYANMAR SIGN VIRAMA
                    // U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
                    // U+102E: "ီ" MYANMAR VOWEL SIGN II
                    // U+1030: "ူ" MYANMAR VOWEL SIGN UU
                    // U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA
                    // U+1032: "ဲ" MYANMAR VOWEL SIGN AI
                    // U+1036: "ံ" MYANMAR SIGN ANUSVARA
                    // U+101F: "ဟ" MYANMAR LETTER HA
                    "\u101A", "\u1039", "\u1004\u103A\u1039", "\u103E", "\u102E", "\u1030",
                    "\u102B", "\u1032", "\u1036", "\u101F")
            .setKeysOfRow(4,
                    // U+1025: "ဥ" MYANMAR LETTER U
                    // U+1026: "ဦ" MYANMAR LETTER UU
                    // U+100C: "ဌ" MYANMAR LETTER TTHA
                    // U+100B: "ဋ" MYANMAR LETTER TTA
                    // U+100D: "ဍ" MYANMAR LETTER DDA
                    // U+1020: "ဠ" MYANMAR LETTER LLA
                    // U+100B/U+1039/U+100C: "ဋ္ဌ" MYANMAR LETTER TTA
                    //     /MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA
                    "\u1025", "\u1026", "\u100C", "\u100B", "\u100D", "\u1020",
                    "\u100B\u1039\u100C",
                    // U+100F/U+1039/U+100D: "ဏ္ဍ" MYANMAR LETTER NNA
                    //     /MYANMAR SIGN VIRAMA/MYANMAR LETTER DDA
                    // U+100F/U+1039/U+100C: "ဏ္ဌ" MYANMAR LETTER NNA
                    //     /MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA
                    key("\u100F\u1039\u100D", moreKey("\u100F\u1039\u100C")))
            .build();
}