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 17package com.android.inputmethod.keyboard.layout; 18 19import com.android.inputmethod.keyboard.layout.expected.ExpectedKey; 20import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; 21import com.android.inputmethod.latin.Constants; 22 23import java.util.Locale; 24 25/** 26 * The Malayalam keyboard. 27 */ 28public final class Malayalam extends LayoutBase { 29 private static final String LAYOUT_NAME = "malayalam"; 30 31 public Malayalam(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 MalayalamCustomizer extends LayoutCustomizer { 39 public MalayalamCustomizer(final Locale locale) { super(locale); } 40 41 @Override 42 public ExpectedKey getAlphabetKey() { return MALAYALAM_ALPHABET_KEY; } 43 44 @Override 45 public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; } 46 47 @Override 48 public ExpectedKey[] getOtherCurrencyKeys() { 49 return SymbolsShifted.CURRENCIES_OTHER_GENERIC; 50 } 51 52 @Override 53 public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { 54 return EMPTY_KEYS; 55 } 56 57 @Override 58 public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { 59 return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; 60 } 61 62 // U+0D05: "അ" MALAYALAM LETTER A 63 private static final ExpectedKey MALAYALAM_ALPHABET_KEY = key( 64 "\u0D05", Constants.CODE_SWITCH_ALPHA_SYMBOL); 65 66 // U+20B9: "₹" INDIAN RUPEE SIGN 67 private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9", 68 Symbols.CURRENCY_GENERIC_MORE_KEYS); 69 } 70 71 @Override 72 ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } 73 74 @Override 75 ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { 76 return null; 77 } 78 79 private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() 80 .setKeysOfRow(1, 81 // U+0D4D: "്" MALAYALAM SIGN VIRAMA 82 // U+0D05: "അ" MALAYALAM LETTER A 83 key("\u0D4D", joinMoreKeys("\u0D05", "1")), 84 // U+0D3E: "ാ" MALAYALAM VOWEL SIGN AA 85 // U+0D06: "ആ" MALAYALAM LETTER AA 86 key("\u0D3E", joinMoreKeys("\u0D06", "2")), 87 // U+0D3F: "ി" MALAYALAM VOWEL SIGN I 88 // U+0D07: "ഇ" MALAYALAM LETTER I 89 key("\u0D3F", joinMoreKeys("\u0D07", "3")), 90 // U+0D40: "ീ" MALAYALAM VOWEL SIGN II 91 // U+0D08: "ഈ" MALAYALAM LETTER II 92 key("\u0D40", joinMoreKeys("\u0D08", "4")), 93 // U+0D41: "ു" MALAYALAM VOWEL SIGN U 94 // U+0D09: "ഉ" MALAYALAM LETTER U 95 key("\u0D41", joinMoreKeys("\u0D09", "5")), 96 // U+0D42: "ൂ" MALAYALAM VOWEL SIGN UU 97 // U+0D0A: "ഊ" MALAYALAM LETTER UU 98 key("\u0D42", joinMoreKeys("\u0D0A", "6")), 99 // U+0D43: "ൃ" MALAYALAM VOWEL SIGN VOCALIC R 100 // U+0D0B: "ഋ" MALAYALAM LETTER VOCALIC R 101 key("\u0D43", joinMoreKeys("\u0D0B", "7")), 102 // U+0D46: "െ" MALAYALAM VOWEL SIGN E 103 // U+0D0E: "എ" MALAYALAM LETTER E 104 // U+0D10: "ഐ" MALAYALAM LETTER AI 105 // U+0D48: "ൈ" MALAYALAM VOWEL SIGN AI 106 key("\u0D46", joinMoreKeys("\u0D0E", "\u0D10", "\u0D48", "8")), 107 // U+0D47: "േ" MALAYALAM VOWEL SIGN EE 108 // U+0D0F: "ഏ" MALAYALAM LETTER EE 109 key("\u0D47", joinMoreKeys("\u0D0F", "9")), 110 // U+0D4A: "ൊ" MALAYALAM VOWEL SIGN O 111 // U+0D12: "ഒ" MALAYALAM LETTER O 112 key("\u0D4A", joinMoreKeys("\u0D12", "0")), 113 // U+0D4B: "ോ" MALAYALAM VOWEL SIGN OO 114 // U+0D13: "ഓ" MALAYALAM LETTER OO 115 // U+0D14: "ഔ" MALAYALAM LETTER AU 116 // U+0D57: "ൗ" MALAYALAM AU LENGTH MARK 117 key("\u0D4B", joinMoreKeys("\u0D13", "\u0D14", "\u0D57"))) 118 .setKeysOfRow(2, 119 // U+0D15: "ക" MALAYALAM LETTER KA 120 // U+0D16: "ഖ" MALAYALAM LETTER KHA 121 key("\u0D15", moreKey("\u0D16")), 122 // U+0D17: "ഗ" MALAYALAM LETTER GA 123 // U+0D18: "ഘ" MALAYALAM LETTER GHA 124 key("\u0D17", moreKey("\u0D18")), 125 // U+0D19: "ങ" MALAYALAM LETTER NGA 126 // U+0D1E: "ഞ" MALAYALAM LETTER NYA 127 key("\u0D19", moreKey("\u0D1E")), 128 // U+0D1A: "ച" MALAYALAM LETTER CA 129 // U+0D1B: "ഛ" MALAYALAM LETTER CHA 130 key("\u0D1A", moreKey("\u0D1B")), 131 // U+0D1C: "ജ" MALAYALAM LETTER JA 132 // U+0D1D: "ഝ" MALAYALAM LETTER JHA 133 key("\u0D1C", moreKey("\u0D1D")), 134 // U+0D1F: "ട" MALAYALAM LETTER TTA 135 // U+0D20: "ഠ" MALAYALAM LETTER TTHA 136 key("\u0D1F", moreKey("\u0D20")), 137 // U+0D21: "ഡ" MALAYALAM LETTER DDA 138 // U+0D22: "ഢ" MALAYALAM LETTER DDHA 139 key("\u0D21", moreKey("\u0D22")), 140 // U+0D23: "ണ" MALAYALAM LETTER NNA 141 // U+0D7A: "ൺ" MALAYALAM LETTER CHILLU NN 142 key("\u0D23", moreKey("\u0D7A")), 143 // U+0D24: "ത" MALAYALAM LETTER TA 144 // U+0D25: "ഥ" MALAYALAM LETTER THA 145 key("\u0D24", moreKey("\u0D25")), 146 // U+0D26: "ദ" MALAYALAM LETTER DA 147 // U+0D27: "ധ" MALAYALAM LETTER DHA 148 key("\u0D26", moreKey("\u0D27")), 149 // U+0D28: "ഗന" MALAYALAM LETTER NA 150 // U+0D7B: "ൻ" MALAYALAM LETTER CHILLU N 151 key("\u0D28", moreKey("\u0D7B"))) 152 .setKeysOfRow(3, 153 // U+0D2A: "പ" MALAYALAM LETTER PA 154 // U+0D2B: "ഫ" MALAYALAM LETTER PHA 155 key("\u0D2A", moreKey("\u0D2B")), 156 // U+0D2C: "ബ" MALAYALAM LETTER BA 157 // U+0D2D: "ഭ" MALAYALAM LETTER BHA 158 key("\u0D2C", moreKey("\u0D2D")), 159 // U+0D2E: "മ" MALAYALAM LETTER MA 160 // U+0D02: "ം" MALAYALAM SIGN ANUSVARA 161 key("\u0D2E", moreKey("\u0D02")), 162 // U+0D2F: "യ" MALAYALAM LETTER YA 163 // U+0D4D/U+0D2F: "്യ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER YA 164 key("\u0D2F", moreKey("\u0D4D\u0D2F")), 165 // U+0D30: "ര" MALAYALAM LETTER RA 166 // U+0D4D/U+0D30: "്ര" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER RA 167 // U+0D7C: "ർ" MALAYALAM LETTER CHILLU RR 168 // U+0D31: "റ" MALAYALAM LETTER RRA 169 key("\u0D30", joinMoreKeys("\u0D4D\u0D30", "\u0D7C", "\u0D31")), 170 // U+0D32: "ല" MALAYALAM LETTER LA 171 // U+0D7D: "ൽ" MALAYALAM LETTER CHILLU L 172 key("\u0D32", moreKey("\u0D7D")), 173 // U+0D35: "വ" MALAYALAM LETTER VA 174 // U+0D4D/U+0D35: "്വ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER VA 175 key("\u0D35", moreKey("\u0D4D\u0D35")), 176 // U+0D36: "ശ" MALAYALAM LETTER SHA 177 // U+0D37: "ഷ" MALAYALAM LETTER SSA 178 // U+0D38: "സ" MALAYALAM LETTER SA 179 key("\u0D36", joinMoreKeys("\u0D37", "\u0D38")), 180 // U+0D39: "ഹ" MALAYALAM LETTER HA 181 // U+0D03: "ഃ" MALAYALAM SIGN VISARGA 182 key("\u0D39", moreKey("\u0D03")), 183 // U+0D33: "ള" MALAYALAM LETTER LLA 184 // U+0D7E: "ൾ" MALAYALAM LETTER CHILLU LL 185 // U+0D34: "ഴ" MALAYALAM LETTER LLLA 186 key("\u0D33", joinMoreKeys("\u0D7E", "\u0D34"))) 187 .build(); 188} 189