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 Bengali keyboard. 27 */ 28 public final class Bengali extends LayoutBase { 29 private static final String LAYOUT_NAME = "bengali"; 30 31 public Bengali(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 BengaliCustomizer extends LayoutCustomizer { 39 public BengaliCustomizer(final Locale locale) { super(locale); } 40 41 @Override 42 public ExpectedKey getAlphabetKey() { return BENGALI_ALPHABET_KEY; } 43 44 @Override 45 public ExpectedKey[] getOtherCurrencyKeys() { 46 return SymbolsShifted.CURRENCIES_OTHER_GENERIC; 47 } 48 49 @Override 50 public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { return EMPTY_KEYS; } 51 52 @Override 53 public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { 54 return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; 55 } 56 57 // U+0995: "" BENGALI LETTER KA 58 // U+0996: "" BENGALI LETTER KHA 59 // U+0997: "" BENGALI LETTER GA 60 private static final ExpectedKey BENGALI_ALPHABET_KEY = key( 61 "\u0995\u0996\u0997", Constants.CODE_SWITCH_ALPHA_SYMBOL); 62 } 63 64 @Override 65 ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } 66 67 @Override 68 ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { 69 return null; 70 } 71 72 private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() 73 .setKeysOfRow(1, 74 // U+0994: "" BENGALI LETTER AU 75 // U+09CC: "" BENGALI VOWEL SIGN AU 76 // U+09E7: "" BENGALI DIGIT ONE 77 key("\u0994", joinMoreKeys("\u09CC", "\u09E7", "1")), 78 // U+0990: "" BENGALI LETTER AI 79 // U+09C8: "" BENGALI VOWEL SIGN AI 80 // U+09E8: "" BENGALI DIGIT TWO 81 key("\u0990", joinMoreKeys("\u09C8", "\u09E8", "2")), 82 // U+0986: "" BENGALI LETTER AA 83 // U+09BE: "" BENGALI VOWEL SIGN AA 84 // U+09E9: "" BENGALI DIGIT THREE 85 key("\u0986", joinMoreKeys("\u09BE", "\u09E9", "3")), 86 // U+0988: "" BENGALI LETTER II 87 // U+09C0: "" BENGALI VOWEL SIGN II 88 // U+09EA: "" BENGALI DIGIT FOUR 89 key("\u0988", joinMoreKeys("\u09C0", "\u09EA", "4")), 90 // U+098A: "" BENGALI LETTER UU 91 // U+09C2: "" BENGALI VOWEL SIGN UU 92 // U+09EB: "" BENGALI DIGIT FIVE 93 key("\u098A", joinMoreKeys("\u09C2", "\u09EB", "5")), 94 // U+09AC: "" BENGALI LETTER BA 95 // U+09AD: "" BENGALI LETTER BHA 96 // U+09EC: "" BENGALI DIGIT SIX 97 key("\u09AC", joinMoreKeys("\u09AD", "\u09EC", "6")), 98 // U+09B9: "" BENGALI LETTER HA 99 // U+09ED: "" BENGALI DIGIT SEVEN 100 key("\u09B9", joinMoreKeys("\u09ED", "7")), 101 // U+0997: "" BENGALI LETTER GA 102 // U+0998: "" BENGALI LETTER GHA 103 // U+09EE: "" BENGALI DIGIT EIGHT 104 key("\u0997", joinMoreKeys("\u0998", "\u09EE", "8")), 105 // U+09A6: "" BENGALI LETTER DA 106 // U+09A7: "" BENGALI LETTER DHA 107 // U+09EF: "" BENGALI DIGIT NINE 108 key("\u09A6", joinMoreKeys("\u09A7", "\u09EF", "9")), 109 // U+099C: "" BENGALI LETTER JA 110 // U+099D: "" BENGALI LETTER JHA 111 // U+099C/U+09CD/U+099E: 112 // "" BENGALI LETTER JA/BENGALI SIGN VIRAMA/BENGALI LETTER NYA 113 // U+09E6: "" BENGALI DIGIT ZERO 114 key("\u099C", joinMoreKeys("\u099D", "\u099C\u09CD\u099E", "\u09E6", "0")), 115 // U+09A1: "" BENGALI LETTER DDA 116 // U+09A1/U+09BC: "" BENGALI LETTER DDA/BENGALI SIGN NUKTA 117 key("\u09A1", moreKey("\u09A1\u09BC"))) 118 .setKeysOfRow(2, 119 // U+0993: "" BENGALI LETTER O 120 // U+09CB: "" BENGALI VOWEL SIGN O 121 key("\u0993", moreKey("\u09CB")), 122 // U+098F: "" BENGALI LETTER E 123 // U+09C7: "" BENGALI VOWEL SIGN E 124 key("\u098F", moreKey("\u09C7")), 125 // U+0985: "" BENGALI LETTER A 126 // U+09CD: "" BENGALI SIGN VIRAMA 127 key("\u0985", moreKey("\u09CD")), 128 // U+0987: "" BENGALI LETTER I 129 // U+09BF: "" BENGALI VOWEL SIGN I 130 key("\u0987", moreKey("\u09BF")), 131 // U+0989: "" BENGALI LETTER U 132 // U+09C1: "" BENGALI VOWEL SIGN U 133 key("\u0989", moreKey("\u09C1")), 134 // U+09AA: "" BENGALI LETTER PA 135 // U+09AB: "" BENGALI LETTER PHA 136 key("\u09AA", moreKey("\u09AB")), 137 // U+09B0: "" BENGALI LETTER RA 138 // U+09C3: "" BENGALI VOWEL SIGN VOCALIC R 139 // U+098B: "" BENGALI LETTER VOCALIC R 140 // U+09A4/U+09CD/U+09B0: 141 // "" BENGALI LETTER TA/BENGALI SIGN VIRAMA/BENGALI LETTER RA 142 key("\u09B0", joinMoreKeys("\u09C3", "\u098B", "\u09A4\u09CD\u09B0")), 143 // U+0995: "" BENGALI LETTER KA 144 // U+0996: "" BENGALI LETTER KHA 145 key("\u0995", moreKey("\u0996")), 146 // U+09A4: "" BENGALI LETTER TA 147 // U+09CE: "" BENGALI LETTER KHANDA TA 148 // U+09A5: "" BENGALI LETTER THA 149 // U+09A4/U+09CD/U+09A4: 150 // "" BENGALI LETTER TA/BENGALI SIGN VIRAMA/BENGALI LETTER TA 151 key("\u09A4", joinMoreKeys("\u09CE", "\u09A5", "\u09A4\u09CD\u09A4")), 152 // U+099A: "" BENGALI LETTER CA 153 // U+099B: "" BENGALI LETTER CHA 154 key("\u099A", moreKey("\u099B")), 155 // U+099F: "" BENGALI LETTER TTA 156 // U+09A0: "" BENGALI LETTER TTHA 157 key("\u099F", moreKey("\u09A0"))) 158 .setKeysOfRow(3, 159 // U+0981: "" BENGALI SIGN CANDRABINDU 160 // U+0983: "" BENGALI SIGN VISARGA 161 // U+0982: "" BENGALI SIGN ANUSVARA 162 key("\u0981", joinMoreKeys("\u0983", "\u0982")), 163 // U+09A2: "" BENGALI LETTER DDHA 164 // U+09A2/U+09BC: "" BENGALI LETTER DDHA/BENGALI SIGN NUKTA 165 key("\u09A2", moreKey("\u09A2\u09BC")), 166 // U+09AE: "" BENGALI LETTER MA 167 "\u09AE", 168 // U+09A8: "" BENGALI LETTER NA 169 // U+09A3: "" BENGALI LETTER NNA 170 key("\u09A8", moreKey("\u09A3")), 171 // U+099E: "" BENGALI LETTER NYA 172 // U+0999: "" BENGALI LETTER NGA 173 // U+099E/U+09CD/U+099C: 174 // "" BENGALI LETTER NYA/BENGALI SIGN VIRAMA/BENGALI LETTER JA 175 key("\u099E", joinMoreKeys("\u0999", "\u099E\u09CD\u099C")), 176 // U+09B2: "" BENGALI LETTER LA 177 "\u09B2", 178 // U+09B7: "" BENGALI LETTER SSA 179 // U+0995/U+09CD/U+09B7: 180 // "" BENGALI LETTER KA/BENGALI SIGN VIRAMA/BENGALI LETTER SSA 181 key("\u09B7", moreKey("\u0995\u09CD\u09B7")), 182 // U+09B8: "" BENGALI LETTER SA 183 // U+09B6: "" BENGALI LETTER SHA 184 key("\u09B8", moreKey("\u09B6")), 185 // U+09DF: "" BENGALI LETTER YYA 186 // U+09AF: "" BENGALI LETTER YA 187 key("\u09DF", moreKey("\u09AF")), 188 // U+0964: "" DEVANAGARI DANDA 189 // U+0965: "" DEVANAGARI DOUBLE DANDA 190 key("\u0964", moreKey("\u0965"))) 191 .build(); 192 } 193