Home | History | Annotate | Download | only in layout
      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