| /* |
| * 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(); |
| } |