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 GurmukhiInputMethodDescriptor extends IndicIMDescriptor 15{ 16 private static final Locale GURMUKHI = new Locale("pa", "IN"); // pa = Punjabi 17 18 public GurmukhiInputMethodDescriptor() { 19 super(GURMUKHI, "Gurmukhi"); 20 } 21 22 private static char[] keyboardMap; 23 private static char[][] substitutionTable; 24 private static char[] joinWithNukta; 25 private static char[] nuktaForm; 26 27 protected IndicInputMethodImpl getImpl() { 28 if (keyboardMap == null) { 29 keyboardMap = new char[] { 30 /* 00 */ '\u0000', 31 /* 01 */ '\u0001', 32 /* 02 */ '\u0002', 33 /* 03 */ '\u0003', 34 /* 04 */ '\u0004', 35 /* 05 */ '\u0005', 36 /* 06 */ '\u0006', 37 /* 07 */ '\u0007', 38 /* 08 */ '\u0008', 39 /* 09 */ '\u0009', 40 /* 0A */ '\012', 41 /* 0B */ '\u000B', 42 /* 0C */ '\u000C', 43 /* 0D */ '\015', 44 /* 0E */ '\u000E', 45 /* 0F */ '\u000F', 46 /* 10 */ '\u0010', 47 /* 11 */ '\u0011', 48 /* 12 */ '\u0012', 49 /* 13 */ '\u0013', 50 /* 14 */ '\u0014', 51 /* 15 */ '\u0015', 52 /* 16 */ '\u0016', 53 /* 17 */ '\u0017', 54 /* 18 */ '\u0018', 55 /* 19 */ '\u0019', 56 /* 1A */ '\u001A', 57 /* 1B */ '\u001B', 58 /* 1C */ '\u001C', 59 /* 1D */ '\u001D', 60 /* 1E */ '\u001E', 61 /* 1F */ '\u001F', 62 /* 20 */ '\u0020', 63 /* 21 */ '\u0A0D', // '!' 64 /* 22 */ '\u0A20', // '"' 65 /* 23 */ '\uFF00', // '#' 66 /* 24 */ '\uFFFF', // '$' 67 /* 25 */ '\uFFFF', // '%' 68 /* 26 */ '\uFFFF', // '&' 69 /* 27 */ '\u0A1F', // ''' 70 /* 28 */ '\u0028', // '(' 71 /* 29 */ '\u0029', // ')' 72 /* 2A */ '\uFFFF', // '*' 73 /* 2B */ '\u0A0B', // '+' 74 /* 2C */ '\u002C', // ',' 75 /* 2D */ '\u002D', // '-' 76 /* 2E */ '\u002E', // '.' 77 /* 2F */ '\u0A2F', // '/' 78 /* 30 */ '\u0A66', // '0' 79 /* 31 */ '\u0A67', // '1' 80 /* 32 */ '\u0A68', // '2' 81 /* 33 */ '\u0A69', // '3' 82 /* 34 */ '\u0A6A', // '4' 83 /* 35 */ '\u0A6B', // '5' 84 /* 36 */ '\u0A6C', // '6' 85 /* 37 */ '\u0A6D', // '7' 86 /* 38 */ '\u0A6E', // '8' 87 /* 39 */ '\u0A6F', // '9' 88 /* 3A */ '\u0A1B', // ':' 89 /* 3B */ '\u0A1A', // ';' 90 /* 3C */ '\u0A37', // '<' 91 /* 3D */ '\u0A43', // '=' 92 /* 3E */ '\u0964', // '>' (Devanagari danda) 93 /* 3F */ '\u0A5F', // '?' 94 /* 40 */ '\u0A45', // '@' 95 /* 41 */ '\u0A13', // 'A' 96 /* 42 */ '\u0A34', // 'B' 97 /* 43 */ '\u0A23', // 'C' 98 /* 44 */ '\u0A05', // 'D' 99 /* 45 */ '\u0A06', // 'E' 100 /* 46 */ '\u0A07', // 'F' 101 /* 47 */ '\u0A09', // 'G' 102 /* 48 */ '\u0A2B', // 'H' 103 /* 49 */ '\u0A18', // 'I' 104 /* 4A */ '\u0A31', // 'J' 105 /* 4B */ '\u0A16', // 'K' 106 /* 4C */ '\u0A25', // 'L' 107 /* 4D */ '\u0A36', // 'M' 108 /* 4E */ '\u0A33', // 'N' 109 /* 4F */ '\u0A27', // 'O' 110 /* 50 */ '\u0A1D', // 'P' 111 /* 51 */ '\u0A14', // 'Q' 112 /* 52 */ '\u0A08', // 'R' 113 /* 53 */ '\u0A0F', // 'S' 114 /* 54 */ '\u0A0A', // 'T' 115 /* 55 */ '\u0A19', // 'U' 116 /* 56 */ '\u0A29', // 'V' 117 /* 57 */ '\u0A10', // 'W' 118 /* 58 */ '\u0A01', // 'X' 119 /* 59 */ '\u0A2D', // 'Y' 120 /* 5A */ '\u0A0E', // 'Z' 121 /* 5B */ '\u0A21', // '[' 122 /* 5C */ '\u0A49', // '\' 123 /* 5D */ '\u0A3C', // ']' 124 /* 5E */ '\uFFFF', // '^' 125 /* 5F */ '\u0A03', // '_' 126 /* 60 */ '\u0A4A', // '`' 127 /* 61 */ '\u0A4B', // 'a' 128 /* 62 */ '\u0A35', // 'b' 129 /* 63 */ '\u0A2E', // 'c' 130 /* 64 */ '\u0A4D', // 'd' 131 /* 65 */ '\u0A3E', // 'e' 132 /* 66 */ '\u0A3F', // 'f' 133 /* 67 */ '\u0A41', // 'g' 134 /* 68 */ '\u0A2A', // 'h' 135 /* 69 */ '\u0A17', // 'i' 136 /* 6A */ '\u0A30', // 'j' 137 /* 6B */ '\u0A15', // 'k' 138 /* 6C */ '\u0A24', // 'l' 139 /* 6D */ '\u0A38', // 'm' 140 /* 6E */ '\u0A32', // 'n' 141 /* 6F */ '\u0A26', // 'o' 142 /* 70 */ '\u0A1C', // 'p' 143 /* 71 */ '\u0A4C', // 'q' 144 /* 72 */ '\u0A40', // 'r' 145 /* 73 */ '\u0A47', // 's' 146 /* 74 */ '\u0A42', // 't' 147 /* 75 */ '\u0A39', // 'u' 148 /* 76 */ '\u0A28', // 'v' 149 /* 77 */ '\u0A48', // 'w' 150 /* 78 */ '\u0A70', // 'x' (Gurmukhi TIPPI rather than BINDI) 151 /* 79 */ '\u0A2C', // 'y' 152 /* 7A */ '\u0A46', // 'z' 153 /* 7B */ '\u0A22', // '{' 154 /* 7C */ '\u0A11', // '|' 155 /* 7D */ '\u0A1E', // '}' 156 /* 7E */ '\u0A12', // '~' 157 /* 7F */ '\u007F' // '' 158 }; 159 160 char[] RA_SUB = {'\u0A4D', '\u0A30'}; 161 162 substitutionTable = new char[][] { 163 RA_SUB 164 }; 165 166 // The following characters followed by Nukta should be replaced 167 // by the corresponding character as defined in ISCII91 168 char LETTER_KHA = '\u0A16'; 169 char LETTER_GA = '\u0A17'; 170 char LETTER_JA = '\u0A1C'; 171 char LETTER_DDA = '\u0A21'; 172 char LETTER_PHA = '\u0A2B'; 173 174 // The following characters replace the above characters followed by Nukta. These 175 // are defined in one to one correspondence order. 176 // NOTE: the inscript keyboard doc. lists a KA + NUKTA and a DDHA + NUKTA 177 // neither of which seem to have Unicode code points... 178 char LETTER_KHHA = '\u0A59'; 179 char LETTER_GHHA = '\u0A5A'; 180 char LETTER_ZA = '\u0A5B'; 181 char LETTER_RRA = '\u0A5C'; 182 char LETTER_FA = '\u0A5E'; 183 184 joinWithNukta = new char[] { 185 LETTER_KHA, 186 LETTER_GA, 187 LETTER_JA, 188 LETTER_DDA, 189 LETTER_PHA 190 }; 191 192 nuktaForm = new char[] { 193 LETTER_KHHA, 194 LETTER_GHHA, 195 LETTER_ZA, 196 LETTER_RRA, 197 LETTER_FA 198 }; 199 } 200 201 return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable); 202 } 203} 204 205