blob: 3c70d3266f1f26d8cc45e919f025decbda56ca48 [file] [log] [blame]
/*
* 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();
}