LatinIME/tests/src/com/android/inputmethod/keyboard/layout/Thai.java

248 lines
12 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* 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.customizer.LayoutCustomizer;
import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
import com.android.inputmethod.latin.common.Constants;
import java.util.Locale;
/**
* The Thai alphabet keyboard.
*/
public final class Thai extends LayoutBase {
private static final String LAYOUT_NAME = "thai";
public Thai(final Locale locale) {
super(new ThaiCustomizer(locale), Symbols.class, SymbolsShifted.class);
}
@Override
public String getName() { return LAYOUT_NAME; }
private static class ThaiCustomizer extends LayoutCustomizer {
ThaiCustomizer(final Locale locale) { super(locale); }
@Override
public int getNumberOfRows() { return 5; }
@Override
public ExpectedKey getAlphabetKey() { return THAI_ALPHABET_KEY; }
@Override
public ExpectedKey getCurrencyKey() { return CURRENCY_BAHT; }
@Override
public ExpectedKey[] getOtherCurrencyKeys() {
return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
}
@Override
public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
// U+0E01: "ก" THAI CHARACTER KO KAI
// U+0E02: "ข" THAI CHARACTER KHO KHAI
// U+0E04: "ค" THAI CHARACTER KHO KHWAI
private static final ExpectedKey THAI_ALPHABET_KEY = key(
"\u0E01\u0E02\u0E04", Constants.CODE_SWITCH_ALPHA_SYMBOL);
// U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
private static final ExpectedKey CURRENCY_BAHT = key("\u0E3F",
Symbols.CURRENCY_GENERIC_MORE_KEYS);
}
@Override
ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
if (isPhone) {
// U+0E03: "ฃ" THAI CHARACTER KHO KHUAT
builder.addKeysOnTheRightOfRow(3, "\u0E03");
} else {
// U+0E03: "ฃ" THAI CHARACTER KHO KHUAT
builder.addKeysOnTheRightOfRow(2, "\u0E03")
.addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
}
return builder.build();
}
@Override
public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
final int elementId) {
if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
return getCommonAlphabetLayout(isPhone);
}
final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
ALPHABET_SHIFTED_COMMON);
if (isPhone) {
// U+0E05: "ฅ" THAI CHARACTER KHO KHON
builder.addKeysOnTheRightOfRow(3, "\u0E05");
} else {
// U+0E05: "ฅ" THAI CHARACTER KHO KHON
builder.addKeysOnTheRightOfRow(2, "\u0E05");
}
return builder.build();
}
private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
.setKeysOfRow(1,
// U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO
"\u0E45",
// U+0E51: "๑" THAI DIGIT ONE
key("/", joinMoreKeys("1", "\u0E51")),
// U+0E52: "๒" THAI DIGIT TWO
key("_", joinMoreKeys("2", "\u0E52")),
// U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO
// U+0E53: "๓" THAI DIGIT THREE
key("\u0E20", joinMoreKeys("3", "\u0E53")),
// U+0E16: "ถ" THAI CHARACTER THO THUNG
// U+0E54: "๔" THAI DIGIT FOUR
key("\u0E16", joinMoreKeys("4", "\u0E54")),
// U+0E38: " ุ" THAI CHARACTER SARA U
key(" \u0E38", "\u0E38"),
// U+0E36: " ึ" THAI CHARACTER SARA UE
key(" \u0E36", "\u0E36"),
// U+0E04: "ค" THAI CHARACTER KHO KHWAI
// U+0E55: "๕" THAI DIGIT FIVE
key("\u0E04", joinMoreKeys("5", "\u0E55")),
// U+0E15: "ต" THAI CHARACTER TO TAO
// U+0E56: "๖" THAI DIGIT SIX
key("\u0E15", joinMoreKeys("6", "\u0E56")),
// U+0E08: "จ" THAI CHARACTER CHO CHAN
// U+0E57: "๗" THAI DIGIT SEVEN
key("\u0E08", joinMoreKeys("7", "\u0E57")),
// U+0E02: "ข" THAI CHARACTER KHO KHAI
// U+0E58: "๘" THAI DIGIT EIGHT
key("\u0E02", joinMoreKeys("8", "\u0E58")),
// U+0E0A: "ช" THAI CHARACTER CHO CHANG
// U+0E59: "๙" THAI DIGIT NINE
key("\u0E0A", joinMoreKeys("9", "\u0E59")))
.setKeysOfRow(2,
// U+0E46: "ๆ" THAI CHARACTER MAIYAMOK
// U+0E50: "" THAI DIGIT ZERO
key("\u0E46", joinMoreKeys("0", "\u0E50")),
// U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI
// U+0E33: "ำ" THAI CHARACTER SARA AM
// U+0E1E: "พ" THAI CHARACTER PHO PHAN
// U+0E30: "ะ" THAI CHARACTER SARA A
"\u0E44", "\u0E33", "\u0E1E", "\u0E30",
// U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT
key(" \u0E31", "\u0E31"),
// U+0E35: " ี" HAI CHARACTER SARA II
key(" \u0E35", "\u0E35"),
// U+0E23: "ร" THAI CHARACTER RO RUA
// U+0E19: "น" THAI CHARACTER NO NU
// U+0E22: "ย" THAI CHARACTER YO YAK
// U+0E1A: "บ" THAI CHARACTER BO BAIMAI
// U+0E25: "ล" THAI CHARACTER LO LING
"\u0E23", "\u0E19", "\u0E22", "\u0E1A", "\u0E25")
.setKeysOfRow(3,
// U+0E1F: "ฟ" THAI CHARACTER FO FAN
// U+0E2B: "ห" THAI CHARACTER HO HIP
// U+0E01: "ก" THAI CHARACTER KO KAI
// U+0E14: "ด" THAI CHARACTER DO DEK
// U+0E40: "เ" THAI CHARACTER SARA E
"\u0E1F", "\u0E2B", "\u0E01", "\u0E14", "\u0E40",
// U+0E49: " ้" THAI CHARACTER MAI THO
key(" \u0E49", "\u0E49"),
// U+0E48: " ่" THAI CHARACTER MAI EK
key(" \u0E48", "\u0E48"),
// U+0E32: "า" THAI CHARACTER SARA AA
// U+0E2A: "ส" THAI CHARACTER SO SUA
// U+0E27: "ว" THAI CHARACTER WO WAEN
// U+0E07: "ง" THAI CHARACTER NGO NGU
"\u0E32", "\u0E2A", "\u0E27", "\u0E07")
.setKeysOfRow(4,
// U+0E1C: "ผ" THAI CHARACTER PHO PHUNG
// U+0E1B: "ป" THAI CHARACTER PO PLA
// U+0E41: "แ" THAI CHARACTER SARA AE
// U+0E2D: "อ" THAI CHARACTER O ANG
"\u0E1C", "\u0E1B", "\u0E41", "\u0E2D",
// U+0E34: " ิ" THAI CHARACTER SARA I
key(" \u0E34", "\u0E34"),
// U+0E37: " ื" THAI CHARACTER SARA UEE
key(" \u0E37", "\u0E37"),
// U+0E17: "ท" THAI CHARACTER THO THAHAN
// U+0E21: "ม" THAI CHARACTER MO MA
// U+0E43: "ใ" THAI CHARACTER SARA AI MAIMUAN
// U+0E1D: "ฝ" THAI CHARACTER FO FA
"\u0E17", "\u0E21", "\u0E43", "\u0E1D")
.build();
private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
.setKeysOfRow(1,
// U+0E51: "๑" THAI DIGIT ONE
// U+0E52: "๒" THAI DIGIT TWO
// U+0E53: "๓" THAI DIGIT THREE
// U+0E54: "๔" THAI DIGIT FOUR
// U+0E39: " ู" THAI CHARACTER SARA UU
"+", "\u0E51", "\u0E52", "\u0E53", "\u0E54",
key(" \u0E39", "\u0E39"),
// U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
// U+0E55: "๕" THAI DIGIT FIVE
// U+0E56: "๖" THAI DIGIT SIX
// U+0E57: "๗" THAI DIGIT SEVEN
// U+0E58: "๘" THAI DIGIT EIGHT
// U+0E59: "๙" THAI DIGIT NINE
"\u0E3F", "\u0E55", "\u0E56", "\u0E57", "\u0E58", "\u0E59")
.setKeysOfRow(2,
// U+0E50: "" THAI DIGIT ZERO
// U+0E0E: "ฎ" THAI CHARACTER DO CHADA
// U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO
// U+0E18: "ธ" THAI CHARACTER THO THONG
"\u0E50", "\"", "\u0E0E", "\u0E11", "\u0E18",
// U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT
key(" \u0E4D", "\u0E4D"),
// U+0E4A: " ๊" THAI CHARACTER MAI TRI
key(" \u0E4A", "\u0E4A"),
// U+0E13: "ณ" THAI CHARACTER NO NEN
// U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI
// U+0E0D: "ญ" THAI CHARACTER YO YING
// U+0E10: "ฐ" THAI CHARACTER THO THAN
"\u0E13", "\u0E2F", "\u0E0D", "\u0E10", ",")
.setKeysOfRow(3,
// U+0E24: "ฤ" THAI CHARACTER RU
// U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG
// U+0E0F: "ฏ" THAI CHARACTER TO PATAK
// U+0E42: "โ" THAI CHARACTER SARA O
// U+0E0C: "ฌ" THAI CHARACTER CHO CHOE
"\u0E24", "\u0E06", "\u0E0F", "\u0E42", "\u0E0C",
// U+0E47: " ็" THAI CHARACTER MAITAIKHU
key(" \u0E47", "\u0E47"),
// U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA
key(" \u0E4B", "\u0E4B"),
// U+0E29: "ษ" THAI CHARACTER SO RUSI
// U+0E28: "ศ" THAI CHARACTER SO SALA
// U+0E0B: "ซ" THAI CHARACTER SO SO
"\u0E29", "\u0E28", "\u0E0B", ".")
.setKeysOfRow(4,
// U+0E09: "ฉ" THAI CHARACTER CHO CHING
// U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK
"(", ")", "\u0E09", "\u0E2E",
// U+0E3A: " ฺ" THAI CHARACTER PHINTHU
key(" \u0E3A", "\u0E3A"),
// U+0E4C: " ์" THAI CHARACTER THANTHAKHAT
key(" \u0E4C", "\u0E4C"),
// U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO
// U+0E2C: "ฬ" THAI CHARACTER LO CHULA
// U+0E26: "ฦ" THAI CHARACTER LU
"?", "\u0E12", "\u0E2C", "\u0E26")
.build();
}