1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.inputmethod.keyboard.layout; 18 19 import com.android.inputmethod.keyboard.layout.expected.ExpectedKey; 20 import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; 21 import com.android.inputmethod.latin.Constants; 22 23 import java.util.Locale; 24 25 /** 26 * The Tamil keyboard. 27 */ 28 public final class Tamil extends LayoutBase { 29 private static final String LAYOUT_NAME = "tamil"; 30 31 public Tamil(final LayoutCustomizer customizer) { 32 super(customizer, Symbols.class, SymbolsShifted.class); 33 } 34 35 @Override 36 public String getName() { return LAYOUT_NAME; } 37 38 public static class TamilCustomizer extends LayoutCustomizer { 39 public TamilCustomizer(final Locale locale) { super(locale); } 40 41 @Override 42 public ExpectedKey getAlphabetKey() { return TAMIL_ALPHABET_KEY; } 43 44 @Override 45 public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { 46 return EMPTY_KEYS; 47 } 48 49 @Override 50 public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { 51 return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; 52 } 53 54 // U+0BA4: "" TAMIL LETTER TA 55 // U+0BAE/U+0BBF: "" TAMIL LETTER MA/TAMIL VOWEL SIGN I 56 // U+0BB4/U+0BCD: "" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA 57 private static final ExpectedKey TAMIL_ALPHABET_KEY = key( 58 "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD", Constants.CODE_SWITCH_ALPHA_SYMBOL); 59 } 60 61 @Override 62 ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } 63 64 @Override 65 ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { 66 return null; 67 } 68 69 private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() 70 .setKeysOfRow(1, 71 // U+0B94: "" TAMIL LETTER AU 72 // U+0BCC: "" TAMIL VOWEL SIGN AU 73 key("\u0B94", joinMoreKeys("\u0BCC", "1")), 74 // U+0B90: "" TAMIL LETTER AI 75 // U+0BC8: "" TAMIL VOWEL SIGN AI 76 key("\u0B90", joinMoreKeys("\u0BC8", "2")), 77 // U+0B86: "" TAMIL LETTER AA 78 // U+0BBE: "" TAMIL VOWEL SIGN AA 79 key("\u0B86", joinMoreKeys("\u0BBE", "3")), 80 // U+0B88: "" TAMIL LETTER II 81 // U+0BC0: "" TAMIL VOWEL SIGN II 82 key("\u0B88", joinMoreKeys("\u0BC0", "4")), 83 // U+0B8A: "" TAMIL LETTER UU 84 // U+0BC2: "" TAMIL VOWEL SIGN UU 85 key("\u0B8A", joinMoreKeys("\u0BC2","5")), 86 // U+0BAE: "" TAMIL LETTER MA 87 key("\u0BAE", moreKey("6")), 88 // U+0BA9: "" TAMIL LETTER NNNA 89 key("\u0BA9", moreKey("7")), 90 // U+0BA8: "" TAMIL LETTER NA 91 key("\u0BA8", moreKey("8")), 92 // U+0B99: "" TAMIL LETTER NGA 93 key("\u0B99", moreKey("9")), 94 // U+0BA3: "" TAMIL LETTER NNA 95 key("\u0BA3", moreKey("0")), 96 // U+0B9E: "" TAMIL LETTER NYA 97 "\u0B9E") 98 .setKeysOfRow(2, 99 // U+0B93: "" TAMIL LETTER OO 100 // U+0BCB: "" TAMIL VOWEL SIGN OO 101 // U+0BD0: "" TAMIL OM 102 key("\u0B93", joinMoreKeys("\u0BCB", "\u0BD0")), 103 // U+0B8F: "" TAMIL LETTER EE 104 // U+0BC7: "" TAMIL VOWEL SIGN EE 105 key("\u0B8F", moreKey("\u0BC7")), 106 // U+0B85: "" TAMIL LETTER A 107 // U+0B83: "" TAMIL SIGN VISARGA 108 key("\u0B85", moreKey("\u0B83")), 109 // U+0B87: "" TAMIL LETTER I 110 // U+0BBF: "" TAMIL VOWEL SIGN I 111 key("\u0B87", moreKey("\u0BBF")), 112 // U+0B89: "" TAMIL LETTER U 113 // U+0BC1: "" TAMIL VOWEL SIGN U 114 key("\u0B89", moreKey("\u0BC1")), 115 // U+0BB1: "" TAMIL LETTER RRA 116 // U+0BAA: "" TAMIL LETTER PA 117 "\u0BB1", "\u0BAA", 118 // U+0B95: "" TAMIL LETTER KA 119 // U+0BB9: "" TAMIL LETTER HA 120 // U+0B95/U+0BCD/U+0BB7: 121 // "" TAMIL LETTER KA/TAMIL SIGN VIRAMA/TAMIL LETTER SSA 122 key("\u0B95", joinMoreKeys("\u0BB9", "\u0B95\u0BCD\u0BB7")), 123 // U+0BA4: "" TAMIL LETTER TA 124 "\u0BA4", 125 // U+0B9A: "" TAMIL LETTER CA 126 // U+0BB8: "" TAMIL LETTER SA 127 // U+0BB6/U+0BCD/U+0BB0/U+0BC0: 128 // "" TAMIL LETTER SHA/TAMIL SIGN VIRAMA/TAMIL LETTER RA 129 // /TAMIL VOWEL SIGN II 130 key("\u0B9A", joinMoreKeys("\u0BB8", "\u0BB6\u0BCD\u0BB0\u0BC0")), 131 // U+0B9F: "" TAMIL LETTER TTA 132 "\u0B9F") 133 .setKeysOfRow(3, 134 // U+0B92: "" TAMIL LETTER O 135 // U+0BCA: "" TAMIL VOWEL SIGN O 136 key("\u0B92", moreKey("\u0BCA")), 137 // U+0B8E: "" TAMIL LETTER E 138 // U+0BC6: "" TAMIL VOWEL SIGN E 139 key("\u0B8E", moreKey("\u0BC6")), 140 // U+0BCD: "" TAMIL SIGN VIRAMA 141 // U+0BB0: "" TAMIL LETTER RA 142 // U+0BB5: "" TAMIL LETTER VA 143 // U+0BB4: " TAMIL LETTER LLLA 144 // U+0BB2: "" TAMIL LETTER LA 145 // U+0BB3: "" TAMIL LETTER LLA 146 // U+0BAF: "" TAMIL LETTER YA 147 "\u0BCD", "\u0BB0", "\u0BB5", "\u0BB4", "\u0BB2", "\u0BB3", "\u0BAF", 148 // U+0BB7: "" TAMIL LETTER SSA 149 // U+0B9C: "" TAMIL LETTER JA 150 key("\u0BB7", moreKey("\u0B9C"))) 151 .build(); 152 } 153