/* * 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.layout.expected.ExpectedKey; import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; import com.android.inputmethod.latin.Constants; import java.util.Locale; /** * The Armenian Phonetic alphabet keyboard. */ public final class ArmenianPhonetic extends LayoutBase { private static final String LAYOUT_NAME = "armenian_phonetic"; public ArmenianPhonetic(final LayoutCustomizer customizer) { super(customizer, ArmenianSymbols.class, ArmenianSymbolsShifted.class); } @Override public String getName() { return LAYOUT_NAME; } public static class ArmenianPhoneticCustomizer extends LayoutCustomizer { public ArmenianPhoneticCustomizer(final Locale locale) { super(locale); } @Override public int getNumberOfRows() { return 5; } @Override public ExpectedKey getAlphabetKey() { return ARMENIAN_ALPHABET_KEY; } @Override public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { if (isPhone) { return EMPTY_KEYS; } // U+055C: "՜" ARMENIAN EXCLAMATION MARK // U+00A1: "¡" INVERTED EXCLAMATION MARK // U+055E: "՞" ARMENIAN QUESTION MARK // U+00BF: "¿" INVERTED QUESTION MARK return joinKeys(key("!", joinMoreKeys("\u055C", "\u00A1")), key("?", joinMoreKeys("\u055E", "\u00BF")), SHIFT_KEY); } @Override public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) { // U+055D: "՝" ARMENIAN COMMA return isPhone ? joinKeys(key("\u055D", SETTINGS_KEY)) : joinKeys(key("\u055D", SETTINGS_KEY)); } @Override public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) { // U+0589: "։" ARMENIAN FULL STOP final ExpectedKey fullStopKey = key("\u0589", getPunctuationMoreKeys(isPhone)); return joinKeys(fullStopKey); } @Override public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) { return ARMENIAN_PUNCTUATION_MORE_KEYS; } // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM private static final ExpectedKey ARMENIAN_ALPHABET_KEY = key( "\u0531\u0532\u0533", Constants.CODE_SWITCH_ALPHA_SYMBOL); // U+055E: "՞" ARMENIAN QUESTION MARK // U+055C: "՜" ARMENIAN EXCLAMATION MARK // U+055A: "՚" ARMENIAN APOSTROPHE // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING // U+055D: "՝" ARMENIAN COMMA // U+055B: "՛" ARMENIAN EMPHASIS MARK // U+058A: "֊" ARMENIAN HYPHEN // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK // U+055F: "՟" ARMENIAN ABBREVIATION MARK private static final ExpectedKey[] ARMENIAN_PUNCTUATION_MORE_KEYS = joinMoreKeys( ",", "\u055E", "\u055C", ".", "\u055A", "\u0559", "?", "!", "\u055D", "\u055B", "\u058A", "\u00BB", "\u00AB", "\u055F", ";", ":"); } @Override ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON); if (isPhone) { // U+056D: "խ" ARMENIAN SMALL LETTER XEH // U+0577: "շ" ARMENIAN SMALL LETTER SHA builder.addKeysOnTheRightOfRow(3, "\u056D") .addKeysOnTheRightOfRow(4, "\u0577"); } else { // U+056D: "խ" ARMENIAN SMALL LETTER XEH // U+0577: "շ" ARMENIAN SMALL LETTER SHA builder.addKeysOnTheRightOfRow(2, "\u056D") .addKeysOnTheRightOfRow(3, "\u0577"); } return builder.build(); } private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() .setKeysOfRow(1, // U+0567: "է" ARMENIAN SMALL LETTER EH key("\u0567", moreKey("1")), // U+0569: "թ" ARMENIAN SMALL LETTER TO key("\u0569", moreKey("2")), // U+0583: "փ" ARMENIAN SMALL LETTER PIWR key("\u0583", moreKey("3")), // U+0571: "ձ" ARMENIAN SMALL LETTER JA key("\u0571", moreKey("4")), // U+057B: "ջ" ARMENIAN SMALL LETTER JHEH key("\u057B", moreKey("5")), // U+0580: "ր" ARMENIAN SMALL LETTER REH key("\u0580", moreKey("6")), // U+0579: "չ" ARMENIAN SMALL LETTER CHA key("\u0579", moreKey("7")), // U+0573: "ճ" ARMENIAN SMALL LETTER CHEH key("\u0573", moreKey("8")), // U+056A: "ժ" ARMENIAN SMALL LETTER ZHE key("\u056A", moreKey("9")), // U+056E: "ծ" ARMENIAN SMALL LETTER CA key("\u056E", moreKey("0"))) .setKeysOfRow(2, // U+0584: "ք" ARMENIAN SMALL LETTER KEH // U+0578: "ո" ARMENIAN SMALL LETTER VO "\u0584", "\u0578", // U+0565: "ե" ARMENIAN SMALL LETTER ECH // U+0587: "և" ARMENIAN SMALL LIGATURE ECH YIWN key("\u0565", moreKey("\u0587")), // U+057C: "ռ" ARMENIAN SMALL LETTER RA // U+057F: "տ" ARMENIAN SMALL LETTER TIWN // U+0568: "ը" ARMENIAN SMALL LETTER ET // U+0582: "ւ" ARMENIAN SMALL LETTER YIWN // U+056B: "ի" ARMENIAN SMALL LETTER INI // U+0585: "օ" ARMENIAN SMALL LETTER OH // U+057A: "պ" ARMENIAN SMALL LETTER PEH "\u057C", "\u057F", "\u0568", "\u0582", "\u056B", "\u0585", "\u057A") .setKeysOfRow(3, // U+0561: "ա" ARMENIAN SMALL LETTER AYB // U+057D: "ս" ARMENIAN SMALL LETTER SEH // U+0564: "դ" ARMENIAN SMALL LETTER DA // U+0586: "ֆ" ARMENIAN SMALL LETTER FEH // U+0563: "գ" ARMENIAN SMALL LETTER GIM // U+0570: "հ" ARMENIAN SMALL LETTER HO // U+0575: "յ" ARMENIAN SMALL LETTER YI // U+056F: "կ" ARMENIAN SMALL LETTER KEN // U+056C: "լ" ARMENIAN SMALL LETTER LIWN "\u0561", "\u057D", "\u0564", "\u0586", "\u0563", "\u0570", "\u0575", "\u056F", "\u056C") .setKeysOfRow(4, // U+0566: "զ" ARMENIAN SMALL LETTER ZA // U+0572: "ղ" ARMENIAN SMALL LETTER GHAD // U+0581: "ց" ARMENIAN SMALL LETTER CO // U+057E: "վ" ARMENIAN SMALL LETTER VEW // U+0562: "բ" ARMENIAN SMALL LETTER BEN // U+0576: "ն" ARMENIAN SMALL LETTER NOW // U+0574: "մ" ARMENIAN SMALL LETTER MEN "\u0566", "\u0572", "\u0581", "\u057E", "\u0562", "\u0576", "\u0574") .build(); private static final class ArmenianSymbols extends Symbols { public ArmenianSymbols(final LayoutCustomizer customizer) { super(customizer); } @Override public ExpectedKey[][] getLayout(final boolean isPhone) { final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder( super.getLayout(isPhone)); // U+055D: "՝" ARMENIAN COMMA builder.replaceKeyOfLabel(",", "\u055D"); // U+055C: "՜" ARMENIAN EXCLAMATION MARK // U+00A1: "¡" INVERTED EXCLAMATION MARK // U+055E: "՞" ARMENIAN QUESTION MARK // U+00BF: "¿" INVERTED QUESTION MARK builder.setMoreKeysOf("!", "\u055C", "\u00A1") .setMoreKeysOf("?", "\u055E", "\u00BF"); return builder.build(); } } private static final class ArmenianSymbolsShifted extends SymbolsShifted { public ArmenianSymbolsShifted(final LayoutCustomizer customizer) { super(customizer); } @Override public ExpectedKey[][] getLayout(final boolean isPhone) { final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder( super.getLayout(isPhone)); // U+055D: "՝" ARMENIAN COMMA builder.replaceKeyOfLabel(",", "\u055D"); return builder.build(); } } }