]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / tools / misc / src / com / ibm / icu / dev / tool / ime / indic / DevanagariInputMethodDescriptor.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2000-2004, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 \r
8 package com.ibm.icu.dev.tool.ime.indic;\r
9 \r
10 import java.util.Locale;\r
11 \r
12 public class DevanagariInputMethodDescriptor extends IndicIMDescriptor\r
13 {\r
14     private static final Locale DEVANAGARI = new Locale("hi", "IN");\r
15 \r
16     public DevanagariInputMethodDescriptor() {\r
17     super(DEVANAGARI, "Devanagari");\r
18     }\r
19 \r
20     private static char[] keyboardMap;\r
21     private static char[][] substitutionTable;\r
22     private static char[] joinWithNukta;\r
23     private static char[] nuktaForm;\r
24 \r
25     protected IndicInputMethodImpl getImpl()  {\r
26     if (keyboardMap == null) {\r
27         keyboardMap = new char[] {\r
28         /* 00 */ '\u0000',\r
29         /* 01 */ '\u0001',\r
30         /* 02 */ '\u0002',\r
31         /* 03 */ '\u0003',\r
32         /* 04 */ '\u0004',\r
33         /* 05 */ '\u0005',\r
34         /* 06 */ '\u0006',\r
35         /* 07 */ '\u0007',\r
36         /* 08 */ '\u0008',\r
37         /* 09 */ '\u0009',\r
38         /* 0A */ '\012',\r
39         /* 0B */ '\u000B',\r
40         /* 0C */ '\u000C',\r
41         /* 0D */ '\015',\r
42         /* 0E */ '\u000E',\r
43         /* 0F */ '\u000F',\r
44         /* 10 */ '\u0010',\r
45         /* 11 */ '\u0011',\r
46         /* 12 */ '\u0012',\r
47         /* 13 */ '\u0013',\r
48         /* 14 */ '\u0014',\r
49         /* 15 */ '\u0015',\r
50         /* 16 */ '\u0016',\r
51         /* 17 */ '\u0017',\r
52         /* 18 */ '\u0018',\r
53         /* 19 */ '\u0019',\r
54         /* 1A */ '\u001A',\r
55         /* 1B */ '\u001B',\r
56         /* 1C */ '\u001C',\r
57         /* 1D */ '\u001D',\r
58         /* 1E */ '\u001E',\r
59         /* 1F */ '\u001F',\r
60         /* 20 */ '\u0020',\r
61         /* 21 */ '\u090D',   // '!'\r
62         /* 22 */ '\u0920',   // '"'\r
63         /* 23 */ '\uFF00',   // '#'\r
64         /* 24 */ '\uFF01',   // '$'\r
65         /* 25 */ '\uFF02',   // '%'\r
66         /* 26 */ '\uFF04',   // '&'\r
67         /* 27 */ '\u091F',   // '''\r
68         /* 28 */ '\u0028',   // '('\r
69         /* 29 */ '\u0029',   // ')'\r
70         /* 2A */ '\uFF05',   // '*'\r
71         /* 2B */ '\u090B',   // '+'\r
72         /* 2C */ '\u002C',   // ','\r
73         /* 2D */ '\u002D',   // '-'\r
74         /* 2E */ '\u002E',   // '.'\r
75         /* 2F */ '\u092F',   // '/'\r
76         /* 30 */ '\u0966',   // '0'\r
77         /* 31 */ '\u0967',   // '1'\r
78         /* 32 */ '\u0968',   // '2'\r
79         /* 33 */ '\u0969',   // '3'\r
80         /* 34 */ '\u096A',   // '4'\r
81         /* 35 */ '\u096B',   // '5'\r
82         /* 36 */ '\u096C',   // '6'\r
83         /* 37 */ '\u096D',   // '7'\r
84         /* 38 */ '\u096E',   // '8'\r
85         /* 39 */ '\u096F',   // '9'\r
86         /* 3A */ '\u091B',   // ':'\r
87         /* 3B */ '\u091A',   // ';'\r
88         /* 3C */ '\u0937',   // '<'\r
89         /* 3D */ '\u0943',   // '='\r
90         /* 3E */ '\u0964',   // '>'\r
91         /* 3F */ '\u095F',   // '?'\r
92         /* 40 */ '\u0945',   // '@'\r
93         /* 41 */ '\u0913',   // 'A'\r
94         /* 42 */ '\u0934',   // 'B'\r
95         /* 43 */ '\u0923',   // 'C'\r
96         /* 44 */ '\u0905',   // 'D'\r
97         /* 45 */ '\u0906',   // 'E'\r
98         /* 46 */ '\u0907',   // 'F'\r
99         /* 47 */ '\u0909',   // 'G'\r
100         /* 48 */ '\u092B',   // 'H'\r
101         /* 49 */ '\u0918',   // 'I'\r
102         /* 4A */ '\u0931',   // 'J'\r
103         /* 4B */ '\u0916',   // 'K'\r
104         /* 4C */ '\u0925',   // 'L'\r
105         /* 4D */ '\u0936',   // 'M'\r
106         /* 4E */ '\u0933',   // 'N'\r
107         /* 4F */ '\u0927',   // 'O'\r
108         /* 50 */ '\u091D',   // 'P'\r
109         /* 51 */ '\u0914',   // 'Q'\r
110         /* 52 */ '\u0908',   // 'R'\r
111         /* 53 */ '\u090F',   // 'S'\r
112         /* 54 */ '\u090A',   // 'T'\r
113         /* 55 */ '\u0919',   // 'U'\r
114         /* 56 */ '\u0929',   // 'V'\r
115         /* 57 */ '\u0910',   // 'W'\r
116         /* 58 */ '\u0901',   // 'X'\r
117         /* 59 */ '\u092D',   // 'Y'\r
118         /* 5A */ '\u090E',   // 'Z'\r
119         /* 5B */ '\u0921',   // '['\r
120         /* 5C */ '\u0949',   // '\'\r
121         /* 5D */ '\u093C',   // ']'\r
122         /* 5E */ '\uFF03',   // '^'\r
123         /* 5F */ '\u0903',   // '_'\r
124         /* 60 */ '\u094A',   // '`'\r
125         /* 61 */ '\u094B',   // 'a'\r
126         /* 62 */ '\u0935',   // 'b'\r
127         /* 63 */ '\u092E',   // 'c'\r
128         /* 64 */ '\u094D',   // 'd'\r
129         /* 65 */ '\u093E',   // 'e'\r
130         /* 66 */ '\u093F',   // 'f'\r
131         /* 67 */ '\u0941',   // 'g'\r
132         /* 68 */ '\u092A',   // 'h'\r
133         /* 69 */ '\u0917',   // 'i'\r
134         /* 6A */ '\u0930',   // 'j'\r
135         /* 6B */ '\u0915',   // 'k'\r
136         /* 6C */ '\u0924',   // 'l'\r
137         /* 6D */ '\u0938',   // 'm'\r
138         /* 6E */ '\u0932',   // 'n'\r
139         /* 6F */ '\u0926',   // 'o'\r
140         /* 70 */ '\u091C',   // 'p'\r
141         /* 71 */ '\u094C',   // 'q'\r
142         /* 72 */ '\u0940',   // 'r'\r
143         /* 73 */ '\u0947',   // 's'\r
144         /* 74 */ '\u0942',   // 't'\r
145         /* 75 */ '\u0939',   // 'u'\r
146         /* 76 */ '\u0928',   // 'v'\r
147         /* 77 */ '\u0948',   // 'w'\r
148         /* 78 */ '\u0902',   // 'x'\r
149         /* 79 */ '\u092C',   // 'y'\r
150         /* 7A */ '\u0946',   // 'z'\r
151         /* 7B */ '\u0922',   // '{'\r
152         /* 7C */ '\u0911',   // '|'\r
153         /* 7D */ '\u091E',   // '}'\r
154         /* 7E */ '\u0912',   // '~'\r
155         /* 7F */ '\u007F'    // '\7f'\r
156         };\r
157     \r
158         // the character substitutions for the meta characters.\r
159         char[] RA_SUB = {'\u094D', '\u0930'};\r
160         char[] RA_SUP = {'\u0930', '\u094D'};\r
161         char[] CONJ_JA_NYA = {'\u091C', '\u094D', '\u091E'};\r
162         char[] CONJ_TA_RA = {'\u0924', '\u094D', '\u0930'};\r
163         char[] CONJ_KA_SSA = {'\u0915', '\u094D', '\u0937'};\r
164         char[] CONJ_SHA_RA = {'\u0936', '\u094D', '\u0930'};\r
165 \r
166         substitutionTable = new char[][] {\r
167         RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA\r
168         };\r
169 \r
170         // The following characters followed by Nukta should be replaced\r
171         // by the corresponding character as defined in ISCII91\r
172         char SIGN_CANDRABINDU      = '\u0901';\r
173         char LETTER_I              = '\u0907';\r
174         char LETTER_II             = '\u0908';\r
175         char LETTER_VOCALIC_R      = '\u090B';\r
176         char LETTER_KA             = '\u0915';\r
177         char LETTER_KHA            = '\u0916';\r
178         char LETTER_GA             = '\u0917';\r
179         char LETTER_JA             = '\u091C';\r
180         char LETTER_DDA            = '\u0921';\r
181         char LETTER_DDHA           = '\u0922';\r
182         char LETTER_PHA            = '\u092B';\r
183         char VOWEL_SIGN_I          = '\u093F';\r
184         char VOWEL_SIGN_II         = '\u0940';\r
185         char VOWEL_SIGN_VOCALIC_R  = '\u0943';\r
186         char DANDA                 = '\u0964';\r
187 \r
188         // The following characters replace the above characters followed by Nukta. These\r
189         // are defined in one to one correspondence order.\r
190         char SIGN_OM               = '\u0950';\r
191         char LETTER_VOCALIC_L      = '\u090C';\r
192         char LETTER_VOCALIC_LL     = '\u0961';\r
193         char LETTER_VOCALIC_RR     = '\u0960';\r
194         char LETTER_QA             = '\u0958';\r
195         char LETTER_KHHA           = '\u0959';\r
196         char LETTER_GHHA           = '\u095A';\r
197         char LETTER_ZA             = '\u095B';\r
198         char LETTER_DDDHA          = '\u095C';\r
199         char LETTER_RHA            = '\u095D';\r
200         char LETTER_FA             = '\u095E';\r
201         char VOWEL_SIGN_VOCALIC_L  = '\u0962';\r
202         char VOWEL_SIGN_VOCALIC_LL = '\u0963';\r
203         char VOWEL_SIGN_VOCALIC_RR = '\u0944';\r
204         char SIGN_AVAGRAHA         = '\u093D';\r
205 \r
206         joinWithNukta = new char[] {\r
207         SIGN_CANDRABINDU,\r
208         LETTER_I,\r
209         LETTER_II,\r
210         LETTER_VOCALIC_R ,\r
211         LETTER_KA,\r
212         LETTER_KHA,\r
213         LETTER_GA,\r
214         LETTER_JA,\r
215         LETTER_DDA,\r
216         LETTER_DDHA,\r
217         LETTER_PHA,\r
218         VOWEL_SIGN_I,\r
219         VOWEL_SIGN_II,\r
220         VOWEL_SIGN_VOCALIC_R,\r
221         DANDA\r
222         };\r
223     \r
224         nuktaForm = new char[] {\r
225         SIGN_OM,\r
226         LETTER_VOCALIC_L,\r
227         LETTER_VOCALIC_LL,\r
228         LETTER_VOCALIC_RR,\r
229         LETTER_QA,\r
230         LETTER_KHHA,\r
231         LETTER_GHHA,\r
232         LETTER_ZA,\r
233         LETTER_DDDHA,\r
234         LETTER_RHA,\r
235         LETTER_FA,\r
236         VOWEL_SIGN_VOCALIC_L,\r
237         VOWEL_SIGN_VOCALIC_LL,\r
238         VOWEL_SIGN_VOCALIC_RR,\r
239         SIGN_AVAGRAHA\r
240         };\r
241         }\r
242 \r
243         return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);\r
244     }\r
245 }\r
246 \r