"Fossies" - the Fresh Open Source Software Archive

Member "screenkey-1.1/Screenkey/keysyms.py" (20 Aug 2015, 82609 Bytes) of package /linux/privat/screenkey-1.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "keysyms.py" see the Fossies "Dox" file reference documentation.

    1 # https://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt
    2 # Mapping of X11 keysyms to ISO 10646 / Unicode
    3 #
    4 # The "X11 Window System Protocol" standard (Release 6.4) defines in
    5 # Appendix A the keysym codes. These 29-bit integer values identify
    6 # characters or functions associated with each key (e.g., via the
    7 # visible engraving) of a keyboard layout. In addition, mnemonic macro
    8 # names are provided for the keysyms in the C header file
    9 # <X11/keysymdef.h>. These are compiled (by xc/lib/X11/util/
   10 # makekeys.c) into a hash table that can be accessed with X11 library
   11 # functions such as XStringToKeysym() and XKeysymToString().
   12 #
   13 # The creation of the keysym codes predates ISO 10646 / Unicode, but
   14 # they represent a similar attempt to merge several existing coded
   15 # character sets (mostly early drafts of ISO 8859, as well as some --
   16 # long since forgotten -- DEC font encodings). X.Org and XFree86 have
   17 # agreed that for any future extension of the keysyms with characters
   18 # already found in ISO 10646 / Unicode, the following algorithm will
   19 # be used. The new keysym code position will simply be the character's
   20 # Unicode number plus 0x01000000. The keysym codes in the range
   21 # 0x01000100 0x0110ffff are now reserved to represent Unicode
   22 # characters in the range U0100 to U10FFFF. (Note that the ISO 8859-1
   23 # characters that make up Unicode positions below U0100 are excluded
   24 # from this rule, as they are already covered by the keysyms of the
   25 # same value.)
   26 #
   27 # While most newer Unicode-based X11 clients do already accept
   28 # Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
   29 # will remain necessary for clients -- in the interest of
   30 # compatibility with existing servers -- to also understand the
   31 # existing keysym values. Clients can use the table below to map the
   32 # pre-Unicode keysym values (0x0100 to 0x20ff) to the corresponding
   33 # Unicode characters for further processing.
   34 #
   35 # The following fields are used in this mapping table:
   36 #
   37 # 1    The hexadecimal X11 keysym number (as defined in Appendix A of
   38 #      the X11 protocol specification and as listed in <X11/keysymdef.h>)
   39 #
   40 # 2    The corresponding Unicode position
   41 #      (U0000 means that there is no equivalent Unicode character)
   42 #
   43 # 3    Status of this keysym and its Unicode mapping
   44 #
   45 #         .  regular -- This is a regular well-established keysym with
   46 #            a straightforward Unicode equivalent (e.g., any keysym
   47 #            derived from ISO 8859). There can be at most one regular
   48 #            keysym associated with each Unicode character.
   49 #
   50 #         d  duplicate -- This keysym has the same Unicode mapping as
   51 #            another one with status 'regular'. It represents a case
   52 #            where keysyms distinguish between several characters that
   53 #            Unicode has unified into a single one (examples are
   54 #            several APL symbols)
   55 #
   56 #         o  obsolete -- While it may be possible to find a Unicode of
   57 #            similar name, the exact semantics of this keysym are
   58 #            unclear, because the font or character set from which it
   59 #            came has never been widely used. Examples are various
   60 #            symbols from the DEC Publishing character set, which may
   61 #            have been used in a special font shipped with the
   62 #            DECwrite product. Where no similar Unicode character
   63 #            can be identified, U0000 is used in column 2.
   64 #
   65 #         f  function -- While it may be possible to find a Unicode
   66 #            of similar name, this keysym differs semantically
   67 #            substantially from the corresponding Unicode character,
   68 #            because it describes a particular function key or will
   69 #            first have to be processed by an input method that will
   70 #            translate it into a proper stream of Unicode characters.
   71 #
   72 #         r  remove -- This is a bogus keysym that was added in error,
   73 #            is not used in any known keyboard layout, and should be
   74 #            removed from both <X11/keysymdef.h> and the standard.
   75 #
   76 #         u  unicode-remap -- This keysym was added rather recently to
   77 #            the <X11/keysymdef.h> of XFree86, but into a number range
   78 #            reserved for future extensions of the standard by
   79 #            X.Org. It is not widely used at present, but its name
   80 #            appears to be sufficiently useful and it should therefore
   81 #            be directly mapped to Unicode in the 0x1xxxxxx range in
   82 #            future versions of <X11/keysymdef.h>. This way, the macro
   83 #            name will be preserved, but the standard will not have to
   84 #            be extended.
   85 #
   86 #      Recommendations for using the keysym status:
   87 #
   88 #        - All keysyms with status regular, duplicate, obsolete and
   89 #          function should be listed in Appendix A of the X11 protocol
   90 #          spec.
   91 #
   92 #        - All keysyms except for those with status remove should be
   93 #          listed in <X11/keysymdef.h>.
   94 #
   95 #        - Keysyms with status duplicate, obsolete, and remove should
   96 #          not be used in future keyboard layouts, as there are other
   97 #          keysyms with status regular, function and unicode-remap
   98 #          that give access to the same Unicode characters.
   99 #
  100 #        - Keysym to Unicode conversion tables in clients should include
  101 #          all mappings except those with status function and those
  102 #          with U0000.
  103 #
  104 # #    comment marker
  105 #
  106 # 4    the name of the X11 keysym macro without the leading XK_,
  107 #      as defined in <X11/keysymdef.h>
  108 #
  109 # The last columns may be followed by comments copied from <X11/keysymdef.h>.
  110 # A keysym may be listed several times, if there are several macro names
  111 # associated with it in <X11/keysymdef.h>.
  112 #
  113 # Author: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
  114 # Date:   2004-08-08
  115 #
  116 # This table evolved out of an earlier one by Richard Verhoeven, TU Eindhoven.
  117 
  118 KEYSYMS = {
  119 
  120 # We begin with the original keysyms found in X11R6.4
  121 0x0020:   [u'\u0020',   '.'],   # space
  122 0x0021:   [u'\u0021',   '.'],   # exclam
  123 0x0022:   [u'\u0022',   '.'],   # quotedbl
  124 0x0023:   [u'\u0023',   '.'],   # numbersign
  125 0x0024:   [u'\u0024',   '.'],   # dollar
  126 0x0025:   [u'\u0025',   '.'],   # percent
  127 0x0026:   [u'\u0026',   '.'],   # ampersand
  128 0x0027:   [u'\u0027',   '.'],   # apostrophe
  129 0x0027:   [u'\u0027',   '.'],   # quoteright    /* deprecated */
  130 0x0028:   [u'\u0028',   '.'],   # parenleft
  131 0x0029:   [u'\u0029',   '.'],   # parenright
  132 0x002a:   [u'\u002a',   '.'],   # asterisk
  133 0x002b:   [u'\u002b',   '.'],   # plus
  134 0x002c:   [u'\u002c',   '.'],   # comma
  135 0x002d:   [u'\u002d',   '.'],   # minus
  136 0x002e:   [u'\u002e',   '.'],   # period
  137 0x002f:   [u'\u002f',   '.'],   # slash
  138 0x0030:   [u'\u0030',   '.'],   # 0
  139 0x0031:   [u'\u0031',   '.'],   # 1
  140 0x0032:   [u'\u0032',   '.'],   # 2
  141 0x0033:   [u'\u0033',   '.'],   # 3
  142 0x0034:   [u'\u0034',   '.'],   # 4
  143 0x0035:   [u'\u0035',   '.'],   # 5
  144 0x0036:   [u'\u0036',   '.'],   # 6
  145 0x0037:   [u'\u0037',   '.'],   # 7
  146 0x0038:   [u'\u0038',   '.'],   # 8
  147 0x0039:   [u'\u0039',   '.'],   # 9
  148 0x003a:   [u'\u003a',   '.'],   # colon
  149 0x003b:   [u'\u003b',   '.'],   # semicolon
  150 0x003c:   [u'\u003c',   '.'],   # less
  151 0x003d:   [u'\u003d',   '.'],   # equal
  152 0x003e:   [u'\u003e',   '.'],   # greater
  153 0x003f:   [u'\u003f',   '.'],   # question
  154 0x0040:   [u'\u0040',   '.'],   # at
  155 0x0041:   [u'\u0041',   '.'],   # A
  156 0x0042:   [u'\u0042',   '.'],   # B
  157 0x0043:   [u'\u0043',   '.'],   # C
  158 0x0044:   [u'\u0044',   '.'],   # D
  159 0x0045:   [u'\u0045',   '.'],   # E
  160 0x0046:   [u'\u0046',   '.'],   # F
  161 0x0047:   [u'\u0047',   '.'],   # G
  162 0x0048:   [u'\u0048',   '.'],   # H
  163 0x0049:   [u'\u0049',   '.'],   # I
  164 0x004a:   [u'\u004a',   '.'],   # J
  165 0x004b:   [u'\u004b',   '.'],   # K
  166 0x004c:   [u'\u004c',   '.'],   # L
  167 0x004d:   [u'\u004d',   '.'],   # M
  168 0x004e:   [u'\u004e',   '.'],   # N
  169 0x004f:   [u'\u004f',   '.'],   # O
  170 0x0050:   [u'\u0050',   '.'],   # P
  171 0x0051:   [u'\u0051',   '.'],   # Q
  172 0x0052:   [u'\u0052',   '.'],   # R
  173 0x0053:   [u'\u0053',   '.'],   # S
  174 0x0054:   [u'\u0054',   '.'],   # T
  175 0x0055:   [u'\u0055',   '.'],   # U
  176 0x0056:   [u'\u0056',   '.'],   # V
  177 0x0057:   [u'\u0057',   '.'],   # W
  178 0x0058:   [u'\u0058',   '.'],   # X
  179 0x0059:   [u'\u0059',   '.'],   # Y
  180 0x005a:   [u'\u005a',   '.'],   # Z
  181 0x005b:   [u'\u005b',   '.'],   # bracketleft
  182 0x005c:   [u'\u005c',   '.'],   # backslash
  183 0x005d:   [u'\u005d',   '.'],   # bracketright
  184 0x005e:   [u'\u005e',   '.'],   # asciicircum
  185 0x005f:   [u'\u005f',   '.'],   # underscore
  186 0x0060:   [u'\u0060',   '.'],   # grave
  187 0x0060:   [u'\u0060',   '.'],   # quoteleft /* deprecated */
  188 0x0061:   [u'\u0061',   '.'],   # a
  189 0x0062:   [u'\u0062',   '.'],   # b
  190 0x0063:   [u'\u0063',   '.'],   # c
  191 0x0064:   [u'\u0064',   '.'],   # d
  192 0x0065:   [u'\u0065',   '.'],   # e
  193 0x0066:   [u'\u0066',   '.'],   # f
  194 0x0067:   [u'\u0067',   '.'],   # g
  195 0x0068:   [u'\u0068',   '.'],   # h
  196 0x0069:   [u'\u0069',   '.'],   # i
  197 0x006a:   [u'\u006a',   '.'],   # j
  198 0x006b:   [u'\u006b',   '.'],   # k
  199 0x006c:   [u'\u006c',   '.'],   # l
  200 0x006d:   [u'\u006d',   '.'],   # m
  201 0x006e:   [u'\u006e',   '.'],   # n
  202 0x006f:   [u'\u006f',   '.'],   # o
  203 0x0070:   [u'\u0070',   '.'],   # p
  204 0x0071:   [u'\u0071',   '.'],   # q
  205 0x0072:   [u'\u0072',   '.'],   # r
  206 0x0073:   [u'\u0073',   '.'],   # s
  207 0x0074:   [u'\u0074',   '.'],   # t
  208 0x0075:   [u'\u0075',   '.'],   # u
  209 0x0076:   [u'\u0076',   '.'],   # v
  210 0x0077:   [u'\u0077',   '.'],   # w
  211 0x0078:   [u'\u0078',   '.'],   # x
  212 0x0079:   [u'\u0079',   '.'],   # y
  213 0x007a:   [u'\u007a',   '.'],   # z
  214 0x007b:   [u'\u007b',   '.'],   # braceleft
  215 0x007c:   [u'\u007c',   '.'],   # bar
  216 0x007d:   [u'\u007d',   '.'],   # braceright
  217 0x007e:   [u'\u007e',   '.'],   # asciitilde
  218 0x00a0:   [u'\u00a0',   '.'],   # nobreakspace
  219 0x00a1:   [u'\u00a1',   '.'],   # exclamdown
  220 0x00a2:   [u'\u00a2',   '.'],   # cent
  221 0x00a3:   [u'\u00a3',   '.'],   # sterling
  222 0x00a4:   [u'\u00a4',   '.'],   # currency
  223 0x00a5:   [u'\u00a5',   '.'],   # yen
  224 0x00a6:   [u'\u00a6',   '.'],   # brokenbar
  225 0x00a7:   [u'\u00a7',   '.'],   # section
  226 0x00a8:   [u'\u00a8',   '.'],   # diaeresis
  227 0x00a9:   [u'\u00a9',   '.'],   # copyright
  228 0x00aa:   [u'\u00aa',   '.'],   # ordfeminine
  229 0x00ab:   [u'\u00ab',   '.'],   # guillemotleft /* left angle quotation mark */
  230 0x00ac:   [u'\u00ac',   '.'],   # notsign
  231 0x00ad:   [u'\u00ad',   '.'],   # hyphen
  232 0x00ae:   [u'\u00ae',   '.'],   # registered
  233 0x00af:   [u'\u00af',   '.'],   # macron
  234 0x00b0:   [u'\u00b0',   '.'],   # degree
  235 0x00b1:   [u'\u00b1',   '.'],   # plusminus
  236 0x00b2:   [u'\u00b2',   '.'],   # twosuperior
  237 0x00b3:   [u'\u00b3',   '.'],   # threesuperior
  238 0x00b4:   [u'\u00b4',   '.'],   # acute
  239 0x00b5:   [u'\u00b5',   '.'],   # mu
  240 0x00b6:   [u'\u00b6',   '.'],   # paragraph
  241 0x00b7:   [u'\u00b7',   '.'],   # periodcentered
  242 0x00b8:   [u'\u00b8',   '.'],   # cedilla
  243 0x00b9:   [u'\u00b9',   '.'],   # onesuperior
  244 0x00ba:   [u'\u00ba',   '.'],   # masculine
  245 0x00bb:   [u'\u00bb',   '.'],   # guillemotright    /* right angle quotation mark */
  246 0x00bc:   [u'\u00bc',   '.'],   # onequarter
  247 0x00bd:   [u'\u00bd',   '.'],   # onehalf
  248 0x00be:   [u'\u00be',   '.'],   # threequarters
  249 0x00bf:   [u'\u00bf',   '.'],   # questiondown
  250 0x00c0:   [u'\u00c0',   '.'],   # Agrave
  251 0x00c1:   [u'\u00c1',   '.'],   # Aacute
  252 0x00c2:   [u'\u00c2',   '.'],   # Acircumflex
  253 0x00c3:   [u'\u00c3',   '.'],   # Atilde
  254 0x00c4:   [u'\u00c4',   '.'],   # Adiaeresis
  255 0x00c5:   [u'\u00c5',   '.'],   # Aring
  256 0x00c6:   [u'\u00c6',   '.'],   # AE
  257 0x00c7:   [u'\u00c7',   '.'],   # Ccedilla
  258 0x00c8:   [u'\u00c8',   '.'],   # Egrave
  259 0x00c9:   [u'\u00c9',   '.'],   # Eacute
  260 0x00ca:   [u'\u00ca',   '.'],   # Ecircumflex
  261 0x00cb:   [u'\u00cb',   '.'],   # Ediaeresis
  262 0x00cc:   [u'\u00cc',   '.'],   # Igrave
  263 0x00cd:   [u'\u00cd',   '.'],   # Iacute
  264 0x00ce:   [u'\u00ce',   '.'],   # Icircumflex
  265 0x00cf:   [u'\u00cf',   '.'],   # Idiaeresis
  266 0x00d0:   [u'\u00d0',   '.'],   # ETH
  267 0x00d0:   [u'\u00d0',   '.'],   # Eth   /* deprecated */
  268 0x00d1:   [u'\u00d1',   '.'],   # Ntilde
  269 0x00d2:   [u'\u00d2',   '.'],   # Ograve
  270 0x00d3:   [u'\u00d3',   '.'],   # Oacute
  271 0x00d4:   [u'\u00d4',   '.'],   # Ocircumflex
  272 0x00d5:   [u'\u00d5',   '.'],   # Otilde
  273 0x00d6:   [u'\u00d6',   '.'],   # Odiaeresis
  274 0x00d7:   [u'\u00d7',   '.'],   # multiply
  275 0x00d8:   [u'\u00d8',   '.'],   # Ooblique
  276 0x00d9:   [u'\u00d9',   '.'],   # Ugrave
  277 0x00da:   [u'\u00da',   '.'],   # Uacute
  278 0x00db:   [u'\u00db',   '.'],   # Ucircumflex
  279 0x00dc:   [u'\u00dc',   '.'],   # Udiaeresis
  280 0x00dd:   [u'\u00dd',   '.'],   # Yacute
  281 0x00de:   [u'\u00de',   '.'],   # THORN
  282 0x00de:   [u'\u00de',   '.'],   # Thorn /* deprecated */
  283 0x00df:   [u'\u00df',   '.'],   # ssharp
  284 0x00e0:   [u'\u00e0',   '.'],   # agrave
  285 0x00e1:   [u'\u00e1',   '.'],   # aacute
  286 0x00e2:   [u'\u00e2',   '.'],   # acircumflex
  287 0x00e3:   [u'\u00e3',   '.'],   # atilde
  288 0x00e4:   [u'\u00e4',   '.'],   # adiaeresis
  289 0x00e5:   [u'\u00e5',   '.'],   # aring
  290 0x00e6:   [u'\u00e6',   '.'],   # ae
  291 0x00e7:   [u'\u00e7',   '.'],   # ccedilla
  292 0x00e8:   [u'\u00e8',   '.'],   # egrave
  293 0x00e9:   [u'\u00e9',   '.'],   # eacute
  294 0x00ea:   [u'\u00ea',   '.'],   # ecircumflex
  295 0x00eb:   [u'\u00eb',   '.'],   # ediaeresis
  296 0x00ec:   [u'\u00ec',   '.'],   # igrave
  297 0x00ed:   [u'\u00ed',   '.'],   # iacute
  298 0x00ee:   [u'\u00ee',   '.'],   # icircumflex
  299 0x00ef:   [u'\u00ef',   '.'],   # idiaeresis
  300 0x00f0:   [u'\u00f0',   '.'],   # eth
  301 0x00f1:   [u'\u00f1',   '.'],   # ntilde
  302 0x00f2:   [u'\u00f2',   '.'],   # ograve
  303 0x00f3:   [u'\u00f3',   '.'],   # oacute
  304 0x00f4:   [u'\u00f4',   '.'],   # ocircumflex
  305 0x00f5:   [u'\u00f5',   '.'],   # otilde
  306 0x00f6:   [u'\u00f6',   '.'],   # odiaeresis
  307 0x00f7:   [u'\u00f7',   '.'],   # division
  308 0x00f8:   [u'\u00f8',   '.'],   # oslash
  309 0x00f9:   [u'\u00f9',   '.'],   # ugrave
  310 0x00fa:   [u'\u00fa',   '.'],   # uacute
  311 0x00fb:   [u'\u00fb',   '.'],   # ucircumflex
  312 0x00fc:   [u'\u00fc',   '.'],   # udiaeresis
  313 0x00fd:   [u'\u00fd',   '.'],   # yacute
  314 0x00fe:   [u'\u00fe',   '.'],   # thorn
  315 0x00ff:   [u'\u00ff',   '.'],   # ydiaeresis
  316 0x01a1:   [u'\u0104',   '.'],   # Aogonek
  317 0x01a2:   [u'\u02d8',   '.'],   # breve
  318 0x01a3:   [u'\u0141',   '.'],   # Lstroke
  319 0x01a5:   [u'\u013d',   '.'],   # Lcaron
  320 0x01a6:   [u'\u015a',   '.'],   # Sacute
  321 0x01a9:   [u'\u0160',   '.'],   # Scaron
  322 0x01aa:   [u'\u015e',   '.'],   # Scedilla
  323 0x01ab:   [u'\u0164',   '.'],   # Tcaron
  324 0x01ac:   [u'\u0179',   '.'],   # Zacute
  325 0x01ae:   [u'\u017d',   '.'],   # Zcaron
  326 0x01af:   [u'\u017b',   '.'],   # Zabovedot
  327 0x01b1:   [u'\u0105',   '.'],   # aogonek
  328 0x01b2:   [u'\u02db',   '.'],   # ogonek
  329 0x01b3:   [u'\u0142',   '.'],   # lstroke
  330 0x01b5:   [u'\u013e',   '.'],   # lcaron
  331 0x01b6:   [u'\u015b',   '.'],   # sacute
  332 0x01b7:   [u'\u02c7',   '.'],   # caron
  333 0x01b9:   [u'\u0161',   '.'],   # scaron
  334 0x01ba:   [u'\u015f',   '.'],   # scedilla
  335 0x01bb:   [u'\u0165',   '.'],   # tcaron
  336 0x01bc:   [u'\u017a',   '.'],   # zacute
  337 0x01bd:   [u'\u02dd',   '.'],   # doubleacute
  338 0x01be:   [u'\u017e',   '.'],   # zcaron
  339 0x01bf:   [u'\u017c',   '.'],   # zabovedot
  340 0x01c0:   [u'\u0154',   '.'],   # Racute
  341 0x01c3:   [u'\u0102',   '.'],   # Abreve
  342 0x01c5:   [u'\u0139',   '.'],   # Lacute
  343 0x01c6:   [u'\u0106',   '.'],   # Cacute
  344 0x01c8:   [u'\u010c',   '.'],   # Ccaron
  345 0x01ca:   [u'\u0118',   '.'],   # Eogonek
  346 0x01cc:   [u'\u011a',   '.'],   # Ecaron
  347 0x01cf:   [u'\u010e',   '.'],   # Dcaron
  348 0x01d0:   [u'\u0110',   '.'],   # Dstroke
  349 0x01d1:   [u'\u0143',   '.'],   # Nacute
  350 0x01d2:   [u'\u0147',   '.'],   # Ncaron
  351 0x01d5:   [u'\u0150',   '.'],   # Odoubleacute
  352 0x01d8:   [u'\u0158',   '.'],   # Rcaron
  353 0x01d9:   [u'\u016e',   '.'],   # Uring
  354 0x01db:   [u'\u0170',   '.'],   # Udoubleacute
  355 0x01de:   [u'\u0162',   '.'],   # Tcedilla
  356 0x01e0:   [u'\u0155',   '.'],   # racute
  357 0x01e3:   [u'\u0103',   '.'],   # abreve
  358 0x01e5:   [u'\u013a',   '.'],   # lacute
  359 0x01e6:   [u'\u0107',   '.'],   # cacute
  360 0x01e8:   [u'\u010d',   '.'],   # ccaron
  361 0x01ea:   [u'\u0119',   '.'],   # eogonek
  362 0x01ec:   [u'\u011b',   '.'],   # ecaron
  363 0x01ef:   [u'\u010f',   '.'],   # dcaron
  364 0x01f0:   [u'\u0111',   '.'],   # dstroke
  365 0x01f1:   [u'\u0144',   '.'],   # nacute
  366 0x01f2:   [u'\u0148',   '.'],   # ncaron
  367 0x01f5:   [u'\u0151',   '.'],   # odoubleacute
  368 0x01f8:   [u'\u0159',   '.'],   # rcaron
  369 0x01f9:   [u'\u016f',   '.'],   # uring
  370 0x01fb:   [u'\u0171',   '.'],   # udoubleacute
  371 0x01fe:   [u'\u0163',   '.'],   # tcedilla
  372 0x01ff:   [u'\u02d9',   '.'],   # abovedot
  373 0x02a1:   [u'\u0126',   '.'],   # Hstroke
  374 0x02a6:   [u'\u0124',   '.'],   # Hcircumflex
  375 0x02a9:   [u'\u0130',   '.'],   # Iabovedot
  376 0x02ab:   [u'\u011e',   '.'],   # Gbreve
  377 0x02ac:   [u'\u0134',   '.'],   # Jcircumflex
  378 0x02b1:   [u'\u0127',   '.'],   # hstroke
  379 0x02b6:   [u'\u0125',   '.'],   # hcircumflex
  380 0x02b9:   [u'\u0131',   '.'],   # idotless
  381 0x02bb:   [u'\u011f',   '.'],   # gbreve
  382 0x02bc:   [u'\u0135',   '.'],   # jcircumflex
  383 0x02c5:   [u'\u010a',   '.'],   # Cabovedot
  384 0x02c6:   [u'\u0108',   '.'],   # Ccircumflex
  385 0x02d5:   [u'\u0120',   '.'],   # Gabovedot
  386 0x02d8:   [u'\u011c',   '.'],   # Gcircumflex
  387 0x02dd:   [u'\u016c',   '.'],   # Ubreve
  388 0x02de:   [u'\u015c',   '.'],   # Scircumflex
  389 0x02e5:   [u'\u010b',   '.'],   # cabovedot
  390 0x02e6:   [u'\u0109',   '.'],   # ccircumflex
  391 0x02f5:   [u'\u0121',   '.'],   # gabovedot
  392 0x02f8:   [u'\u011d',   '.'],   # gcircumflex
  393 0x02fd:   [u'\u016d',   '.'],   # ubreve
  394 0x02fe:   [u'\u015d',   '.'],   # scircumflex
  395 0x03a2:   [u'\u0138',   '.'],   # kra
  396 0x03a3:   [u'\u0156',   '.'],   # Rcedilla
  397 0x03a5:   [u'\u0128',   '.'],   # Itilde
  398 0x03a6:   [u'\u013b',   '.'],   # Lcedilla
  399 0x03aa:   [u'\u0112',   '.'],   # Emacron
  400 0x03ab:   [u'\u0122',   '.'],   # Gcedilla
  401 0x03ac:   [u'\u0166',   '.'],   # Tslash
  402 0x03b3:   [u'\u0157',   '.'],   # rcedilla
  403 0x03b5:   [u'\u0129',   '.'],   # itilde
  404 0x03b6:   [u'\u013c',   '.'],   # lcedilla
  405 0x03ba:   [u'\u0113',   '.'],   # emacron
  406 0x03bb:   [u'\u0123',   '.'],   # gcedilla
  407 0x03bc:   [u'\u0167',   '.'],   # tslash
  408 0x03bd:   [u'\u014a',   '.'],   # ENG
  409 0x03bf:   [u'\u014b',   '.'],   # eng
  410 0x03c0:   [u'\u0100',   '.'],   # Amacron
  411 0x03c7:   [u'\u012e',   '.'],   # Iogonek
  412 0x03cc:   [u'\u0116',   '.'],   # Eabovedot
  413 0x03cf:   [u'\u012a',   '.'],   # Imacron
  414 0x03d1:   [u'\u0145',   '.'],   # Ncedilla
  415 0x03d2:   [u'\u014c',   '.'],   # Omacron
  416 0x03d3:   [u'\u0136',   '.'],   # Kcedilla
  417 0x03d9:   [u'\u0172',   '.'],   # Uogonek
  418 0x03dd:   [u'\u0168',   '.'],   # Utilde
  419 0x03de:   [u'\u016a',   '.'],   # Umacron
  420 0x03e0:   [u'\u0101',   '.'],   # amacron
  421 0x03e7:   [u'\u012f',   '.'],   # iogonek
  422 0x03ec:   [u'\u0117',   '.'],   # eabovedot
  423 0x03ef:   [u'\u012b',   '.'],   # imacron
  424 0x03f1:   [u'\u0146',   '.'],   # ncedilla
  425 0x03f2:   [u'\u014d',   '.'],   # omacron
  426 0x03f3:   [u'\u0137',   '.'],   # kcedilla
  427 0x03f9:   [u'\u0173',   '.'],   # uogonek
  428 0x03fd:   [u'\u0169',   '.'],   # utilde
  429 0x03fe:   [u'\u016b',   '.'],   # umacron
  430 0x047e:   [u'\u203e',   '.'],   # overline
  431 0x04a1:   [u'\u3002',   '.'],   # kana_fullstop
  432 0x04a2:   [u'\u300c',   '.'],   # kana_openingbracket
  433 0x04a3:   [u'\u300d',   '.'],   # kana_closingbracket
  434 0x04a4:   [u'\u3001',   '.'],   # kana_comma
  435 0x04a5:   [u'\u30fb',   '.'],   # kana_conjunctive
  436 0x04a6:   [u'\u30f2',   '.'],   # kana_WO
  437 0x04a7:   [u'\u30a1',   '.'],   # kana_a
  438 0x04a8:   [u'\u30a3',   '.'],   # kana_i
  439 0x04a9:   [u'\u30a5',   '.'],   # kana_u
  440 0x04aa:   [u'\u30a7',   '.'],   # kana_e
  441 0x04ab:   [u'\u30a9',   '.'],   # kana_o
  442 0x04ac:   [u'\u30e3',   '.'],   # kana_ya
  443 0x04ad:   [u'\u30e5',   '.'],   # kana_yu
  444 0x04ae:   [u'\u30e7',   '.'],   # kana_yo
  445 0x04af:   [u'\u30c3',   '.'],   # kana_tsu
  446 0x04b0:   [u'\u30fc',   '.'],   # prolongedsound
  447 0x04b1:   [u'\u30a2',   '.'],   # kana_A
  448 0x04b2:   [u'\u30a4',   '.'],   # kana_I
  449 0x04b3:   [u'\u30a6',   '.'],   # kana_U
  450 0x04b4:   [u'\u30a8',   '.'],   # kana_E
  451 0x04b5:   [u'\u30aa',   '.'],   # kana_O
  452 0x04b6:   [u'\u30ab',   '.'],   # kana_KA
  453 0x04b7:   [u'\u30ad',   '.'],   # kana_KI
  454 0x04b8:   [u'\u30af',   '.'],   # kana_KU
  455 0x04b9:   [u'\u30b1',   '.'],   # kana_KE
  456 0x04ba:   [u'\u30b3',   '.'],   # kana_KO
  457 0x04bb:   [u'\u30b5',   '.'],   # kana_SA
  458 0x04bc:   [u'\u30b7',   '.'],   # kana_SHI
  459 0x04bd:   [u'\u30b9',   '.'],   # kana_SU
  460 0x04be:   [u'\u30bb',   '.'],   # kana_SE
  461 0x04bf:   [u'\u30bd',   '.'],   # kana_SO
  462 0x04c0:   [u'\u30bf',   '.'],   # kana_TA
  463 0x04c1:   [u'\u30c1',   '.'],   # kana_CHI
  464 0x04c2:   [u'\u30c4',   '.'],   # kana_TSU
  465 0x04c3:   [u'\u30c6',   '.'],   # kana_TE
  466 0x04c4:   [u'\u30c8',   '.'],   # kana_TO
  467 0x04c5:   [u'\u30ca',   '.'],   # kana_NA
  468 0x04c6:   [u'\u30cb',   '.'],   # kana_NI
  469 0x04c7:   [u'\u30cc',   '.'],   # kana_NU
  470 0x04c8:   [u'\u30cd',   '.'],   # kana_NE
  471 0x04c9:   [u'\u30ce',   '.'],   # kana_NO
  472 0x04ca:   [u'\u30cf',   '.'],   # kana_HA
  473 0x04cb:   [u'\u30d2',   '.'],   # kana_HI
  474 0x04cc:   [u'\u30d5',   '.'],   # kana_FU
  475 0x04cd:   [u'\u30d8',   '.'],   # kana_HE
  476 0x04ce:   [u'\u30db',   '.'],   # kana_HO
  477 0x04cf:   [u'\u30de',   '.'],   # kana_MA
  478 0x04d0:   [u'\u30df',   '.'],   # kana_MI
  479 0x04d1:   [u'\u30e0',   '.'],   # kana_MU
  480 0x04d2:   [u'\u30e1',   '.'],   # kana_ME
  481 0x04d3:   [u'\u30e2',   '.'],   # kana_MO
  482 0x04d4:   [u'\u30e4',   '.'],   # kana_YA
  483 0x04d5:   [u'\u30e6',   '.'],   # kana_YU
  484 0x04d6:   [u'\u30e8',   '.'],   # kana_YO
  485 0x04d7:   [u'\u30e9',   '.'],   # kana_RA
  486 0x04d8:   [u'\u30ea',   '.'],   # kana_RI
  487 0x04d9:   [u'\u30eb',   '.'],   # kana_RU
  488 0x04da:   [u'\u30ec',   '.'],   # kana_RE
  489 0x04db:   [u'\u30ed',   '.'],   # kana_RO
  490 0x04dc:   [u'\u30ef',   '.'],   # kana_WA
  491 0x04dd:   [u'\u30f3',   '.'],   # kana_N
  492 0x04de:   [u'\u309b',   '.'],   # voicedsound
  493 0x04df:   [u'\u309c',   '.'],   # semivoicedsound
  494 0x05ac:   [u'\u060c',   '.'],   # Arabic_comma
  495 0x05bb:   [u'\u061b',   '.'],   # Arabic_semicolon
  496 0x05bf:   [u'\u061f',   '.'],   # Arabic_question_mark
  497 0x05c1:   [u'\u0621',   '.'],   # Arabic_hamza
  498 0x05c2:   [u'\u0622',   '.'],   # Arabic_maddaonalef
  499 0x05c3:   [u'\u0623',   '.'],   # Arabic_hamzaonalef
  500 0x05c4:   [u'\u0624',   '.'],   # Arabic_hamzaonwaw
  501 0x05c5:   [u'\u0625',   '.'],   # Arabic_hamzaunderalef
  502 0x05c6:   [u'\u0626',   '.'],   # Arabic_hamzaonyeh
  503 0x05c7:   [u'\u0627',   '.'],   # Arabic_alef
  504 0x05c8:   [u'\u0628',   '.'],   # Arabic_beh
  505 0x05c9:   [u'\u0629',   '.'],   # Arabic_tehmarbuta
  506 0x05ca:   [u'\u062a',   '.'],   # Arabic_teh
  507 0x05cb:   [u'\u062b',   '.'],   # Arabic_theh
  508 0x05cc:   [u'\u062c',   '.'],   # Arabic_jeem
  509 0x05cd:   [u'\u062d',   '.'],   # Arabic_hah
  510 0x05ce:   [u'\u062e',   '.'],   # Arabic_khah
  511 0x05cf:   [u'\u062f',   '.'],   # Arabic_dal
  512 0x05d0:   [u'\u0630',   '.'],   # Arabic_thal
  513 0x05d1:   [u'\u0631',   '.'],   # Arabic_ra
  514 0x05d2:   [u'\u0632',   '.'],   # Arabic_zain
  515 0x05d3:   [u'\u0633',   '.'],   # Arabic_seen
  516 0x05d4:   [u'\u0634',   '.'],   # Arabic_sheen
  517 0x05d5:   [u'\u0635',   '.'],   # Arabic_sad
  518 0x05d6:   [u'\u0636',   '.'],   # Arabic_dad
  519 0x05d7:   [u'\u0637',   '.'],   # Arabic_tah
  520 0x05d8:   [u'\u0638',   '.'],   # Arabic_zah
  521 0x05d9:   [u'\u0639',   '.'],   # Arabic_ain
  522 0x05da:   [u'\u063a',   '.'],   # Arabic_ghain
  523 0x05e0:   [u'\u0640',   '.'],   # Arabic_tatweel
  524 0x05e1:   [u'\u0641',   '.'],   # Arabic_feh
  525 0x05e2:   [u'\u0642',   '.'],   # Arabic_qaf
  526 0x05e3:   [u'\u0643',   '.'],   # Arabic_kaf
  527 0x05e4:   [u'\u0644',   '.'],   # Arabic_lam
  528 0x05e5:   [u'\u0645',   '.'],   # Arabic_meem
  529 0x05e6:   [u'\u0646',   '.'],   # Arabic_noon
  530 0x05e7:   [u'\u0647',   '.'],   # Arabic_ha
  531 0x05e8:   [u'\u0648',   '.'],   # Arabic_waw
  532 0x05e9:   [u'\u0649',   '.'],   # Arabic_alefmaksura
  533 0x05ea:   [u'\u064a',   '.'],   # Arabic_yeh
  534 0x05eb:   [u'\u064b',   '.'],   # Arabic_fathatan
  535 0x05ec:   [u'\u064c',   '.'],   # Arabic_dammatan
  536 0x05ed:   [u'\u064d',   '.'],   # Arabic_kasratan
  537 0x05ee:   [u'\u064e',   '.'],   # Arabic_fatha
  538 0x05ef:   [u'\u064f',   '.'],   # Arabic_damma
  539 0x05f0:   [u'\u0650',   '.'],   # Arabic_kasra
  540 0x05f1:   [u'\u0651',   '.'],   # Arabic_shadda
  541 0x05f2:   [u'\u0652',   '.'],   # Arabic_sukun
  542 0x06a1:   [u'\u0452',   '.'],   # Serbian_dje
  543 0x06a2:   [u'\u0453',   '.'],   # Macedonia_gje
  544 0x06a3:   [u'\u0451',   '.'],   # Cyrillic_io
  545 0x06a4:   [u'\u0454',   '.'],   # Ukrainian_ie
  546 0x06a5:   [u'\u0455',   '.'],   # Macedonia_dse
  547 0x06a6:   [u'\u0456',   '.'],   # Ukrainian_i
  548 0x06a7:   [u'\u0457',   '.'],   # Ukrainian_yi
  549 0x06a8:   [u'\u0458',   '.'],   # Cyrillic_je
  550 0x06a9:   [u'\u0459',   '.'],   # Cyrillic_lje
  551 0x06aa:   [u'\u045a',   '.'],   # Cyrillic_nje
  552 0x06ab:   [u'\u045b',   '.'],   # Serbian_tshe
  553 0x06ac:   [u'\u045c',   '.'],   # Macedonia_kje
  554 0x06ae:   [u'\u045e',   '.'],   # Byelorussian_shortu
  555 0x06af:   [u'\u045f',   '.'],   # Cyrillic_dzhe
  556 0x06b0:   [u'\u2116',   '.'],   # numerosign
  557 0x06b1:   [u'\u0402',   '.'],   # Serbian_DJE
  558 0x06b2:   [u'\u0403',   '.'],   # Macedonia_GJE
  559 0x06b3:   [u'\u0401',   '.'],   # Cyrillic_IO
  560 0x06b4:   [u'\u0404',   '.'],   # Ukrainian_IE
  561 0x06b5:   [u'\u0405',   '.'],   # Macedonia_DSE
  562 0x06b6:   [u'\u0406',   '.'],   # Ukrainian_I
  563 0x06b7:   [u'\u0407',   '.'],   # Ukrainian_YI
  564 0x06b8:   [u'\u0408',   '.'],   # Cyrillic_JE
  565 0x06b9:   [u'\u0409',   '.'],   # Cyrillic_LJE
  566 0x06ba:   [u'\u040a',   '.'],   # Cyrillic_NJE
  567 0x06bb:   [u'\u040b',   '.'],   # Serbian_TSHE
  568 0x06bc:   [u'\u040c',   '.'],   # Macedonia_KJE
  569 0x06be:   [u'\u040e',   '.'],   # Byelorussian_SHORTU
  570 0x06bf:   [u'\u040f',   '.'],   # Cyrillic_DZHE
  571 0x06c0:   [u'\u044e',   '.'],   # Cyrillic_yu
  572 0x06c1:   [u'\u0430',   '.'],   # Cyrillic_a
  573 0x06c2:   [u'\u0431',   '.'],   # Cyrillic_be
  574 0x06c3:   [u'\u0446',   '.'],   # Cyrillic_tse
  575 0x06c4:   [u'\u0434',   '.'],   # Cyrillic_de
  576 0x06c5:   [u'\u0435',   '.'],   # Cyrillic_ie
  577 0x06c6:   [u'\u0444',   '.'],   # Cyrillic_ef
  578 0x06c7:   [u'\u0433',   '.'],   # Cyrillic_ghe
  579 0x06c8:   [u'\u0445',   '.'],   # Cyrillic_ha
  580 0x06c9:   [u'\u0438',   '.'],   # Cyrillic_i
  581 0x06ca:   [u'\u0439',   '.'],   # Cyrillic_shorti
  582 0x06cb:   [u'\u043a',   '.'],   # Cyrillic_ka
  583 0x06cc:   [u'\u043b',   '.'],   # Cyrillic_el
  584 0x06cd:   [u'\u043c',   '.'],   # Cyrillic_em
  585 0x06ce:   [u'\u043d',   '.'],   # Cyrillic_en
  586 0x06cf:   [u'\u043e',   '.'],   # Cyrillic_o
  587 0x06d0:   [u'\u043f',   '.'],   # Cyrillic_pe
  588 0x06d1:   [u'\u044f',   '.'],   # Cyrillic_ya
  589 0x06d2:   [u'\u0440',   '.'],   # Cyrillic_er
  590 0x06d3:   [u'\u0441',   '.'],   # Cyrillic_es
  591 0x06d4:   [u'\u0442',   '.'],   # Cyrillic_te
  592 0x06d5:   [u'\u0443',   '.'],   # Cyrillic_u
  593 0x06d6:   [u'\u0436',   '.'],   # Cyrillic_zhe
  594 0x06d7:   [u'\u0432',   '.'],   # Cyrillic_ve
  595 0x06d8:   [u'\u044c',   '.'],   # Cyrillic_softsign
  596 0x06d9:   [u'\u044b',   '.'],   # Cyrillic_yeru
  597 0x06da:   [u'\u0437',   '.'],   # Cyrillic_ze
  598 0x06db:   [u'\u0448',   '.'],   # Cyrillic_sha
  599 0x06dc:   [u'\u044d',   '.'],   # Cyrillic_e
  600 0x06dd:   [u'\u0449',   '.'],   # Cyrillic_shcha
  601 0x06de:   [u'\u0447',   '.'],   # Cyrillic_che
  602 0x06df:   [u'\u044a',   '.'],   # Cyrillic_hardsign
  603 0x06e0:   [u'\u042e',   '.'],   # Cyrillic_YU
  604 0x06e1:   [u'\u0410',   '.'],   # Cyrillic_A
  605 0x06e2:   [u'\u0411',   '.'],   # Cyrillic_BE
  606 0x06e3:   [u'\u0426',   '.'],   # Cyrillic_TSE
  607 0x06e4:   [u'\u0414',   '.'],   # Cyrillic_DE
  608 0x06e5:   [u'\u0415',   '.'],   # Cyrillic_IE
  609 0x06e6:   [u'\u0424',   '.'],   # Cyrillic_EF
  610 0x06e7:   [u'\u0413',   '.'],   # Cyrillic_GHE
  611 0x06e8:   [u'\u0425',   '.'],   # Cyrillic_HA
  612 0x06e9:   [u'\u0418',   '.'],   # Cyrillic_I
  613 0x06ea:   [u'\u0419',   '.'],   # Cyrillic_SHORTI
  614 0x06eb:   [u'\u041a',   '.'],   # Cyrillic_KA
  615 0x06ec:   [u'\u041b',   '.'],   # Cyrillic_EL
  616 0x06ed:   [u'\u041c',   '.'],   # Cyrillic_EM
  617 0x06ee:   [u'\u041d',   '.'],   # Cyrillic_EN
  618 0x06ef:   [u'\u041e',   '.'],   # Cyrillic_O
  619 0x06f0:   [u'\u041f',   '.'],   # Cyrillic_PE
  620 0x06f1:   [u'\u042f',   '.'],   # Cyrillic_YA
  621 0x06f2:   [u'\u0420',   '.'],   # Cyrillic_ER
  622 0x06f3:   [u'\u0421',   '.'],   # Cyrillic_ES
  623 0x06f4:   [u'\u0422',   '.'],   # Cyrillic_TE
  624 0x06f5:   [u'\u0423',   '.'],   # Cyrillic_U
  625 0x06f6:   [u'\u0416',   '.'],   # Cyrillic_ZHE
  626 0x06f7:   [u'\u0412',   '.'],   # Cyrillic_VE
  627 0x06f8:   [u'\u042c',   '.'],   # Cyrillic_SOFTSIGN
  628 0x06f9:   [u'\u042b',   '.'],   # Cyrillic_YERU
  629 0x06fa:   [u'\u0417',   '.'],   # Cyrillic_ZE
  630 0x06fb:   [u'\u0428',   '.'],   # Cyrillic_SHA
  631 0x06fc:   [u'\u042d',   '.'],   # Cyrillic_E
  632 0x06fd:   [u'\u0429',   '.'],   # Cyrillic_SHCHA
  633 0x06fe:   [u'\u0427',   '.'],   # Cyrillic_CHE
  634 0x06ff:   [u'\u042a',   '.'],   # Cyrillic_HARDSIGN
  635 0x07a1:   [u'\u0386',   '.'],   # Greek_ALPHAaccent
  636 0x07a2:   [u'\u0388',   '.'],   # Greek_EPSILONaccent
  637 0x07a3:   [u'\u0389',   '.'],   # Greek_ETAaccent
  638 0x07a4:   [u'\u038a',   '.'],   # Greek_IOTAaccent
  639 0x07a5:   [u'\u03aa',   '.'],   # Greek_IOTAdiaeresis
  640 0x07a7:   [u'\u038c',   '.'],   # Greek_OMICRONaccent
  641 0x07a8:   [u'\u038e',   '.'],   # Greek_UPSILONaccent
  642 0x07a9:   [u'\u03ab',   '.'],   # Greek_UPSILONdieresis
  643 0x07ab:   [u'\u038f',   '.'],   # Greek_OMEGAaccent
  644 0x07ae:   [u'\u0385',   '.'],   # Greek_accentdieresis
  645 0x07af:   [u'\u2015',   '.'],   # Greek_horizbar
  646 0x07b1:   [u'\u03ac',   '.'],   # Greek_alphaaccent
  647 0x07b2:   [u'\u03ad',   '.'],   # Greek_epsilonaccent
  648 0x07b3:   [u'\u03ae',   '.'],   # Greek_etaaccent
  649 0x07b4:   [u'\u03af',   '.'],   # Greek_iotaaccent
  650 0x07b5:   [u'\u03ca',   '.'],   # Greek_iotadieresis
  651 0x07b6:   [u'\u0390',   '.'],   # Greek_iotaaccentdieresis
  652 0x07b7:   [u'\u03cc',   '.'],   # Greek_omicronaccent
  653 0x07b8:   [u'\u03cd',   '.'],   # Greek_upsilonaccent
  654 0x07b9:   [u'\u03cb',   '.'],   # Greek_upsilondieresis
  655 0x07ba:   [u'\u03b0',   '.'],   # Greek_upsilonaccentdieresis
  656 0x07bb:   [u'\u03ce',   '.'],   # Greek_omegaaccent
  657 0x07c1:   [u'\u0391',   '.'],   # Greek_ALPHA
  658 0x07c2:   [u'\u0392',   '.'],   # Greek_BETA
  659 0x07c3:   [u'\u0393',   '.'],   # Greek_GAMMA
  660 0x07c4:   [u'\u0394',   '.'],   # Greek_DELTA
  661 0x07c5:   [u'\u0395',   '.'],   # Greek_EPSILON
  662 0x07c6:   [u'\u0396',   '.'],   # Greek_ZETA
  663 0x07c7:   [u'\u0397',   '.'],   # Greek_ETA
  664 0x07c8:   [u'\u0398',   '.'],   # Greek_THETA
  665 0x07c9:   [u'\u0399',   '.'],   # Greek_IOTA
  666 0x07ca:   [u'\u039a',   '.'],   # Greek_KAPPA
  667 0x07cb:   [u'\u039b',   '.'],   # Greek_LAMBDA
  668 0x07cb:   [u'\u039b',   '.'],   # Greek_LAMDA
  669 0x07cc:   [u'\u039c',   '.'],   # Greek_MU
  670 0x07cd:   [u'\u039d',   '.'],   # Greek_NU
  671 0x07ce:   [u'\u039e',   '.'],   # Greek_XI
  672 0x07cf:   [u'\u039f',   '.'],   # Greek_OMICRON
  673 0x07d0:   [u'\u03a0',   '.'],   # Greek_PI
  674 0x07d1:   [u'\u03a1',   '.'],   # Greek_RHO
  675 0x07d2:   [u'\u03a3',   '.'],   # Greek_SIGMA
  676 0x07d4:   [u'\u03a4',   '.'],   # Greek_TAU
  677 0x07d5:   [u'\u03a5',   '.'],   # Greek_UPSILON
  678 0x07d6:   [u'\u03a6',   '.'],   # Greek_PHI
  679 0x07d7:   [u'\u03a7',   '.'],   # Greek_CHI
  680 0x07d8:   [u'\u03a8',   '.'],   # Greek_PSI
  681 0x07d9:   [u'\u03a9',   '.'],   # Greek_OMEGA
  682 0x07e1:   [u'\u03b1',   '.'],   # Greek_alpha
  683 0x07e2:   [u'\u03b2',   '.'],   # Greek_beta
  684 0x07e3:   [u'\u03b3',   '.'],   # Greek_gamma
  685 0x07e4:   [u'\u03b4',   '.'],   # Greek_delta
  686 0x07e5:   [u'\u03b5',   '.'],   # Greek_epsilon
  687 0x07e6:   [u'\u03b6',   '.'],   # Greek_zeta
  688 0x07e7:   [u'\u03b7',   '.'],   # Greek_eta
  689 0x07e8:   [u'\u03b8',   '.'],   # Greek_theta
  690 0x07e9:   [u'\u03b9',   '.'],   # Greek_iota
  691 0x07ea:   [u'\u03ba',   '.'],   # Greek_kappa
  692 0x07eb:   [u'\u03bb',   '.'],   # Greek_lambda
  693 0x07ec:   [u'\u03bc',   '.'],   # Greek_mu
  694 0x07ed:   [u'\u03bd',   '.'],   # Greek_nu
  695 0x07ee:   [u'\u03be',   '.'],   # Greek_xi
  696 0x07ef:   [u'\u03bf',   '.'],   # Greek_omicron
  697 0x07f0:   [u'\u03c0',   '.'],   # Greek_pi
  698 0x07f1:   [u'\u03c1',   '.'],   # Greek_rho
  699 0x07f2:   [u'\u03c3',   '.'],   # Greek_sigma
  700 0x07f3:   [u'\u03c2',   '.'],   # Greek_finalsmallsigma
  701 0x07f4:   [u'\u03c4',   '.'],   # Greek_tau
  702 0x07f5:   [u'\u03c5',   '.'],   # Greek_upsilon
  703 0x07f6:   [u'\u03c6',   '.'],   # Greek_phi
  704 0x07f7:   [u'\u03c7',   '.'],   # Greek_chi
  705 0x07f8:   [u'\u03c8',   '.'],   # Greek_psi
  706 0x07f9:   [u'\u03c9',   '.'],   # Greek_omega
  707 0x08a1:   [u'\u23b7',   '.'],   # leftradical
  708 0x08a2:   [u'\u250c',   'd'],   # topleftradical
  709 0x08a3:   [u'\u2500',   'd'],   # horizconnector
  710 0x08a4:   [u'\u2320',   '.'],   # topintegral
  711 0x08a5:   [u'\u2321',   '.'],   # botintegral
  712 0x08a6:   [u'\u2502',   'd'],   # vertconnector
  713 0x08a7:   [u'\u23a1',   '.'],   # topleftsqbracket
  714 0x08a8:   [u'\u23a3',   '.'],   # botleftsqbracket
  715 0x08a9:   [u'\u23a4',   '.'],   # toprightsqbracket
  716 0x08aa:   [u'\u23a6',   '.'],   # botrightsqbracket
  717 0x08ab:   [u'\u239b',   '.'],   # topleftparens
  718 0x08ac:   [u'\u239d',   '.'],   # botleftparens
  719 0x08ad:   [u'\u239e',   '.'],   # toprightparens
  720 0x08ae:   [u'\u23a0',   '.'],   # botrightparens
  721 0x08af:   [u'\u23a8',   '.'],   # leftmiddlecurlybrace
  722 0x08b0:   [u'\u23ac',   '.'],   # rightmiddlecurlybrace
  723 0x08b1:   [None     ,   'o'],   # topleftsummation
  724 0x08b2:   [None     ,   'o'],   # botleftsummation
  725 0x08b3:   [None     ,   'o'],   # topvertsummationconnector
  726 0x08b4:   [None     ,   'o'],   # botvertsummationconnector
  727 0x08b5:   [None     ,   'o'],   # toprightsummation
  728 0x08b6:   [None     ,   'o'],   # botrightsummation
  729 0x08b7:   [None     ,   'o'],   # rightmiddlesummation
  730 0x08bc:   [u'\u2264',   '.'],   # lessthanequal
  731 0x08bd:   [u'\u2260',   '.'],   # notequal
  732 0x08be:   [u'\u2265',   '.'],   # greaterthanequal
  733 0x08bf:   [u'\u222b',   '.'],   # integral
  734 0x08c0:   [u'\u2234',   '.'],   # therefore
  735 0x08c1:   [u'\u221d',   '.'],   # variation
  736 0x08c2:   [u'\u221e',   '.'],   # infinity
  737 0x08c5:   [u'\u2207',   '.'],   # nabla
  738 0x08c8:   [u'\u223c',   '.'],   # approximate
  739 0x08c9:   [u'\u2243',   '.'],   # similarequal
  740 0x08cd:   [u'\u21d4',   '.'],   # ifonlyif
  741 0x08ce:   [u'\u21d2',   '.'],   # implies
  742 0x08cf:   [u'\u2261',   '.'],   # identical
  743 0x08d6:   [u'\u221a',   '.'],   # radical
  744 0x08da:   [u'\u2282',   '.'],   # includedin
  745 0x08db:   [u'\u2283',   '.'],   # includes
  746 0x08dc:   [u'\u2229',   '.'],   # intersection
  747 0x08dd:   [u'\u222a',   '.'],   # union
  748 0x08de:   [u'\u2227',   '.'],   # logicaland
  749 0x08df:   [u'\u2228',   '.'],   # logicalor
  750 0x08ef:   [u'\u2202',   '.'],   # partialderivative
  751 0x08f6:   [u'\u0192',   '.'],   # function
  752 0x08fb:   [u'\u2190',   '.'],   # leftarrow
  753 0x08fc:   [u'\u2191',   '.'],   # uparrow
  754 0x08fd:   [u'\u2192',   '.'],   # rightarrow
  755 0x08fe:   [u'\u2193',   '.'],   # downarrow
  756 0x09df:   [None     ,   'o'],   # blank
  757 0x09e0:   [u'\u25c6',   '.'],   # soliddiamond
  758 0x09e1:   [u'\u2592',   '.'],   # checkerboard
  759 0x09e2:   [u'\u2409',   '.'],   # ht
  760 0x09e3:   [u'\u240c',   '.'],   # ff
  761 0x09e4:   [u'\u240d',   '.'],   # cr
  762 0x09e5:   [u'\u240a',   '.'],   # lf
  763 0x09e8:   [u'\u2424',   '.'],   # nl
  764 0x09e9:   [u'\u240b',   '.'],   # vt
  765 0x09ea:   [u'\u2518',   '.'],   # lowrightcorner
  766 0x09eb:   [u'\u2510',   '.'],   # uprightcorner
  767 0x09ec:   [u'\u250c',   '.'],   # upleftcorner
  768 0x09ed:   [u'\u2514',   '.'],   # lowleftcorner
  769 0x09ee:   [u'\u253c',   '.'],   # crossinglines
  770 0x09ef:   [u'\u23ba',   '.'],   # horizlinescan1
  771 0x09f0:   [u'\u23bb',   '.'],   # horizlinescan3
  772 0x09f1:   [u'\u2500',   '.'],   # horizlinescan5
  773 0x09f2:   [u'\u23bc',   '.'],   # horizlinescan7
  774 0x09f3:   [u'\u23bd',   '.'],   # horizlinescan9
  775 0x09f4:   [u'\u251c',   '.'],   # leftt
  776 0x09f5:   [u'\u2524',   '.'],   # rightt
  777 0x09f6:   [u'\u2534',   '.'],   # bott
  778 0x09f7:   [u'\u252c',   '.'],   # topt
  779 0x09f8:   [u'\u2502',   '.'],   # vertbar
  780 0x0aa1:   [u'\u2003',   '.'],   # emspace
  781 0x0aa2:   [u'\u2002',   '.'],   # enspace
  782 0x0aa3:   [u'\u2004',   '.'],   # em3space
  783 0x0aa4:   [u'\u2005',   '.'],   # em4space
  784 0x0aa5:   [u'\u2007',   '.'],   # digitspace
  785 0x0aa6:   [u'\u2008',   '.'],   # punctspace
  786 0x0aa7:   [u'\u2009',   '.'],   # thinspace
  787 0x0aa8:   [u'\u200a',   '.'],   # hairspace
  788 0x0aa9:   [u'\u2014',   '.'],   # emdash
  789 0x0aaa:   [u'\u2013',   '.'],   # endash
  790 0x0aac:   [u'\u2423',   'o'],   # signifblank
  791 0x0aae:   [u'\u2026',   '.'],   # ellipsis
  792 0x0aaf:   [u'\u2025',   '.'],   # doubbaselinedot
  793 0x0ab0:   [u'\u2153',   '.'],   # onethird
  794 0x0ab1:   [u'\u2154',   '.'],   # twothirds
  795 0x0ab2:   [u'\u2155',   '.'],   # onefifth
  796 0x0ab3:   [u'\u2156',   '.'],   # twofifths
  797 0x0ab4:   [u'\u2157',   '.'],   # threefifths
  798 0x0ab5:   [u'\u2158',   '.'],   # fourfifths
  799 0x0ab6:   [u'\u2159',   '.'],   # onesixth
  800 0x0ab7:   [u'\u215a',   '.'],   # fivesixths
  801 0x0ab8:   [u'\u2105',   '.'],   # careof
  802 0x0abb:   [u'\u2012',   '.'],   # figdash
  803 0x0abc:   [u'\u27e8',   'o'],   # leftanglebracket
  804 0x0abd:   [u'\u002e',   'o'],   # decimalpoint
  805 0x0abe:   [u'\u27e9',   'o'],   # rightanglebracket
  806 0x0abf:   [None     ,   'o'],   # marker
  807 0x0ac3:   [u'\u215b',   '.'],   # oneeighth
  808 0x0ac4:   [u'\u215c',   '.'],   # threeeighths
  809 0x0ac5:   [u'\u215d',   '.'],   # fiveeighths
  810 0x0ac6:   [u'\u215e',   '.'],   # seveneighths
  811 0x0ac9:   [u'\u2122',   '.'],   # trademark
  812 0x0aca:   [u'\u2613',   'o'],   # signaturemark
  813 0x0acb:   [None     ,   'o'],   # trademarkincircle
  814 0x0acc:   [u'\u25c1',   'o'],   # leftopentriangle
  815 0x0acd:   [u'\u25b7',   'o'],   # rightopentriangle
  816 0x0ace:   [u'\u25cb',   'o'],   # emopencircle
  817 0x0acf:   [u'\u25af',   'o'],   # emopenrectangle
  818 0x0ad0:   [u'\u2018',   '.'],   # leftsinglequotemark
  819 0x0ad1:   [u'\u2019',   '.'],   # rightsinglequotemark
  820 0x0ad2:   [u'\u201c',   '.'],   # leftdoublequotemark
  821 0x0ad3:   [u'\u201d',   '.'],   # rightdoublequotemark
  822 0x0ad4:   [u'\u211e',   '.'],   # prescription
  823 0x0ad6:   [u'\u2032',   '.'],   # minutes
  824 0x0ad7:   [u'\u2033',   '.'],   # seconds
  825 0x0ad9:   [u'\u271d',   '.'],   # latincross
  826 0x0ada:   [None     ,   'o'],   # hexagram
  827 0x0adb:   [u'\u25ac',   'o'],   # filledrectbullet
  828 0x0adc:   [u'\u25c0',   'o'],   # filledlefttribullet
  829 0x0add:   [u'\u25b6',   'o'],   # filledrighttribullet
  830 0x0ade:   [u'\u25cf',   'o'],   # emfilledcircle
  831 0x0adf:   [u'\u25ae',   'o'],   # emfilledrect
  832 0x0ae0:   [u'\u25e6',   'o'],   # enopencircbullet
  833 0x0ae1:   [u'\u25ab',   'o'],   # enopensquarebullet
  834 0x0ae2:   [u'\u25ad',   'o'],   # openrectbullet
  835 0x0ae3:   [u'\u25b3',   'o'],   # opentribulletup
  836 0x0ae4:   [u'\u25bd',   'o'],   # opentribulletdown
  837 0x0ae5:   [u'\u2606',   'o'],   # openstar
  838 0x0ae6:   [u'\u2022',   'o'],   # enfilledcircbullet
  839 0x0ae7:   [u'\u25aa',   'o'],   # enfilledsqbullet
  840 0x0ae8:   [u'\u25b2',   'o'],   # filledtribulletup
  841 0x0ae9:   [u'\u25bc',   'o'],   # filledtribulletdown
  842 0x0aea:   [u'\u261c',   'o'],   # leftpointer
  843 0x0aeb:   [u'\u261e',   'o'],   # rightpointer
  844 0x0aec:   [u'\u2663',   '.'],   # club
  845 0x0aed:   [u'\u2666',   '.'],   # diamond
  846 0x0aee:   [u'\u2665',   '.'],   # heart
  847 0x0af0:   [u'\u2720',   '.'],   # maltesecross
  848 0x0af1:   [u'\u2020',   '.'],   # dagger
  849 0x0af2:   [u'\u2021',   '.'],   # doubledagger
  850 0x0af3:   [u'\u2713',   '.'],   # checkmark
  851 0x0af4:   [u'\u2717',   '.'],   # ballotcross
  852 0x0af5:   [u'\u266f',   '.'],   # musicalsharp
  853 0x0af6:   [u'\u266d',   '.'],   # musicalflat
  854 0x0af7:   [u'\u2642',   '.'],   # malesymbol
  855 0x0af8:   [u'\u2640',   '.'],   # femalesymbol
  856 0x0af9:   [u'\u260e',   '.'],   # telephone
  857 0x0afa:   [u'\u2315',   '.'],   # telephonerecorder
  858 0x0afb:   [u'\u2117',   '.'],   # phonographcopyright
  859 0x0afc:   [u'\u2038',   '.'],   # caret
  860 0x0afd:   [u'\u201a',   '.'],   # singlelowquotemark
  861 0x0afe:   [u'\u201e',   '.'],   # doublelowquotemark
  862 0x0aff:   [None     ,   'o'],   # cursor
  863 0x0ba3:   [u'\u003c',   'd'],   # leftcaret
  864 0x0ba6:   [u'\u003e',   'd'],   # rightcaret
  865 0x0ba8:   [u'\u2228',   'd'],   # downcaret
  866 0x0ba9:   [u'\u2227',   'd'],   # upcaret
  867 0x0bc0:   [u'\u00af',   'd'],   # overbar
  868 0x0bc2:   [u'\u22a5',   '.'],   # downtack
  869 0x0bc3:   [u'\u2229',   'd'],   # upshoe
  870 0x0bc4:   [u'\u230a',   '.'],   # downstile
  871 0x0bc6:   [u'\u005f',   'd'],   # underbar
  872 0x0bca:   [u'\u2218',   '.'],   # jot
  873 0x0bcc:   [u'\u2395',   '.'],   # quad
  874 0x0bce:   [u'\u22a4',   '.'],   # uptack
  875 0x0bcf:   [u'\u25cb',   '.'],   # circle
  876 0x0bd3:   [u'\u2308',   '.'],   # upstile
  877 0x0bd6:   [u'\u222a',   'd'],   # downshoe
  878 0x0bd8:   [u'\u2283',   'd'],   # rightshoe
  879 0x0bda:   [u'\u2282',   'd'],   # leftshoe
  880 0x0bdc:   [u'\u22a2',   '.'],   # lefttack
  881 0x0bfc:   [u'\u22a3',   '.'],   # righttack
  882 0x0cdf:   [u'\u2017',   '.'],   # hebrew_doublelowline
  883 0x0ce0:   [u'\u05d0',   '.'],   # hebrew_aleph
  884 0x0ce1:   [u'\u05d1',   '.'],   # hebrew_bet
  885 0x0ce1:   [u'\u05d1',   '.'],   # hebrew_beth  /* deprecated */
  886 0x0ce2:   [u'\u05d2',   '.'],   # hebrew_gimel
  887 0x0ce2:   [u'\u05d2',   '.'],   # hebrew_gimmel  /* deprecated */
  888 0x0ce3:   [u'\u05d3',   '.'],   # hebrew_dalet
  889 0x0ce3:   [u'\u05d3',   '.'],   # hebrew_daleth  /* deprecated */
  890 0x0ce4:   [u'\u05d4',   '.'],   # hebrew_he
  891 0x0ce5:   [u'\u05d5',   '.'],   # hebrew_waw
  892 0x0ce6:   [u'\u05d6',   '.'],   # hebrew_zain
  893 0x0ce6:   [u'\u05d6',   '.'],   # hebrew_zayin  /* deprecated */
  894 0x0ce7:   [u'\u05d7',   '.'],   # hebrew_chet
  895 0x0ce7:   [u'\u05d7',   '.'],   # hebrew_het  /* deprecated */
  896 0x0ce8:   [u'\u05d8',   '.'],   # hebrew_tet
  897 0x0ce8:   [u'\u05d8',   '.'],   # hebrew_teth  /* deprecated */
  898 0x0ce9:   [u'\u05d9',   '.'],   # hebrew_yod
  899 0x0cea:   [u'\u05da',   '.'],   # hebrew_finalkaph
  900 0x0ceb:   [u'\u05db',   '.'],   # hebrew_kaph
  901 0x0cec:   [u'\u05dc',   '.'],   # hebrew_lamed
  902 0x0ced:   [u'\u05dd',   '.'],   # hebrew_finalmem
  903 0x0cee:   [u'\u05de',   '.'],   # hebrew_mem
  904 0x0cef:   [u'\u05df',   '.'],   # hebrew_finalnun
  905 0x0cf0:   [u'\u05e0',   '.'],   # hebrew_nun
  906 0x0cf1:   [u'\u05e1',   '.'],   # hebrew_samech
  907 0x0cf1:   [u'\u05e1',   '.'],   # hebrew_samekh  /* deprecated */
  908 0x0cf2:   [u'\u05e2',   '.'],   # hebrew_ayin
  909 0x0cf3:   [u'\u05e3',   '.'],   # hebrew_finalpe
  910 0x0cf4:   [u'\u05e4',   '.'],   # hebrew_pe
  911 0x0cf5:   [u'\u05e5',   '.'],   # hebrew_finalzade
  912 0x0cf5:   [u'\u05e5',   '.'],   # hebrew_finalzadi  /* deprecated */
  913 0x0cf6:   [u'\u05e6',   '.'],   # hebrew_zade
  914 0x0cf6:   [u'\u05e6',   '.'],   # hebrew_zadi  /* deprecated */
  915 0x0cf7:   [u'\u05e7',   '.'],   # hebrew_kuf  /* deprecated */
  916 0x0cf7:   [u'\u05e7',   '.'],   # hebrew_qoph
  917 0x0cf8:   [u'\u05e8',   '.'],   # hebrew_resh
  918 0x0cf9:   [u'\u05e9',   '.'],   # hebrew_shin
  919 0x0cfa:   [u'\u05ea',   '.'],   # hebrew_taf  /* deprecated */
  920 0x0cfa:   [u'\u05ea',   '.'],   # hebrew_taw
  921 0x0da1:   [u'\u0e01',   '.'],   # Thai_kokai
  922 0x0da2:   [u'\u0e02',   '.'],   # Thai_khokhai
  923 0x0da3:   [u'\u0e03',   '.'],   # Thai_khokhuat
  924 0x0da4:   [u'\u0e04',   '.'],   # Thai_khokhwai
  925 0x0da5:   [u'\u0e05',   '.'],   # Thai_khokhon
  926 0x0da6:   [u'\u0e06',   '.'],   # Thai_khorakhang
  927 0x0da7:   [u'\u0e07',   '.'],   # Thai_ngongu
  928 0x0da8:   [u'\u0e08',   '.'],   # Thai_chochan
  929 0x0da9:   [u'\u0e09',   '.'],   # Thai_choching
  930 0x0daa:   [u'\u0e0a',   '.'],   # Thai_chochang
  931 0x0dab:   [u'\u0e0b',   '.'],   # Thai_soso
  932 0x0dac:   [u'\u0e0c',   '.'],   # Thai_chochoe
  933 0x0dad:   [u'\u0e0d',   '.'],   # Thai_yoying
  934 0x0dae:   [u'\u0e0e',   '.'],   # Thai_dochada
  935 0x0daf:   [u'\u0e0f',   '.'],   # Thai_topatak
  936 0x0db0:   [u'\u0e10',   '.'],   # Thai_thothan
  937 0x0db1:   [u'\u0e11',   '.'],   # Thai_thonangmontho
  938 0x0db2:   [u'\u0e12',   '.'],   # Thai_thophuthao
  939 0x0db3:   [u'\u0e13',   '.'],   # Thai_nonen
  940 0x0db4:   [u'\u0e14',   '.'],   # Thai_dodek
  941 0x0db5:   [u'\u0e15',   '.'],   # Thai_totao
  942 0x0db6:   [u'\u0e16',   '.'],   # Thai_thothung
  943 0x0db7:   [u'\u0e17',   '.'],   # Thai_thothahan
  944 0x0db8:   [u'\u0e18',   '.'],   # Thai_thothong
  945 0x0db9:   [u'\u0e19',   '.'],   # Thai_nonu
  946 0x0dba:   [u'\u0e1a',   '.'],   # Thai_bobaimai
  947 0x0dbb:   [u'\u0e1b',   '.'],   # Thai_popla
  948 0x0dbc:   [u'\u0e1c',   '.'],   # Thai_phophung
  949 0x0dbd:   [u'\u0e1d',   '.'],   # Thai_fofa
  950 0x0dbe:   [u'\u0e1e',   '.'],   # Thai_phophan
  951 0x0dbf:   [u'\u0e1f',   '.'],   # Thai_fofan
  952 0x0dc0:   [u'\u0e20',   '.'],   # Thai_phosamphao
  953 0x0dc1:   [u'\u0e21',   '.'],   # Thai_moma
  954 0x0dc2:   [u'\u0e22',   '.'],   # Thai_yoyak
  955 0x0dc3:   [u'\u0e23',   '.'],   # Thai_rorua
  956 0x0dc4:   [u'\u0e24',   '.'],   # Thai_ru
  957 0x0dc5:   [u'\u0e25',   '.'],   # Thai_loling
  958 0x0dc6:   [u'\u0e26',   '.'],   # Thai_lu
  959 0x0dc7:   [u'\u0e27',   '.'],   # Thai_wowaen
  960 0x0dc8:   [u'\u0e28',   '.'],   # Thai_sosala
  961 0x0dc9:   [u'\u0e29',   '.'],   # Thai_sorusi
  962 0x0dca:   [u'\u0e2a',   '.'],   # Thai_sosua
  963 0x0dcb:   [u'\u0e2b',   '.'],   # Thai_hohip
  964 0x0dcc:   [u'\u0e2c',   '.'],   # Thai_lochula
  965 0x0dcd:   [u'\u0e2d',   '.'],   # Thai_oang
  966 0x0dce:   [u'\u0e2e',   '.'],   # Thai_honokhuk
  967 0x0dcf:   [u'\u0e2f',   '.'],   # Thai_paiyannoi
  968 0x0dd0:   [u'\u0e30',   '.'],   # Thai_saraa
  969 0x0dd1:   [u'\u0e31',   '.'],   # Thai_maihanakat
  970 0x0dd2:   [u'\u0e32',   '.'],   # Thai_saraaa
  971 0x0dd3:   [u'\u0e33',   '.'],   # Thai_saraam
  972 0x0dd4:   [u'\u0e34',   '.'],   # Thai_sarai
  973 0x0dd5:   [u'\u0e35',   '.'],   # Thai_saraii
  974 0x0dd6:   [u'\u0e36',   '.'],   # Thai_saraue
  975 0x0dd7:   [u'\u0e37',   '.'],   # Thai_sarauee
  976 0x0dd8:   [u'\u0e38',   '.'],   # Thai_sarau
  977 0x0dd9:   [u'\u0e39',   '.'],   # Thai_sarauu
  978 0x0dda:   [u'\u0e3a',   '.'],   # Thai_phinthu
  979 0x0dde:   [None     ,   'o'],   # Thai_maihanakat_maitho
  980 0x0ddf:   [u'\u0e3f',   '.'],   # Thai_baht
  981 0x0de0:   [u'\u0e40',   '.'],   # Thai_sarae
  982 0x0de1:   [u'\u0e41',   '.'],   # Thai_saraae
  983 0x0de2:   [u'\u0e42',   '.'],   # Thai_sarao
  984 0x0de3:   [u'\u0e43',   '.'],   # Thai_saraaimaimuan
  985 0x0de4:   [u'\u0e44',   '.'],   # Thai_saraaimaimalai
  986 0x0de5:   [u'\u0e45',   '.'],   # Thai_lakkhangyao
  987 0x0de6:   [u'\u0e46',   '.'],   # Thai_maiyamok
  988 0x0de7:   [u'\u0e47',   '.'],   # Thai_maitaikhu
  989 0x0de8:   [u'\u0e48',   '.'],   # Thai_maiek
  990 0x0de9:   [u'\u0e49',   '.'],   # Thai_maitho
  991 0x0dea:   [u'\u0e4a',   '.'],   # Thai_maitri
  992 0x0deb:   [u'\u0e4b',   '.'],   # Thai_maichattawa
  993 0x0dec:   [u'\u0e4c',   '.'],   # Thai_thanthakhat
  994 0x0ded:   [u'\u0e4d',   '.'],   # Thai_nikhahit
  995 0x0df0:   [u'\u0e50',   '.'],   # Thai_leksun
  996 0x0df1:   [u'\u0e51',   '.'],   # Thai_leknung
  997 0x0df2:   [u'\u0e52',   '.'],   # Thai_leksong
  998 0x0df3:   [u'\u0e53',   '.'],   # Thai_leksam
  999 0x0df4:   [u'\u0e54',   '.'],   # Thai_leksi
 1000 0x0df5:   [u'\u0e55',   '.'],   # Thai_lekha
 1001 0x0df6:   [u'\u0e56',   '.'],   # Thai_lekhok
 1002 0x0df7:   [u'\u0e57',   '.'],   # Thai_lekchet
 1003 0x0df8:   [u'\u0e58',   '.'],   # Thai_lekpaet
 1004 0x0df9:   [u'\u0e59',   '.'],   # Thai_lekkao
 1005 0x0ea1:   [u'\u3131',   'f'],   # Hangul_Kiyeog
 1006 0x0ea2:   [u'\u3132',   'f'],   # Hangul_SsangKiyeog
 1007 0x0ea3:   [u'\u3133',   'f'],   # Hangul_KiyeogSios
 1008 0x0ea4:   [u'\u3134',   'f'],   # Hangul_Nieun
 1009 0x0ea5:   [u'\u3135',   'f'],   # Hangul_NieunJieuj
 1010 0x0ea6:   [u'\u3136',   'f'],   # Hangul_NieunHieuh
 1011 0x0ea7:   [u'\u3137',   'f'],   # Hangul_Dikeud
 1012 0x0ea8:   [u'\u3138',   'f'],   # Hangul_SsangDikeud
 1013 0x0ea9:   [u'\u3139',   'f'],   # Hangul_Rieul
 1014 0x0eaa:   [u'\u313a',   'f'],   # Hangul_RieulKiyeog
 1015 0x0eab:   [u'\u313b',   'f'],   # Hangul_RieulMieum
 1016 0x0eac:   [u'\u313c',   'f'],   # Hangul_RieulPieub
 1017 0x0ead:   [u'\u313d',   'f'],   # Hangul_RieulSios
 1018 0x0eae:   [u'\u313e',   'f'],   # Hangul_RieulTieut
 1019 0x0eaf:   [u'\u313f',   'f'],   # Hangul_RieulPhieuf
 1020 0x0eb0:   [u'\u3140',   'f'],   # Hangul_RieulHieuh
 1021 0x0eb1:   [u'\u3141',   'f'],   # Hangul_Mieum
 1022 0x0eb2:   [u'\u3142',   'f'],   # Hangul_Pieub
 1023 0x0eb3:   [u'\u3143',   'f'],   # Hangul_SsangPieub
 1024 0x0eb4:   [u'\u3144',   'f'],   # Hangul_PieubSios
 1025 0x0eb5:   [u'\u3145',   'f'],   # Hangul_Sios
 1026 0x0eb6:   [u'\u3146',   'f'],   # Hangul_SsangSios
 1027 0x0eb7:   [u'\u3147',   'f'],   # Hangul_Ieung
 1028 0x0eb8:   [u'\u3148',   'f'],   # Hangul_Jieuj
 1029 0x0eb9:   [u'\u3149',   'f'],   # Hangul_SsangJieuj
 1030 0x0eba:   [u'\u314a',   'f'],   # Hangul_Cieuc
 1031 0x0ebb:   [u'\u314b',   'f'],   # Hangul_Khieuq
 1032 0x0ebc:   [u'\u314c',   'f'],   # Hangul_Tieut
 1033 0x0ebd:   [u'\u314d',   'f'],   # Hangul_Phieuf
 1034 0x0ebe:   [u'\u314e',   'f'],   # Hangul_Hieuh
 1035 0x0ebf:   [u'\u314f',   'f'],   # Hangul_A
 1036 0x0ec0:   [u'\u3150',   'f'],   # Hangul_AE
 1037 0x0ec1:   [u'\u3151',   'f'],   # Hangul_YA
 1038 0x0ec2:   [u'\u3152',   'f'],   # Hangul_YAE
 1039 0x0ec3:   [u'\u3153',   'f'],   # Hangul_EO
 1040 0x0ec4:   [u'\u3154',   'f'],   # Hangul_E
 1041 0x0ec5:   [u'\u3155',   'f'],   # Hangul_YEO
 1042 0x0ec6:   [u'\u3156',   'f'],   # Hangul_YE
 1043 0x0ec7:   [u'\u3157',   'f'],   # Hangul_O
 1044 0x0ec8:   [u'\u3158',   'f'],   # Hangul_WA
 1045 0x0ec9:   [u'\u3159',   'f'],   # Hangul_WAE
 1046 0x0eca:   [u'\u315a',   'f'],   # Hangul_OE
 1047 0x0ecb:   [u'\u315b',   'f'],   # Hangul_YO
 1048 0x0ecc:   [u'\u315c',   'f'],   # Hangul_U
 1049 0x0ecd:   [u'\u315d',   'f'],   # Hangul_WEO
 1050 0x0ece:   [u'\u315e',   'f'],   # Hangul_WE
 1051 0x0ecf:   [u'\u315f',   'f'],   # Hangul_WI
 1052 0x0ed0:   [u'\u3160',   'f'],   # Hangul_YU
 1053 0x0ed1:   [u'\u3161',   'f'],   # Hangul_EU
 1054 0x0ed2:   [u'\u3162',   'f'],   # Hangul_YI
 1055 0x0ed3:   [u'\u3163',   'f'],   # Hangul_I
 1056 0x0ed4:   [u'\u11a8',   'f'],   # Hangul_J_Kiyeog
 1057 0x0ed5:   [u'\u11a9',   'f'],   # Hangul_J_SsangKiyeog
 1058 0x0ed6:   [u'\u11aa',   'f'],   # Hangul_J_KiyeogSios
 1059 0x0ed7:   [u'\u11ab',   'f'],   # Hangul_J_Nieun
 1060 0x0ed8:   [u'\u11ac',   'f'],   # Hangul_J_NieunJieuj
 1061 0x0ed9:   [u'\u11ad',   'f'],   # Hangul_J_NieunHieuh
 1062 0x0eda:   [u'\u11ae',   'f'],   # Hangul_J_Dikeud
 1063 0x0edb:   [u'\u11af',   'f'],   # Hangul_J_Rieul
 1064 0x0edc:   [u'\u11b0',   'f'],   # Hangul_J_RieulKiyeog
 1065 0x0edd:   [u'\u11b1',   'f'],   # Hangul_J_RieulMieum
 1066 0x0ede:   [u'\u11b2',   'f'],   # Hangul_J_RieulPieub
 1067 0x0edf:   [u'\u11b3',   'f'],   # Hangul_J_RieulSios
 1068 0x0ee0:   [u'\u11b4',   'f'],   # Hangul_J_RieulTieut
 1069 0x0ee1:   [u'\u11b5',   'f'],   # Hangul_J_RieulPhieuf
 1070 0x0ee2:   [u'\u11b6',   'f'],   # Hangul_J_RieulHieuh
 1071 0x0ee3:   [u'\u11b7',   'f'],   # Hangul_J_Mieum
 1072 0x0ee4:   [u'\u11b8',   'f'],   # Hangul_J_Pieub
 1073 0x0ee5:   [u'\u11b9',   'f'],   # Hangul_J_PieubSios
 1074 0x0ee6:   [u'\u11ba',   'f'],   # Hangul_J_Sios
 1075 0x0ee7:   [u'\u11bb',   'f'],   # Hangul_J_SsangSios
 1076 0x0ee8:   [u'\u11bc',   'f'],   # Hangul_J_Ieung
 1077 0x0ee9:   [u'\u11bd',   'f'],   # Hangul_J_Jieuj
 1078 0x0eea:   [u'\u11be',   'f'],   # Hangul_J_Cieuc
 1079 0x0eeb:   [u'\u11bf',   'f'],   # Hangul_J_Khieuq
 1080 0x0eec:   [u'\u11c0',   'f'],   # Hangul_J_Tieut
 1081 0x0eed:   [u'\u11c1',   'f'],   # Hangul_J_Phieuf
 1082 0x0eee:   [u'\u11c2',   'f'],   # Hangul_J_Hieuh
 1083 0x0eef:   [u'\u316d',   'f'],   # Hangul_RieulYeorinHieuh
 1084 0x0ef0:   [u'\u3171',   'f'],   # Hangul_SunkyeongeumMieum
 1085 0x0ef1:   [u'\u3178',   'f'],   # Hangul_SunkyeongeumPieub
 1086 0x0ef2:   [u'\u317f',   'f'],   # Hangul_PanSios
 1087 0x0ef3:   [u'\u3181',   'f'],   # Hangul_KkogjiDalrinIeung
 1088 0x0ef4:   [u'\u3184',   'f'],   # Hangul_SunkyeongeumPhieuf
 1089 0x0ef5:   [u'\u3186',   'f'],   # Hangul_YeorinHieuh
 1090 0x0ef6:   [u'\u318d',   'f'],   # Hangul_AraeA
 1091 0x0ef7:   [u'\u318e',   'f'],   # Hangul_AraeAE
 1092 0x0ef8:   [u'\u11eb',   'f'],   # Hangul_J_PanSios
 1093 0x0ef9:   [u'\u11f0',   'f'],   # Hangul_J_KkogjiDalrinIeung
 1094 0x0efa:   [u'\u11f9',   'f'],   # Hangul_J_YeorinHieuh
 1095 0x0eff:   [u'\u20a9',   'o'],   # Korean_Won
 1096 0x13bc:   [u'\u0152',   '.'],   # OE
 1097 0x13bd:   [u'\u0153',   '.'],   # oe
 1098 0x13be:   [u'\u0178',   '.'],   # Ydiaeresis
 1099 0x20a0:   [u'\u20a0',   'u'],   # EcuSign
 1100 0x20a1:   [u'\u20a1',   'u'],   # ColonSign
 1101 0x20a2:   [u'\u20a2',   'u'],   # CruzeiroSign
 1102 0x20a3:   [u'\u20a3',   'u'],   # FFrancSign
 1103 0x20a4:   [u'\u20a4',   'u'],   # LiraSign
 1104 0x20a5:   [u'\u20a5',   'u'],   # MillSign
 1105 0x20a6:   [u'\u20a6',   'u'],   # NairaSign
 1106 0x20a7:   [u'\u20a7',   'u'],   # PesetaSign
 1107 0x20a8:   [u'\u20a8',   'u'],   # RupeeSign
 1108 0x20a9:   [u'\u20a9',   'u'],   # WonSign
 1109 0x20aa:   [u'\u20aa',   'u'],   # NewSheqelSign
 1110 0x20ab:   [u'\u20ab',   'u'],   # DongSign
 1111 0x20ac:   [u'\u20ac',   '.'],   # EuroSign
 1112 0xfd01:   [None     ,   'f'],   # 3270_Duplicate
 1113 0xfd02:   [None     ,   'f'],   # 3270_FieldMark
 1114 0xfd03:   [None     ,   'f'],   # 3270_Right2
 1115 0xfd04:   [None     ,   'f'],   # 3270_Left2
 1116 0xfd05:   [None     ,   'f'],   # 3270_BackTab
 1117 0xfd06:   [None     ,   'f'],   # 3270_EraseEOF
 1118 0xfd07:   [None     ,   'f'],   # 3270_EraseInput
 1119 0xfd08:   [None     ,   'f'],   # 3270_Reset
 1120 0xfd09:   [None     ,   'f'],   # 3270_Quit
 1121 0xfd0a:   [None     ,   'f'],   # 3270_PA1
 1122 0xfd0b:   [None     ,   'f'],   # 3270_PA2
 1123 0xfd0c:   [None     ,   'f'],   # 3270_PA3
 1124 0xfd0d:   [None     ,   'f'],   # 3270_Test
 1125 0xfd0e:   [None     ,   'f'],   # 3270_Attn
 1126 0xfd0f:   [None     ,   'f'],   # 3270_CursorBlink
 1127 0xfd10:   [None     ,   'f'],   # 3270_AltCursor
 1128 0xfd11:   [None     ,   'f'],   # 3270_KeyClick
 1129 0xfd12:   [None     ,   'f'],   # 3270_Jump
 1130 0xfd13:   [None     ,   'f'],   # 3270_Ident
 1131 0xfd14:   [None     ,   'f'],   # 3270_Rule
 1132 0xfd15:   [None     ,   'f'],   # 3270_Copy
 1133 0xfd16:   [None     ,   'f'],   # 3270_Play
 1134 0xfd17:   [None     ,   'f'],   # 3270_Setup
 1135 0xfd18:   [None     ,   'f'],   # 3270_Record
 1136 0xfd19:   [None     ,   'f'],   # 3270_ChangeScreen
 1137 0xfd1a:   [None     ,   'f'],   # 3270_DeleteWord
 1138 0xfd1b:   [None     ,   'f'],   # 3270_ExSelect
 1139 0xfd1c:   [None     ,   'f'],   # 3270_CursorSelect
 1140 0xfd1d:   [None     ,   'f'],   # 3270_PrintScreen
 1141 0xfd1e:   [None     ,   'f'],   # 3270_Enter
 1142 0xfe01:   [None     ,   'f'],   # ISO_Lock
 1143 0xfe02:   [None     ,   'f'],   # ISO_Level2_Latch
 1144 0xfe03:   [None     ,   'f'],   # ISO_Level3_Shift
 1145 0xfe04:   [None     ,   'f'],   # ISO_Level3_Latch
 1146 0xfe05:   [None     ,   'f'],   # ISO_Level3_Lock
 1147 0xfe06:   [None     ,   'f'],   # ISO_Group_Latch
 1148 0xfe07:   [None     ,   'f'],   # ISO_Group_Lock
 1149 0xfe08:   [None     ,   'f'],   # ISO_Next_Group
 1150 0xfe09:   [None     ,   'f'],   # ISO_Next_Group_Lock
 1151 0xfe0a:   [None     ,   'f'],   # ISO_Prev_Group
 1152 0xfe0b:   [None     ,   'f'],   # ISO_Prev_Group_Lock
 1153 0xfe0c:   [None     ,   'f'],   # ISO_First_Group
 1154 0xfe0d:   [None     ,   'f'],   # ISO_First_Group_Lock
 1155 0xfe0e:   [None     ,   'f'],   # ISO_Last_Group
 1156 0xfe0f:   [None     ,   'f'],   # ISO_Last_Group_Lock
 1157 0xfe20:   [None     ,   'f'],   # ISO_Left_Tab
 1158 0xfe21:   [None     ,   'f'],   # ISO_Move_Line_Up
 1159 0xfe22:   [None     ,   'f'],   # ISO_Move_Line_Down
 1160 0xfe23:   [None     ,   'f'],   # ISO_Partial_Line_Up
 1161 0xfe24:   [None     ,   'f'],   # ISO_Partial_Line_Down
 1162 0xfe25:   [None     ,   'f'],   # ISO_Partial_Space_Left
 1163 0xfe26:   [None     ,   'f'],   # ISO_Partial_Space_Right
 1164 0xfe27:   [None     ,   'f'],   # ISO_Set_Margin_Left
 1165 0xfe28:   [None     ,   'f'],   # ISO_Set_Margin_Right
 1166 0xfe29:   [None     ,   'f'],   # ISO_Release_Margin_Left
 1167 0xfe2a:   [None     ,   'f'],   # ISO_Release_Margin_Right
 1168 0xfe2b:   [None     ,   'f'],   # ISO_Release_Both_Margins
 1169 0xfe2c:   [None     ,   'f'],   # ISO_Fast_Cursor_Left
 1170 0xfe2d:   [None     ,   'f'],   # ISO_Fast_Cursor_Right
 1171 0xfe2e:   [None     ,   'f'],   # ISO_Fast_Cursor_Up
 1172 0xfe2f:   [None     ,   'f'],   # ISO_Fast_Cursor_Down
 1173 0xfe30:   [None     ,   'f'],   # ISO_Continuous_Underline
 1174 0xfe31:   [None     ,   'f'],   # ISO_Discontinuous_Underline
 1175 0xfe32:   [None     ,   'f'],   # ISO_Emphasize
 1176 0xfe33:   [None     ,   'f'],   # ISO_Center_Object
 1177 0xfe34:   [None     ,   'f'],   # ISO_Enter
 1178 0xfe50:   [u'\u0300',   'f'],   # dead_grave
 1179 0xfe51:   [u'\u0301',   'f'],   # dead_acute
 1180 0xfe52:   [u'\u0302',   'f'],   # dead_circumflex
 1181 0xfe53:   [u'\u0303',   'f'],   # dead_tilde
 1182 0xfe54:   [u'\u0304',   'f'],   # dead_macron
 1183 0xfe55:   [u'\u0306',   'f'],   # dead_breve
 1184 0xfe56:   [u'\u0307',   'f'],   # dead_abovedot
 1185 0xfe57:   [u'\u0308',   'f'],   # dead_diaeresis
 1186 0xfe58:   [u'\u030a',   'f'],   # dead_abovering
 1187 0xfe59:   [u'\u030b',   'f'],   # dead_doubleacute
 1188 0xfe5a:   [u'\u030c',   'f'],   # dead_caron
 1189 0xfe5b:   [u'\u0327',   'f'],   # dead_cedilla
 1190 0xfe5c:   [u'\u0328',   'f'],   # dead_ogonek
 1191 0xfe5d:   [u'\u0345',   'f'],   # dead_iota
 1192 0xfe5e:   [u'\u3099',   'f'],   # dead_voiced_sound
 1193 0xfe5f:   [u'\u309a',   'f'],   # dead_semivoiced_sound
 1194 0xfe70:   [None     ,   'f'],   # AccessX_Enable
 1195 0xfe71:   [None     ,   'f'],   # AccessX_Feedback_Enable
 1196 0xfe72:   [None     ,   'f'],   # RepeatKeys_Enable
 1197 0xfe73:   [None     ,   'f'],   # SlowKeys_Enable
 1198 0xfe74:   [None     ,   'f'],   # BounceKeys_Enable
 1199 0xfe75:   [None     ,   'f'],   # StickyKeys_Enable
 1200 0xfe76:   [None     ,   'f'],   # MouseKeys_Enable
 1201 0xfe77:   [None     ,   'f'],   # MouseKeys_Accel_Enable
 1202 0xfe78:   [None     ,   'f'],   # Overlay1_Enable
 1203 0xfe79:   [None     ,   'f'],   # Overlay2_Enable
 1204 0xfe7a:   [None     ,   'f'],   # AudibleBell_Enable
 1205 0xfed0:   [None     ,   'f'],   # First_Virtual_Screen
 1206 0xfed1:   [None     ,   'f'],   # Prev_Virtual_Screen
 1207 0xfed2:   [None     ,   'f'],   # Next_Virtual_Screen
 1208 0xfed4:   [None     ,   'f'],   # Last_Virtual_Screen
 1209 0xfed5:   [None     ,   'f'],   # Terminate_Server
 1210 0xfee0:   [None     ,   'f'],   # Pointer_Left
 1211 0xfee1:   [None     ,   'f'],   # Pointer_Right
 1212 0xfee2:   [None     ,   'f'],   # Pointer_Up
 1213 0xfee3:   [None     ,   'f'],   # Pointer_Down
 1214 0xfee4:   [None     ,   'f'],   # Pointer_UpLeft
 1215 0xfee5:   [None     ,   'f'],   # Pointer_UpRight
 1216 0xfee6:   [None     ,   'f'],   # Pointer_DownLeft
 1217 0xfee7:   [None     ,   'f'],   # Pointer_DownRight
 1218 0xfee8:   [None     ,   'f'],   # Pointer_Button_Dflt
 1219 0xfee9:   [None     ,   'f'],   # Pointer_Button1
 1220 0xfeea:   [None     ,   'f'],   # Pointer_Button2
 1221 0xfeeb:   [None     ,   'f'],   # Pointer_Button3
 1222 0xfeec:   [None     ,   'f'],   # Pointer_Button4
 1223 0xfeed:   [None     ,   'f'],   # Pointer_Button5
 1224 0xfeee:   [None     ,   'f'],   # Pointer_DblClick_Dflt
 1225 0xfeef:   [None     ,   'f'],   # Pointer_DblClick1
 1226 0xfef0:   [None     ,   'f'],   # Pointer_DblClick2
 1227 0xfef1:   [None     ,   'f'],   # Pointer_DblClick3
 1228 0xfef2:   [None     ,   'f'],   # Pointer_DblClick4
 1229 0xfef3:   [None     ,   'f'],   # Pointer_DblClick5
 1230 0xfef4:   [None     ,   'f'],   # Pointer_Drag_Dflt
 1231 0xfef5:   [None     ,   'f'],   # Pointer_Drag1
 1232 0xfef6:   [None     ,   'f'],   # Pointer_Drag2
 1233 0xfef7:   [None     ,   'f'],   # Pointer_Drag3
 1234 0xfef8:   [None     ,   'f'],   # Pointer_Drag4
 1235 0xfef9:   [None     ,   'f'],   # Pointer_EnableKeys
 1236 0xfefa:   [None     ,   'f'],   # Pointer_Accelerate
 1237 0xfefb:   [None     ,   'f'],   # Pointer_DfltBtnNext
 1238 0xfefc:   [None     ,   'f'],   # Pointer_DfltBtnPrev
 1239 0xfefd:   [None     ,   'f'],   # Pointer_Drag5
 1240 0xff08:   [u'\u0008',   'f'],   # BackSpace /* back space, back char */
 1241 0xff09:   [u'\u0009',   'f'],   # Tab
 1242 0xff0a:   [u'\u000a',   'f'],   # Linefeed  /* Linefeed, LF */
 1243 0xff0b:   [u'\u000b',   'f'],   # Clear
 1244 0xff0d:   [u'\u000d',   'f'],   # Return    /* Return, enter */
 1245 0xff13:   [u'\u0013',   'f'],   # Pause /* Pause, hold */
 1246 0xff14:   [u'\u0014',   'f'],   # Scroll_Lock
 1247 0xff15:   [u'\u0015',   'f'],   # Sys_Req
 1248 0xff1b:   [u'\u001b',   'f'],   # Escape
 1249 0xff20:   [None     ,   'f'],   # Multi_key
 1250 0xff21:   [None     ,   'f'],   # Kanji
 1251 0xff22:   [None     ,   'f'],   # Muhenkan
 1252 0xff23:   [None     ,   'f'],   # Henkan_Mode
 1253 0xff24:   [None     ,   'f'],   # Romaji
 1254 0xff25:   [None     ,   'f'],   # Hiragana
 1255 0xff26:   [None     ,   'f'],   # Katakana
 1256 0xff27:   [None     ,   'f'],   # Hiragana_Katakana
 1257 0xff28:   [None     ,   'f'],   # Zenkaku
 1258 0xff29:   [None     ,   'f'],   # Hankaku
 1259 0xff2a:   [None     ,   'f'],   # Zenkaku_Hankaku
 1260 0xff2b:   [None     ,   'f'],   # Touroku
 1261 0xff2c:   [None     ,   'f'],   # Massyo
 1262 0xff2d:   [None     ,   'f'],   # Kana_Lock
 1263 0xff2e:   [None     ,   'f'],   # Kana_Shift
 1264 0xff2f:   [None     ,   'f'],   # Eisu_Shift
 1265 0xff30:   [None     ,   'f'],   # Eisu_toggle
 1266 0xff31:   [None     ,   'f'],   # Hangul
 1267 0xff32:   [None     ,   'f'],   # Hangul_Start
 1268 0xff33:   [None     ,   'f'],   # Hangul_End
 1269 0xff34:   [None     ,   'f'],   # Hangul_Hanja
 1270 0xff35:   [None     ,   'f'],   # Hangul_Jamo
 1271 0xff36:   [None     ,   'f'],   # Hangul_Romaja
 1272 0xff37:   [None     ,   'f'],   # Codeinput
 1273 0xff38:   [None     ,   'f'],   # Hangul_Jeonja
 1274 0xff39:   [None     ,   'f'],   # Hangul_Banja
 1275 0xff3a:   [None     ,   'f'],   # Hangul_PreHanja
 1276 0xff3b:   [None     ,   'f'],   # Hangul_PostHanja
 1277 0xff3c:   [None     ,   'f'],   # SingleCandidate
 1278 0xff3d:   [None     ,   'f'],   # MultipleCandidate
 1279 0xff3e:   [None     ,   'f'],   # PreviousCandidate
 1280 0xff3f:   [None     ,   'f'],   # Hangul_Special
 1281 0xff50:   [None     ,   'f'],   # Home
 1282 0xff51:   [None     ,   'f'],   # Left
 1283 0xff52:   [None     ,   'f'],   # Up
 1284 0xff53:   [None     ,   'f'],   # Right
 1285 0xff54:   [None     ,   'f'],   # Down
 1286 0xff55:   [None     ,   'f'],   # Prior
 1287 0xff56:   [None     ,   'f'],   # Next
 1288 0xff57:   [None     ,   'f'],   # End
 1289 0xff58:   [None     ,   'f'],   # Begin
 1290 0xff60:   [None     ,   'f'],   # Select
 1291 0xff61:   [None     ,   'f'],   # Print
 1292 0xff62:   [None     ,   'f'],   # Execute
 1293 0xff63:   [None     ,   'f'],   # Insert
 1294 0xff65:   [None     ,   'f'],   # Undo
 1295 0xff66:   [None     ,   'f'],   # Redo
 1296 0xff67:   [None     ,   'f'],   # Menu
 1297 0xff68:   [None     ,   'f'],   # Find
 1298 0xff69:   [None     ,   'f'],   # Cancel
 1299 0xff6a:   [None     ,   'f'],   # Help
 1300 0xff6b:   [None     ,   'f'],   # Break
 1301 0xff7e:   [None     ,   'f'],   # Mode_switch
 1302 0xff7f:   [None     ,   'f'],   # Num_Lock
 1303 0xff80:   [u'\u0020',   'f'],   # KP_Space  /* space */
 1304 0xff89:   [u'\u0009',   'f'],   # KP_Tab
 1305 0xff8d:   [u'\u000d',   'f'],   # KP_Enter  /* enter */
 1306 0xff91:   [None     ,   'f'],   # KP_F1
 1307 0xff92:   [None     ,   'f'],   # KP_F2
 1308 0xff93:   [None     ,   'f'],   # KP_F3
 1309 0xff94:   [None     ,   'f'],   # KP_F4
 1310 0xff95:   [None     ,   'f'],   # KP_Home
 1311 0xff96:   [None     ,   'f'],   # KP_Left
 1312 0xff97:   [None     ,   'f'],   # KP_Up
 1313 0xff98:   [None     ,   'f'],   # KP_Right
 1314 0xff99:   [None     ,   'f'],   # KP_Down
 1315 0xff9a:   [None     ,   'f'],   # KP_Prior
 1316 0xff9b:   [None     ,   'f'],   # KP_Next
 1317 0xff9c:   [None     ,   'f'],   # KP_End
 1318 0xff9d:   [None     ,   'f'],   # KP_Begin
 1319 0xff9e:   [None     ,   'f'],   # KP_Insert
 1320 0xff9f:   [None     ,   'f'],   # KP_Delete
 1321 0xffaa:   [u'\u002a',   'f'],   # KP_Multiply
 1322 0xffab:   [u'\u002b',   'f'],   # KP_Add
 1323 0xffac:   [u'\u002c',   'f'],   # KP_Separator  /* separator, often comma */
 1324 0xffad:   [u'\u002d',   'f'],   # KP_Subtract
 1325 0xffae:   [u'\u002e',   'f'],   # KP_Decimal
 1326 0xffaf:   [u'\u002f',   'f'],   # KP_Divide
 1327 0xffb0:   [u'\u0030',   'f'],   # KP_0
 1328 0xffb1:   [u'\u0031',   'f'],   # KP_1
 1329 0xffb2:   [u'\u0032',   'f'],   # KP_2
 1330 0xffb3:   [u'\u0033',   'f'],   # KP_3
 1331 0xffb4:   [u'\u0034',   'f'],   # KP_4
 1332 0xffb5:   [u'\u0035',   'f'],   # KP_5
 1333 0xffb6:   [u'\u0036',   'f'],   # KP_6
 1334 0xffb7:   [u'\u0037',   'f'],   # KP_7
 1335 0xffb8:   [u'\u0038',   'f'],   # KP_8
 1336 0xffb9:   [u'\u0039',   'f'],   # KP_9
 1337 0xffbd:   [u'\u003d',   'f'],   # KP_Equal  /* equals */
 1338 0xffbe:   [None     ,   'f'],   # F1
 1339 0xffbf:   [None     ,   'f'],   # F2
 1340 0xffc0:   [None     ,   'f'],   # F3
 1341 0xffc1:   [None     ,   'f'],   # F4
 1342 0xffc2:   [None     ,   'f'],   # F5
 1343 0xffc3:   [None     ,   'f'],   # F6
 1344 0xffc4:   [None     ,   'f'],   # F7
 1345 0xffc5:   [None     ,   'f'],   # F8
 1346 0xffc6:   [None     ,   'f'],   # F9
 1347 0xffc7:   [None     ,   'f'],   # F10
 1348 0xffc8:   [None     ,   'f'],   # F11
 1349 0xffc9:   [None     ,   'f'],   # F12
 1350 0xffca:   [None     ,   'f'],   # F13
 1351 0xffcb:   [None     ,   'f'],   # F14
 1352 0xffcc:   [None     ,   'f'],   # F15
 1353 0xffcd:   [None     ,   'f'],   # F16
 1354 0xffce:   [None     ,   'f'],   # F17
 1355 0xffcf:   [None     ,   'f'],   # F18
 1356 0xffd0:   [None     ,   'f'],   # F19
 1357 0xffd1:   [None     ,   'f'],   # F20
 1358 0xffd2:   [None     ,   'f'],   # F21
 1359 0xffd3:   [None     ,   'f'],   # F22
 1360 0xffd4:   [None     ,   'f'],   # F23
 1361 0xffd5:   [None     ,   'f'],   # F24
 1362 0xffd6:   [None     ,   'f'],   # F25
 1363 0xffd7:   [None     ,   'f'],   # F26
 1364 0xffd8:   [None     ,   'f'],   # F27
 1365 0xffd9:   [None     ,   'f'],   # F28
 1366 0xffda:   [None     ,   'f'],   # F29
 1367 0xffdb:   [None     ,   'f'],   # F30
 1368 0xffdc:   [None     ,   'f'],   # F31
 1369 0xffdd:   [None     ,   'f'],   # F32
 1370 0xffde:   [None     ,   'f'],   # F33
 1371 0xffdf:   [None     ,   'f'],   # F34
 1372 0xffe0:   [None     ,   'f'],   # F35
 1373 0xffe1:   [None     ,   'f'],   # Shift_L
 1374 0xffe2:   [None     ,   'f'],   # Shift_R
 1375 0xffe3:   [None     ,   'f'],   # Control_L
 1376 0xffe4:   [None     ,   'f'],   # Control_R
 1377 0xffe5:   [None     ,   'f'],   # Caps_Lock
 1378 0xffe6:   [None     ,   'f'],   # Shift_Lock
 1379 0xffe7:   [None     ,   'f'],   # Meta_L
 1380 0xffe8:   [None     ,   'f'],   # Meta_R
 1381 0xffe9:   [None     ,   'f'],   # Alt_L
 1382 0xffea:   [None     ,   'f'],   # Alt_R
 1383 0xffeb:   [None     ,   'f'],   # Super_L
 1384 0xffec:   [None     ,   'f'],   # Super_R
 1385 0xffed:   [None     ,   'f'],   # Hyper_L
 1386 0xffee:   [None     ,   'f'],   # Hyper_R
 1387 0xffff:   [None     ,   'f'],   # Delete
 1388 0xffffff: [None     ,   'f'],   # VoidSymbol
 1389 
 1390 # Various XFree86 extensions since X11R6.4
 1391 # http://cvsweb.xfree86.org/cvsweb/xc/include/keysymdef.h
 1392 
 1393 # KOI8-U support (Aleksey Novodvorsky, 1999-05-30)
 1394 # http://cvsweb.xfree86.org/cvsweb/xc/include/keysymdef.h.diff?r1=1.4&r2=1.5
 1395 # Used in XFree86's /usr/lib/X11/xkb/symbols/ua mappings
 1396 
 1397 0x06ad:   [u'\u0491',   '.'],   # Ukrainian_ghe_with_upturn
 1398 0x06bd:   [u'\u0490',   '.'],   # Ukrainian_GHE_WITH_UPTURN
 1399 
 1400 # Support for armscii-8, ibm-cp1133, mulelao-1, viscii1.1-1,
 1401 # tcvn-5712, georgian-academy, georgian-ps
 1402 # (#2843, Pablo Saratxaga <pablo@mandrakesoft.com>, 1999-06-06)
 1403 # http://cvsweb.xfree86.org/cvsweb/xc/include/keysymdef.h.diff?r1=1.6&r2=1.7
 1404 
 1405 # Armenian
 1406 # (not used in any XFree86 4.4 kbd layouts, where /usr/lib/X11/xkb/symbols/am
 1407 # uses directly Unicode-mapped hexadecimal values instead)
 1408 0x14a1:   [None     ,   'r'],   # Armenian_eternity
 1409 0x14a2:   [u'\u0587',   'u'],   # Armenian_ligature_ew
 1410 0x14a3:   [u'\u0589',   'u'],   # Armenian_verjaket
 1411 0x14a4:   [u'\u0029',   'r'],   # Armenian_parenright
 1412 0x14a5:   [u'\u0028',   'r'],   # Armenian_parenleft
 1413 0x14a6:   [u'\u00bb',   'r'],   # Armenian_guillemotright
 1414 0x14a7:   [u'\u00ab',   'r'],   # Armenian_guillemotleft
 1415 0x14a8:   [u'\u2014',   'r'],   # Armenian_em_dash
 1416 0x14a9:   [u'\u002e',   'r'],   # Armenian_mijaket
 1417 0x14aa:   [u'\u055d',   'u'],   # Armenian_but
 1418 0x14ab:   [u'\u002c',   'r'],   # Armenian_comma
 1419 0x14ac:   [u'\u2013',   'r'],   # Armenian_en_dash
 1420 0x14ad:   [u'\u058a',   'u'],   # Armenian_yentamna
 1421 0x14ae:   [u'\u2026',   'r'],   # Armenian_ellipsis
 1422 0x14af:   [u'\u055c',   'u'],   # Armenian_amanak
 1423 0x14b0:   [u'\u055b',   'u'],   # Armenian_shesht
 1424 0x14b1:   [u'\u055e',   'u'],   # Armenian_paruyk
 1425 0x14b2:   [u'\u0531',   'u'],   # Armenian_AYB
 1426 0x14b3:   [u'\u0561',   'u'],   # Armenian_ayb
 1427 0x14b4:   [u'\u0532',   'u'],   # Armenian_BEN
 1428 0x14b5:   [u'\u0562',   'u'],   # Armenian_ben
 1429 0x14b6:   [u'\u0533',   'u'],   # Armenian_GIM
 1430 0x14b7:   [u'\u0563',   'u'],   # Armenian_gim
 1431 0x14b8:   [u'\u0534',   'u'],   # Armenian_DA
 1432 0x14b9:   [u'\u0564',   'u'],   # Armenian_da
 1433 0x14ba:   [u'\u0535',   'u'],   # Armenian_YECH
 1434 0x14bb:   [u'\u0565',   'u'],   # Armenian_yech
 1435 0x14bc:   [u'\u0536',   'u'],   # Armenian_ZA
 1436 0x14bd:   [u'\u0566',   'u'],   # Armenian_za
 1437 0x14be:   [u'\u0537',   'u'],   # Armenian_E
 1438 0x14bf:   [u'\u0567',   'u'],   # Armenian_e
 1439 0x14c0:   [u'\u0538',   'u'],   # Armenian_AT
 1440 0x14c1:   [u'\u0568',   'u'],   # Armenian_at
 1441 0x14c2:   [u'\u0539',   'u'],   # Armenian_TO
 1442 0x14c3:   [u'\u0569',   'u'],   # Armenian_to
 1443 0x14c4:   [u'\u053a',   'u'],   # Armenian_ZHE
 1444 0x14c5:   [u'\u056a',   'u'],   # Armenian_zhe
 1445 0x14c6:   [u'\u053b',   'u'],   # Armenian_INI
 1446 0x14c7:   [u'\u056b',   'u'],   # Armenian_ini
 1447 0x14c8:   [u'\u053c',   'u'],   # Armenian_LYUN
 1448 0x14c9:   [u'\u056c',   'u'],   # Armenian_lyun
 1449 0x14ca:   [u'\u053d',   'u'],   # Armenian_KHE
 1450 0x14cb:   [u'\u056d',   'u'],   # Armenian_khe
 1451 0x14cc:   [u'\u053e',   'u'],   # Armenian_TSA
 1452 0x14cd:   [u'\u056e',   'u'],   # Armenian_tsa
 1453 0x14ce:   [u'\u053f',   'u'],   # Armenian_KEN
 1454 0x14cf:   [u'\u056f',   'u'],   # Armenian_ken
 1455 0x14d0:   [u'\u0540',   'u'],   # Armenian_HO
 1456 0x14d1:   [u'\u0570',   'u'],   # Armenian_ho
 1457 0x14d2:   [u'\u0541',   'u'],   # Armenian_DZA
 1458 0x14d3:   [u'\u0571',   'u'],   # Armenian_dza
 1459 0x14d4:   [u'\u0542',   'u'],   # Armenian_GHAT
 1460 0x14d5:   [u'\u0572',   'u'],   # Armenian_ghat
 1461 0x14d6:   [u'\u0543',   'u'],   # Armenian_TCHE
 1462 0x14d7:   [u'\u0573',   'u'],   # Armenian_tche
 1463 0x14d8:   [u'\u0544',   'u'],   # Armenian_MEN
 1464 0x14d9:   [u'\u0574',   'u'],   # Armenian_men
 1465 0x14da:   [u'\u0545',   'u'],   # Armenian_HI
 1466 0x14db:   [u'\u0575',   'u'],   # Armenian_hi
 1467 0x14dc:   [u'\u0546',   'u'],   # Armenian_NU
 1468 0x14dd:   [u'\u0576',   'u'],   # Armenian_nu
 1469 0x14de:   [u'\u0547',   'u'],   # Armenian_SHA
 1470 0x14df:   [u'\u0577',   'u'],   # Armenian_sha
 1471 0x14e0:   [u'\u0548',   'u'],   # Armenian_VO
 1472 0x14e1:   [u'\u0578',   'u'],   # Armenian_vo
 1473 0x14e2:   [u'\u0549',   'u'],   # Armenian_CHA
 1474 0x14e3:   [u'\u0579',   'u'],   # Armenian_cha
 1475 0x14e4:   [u'\u054a',   'u'],   # Armenian_PE
 1476 0x14e5:   [u'\u057a',   'u'],   # Armenian_pe
 1477 0x14e6:   [u'\u054b',   'u'],   # Armenian_JE
 1478 0x14e7:   [u'\u057b',   'u'],   # Armenian_je
 1479 0x14e8:   [u'\u054c',   'u'],   # Armenian_RA
 1480 0x14e9:   [u'\u057c',   'u'],   # Armenian_ra
 1481 0x14ea:   [u'\u054d',   'u'],   # Armenian_SE
 1482 0x14eb:   [u'\u057d',   'u'],   # Armenian_se
 1483 0x14ec:   [u'\u054e',   'u'],   # Armenian_VEV
 1484 0x14ed:   [u'\u057e',   'u'],   # Armenian_vev
 1485 0x14ee:   [u'\u054f',   'u'],   # Armenian_TYUN
 1486 0x14ef:   [u'\u057f',   'u'],   # Armenian_tyun
 1487 0x14f0:   [u'\u0550',   'u'],   # Armenian_RE
 1488 0x14f1:   [u'\u0580',   'u'],   # Armenian_re
 1489 0x14f2:   [u'\u0551',   'u'],   # Armenian_TSO
 1490 0x14f3:   [u'\u0581',   'u'],   # Armenian_tso
 1491 0x14f4:   [u'\u0552',   'u'],   # Armenian_VYUN
 1492 0x14f5:   [u'\u0582',   'u'],   # Armenian_vyun
 1493 0x14f6:   [u'\u0553',   'u'],   # Armenian_PYUR
 1494 0x14f7:   [u'\u0583',   'u'],   # Armenian_pyur
 1495 0x14f8:   [u'\u0554',   'u'],   # Armenian_KE
 1496 0x14f9:   [u'\u0584',   'u'],   # Armenian_ke
 1497 0x14fa:   [u'\u0555',   'u'],   # Armenian_O
 1498 0x14fb:   [u'\u0585',   'u'],   # Armenian_o
 1499 0x14fc:   [u'\u0556',   'u'],   # Armenian_FE
 1500 0x14fd:   [u'\u0586',   'u'],   # Armenian_fe
 1501 0x14fe:   [u'\u055a',   'u'],   # Armenian_apostrophe
 1502 0x14ff:   [u'\u00a7',   'r'],   # Armenian_section_sign
 1503 
 1504 # Gregorian
 1505 # (not used in any XFree86 4.4 kbd layouts, were /usr/lib/X11/xkb/symbols/ge_*
 1506 # uses directly Unicode-mapped hexadecimal values instead)
 1507 0x15d0:   [u'\u10d0',   'u'],   # Georgian_an
 1508 0x15d1:   [u'\u10d1',   'u'],   # Georgian_ban
 1509 0x15d2:   [u'\u10d2',   'u'],   # Georgian_gan
 1510 0x15d3:   [u'\u10d3',   'u'],   # Georgian_don
 1511 0x15d4:   [u'\u10d4',   'u'],   # Georgian_en
 1512 0x15d5:   [u'\u10d5',   'u'],   # Georgian_vin
 1513 0x15d6:   [u'\u10d6',   'u'],   # Georgian_zen
 1514 0x15d7:   [u'\u10d7',   'u'],   # Georgian_tan
 1515 0x15d8:   [u'\u10d8',   'u'],   # Georgian_in
 1516 0x15d9:   [u'\u10d9',   'u'],   # Georgian_kan
 1517 0x15da:   [u'\u10da',   'u'],   # Georgian_las
 1518 0x15db:   [u'\u10db',   'u'],   # Georgian_man
 1519 0x15dc:   [u'\u10dc',   'u'],   # Georgian_nar
 1520 0x15dd:   [u'\u10dd',   'u'],   # Georgian_on
 1521 0x15de:   [u'\u10de',   'u'],   # Georgian_par
 1522 0x15df:   [u'\u10df',   'u'],   # Georgian_zhar
 1523 0x15e0:   [u'\u10e0',   'u'],   # Georgian_rae
 1524 0x15e1:   [u'\u10e1',   'u'],   # Georgian_san
 1525 0x15e2:   [u'\u10e2',   'u'],   # Georgian_tar
 1526 0x15e3:   [u'\u10e3',   'u'],   # Georgian_un
 1527 0x15e4:   [u'\u10e4',   'u'],   # Georgian_phar
 1528 0x15e5:   [u'\u10e5',   'u'],   # Georgian_khar
 1529 0x15e6:   [u'\u10e6',   'u'],   # Georgian_ghan
 1530 0x15e7:   [u'\u10e7',   'u'],   # Georgian_qar
 1531 0x15e8:   [u'\u10e8',   'u'],   # Georgian_shin
 1532 0x15e9:   [u'\u10e9',   'u'],   # Georgian_chin
 1533 0x15ea:   [u'\u10ea',   'u'],   # Georgian_can
 1534 0x15eb:   [u'\u10eb',   'u'],   # Georgian_jil
 1535 0x15ec:   [u'\u10ec',   'u'],   # Georgian_cil
 1536 0x15ed:   [u'\u10ed',   'u'],   # Georgian_char
 1537 0x15ee:   [u'\u10ee',   'u'],   # Georgian_xan
 1538 0x15ef:   [u'\u10ef',   'u'],   # Georgian_jhan
 1539 0x15f0:   [u'\u10f0',   'u'],   # Georgian_hae
 1540 0x15f1:   [u'\u10f1',   'u'],   # Georgian_he
 1541 0x15f2:   [u'\u10f2',   'u'],   # Georgian_hie
 1542 0x15f3:   [u'\u10f3',   'u'],   # Georgian_we
 1543 0x15f4:   [u'\u10f4',   'u'],   # Georgian_har
 1544 0x15f5:   [u'\u10f5',   'u'],   # Georgian_hoe
 1545 0x15f6:   [u'\u10f6',   'u'],   # Georgian_fi
 1546 
 1547 # Pablo Saratxaga's i18n updates for XFree86 that are used in Mandrake 7.2.
 1548 # (#4195, Pablo Saratxaga <pablo@mandrakesoft.com>, 2000-10-27)
 1549 # http://cvsweb.xfree86.org/cvsweb/xc/include/keysymdef.h.diff?r1=1.9&r2=1.10
 1550 
 1551 # Latin-8
 1552 # (the *abovedot keysyms are used in /usr/lib/X11/xkb/symbols/ie)
 1553 0x12a1:   [u'\u1e02',   'u'],   # Babovedot
 1554 0x12a2:   [u'\u1e03',   'u'],   # babovedot
 1555 0x12a6:   [u'\u1e0a',   'u'],   # Dabovedot
 1556 0x12a8:   [u'\u1e80',   'u'],   # Wgrave
 1557 0x12aa:   [u'\u1e82',   'u'],   # Wacute
 1558 0x12ab:   [u'\u1e0b',   'u'],   # dabovedot
 1559 0x12ac:   [u'\u1ef2',   'u'],   # Ygrave
 1560 0x12b0:   [u'\u1e1e',   'u'],   # Fabovedot
 1561 0x12b1:   [u'\u1e1f',   'u'],   # fabovedot
 1562 0x12b4:   [u'\u1e40',   'u'],   # Mabovedot
 1563 0x12b5:   [u'\u1e41',   'u'],   # mabovedot
 1564 0x12b7:   [u'\u1e56',   'u'],   # Pabovedot
 1565 0x12b8:   [u'\u1e81',   'u'],   # wgrave
 1566 0x12b9:   [u'\u1e57',   'u'],   # pabovedot
 1567 0x12ba:   [u'\u1e83',   'u'],   # wacute
 1568 0x12bb:   [u'\u1e60',   'u'],   # Sabovedot
 1569 0x12bc:   [u'\u1ef3',   'u'],   # ygrave
 1570 0x12bd:   [u'\u1e84',   'u'],   # Wdiaeresis
 1571 0x12be:   [u'\u1e85',   'u'],   # wdiaeresis
 1572 0x12bf:   [u'\u1e61',   'u'],   # sabovedot
 1573 0x12d0:   [u'\u0174',   'u'],   # Wcircumflex
 1574 0x12d7:   [u'\u1e6a',   'u'],   # Tabovedot
 1575 0x12de:   [u'\u0176',   'u'],   # Ycircumflex
 1576 0x12f0:   [u'\u0175',   'u'],   # wcircumflex
 1577 0x12f7:   [u'\u1e6b',   'u'],   # tabovedot
 1578 0x12fe:   [u'\u0177',   'u'],   # ycircumflex
 1579 
 1580 # Arabic
 1581 # (of these, in XFree86 4.4 only Arabic_superscript_alef, Arabic_madda_above,
 1582 # Arabic_hamza_* are actually used, e.g. in /usr/lib/X11/xkb/symbols/syr)
 1583 0x0590:   [u'\u06f0',   'u'],   # Farsi_0
 1584 0x0591:   [u'\u06f1',   'u'],   # Farsi_1
 1585 0x0592:   [u'\u06f2',   'u'],   # Farsi_2
 1586 0x0593:   [u'\u06f3',   'u'],   # Farsi_3
 1587 0x0594:   [u'\u06f4',   'u'],   # Farsi_4
 1588 0x0595:   [u'\u06f5',   'u'],   # Farsi_5
 1589 0x0596:   [u'\u06f6',   'u'],   # Farsi_6
 1590 0x0597:   [u'\u06f7',   'u'],   # Farsi_7
 1591 0x0598:   [u'\u06f8',   'u'],   # Farsi_8
 1592 0x0599:   [u'\u06f9',   'u'],   # Farsi_9
 1593 0x05a5:   [u'\u066a',   'u'],   # Arabic_percent
 1594 0x05a6:   [u'\u0670',   'u'],   # Arabic_superscript_alef
 1595 0x05a7:   [u'\u0679',   'u'],   # Arabic_tteh
 1596 0x05a8:   [u'\u067e',   'u'],   # Arabic_peh
 1597 0x05a9:   [u'\u0686',   'u'],   # Arabic_tcheh
 1598 0x05aa:   [u'\u0688',   'u'],   # Arabic_ddal
 1599 0x05ab:   [u'\u0691',   'u'],   # Arabic_rreh
 1600 0x05ae:   [u'\u06d4',   'u'],   # Arabic_fullstop
 1601 0x05b0:   [u'\u0660',   'u'],   # Arabic_0
 1602 0x05b1:   [u'\u0661',   'u'],   # Arabic_1
 1603 0x05b2:   [u'\u0662',   'u'],   # Arabic_2
 1604 0x05b3:   [u'\u0663',   'u'],   # Arabic_3
 1605 0x05b4:   [u'\u0664',   'u'],   # Arabic_4
 1606 0x05b5:   [u'\u0665',   'u'],   # Arabic_5
 1607 0x05b6:   [u'\u0666',   'u'],   # Arabic_6
 1608 0x05b7:   [u'\u0667',   'u'],   # Arabic_7
 1609 0x05b8:   [u'\u0668',   'u'],   # Arabic_8
 1610 0x05b9:   [u'\u0669',   'u'],   # Arabic_9
 1611 0x05f3:   [u'\u0653',   'u'],   # Arabic_madda_above
 1612 0x05f4:   [u'\u0654',   'u'],   # Arabic_hamza_above
 1613 0x05f5:   [u'\u0655',   'u'],   # Arabic_hamza_below
 1614 0x05f6:   [u'\u0698',   'u'],   # Arabic_jeh
 1615 0x05f7:   [u'\u06a4',   'u'],   # Arabic_veh
 1616 0x05f8:   [u'\u06a9',   'u'],   # Arabic_keheh
 1617 0x05f9:   [u'\u06af',   'u'],   # Arabic_gaf
 1618 0x05fa:   [u'\u06ba',   'u'],   # Arabic_noon_ghunna
 1619 0x05fb:   [u'\u06be',   'u'],   # Arabic_heh_doachashmee
 1620 0x05fc:   [u'\u06cc',   'u'],   # Farsi_yeh
 1621 0x05fd:   [u'\u06d2',   'u'],   # Arabic_yeh_baree
 1622 0x05fe:   [u'\u06c1',   'u'],   # Arabic_heh_goal
 1623 
 1624 # Cyrillic
 1625 # (none of these are actually used in any XFree86 4.4 kbd layouts)
 1626 0x0680:   [u'\u0492',   'u'],   # Cyrillic_GHE_bar
 1627 0x0681:   [u'\u0496',   'u'],   # Cyrillic_ZHE_descender
 1628 0x0682:   [u'\u049a',   'u'],   # Cyrillic_KA_descender
 1629 0x0683:   [u'\u049c',   'u'],   # Cyrillic_KA_vertstroke
 1630 0x0684:   [u'\u04a2',   'u'],   # Cyrillic_EN_descender
 1631 0x0685:   [u'\u04ae',   'u'],   # Cyrillic_U_straight
 1632 0x0686:   [u'\u04b0',   'u'],   # Cyrillic_U_straight_bar
 1633 0x0687:   [u'\u04b2',   'u'],   # Cyrillic_HA_descender
 1634 0x0688:   [u'\u04b6',   'u'],   # Cyrillic_CHE_descender
 1635 0x0689:   [u'\u04b8',   'u'],   # Cyrillic_CHE_vertstroke
 1636 0x068a:   [u'\u04ba',   'u'],   # Cyrillic_SHHA
 1637 0x068c:   [u'\u04d8',   'u'],   # Cyrillic_SCHWA
 1638 0x068d:   [u'\u04e2',   'u'],   # Cyrillic_I_macron
 1639 0x068e:   [u'\u04e8',   'u'],   # Cyrillic_O_bar
 1640 0x068f:   [u'\u04ee',   'u'],   # Cyrillic_U_macron
 1641 0x0690:   [u'\u0493',   'u'],   # Cyrillic_ghe_bar
 1642 0x0691:   [u'\u0497',   'u'],   # Cyrillic_zhe_descender
 1643 0x0692:   [u'\u049b',   'u'],   # Cyrillic_ka_descender
 1644 0x0693:   [u'\u049d',   'u'],   # Cyrillic_ka_vertstroke
 1645 0x0694:   [u'\u04a3',   'u'],   # Cyrillic_en_descender
 1646 0x0695:   [u'\u04af',   'u'],   # Cyrillic_u_straight
 1647 0x0696:   [u'\u04b1',   'u'],   # Cyrillic_u_straight_bar
 1648 0x0697:   [u'\u04b3',   'u'],   # Cyrillic_ha_descender
 1649 0x0698:   [u'\u04b7',   'u'],   # Cyrillic_che_descender
 1650 0x0699:   [u'\u04b9',   'u'],   # Cyrillic_che_vertstroke
 1651 0x069a:   [u'\u04bb',   'u'],   # Cyrillic_shha
 1652 0x069c:   [u'\u04d9',   'u'],   # Cyrillic_schwa
 1653 0x069d:   [u'\u04e3',   'u'],   # Cyrillic_i_macron
 1654 0x069e:   [u'\u04e9',   'u'],   # Cyrillic_o_bar
 1655 0x069f:   [u'\u04ef',   'u'],   # Cyrillic_u_macron
 1656 
 1657 # Caucasus
 1658 # (of these, in XFree86 4.4 only Gcaron, gcaron are actually used,
 1659 # e.g. in /usr/lib/X11/xkb/symbols/sapmi; the lack of Unicode
 1660 # equivalents for the others suggests that they are bogus)
 1661 0x16a2:   [None     ,   'r'],   # Ccedillaabovedot
 1662 0x16a3:   [u'\u1e8a',   'u'],   # Xabovedot
 1663 0x16a5:   [None     ,   'r'],   # Qabovedot
 1664 0x16a6:   [u'\u012c',   'u'],   # Ibreve
 1665 0x16a7:   [None     ,   'r'],   # IE
 1666 0x16a8:   [None     ,   'r'],   # UO
 1667 0x16a9:   [u'\u01b5',   'u'],   # Zstroke
 1668 0x16aa:   [u'\u01e6',   'u'],   # Gcaron
 1669 0x16af:   [u'\u019f',   'u'],   # Obarred
 1670 0x16b2:   [None     ,   'r'],   # ccedillaabovedot
 1671 0x16b3:   [u'\u1e8b',   'u'],   # xabovedot
 1672 0x16b4:   [None     ,   'r'],   # Ocaron
 1673 0x16b5:   [None     ,   'r'],   # qabovedot
 1674 0x16b6:   [u'\u012d',   'u'],   # ibreve
 1675 0x16b7:   [None     ,   'r'],   # ie
 1676 0x16b8:   [None     ,   'r'],   # uo
 1677 0x16b9:   [u'\u01b6',   'u'],   # zstroke
 1678 0x16ba:   [u'\u01e7',   'u'],   # gcaron
 1679 0x16bd:   [u'\u01d2',   'u'],   # ocaron
 1680 0x16bf:   [u'\u0275',   'u'],   # obarred
 1681 0x16c6:   [u'\u018f',   'u'],   # SCHWA
 1682 0x16f6:   [u'\u0259',   'u'],   # schwa
 1683 
 1684 # Inupiak, Guarani
 1685 # (none of these are actually used in any XFree86 4.4 kbd layouts,
 1686 # and the lack of Unicode equivalents suggests that they are bogus)
 1687 0x16d1:   [u'\u1e36',   'u'],   # Lbelowdot
 1688 0x16d2:   [None     ,   'r'],   # Lstrokebelowdot
 1689 0x16d3:   [None     ,   'r'],   # Gtilde
 1690 0x16e1:   [u'\u1e37',   'u'],   # lbelowdot
 1691 0x16e2:   [None     ,   'r'],   # lstrokebelowdot
 1692 0x16e3:   [None     ,   'r'],   # gtilde
 1693 
 1694 # Vietnamese
 1695 # (none of these are actually used in any XFree86 4.4 kbd layouts; they are
 1696 # also pointless, as Vietnamese input methods use dead accent keys + ASCII keys)
 1697 0x1ea0:   [u'\u1ea0',   'u'],   # Abelowdot
 1698 0x1ea1:   [u'\u1ea1',   'u'],   # abelowdot
 1699 0x1ea2:   [u'\u1ea2',   'u'],   # Ahook
 1700 0x1ea3:   [u'\u1ea3',   'u'],   # ahook
 1701 0x1ea4:   [u'\u1ea4',   'u'],   # Acircumflexacute
 1702 0x1ea5:   [u'\u1ea5',   'u'],   # acircumflexacute
 1703 0x1ea6:   [u'\u1ea6',   'u'],   # Acircumflexgrave
 1704 0x1ea7:   [u'\u1ea7',   'u'],   # acircumflexgrave
 1705 0x1ea8:   [u'\u1ea8',   'u'],   # Acircumflexhook
 1706 0x1ea9:   [u'\u1ea9',   'u'],   # acircumflexhook
 1707 0x1eaa:   [u'\u1eaa',   'u'],   # Acircumflextilde
 1708 0x1eab:   [u'\u1eab',   'u'],   # acircumflextilde
 1709 0x1eac:   [u'\u1eac',   'u'],   # Acircumflexbelowdot
 1710 0x1ead:   [u'\u1ead',   'u'],   # acircumflexbelowdot
 1711 0x1eae:   [u'\u1eae',   'u'],   # Abreveacute
 1712 0x1eaf:   [u'\u1eaf',   'u'],   # abreveacute
 1713 0x1eb0:   [u'\u1eb0',   'u'],   # Abrevegrave
 1714 0x1eb1:   [u'\u1eb1',   'u'],   # abrevegrave
 1715 0x1eb2:   [u'\u1eb2',   'u'],   # Abrevehook
 1716 0x1eb3:   [u'\u1eb3',   'u'],   # abrevehook
 1717 0x1eb4:   [u'\u1eb4',   'u'],   # Abrevetilde
 1718 0x1eb5:   [u'\u1eb5',   'u'],   # abrevetilde
 1719 0x1eb6:   [u'\u1eb6',   'u'],   # Abrevebelowdot
 1720 0x1eb7:   [u'\u1eb7',   'u'],   # abrevebelowdot
 1721 0x1eb8:   [u'\u1eb8',   'u'],   # Ebelowdot
 1722 0x1eb9:   [u'\u1eb9',   'u'],   # ebelowdot
 1723 0x1eba:   [u'\u1eba',   'u'],   # Ehook
 1724 0x1ebb:   [u'\u1ebb',   'u'],   # ehook
 1725 0x1ebc:   [u'\u1ebc',   'u'],   # Etilde
 1726 0x1ebd:   [u'\u1ebd',   'u'],   # etilde
 1727 0x1ebe:   [u'\u1ebe',   'u'],   # Ecircumflexacute
 1728 0x1ebf:   [u'\u1ebf',   'u'],   # ecircumflexacute
 1729 0x1ec0:   [u'\u1ec0',   'u'],   # Ecircumflexgrave
 1730 0x1ec1:   [u'\u1ec1',   'u'],   # ecircumflexgrave
 1731 0x1ec2:   [u'\u1ec2',   'u'],   # Ecircumflexhook
 1732 0x1ec3:   [u'\u1ec3',   'u'],   # ecircumflexhook
 1733 0x1ec4:   [u'\u1ec4',   'u'],   # Ecircumflextilde
 1734 0x1ec5:   [u'\u1ec5',   'u'],   # ecircumflextilde
 1735 0x1ec6:   [u'\u1ec6',   'u'],   # Ecircumflexbelowdot
 1736 0x1ec7:   [u'\u1ec7',   'u'],   # ecircumflexbelowdot
 1737 0x1ec8:   [u'\u1ec8',   'u'],   # Ihook
 1738 0x1ec9:   [u'\u1ec9',   'u'],   # ihook
 1739 0x1eca:   [u'\u1eca',   'u'],   # Ibelowdot
 1740 0x1ecb:   [u'\u1ecb',   'u'],   # ibelowdot
 1741 0x1ecc:   [u'\u1ecc',   'u'],   # Obelowdot
 1742 0x1ecd:   [u'\u1ecd',   'u'],   # obelowdot
 1743 0x1ece:   [u'\u1ece',   'u'],   # Ohook
 1744 0x1ecf:   [u'\u1ecf',   'u'],   # ohook
 1745 0x1ed0:   [u'\u1ed0',   'u'],   # Ocircumflexacute
 1746 0x1ed1:   [u'\u1ed1',   'u'],   # ocircumflexacute
 1747 0x1ed2:   [u'\u1ed2',   'u'],   # Ocircumflexgrave
 1748 0x1ed3:   [u'\u1ed3',   'u'],   # ocircumflexgrave
 1749 0x1ed4:   [u'\u1ed4',   'u'],   # Ocircumflexhook
 1750 0x1ed5:   [u'\u1ed5',   'u'],   # ocircumflexhook
 1751 0x1ed6:   [u'\u1ed6',   'u'],   # Ocircumflextilde
 1752 0x1ed7:   [u'\u1ed7',   'u'],   # ocircumflextilde
 1753 0x1ed8:   [u'\u1ed8',   'u'],   # Ocircumflexbelowdot
 1754 0x1ed9:   [u'\u1ed9',   'u'],   # ocircumflexbelowdot
 1755 0x1eda:   [u'\u1eda',   'u'],   # Ohornacute
 1756 0x1edb:   [u'\u1edb',   'u'],   # ohornacute
 1757 0x1edc:   [u'\u1edc',   'u'],   # Ohorngrave
 1758 0x1edd:   [u'\u1edd',   'u'],   # ohorngrave
 1759 0x1ede:   [u'\u1ede',   'u'],   # Ohornhook
 1760 0x1edf:   [u'\u1edf',   'u'],   # ohornhook
 1761 0x1ee0:   [u'\u1ee0',   'u'],   # Ohorntilde
 1762 0x1ee1:   [u'\u1ee1',   'u'],   # ohorntilde
 1763 0x1ee2:   [u'\u1ee2',   'u'],   # Ohornbelowdot
 1764 0x1ee3:   [u'\u1ee3',   'u'],   # ohornbelowdot
 1765 0x1ee4:   [u'\u1ee4',   'u'],   # Ubelowdot
 1766 0x1ee5:   [u'\u1ee5',   'u'],   # ubelowdot
 1767 0x1ee6:   [u'\u1ee6',   'u'],   # Uhook
 1768 0x1ee7:   [u'\u1ee7',   'u'],   # uhook
 1769 0x1ee8:   [u'\u1ee8',   'u'],   # Uhornacute
 1770 0x1ee9:   [u'\u1ee9',   'u'],   # uhornacute
 1771 0x1eea:   [u'\u1eea',   'u'],   # Uhorngrave
 1772 0x1eeb:   [u'\u1eeb',   'u'],   # uhorngrave
 1773 0x1eec:   [u'\u1eec',   'u'],   # Uhornhook
 1774 0x1eed:   [u'\u1eed',   'u'],   # uhornhook
 1775 0x1eee:   [u'\u1eee',   'u'],   # Uhorntilde
 1776 0x1eef:   [u'\u1eef',   'u'],   # uhorntilde
 1777 0x1ef0:   [u'\u1ef0',   'u'],   # Uhornbelowdot
 1778 0x1ef1:   [u'\u1ef1',   'u'],   # uhornbelowdot
 1779 0x1ef4:   [u'\u1ef4',   'u'],   # Ybelowdot
 1780 0x1ef5:   [u'\u1ef5',   'u'],   # ybelowdot
 1781 0x1ef6:   [u'\u1ef6',   'u'],   # Yhook
 1782 0x1ef7:   [u'\u1ef7',   'u'],   # yhook
 1783 0x1ef8:   [u'\u1ef8',   'u'],   # Ytilde
 1784 0x1ef9:   [u'\u1ef9',   'u'],   # ytilde
 1785 
 1786 0x1efa:   [u'\u01a0',   'u'],   # Ohorn
 1787 0x1efb:   [u'\u01a1',   'u'],   # ohorn
 1788 0x1efc:   [u'\u01af',   'u'],   # Uhorn
 1789 0x1efd:   [u'\u01b0',   'u'],   # uhorn
 1790 
 1791 # (Unicode combining characters have no direct equivalence with
 1792 # keysyms, where dead keys are defined instead)
 1793 0x1e9f:   [u'\u0303',   'r'],   # combining_tilde
 1794 0x1ef2:   [u'\u0300',   'r'],   # combining_grave
 1795 0x1ef3:   [u'\u0301',   'r'],   # combining_acute
 1796 0x1efe:   [u'\u0309',   'r'],   # combining_hook
 1797 0x1eff:   [u'\u0323',   'r'],   # combining_belowdot
 1798 
 1799 # These probably should be added to the X11 standard properly,
 1800 # as they could be of use for Vietnamese input methods.
 1801 0xfe60:   [u'\u0323',   'f'],   # dead_belowdot
 1802 0xfe61:   [u'\u0309',   'f'],   # dead_hook
 1803 0xfe62:   [u'\u031b',   'f'],   # dead_horn
 1804 
 1805 }