Back to index

im-sdk  12.3.91
keynames.c
Go to the documentation of this file.
00001 #include <stdlib.h>
00002 #include <string.h>
00003 #include "keysyms.h"
00004 #include "iiimcf.h"
00005 
00006 /* Key handling not part of the keymap */
00007 
00008 static struct x11_key {
00009   unsigned int keyval;
00010   const char *name;
00011 } x11_keys_by_keyval[] = {
00012   { 0x000020, "space" },
00013   { 0x000021, "exclam" },
00014   { 0x000022, "quotedbl" },
00015   { 0x000023, "numbersign" },
00016   { 0x000024, "dollar" },
00017   { 0x000025, "percent" },
00018   { 0x000026, "ampersand" },
00019   { 0x000027, "apostrophe" },
00020   { 0x000027, "quoteright" },
00021   { 0x000028, "parenleft" },
00022   { 0x000029, "parenright" },
00023   { 0x00002a, "asterisk" },
00024   { 0x00002b, "plus" },
00025   { 0x00002c, "comma" },
00026   { 0x00002d, "minus" },
00027   { 0x00002e, "period" },
00028   { 0x00002f, "slash" },
00029   { 0x000030, "0" },
00030   { 0x000031, "1" },
00031   { 0x000032, "2" },
00032   { 0x000033, "3" },
00033   { 0x000034, "4" },
00034   { 0x000035, "5" },
00035   { 0x000036, "6" },
00036   { 0x000037, "7" },
00037   { 0x000038, "8" },
00038   { 0x000039, "9" },
00039   { 0x00003a, "colon" },
00040   { 0x00003b, "semicolon" },
00041   { 0x00003c, "less" },
00042   { 0x00003d, "equal" },
00043   { 0x00003e, "greater" },
00044   { 0x00003f, "question" },
00045   { 0x000040, "at" },
00046   { 0x000041, "A" },
00047   { 0x000042, "B" },
00048   { 0x000043, "C" },
00049   { 0x000044, "D" },
00050   { 0x000045, "E" },
00051   { 0x000046, "F" },
00052   { 0x000047, "G" },
00053   { 0x000048, "H" },
00054   { 0x000049, "I" },
00055   { 0x00004a, "J" },
00056   { 0x00004b, "K" },
00057   { 0x00004c, "L" },
00058   { 0x00004d, "M" },
00059   { 0x00004e, "N" },
00060   { 0x00004f, "O" },
00061   { 0x000050, "P" },
00062   { 0x000051, "Q" },
00063   { 0x000052, "R" },
00064   { 0x000053, "S" },
00065   { 0x000054, "T" },
00066   { 0x000055, "U" },
00067   { 0x000056, "V" },
00068   { 0x000057, "W" },
00069   { 0x000058, "X" },
00070   { 0x000059, "Y" },
00071   { 0x00005a, "Z" },
00072   { 0x00005b, "bracketleft" },
00073   { 0x00005c, "backslash" },
00074   { 0x00005d, "bracketright" },
00075   { 0x00005e, "asciicircum" },
00076   { 0x00005f, "underscore" },
00077   { 0x000060, "grave" },
00078   { 0x000060, "quoteleft" },
00079   { 0x000061, "a" },
00080   { 0x000062, "b" },
00081   { 0x000063, "c" },
00082   { 0x000064, "d" },
00083   { 0x000065, "e" },
00084   { 0x000066, "f" },
00085   { 0x000067, "g" },
00086   { 0x000068, "h" },
00087   { 0x000069, "i" },
00088   { 0x00006a, "j" },
00089   { 0x00006b, "k" },
00090   { 0x00006c, "l" },
00091   { 0x00006d, "m" },
00092   { 0x00006e, "n" },
00093   { 0x00006f, "o" },
00094   { 0x000070, "p" },
00095   { 0x000071, "q" },
00096   { 0x000072, "r" },
00097   { 0x000073, "s" },
00098   { 0x000074, "t" },
00099   { 0x000075, "u" },
00100   { 0x000076, "v" },
00101   { 0x000077, "w" },
00102   { 0x000078, "x" },
00103   { 0x000079, "y" },
00104   { 0x00007a, "z" },
00105   { 0x00007b, "braceleft" },
00106   { 0x00007c, "bar" },
00107   { 0x00007d, "braceright" },
00108   { 0x00007e, "asciitilde" },
00109   { 0x0000a0, "nobreakspace" },
00110   { 0x0000a1, "exclamdown" },
00111   { 0x0000a2, "cent" },
00112   { 0x0000a3, "sterling" },
00113   { 0x0000a4, "currency" },
00114   { 0x0000a5, "yen" },
00115   { 0x0000a6, "brokenbar" },
00116   { 0x0000a7, "section" },
00117   { 0x0000a8, "diaeresis" },
00118   { 0x0000a9, "copyright" },
00119   { 0x0000aa, "ordfeminine" },
00120   { 0x0000ab, "guillemotleft" },
00121   { 0x0000ac, "notsign" },
00122   { 0x0000ad, "hyphen" },
00123   { 0x0000ae, "registered" },
00124   { 0x0000af, "macron" },
00125   { 0x0000b0, "degree" },
00126   { 0x0000b1, "plusminus" },
00127   { 0x0000b2, "twosuperior" },
00128   { 0x0000b3, "threesuperior" },
00129   { 0x0000b4, "acute" },
00130   { 0x0000b5, "mu" },
00131   { 0x0000b6, "paragraph" },
00132   { 0x0000b7, "periodcentered" },
00133   { 0x0000b8, "cedilla" },
00134   { 0x0000b9, "onesuperior" },
00135   { 0x0000ba, "masculine" },
00136   { 0x0000bb, "guillemotright" },
00137   { 0x0000bc, "onequarter" },
00138   { 0x0000bd, "onehalf" },
00139   { 0x0000be, "threequarters" },
00140   { 0x0000bf, "questiondown" },
00141   { 0x0000c0, "Agrave" },
00142   { 0x0000c1, "Aacute" },
00143   { 0x0000c2, "Acircumflex" },
00144   { 0x0000c3, "Atilde" },
00145   { 0x0000c4, "Adiaeresis" },
00146   { 0x0000c5, "Aring" },
00147   { 0x0000c6, "AE" },
00148   { 0x0000c7, "Ccedilla" },
00149   { 0x0000c8, "Egrave" },
00150   { 0x0000c9, "Eacute" },
00151   { 0x0000ca, "Ecircumflex" },
00152   { 0x0000cb, "Ediaeresis" },
00153   { 0x0000cc, "Igrave" },
00154   { 0x0000cd, "Iacute" },
00155   { 0x0000ce, "Icircumflex" },
00156   { 0x0000cf, "Idiaeresis" },
00157   { 0x0000d0, "ETH" },
00158   { 0x0000d0, "Eth" },
00159   { 0x0000d1, "Ntilde" },
00160   { 0x0000d2, "Ograve" },
00161   { 0x0000d3, "Oacute" },
00162   { 0x0000d4, "Ocircumflex" },
00163   { 0x0000d5, "Otilde" },
00164   { 0x0000d6, "Odiaeresis" },
00165   { 0x0000d7, "multiply" },
00166   { 0x0000d8, "Ooblique" },
00167   { 0x0000d9, "Ugrave" },
00168   { 0x0000da, "Uacute" },
00169   { 0x0000db, "Ucircumflex" },
00170   { 0x0000dc, "Udiaeresis" },
00171   { 0x0000dd, "Yacute" },
00172   { 0x0000de, "THORN" },
00173   { 0x0000de, "Thorn" },
00174   { 0x0000df, "ssharp" },
00175   { 0x0000e0, "agrave" },
00176   { 0x0000e1, "aacute" },
00177   { 0x0000e2, "acircumflex" },
00178   { 0x0000e3, "atilde" },
00179   { 0x0000e4, "adiaeresis" },
00180   { 0x0000e5, "aring" },
00181   { 0x0000e6, "ae" },
00182   { 0x0000e7, "ccedilla" },
00183   { 0x0000e8, "egrave" },
00184   { 0x0000e9, "eacute" },
00185   { 0x0000ea, "ecircumflex" },
00186   { 0x0000eb, "ediaeresis" },
00187   { 0x0000ec, "igrave" },
00188   { 0x0000ed, "iacute" },
00189   { 0x0000ee, "icircumflex" },
00190   { 0x0000ef, "idiaeresis" },
00191   { 0x0000f0, "eth" },
00192   { 0x0000f1, "ntilde" },
00193   { 0x0000f2, "ograve" },
00194   { 0x0000f3, "oacute" },
00195   { 0x0000f4, "ocircumflex" },
00196   { 0x0000f5, "otilde" },
00197   { 0x0000f6, "odiaeresis" },
00198   { 0x0000f7, "division" },
00199   { 0x0000f8, "oslash" },
00200   { 0x0000f9, "ugrave" },
00201   { 0x0000fa, "uacute" },
00202   { 0x0000fb, "ucircumflex" },
00203   { 0x0000fc, "udiaeresis" },
00204   { 0x0000fd, "yacute" },
00205   { 0x0000fe, "thorn" },
00206   { 0x0000ff, "ydiaeresis" },
00207   { 0x0001a1, "Aogonek" },
00208   { 0x0001a2, "breve" },
00209   { 0x0001a3, "Lstroke" },
00210   { 0x0001a5, "Lcaron" },
00211   { 0x0001a6, "Sacute" },
00212   { 0x0001a9, "Scaron" },
00213   { 0x0001aa, "Scedilla" },
00214   { 0x0001ab, "Tcaron" },
00215   { 0x0001ac, "Zacute" },
00216   { 0x0001ae, "Zcaron" },
00217   { 0x0001af, "Zabovedot" },
00218   { 0x0001b1, "aogonek" },
00219   { 0x0001b2, "ogonek" },
00220   { 0x0001b3, "lstroke" },
00221   { 0x0001b5, "lcaron" },
00222   { 0x0001b6, "sacute" },
00223   { 0x0001b7, "caron" },
00224   { 0x0001b9, "scaron" },
00225   { 0x0001ba, "scedilla" },
00226   { 0x0001bb, "tcaron" },
00227   { 0x0001bc, "zacute" },
00228   { 0x0001bd, "doubleacute" },
00229   { 0x0001be, "zcaron" },
00230   { 0x0001bf, "zabovedot" },
00231   { 0x0001c0, "Racute" },
00232   { 0x0001c3, "Abreve" },
00233   { 0x0001c5, "Lacute" },
00234   { 0x0001c6, "Cacute" },
00235   { 0x0001c8, "Ccaron" },
00236   { 0x0001ca, "Eogonek" },
00237   { 0x0001cc, "Ecaron" },
00238   { 0x0001cf, "Dcaron" },
00239   { 0x0001d0, "Dstroke" },
00240   { 0x0001d1, "Nacute" },
00241   { 0x0001d2, "Ncaron" },
00242   { 0x0001d5, "Odoubleacute" },
00243   { 0x0001d8, "Rcaron" },
00244   { 0x0001d9, "Uring" },
00245   { 0x0001db, "Udoubleacute" },
00246   { 0x0001de, "Tcedilla" },
00247   { 0x0001e0, "racute" },
00248   { 0x0001e3, "abreve" },
00249   { 0x0001e5, "lacute" },
00250   { 0x0001e6, "cacute" },
00251   { 0x0001e8, "ccaron" },
00252   { 0x0001ea, "eogonek" },
00253   { 0x0001ec, "ecaron" },
00254   { 0x0001ef, "dcaron" },
00255   { 0x0001f0, "dstroke" },
00256   { 0x0001f1, "nacute" },
00257   { 0x0001f2, "ncaron" },
00258   { 0x0001f5, "odoubleacute" },
00259   { 0x0001f8, "rcaron" },
00260   { 0x0001f9, "uring" },
00261   { 0x0001fb, "udoubleacute" },
00262   { 0x0001fe, "tcedilla" },
00263   { 0x0001ff, "abovedot" },
00264   { 0x0002a1, "Hstroke" },
00265   { 0x0002a6, "Hcircumflex" },
00266   { 0x0002a9, "Iabovedot" },
00267   { 0x0002ab, "Gbreve" },
00268   { 0x0002ac, "Jcircumflex" },
00269   { 0x0002b1, "hstroke" },
00270   { 0x0002b6, "hcircumflex" },
00271   { 0x0002b9, "idotless" },
00272   { 0x0002bb, "gbreve" },
00273   { 0x0002bc, "jcircumflex" },
00274   { 0x0002c5, "Cabovedot" },
00275   { 0x0002c6, "Ccircumflex" },
00276   { 0x0002d5, "Gabovedot" },
00277   { 0x0002d8, "Gcircumflex" },
00278   { 0x0002dd, "Ubreve" },
00279   { 0x0002de, "Scircumflex" },
00280   { 0x0002e5, "cabovedot" },
00281   { 0x0002e6, "ccircumflex" },
00282   { 0x0002f5, "gabovedot" },
00283   { 0x0002f8, "gcircumflex" },
00284   { 0x0002fd, "ubreve" },
00285   { 0x0002fe, "scircumflex" },
00286   { 0x0003a2, "kappa" },
00287   { 0x0003a2, "kra" },
00288   { 0x0003a3, "Rcedilla" },
00289   { 0x0003a5, "Itilde" },
00290   { 0x0003a6, "Lcedilla" },
00291   { 0x0003aa, "Emacron" },
00292   { 0x0003ab, "Gcedilla" },
00293   { 0x0003ac, "Tslash" },
00294   { 0x0003b3, "rcedilla" },
00295   { 0x0003b5, "itilde" },
00296   { 0x0003b6, "lcedilla" },
00297   { 0x0003ba, "emacron" },
00298   { 0x0003bb, "gcedilla" },
00299   { 0x0003bc, "tslash" },
00300   { 0x0003bd, "ENG" },
00301   { 0x0003bf, "eng" },
00302   { 0x0003c0, "Amacron" },
00303   { 0x0003c7, "Iogonek" },
00304   { 0x0003cc, "Eabovedot" },
00305   { 0x0003cf, "Imacron" },
00306   { 0x0003d1, "Ncedilla" },
00307   { 0x0003d2, "Omacron" },
00308   { 0x0003d3, "Kcedilla" },
00309   { 0x0003d9, "Uogonek" },
00310   { 0x0003dd, "Utilde" },
00311   { 0x0003de, "Umacron" },
00312   { 0x0003e0, "amacron" },
00313   { 0x0003e7, "iogonek" },
00314   { 0x0003ec, "eabovedot" },
00315   { 0x0003ef, "imacron" },
00316   { 0x0003f1, "ncedilla" },
00317   { 0x0003f2, "omacron" },
00318   { 0x0003f3, "kcedilla" },
00319   { 0x0003f9, "uogonek" },
00320   { 0x0003fd, "utilde" },
00321   { 0x0003fe, "umacron" },
00322   { 0x00047e, "overline" },
00323   { 0x0004a1, "kana_fullstop" },
00324   { 0x0004a2, "kana_openingbracket" },
00325   { 0x0004a3, "kana_closingbracket" },
00326   { 0x0004a4, "kana_comma" },
00327   { 0x0004a5, "kana_conjunctive" },
00328   { 0x0004a5, "kana_middledot" },
00329   { 0x0004a6, "kana_WO" },
00330   { 0x0004a7, "kana_a" },
00331   { 0x0004a8, "kana_i" },
00332   { 0x0004a9, "kana_u" },
00333   { 0x0004aa, "kana_e" },
00334   { 0x0004ab, "kana_o" },
00335   { 0x0004ac, "kana_ya" },
00336   { 0x0004ad, "kana_yu" },
00337   { 0x0004ae, "kana_yo" },
00338   { 0x0004af, "kana_tsu" },
00339   { 0x0004af, "kana_tu" },
00340   { 0x0004b0, "prolongedsound" },
00341   { 0x0004b1, "kana_A" },
00342   { 0x0004b2, "kana_I" },
00343   { 0x0004b3, "kana_U" },
00344   { 0x0004b4, "kana_E" },
00345   { 0x0004b5, "kana_O" },
00346   { 0x0004b6, "kana_KA" },
00347   { 0x0004b7, "kana_KI" },
00348   { 0x0004b8, "kana_KU" },
00349   { 0x0004b9, "kana_KE" },
00350   { 0x0004ba, "kana_KO" },
00351   { 0x0004bb, "kana_SA" },
00352   { 0x0004bc, "kana_SHI" },
00353   { 0x0004bd, "kana_SU" },
00354   { 0x0004be, "kana_SE" },
00355   { 0x0004bf, "kana_SO" },
00356   { 0x0004c0, "kana_TA" },
00357   { 0x0004c1, "kana_CHI" },
00358   { 0x0004c1, "kana_TI" },
00359   { 0x0004c2, "kana_TSU" },
00360   { 0x0004c2, "kana_TU" },
00361   { 0x0004c3, "kana_TE" },
00362   { 0x0004c4, "kana_TO" },
00363   { 0x0004c5, "kana_NA" },
00364   { 0x0004c6, "kana_NI" },
00365   { 0x0004c7, "kana_NU" },
00366   { 0x0004c8, "kana_NE" },
00367   { 0x0004c9, "kana_NO" },
00368   { 0x0004ca, "kana_HA" },
00369   { 0x0004cb, "kana_HI" },
00370   { 0x0004cc, "kana_FU" },
00371   { 0x0004cc, "kana_HU" },
00372   { 0x0004cd, "kana_HE" },
00373   { 0x0004ce, "kana_HO" },
00374   { 0x0004cf, "kana_MA" },
00375   { 0x0004d0, "kana_MI" },
00376   { 0x0004d1, "kana_MU" },
00377   { 0x0004d2, "kana_ME" },
00378   { 0x0004d3, "kana_MO" },
00379   { 0x0004d4, "kana_YA" },
00380   { 0x0004d5, "kana_YU" },
00381   { 0x0004d6, "kana_YO" },
00382   { 0x0004d7, "kana_RA" },
00383   { 0x0004d8, "kana_RI" },
00384   { 0x0004d9, "kana_RU" },
00385   { 0x0004da, "kana_RE" },
00386   { 0x0004db, "kana_RO" },
00387   { 0x0004dc, "kana_WA" },
00388   { 0x0004dd, "kana_N" },
00389   { 0x0004de, "voicedsound" },
00390   { 0x0004df, "semivoicedsound" },
00391   { 0x0005ac, "Arabic_comma" },
00392   { 0x0005bb, "Arabic_semicolon" },
00393   { 0x0005bf, "Arabic_question_mark" },
00394   { 0x0005c1, "Arabic_hamza" },
00395   { 0x0005c2, "Arabic_maddaonalef" },
00396   { 0x0005c3, "Arabic_hamzaonalef" },
00397   { 0x0005c4, "Arabic_hamzaonwaw" },
00398   { 0x0005c5, "Arabic_hamzaunderalef" },
00399   { 0x0005c6, "Arabic_hamzaonyeh" },
00400   { 0x0005c7, "Arabic_alef" },
00401   { 0x0005c8, "Arabic_beh" },
00402   { 0x0005c9, "Arabic_tehmarbuta" },
00403   { 0x0005ca, "Arabic_teh" },
00404   { 0x0005cb, "Arabic_theh" },
00405   { 0x0005cc, "Arabic_jeem" },
00406   { 0x0005cd, "Arabic_hah" },
00407   { 0x0005ce, "Arabic_khah" },
00408   { 0x0005cf, "Arabic_dal" },
00409   { 0x0005d0, "Arabic_thal" },
00410   { 0x0005d1, "Arabic_ra" },
00411   { 0x0005d2, "Arabic_zain" },
00412   { 0x0005d3, "Arabic_seen" },
00413   { 0x0005d4, "Arabic_sheen" },
00414   { 0x0005d5, "Arabic_sad" },
00415   { 0x0005d6, "Arabic_dad" },
00416   { 0x0005d7, "Arabic_tah" },
00417   { 0x0005d8, "Arabic_zah" },
00418   { 0x0005d9, "Arabic_ain" },
00419   { 0x0005da, "Arabic_ghain" },
00420   { 0x0005e0, "Arabic_tatweel" },
00421   { 0x0005e1, "Arabic_feh" },
00422   { 0x0005e2, "Arabic_qaf" },
00423   { 0x0005e3, "Arabic_kaf" },
00424   { 0x0005e4, "Arabic_lam" },
00425   { 0x0005e5, "Arabic_meem" },
00426   { 0x0005e6, "Arabic_noon" },
00427   { 0x0005e7, "Arabic_ha" },
00428   { 0x0005e7, "Arabic_heh" },
00429   { 0x0005e8, "Arabic_waw" },
00430   { 0x0005e9, "Arabic_alefmaksura" },
00431   { 0x0005ea, "Arabic_yeh" },
00432   { 0x0005eb, "Arabic_fathatan" },
00433   { 0x0005ec, "Arabic_dammatan" },
00434   { 0x0005ed, "Arabic_kasratan" },
00435   { 0x0005ee, "Arabic_fatha" },
00436   { 0x0005ef, "Arabic_damma" },
00437   { 0x0005f0, "Arabic_kasra" },
00438   { 0x0005f1, "Arabic_shadda" },
00439   { 0x0005f2, "Arabic_sukun" },
00440   { 0x0006a1, "Serbian_dje" },
00441   { 0x0006a2, "Macedonia_gje" },
00442   { 0x0006a3, "Cyrillic_io" },
00443   { 0x0006a4, "Ukrainian_ie" },
00444   { 0x0006a4, "Ukranian_je" },
00445   { 0x0006a5, "Macedonia_dse" },
00446   { 0x0006a6, "Ukrainian_i" },
00447   { 0x0006a6, "Ukranian_i" },
00448   { 0x0006a7, "Ukrainian_yi" },
00449   { 0x0006a7, "Ukranian_yi" },
00450   { 0x0006a8, "Cyrillic_je" },
00451   { 0x0006a8, "Serbian_je" },
00452   { 0x0006a9, "Cyrillic_lje" },
00453   { 0x0006a9, "Serbian_lje" },
00454   { 0x0006aa, "Cyrillic_nje" },
00455   { 0x0006aa, "Serbian_nje" },
00456   { 0x0006ab, "Serbian_tshe" },
00457   { 0x0006ac, "Macedonia_kje" },
00458   { 0x0006ae, "Byelorussian_shortu" },
00459   { 0x0006af, "Cyrillic_dzhe" },
00460   { 0x0006af, "Serbian_dze" },
00461   { 0x0006b0, "numerosign" },
00462   { 0x0006b1, "Serbian_DJE" },
00463   { 0x0006b2, "Macedonia_GJE" },
00464   { 0x0006b3, "Cyrillic_IO" },
00465   { 0x0006b4, "Ukrainian_IE" },
00466   { 0x0006b4, "Ukranian_JE" },
00467   { 0x0006b5, "Macedonia_DSE" },
00468   { 0x0006b6, "Ukrainian_I" },
00469   { 0x0006b6, "Ukranian_I" },
00470   { 0x0006b7, "Ukrainian_YI" },
00471   { 0x0006b7, "Ukranian_YI" },
00472   { 0x0006b8, "Cyrillic_JE" },
00473   { 0x0006b8, "Serbian_JE" },
00474   { 0x0006b9, "Cyrillic_LJE" },
00475   { 0x0006b9, "Serbian_LJE" },
00476   { 0x0006ba, "Cyrillic_NJE" },
00477   { 0x0006ba, "Serbian_NJE" },
00478   { 0x0006bb, "Serbian_TSHE" },
00479   { 0x0006bc, "Macedonia_KJE" },
00480   { 0x0006be, "Byelorussian_SHORTU" },
00481   { 0x0006bf, "Cyrillic_DZHE" },
00482   { 0x0006bf, "Serbian_DZE" },
00483   { 0x0006c0, "Cyrillic_yu" },
00484   { 0x0006c1, "Cyrillic_a" },
00485   { 0x0006c2, "Cyrillic_be" },
00486   { 0x0006c3, "Cyrillic_tse" },
00487   { 0x0006c4, "Cyrillic_de" },
00488   { 0x0006c5, "Cyrillic_ie" },
00489   { 0x0006c6, "Cyrillic_ef" },
00490   { 0x0006c7, "Cyrillic_ghe" },
00491   { 0x0006c8, "Cyrillic_ha" },
00492   { 0x0006c9, "Cyrillic_i" },
00493   { 0x0006ca, "Cyrillic_shorti" },
00494   { 0x0006cb, "Cyrillic_ka" },
00495   { 0x0006cc, "Cyrillic_el" },
00496   { 0x0006cd, "Cyrillic_em" },
00497   { 0x0006ce, "Cyrillic_en" },
00498   { 0x0006cf, "Cyrillic_o" },
00499   { 0x0006d0, "Cyrillic_pe" },
00500   { 0x0006d1, "Cyrillic_ya" },
00501   { 0x0006d2, "Cyrillic_er" },
00502   { 0x0006d3, "Cyrillic_es" },
00503   { 0x0006d4, "Cyrillic_te" },
00504   { 0x0006d5, "Cyrillic_u" },
00505   { 0x0006d6, "Cyrillic_zhe" },
00506   { 0x0006d7, "Cyrillic_ve" },
00507   { 0x0006d8, "Cyrillic_softsign" },
00508   { 0x0006d9, "Cyrillic_yeru" },
00509   { 0x0006da, "Cyrillic_ze" },
00510   { 0x0006db, "Cyrillic_sha" },
00511   { 0x0006dc, "Cyrillic_e" },
00512   { 0x0006dd, "Cyrillic_shcha" },
00513   { 0x0006de, "Cyrillic_che" },
00514   { 0x0006df, "Cyrillic_hardsign" },
00515   { 0x0006e0, "Cyrillic_YU" },
00516   { 0x0006e1, "Cyrillic_A" },
00517   { 0x0006e2, "Cyrillic_BE" },
00518   { 0x0006e3, "Cyrillic_TSE" },
00519   { 0x0006e4, "Cyrillic_DE" },
00520   { 0x0006e5, "Cyrillic_IE" },
00521   { 0x0006e6, "Cyrillic_EF" },
00522   { 0x0006e7, "Cyrillic_GHE" },
00523   { 0x0006e8, "Cyrillic_HA" },
00524   { 0x0006e9, "Cyrillic_I" },
00525   { 0x0006ea, "Cyrillic_SHORTI" },
00526   { 0x0006eb, "Cyrillic_KA" },
00527   { 0x0006ec, "Cyrillic_EL" },
00528   { 0x0006ed, "Cyrillic_EM" },
00529   { 0x0006ee, "Cyrillic_EN" },
00530   { 0x0006ef, "Cyrillic_O" },
00531   { 0x0006f0, "Cyrillic_PE" },
00532   { 0x0006f1, "Cyrillic_YA" },
00533   { 0x0006f2, "Cyrillic_ER" },
00534   { 0x0006f3, "Cyrillic_ES" },
00535   { 0x0006f4, "Cyrillic_TE" },
00536   { 0x0006f5, "Cyrillic_U" },
00537   { 0x0006f6, "Cyrillic_ZHE" },
00538   { 0x0006f7, "Cyrillic_VE" },
00539   { 0x0006f8, "Cyrillic_SOFTSIGN" },
00540   { 0x0006f9, "Cyrillic_YERU" },
00541   { 0x0006fa, "Cyrillic_ZE" },
00542   { 0x0006fb, "Cyrillic_SHA" },
00543   { 0x0006fc, "Cyrillic_E" },
00544   { 0x0006fd, "Cyrillic_SHCHA" },
00545   { 0x0006fe, "Cyrillic_CHE" },
00546   { 0x0006ff, "Cyrillic_HARDSIGN" },
00547   { 0x0007a1, "Greek_ALPHAaccent" },
00548   { 0x0007a2, "Greek_EPSILONaccent" },
00549   { 0x0007a3, "Greek_ETAaccent" },
00550   { 0x0007a4, "Greek_IOTAaccent" },
00551   { 0x0007a5, "Greek_IOTAdieresis" },
00552   { 0x0007a5, "Greek_IOTAdiaeresis" },
00553   { 0x0007a7, "Greek_OMICRONaccent" },
00554   { 0x0007a8, "Greek_UPSILONaccent" },
00555   { 0x0007a9, "Greek_UPSILONdieresis" },
00556   { 0x0007ab, "Greek_OMEGAaccent" },
00557   { 0x0007ae, "Greek_accentdieresis" },
00558   { 0x0007af, "Greek_horizbar" },
00559   { 0x0007b1, "Greek_alphaaccent" },
00560   { 0x0007b2, "Greek_epsilonaccent" },
00561   { 0x0007b3, "Greek_etaaccent" },
00562   { 0x0007b4, "Greek_iotaaccent" },
00563   { 0x0007b5, "Greek_iotadieresis" },
00564   { 0x0007b6, "Greek_iotaaccentdieresis" },
00565   { 0x0007b7, "Greek_omicronaccent" },
00566   { 0x0007b8, "Greek_upsilonaccent" },
00567   { 0x0007b9, "Greek_upsilondieresis" },
00568   { 0x0007ba, "Greek_upsilonaccentdieresis" },
00569   { 0x0007bb, "Greek_omegaaccent" },
00570   { 0x0007c1, "Greek_ALPHA" },
00571   { 0x0007c2, "Greek_BETA" },
00572   { 0x0007c3, "Greek_GAMMA" },
00573   { 0x0007c4, "Greek_DELTA" },
00574   { 0x0007c5, "Greek_EPSILON" },
00575   { 0x0007c6, "Greek_ZETA" },
00576   { 0x0007c7, "Greek_ETA" },
00577   { 0x0007c8, "Greek_THETA" },
00578   { 0x0007c9, "Greek_IOTA" },
00579   { 0x0007ca, "Greek_KAPPA" },
00580   { 0x0007cb, "Greek_LAMBDA" },
00581   { 0x0007cb, "Greek_LAMDA" },
00582   { 0x0007cc, "Greek_MU" },
00583   { 0x0007cd, "Greek_NU" },
00584   { 0x0007ce, "Greek_XI" },
00585   { 0x0007cf, "Greek_OMICRON" },
00586   { 0x0007d0, "Greek_PI" },
00587   { 0x0007d1, "Greek_RHO" },
00588   { 0x0007d2, "Greek_SIGMA" },
00589   { 0x0007d4, "Greek_TAU" },
00590   { 0x0007d5, "Greek_UPSILON" },
00591   { 0x0007d6, "Greek_PHI" },
00592   { 0x0007d7, "Greek_CHI" },
00593   { 0x0007d8, "Greek_PSI" },
00594   { 0x0007d9, "Greek_OMEGA" },
00595   { 0x0007e1, "Greek_alpha" },
00596   { 0x0007e2, "Greek_beta" },
00597   { 0x0007e3, "Greek_gamma" },
00598   { 0x0007e4, "Greek_delta" },
00599   { 0x0007e5, "Greek_epsilon" },
00600   { 0x0007e6, "Greek_zeta" },
00601   { 0x0007e7, "Greek_eta" },
00602   { 0x0007e8, "Greek_theta" },
00603   { 0x0007e9, "Greek_iota" },
00604   { 0x0007ea, "Greek_kappa" },
00605   { 0x0007eb, "Greek_lambda" },
00606   { 0x0007eb, "Greek_lamda" },
00607   { 0x0007ec, "Greek_mu" },
00608   { 0x0007ed, "Greek_nu" },
00609   { 0x0007ee, "Greek_xi" },
00610   { 0x0007ef, "Greek_omicron" },
00611   { 0x0007f0, "Greek_pi" },
00612   { 0x0007f1, "Greek_rho" },
00613   { 0x0007f2, "Greek_sigma" },
00614   { 0x0007f3, "Greek_finalsmallsigma" },
00615   { 0x0007f4, "Greek_tau" },
00616   { 0x0007f5, "Greek_upsilon" },
00617   { 0x0007f6, "Greek_phi" },
00618   { 0x0007f7, "Greek_chi" },
00619   { 0x0007f8, "Greek_psi" },
00620   { 0x0007f9, "Greek_omega" },
00621   { 0x0008a1, "leftradical" },
00622   { 0x0008a2, "topleftradical" },
00623   { 0x0008a3, "horizconnector" },
00624   { 0x0008a4, "topintegral" },
00625   { 0x0008a5, "botintegral" },
00626   { 0x0008a6, "vertconnector" },
00627   { 0x0008a7, "topleftsqbracket" },
00628   { 0x0008a8, "botleftsqbracket" },
00629   { 0x0008a9, "toprightsqbracket" },
00630   { 0x0008aa, "botrightsqbracket" },
00631   { 0x0008ab, "topleftparens" },
00632   { 0x0008ac, "botleftparens" },
00633   { 0x0008ad, "toprightparens" },
00634   { 0x0008ae, "botrightparens" },
00635   { 0x0008af, "leftmiddlecurlybrace" },
00636   { 0x0008b0, "rightmiddlecurlybrace" },
00637   { 0x0008b1, "topleftsummation" },
00638   { 0x0008b2, "botleftsummation" },
00639   { 0x0008b3, "topvertsummationconnector" },
00640   { 0x0008b4, "botvertsummationconnector" },
00641   { 0x0008b5, "toprightsummation" },
00642   { 0x0008b6, "botrightsummation" },
00643   { 0x0008b7, "rightmiddlesummation" },
00644   { 0x0008bc, "lessthanequal" },
00645   { 0x0008bd, "notequal" },
00646   { 0x0008be, "greaterthanequal" },
00647   { 0x0008bf, "integral" },
00648   { 0x0008c0, "therefore" },
00649   { 0x0008c1, "variation" },
00650   { 0x0008c2, "infinity" },
00651   { 0x0008c5, "nabla" },
00652   { 0x0008c8, "approximate" },
00653   { 0x0008c9, "similarequal" },
00654   { 0x0008cd, "ifonlyif" },
00655   { 0x0008ce, "implies" },
00656   { 0x0008cf, "identical" },
00657   { 0x0008d6, "radical" },
00658   { 0x0008da, "includedin" },
00659   { 0x0008db, "includes" },
00660   { 0x0008dc, "intersection" },
00661   { 0x0008dd, "union" },
00662   { 0x0008de, "logicaland" },
00663   { 0x0008df, "logicalor" },
00664   { 0x0008ef, "partialderivative" },
00665   { 0x0008f6, "function" },
00666   { 0x0008fb, "leftarrow" },
00667   { 0x0008fc, "uparrow" },
00668   { 0x0008fd, "rightarrow" },
00669   { 0x0008fe, "downarrow" },
00670   { 0x0009df, "blank" },
00671   { 0x0009e0, "soliddiamond" },
00672   { 0x0009e1, "checkerboard" },
00673   { 0x0009e2, "ht" },
00674   { 0x0009e3, "ff" },
00675   { 0x0009e4, "cr" },
00676   { 0x0009e5, "lf" },
00677   { 0x0009e8, "nl" },
00678   { 0x0009e9, "vt" },
00679   { 0x0009ea, "lowrightcorner" },
00680   { 0x0009eb, "uprightcorner" },
00681   { 0x0009ec, "upleftcorner" },
00682   { 0x0009ed, "lowleftcorner" },
00683   { 0x0009ee, "crossinglines" },
00684   { 0x0009ef, "horizlinescan1" },
00685   { 0x0009f0, "horizlinescan3" },
00686   { 0x0009f1, "horizlinescan5" },
00687   { 0x0009f2, "horizlinescan7" },
00688   { 0x0009f3, "horizlinescan9" },
00689   { 0x0009f4, "leftt" },
00690   { 0x0009f5, "rightt" },
00691   { 0x0009f6, "bott" },
00692   { 0x0009f7, "topt" },
00693   { 0x0009f8, "vertbar" },
00694   { 0x000aa1, "emspace" },
00695   { 0x000aa2, "enspace" },
00696   { 0x000aa3, "em3space" },
00697   { 0x000aa4, "em4space" },
00698   { 0x000aa5, "digitspace" },
00699   { 0x000aa6, "punctspace" },
00700   { 0x000aa7, "thinspace" },
00701   { 0x000aa8, "hairspace" },
00702   { 0x000aa9, "emdash" },
00703   { 0x000aaa, "endash" },
00704   { 0x000aac, "signifblank" },
00705   { 0x000aae, "ellipsis" },
00706   { 0x000aaf, "doubbaselinedot" },
00707   { 0x000ab0, "onethird" },
00708   { 0x000ab1, "twothirds" },
00709   { 0x000ab2, "onefifth" },
00710   { 0x000ab3, "twofifths" },
00711   { 0x000ab4, "threefifths" },
00712   { 0x000ab5, "fourfifths" },
00713   { 0x000ab6, "onesixth" },
00714   { 0x000ab7, "fivesixths" },
00715   { 0x000ab8, "careof" },
00716   { 0x000abb, "figdash" },
00717   { 0x000abc, "leftanglebracket" },
00718   { 0x000abd, "decimalpoint" },
00719   { 0x000abe, "rightanglebracket" },
00720   { 0x000abf, "marker" },
00721   { 0x000ac3, "oneeighth" },
00722   { 0x000ac4, "threeeighths" },
00723   { 0x000ac5, "fiveeighths" },
00724   { 0x000ac6, "seveneighths" },
00725   { 0x000ac9, "trademark" },
00726   { 0x000aca, "signaturemark" },
00727   { 0x000acb, "trademarkincircle" },
00728   { 0x000acc, "leftopentriangle" },
00729   { 0x000acd, "rightopentriangle" },
00730   { 0x000ace, "emopencircle" },
00731   { 0x000acf, "emopenrectangle" },
00732   { 0x000ad0, "leftsinglequotemark" },
00733   { 0x000ad1, "rightsinglequotemark" },
00734   { 0x000ad2, "leftdoublequotemark" },
00735   { 0x000ad3, "rightdoublequotemark" },
00736   { 0x000ad4, "prescription" },
00737   { 0x000ad6, "minutes" },
00738   { 0x000ad7, "seconds" },
00739   { 0x000ad9, "latincross" },
00740   { 0x000ada, "hexagram" },
00741   { 0x000adb, "filledrectbullet" },
00742   { 0x000adc, "filledlefttribullet" },
00743   { 0x000add, "filledrighttribullet" },
00744   { 0x000ade, "emfilledcircle" },
00745   { 0x000adf, "emfilledrect" },
00746   { 0x000ae0, "enopencircbullet" },
00747   { 0x000ae1, "enopensquarebullet" },
00748   { 0x000ae2, "openrectbullet" },
00749   { 0x000ae3, "opentribulletup" },
00750   { 0x000ae4, "opentribulletdown" },
00751   { 0x000ae5, "openstar" },
00752   { 0x000ae6, "enfilledcircbullet" },
00753   { 0x000ae7, "enfilledsqbullet" },
00754   { 0x000ae8, "filledtribulletup" },
00755   { 0x000ae9, "filledtribulletdown" },
00756   { 0x000aea, "leftpointer" },
00757   { 0x000aeb, "rightpointer" },
00758   { 0x000aec, "club" },
00759   { 0x000aed, "diamond" },
00760   { 0x000aee, "heart" },
00761   { 0x000af0, "maltesecross" },
00762   { 0x000af1, "dagger" },
00763   { 0x000af2, "doubledagger" },
00764   { 0x000af3, "checkmark" },
00765   { 0x000af4, "ballotcross" },
00766   { 0x000af5, "musicalsharp" },
00767   { 0x000af6, "musicalflat" },
00768   { 0x000af7, "malesymbol" },
00769   { 0x000af8, "femalesymbol" },
00770   { 0x000af9, "telephone" },
00771   { 0x000afa, "telephonerecorder" },
00772   { 0x000afb, "phonographcopyright" },
00773   { 0x000afc, "caret" },
00774   { 0x000afd, "singlelowquotemark" },
00775   { 0x000afe, "doublelowquotemark" },
00776   { 0x000aff, "cursor" },
00777   { 0x000ba3, "leftcaret" },
00778   { 0x000ba6, "rightcaret" },
00779   { 0x000ba8, "downcaret" },
00780   { 0x000ba9, "upcaret" },
00781   { 0x000bc0, "overbar" },
00782   { 0x000bc2, "downtack" },
00783   { 0x000bc3, "upshoe" },
00784   { 0x000bc4, "downstile" },
00785   { 0x000bc6, "underbar" },
00786   { 0x000bca, "jot" },
00787   { 0x000bcc, "quad" },
00788   { 0x000bce, "uptack" },
00789   { 0x000bcf, "circle" },
00790   { 0x000bd3, "upstile" },
00791   { 0x000bd6, "downshoe" },
00792   { 0x000bd8, "rightshoe" },
00793   { 0x000bda, "leftshoe" },
00794   { 0x000bdc, "lefttack" },
00795   { 0x000bfc, "righttack" },
00796   { 0x000cdf, "hebrew_doublelowline" },
00797   { 0x000ce0, "hebrew_aleph" },
00798   { 0x000ce1, "hebrew_bet" },
00799   { 0x000ce1, "hebrew_beth" },
00800   { 0x000ce2, "hebrew_gimel" },
00801   { 0x000ce2, "hebrew_gimmel" },
00802   { 0x000ce3, "hebrew_dalet" },
00803   { 0x000ce3, "hebrew_daleth" },
00804   { 0x000ce4, "hebrew_he" },
00805   { 0x000ce5, "hebrew_waw" },
00806   { 0x000ce6, "hebrew_zain" },
00807   { 0x000ce6, "hebrew_zayin" },
00808   { 0x000ce7, "hebrew_chet" },
00809   { 0x000ce7, "hebrew_het" },
00810   { 0x000ce8, "hebrew_tet" },
00811   { 0x000ce8, "hebrew_teth" },
00812   { 0x000ce9, "hebrew_yod" },
00813   { 0x000cea, "hebrew_finalkaph" },
00814   { 0x000ceb, "hebrew_kaph" },
00815   { 0x000cec, "hebrew_lamed" },
00816   { 0x000ced, "hebrew_finalmem" },
00817   { 0x000cee, "hebrew_mem" },
00818   { 0x000cef, "hebrew_finalnun" },
00819   { 0x000cf0, "hebrew_nun" },
00820   { 0x000cf1, "hebrew_samech" },
00821   { 0x000cf1, "hebrew_samekh" },
00822   { 0x000cf2, "hebrew_ayin" },
00823   { 0x000cf3, "hebrew_finalpe" },
00824   { 0x000cf4, "hebrew_pe" },
00825   { 0x000cf5, "hebrew_finalzade" },
00826   { 0x000cf5, "hebrew_finalzadi" },
00827   { 0x000cf6, "hebrew_zade" },
00828   { 0x000cf6, "hebrew_zadi" },
00829   { 0x000cf7, "hebrew_kuf" },
00830   { 0x000cf7, "hebrew_qoph" },
00831   { 0x000cf8, "hebrew_resh" },
00832   { 0x000cf9, "hebrew_shin" },
00833   { 0x000cfa, "hebrew_taf" },
00834   { 0x000cfa, "hebrew_taw" },
00835   { 0x000da1, "Thai_kokai" },
00836   { 0x000da2, "Thai_khokhai" },
00837   { 0x000da3, "Thai_khokhuat" },
00838   { 0x000da4, "Thai_khokhwai" },
00839   { 0x000da5, "Thai_khokhon" },
00840   { 0x000da6, "Thai_khorakhang" },
00841   { 0x000da7, "Thai_ngongu" },
00842   { 0x000da8, "Thai_chochan" },
00843   { 0x000da9, "Thai_choching" },
00844   { 0x000daa, "Thai_chochang" },
00845   { 0x000dab, "Thai_soso" },
00846   { 0x000dac, "Thai_chochoe" },
00847   { 0x000dad, "Thai_yoying" },
00848   { 0x000dae, "Thai_dochada" },
00849   { 0x000daf, "Thai_topatak" },
00850   { 0x000db0, "Thai_thothan" },
00851   { 0x000db1, "Thai_thonangmontho" },
00852   { 0x000db2, "Thai_thophuthao" },
00853   { 0x000db3, "Thai_nonen" },
00854   { 0x000db4, "Thai_dodek" },
00855   { 0x000db5, "Thai_totao" },
00856   { 0x000db6, "Thai_thothung" },
00857   { 0x000db7, "Thai_thothahan" },
00858   { 0x000db8, "Thai_thothong" },
00859   { 0x000db9, "Thai_nonu" },
00860   { 0x000dba, "Thai_bobaimai" },
00861   { 0x000dbb, "Thai_popla" },
00862   { 0x000dbc, "Thai_phophung" },
00863   { 0x000dbd, "Thai_fofa" },
00864   { 0x000dbe, "Thai_phophan" },
00865   { 0x000dbf, "Thai_fofan" },
00866   { 0x000dc0, "Thai_phosamphao" },
00867   { 0x000dc1, "Thai_moma" },
00868   { 0x000dc2, "Thai_yoyak" },
00869   { 0x000dc3, "Thai_rorua" },
00870   { 0x000dc4, "Thai_ru" },
00871   { 0x000dc5, "Thai_loling" },
00872   { 0x000dc6, "Thai_lu" },
00873   { 0x000dc7, "Thai_wowaen" },
00874   { 0x000dc8, "Thai_sosala" },
00875   { 0x000dc9, "Thai_sorusi" },
00876   { 0x000dca, "Thai_sosua" },
00877   { 0x000dcb, "Thai_hohip" },
00878   { 0x000dcc, "Thai_lochula" },
00879   { 0x000dcd, "Thai_oang" },
00880   { 0x000dce, "Thai_honokhuk" },
00881   { 0x000dcf, "Thai_paiyannoi" },
00882   { 0x000dd0, "Thai_saraa" },
00883   { 0x000dd1, "Thai_maihanakat" },
00884   { 0x000dd2, "Thai_saraaa" },
00885   { 0x000dd3, "Thai_saraam" },
00886   { 0x000dd4, "Thai_sarai" },
00887   { 0x000dd5, "Thai_saraii" },
00888   { 0x000dd6, "Thai_saraue" },
00889   { 0x000dd7, "Thai_sarauee" },
00890   { 0x000dd8, "Thai_sarau" },
00891   { 0x000dd9, "Thai_sarauu" },
00892   { 0x000dda, "Thai_phinthu" },
00893   { 0x000dde, "Thai_maihanakat_maitho" },
00894   { 0x000ddf, "Thai_baht" },
00895   { 0x000de0, "Thai_sarae" },
00896   { 0x000de1, "Thai_saraae" },
00897   { 0x000de2, "Thai_sarao" },
00898   { 0x000de3, "Thai_saraaimaimuan" },
00899   { 0x000de4, "Thai_saraaimaimalai" },
00900   { 0x000de5, "Thai_lakkhangyao" },
00901   { 0x000de6, "Thai_maiyamok" },
00902   { 0x000de7, "Thai_maitaikhu" },
00903   { 0x000de8, "Thai_maiek" },
00904   { 0x000de9, "Thai_maitho" },
00905   { 0x000dea, "Thai_maitri" },
00906   { 0x000deb, "Thai_maichattawa" },
00907   { 0x000dec, "Thai_thanthakhat" },
00908   { 0x000ded, "Thai_nikhahit" },
00909   { 0x000df0, "Thai_leksun" },
00910   { 0x000df1, "Thai_leknung" },
00911   { 0x000df2, "Thai_leksong" },
00912   { 0x000df3, "Thai_leksam" },
00913   { 0x000df4, "Thai_leksi" },
00914   { 0x000df5, "Thai_lekha" },
00915   { 0x000df6, "Thai_lekhok" },
00916   { 0x000df7, "Thai_lekchet" },
00917   { 0x000df8, "Thai_lekpaet" },
00918   { 0x000df9, "Thai_lekkao" },
00919   { 0x000ea1, "Hangul_Kiyeog" },
00920   { 0x000ea2, "Hangul_SsangKiyeog" },
00921   { 0x000ea3, "Hangul_KiyeogSios" },
00922   { 0x000ea4, "Hangul_Nieun" },
00923   { 0x000ea5, "Hangul_NieunJieuj" },
00924   { 0x000ea6, "Hangul_NieunHieuh" },
00925   { 0x000ea7, "Hangul_Dikeud" },
00926   { 0x000ea8, "Hangul_SsangDikeud" },
00927   { 0x000ea9, "Hangul_Rieul" },
00928   { 0x000eaa, "Hangul_RieulKiyeog" },
00929   { 0x000eab, "Hangul_RieulMieum" },
00930   { 0x000eac, "Hangul_RieulPieub" },
00931   { 0x000ead, "Hangul_RieulSios" },
00932   { 0x000eae, "Hangul_RieulTieut" },
00933   { 0x000eaf, "Hangul_RieulPhieuf" },
00934   { 0x000eb0, "Hangul_RieulHieuh" },
00935   { 0x000eb1, "Hangul_Mieum" },
00936   { 0x000eb2, "Hangul_Pieub" },
00937   { 0x000eb3, "Hangul_SsangPieub" },
00938   { 0x000eb4, "Hangul_PieubSios" },
00939   { 0x000eb5, "Hangul_Sios" },
00940   { 0x000eb6, "Hangul_SsangSios" },
00941   { 0x000eb7, "Hangul_Ieung" },
00942   { 0x000eb8, "Hangul_Jieuj" },
00943   { 0x000eb9, "Hangul_SsangJieuj" },
00944   { 0x000eba, "Hangul_Cieuc" },
00945   { 0x000ebb, "Hangul_Khieuq" },
00946   { 0x000ebc, "Hangul_Tieut" },
00947   { 0x000ebd, "Hangul_Phieuf" },
00948   { 0x000ebe, "Hangul_Hieuh" },
00949   { 0x000ebf, "Hangul_A" },
00950   { 0x000ec0, "Hangul_AE" },
00951   { 0x000ec1, "Hangul_YA" },
00952   { 0x000ec2, "Hangul_YAE" },
00953   { 0x000ec3, "Hangul_EO" },
00954   { 0x000ec4, "Hangul_E" },
00955   { 0x000ec5, "Hangul_YEO" },
00956   { 0x000ec6, "Hangul_YE" },
00957   { 0x000ec7, "Hangul_O" },
00958   { 0x000ec8, "Hangul_WA" },
00959   { 0x000ec9, "Hangul_WAE" },
00960   { 0x000eca, "Hangul_OE" },
00961   { 0x000ecb, "Hangul_YO" },
00962   { 0x000ecc, "Hangul_U" },
00963   { 0x000ecd, "Hangul_WEO" },
00964   { 0x000ece, "Hangul_WE" },
00965   { 0x000ecf, "Hangul_WI" },
00966   { 0x000ed0, "Hangul_YU" },
00967   { 0x000ed1, "Hangul_EU" },
00968   { 0x000ed2, "Hangul_YI" },
00969   { 0x000ed3, "Hangul_I" },
00970   { 0x000ed4, "Hangul_J_Kiyeog" },
00971   { 0x000ed5, "Hangul_J_SsangKiyeog" },
00972   { 0x000ed6, "Hangul_J_KiyeogSios" },
00973   { 0x000ed7, "Hangul_J_Nieun" },
00974   { 0x000ed8, "Hangul_J_NieunJieuj" },
00975   { 0x000ed9, "Hangul_J_NieunHieuh" },
00976   { 0x000eda, "Hangul_J_Dikeud" },
00977   { 0x000edb, "Hangul_J_Rieul" },
00978   { 0x000edc, "Hangul_J_RieulKiyeog" },
00979   { 0x000edd, "Hangul_J_RieulMieum" },
00980   { 0x000ede, "Hangul_J_RieulPieub" },
00981   { 0x000edf, "Hangul_J_RieulSios" },
00982   { 0x000ee0, "Hangul_J_RieulTieut" },
00983   { 0x000ee1, "Hangul_J_RieulPhieuf" },
00984   { 0x000ee2, "Hangul_J_RieulHieuh" },
00985   { 0x000ee3, "Hangul_J_Mieum" },
00986   { 0x000ee4, "Hangul_J_Pieub" },
00987   { 0x000ee5, "Hangul_J_PieubSios" },
00988   { 0x000ee6, "Hangul_J_Sios" },
00989   { 0x000ee7, "Hangul_J_SsangSios" },
00990   { 0x000ee8, "Hangul_J_Ieung" },
00991   { 0x000ee9, "Hangul_J_Jieuj" },
00992   { 0x000eea, "Hangul_J_Cieuc" },
00993   { 0x000eeb, "Hangul_J_Khieuq" },
00994   { 0x000eec, "Hangul_J_Tieut" },
00995   { 0x000eed, "Hangul_J_Phieuf" },
00996   { 0x000eee, "Hangul_J_Hieuh" },
00997   { 0x000eef, "Hangul_RieulYeorinHieuh" },
00998   { 0x000ef0, "Hangul_SunkyeongeumMieum" },
00999   { 0x000ef1, "Hangul_SunkyeongeumPieub" },
01000   { 0x000ef2, "Hangul_PanSios" },
01001   { 0x000ef3, "Hangul_KkogjiDalrinIeung" },
01002   { 0x000ef4, "Hangul_SunkyeongeumPhieuf" },
01003   { 0x000ef5, "Hangul_YeorinHieuh" },
01004   { 0x000ef6, "Hangul_AraeA" },
01005   { 0x000ef7, "Hangul_AraeAE" },
01006   { 0x000ef8, "Hangul_J_PanSios" },
01007   { 0x000ef9, "Hangul_J_KkogjiDalrinIeung" },
01008   { 0x000efa, "Hangul_J_YeorinHieuh" },
01009   { 0x000eff, "Korean_Won" },
01010   { 0x0013bc, "OE" },
01011   { 0x0013bd, "oe" },
01012   { 0x0013be, "Ydiaeresis" },
01013   { 0x0020a0, "EcuSign" },
01014   { 0x0020a1, "ColonSign" },
01015   { 0x0020a2, "CruzeiroSign" },
01016   { 0x0020a3, "FFrancSign" },
01017   { 0x0020a4, "LiraSign" },
01018   { 0x0020a5, "MillSign" },
01019   { 0x0020a6, "NairaSign" },
01020   { 0x0020a7, "PesetaSign" },
01021   { 0x0020a8, "RupeeSign" },
01022   { 0x0020a9, "WonSign" },
01023   { 0x0020aa, "NewSheqelSign" },
01024   { 0x0020ab, "DongSign" },
01025   { 0x0020ac, "EuroSign" },
01026   { 0x00fd01, "3270_Duplicate" },
01027   { 0x00fd02, "3270_FieldMark" },
01028   { 0x00fd03, "3270_Right2" },
01029   { 0x00fd04, "3270_Left2" },
01030   { 0x00fd05, "3270_BackTab" },
01031   { 0x00fd06, "3270_EraseEOF" },
01032   { 0x00fd07, "3270_EraseInput" },
01033   { 0x00fd08, "3270_Reset" },
01034   { 0x00fd09, "3270_Quit" },
01035   { 0x00fd0a, "3270_PA1" },
01036   { 0x00fd0b, "3270_PA2" },
01037   { 0x00fd0c, "3270_PA3" },
01038   { 0x00fd0d, "3270_Test" },
01039   { 0x00fd0e, "3270_Attn" },
01040   { 0x00fd0f, "3270_CursorBlink" },
01041   { 0x00fd10, "3270_AltCursor" },
01042   { 0x00fd11, "3270_KeyClick" },
01043   { 0x00fd12, "3270_Jump" },
01044   { 0x00fd13, "3270_Ident" },
01045   { 0x00fd14, "3270_Rule" },
01046   { 0x00fd15, "3270_Copy" },
01047   { 0x00fd16, "3270_Play" },
01048   { 0x00fd17, "3270_Setup" },
01049   { 0x00fd18, "3270_Record" },
01050   { 0x00fd19, "3270_ChangeScreen" },
01051   { 0x00fd1a, "3270_DeleteWord" },
01052   { 0x00fd1b, "3270_ExSelect" },
01053   { 0x00fd1c, "3270_CursorSelect" },
01054   { 0x00fd1d, "3270_PrintScreen" },
01055   { 0x00fd1e, "3270_Enter" },
01056   { 0x00fe01, "ISO_Lock" },
01057   { 0x00fe02, "ISO_Level2_Latch" },
01058   { 0x00fe03, "ISO_Level3_Shift" },
01059   { 0x00fe04, "ISO_Level3_Latch" },
01060   { 0x00fe05, "ISO_Level3_Lock" },
01061   { 0x00fe06, "ISO_Group_Latch" },
01062   { 0x00fe07, "ISO_Group_Lock" },
01063   { 0x00fe08, "ISO_Next_Group" },
01064   { 0x00fe09, "ISO_Next_Group_Lock" },
01065   { 0x00fe0a, "ISO_Prev_Group" },
01066   { 0x00fe0b, "ISO_Prev_Group_Lock" },
01067   { 0x00fe0c, "ISO_First_Group" },
01068   { 0x00fe0d, "ISO_First_Group_Lock" },
01069   { 0x00fe0e, "ISO_Last_Group" },
01070   { 0x00fe0f, "ISO_Last_Group_Lock" },
01071   { 0x00fe20, "ISO_Left_Tab" },
01072   { 0x00fe21, "ISO_Move_Line_Up" },
01073   { 0x00fe22, "ISO_Move_Line_Down" },
01074   { 0x00fe23, "ISO_Partial_Line_Up" },
01075   { 0x00fe24, "ISO_Partial_Line_Down" },
01076   { 0x00fe25, "ISO_Partial_Space_Left" },
01077   { 0x00fe26, "ISO_Partial_Space_Right" },
01078   { 0x00fe27, "ISO_Set_Margin_Left" },
01079   { 0x00fe28, "ISO_Set_Margin_Right" },
01080   { 0x00fe29, "ISO_Release_Margin_Left" },
01081   { 0x00fe2a, "ISO_Release_Margin_Right" },
01082   { 0x00fe2b, "ISO_Release_Both_Margins" },
01083   { 0x00fe2c, "ISO_Fast_Cursor_Left" },
01084   { 0x00fe2d, "ISO_Fast_Cursor_Right" },
01085   { 0x00fe2e, "ISO_Fast_Cursor_Up" },
01086   { 0x00fe2f, "ISO_Fast_Cursor_Down" },
01087   { 0x00fe30, "ISO_Continuous_Underline" },
01088   { 0x00fe31, "ISO_Discontinuous_Underline" },
01089   { 0x00fe32, "ISO_Emphasize" },
01090   { 0x00fe33, "ISO_Center_Object" },
01091   { 0x00fe34, "ISO_Enter" },
01092   { 0x00fe50, "dead_grave" },
01093   { 0x00fe51, "dead_acute" },
01094   { 0x00fe52, "dead_circumflex" },
01095   { 0x00fe53, "dead_tilde" },
01096   { 0x00fe54, "dead_macron" },
01097   { 0x00fe55, "dead_breve" },
01098   { 0x00fe56, "dead_abovedot" },
01099   { 0x00fe57, "dead_diaeresis" },
01100   { 0x00fe58, "dead_abovering" },
01101   { 0x00fe59, "dead_doubleacute" },
01102   { 0x00fe5a, "dead_caron" },
01103   { 0x00fe5b, "dead_cedilla" },
01104   { 0x00fe5c, "dead_ogonek" },
01105   { 0x00fe5d, "dead_iota" },
01106   { 0x00fe5e, "dead_voiced_sound" },
01107   { 0x00fe5f, "dead_semivoiced_sound" },
01108   { 0x00fe60, "dead_belowdot" },
01109   { 0x00fe70, "AccessX_Enable" },
01110   { 0x00fe71, "AccessX_Feedback_Enable" },
01111   { 0x00fe72, "RepeatKeys_Enable" },
01112   { 0x00fe73, "SlowKeys_Enable" },
01113   { 0x00fe74, "BounceKeys_Enable" },
01114   { 0x00fe75, "StickyKeys_Enable" },
01115   { 0x00fe76, "MouseKeys_Enable" },
01116   { 0x00fe77, "MouseKeys_Accel_Enable" },
01117   { 0x00fe78, "Overlay1_Enable" },
01118   { 0x00fe79, "Overlay2_Enable" },
01119   { 0x00fe7a, "AudibleBell_Enable" },
01120   { 0x00fed0, "First_Virtual_Screen" },
01121   { 0x00fed1, "Prev_Virtual_Screen" },
01122   { 0x00fed2, "Next_Virtual_Screen" },
01123   { 0x00fed4, "Last_Virtual_Screen" },
01124   { 0x00fed5, "Terminate_Server" },
01125   { 0x00fee0, "Pointer_Left" },
01126   { 0x00fee1, "Pointer_Right" },
01127   { 0x00fee2, "Pointer_Up" },
01128   { 0x00fee3, "Pointer_Down" },
01129   { 0x00fee4, "Pointer_UpLeft" },
01130   { 0x00fee5, "Pointer_UpRight" },
01131   { 0x00fee6, "Pointer_DownLeft" },
01132   { 0x00fee7, "Pointer_DownRight" },
01133   { 0x00fee8, "Pointer_Button_Dflt" },
01134   { 0x00fee9, "Pointer_Button1" },
01135   { 0x00feea, "Pointer_Button2" },
01136   { 0x00feeb, "Pointer_Button3" },
01137   { 0x00feec, "Pointer_Button4" },
01138   { 0x00feed, "Pointer_Button5" },
01139   { 0x00feee, "Pointer_DblClick_Dflt" },
01140   { 0x00feef, "Pointer_DblClick1" },
01141   { 0x00fef0, "Pointer_DblClick2" },
01142   { 0x00fef1, "Pointer_DblClick3" },
01143   { 0x00fef2, "Pointer_DblClick4" },
01144   { 0x00fef3, "Pointer_DblClick5" },
01145   { 0x00fef4, "Pointer_Drag_Dflt" },
01146   { 0x00fef5, "Pointer_Drag1" },
01147   { 0x00fef6, "Pointer_Drag2" },
01148   { 0x00fef7, "Pointer_Drag3" },
01149   { 0x00fef8, "Pointer_Drag4" },
01150   { 0x00fef9, "Pointer_EnableKeys" },
01151   { 0x00fefa, "Pointer_Accelerate" },
01152   { 0x00fefb, "Pointer_DfltBtnNext" },
01153   { 0x00fefc, "Pointer_DfltBtnPrev" },
01154   { 0x00fefd, "Pointer_Drag5" },
01155   { 0x00ff08, "BackSpace" },
01156   { 0x00ff09, "Tab" },
01157   { 0x00ff0a, "Linefeed" },
01158   { 0x00ff0b, "Clear" },
01159   { 0x00ff0d, "Return" },
01160   { 0x00ff13, "Pause" },
01161   { 0x00ff14, "Scroll_Lock" },
01162   { 0x00ff15, "Sys_Req" },
01163   { 0x00ff1b, "Escape" },
01164   { 0x00ff20, "Multi_key" },
01165   { 0x00ff21, "Kanji" },
01166   { 0x00ff22, "Muhenkan" },
01167   { 0x00ff23, "Henkan" },
01168   { 0x00ff23, "Henkan_Mode" },
01169   { 0x00ff24, "Romaji" },
01170   { 0x00ff25, "Hiragana" },
01171   { 0x00ff26, "Katakana" },
01172   { 0x00ff27, "Hiragana_Katakana" },
01173   { 0x00ff28, "Zenkaku" },
01174   { 0x00ff29, "Hankaku" },
01175   { 0x00ff2a, "Zenkaku_Hankaku" },
01176   { 0x00ff2b, "Touroku" },
01177   { 0x00ff2c, "Massyo" },
01178   { 0x00ff2d, "Kana_Lock" },
01179   { 0x00ff2e, "Kana_Shift" },
01180   { 0x00ff2f, "Eisu_Shift" },
01181   { 0x00ff30, "Eisu_toggle" },
01182   { 0x00ff31, "Hangul" },
01183   { 0x00ff32, "Hangul_Start" },
01184   { 0x00ff33, "Hangul_End" },
01185   { 0x00ff34, "Hangul_Hanja" },
01186   { 0x00ff35, "Hangul_Jamo" },
01187   { 0x00ff36, "Hangul_Romaja" },
01188   { 0x00ff37, "Codeinput" },
01189   { 0x00ff38, "Hangul_Jeonja" },
01190   { 0x00ff39, "Hangul_Banja" },
01191   { 0x00ff3a, "Hangul_PreHanja" },
01192   { 0x00ff3b, "Hangul_PostHanja" },
01193   { 0x00ff3c, "SingleCandidate" },
01194   { 0x00ff3d, "MultipleCandidate" },
01195   { 0x00ff3e, "PreviousCandidate" },
01196   { 0x00ff3f, "Hangul_Special" },
01197   { 0x00ff50, "Home" },
01198   { 0x00ff51, "Left" },
01199   { 0x00ff52, "Up" },
01200   { 0x00ff53, "Right" },
01201   { 0x00ff54, "Down" },
01202   { 0x00ff55, "Page_Up" },
01203   { 0x00ff55, "Prior" },
01204   { 0x00ff56, "Page_Down" },
01205   { 0x00ff56, "Next" },
01206   { 0x00ff57, "End" },
01207   { 0x00ff58, "Begin" },
01208   { 0x00ff60, "Select" },
01209   { 0x00ff61, "Print" },
01210   { 0x00ff62, "Execute" },
01211   { 0x00ff63, "Insert" },
01212   { 0x00ff65, "Undo" },
01213   { 0x00ff66, "Redo" },
01214   { 0x00ff67, "Menu" },
01215   { 0x00ff68, "Find" },
01216   { 0x00ff69, "Cancel" },
01217   { 0x00ff6a, "Help" },
01218   { 0x00ff6b, "Break" },
01219   { 0x00ff7e, "Arabic_switch" },
01220   { 0x00ff7e, "Greek_switch" },
01221   { 0x00ff7e, "Hangul_switch" },
01222   { 0x00ff7e, "Hebrew_switch" },
01223   { 0x00ff7e, "ISO_Group_Shift" },
01224   { 0x00ff7e, "Mode_switch" },
01225   { 0x00ff7e, "kana_switch" },
01226   { 0x00ff7e, "script_switch" },
01227   { 0x00ff7f, "Num_Lock" },
01228   { 0x00ff80, "KP_Space" },
01229   { 0x00ff89, "KP_Tab" },
01230   { 0x00ff8d, "KP_Enter" },
01231   { 0x00ff91, "KP_F1" },
01232   { 0x00ff92, "KP_F2" },
01233   { 0x00ff93, "KP_F3" },
01234   { 0x00ff94, "KP_F4" },
01235   { 0x00ff95, "KP_Home" },
01236   { 0x00ff96, "KP_Left" },
01237   { 0x00ff97, "KP_Up" },
01238   { 0x00ff98, "KP_Right" },
01239   { 0x00ff99, "KP_Down" },
01240   { 0x00ff9a, "KP_Page_Up" },
01241   { 0x00ff9a, "KP_Prior" },
01242   { 0x00ff9b, "KP_Page_Down" },
01243   { 0x00ff9b, "KP_Next" },
01244   { 0x00ff9c, "KP_End" },
01245   { 0x00ff9d, "KP_Begin" },
01246   { 0x00ff9e, "KP_Insert" },
01247   { 0x00ff9f, "KP_Delete" },
01248   { 0x00ffaa, "KP_Multiply" },
01249   { 0x00ffab, "KP_Add" },
01250   { 0x00ffac, "KP_Separator" },
01251   { 0x00ffad, "KP_Subtract" },
01252   { 0x00ffae, "KP_Decimal" },
01253   { 0x00ffaf, "KP_Divide" },
01254   { 0x00ffb0, "KP_0" },
01255   { 0x00ffb1, "KP_1" },
01256   { 0x00ffb2, "KP_2" },
01257   { 0x00ffb3, "KP_3" },
01258   { 0x00ffb4, "KP_4" },
01259   { 0x00ffb5, "KP_5" },
01260   { 0x00ffb6, "KP_6" },
01261   { 0x00ffb7, "KP_7" },
01262   { 0x00ffb8, "KP_8" },
01263   { 0x00ffb9, "KP_9" },
01264   { 0x00ffbd, "KP_Equal" },
01265   { 0x00ffbe, "F1" },
01266   { 0x00ffbf, "F2" },
01267   { 0x00ffc0, "F3" },
01268   { 0x00ffc1, "F4" },
01269   { 0x00ffc2, "F5" },
01270   { 0x00ffc3, "F6" },
01271   { 0x00ffc4, "F7" },
01272   { 0x00ffc5, "F8" },
01273   { 0x00ffc6, "F9" },
01274   { 0x00ffc7, "F10" },
01275   { 0x00ffc8, "F11" },
01276   { 0x00ffc9, "F12" },
01277   { 0x00ffca, "F13" },
01278   { 0x00ffcb, "F14" },
01279   { 0x00ffcc, "F15" },
01280   { 0x00ffcd, "F16" },
01281   { 0x00ffce, "F17" },
01282   { 0x00ffcf, "F18" },
01283   { 0x00ffd0, "F19" },
01284   { 0x00ffd1, "F20" },
01285   { 0x00ffd2, "F21" },
01286   { 0x00ffd3, "F22" },
01287   { 0x00ffd4, "F23" },
01288   { 0x00ffd5, "F24" },
01289   { 0x00ffd6, "F25" },
01290   { 0x00ffd7, "F26" },
01291   { 0x00ffd8, "F27" },
01292   { 0x00ffd9, "F28" },
01293   { 0x00ffda, "F29" },
01294   { 0x00ffdb, "F30" },
01295   { 0x00ffdc, "F31" },
01296   { 0x00ffdd, "F32" },
01297   { 0x00ffde, "F33" },
01298   { 0x00ffdf, "F34" },
01299   { 0x00ffe0, "F35" },
01300   { 0x00ffe1, "Shift_L" },
01301   { 0x00ffe2, "Shift_R" },
01302   { 0x00ffe3, "Control_L" },
01303   { 0x00ffe4, "Control_R" },
01304   { 0x00ffe5, "Caps_Lock" },
01305   { 0x00ffe6, "Shift_Lock" },
01306   { 0x00ffe7, "Meta_L" },
01307   { 0x00ffe8, "Meta_R" },
01308   { 0x00ffe9, "Alt_L" },
01309   { 0x00ffea, "Alt_R" },
01310   { 0x00ffeb, "Super_L" },
01311   { 0x00ffec, "Super_R" },
01312   { 0x00ffed, "Hyper_L" },
01313   { 0x00ffee, "Hyper_R" },
01314   { 0x00ffff, "Delete" },
01315   { 0xffffff, "VoidSymbol" },
01316 };
01317 
01318 #define X11_NUM_KEYS (sizeof (x11_keys_by_keyval) / sizeof (x11_keys_by_keyval[0]))
01319 
01320 static struct x11_key *x11_keys_by_name = NULL;
01321 
01322 static int
01323 x11_keys_keyval_compare (const void *pkey, const void *pbase)
01324 {
01325   return (*(int *) pkey) - ((struct x11_key *) pbase)->keyval;
01326 }
01327 
01328 char*
01329 x11_keyval_name (unsigned int keyval)
01330 {
01331   static char buf[100];
01332   struct x11_key *found;
01333 
01334   /* Check for directly encoded 24-bit UCS characters: */
01335   if ((keyval & 0xff000000) == 0x01000000)
01336     {
01337       sprintf (buf, "U+%.04X", (keyval & 0x00ffffff));
01338       return buf;
01339     }
01340 
01341   found = bsearch (&keyval, x11_keys_by_keyval,
01342                  X11_NUM_KEYS, sizeof (struct x11_key),
01343                  x11_keys_keyval_compare);
01344 
01345   if (found != NULL)
01346     {
01347       while ((found > x11_keys_by_keyval) &&
01348              ((found - 1)->keyval == keyval))
01349         found--;
01350            
01351       return (char *) found->name;
01352     }
01353   else if (keyval != 0)
01354     {
01355       sprintf (buf, "%#x", keyval);
01356       return buf;
01357     }
01358 
01359   return NULL;
01360 }
01361 
01362 static int 
01363 x11_key_compare_by_name (const void *a, const void *b)
01364 {
01365   return strcmp (((const struct x11_key *) a)->name, ((const struct x11_key *) b)->name);
01366 }
01367 
01368 static int
01369 x11_keys_name_compare (const void *pkey, const void *pbase)
01370 {
01371   return strcmp ((const char *) pkey, ((const struct x11_key *) pbase)->name);
01372 }
01373 
01374 unsigned int
01375 x11_keyval_from_name (const char *keyval_name)
01376 {
01377   struct x11_key *found;
01378 
01379   if (keyval_name == NULL) return 0;
01380   
01381   if (x11_keys_by_name == NULL)
01382     {
01383       x11_keys_by_name = malloc (sizeof (struct x11_key) * X11_NUM_KEYS);
01384 
01385       memcpy (x11_keys_by_name, x11_keys_by_keyval,
01386              X11_NUM_KEYS * sizeof (struct x11_key));
01387 
01388       qsort (x11_keys_by_name, X11_NUM_KEYS, sizeof (struct x11_key),
01389             x11_key_compare_by_name);
01390     }
01391 
01392   found = bsearch (keyval_name, x11_keys_by_name,
01393                  X11_NUM_KEYS, sizeof (struct x11_key),
01394                  x11_keys_name_compare);
01395   if (found != NULL)
01396     return found->keyval;
01397   else
01398     return 0xFFFF;
01399 }
01400 
01401 int
01402 g2icode (unsigned int kv)
01403 {
01404   switch (kv)
01405     {
01406     case X11_VoidSymbol:
01407       return 0;
01408     case X11_BackSpace:
01409       return IIIMF_KEYCODE_BACK_SPACE;
01410     case X11_Tab:
01411       return IIIMF_KEYCODE_TAB;
01412     case X11_Linefeed:
01413       return IIIMF_KEYCODE_ENTER;
01414     case X11_Clear:
01415       return -IIIMF_KEYCODE_CLEAR;
01416     case X11_Return:
01417       return IIIMF_KEYCODE_ENTER;
01418     case X11_Pause:
01419       return IIIMF_KEYCODE_PAUSE;
01420     case X11_Scroll_Lock:
01421       return -IIIMF_KEYCODE_SCROLL_LOCK;
01422     case X11_Sys_Req:
01423       return 0;
01424     case X11_Escape:
01425       return IIIMF_KEYCODE_ESCAPE;
01426     case X11_Delete:
01427       return IIIMF_KEYCODE_DELETE;
01428     case X11_Multi_key:
01429       return IIIMF_KEYCODE_COMPOSE;
01430     case X11_Codeinput:
01431       return -IIIMF_KEYCODE_CODE_INPUT;
01432     case X11_SingleCandidate:
01433     case X11_MultipleCandidate:
01434       return 0;
01435     case X11_PreviousCandidate:
01436       return -IIIMF_KEYCODE_PREVIOUS_CANDIDATE;
01437     case X11_Kanji:
01438       return -IIIMF_KEYCODE_KANJI;
01439     case X11_Muhenkan:
01440       return -IIIMF_KEYCODE_NONCONVERT;
01441     case X11_Henkan_Mode:
01442       /* case X11_Henkan: */
01443       return -IIIMF_KEYCODE_CONVERT;
01444     case X11_Romaji:
01445       return -IIIMF_KEYCODE_ROMAN_CHARACTERS;
01446     case X11_Hiragana:
01447       return -IIIMF_KEYCODE_HIRAGANA;
01448     case X11_Katakana:
01449       return -IIIMF_KEYCODE_KATAKANA;
01450     case X11_Hiragana_Katakana:
01451       return 0;
01452     case X11_Zenkaku:
01453       return -IIIMF_KEYCODE_FULL_WIDTH;
01454     case X11_Hankaku:
01455       return -IIIMF_KEYCODE_HALF_WIDTH;
01456     case X11_Kana_Lock:
01457       return -IIIMF_KEYCODE_KANA_LOCK;
01458     case X11_Home:
01459       return -IIIMF_KEYCODE_HOME;
01460     case X11_Left:
01461       return -IIIMF_KEYCODE_LEFT;
01462     case X11_Up:
01463       return -IIIMF_KEYCODE_UP;
01464     case X11_Right:
01465       return -IIIMF_KEYCODE_RIGHT;
01466     case X11_Down:
01467       return -IIIMF_KEYCODE_DOWN;
01468     case X11_Page_Up:
01469       return -IIIMF_KEYCODE_PAGE_UP;
01470     case X11_Page_Down:
01471       return -IIIMF_KEYCODE_PAGE_DOWN;
01472     case X11_End:
01473       return -IIIMF_KEYCODE_END;
01474     case X11_Print:
01475       return -IIIMF_KEYCODE_PRINTSCREEN;
01476     case X11_Insert:
01477       return IIIMF_KEYCODE_INSERT;
01478     case X11_Undo:
01479       return -IIIMF_KEYCODE_UNDO;
01480     case X11_Find:
01481       return -IIIMF_KEYCODE_FIND;
01482     case X11_Cancel:
01483       return -IIIMF_KEYCODE_CANCEL;
01484     case X11_Help:
01485       return -IIIMF_KEYCODE_HELP;
01486     case X11_Mode_switch:
01487       /* case X11_script_switch: */
01488       return -IIIMF_KEYCODE_MODECHANGE;
01489     case X11_Num_Lock:
01490       return -IIIMF_KEYCODE_NUM_LOCK;
01491     case X11_KP_Space:
01492       return IIIMF_KEYCODE_SPACE;
01493     case X11_KP_Tab:
01494       return IIIMF_KEYCODE_TAB;
01495     case X11_KP_Enter:
01496       return IIIMF_KEYCODE_ENTER;
01497     case X11_KP_F1:
01498       return -IIIMF_KEYCODE_F1;
01499     case X11_KP_F2:
01500       return -IIIMF_KEYCODE_F2;
01501     case X11_KP_F3:
01502       return -IIIMF_KEYCODE_F3;
01503     case X11_KP_F4:
01504       return -IIIMF_KEYCODE_F4;
01505     case X11_KP_Home:
01506       return -IIIMF_KEYCODE_HOME;
01507     case X11_KP_Left:
01508       return -IIIMF_KEYCODE_LEFT;
01509     case X11_KP_Up:
01510       return -IIIMF_KEYCODE_UP;
01511     case X11_KP_Right:
01512       return -IIIMF_KEYCODE_RIGHT;
01513     case X11_KP_Down:
01514       return -IIIMF_KEYCODE_DOWN;
01515     case X11_KP_Page_Up:
01516       return -IIIMF_KEYCODE_PAGE_UP;
01517     case X11_KP_Page_Down:
01518       return -IIIMF_KEYCODE_PAGE_DOWN;
01519     case X11_KP_End:
01520       return -IIIMF_KEYCODE_END;
01521     case X11_KP_Insert:
01522       return IIIMF_KEYCODE_INSERT;
01523     case X11_KP_Delete:
01524       return IIIMF_KEYCODE_DELETE;
01525     case X11_KP_Equal:
01526       return IIIMF_KEYCODE_EQUALS;
01527     case X11_KP_Multiply:
01528       return IIIMF_KEYCODE_MULTIPLY;
01529     case X11_KP_Add:
01530       return IIIMF_KEYCODE_ADD;
01531     case X11_KP_Separator:
01532       return IIIMF_KEYCODE_SEPARATOR;
01533     case X11_KP_Subtract:
01534       return IIIMF_KEYCODE_SUBTRACT;
01535     case X11_KP_Decimal:
01536       return IIIMF_KEYCODE_DECIMAL;
01537     case X11_KP_Divide:
01538       return IIIMF_KEYCODE_DIVIDE;
01539     case X11_KP_0:
01540       return IIIMF_KEYCODE_NUMPAD0;
01541     case X11_KP_1:
01542       return IIIMF_KEYCODE_NUMPAD1;
01543     case X11_KP_2:
01544       return IIIMF_KEYCODE_NUMPAD2;
01545     case X11_KP_3:
01546       return IIIMF_KEYCODE_NUMPAD3;
01547     case X11_KP_4:
01548       return IIIMF_KEYCODE_NUMPAD4;
01549     case X11_KP_5:
01550       return IIIMF_KEYCODE_NUMPAD5;
01551     case X11_KP_6:
01552       return IIIMF_KEYCODE_NUMPAD6;
01553     case X11_KP_7:
01554       return IIIMF_KEYCODE_NUMPAD7;
01555     case X11_KP_8:
01556       return IIIMF_KEYCODE_NUMPAD8;
01557     case X11_KP_9:
01558       return IIIMF_KEYCODE_NUMPAD9;
01559     case X11_F1:
01560       return -IIIMF_KEYCODE_F1;
01561     case X11_F2:
01562       return -IIIMF_KEYCODE_F2;
01563     case X11_F3:
01564       return -IIIMF_KEYCODE_F3;
01565     case X11_F4:
01566       return -IIIMF_KEYCODE_F4;
01567     case X11_F5:
01568       return -IIIMF_KEYCODE_F5;
01569     case X11_F6:
01570       return -IIIMF_KEYCODE_F6;
01571     case X11_F7:
01572       return -IIIMF_KEYCODE_F7;
01573     case X11_F8:
01574       return -IIIMF_KEYCODE_F8;
01575     case X11_F9:
01576       return -IIIMF_KEYCODE_F9;
01577     case X11_F10:
01578       return -IIIMF_KEYCODE_F10;
01579     case X11_F11:
01580       /*case X11_L1: */
01581       return -IIIMF_KEYCODE_F11;
01582     case X11_F12:
01583       /* case X11_L2: */
01584       return -IIIMF_KEYCODE_F12;
01585     case X11_F13:
01586       /* case X11_L3: */
01587       return -IIIMF_KEYCODE_F13;
01588     case X11_F14:
01589       /* case X11_L4: */
01590       return -IIIMF_KEYCODE_F14;
01591     case X11_F15:
01592       /* case X11_L5: */
01593       return -IIIMF_KEYCODE_F15;
01594     case X11_F16:
01595       /* case X11_L6: */
01596       return -IIIMF_KEYCODE_F16;
01597     case X11_F17:
01598       /* case X11_L7: */
01599       return -IIIMF_KEYCODE_F17;
01600     case X11_F18:
01601       /* case X11_L8: */
01602       return -IIIMF_KEYCODE_F18;
01603     case X11_F19:
01604       /* case X11_L9: */
01605       return -IIIMF_KEYCODE_F19;
01606     case X11_F20:
01607       /* case X11_L10: */
01608       return -IIIMF_KEYCODE_F20;
01609     case X11_F21:
01610       /* case X11_R1: */
01611       return -IIIMF_KEYCODE_F21;
01612     case X11_F22:
01613       /* case X11_R2: */
01614       return -IIIMF_KEYCODE_F22;
01615     case X11_F23:
01616       /* case X11_R3: */
01617       return -IIIMF_KEYCODE_F23;
01618     case X11_F24:
01619       /* case X11_R4: */
01620       return -IIIMF_KEYCODE_F24;
01621     case X11_Shift_L:
01622     case X11_Shift_R:
01623       return -IIIMF_KEYCODE_SHIFT;
01624     case X11_Control_L:
01625     case X11_Control_R:
01626       return -IIIMF_KEYCODE_CONTROL;
01627     case X11_Caps_Lock:
01628       return -IIIMF_KEYCODE_CAPS_LOCK;
01629     case X11_Meta_L:
01630     case X11_Meta_R:
01631       return -IIIMF_KEYCODE_META;
01632     case X11_Alt_L:
01633     case X11_Alt_R:
01634       return -IIIMF_KEYCODE_ALT;
01635     case X11_dead_grave:
01636       return IIIMF_KEYCODE_DEAD_GRAVE;
01637     case X11_dead_acute:
01638       return IIIMF_KEYCODE_DEAD_ACUTE;
01639     case X11_dead_circumflex:
01640       return IIIMF_KEYCODE_DEAD_CIRCUMFLEX;
01641     case X11_dead_tilde:
01642       return IIIMF_KEYCODE_DEAD_TILDE;
01643     case X11_dead_macron:
01644       return IIIMF_KEYCODE_DEAD_MACRON;
01645     case X11_dead_breve:
01646       return IIIMF_KEYCODE_DEAD_BREVE;
01647     case X11_dead_abovedot:
01648       return IIIMF_KEYCODE_DEAD_ABOVEDOT;
01649     case X11_dead_diaeresis:
01650       return IIIMF_KEYCODE_DEAD_DIAERESIS;
01651     case X11_dead_abovering:
01652       return IIIMF_KEYCODE_DEAD_ABOVERING;
01653     case X11_dead_doubleacute:
01654       return IIIMF_KEYCODE_DEAD_DOUBLEACUTE;
01655     case X11_dead_caron:
01656       return IIIMF_KEYCODE_DEAD_CARON;
01657     case X11_dead_cedilla:
01658       return IIIMF_KEYCODE_DEAD_CEDILLA;
01659     case X11_dead_ogonek:
01660       return IIIMF_KEYCODE_DEAD_OGONEK;
01661     case X11_dead_iota:
01662       return IIIMF_KEYCODE_DEAD_IOTA;
01663     case X11_dead_voiced_sound:
01664       return IIIMF_KEYCODE_DEAD_VOICED_SOUND;
01665     case X11_dead_semivoiced_sound:
01666       return IIIMF_KEYCODE_DEAD_SEMIVOICED_SOUND;
01667 
01668     case X11_space:
01669       return IIIMF_KEYCODE_SPACE;
01670     case X11_exclam:
01671       return IIIMF_KEYCODE_EXCLAMATION_MARK;
01672     case X11_quotedbl:
01673       return IIIMF_KEYCODE_QUOTEDBL;
01674     case X11_numbersign:
01675       return IIIMF_KEYCODE_NUMBER_SIGN;
01676     case X11_dollar:
01677       return IIIMF_KEYCODE_DOLLAR;
01678     case X11_ampersand:
01679       return IIIMF_KEYCODE_AMPERSAND;
01680     case X11_apostrophe:
01681       /* case X11_quoteright: */
01682       return IIIMF_KEYCODE_QUOTE;
01683     case X11_parenleft:
01684       return IIIMF_KEYCODE_LEFT_PARENTHESIS;
01685     case X11_parenright:
01686       return IIIMF_KEYCODE_RIGHT_PARENTHESIS;
01687     case X11_asterisk:
01688       return IIIMF_KEYCODE_ASTERISK;
01689     case X11_plus:
01690       return IIIMF_KEYCODE_PLUS;
01691     case X11_comma:
01692       return IIIMF_KEYCODE_COMMA;
01693     case X11_minus:
01694       return IIIMF_KEYCODE_MINUS;
01695     case X11_period:
01696       return IIIMF_KEYCODE_PERIOD;
01697     case X11_slash:
01698       return IIIMF_KEYCODE_SLASH;
01699     case X11_0:
01700       return IIIMF_KEYCODE_0;
01701     case X11_1:
01702       return IIIMF_KEYCODE_1;
01703     case X11_2:
01704       return IIIMF_KEYCODE_2;
01705     case X11_3:
01706       return IIIMF_KEYCODE_3;
01707     case X11_4:
01708       return IIIMF_KEYCODE_4;
01709     case X11_5:
01710       return IIIMF_KEYCODE_5;
01711     case X11_6:
01712       return IIIMF_KEYCODE_6;
01713     case X11_7:
01714       return IIIMF_KEYCODE_7;
01715     case X11_8:
01716       return IIIMF_KEYCODE_8;
01717     case X11_9:
01718       return IIIMF_KEYCODE_9;
01719     case X11_colon:
01720       return IIIMF_KEYCODE_COLON;
01721     case X11_semicolon:
01722       return IIIMF_KEYCODE_SEMICOLON;
01723     case X11_less:
01724       return IIIMF_KEYCODE_LESS;
01725     case X11_equal:
01726       return IIIMF_KEYCODE_EQUALS;
01727     case X11_greater:
01728       return IIIMF_KEYCODE_GREATER;
01729     case X11_at:
01730       return IIIMF_KEYCODE_AT;
01731     case X11_A:
01732       return IIIMF_KEYCODE_A;
01733     case X11_B:
01734       return IIIMF_KEYCODE_B;
01735     case X11_C:
01736       return IIIMF_KEYCODE_C;
01737     case X11_D:
01738       return IIIMF_KEYCODE_D;
01739     case X11_E:
01740       return IIIMF_KEYCODE_E;
01741     case X11_F:
01742       return IIIMF_KEYCODE_F;
01743     case X11_G:
01744       return IIIMF_KEYCODE_G;
01745     case X11_H:
01746       return IIIMF_KEYCODE_H;
01747     case X11_I:
01748       return IIIMF_KEYCODE_I;
01749     case X11_J:
01750       return IIIMF_KEYCODE_J;
01751     case X11_K:
01752       return IIIMF_KEYCODE_K;
01753     case X11_L:
01754       return IIIMF_KEYCODE_L;
01755     case X11_M:
01756       return IIIMF_KEYCODE_M;
01757     case X11_N:
01758       return IIIMF_KEYCODE_N;
01759     case X11_O:
01760       return IIIMF_KEYCODE_O;
01761     case X11_P:
01762       return IIIMF_KEYCODE_P;
01763     case X11_Q:
01764       return IIIMF_KEYCODE_Q;
01765     case X11_R:
01766       return IIIMF_KEYCODE_R;
01767     case X11_S:
01768       return IIIMF_KEYCODE_S;
01769     case X11_T:
01770       return IIIMF_KEYCODE_T;
01771     case X11_U:
01772       return IIIMF_KEYCODE_U;
01773     case X11_V:
01774       return IIIMF_KEYCODE_V;
01775     case X11_W:
01776       return IIIMF_KEYCODE_W;
01777     case X11_X:
01778       return IIIMF_KEYCODE_X;
01779     case X11_Y:
01780       return IIIMF_KEYCODE_Y;
01781     case X11_Z:
01782       return IIIMF_KEYCODE_Z;
01783 
01784     case X11_bracketleft:
01785       return IIIMF_KEYCODE_OPEN_BRACKET;
01786     case X11_backslash:
01787       return IIIMF_KEYCODE_BACK_SLASH;
01788     case X11_bracketright:
01789       return IIIMF_KEYCODE_CLOSE_BRACKET;
01790     case X11_asciicircum:
01791       return IIIMF_KEYCODE_CIRCUMFLEX;
01792     case X11_underscore:
01793       return IIIMF_KEYCODE_UNDERSCORE;
01794     case X11_grave:
01795       /* case X11_quoteleft: */
01796       return IIIMF_KEYCODE_BACK_QUOTE;
01797 
01798     case X11_a:
01799       return IIIMF_KEYCODE_A;
01800     case X11_b:
01801       return IIIMF_KEYCODE_B;
01802     case X11_c:
01803       return IIIMF_KEYCODE_C;
01804     case X11_d:
01805       return IIIMF_KEYCODE_D;
01806     case X11_e:
01807       return IIIMF_KEYCODE_E;
01808     case X11_f:
01809       return IIIMF_KEYCODE_F;
01810     case X11_g:
01811       return IIIMF_KEYCODE_G;
01812     case X11_h:
01813       return IIIMF_KEYCODE_H;
01814     case X11_i:
01815       return IIIMF_KEYCODE_I;
01816     case X11_j:
01817       return IIIMF_KEYCODE_J;
01818     case X11_k:
01819       return IIIMF_KEYCODE_K;
01820     case X11_l:
01821       return IIIMF_KEYCODE_L;
01822     case X11_m:
01823       return IIIMF_KEYCODE_M;
01824     case X11_n:
01825       return IIIMF_KEYCODE_N;
01826     case X11_o:
01827       return IIIMF_KEYCODE_O;
01828     case X11_p:
01829       return IIIMF_KEYCODE_P;
01830     case X11_q:
01831       return IIIMF_KEYCODE_Q;
01832     case X11_r:
01833       return IIIMF_KEYCODE_R;
01834     case X11_s:
01835       return IIIMF_KEYCODE_S;
01836     case X11_t:
01837       return IIIMF_KEYCODE_T;
01838     case X11_u:
01839       return IIIMF_KEYCODE_U;
01840     case X11_v:
01841       return IIIMF_KEYCODE_V;
01842     case X11_w:
01843       return IIIMF_KEYCODE_W;
01844     case X11_x:
01845       return IIIMF_KEYCODE_X;
01846     case X11_y:
01847       return IIIMF_KEYCODE_Y;
01848     case X11_z:
01849       return IIIMF_KEYCODE_Z;
01850     case X11_braceleft:
01851       return IIIMF_KEYCODE_BRACELEFT;
01852     case X11_braceright:
01853       return IIIMF_KEYCODE_BRACERIGHT;
01854 
01855     case X11_exclamdown:
01856       return IIIMF_KEYCODE_INVERTED_EXCLAMATION_MARK;
01857 
01858     case X11_EuroSign:
01859       return IIIMF_KEYCODE_EURO_SIGN;
01860 
01861     case X11_Zenkaku_Hankaku:
01862       return IIIMF_KEYCODE_KANJI;
01863 
01864     default:
01865       return 0;
01866     }
01867 
01868   return 0;
01869 }
01870 
01871 unsigned int
01872 i2gcode (int kv)
01873 {
01874   switch (kv)
01875     {
01876       /* case IIIMF_KEYCODE_UNDEFINED */
01877     case IIIMF_KEYCODE_CANCEL:
01878       return X11_Cancel;
01879     case IIIMF_KEYCODE_BACK_SPACE:
01880       return X11_BackSpace;
01881     case IIIMF_KEYCODE_TAB:
01882       return X11_Tab;
01883     case IIIMF_KEYCODE_ENTER:
01884       return X11_Return;
01885     case IIIMF_KEYCODE_CLEAR:
01886       return X11_Clear;
01887     case IIIMF_KEYCODE_SHIFT:
01888       return X11_Shift_L;   /* ... */
01889     case IIIMF_KEYCODE_CONTROL:
01890       return X11_Control_L; /* ... */
01891     case IIIMF_KEYCODE_ALT:
01892       return X11_Alt_L;
01893     case IIIMF_KEYCODE_PAUSE:
01894       return X11_Pause;
01895     case IIIMF_KEYCODE_CAPS_LOCK:
01896       return X11_Caps_Lock;
01897       /*
01898          case IIIMF_KEYCODE_KANA
01899          case IIIMF_KEYCODE_FINAL
01900        */
01901     case IIIMF_KEYCODE_KANJI:
01902       return X11_Kanji;
01903 
01904     case IIIMF_KEYCODE_ESCAPE:
01905       return X11_Escape;
01906     case IIIMF_KEYCODE_CONVERT:
01907       return X11_Henkan_Mode;
01908     case IIIMF_KEYCODE_NONCONVERT:
01909       return X11_Muhenkan;
01910       /* case IIIMF_KEYCODE_ACCEPT */
01911     case IIIMF_KEYCODE_MODECHANGE:
01912       return X11_Mode_switch;
01913     case IIIMF_KEYCODE_SPACE:
01914       return X11_space;
01915     case IIIMF_KEYCODE_PAGE_UP:
01916       return X11_Page_Up;
01917     case IIIMF_KEYCODE_PAGE_DOWN:
01918       return X11_Page_Down;
01919     case IIIMF_KEYCODE_END:
01920       return X11_End;
01921     case IIIMF_KEYCODE_HOME:
01922       return X11_Home;
01923     case IIIMF_KEYCODE_LEFT:
01924       return X11_Left;
01925     case IIIMF_KEYCODE_UP:
01926       return X11_Up;
01927     case IIIMF_KEYCODE_RIGHT:
01928       return X11_Right;
01929     case IIIMF_KEYCODE_DOWN:
01930       return X11_Down;
01931     case IIIMF_KEYCODE_COMMA:
01932       return X11_comma;
01933     case IIIMF_KEYCODE_MINUS:
01934       return X11_minus;
01935     case IIIMF_KEYCODE_PERIOD:
01936       return X11_period;
01937     case IIIMF_KEYCODE_SLASH:
01938       return X11_slash;
01939     case IIIMF_KEYCODE_0:
01940       return X11_0;
01941     case IIIMF_KEYCODE_1:
01942       return X11_1;
01943     case IIIMF_KEYCODE_2:
01944       return X11_2;
01945     case IIIMF_KEYCODE_3:
01946       return X11_3;
01947     case IIIMF_KEYCODE_4:
01948       return X11_4;
01949     case IIIMF_KEYCODE_5:
01950       return X11_5;
01951     case IIIMF_KEYCODE_6:
01952       return X11_6;
01953     case IIIMF_KEYCODE_7:
01954       return X11_7;
01955     case IIIMF_KEYCODE_8:
01956       return X11_8;
01957     case IIIMF_KEYCODE_9:
01958       return X11_9;
01959     case IIIMF_KEYCODE_SEMICOLON:
01960       return X11_semicolon;
01961     case IIIMF_KEYCODE_EQUALS:
01962       return X11_equal;
01963     case IIIMF_KEYCODE_A:
01964       return X11_a;
01965     case IIIMF_KEYCODE_B:
01966       return X11_b;
01967     case IIIMF_KEYCODE_C:
01968       return X11_c;
01969     case IIIMF_KEYCODE_D:
01970       return X11_d;
01971     case IIIMF_KEYCODE_E:
01972       return X11_e;
01973     case IIIMF_KEYCODE_F:
01974       return X11_f;
01975     case IIIMF_KEYCODE_G:
01976       return X11_g;
01977     case IIIMF_KEYCODE_H:
01978       return X11_h;
01979     case IIIMF_KEYCODE_I:
01980       return X11_i;
01981     case IIIMF_KEYCODE_J:
01982       return X11_j;
01983     case IIIMF_KEYCODE_K:
01984       return X11_k;
01985     case IIIMF_KEYCODE_L:
01986       return X11_l;
01987     case IIIMF_KEYCODE_M:
01988       return X11_m;
01989     case IIIMF_KEYCODE_N:
01990       return X11_n;
01991     case IIIMF_KEYCODE_O:
01992       return X11_o;
01993     case IIIMF_KEYCODE_P:
01994       return X11_p;
01995     case IIIMF_KEYCODE_Q:
01996       return X11_q;
01997     case IIIMF_KEYCODE_R:
01998       return X11_r;
01999     case IIIMF_KEYCODE_S:
02000       return X11_s;
02001     case IIIMF_KEYCODE_T:
02002       return X11_t;
02003     case IIIMF_KEYCODE_U:
02004       return X11_u;
02005     case IIIMF_KEYCODE_V:
02006       return X11_v;
02007     case IIIMF_KEYCODE_W:
02008       return X11_w;
02009     case IIIMF_KEYCODE_X:
02010       return X11_x;
02011     case IIIMF_KEYCODE_Y:
02012       return X11_y;
02013     case IIIMF_KEYCODE_Z:
02014       return X11_z;
02015     case IIIMF_KEYCODE_OPEN_BRACKET:
02016       return X11_bracketleft;
02017     case IIIMF_KEYCODE_BACK_SLASH:
02018       return X11_backslash;
02019     case IIIMF_KEYCODE_CLOSE_BRACKET:
02020       return X11_bracketright;
02021     case IIIMF_KEYCODE_NUMPAD0:
02022       return X11_KP_0;
02023     case IIIMF_KEYCODE_NUMPAD1:
02024       return X11_KP_1;
02025     case IIIMF_KEYCODE_NUMPAD2:
02026       return X11_KP_2;
02027     case IIIMF_KEYCODE_NUMPAD3:
02028       return X11_KP_3;
02029     case IIIMF_KEYCODE_NUMPAD4:
02030       return X11_KP_4;
02031     case IIIMF_KEYCODE_NUMPAD5:
02032       return X11_KP_5;
02033     case IIIMF_KEYCODE_NUMPAD6:
02034       return X11_KP_6;
02035     case IIIMF_KEYCODE_NUMPAD7:
02036       return X11_KP_7;
02037     case IIIMF_KEYCODE_NUMPAD8:
02038       return X11_KP_8;
02039     case IIIMF_KEYCODE_NUMPAD9:
02040       return X11_KP_9;
02041     case IIIMF_KEYCODE_MULTIPLY:
02042       return X11_KP_Multiply;
02043     case IIIMF_KEYCODE_ADD:
02044       return X11_KP_Add;
02045     case IIIMF_KEYCODE_SEPARATOR:
02046       return X11_KP_Separator;
02047     case IIIMF_KEYCODE_SUBTRACT:
02048       return X11_KP_Subtract;
02049     case IIIMF_KEYCODE_DECIMAL:
02050       return X11_KP_Decimal;
02051     case IIIMF_KEYCODE_DIVIDE:
02052       return X11_KP_Divide;
02053     case IIIMF_KEYCODE_F1:
02054       return X11_F1;
02055     case IIIMF_KEYCODE_F2:
02056       return X11_F2;
02057     case IIIMF_KEYCODE_F3:
02058       return X11_F3;
02059     case IIIMF_KEYCODE_F4:
02060       return X11_F4;
02061     case IIIMF_KEYCODE_F5:
02062       return X11_F5;
02063     case IIIMF_KEYCODE_F6:
02064       return X11_F6;
02065     case IIIMF_KEYCODE_F7:
02066       return X11_F7;
02067     case IIIMF_KEYCODE_F8:
02068       return X11_F8;
02069     case IIIMF_KEYCODE_F9:
02070       return X11_F9;
02071     case IIIMF_KEYCODE_F10:
02072       return X11_F10;
02073     case IIIMF_KEYCODE_F11:
02074       return X11_F11;
02075     case IIIMF_KEYCODE_F12:
02076       return X11_F12;
02077     case IIIMF_KEYCODE_DELETE:
02078       return X11_Delete;
02079     case IIIMF_KEYCODE_DEAD_GRAVE:
02080       return X11_dead_grave;
02081     case IIIMF_KEYCODE_DEAD_ACUTE:
02082       return X11_dead_acute;
02083     case IIIMF_KEYCODE_DEAD_CIRCUMFLEX:
02084       return X11_dead_circumflex;
02085     case IIIMF_KEYCODE_DEAD_TILDE:
02086       return X11_dead_tilde;
02087     case IIIMF_KEYCODE_DEAD_MACRON:
02088       return X11_dead_macron;
02089     case IIIMF_KEYCODE_DEAD_BREVE:
02090       return X11_dead_breve;
02091     case IIIMF_KEYCODE_DEAD_ABOVEDOT:
02092       return X11_dead_abovedot;
02093     case IIIMF_KEYCODE_DEAD_DIAERESIS:
02094       return X11_dead_diaeresis;
02095     case IIIMF_KEYCODE_DEAD_ABOVERING:
02096       return X11_dead_abovering;
02097     case IIIMF_KEYCODE_DEAD_DOUBLEACUTE:
02098       return X11_dead_doubleacute;
02099     case IIIMF_KEYCODE_DEAD_CARON:
02100       return X11_dead_caron;
02101     case IIIMF_KEYCODE_DEAD_CEDILLA:
02102       return X11_dead_cedilla;
02103     case IIIMF_KEYCODE_DEAD_OGONEK:
02104       return X11_dead_ogonek;
02105     case IIIMF_KEYCODE_DEAD_IOTA:
02106       return X11_dead_iota;
02107     case IIIMF_KEYCODE_DEAD_VOICED_SOUND:
02108       return X11_dead_voiced_sound;
02109     case IIIMF_KEYCODE_DEAD_SEMIVOICED_SOUND:
02110       return X11_dead_semivoiced_sound;
02111     case IIIMF_KEYCODE_NUM_LOCK:
02112       return X11_Num_Lock;
02113     case IIIMF_KEYCODE_SCROLL_LOCK:
02114       return X11_Scroll_Lock;
02115     case IIIMF_KEYCODE_AMPERSAND:
02116       return X11_ampersand;
02117     case IIIMF_KEYCODE_ASTERISK:
02118       return X11_asterisk;
02119     case IIIMF_KEYCODE_QUOTEDBL:
02120       return X11_quotedbl;
02121     case IIIMF_KEYCODE_LESS:
02122       return X11_less;
02123     case IIIMF_KEYCODE_PRINTSCREEN:
02124       return X11_Print;
02125     case IIIMF_KEYCODE_INSERT:
02126       return X11_Insert;
02127     case IIIMF_KEYCODE_HELP:
02128       return X11_Help;
02129     case IIIMF_KEYCODE_META:
02130       return X11_Meta_L;
02131     case IIIMF_KEYCODE_GREATER:
02132       return X11_greater;
02133     case IIIMF_KEYCODE_BRACELEFT:
02134       return X11_braceleft;
02135     case IIIMF_KEYCODE_BRACERIGHT:
02136       return X11_braceright;
02137     case IIIMF_KEYCODE_BACK_QUOTE:
02138       return X11_grave;
02139     case IIIMF_KEYCODE_QUOTE:
02140       return X11_apostrophe;
02141     case IIIMF_KEYCODE_KP_UP:
02142       return X11_KP_Up;
02143     case IIIMF_KEYCODE_KP_DOWN:
02144       return X11_KP_Down;
02145     case IIIMF_KEYCODE_KP_LEFT:
02146       return X11_KP_Left;
02147     case IIIMF_KEYCODE_KP_RIGHT:
02148       return X11_KP_Right;
02149       /* case IIIMF_KEYCODE_ALPHANUMERIC */
02150     case IIIMF_KEYCODE_KATAKANA:
02151       return X11_Katakana;
02152     case IIIMF_KEYCODE_HIRAGANA:
02153       return X11_Hiragana;
02154     case IIIMF_KEYCODE_FULL_WIDTH:
02155       return X11_Zenkaku;
02156     case IIIMF_KEYCODE_HALF_WIDTH:
02157       return X11_Hankaku;
02158     case IIIMF_KEYCODE_ROMAN_CHARACTERS:
02159       return X11_Romaji;
02160       /* case IIIMF_KEYCODE_ALL_CANDIDATES */
02161     case IIIMF_KEYCODE_PREVIOUS_CANDIDATE:
02162       return X11_PreviousCandidate;
02163     case IIIMF_KEYCODE_CODE_INPUT:
02164       return X11_Codeinput;
02165     case IIIMF_KEYCODE_JAPANESE_KATAKANA:
02166       return X11_Katakana;
02167     case IIIMF_KEYCODE_JAPANESE_HIRAGANA:
02168       return X11_Hiragana;
02169 /*     case IIIMF_KEYCODE_JAPANESE_ROMAN */
02170     case IIIMF_KEYCODE_KANA_LOCK:
02171       return X11_Kana_Lock;
02172       /* case IIIMF_KEYCODE_INPUT_METHOD_ON_OFF */
02173     case IIIMF_KEYCODE_AT:
02174       return X11_at;
02175     case IIIMF_KEYCODE_COLON:
02176       return X11_colon;
02177     case IIIMF_KEYCODE_CIRCUMFLEX:
02178       return X11_asciicircum;
02179     case IIIMF_KEYCODE_DOLLAR:
02180       return X11_dollar;
02181     case IIIMF_KEYCODE_EURO_SIGN:
02182       return X11_EuroSign;
02183     case IIIMF_KEYCODE_EXCLAMATION_MARK:
02184       return X11_exclam;
02185     case IIIMF_KEYCODE_INVERTED_EXCLAMATION_MARK:
02186       return X11_exclamdown;
02187     case IIIMF_KEYCODE_LEFT_PARENTHESIS:
02188       return X11_parenleft;
02189     case IIIMF_KEYCODE_NUMBER_SIGN:
02190       return X11_numbersign;
02191     case IIIMF_KEYCODE_PLUS:
02192       return X11_plus;
02193     case IIIMF_KEYCODE_RIGHT_PARENTHESIS:
02194       return X11_parenright;
02195     case IIIMF_KEYCODE_UNDERSCORE:
02196       return X11_underscore;
02197     case IIIMF_KEYCODE_F13:
02198       return X11_F13;
02199     case IIIMF_KEYCODE_F14:
02200       return X11_F14;
02201     case IIIMF_KEYCODE_F15:
02202       return X11_F15;
02203     case IIIMF_KEYCODE_F16:
02204       return X11_F16;
02205     case IIIMF_KEYCODE_F17:
02206       return X11_F17;
02207     case IIIMF_KEYCODE_F18:
02208       return X11_F18;
02209     case IIIMF_KEYCODE_F19:
02210       return X11_F19;
02211     case IIIMF_KEYCODE_F20:
02212       return X11_F20;
02213     case IIIMF_KEYCODE_F21:
02214       return X11_F21;
02215     case IIIMF_KEYCODE_F22:
02216       return X11_F22;
02217     case IIIMF_KEYCODE_F23:
02218       return X11_F23;
02219     case IIIMF_KEYCODE_F24:
02220       return X11_F24;
02221       /*
02222          case IIIMF_KEYCODE_COMPOSE:
02223          case IIIMF_KEYCODE_ALT_GRAPH
02224          case IIIMF_KEYCODE_STOP
02225          case IIIMF_KEYCODE_AGAIN
02226          case IIIMF_KEYCODE_PROPS
02227        */
02228     case IIIMF_KEYCODE_UNDO:
02229       return X11_Undo;
02230       /*
02231          case IIIMF_KEYCODE_COPY
02232          case IIIMF_KEYCODE_PASTE
02233        */
02234     case IIIMF_KEYCODE_FIND:
02235       return X11_Find;
02236       /* case IIIMF_KEYCODE_CUT */
02237 
02238     default:
02239       return (unsigned int) (kv & 0x7fffffff);
02240     }
02241   return 0;
02242 }