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

140 lines
6.5 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.expected.ExpectedKey;
import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
import com.android.inputmethod.latin.Constants;
import java.util.Locale;
/**
* The Greek alphabet keyboard.
*/
public final class Greek extends LayoutBase {
private static final String LAYOUT_NAME = "greek";
public Greek(final LayoutCustomizer customizer) {
super(customizer, Symbols.class, SymbolsShifted.class);
}
@Override
public String getName() { return LAYOUT_NAME; }
public static class GreekCustomizer extends EuroCustomizer {
public GreekCustomizer(final Locale locale) { super(locale); }
@Override
public ExpectedKey getAlphabetKey() { return GREEK_ALPHABET_KEY; }
// U+0391: "Α" GREEK CAPITAL LETTER ALPHA
// U+0392: "Β" GREEK CAPITAL LETTER BETA
// U+0393: "Γ" GREEK CAPITAL LETTER GAMMA
private static final ExpectedKey GREEK_ALPHABET_KEY = key(
"\u0391\u0392\u0393", Constants.CODE_SWITCH_ALPHA_SYMBOL);
}
@Override
ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
builder.replaceKeyOfLabel(ROW1_1, ROW1_1_SEMICOLON);
builder.replaceKeyOfLabel(ROW1_2, ROW1_2_FINAL_SIGMA);
return builder.build();
}
@Override
ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
builder.toUpperCase(getLocale());
if (elementId == KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED
|| elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED) {
builder.replaceKeyOfLabel(ROW1_1, ROW1_1_COLON);
} else {
builder.replaceKeyOfLabel(ROW1_1, ROW1_1_SEMICOLON);
}
builder.replaceKeyOfLabel(ROW1_2, ROW1_2_FINAL_SIGMA);
return builder.build();
}
private static final String ROW1_1 = "ROW1_1";
private static final ExpectedKey ROW1_1_SEMICOLON = key(";", joinMoreKeys("1", ":"));
private static final ExpectedKey ROW1_1_COLON = key(":", joinMoreKeys("1", ";"));
private static final String ROW1_2 = "ROW2_2";
// U+03C2: "ς" GREEK SMALL LETTER FINAL SIGMA
private static final ExpectedKey ROW1_2_FINAL_SIGMA = key("\u03C2", moreKey("2"));
private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
.setKeysOfRow(1,
key(ROW1_1, moreKey("1")),
key(ROW1_2, moreKey("2")),
// U+03B5: "ε" GREEK SMALL LETTER EPSILON
// U+03AD: "έ" GREEK SMALL LETTER EPSILON WITH TONOS
key("\u03B5", joinMoreKeys("\u03AD", "3")),
// U+03C1: "ρ" GREEK SMALL LETTER RHO
key("\u03C1", moreKey("4")),
// U+03C4: "τ" GREEK SMALL LETTER TAU
key("\u03C4", moreKey("5")),
// U+03C5: "υ" GREEK SMALL LETTER UPSILON
// U+03CD: "ύ" GREEK SMALL LETTER UPSILON WITH TONOS
// U+03CB: "ϋ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA
// U+03B0: "ΰ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
key("\u03C5", joinMoreKeys("\u03CD", "6", "\u03CB", "\u03B0")),
// U+03B8: "θ" GREEK SMALL LETTER THETA
key("\u03B8", moreKey("7")),
// U+03B9: "ι" GREEK SMALL LETTER IOTA
// U+03AF: "ί" GREEK SMALL LETTER IOTA WITH TONOS
// U+03CA: "ϊ" GREEK SMALL LETTER IOTA WITH DIALYTIKA
// U+0390: "ΐ" GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
key("\u03B9", joinMoreKeys("\u03AF", "8", "\u03CA", "\u0390")),
// U+03BF: "ο" GREEK SMALL LETTER OMICRON
// U+03CC: "ό" GREEK SMALL LETTER OMICRON WITH TONOS
key("\u03BF", joinMoreKeys("\u03CC", "9")),
// U+03C0: "π" GREEK SMALL LETTER PI
key("\u03C0", moreKey("0")))
.setKeysOfRow(2,
// U+03B1: "α" GREEK SMALL LETTER ALPHA
// U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS
key("\u03B1", moreKey("\u03AC")),
// U+03C3: "σ" GREEK SMALL LETTER SIGMA
// U+03B4: "δ" GREEK SMALL LETTER DELTA
// U+03C6: "φ" GREEK SMALL LETTER PHI
// U+03B3: "γ" GREEK SMALL LETTER GAMMA
"\u03C3", "\u03B4", "\u03C6", "\u03B3",
// U+03B7: "η" GREEK SMALL LETTER ETA
// U+03AE: "ή" GREEK SMALL LETTER ETA WITH TONOS
key("\u03B7", moreKey("\u03AE")),
// U+03BE: "ξ" GREEK SMALL LETTER XI
// U+03BA: "κ" GREEK SMALL LETTER KAPPA
// U+03BB: "λ" GREEK SMALL LETTER LAMDA
"\u03BE", "\u03BA", "\u03BB")
.setKeysOfRow(3,
// U+03B6: "ζ" GREEK SMALL LETTER ZETA
// U+03C7: "χ" GREEK SMALL LETTER CHI
// U+03C8: "ψ" GREEK SMALL LETTER PSI
"\u03B6", "\u03C7", "\u03C8",
// U+03C9: "ω" GREEK SMALL LETTER OMEGA
// U+03CE: "ώ" GREEK SMALL LETTER OMEGA WITH TONOS
key("\u03C9", moreKey("\u03CE")),
// U+03B2: "β" GREEK SMALL LETTER BETA
// U+03BD: "ν" GREEK SMALL LETTER NU
// U+03BC: "μ" GREEK SMALL LETTER MU
"\u03B2", "\u03BD", "\u03BC")
.build();
}