1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html#License
3/*
4 *******************************************************************************
5 * Copyright (C) 2000-2004, International Business Machines Corporation and    *
6 * others. All Rights Reserved.                                                *
7 *******************************************************************************
8 */
9
10package com.ibm.icu.dev.tool.ime.indic;
11
12import java.util.Locale;
13
14public class MalayalamInputMethodDescriptor extends IndicIMDescriptor
15{
16    private static final Locale MALAYALAM = new Locale("ml", "IN");
17
18    public MalayalamInputMethodDescriptor() {
19    super(MALAYALAM, "Malayalam");
20    }
21
22    private static char[] keyboardMap;
23    private static char[][] substitutionTable;
24
25    protected IndicInputMethodImpl getImpl() {
26    if (keyboardMap == null) {
27        keyboardMap = new char[] {
28        /* 00 */ '\u0000',
29        /* 01 */ '\u0001',
30        /* 02 */ '\u0002',
31        /* 03 */ '\u0003',
32        /* 04 */ '\u0004',
33        /* 05 */ '\u0005',
34        /* 06 */ '\u0006',
35        /* 07 */ '\u0007',
36        /* 08 */ '\u0008',
37        /* 09 */ '\u0009',
38        /* 0A */ '\012',
39        /* 0B */ '\u000B',
40        /* 0C */ '\u000C',
41        /* 0D */ '\015',
42        /* 0E */ '\u000E',
43        /* 0F */ '\u000F',
44        /* 10 */ '\u0010',
45        /* 11 */ '\u0011',
46        /* 12 */ '\u0012',
47        /* 13 */ '\u0013',
48        /* 14 */ '\u0014',
49        /* 15 */ '\u0015',
50        /* 16 */ '\u0016',
51        /* 17 */ '\u0017',
52        /* 18 */ '\u0018',
53        /* 19 */ '\u0019',
54        /* 1A */ '\u001A',
55        /* 1B */ '\u001B',
56        /* 1C */ '\u001C',
57        /* 1D */ '\u001D',
58        /* 1E */ '\u001E',
59        /* 1F */ '\u001F',
60        /* 20 */ '\u0020',
61        /* 21 */ '\uFFFF',   // '!'
62        /* 22 */ '\u0D20',   // '"'
63        /* 23 */ '\uFF00',   // '#'
64        /* 24 */ '\uFFFF',   // '$'
65        /* 25 */ '\uFFFF',   // '%'
66        /* 26 */ '\uFFFF',   // '&'
67        /* 27 */ '\u0D1F',   // '''
68        /* 28 */ '\u0028',   // '('
69        /* 29 */ '\u0029',   // ')'
70        /* 2A */ '\uFF01',   // '*'
71        /* 2B */ '\u0D0B',   // '+'
72        /* 2C */ '\u002C',   // ','
73        /* 2D */ '\u002D',   // '-'
74        /* 2E */ '\u002E',   // '.'
75        /* 2F */ '\u0D2F',   // '/'
76        /* 30 */ '\u0D66',   // '0'
77        /* 31 */ '\u0D67',   // '1'
78        /* 32 */ '\u0D68',   // '2'
79        /* 33 */ '\u0D69',   // '3'
80        /* 34 */ '\u0D6A',   // '4'
81        /* 35 */ '\u0D6B',   // '5'
82        /* 36 */ '\u0D6C',   // '6'
83        /* 37 */ '\u0D6D',   // '7'
84        /* 38 */ '\u0D6E',   // '8'
85        /* 39 */ '\u0D6F',   // '9'
86        /* 3A */ '\u0D1B',   // ':'
87        /* 3B */ '\u0D1A',   // ';'
88        /* 3C */ '\u0D37',   // '<'
89        /* 3D */ '\u0D43',   // '='
90        /* 3E */ '\uFFFF',   // '>'
91        /* 3F */ '\uFFFF',   // '?'
92        /* 40 */ '\uFFFF',   // '@'
93        /* 41 */ '\u0D13',   // 'A'
94        /* 42 */ '\u0D34',   // 'B'
95        /* 43 */ '\u0D23',   // 'C'
96        /* 44 */ '\u0D05',   // 'D'
97        /* 45 */ '\u0D06',   // 'E'
98        /* 46 */ '\u0D07',   // 'F'
99        /* 47 */ '\u0D09',   // 'G'
100        /* 48 */ '\u0D2B',   // 'H'
101        /* 49 */ '\u0D18',   // 'I'
102        /* 4A */ '\u0D31',   // 'J'
103        /* 4B */ '\u0D16',   // 'K'
104        /* 4C */ '\u0D25',   // 'L'
105        /* 4D */ '\u0D36',   // 'M'
106        /* 4E */ '\u0D33',   // 'N'
107        /* 4F */ '\u0D27',   // 'O'
108        /* 50 */ '\u0D1D',   // 'P'
109        /* 51 */ '\u0D14',   // 'Q'
110        /* 52 */ '\u0D08',   // 'R'
111        /* 53 */ '\u0D0F',   // 'S'
112        /* 54 */ '\u0D0A',   // 'T'
113        /* 55 */ '\u0D19',   // 'U'
114        /* 56 */ '\uFFFF',   // 'V'
115        /* 57 */ '\u0D10',   // 'W'
116        /* 58 */ '\uFFFF',   // 'X'
117        /* 59 */ '\u0D2D',   // 'Y'
118        /* 5A */ '\u0D0E',   // 'Z'
119        /* 5B */ '\u0D21',   // '['
120        /* 5C */ '\uFFFF',   // '\'
121        /* 5D */ '\uFFFF',   // ']' (nukta - no Unicode code value)
122        /* 5E */ '\uFFFF',   // '^'
123        /* 5F */ '\u0D03',   // '_'
124        /* 60 */ '\u0D4A',   // '`'
125        /* 61 */ '\u0D4B',   // 'a'
126        /* 62 */ '\u0D35',   // 'b'
127        /* 63 */ '\u0D2E',   // 'c'
128        /* 64 */ '\u0D4D',   // 'd'
129        /* 65 */ '\u0D3E',   // 'e'
130        /* 66 */ '\u0D3F',   // 'f'
131        /* 67 */ '\u0D41',   // 'g'
132        /* 68 */ '\u0D2A',   // 'h'
133        /* 69 */ '\u0D17',   // 'i'
134        /* 6A */ '\u0D30',   // 'j'
135        /* 6B */ '\u0D15',   // 'k'
136        /* 6C */ '\u0D24',   // 'l'
137        /* 6D */ '\u0D38',   // 'm'
138        /* 6E */ '\u0D32',   // 'n'
139        /* 6F */ '\u0D26',   // 'o'
140        /* 70 */ '\u0D1C',   // 'p'
141        /* 71 */ '\u0D4C',   // 'q'
142        /* 72 */ '\u0D40',   // 'r'
143        /* 73 */ '\u0D47',   // 's'
144        /* 74 */ '\u0D42',   // 't'
145        /* 75 */ '\u0D39',   // 'u'
146        /* 76 */ '\u0D28',   // 'v'
147        /* 77 */ '\u0D48',   // 'w'
148        /* 78 */ '\u0D02',   // 'x'
149        /* 79 */ '\u0D2C',   // 'y'
150        /* 7A */ '\u0D46',   // 'z'
151        /* 7B */ '\u0D22',   // '{'
152        /* 7C */ '\uFFFF',   // '|'
153        /* 7D */ '\u0D1E',   // '}'
154        /* 7E */ '\u0D12',   // '~'
155        /* 7F */ '\u007F'    // ''
156        };
157
158        char[] RA_SUB = {'\u0D4D', '\u0D30'};
159        char[] CONJ_KA_SSA = {'\u0D15', '\u0D4D', '\u0D37'};
160
161        substitutionTable = new char[][] {
162        RA_SUB, CONJ_KA_SSA
163        };
164    }
165
166        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
167    }
168}
169