001: /*
002: *******************************************************************************
003: * Copyright (C) 2000-2004, International Business Machines Corporation and *
004: * others. All Rights Reserved. *
005: *******************************************************************************
006: */
007:
008: package com.ibm.icu.dev.tool.ime.indic;
009:
010: import java.util.Locale;
011:
012: public class MalayalamInputMethodDescriptor extends IndicIMDescriptor {
013: private static final Locale MALAYALAM = new Locale("ml", "IN");
014:
015: public MalayalamInputMethodDescriptor() {
016: super (MALAYALAM, "Malayalam");
017: }
018:
019: private static char[] keyboardMap;
020: private static char[][] substitutionTable;
021:
022: protected IndicInputMethodImpl getImpl() {
023: if (keyboardMap == null) {
024: keyboardMap = new char[] {
025: /* 00 */'\u0000',
026: /* 01 */'\u0001',
027: /* 02 */'\u0002',
028: /* 03 */'\u0003',
029: /* 04 */'\u0004',
030: /* 05 */'\u0005',
031: /* 06 */'\u0006',
032: /* 07 */'\u0007',
033: /* 08 */'\u0008',
034: /* 09 */'\u0009',
035: /* 0A */'\012',
036: /* 0B */'\u000B',
037: /* 0C */'\u000C',
038: /* 0D */'\015',
039: /* 0E */'\u000E',
040: /* 0F */'\u000F',
041: /* 10 */'\u0010',
042: /* 11 */'\u0011',
043: /* 12 */'\u0012',
044: /* 13 */'\u0013',
045: /* 14 */'\u0014',
046: /* 15 */'\u0015',
047: /* 16 */'\u0016',
048: /* 17 */'\u0017',
049: /* 18 */'\u0018',
050: /* 19 */'\u0019',
051: /* 1A */'\u001A',
052: /* 1B */'\u001B',
053: /* 1C */'\u001C',
054: /* 1D */'\u001D',
055: /* 1E */'\u001E',
056: /* 1F */'\u001F',
057: /* 20 */'\u0020',
058: /* 21 */'\uFFFF', // '!'
059: /* 22 */'\u0D20', // '"'
060: /* 23 */'\uFF00', // '#'
061: /* 24 */'\uFFFF', // '$'
062: /* 25 */'\uFFFF', // '%'
063: /* 26 */'\uFFFF', // '&'
064: /* 27 */'\u0D1F', // '''
065: /* 28 */'\u0028', // '('
066: /* 29 */'\u0029', // ')'
067: /* 2A */'\uFF01', // '*'
068: /* 2B */'\u0D0B', // '+'
069: /* 2C */'\u002C', // ','
070: /* 2D */'\u002D', // '-'
071: /* 2E */'\u002E', // '.'
072: /* 2F */'\u0D2F', // '/'
073: /* 30 */'\u0D66', // '0'
074: /* 31 */'\u0D67', // '1'
075: /* 32 */'\u0D68', // '2'
076: /* 33 */'\u0D69', // '3'
077: /* 34 */'\u0D6A', // '4'
078: /* 35 */'\u0D6B', // '5'
079: /* 36 */'\u0D6C', // '6'
080: /* 37 */'\u0D6D', // '7'
081: /* 38 */'\u0D6E', // '8'
082: /* 39 */'\u0D6F', // '9'
083: /* 3A */'\u0D1B', // ':'
084: /* 3B */'\u0D1A', // ';'
085: /* 3C */'\u0D37', // '<'
086: /* 3D */'\u0D43', // '='
087: /* 3E */'\uFFFF', // '>'
088: /* 3F */'\uFFFF', // '?'
089: /* 40 */'\uFFFF', // '@'
090: /* 41 */'\u0D13', // 'A'
091: /* 42 */'\u0D34', // 'B'
092: /* 43 */'\u0D23', // 'C'
093: /* 44 */'\u0D05', // 'D'
094: /* 45 */'\u0D06', // 'E'
095: /* 46 */'\u0D07', // 'F'
096: /* 47 */'\u0D09', // 'G'
097: /* 48 */'\u0D2B', // 'H'
098: /* 49 */'\u0D18', // 'I'
099: /* 4A */'\u0D31', // 'J'
100: /* 4B */'\u0D16', // 'K'
101: /* 4C */'\u0D25', // 'L'
102: /* 4D */'\u0D36', // 'M'
103: /* 4E */'\u0D33', // 'N'
104: /* 4F */'\u0D27', // 'O'
105: /* 50 */'\u0D1D', // 'P'
106: /* 51 */'\u0D14', // 'Q'
107: /* 52 */'\u0D08', // 'R'
108: /* 53 */'\u0D0F', // 'S'
109: /* 54 */'\u0D0A', // 'T'
110: /* 55 */'\u0D19', // 'U'
111: /* 56 */'\uFFFF', // 'V'
112: /* 57 */'\u0D10', // 'W'
113: /* 58 */'\uFFFF', // 'X'
114: /* 59 */'\u0D2D', // 'Y'
115: /* 5A */'\u0D0E', // 'Z'
116: /* 5B */'\u0D21', // '['
117: /* 5C */'\uFFFF', // '\'
118: /* 5D */'\uFFFF', // ']' (nukta - no Unicode code value)
119: /* 5E */'\uFFFF', // '^'
120: /* 5F */'\u0D03', // '_'
121: /* 60 */'\u0D4A', // '`'
122: /* 61 */'\u0D4B', // 'a'
123: /* 62 */'\u0D35', // 'b'
124: /* 63 */'\u0D2E', // 'c'
125: /* 64 */'\u0D4D', // 'd'
126: /* 65 */'\u0D3E', // 'e'
127: /* 66 */'\u0D3F', // 'f'
128: /* 67 */'\u0D41', // 'g'
129: /* 68 */'\u0D2A', // 'h'
130: /* 69 */'\u0D17', // 'i'
131: /* 6A */'\u0D30', // 'j'
132: /* 6B */'\u0D15', // 'k'
133: /* 6C */'\u0D24', // 'l'
134: /* 6D */'\u0D38', // 'm'
135: /* 6E */'\u0D32', // 'n'
136: /* 6F */'\u0D26', // 'o'
137: /* 70 */'\u0D1C', // 'p'
138: /* 71 */'\u0D4C', // 'q'
139: /* 72 */'\u0D40', // 'r'
140: /* 73 */'\u0D47', // 's'
141: /* 74 */'\u0D42', // 't'
142: /* 75 */'\u0D39', // 'u'
143: /* 76 */'\u0D28', // 'v'
144: /* 77 */'\u0D48', // 'w'
145: /* 78 */'\u0D02', // 'x'
146: /* 79 */'\u0D2C', // 'y'
147: /* 7A */'\u0D46', // 'z'
148: /* 7B */'\u0D22', // '{'
149: /* 7C */'\uFFFF', // '|'
150: /* 7D */'\u0D1E', // '}'
151: /* 7E */'\u0D12', // '~'
152: /* 7F */'\u007F' // ''
153: };
154:
155: char[] RA_SUB = { '\u0D4D', '\u0D30' };
156: char[] CONJ_KA_SSA = { '\u0D15', '\u0D4D', '\u0D37' };
157:
158: substitutionTable = new char[][] { RA_SUB, CONJ_KA_SSA };
159: }
160:
161: return new IndicInputMethodImpl(keyboardMap, null, null,
162: substitutionTable);
163: }
164: }
|