Tadashi G. Takaoka 6d44cb5122 Clean up keyboard layout test harness a bit
Bug: 13017434
Change-Id: I66e5da53b9afbe44f43b8c398c2821e7a72ec4b4
2014-03-18 17:11:43 +09:00

282 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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 Khmer alphabet keyboard.
*/
public final class Khmer extends LayoutBase {
private static final String LAYOUT_NAME = "khmer";
public Khmer(final LayoutCustomizer customizer) {
super(customizer, Symbols.class, SymbolsShifted.class);
}
@Override
public String getName() { return LAYOUT_NAME; }
public static class KhmerCustomizer extends LayoutCustomizer {
public KhmerCustomizer(final Locale locale) { super(locale); }
@Override
public ExpectedKey getAlphabetKey() { return KHMER_ALPHABET_KEY; }
@Override
public ExpectedKey getCurrencyKey() { return CURRENCY_DOLLAR_WITH_RIEL; }
@Override
public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
// U+1780: "ក" KHMER LETTER KA
// U+1781: "ខ" KHMER LETTER KHA
// U+1782: "គ" KHMER LETTER KO
private static final ExpectedKey KHMER_ALPHABET_KEY = key(
"\u1780\u1781\u1782", Constants.CODE_SWITCH_ALPHA_SYMBOL);
// U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
private static final ExpectedKey CURRENCY_DOLLAR_WITH_RIEL = key(Symbols.DOLLAR_SIGN,
moreKey("\u17DB"), Symbols.CENT_SIGN, Symbols.POUND_SIGN, Symbols.EURO_SIGN,
Symbols.YEN_SIGN, Symbols.PESO_SIGN);
}
@Override
ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
if (isPhone) {
return ALPHABET_COMMON;
}
final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
builder.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);
}
return ALPHABET_SHIFTED_COMMON;
}
// Helper method to create alphabet layout by adding special function keys.
@Override
ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
final boolean isPhone) {
final LayoutCustomizer customizer = getCustomizer();
builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
if (isPhone) {
builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
.addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
.addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
} else {
builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
.addKeysOnTheRightOfRow(3, ENTER_KEY)
.addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
.addKeysOnTheRightOfRow(5, EMOJI_KEY);
}
builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
.addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
return builder;
}
private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
.setKeysOfRow(1,
// U+17E1: "១" KHMER DIGIT ONE
// U+17F1: "៱" KHMER SYMBOL LEK ATTAK MUOY
key("\u17E1", joinMoreKeys("1", "\u17F1")),
// U+17E2: "២" KHMER DIGIT TWO
// U+17F2: "៲" KHMER SYMBOL LEK ATTAK PII
key("\u17E2", joinMoreKeys("2", "\u17F2")),
// U+17E3: "៣" KHMER DIGIT THREE
// U+17F3: "៳" KHMER SYMBOL LEK ATTAK BEI
key("\u17E3", joinMoreKeys("3", "\u17F3")),
// U+17E4: "៤" KHMER DIGIT FOUR
// U+17F4: "៴" KHMER SYMBOL LEK ATTAK BUON
key("\u17E4", joinMoreKeys("4", "\u17F4")),
// U+17E5: "៥" KHMER DIGIT FIVE
// U+17F5: "៵" KHMER SYMBOL LEK ATTAK PRAM
key("\u17E5", joinMoreKeys("5", "\u17F5")),
// U+17E6: "៦" KHMER DIGIT SIX
// U+17F6: "៶" KHMER SYMBOL LEK ATTAK PRAM-MUOY
key("\u17E6", joinMoreKeys("6", "\u17F6")),
// U+17E7: "៧" KHMER DIGIT SEVEN
// U+17F7: "៷" KHMER SYMBOL LEK ATTAK PRAM-PII
key("\u17E7", joinMoreKeys("7", "\u17F7")),
// U+17E8: "៨" KHMER DIGIT EIGHT
// U+17F8: "៸" KHMER SYMBOL LEK ATTAK PRAM-BEI
key("\u17E8", joinMoreKeys("8", "\u17F8")),
// U+17E9: "៩" KHMER DIGIT NINE
// U+17F9: "៹" KHMER SYMBOL LEK ATTAK PRAM-BUON
key("\u17E9", joinMoreKeys("9", "\u17F9")),
// U+17E0: "០" KHMER DIGIT ZERO
// U+17F0: "៰" KHMER SYMBOL LEK ATTAK SON
key("\u17E0", joinMoreKeys("0", "\u17F0")),
// U+17A5: "ឥ" KHMER INDEPENDENT VOWEL QI
// U+17A6: "ឦ" KHMER INDEPENDENT VOWEL QII
key("\u17A5", moreKey("\u17A6")),
// U+17B2: "ឲ" KHMER INDEPENDENT VOWEL QOO TYPE TWO
// U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
key("\u17B2", moreKey("\u17B1")))
.setKeysOfRow(2,
// U+1786: "ឆ" KHMER LETTER CHA
// U+17B9: "ឹ" KHMER VOWEL SIGN Y
// U+17C1: "េ" KHMER VOWEL SIGN E
// U+179A: "រ" KHMER LETTER RO
// U+178F: "ត" KHMER LETTER TA
// U+1799: "យ" KHMER LETTER YO
// U+17BB: "ុ" KHMER VOWEL SIGN U
// U+17B7: "ិ" KHMER VOWEL SIGN I
// U+17C4: "ោ" KHMER VOWEL SIGN OO
// U+1795: "ផ" KHMER LETTER PHA
// U+17C0: "ៀ" KHMER VOWEL SIGN IE
"\u1786", "\u17B9", "\u17C1", "\u179A", "\u178F", "\u1799", "\u17BB", "\u17B7",
"\u17C4", "\u1795", "\u17C0",
// U+17AA: "ឪ" KHMER INDEPENDENT VOWEL QUUV
// U+17A7: "ឧ" KHMER INDEPENDENT VOWEL QU
// U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
// U+17B3: "ឳ" KHMER INDEPENDENT VOWEL QAU
// U+17A9: "ឩ" KHMER INDEPENDENT VOWEL QUU
// U+17A8: "ឨ" KHMER INDEPENDENT VOWEL QUK
key("\u17AA", joinMoreKeys("\u17A7", "\u17B1", "\u17B3", "\u17A9", "\u17A8")))
.setKeysOfRow(3,
// U+17B6: "ា" KHMER VOWEL SIGN AA
// U+179F: "ស" KHMER LETTER SA
// U+178A: "ដ" KHMER LETTER DA
// U+1790: "ថ" KHMER LETTER THA
// U+1784: "ង" KHMER LETTER NGO
// U+17A0: "ហ" KHMER LETTER HA
// U+17D2: "្" KHMER SIGN COENG
// U+1780: "ក" KHMER LETTER KA
// U+179B: "ល" KHMER LETTER LO
// U+17BE: "ើ" KHMER VOWEL SIGN OE
// U+17CB: "់" KHMER SIGN BANTOC
"\u17B6", "\u179F", "\u178A", "\u1790", "\u1784", "\u17A0", "\u17D2", "\u1780",
"\u179B", "\u17BE", "\u17CB",
// U+17AE: "ឮ" KHMER INDEPENDENT VOWEL LYY
// U+17AD: "ឭ" KHMER INDEPENDENT VOWEL LY
// U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
key("\u17AE", joinMoreKeys("\u17AD", "\u17B0")))
.setKeysOfRow(4,
// U+178B: "ឋ" KHMER LETTER TTHA
// U+1781: "ខ" KHMER LETTER KHA
// U+1785: "ច" KHMER LETTER CA
// U+179C: "វ" KHMER LETTER VO
// U+1794: "ប" KHMER LETTER BA
// U+1793: "ន" KHMER LETTER NO
// U+1798: "ម" KHMER LETTER MO
// U+17BB/U+17C6: "ុំ" KHMER VOWEL SIGN U/KHMER SIGN NIKAHIT
// U+17D4: "។" KHMER SIGN KHAN
// U+17CA: "៊" KHMER SIGN TRIISAP
"\u178B", "\u1781", "\u1785", "\u179C", "\u1794", "\u1793", "\u1798",
"\u17BB\u17C6", "\u17D4", "\u17CA")
.build();
private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
.setKeysOfRow(1,
key("!", ZWJ_KEY),
// U+17D7: "ៗ" KHMER SIGN LEK TOO
key("\u17D7", ZWNJ_KEY),
// U+17D1: "៑" KHMER SIGN VIRIAM
key("\"", moreKey("\u17D1")),
// U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
key("\u17DB", joinMoreKeys(Symbols.DOLLAR_SIGN, Symbols.EURO_SIGN)),
// U+17D6: "៖" KHMER SIGN CAMNUC PII KUUH
key("%", moreKey("\u17D6")),
// U+17CD: "៍" KHMER SIGN TOANDAKHIAT
// U+17D9: "៙" KHMER SIGN PHNAEK MUAN
key("\u17CD", moreKey("\u17D9")),
// U+17D0: "័" KHMER SIGN SAMYOK SANNYA
// U+17DA: "៚" KHMER SIGN KOOMUUT
key("\u17D0", moreKey("\u17DA")),
// U+17CF: "៏" KHMER SIGN AHSDA
key("\u17CF", moreKey("*")),
// U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
key("(", joinMoreKeys("{", "\u00AB")),
// U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
key(")", joinMoreKeys("}", "\u00BB")),
// U+17CC: "៌" KHMER SIGN ROBAT
// U+00D7: "×" MULTIPLICATION SIGN
key("\u17CC", moreKey("\u00D7")),
// U+17CE: "៎" KHMER SIGN KAKABAT
"\u17CE")
.setKeysOfRow(2,
// U+1788: "ឈ" KHMER LETTER CHO
// U+17DC: "ៜ" KHMER SIGN AVAKRAHASANYA
key("\u1788", moreKey("\u17DC")),
// U+17BA: "ឺ" KHMER VOWEL SIGN YY
// U+17DD: "៝" KHMER SIGN ATTHACAN
key("\u17BA", moreKey("\u17DD")),
// U+17C2: "ែ" KHMER VOWEL SIGN AE
"\u17C2",
// U+17AC: "ឬ" KHMER INDEPENDENT VOWEL RYY
// U+17AB: "ឫ" KHMER INDEPENDENT VOWEL RY
key("\u17AC", moreKey("\u17AB")),
// U+1791: "ទ" KHMER LETTER TO
// U+17BD: "ួ" KHMER VOWEL SIGN UA
// U+17BC: "ូ" KHMER VOWEL SIGN UU
// U+17B8: "ី" KHMER VOWEL SIGN II
// U+17C5: "ៅ" KHMER VOWEL SIGN AU
// U+1797: "ភ" KHMER LETTER PHO
// U+17BF: "ឿ" KHMER VOWEL SIGN YA
// U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
"\u1791", "\u17BD", "\u17BC", "\u17B8", "\u17C5", "\u1797", "\u17BF", "\u17B0")
.setKeysOfRow(3,
// U+17B6/U+17C6: "ាំ" KHMER VOWEL SIGN AA/KHMER SIGN NIKAHIT
// U+17C3: "ៃ" KHMER VOWEL SIGN AI
// U+178C: "ឌ" KHMER LETTER DO
// U+1792: "ធ" KHMER LETTER THO
// U+17A2: "អ" KHMER LETTER QAE
"\u17B6\u17C6", "\u17C3", "\u178C", "\u1792", "\u17A2",
// U+17C7: "ះ" KHMER SIGN REAHMUK
// U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU
key("\u17C7", moreKey("\u17C8")),
// U+1789: "ញ" KHMER LETTER NYO
"\u1789",
// U+1782: "គ" KHMER LETTER KO
// U+179D: "ឝ" KHMER LETTER SHA
key("\u1782", moreKey("\u179D")),
// U+17A1: "ឡ" KHMER LETTER LA
// U+17C4/U+17C7: "ោះ" KHMER VOWEL SIGN OO/KHMER SIGN REAHMUK
// U+17C9: "៉" KHMER SIGN MUUSIKATOAN
// U+17AF: "ឯ" KHMER INDEPENDENT VOWEL QE
"\u17A1", "\u17C4\u17C7", "\u17C9", "\u17AF")
.setKeysOfRow(4,
// U+178D: "ឍ" KHMER LETTER TTHO
// U+1783: "ឃ" KHMER LETTER KHO
// U+1787: "ជ" KHMER LETTER CO
// U+17C1/U+17C7: "េះ" KHMER VOWEL SIGN E/KHMER SIGN REAHMUK
"\u178D", "\u1783", "\u1787", "\u17C1\u17C7",
// U+1796: "ព" KHMER LETTER PO
// U+179E: "ឞ" KHMER LETTER SSO
key("\u1796", moreKey("\u179E")),
// U+178E: "ណ" KHMER LETTER NNO
// U+17C6: "ំ" KHMER SIGN NIKAHIT
// U+17BB/U+17C7: "ុះ" KHMER VOWEL SIGN U/KHMER SIGN REAHMUK
// U+17D5: "៕" KHMER SIGN BARIYOOSAN
"\u178E", "\u17C6", "\u17BB\u17C7", "\u17D5", "?")
.build();
}