diff --git a/scripts/makekeys b/scripts/makekeys index e12925e..fe30067 100755 --- a/scripts/makekeys +++ b/scripts/makekeys @@ -2,10 +2,15 @@ import re, sys, itertools +import perfect_hash + pattern = re.compile(r'^#define\s+XKB_KEY_(?P\w+)\s+(?P0x[0-9a-fA-F]+)\s') matches = [pattern.match(line) for line in open(sys.argv[1])] entries = [(m.group("name"), int(m.group("value"), 16)) for m in matches if m] +entries_isorted = sorted(entries, key=lambda e: e[0].lower()) +entries_kssorted = sorted(entries, key=lambda e: e[1]) + print(''' /** * This file comes from libxkbcommon and was generated by makekeys.py @@ -24,7 +29,7 @@ print(''' static const char *keysym_names = '''.strip()) offs = 0 -for (name, _) in sorted(entries, key=lambda e: e[0].lower()): +for (name, _) in entries_isorted: entry_offsets[name] = offs print(' "{name}\\0"'.format(name=name)) offs += len(name) + 1 @@ -35,6 +40,35 @@ print(''' #endif '''.strip()) + +template = r''' +static const uint16_t keysym_name_G[] = { + $G +}; + +static size_t +keysym_name_hash_f(const char *key, const char *T) +{ + size_t sum = 0; + for (size_t i = 0; key[i] != '\0'; i++) + sum += T[i % $NS] * key[i]; + return sum % $NG; +} + +static size_t +keysym_name_perfect_hash(const char *key) +{ + return ( + keysym_name_G[keysym_name_hash_f(key, "$S1")] + + keysym_name_G[keysym_name_hash_f(key, "$S2")] + ) % $NG; +} +''' +print(perfect_hash.generate_code( + keys=[name for name, value in entries_isorted], + template=template, +)) + print(''' struct name_keysym { xkb_keysym_t keysym; @@ -46,14 +80,10 @@ def print_entries(x): print(' {{ 0x{value:08x}, {offs} }}, /* {name} */'.format(offs=entry_offsets[name], value=value, name=name)) print('static const struct name_keysym name_to_keysym[] = {') -print_entries(sorted(entries, key=lambda e: e[0])) -print('};\n') - -print('static const struct name_keysym name_to_keysym_icase[] = {') -print_entries(sorted(entries, key=lambda e: e[0].lower())) +print_entries(entries_isorted) print('};\n') # *.sort() is stable so we always get the first keysym for duplicate print('static const struct name_keysym keysym_to_name[] = {') -print_entries(next(g[1]) for g in itertools.groupby(sorted(entries, key=lambda e: e[1]), key=lambda e: e[1])) +print_entries(next(g[1]) for g in itertools.groupby(entries_kssorted, key=lambda e: e[1])) print('};') diff --git a/scripts/perfect_hash.py b/scripts/perfect_hash.py new file mode 100644 index 0000000..0d7df42 --- /dev/null +++ b/scripts/perfect_hash.py @@ -0,0 +1,672 @@ +# Derived from: https://github.com/ilanschnell/perfect-hash +# Commit: e376138af70db9f668de7e23cf84671872a676d8 + +# BSD 3-Clause License +# +# Copyright (c) 2019, Ilan Schnell +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +Generate a minimal perfect hash function for the keys in a file, +desired hash values may be specified within this file as well. +A given code template is filled with parameters, such that the +output is code which implements the hash function. +Templates can easily be constructed for any programming language. + +The code is based on an a program A.M. Kuchling wrote: +http://www.amk.ca/python/code/perfect-hash + +The algorithm the program uses is described in the paper +'Optimal algorithms for minimal perfect hashing', +Z. J. Czech, G. Havas and B.S. Majewski. +http://citeseer.ist.psu.edu/122364.html + +The algorithm works like this: + +1. You have K keys, that you want to perfectly hash against some + desired hash values. + +2. Choose a number N larger than K. This is the number of + vertices in a graph G, and also the size of the resulting table G. + +3. Pick two random hash functions f1, f2, that return values from 0..N-1. + +4. Now, for all keys, you draw an edge between vertices f1(key) and f2(key) + of the graph G, and associate the desired hash value with that edge. + +5. If G is cyclic, go back to step 2. + +6. Assign values to each vertex such that, for each edge, you can add + the values for the two vertices and get the desired (hash) value + for that edge. This task is easy, because the graph is acyclic. + This is done by picking a vertex, and assigning it a value of 0. + Then do a depth-first search, assigning values to new vertices so that + they sum up properly. + +7. f1, f2, and vertex values of G now make up a perfect hash function. + + +For simplicity, the implementation of the algorithm combines steps 5 and 6. +That is, we check for loops in G and assign the vertex values in one procedure. +If this procedure succeeds, G is acyclic and the vertex values are assigned. +If the procedure fails, G is cyclic, and we go back to step 2, replacing G +with a new graph, and thereby discarding the vertex values from the failed +attempt. +""" +from __future__ import absolute_import, division, print_function + +import sys +import random +import string +import subprocess +import shutil +import tempfile +from collections import defaultdict +from os.path import join + +if sys.version_info[0] == 2: + from cStringIO import StringIO +else: + from io import StringIO + + +__version__ = '0.4.2' + + +verbose = False +trials = 150 + + +class Graph(object): + """ + Implements a graph with 'N' vertices. First, you connect the graph with + edges, which have a desired value associated. Then the vertex values + are assigned, which will fail if the graph is cyclic. The vertex values + are assigned such that the two values corresponding to an edge add up to + the desired edge value (mod N). + """ + def __init__(self, N): + self.N = N # number of vertices + + # maps a vertex number to the list of tuples (vertex, edge value) + # to which it is connected by edges. + self.adjacent = defaultdict(list) + + def connect(self, vertex1, vertex2, edge_value): + """ + Connect 'vertex1' and 'vertex2' with an edge, with associated + value 'value' + """ + # Add vertices to each other's adjacent list + self.adjacent[vertex1].append((vertex2, edge_value)) + self.adjacent[vertex2].append((vertex1, edge_value)) + + def assign_vertex_values(self): + """ + Try to assign the vertex values, such that, for each edge, you can + add the values for the two vertices involved and get the desired + value for that edge, i.e. the desired hash key. + This will fail when the graph is cyclic. + + This is done by a Depth-First Search of the graph. If the search + finds a vertex that was visited before, there's a loop and False is + returned immediately, i.e. the assignment is terminated. + On success (when the graph is acyclic) True is returned. + """ + self.vertex_values = self.N * [-1] # -1 means unassigned + + visited = self.N * [False] + + # Loop over all vertices, taking unvisited ones as roots. + for root in range(self.N): + if visited[root]: + continue + + # explore tree starting at 'root' + self.vertex_values[root] = 0 # set arbitrarily to zero + + # Stack of vertices to visit, a list of tuples (parent, vertex) + tovisit = [(None, root)] + while tovisit: + parent, vertex = tovisit.pop() + visited[vertex] = True + + # Loop over adjacent vertices, but skip the vertex we arrived + # here from the first time it is encountered. + skip = True + for neighbor, edge_value in self.adjacent[vertex]: + if skip and neighbor == parent: + skip = False + continue + + if visited[neighbor]: + # We visited here before, so the graph is cyclic. + return False + + tovisit.append((vertex, neighbor)) + + # Set new vertex's value to the desired edge value, + # minus the value of the vertex we came here from. + self.vertex_values[neighbor] = ( + edge_value - self.vertex_values[vertex]) % self.N + + # check if all vertices have a valid value + for vertex in range(self.N): + assert self.vertex_values[vertex] >= 0 + + # We got though, so the graph is acyclic, + # and all values are now assigned. + return True + + +class StrSaltHash(object): + """ + Random hash function generator. + Simple byte level hashing: each byte is multiplied to another byte from + a random string of characters, summed up, and finally modulo NG is + taken. + """ + chars = string.ascii_letters + string.digits + + def __init__(self, N): + self.N = N + self.salt = '' + + def __call__(self, key): + while len(self.salt) < len(key): # add more salt as necessary + self.salt += random.choice(self.chars) + + return sum(ord(self.salt[i]) * ord(c) + for i, c in enumerate(key)) % self.N + + template = """ +def hash_f(key, T): + return sum(ord(T[i % $NS]) * ord(c) for i, c in enumerate(key)) % $NG + +def perfect_hash(key): + return (G[hash_f(key, "$S1")] + + G[hash_f(key, "$S2")]) % $NG +""" + +class IntSaltHash(object): + """ + Random hash function generator. + Simple byte level hashing, each byte is multiplied in sequence to a table + containing random numbers, summed tp, and finally modulo NG is taken. + """ + def __init__(self, N): + self.N = N + self.salt = [] + + def __call__(self, key): + while len(self.salt) < len(key): # add more salt as necessary + self.salt.append(random.randint(1, self.N - 1)) + + return sum(self.salt[i] * ord(c) + for i, c in enumerate(key)) % self.N + + template = """ +S1 = [$S1] +S2 = [$S2] +assert len(S1) == len(S2) == $NS + +def hash_f(key, T): + return sum(T[i % $NS] * ord(c) for i, c in enumerate(key)) % $NG + +def perfect_hash(key): + return (G[hash_f(key, S1)] + G[hash_f(key, S2)]) % $NG +""" + +def builtin_template(Hash): + return """\ +# ======================================================================= +# ================= Python code for perfect hash function =============== +# ======================================================================= + +G = [$G] +""" + Hash.template + """ +# ============================ Sanity check ============================= + +K = [$K] +assert len(K) == $NK + +for h, k in enumerate(K): + assert perfect_hash(k) == h +""" + + +class TooManyInterationsError(Exception): + pass + + +def generate_hash(keys, Hash=StrSaltHash): + """ + Return hash functions f1 and f2, and G for a perfect minimal hash. + Input is an iterable of 'keys', whos indicies are the desired hash values. + 'Hash' is a random hash function generator, that means Hash(N) returns a + returns a random hash function which returns hash values from 0..N-1. + """ + if not isinstance(keys, (list, tuple)): + raise TypeError("list or tuple expected") + NK = len(keys) + if NK != len(set(keys)): + raise ValueError("duplicate keys") + for key in keys: + if not isinstance(key, str): + raise TypeError("key a not string: %r" % key) + if NK > 10000 and Hash == StrSaltHash: + print("""\ +WARNING: You have %d keys. + Using --hft=1 is likely to fail for so many keys. + Please use --hft=2 instead. +""" % NK) + + # the number of vertices in the graph G + NG = NK + 1 + if verbose: + print('NG = %d' % NG) + + trial = 0 # Number of trial graphs so far + while True: + if (trial % trials) == 0: # trials failures, increase NG slightly + if trial > 0: + NG = max(NG + 1, int(1.05 * NG)) + if verbose: + sys.stdout.write('\nGenerating graphs NG = %d ' % NG) + trial += 1 + + if NG > 100 * (NK + 1): + raise TooManyInterationsError("%d keys" % NK) + + if verbose: + sys.stdout.write('.') + sys.stdout.flush() + + G = Graph(NG) # Create graph with NG vertices + f1 = Hash(NG) # Create 2 random hash functions + f2 = Hash(NG) + + # Connect vertices given by the values of the two hash functions + # for each key. Associate the desired hash value with each edge. + for hashval, key in enumerate(keys): + G.connect(f1(key), f2(key), hashval) + + # Try to assign the vertex values. This will fail when the graph + # is cyclic. But when the graph is acyclic it will succeed and we + # break out, because we're done. + if G.assign_vertex_values(): + break + + if verbose: + print('\nAcyclic graph found after %d trials.' % trial) + print('NG = %d' % NG) + + # Sanity check the result by actually verifying that all the keys + # hash to the right value. + for hashval, key in enumerate(keys): + assert hashval == ( + G.vertex_values[f1(key)] + G.vertex_values[f2(key)] + ) % NG + + if verbose: + print('OK') + + return f1, f2, G.vertex_values + + +class Format(object): + + def __init__(self, width=76, indent=4, delimiter=', '): + self.width = width + self.indent = indent + self.delimiter = delimiter + + def print_format(self): + print("Format options:") + for name in 'width', 'indent', 'delimiter': + print(' %s: %r' % (name, getattr(self, name))) + + def __call__(self, data, quote=False): + if not isinstance(data, (list, tuple)): + return str(data) + + lendel = len(self.delimiter) + aux = StringIO() + pos = 20 + for i, elt in enumerate(data): + last = bool(i == len(data) - 1) + + s = ('"%s"' if quote else '%s') % elt + + if pos + len(s) + lendel > self.width: + aux.write('\n' + (self.indent * ' ')) + pos = self.indent + + aux.write(s) + pos += len(s) + if not last: + aux.write(self.delimiter) + pos += lendel + + return '\n'.join(l.rstrip() for l in aux.getvalue().split('\n')) + + +def generate_code(keys, Hash=StrSaltHash, template=None, options=None): + """ + Takes a list of key value pairs and inserts the generated parameter + lists into the 'template' string. 'Hash' is the random hash function + generator, and the optional keywords are formating options. + The return value is the substituted code template. + """ + f1, f2, G = generate_hash(keys, Hash) + + assert f1.N == f2.N == len(G) + try: + salt_len = len(f1.salt) + assert salt_len == len(f2.salt) + except TypeError: + salt_len = None + + if template is None: + template = builtin_template(Hash) + + if options is None: + fmt = Format() + else: + fmt = Format(width=options.width, indent=options.indent, + delimiter=options.delimiter) + + if verbose: + fmt.print_format() + + return string.Template(template).substitute( + NS = salt_len, + S1 = fmt(f1.salt), + S2 = fmt(f2.salt), + NG = len(G), + G = fmt(G), + NK = len(keys), + K = fmt(list(keys), quote=True)) + + +def read_table(filename, options): + """ + Reads keys and desired hash value pairs from a file. If no column + for the hash value is specified, a sequence of hash values is generated, + from 0 to N-1, where N is the number of rows found in the file. + """ + if verbose: + print("Reading table from file `%s' to extract keys." % filename) + try: + fi = open(filename) + except IOError: + sys.exit("Error: Could not open `%s' for reading." % filename) + + keys = [] + + if verbose: + print("Reader options:") + for name in 'comment', 'splitby', 'keycol': + print(' %s: %r' % (name, getattr(options, name))) + + for n, line in enumerate(fi): + line = line.strip() + if not line or line.startswith(options.comment): + continue + + if line.count(options.comment): # strip content after comment + line = line.split(options.comment)[0].strip() + + row = [col.strip() for col in line.split(options.splitby)] + + try: + key = row[options.keycol - 1] + except IndexError: + sys.exit("%s:%d: Error: Cannot read key, not enough columns." % + (filename, n + 1)) + + keys.append(key) + + fi.close() + + if not keys: + exit("Error: no keys found in file `%s'." % filename) + + return keys + + +def read_template(filename): + if verbose: + print("Reading template from file `%s'" % filename) + try: + with open(filename, 'r') as fi: + return fi.read() + except IOError: + sys.exit("Error: Could not open `%s' for reading." % filename) + + +def run_code(code): + tmpdir = tempfile.mkdtemp() + path = join(tmpdir, 't.py') + with open(path, 'w') as fo: + fo.write(code) + try: + subprocess.check_call([sys.executable, path]) + except subprocess.CalledProcessError as e: + raise AssertionError(e) + finally: + shutil.rmtree(tmpdir) + + +def main(): + from optparse import OptionParser + + usage = "usage: %prog [options] KEYS_FILE [TMPL_FILE]" + + description = """\ +Generates code for perfect hash functions from +a file with keywords and a code template. +If no template file is provided, a small built-in Python template +is processed and the output code is written to stdout. +""" + + parser = OptionParser(usage = usage, + description = description, + prog = sys.argv[0], + version = "%prog: " + __version__) + + parser.add_option("--delimiter", + action = "store", + default = ", ", + help = "Delimiter for list items used in output, " + "the default delimiter is '%default'", + metavar = "STR") + + parser.add_option("--indent", + action = "store", + default = 4, + type = "int", + help = "Make INT spaces at the beginning of a " + "new line when generated list is wrapped. " + "Default is %default", + metavar = "INT") + + parser.add_option("--width", + action = "store", + default = 76, + type = "int", + help = "Maximal width of generated list when " + "wrapped. Default width is %default", + metavar = "INT") + + parser.add_option("--comment", + action = "store", + default = "#", + help = "STR is the character, or sequence of " + "characters, which marks the beginning " + "of a comment (which runs till " + "the end of the line), in the input " + "KEYS_FILE. " + "Default is '%default'", + metavar = "STR") + + parser.add_option("--splitby", + action = "store", + default = ",", + help = "STR is the character by which the columns " + "in the input KEYS_FILE are split. " + "Default is '%default'", + metavar = "STR") + + parser.add_option("--keycol", + action = "store", + default = 1, + type = "int", + help = "Specifies the column INT in the input " + "KEYS_FILE which contains the keys. " + "Default is %default, i.e. the first column.", + metavar = "INT") + + parser.add_option("--trials", + action = "store", + default = 5, + type = "int", + help = "Specifies the number of trials before " + "NG is increased. A small INT will give " + "compute faster, but the array G will be " + "large. A large INT will take longer to " + "compute but G will be smaller. " + "Default is %default", + metavar = "INT") + + parser.add_option("--hft", + action = "store", + default = 1, + type = "int", + help = "Hash function type INT. Possible values " + "are 1 (StrSaltHash) and 2 (IntSaltHash). " + "The default is %default", + metavar = "INT") + + parser.add_option("-e", "--execute", + action = "store_true", + help = "Execute the generated code within " + "the Python interpreter.") + + parser.add_option("-o", "--output", + action = "store", + help = "Specify output FILE explicitly. " + "`-o std' means standard output. " + "`-o no' means no output. " + "By default, the file name is obtained " + "from the name of the template file by " + "substituting `tmpl' to `code'.", + metavar = "FILE") + + parser.add_option("-v", "--verbose", + action = "store_true", + help = "verbosity") + + options, args = parser.parse_args() + + if options.trials <= 0: + parser.error("trials before increasing N has to be larger than zero") + + global trials + trials = options.trials + + global verbose + verbose = options.verbose + + if len(args) not in (1, 2): + parser.error("incorrect number of arguments") + + if len(args) == 2 and not args[1].count('tmpl'): + parser.error("template filename does not contain 'tmpl'") + + if options.hft == 1: + Hash = StrSaltHash + elif options.hft == 2: + Hash = IntSaltHash + else: + parser.error("Hash function %s not implemented." % options.hft) + + # --------------------- end parsing and checking -------------- + + keys_file = args[0] + + if verbose: + print("keys_file = %r" % keys_file) + + keys = read_table(keys_file, options) + + if verbose: + print("Number os keys: %d" % len(keys)) + + tmpl_file = args[1] if len(args) == 2 else None + + if verbose: + print("tmpl_file = %r" % tmpl_file) + + template = read_template(tmpl_file) if tmpl_file else None + + if options.output: + outname = options.output + else: + if tmpl_file: + if 'tmpl' not in tmpl_file: + sys.exit("Hmm, template filename does not contain 'tmpl'") + outname = tmpl_file.replace('tmpl', 'code') + else: + outname = 'std' + + if verbose: + print("outname = %r\n" % outname) + + if outname == 'std': + outstream = sys.stdout + elif outname == 'no': + outstream = None + else: + try: + outstream = open(outname, 'w') + except IOError: + sys.exit("Error: Could not open `%s' for writing." % outname) + + code = generate_code(keys, Hash, template, options) + + if options.execute or template == builtin_template(Hash): + if verbose: + print('Executing code...\n') + run_code(code) + + if outstream: + outstream.write(code) + if not outname == 'std': + outstream.close() + + +if __name__ == '__main__': + main() diff --git a/src/keysym.c b/src/keysym.c index dc30657..10c5a52 100644 --- a/src/keysym.c +++ b/src/keysym.c @@ -107,22 +107,17 @@ xkb_keysym_from_name(const char *name, enum xkb_keysym_flags flags) * So do it in a fast path. */ if (!icase) { - size_t lo = 0, hi = ARRAY_SIZE(name_to_keysym) - 1; - while (hi >= lo) { - size_t mid = (lo + hi) / 2; - int cmp = strcmp(name, get_name(&name_to_keysym[mid])); - if (cmp > 0) - lo = mid + 1; - else if (cmp < 0) - hi = mid - 1; - else - return name_to_keysym[mid].keysym; + size_t pos = keysym_name_perfect_hash(name); + if (pos < ARRAY_SIZE(name_to_keysym)) { + const char *s = get_name(&name_to_keysym[pos]); + if (strcmp(name, s) == 0) + return name_to_keysym[pos].keysym; } } /* * Find the correct keysym for case-insensitive match. * - * The name_to_keysym_icase table is sorted by istrcmp(). So the binary + * The name_to_keysym table is sorted by istrcmp(). So the binary * search may return _any_ of all possible case-insensitive duplicates. This * code searches the entry, all previous and all next entries that match by * case-insensitive comparison and returns the "best" case-insensitive @@ -135,16 +130,16 @@ xkb_keysym_from_name(const char *name, enum xkb_keysym_flags flags) * lower-case match is enough in this case. */ else { - size_t lo = 0, hi = ARRAY_SIZE(name_to_keysym_icase) - 1; + size_t lo = 0, hi = ARRAY_SIZE(name_to_keysym) - 1; while (hi >= lo) { size_t mid = (lo + hi) / 2; - int cmp = istrcmp(name, get_name(&name_to_keysym_icase[mid])); + int cmp = istrcmp(name, get_name(&name_to_keysym[mid])); if (cmp > 0) { lo = mid + 1; } else if (cmp < 0) { hi = mid - 1; } else { - entry = &name_to_keysym_icase[mid]; + entry = &name_to_keysym[mid]; break; } } @@ -154,14 +149,14 @@ xkb_keysym_from_name(const char *name, enum xkb_keysym_flags flags) if (icase && xkb_keysym_is_lower(entry->keysym)) return entry->keysym; - for (iter = entry - 1; iter >= name_to_keysym_icase; --iter) { + for (iter = entry - 1; iter >= name_to_keysym; --iter) { if (istrcmp(get_name(iter), get_name(entry)) != 0) break; if (xkb_keysym_is_lower(iter->keysym)) return iter->keysym; } - last = name_to_keysym_icase + ARRAY_SIZE(name_to_keysym_icase); + last = name_to_keysym + ARRAY_SIZE(name_to_keysym); for (iter = entry + 1; iter < last; ++iter) { if (istrcmp(get_name(iter), get_name(entry)) != 0) break; diff --git a/src/ks_tables.h b/src/ks_tables.h index 4410b5a..95e4ac0 100644 --- a/src/ks_tables.h +++ b/src/ks_tables.h @@ -2566,2566 +2566,328 @@ static const char *keysym_names = #pragma GCC diagnostic pop #endif +static const uint16_t keysym_name_G[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1274, 3136, 0, + 0, 0, 713, 2993, 3990, 2827, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2265, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 1778, 0, 1415, 0, 0, 0, 0, 1506, + 0, 0, 0, 0, 0, 0, 0, 4395, 0, 0, 0, 0, 1271, 0, 0, 0, 1007, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 3407, 0, 0, 0, 0, 693, 0, 1554, 0, + 0, 0, 0, 0, 0, 1354, 0, 0, 0, 0, 0, 0, 2516, 0, 0, 0, 0, 0, 1135, 0, 0, + 522, 0, 0, 2241, 0, 4521, 536, 0, 0, 0, 2028, 0, 1848, 0, 0, 0, 0, 0, + 94, 904, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 3458, 0, 0, 0, 0, 0, 0, 0, 58, + 1747, 3044, 47, 1541, 0, 405, 765, 623, 0, 0, 0, 0, 0, 2309, 0, 0, 0, + 0, 279, 4523, 1068, 0, 0, 1939, 0, 0, 2124, 0, 0, 0, 0, 0, 0, 2111, + 2470, 0, 0, 0, 212, 0, 948, 0, 4505, 0, 1703, 0, 0, 623, 1398, 0, 0, 0, + 0, 581, 0, 0, 0, 1984, 0, 0, 0, 466, 0, 1711, 0, 0, 0, 0, 947, 3707, 0, + 0, 0, 0, 0, 0, 2227, 1360, 0, 0, 1030, 0, 3184, 0, 0, 0, 1672, 171, + 1466, 2710, 0, 0, 0, 4267, 0, 0, 0, 0, 0, 0, 0, 0, 1337, 0, 0, 3261, + 2460, 0, 4080, 0, 68, 1238, 0, 0, 0, 0, 827, 0, 1030, 490, 0, 0, 0, 0, + 0, 0, 841, 0, 0, 1549, 0, 534, 0, 0, 3054, 0, 0, 1516, 0, 0, 0, 4536, + 0, 4191, 0, 0, 0, 2718, 729, 0, 4284, 1692, 0, 0, 0, 0, 0, 1523, 0, 0, + 0, 236, 303, 4502, 3826, 0, 415, 0, 0, 0, 1212, 0, 4319, 0, 0, 0, 1674, + 1388, 0, 0, 0, 349, 0, 0, 0, 0, 1694, 0, 0, 0, 0, 195, 0, 2394, 1080, + 0, 4417, 1576, 0, 0, 0, 0, 0, 0, 3053, 0, 0, 2672, 0, 0, 0, 0, 3696, 0, + 0, 797, 0, 1347, 0, 1310, 0, 0, 3245, 3847, 4557, 0, 0, 0, 0, 0, 0, 0, + 1364, 0, 0, 1040, 0, 1846, 0, 0, 0, 0, 0, 0, 0, 0, 4359, 0, 2423, 0, + 2131, 3376, 1546, 100, 0, 0, 144, 3882, 1223, 4112, 0, 0, 0, 1412, 0, + 0, 0, 3654, 0, 1829, 1867, 2909, 0, 0, 0, 0, 3999, 0, 0, 0, 0, 0, 0, + 2337, 0, 0, 4146, 2438, 2760, 2123, 0, 4297, 1330, 4058, 0, 3738, 0, 0, + 0, 0, 0, 0, 0, 1801, 2018, 0, 1839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4254, + 4517, 3576, 0, 0, 0, 468, 0, 0, 0, 551, 0, 0, 0, 1793, 4503, 0, 1917, + 0, 0, 698, 526, 3910, 0, 1591, 1653, 0, 0, 4080, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2186, 0, 0, 882, 609, 0, 199, 826, 0, 0, 0, 1318, 0, 0, 711, + 1363, 116, 4177, 2263, 3662, 0, 1336, 3223, 2345, 0, 0, 0, 4534, 0, 0, + 0, 3575, 0, 0, 1634, 798, 0, 4568, 0, 0, 0, 3310, 1001, 0, 4557, 0, 0, + 2243, 0, 1377, 0, 0, 0, 0, 3277, 2965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1206, 0, 2524, 1099, 3439, 4511, 0, 4100, 0, 0, 0, 0, 0, 0, 766, 2397, + 0, 1688, 0, 0, 1178, 0, 0, 625, 2834, 0, 3809, 0, 0, 252, 4008, 275, + 2524, 92, 0, 0, 0, 0, 118, 2307, 2100, 4504, 584, 2, 284, 0, 0, 0, 0, + 0, 1655, 1898, 0, 2934, 0, 143, 0, 3018, 0, 0, 130, 0, 1873, 1047, 0, + 0, 0, 391, 0, 0, 0, 2176, 62, 0, 3442, 2708, 115, 920, 459, 0, 138, + 4523, 2500, 0, 0, 0, 3600, 0, 511, 0, 375, 3713, 0, 0, 0, 2779, 624, + 2236, 0, 0, 691, 0, 0, 0, 0, 258, 1136, 221, 2140, 1007, 0, 202, 0, 0, + 0, 0, 125, 0, 27, 1009, 4271, 1739, 3059, 0, 313, 0, 0, 899, 476, 0, 0, + 1408, 3778, 3718, 3003, 1111, 3592, 523, 0, 0, 560, 0, 1826, 0, 0, 0, + 0, 4391, 0, 108, 0, 0, 1000, 1585, 2184, 3598, 2591, 0, 0, 0, 2440, 0, + 0, 61, 0, 1183, 0, 3010, 770, 0, 48, 1995, 1049, 0, 3545, 1637, 1497, + 439, 1028, 765, 0, 2189, 0, 0, 0, 0, 3564, 2136, 0, 1164, 618, 0, 0, + 3697, 1048, 0, 0, 0, 0, 0, 2079, 3237, 926, 0, 0, 0, 0, 4094, 0, 1088, + 0, 0, 0, 0, 1759, 0, 0, 0, 0, 556, 1148, 4075, 37, 2306, 0, 1471, 0, + 3960, 2892, 3941, 1380, 0, 0, 2220, 0, 109, 0, 2195, 1862, 2434, 606, + 0, 1470, 3689, 3828, 551, 0, 455, 0, 3387, 0, 1234, 0, 2991, 0, 0, 0, + 0, 3550, 2421, 0, 0, 0, 0, 0, 0, 3909, 0, 0, 0, 2990, 0, 0, 0, 360, + 865, 0, 4353, 0, 0, 327, 1840, 0, 3632, 1611, 0, 2150, 2033, 0, 0, 576, + 0, 3467, 3689, 3824, 1718, 498, 1013, 0, 1517, 4370, 0, 0, 425, 1241, + 1250, 0, 2605, 588, 0, 3811, 1003, 2662, 0, 0, 2122, 0, 1347, 0, 836, + 2520, 3652, 0, 4344, 4513, 0, 0, 4233, 0, 834, 0, 0, 0, 0, 0, 1473, 0, + 1040, 0, 0, 0, 3042, 0, 0, 3810, 2114, 0, 1001, 4360, 0, 2967, 2163, 0, + 0, 0, 0, 31, 0, 3237, 0, 0, 3264, 0, 1494, 3098, 0, 2333, 0, 3318, + 3187, 1168, 0, 1836, 227, 4509, 347, 0, 4216, 0, 410, 624, 384, 2523, + 2408, 1203, 3917, 0, 4039, 2009, 0, 2375, 2523, 0, 0, 0, 962, 0, 0, + 4354, 0, 3950, 2159, 2068, 1846, 706, 0, 0, 0, 4183, 213, 0, 1492, + 2533, 0, 0, 0, 0, 0, 0, 0, 2830, 0, 951, 0, 1724, 1734, 741, 4100, 0, + 0, 0, 513, 0, 0, 4218, 0, 0, 2678, 1214, 1750, 640, 0, 0, 0, 0, 0, 0, + 1023, 0, 239, 0, 2145, 2066, 1791, 0, 147, 2084, 2897, 3270, 0, 2568, + 615, 0, 0, 1549, 4182, 0, 0, 0, 0, 0, 873, 807, 1999, 4378, 0, 1032, 0, + 0, 1251, 671, 0, 4368, 3166, 0, 0, 0, 1618, 0, 4142, 3890, 2587, 0, + 994, 0, 0, 0, 0, 1623, 1204, 572, 1299, 0, 3406, 0, 141, 3557, 0, 3266, + 0, 2936, 0, 1280, 0, 4298, 0, 0, 0, 0, 1450, 10, 4442, 658, 0, 0, 0, + 47, 344, 0, 0, 0, 0, 0, 3103, 0, 0, 0, 0, 0, 1288, 0, 1312, 0, 1729, + 1822, 0, 0, 0, 0, 0, 0, 3495, 477, 0, 0, 1456, 362, 0, 2390, 4571, + 1068, 0, 0, 3958, 1862, 1275, 0, 0, 2197, 3707, 3851, 1821, 0, 4398, + 565, 0, 1592, 3356, 0, 0, 1449, 1752, 0, 0, 0, 0, 3297, 0, 0, 0, 288, + 1484, 0, 0, 0, 0, 0, 495, 3725, 0, 0, 0, 1154, 525, 385, 4490, 0, 0, + 2089, 0, 0, 0, 4567, 3296, 523, 0, 3480, 468, 600, 0, 0, 0, 0, 0, 0, 0, + 0, 2792, 670, 0, 89, 3833, 2297, 0, 0, 0, 0, 4496, 1546, 0, 1594, 0, 0, + 0, 2303, 1950, 2808, 0, 899, 0, 3940, 2347, 0, 3065, 1798, 0, 1392, + 3304, 0, 4143, 2499, 2037, 1793, 0, 0, 0, 3478, 1774, 0, 4214, 0, 1502, + 1086, 0, 0, 2232, 2730, 2513, 0, 0, 1095, 0, 1480, 1316, 1620, 889, 0, + 4459, 1326, 1440, 1246, 2509, 0, 0, 321, 1450, 2845, 0, 1040, 0, 0, + 898, 1612, 1366, 0, 589, 0, 2084, 738, 2634, 0, 1332, 2533, 3867, 1956, + 0, 627, 0, 2628, 1041, 1644, 1204, 0, 0, 0, 2135, 0, 0, 4446, 3467, 0, + 401, 0, 0, 0, 1380, 0, 3298, 0, 1991, 3715, 4383, 0, 0, 0, 4413, 2256, + 0, 0, 3913, 0, 0, 4201, 3080, 3458, 2459, 1006, 3915, 0, 3775, 0, 102, + 3601, 664, 0, 51, 0, 0, 1147, 4198, 0, 543, 0, 4571, 4460, 0, 0, 0, + 1674, 359, 4493, 0, 0, 0, 0, 1957, 0, 2706, 0, 0, 2630, 473, 3918, + 2485, 0, 0, 1314, 0, 2086, 2977, 0, 1816, 584, 0, 1110, 1391, 0, 0, + 2001, 1709, 2445, 0, 0, 864, 1848, 2392, 3824, 754, 0, 0, 0, 2308, 0, + 0, 644, 3700, 0, 1303, 0, 0, 1255, 0, 0, 0, 3224, 0, 1727, 1528, 0, + 2702, 3122, 3815, 4454, 1674, 0, 0, 1479, 2293, 0, 0, 0, 2575, 950, + 1784, 0, 2415, 0, 3908, 3869, 1685, 0, 0, 4401, 1719, 3917, 0, 0, 0, + 388, 3113, 2530, 0, 3860, 1424, 3688, 0, 3475, 2585, 4093, 2667, 0, 0, + 0, 0, 4220, 780, 4026, 15, 0, 386, 0, 0, 4116, 545, 0, 0, 2190, 2144, + 1199, 88, 4008, 80, 0, 0, 0, 1933, 796, 2108, 1181, 2460, 4306, 547, + 2935, 4073, 0, 0, 0, 28, 2327, 1291, 3644, 2142, 1338, 0, 1276, 2309, + 0, 3903, 4551, 0, 0, 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, 806, 308, 0, 2404, + 0, 0, 0, 896, 3457, 0, 0, 0, 0, 1748, 4170, 0, 3850, 0, 2045, 4282, + 675, 0, 0, 0, 3089, 0, 0, 3880, 0, 43, 3705, 3474, 0, 2435, 0, 2999, 0, + 0, 2438, 629, 1082, 0, 2046, 3271, 329, 0, 0, 0, 0, 0, 0, 2268, 1678, + 0, 3364, 2471, 0, 555, 4333, 2528, 0, 3397, 1403, 0, 3000, 1431, 1449, + 0, 1940, 0, 2748, 535, 0, 4322, 1815, 1925, 2252, 1160, 2063, 0, 0, + 2325, 0, 0, 0, 1839, 0, 2430, 0, 3954, 1420, 0, 0, 2075, 3449, 2928, + 179, 0, 2146, 0, 0, 0, 0, 624, 0, 1300, 459, 0, 457, 0, 1624, 2003, 0, + 0, 2071, 1465, 1402, 0, 3982, 0, 2724, 3912, 1716, 4294, 0, 0, 2240, + 1224, 1295, 420, 0, 0, 1701, 1593, 0, 0, 2822, 4325, 3845, 3580, 0, 0, + 0, 3883, 0, 2255, 635, 0, 0, 0, 1728, 0, 3083, 0, 559, 468, 0, 0, 4185, + 887, 0, 123, 2042, 207, 4026, 0, 799, 0, 67, 4225, 0, 0, 0, 0, 3483, + 2066, 0, 1212, 1269, 2722, 4082, 0, 1261, 0, 0, 2644, 3721, 0, 334, 0, + 0, 0, 0, 3273, 669, 0, 1348, 0, 0, 2819, 809, 0, 0, 2926, 4365, 0, 0, + 0, 0, 3948, 0, 0, 3762, 4449, 3815, 0, 361, 4135, 1119, 0, 3828, 0, + 221, 1019, 3455, 4136, 0, 0, 3347, 2545, 3099, 368, 3242, 0, 2445, + 4224, 862, 0, 0, 2469, 67, 530, 1476, 0, 3278, 3894, 0, 2402, 0, 363, + 0, 892, 3105, 0, 1498, 775, 0, 0, 1470, 1827, 0, 0, 0, 167, 3946, 0, 0, + 0, 111, 919, 0, 0, 1621, 0, 0, 0, 0, 3196, 3335, 1094, 0, 3879, 667, 0, + 2433, 4342, 0, 0, 948, 0, 0, 4546, 2936, 0, 2630, 0, 0, 0, 0, 0, 3247, + 719, 4570, 1393, 1228, 0, 0, 0, 4431, 4227, 0, 0, 0, 0, 1676, 0, 1211, + 4195, 0, 0, 0, 3958, 0, 225, 31, 0, 0, 0, 3305, 0, 0, 0, 2398, 0, 1246, + 4277, 0, 0, 4497, 0, 0, 3499, 0, 0, 0, 0, 1394, 565, 4060, 0, 4103, 0, + 3960, 2348, 415, 3687, 0, 4233, 0, 0, 1970, 0, 2851, 0, 253, 0, 0, + 1241, 3798, 0, 0, 0, 887, 928, 0, 0, 0, 0, 0, 4044, 0, 0, 2384, 1566, + 3534, 4265, 2239, 651, 0, 723, 0, 1843, 4252, 315, 0, 598, 1152, 0, + 748, 671, 4132, 71, 1664, 2253, 0, 0, 3536, 0, 0, 1373, 0, 0, 1135, 0, + 614, 2996, 4176, 4494, 0, 0, 0, 0, 1266, 1066, 2040, 3214, 285, 0, 939, + 2776, 0, 4165, 2155, 1463, 0, 2425, 2233, 1919, 0, 4025, 2289, 1432, + 4105, 0, 0, 4206, 2830, 792, 4328, 889, 4564, 0, 0, 0, 150, 0, 3472, 0, + 0, 0, 1196, 32, 4344, 2043, 3440, 1131, 526, 0, 1874, 1175, 637, 0, + 3467, 0, 0, 0, 1097, 804, 0, 0, 1498, 0, 1183, 534, 2557, 4437, 0, 0, + 0, 4011, 1605, 2411, 1726, 2572, 1121, 1586, 0, 0, 1431, 0, 0, 0, 2343, + 3469, 286, 0, 1299, 2353, 0, 0, 612, 2810, 2358, 0, 2256, 0, 556, 38, + 2074, 3295, 220, 4360, 2152, 486, 639, 87, 0, 0, 3278, 0, 0, 4081, 0, + 0, 2310, 3650, 530, 0, 2653, 1568, 0, 1521, 0, 2566, 1654, 3427, 3371, + 1002, 0, 1704, 1124, 593, 3384, 542, 0, 0, 2815, 0, 1068, 0, 0, 196, + 2485, 1523, 0, 485, 177, 1419, 37, 1541, 947, 0, 0, 0, 0, 0, 2206, 699, + 17, 2046, 0, 2354, 484, 1330, 3149, 4023, 0, 0, 1076, 0, 937, 3380, 0, + 3048, 0, 0, 4124, 184, 0, 650, 2351, 3996, 4094, 107, 0, 3708, 532, + 4104, 1499, 0, 0, 0, 0, 247, 559, 0, 1948, 0, 1656, 0, 0, 3342, 1858, + 546, 1797, 1889, 0, 0, 0, 1376, 0, 2225, 1617, 4255, 144, 4565, 1171, + 0, 0, 324, 550, 0, 0, 0, 0, 0, 0, 0, 2931, 827, 2345, 0, 3283, 2988, 0, + 1451, 840, 3747, 0, 3877, 0, 2398, 892, 0, 3558, 1949, 242, 506, 464, + 1738, 0, 1878, 220, 3627, 686, 683, 0, 339, 938, 878, 3736, 0, 3494, 0, + 1031, 3790, 0, 784, 2497, 3172, 0, 1234, 0, 1860, 0, 926, 487, 1355, 0, + 0, 931, 0, 1729, 0, 0, 185, 1311, 1134, 1887, 1152, 554, 0, 362, 714, + 1864, 2680, 2566, 0, 0, 1536, 153, 0, 1379, 2011, 2346, 548, 1009, 0, + 1696, 4459, 0, 1564, 0, 893, 0, 0, 337, 1503, 3224, 0, 1406, 2399, 0, + 0, 358, 0, 3095, 3576, 0, 0, 0, 0, 239, 0, 2705, 3344, 0, 0, 1135, + 1895, 1687, 2134, 2286, 0, 410, 1905, 35, 0, 0, 0, 0, 0, 82, 0, 4472, + 2399, 2200, 0, 4117, 1371, 1433, 0, 1084, 1605, 3732, 2091, 4484, 1714, + 1725, 0, 2578, 3154, 2785, 0, 2488, 0, 0, 558, 4210, 3785, 0, 3603, 0, + 891, 3063, 163, 4442, 891, 2881, 932, 0, 393, 0, 2705, 0, 2003, 0, 0, + 0, 1027, 0, 2402, 1792, 2484, 1685, 0, 2959, 0, 1516, 1856, 0, 0, 0, + 2970, 18, 1264, 0, 443, 2058, 4108, 3660, 1285, 0, 0, 665, 2883, 0, + 4170, 647, 4193, 0, 0, 0, 0, 0, 0, 3271, 3986, 0, 123, 1092, 0, 1349, + 0, 345, 2034, 333, 560, 0, 3620, 2414, 327, 2730, 1265, 1684, 895, + 3481, 2358, 0, 0, 4053, 820, 0, 4105, 884, 878, 3854, 609, 0, 0, 1831, + 0, 0, 3334, 0, 0, 0, 1643, 1874, 0, 213, 1736, 0, 1298, 0, 0, 2365, 0, + 2161, 0, 0, 0, 2565, 4424, 3617, 541, 0, 0, 377, 0, 3596, 1299, 0, + 2886, 3013, 0, 0, 608, 590, 2582, 567, 3241, 1699, 0, 0, 4086, 156, + 1293, 1386, 0, 262, 1581, 4107, 1844, 2130, 1611, 773, 4571, 0, 0, + 3029, 2515, 0, 952, 624, 1887, 6, 906, 0, 0, 1402, 645, 0, 1562, 4078, + 1430, 0, 2882, 1354, 4455, 349, 0, 2969, 0, 715, 0, 2375, 0, 0, 0, 0, + 56, 0, 852, 0, 0, 530, 3625, 0, 3152, 1233, 4547, 0, 3880, 6, 821, 0, + 479, 905, 1721, 1417, 0, 197, 0, 0, 0, 1475, 0, 3634, 0, 0, 0, 0, 721, + 860, 2195, 133, 830, 1907, 4355, 3547, 3521, 0, 0, 2970, 229, 4509, + 934, 796, 0, 443, 185, 0, 0, 1198, 1010, 0, 3196, 1852, 4368, 3413, + 3810, 38, 1274, 0, 266, 386, 441, 0, 955, 0, 249, 177, 75, 0, 0, 2126, + 3969, 0, 705, 0, 365, 0, 0, 2028, 3081, 0, 4070, 0, 806, 4148, 353, + 1662, 3552, 3470, 1090, 657, 0, 2419, 3816, 0, 0, 3206, 0, 1510, 1947, + 0, 0, 898, 0, 2300, 0, 1215, 0, 2649, 2370, 1057, 0, 588, 343, 0, 676, + 25, 0, 0, 0, 2136, 3086, 0, 743, 0, 3387, 0, 0, 0, 4183, 0, 0, 0, 0, + 1222, 2162, 3066, 0, 0, 3720, 0, 0, 707, 4153, 454, 445, 2999, 0, 1379, + 0, 2494, 0, 3340, 0, 208, 820, 1701, 4472, 434, 260, 0, 0, 1852, 0, 0, + 0, 0, 220, 790, 0, 0, 1024, 0, 0, 811, 0, 0, 3951, 0, 4307, 3446, 0, + 1220, 3944, 624, 3937, 2947, 1531, 4380, 3696, 2831, 2210, 1038, 623, + 3497, 1187, 0, 696, 4497, 1176, 596, 0, 0, 1820, 0, 1175, 4501, 0, 0, + 2061, 0, 3708, 1582, 2371, 3866, 0, 0, 79, 794, 3135, 0, 2246, 1223, + 154, 0, 941, 1774, 157, 716, 0, 1346, 0, 4411, 3364, 1478, 2230, 1563, + 2293, 1819, 788, 1700, 155, 108, 44, 0, 3613, 449, 0, 0, 3772, 170, + 2889, 1145, 0, 2388, 0, 0, 0, 3739, 0, 1953, 0, 312, 1006, 4495, 0, 0, + 1004, 1936, 2417, 4432, 842, 0, 2430, 0, 1594, 0, 0, 14, 0, 0, 2195, 0, + 0, 4108, 3124, 3136, 0, 0, 0, 0, 3905, 357, 756, 3113, 3589, 0, 1606, + 3438, 1013, 0, 1661, 128, 4228, 0, 1348, 1306, 0, 193, 636, 2160, 3215, + 4150, 0, 3369, 2408, 0, 3674, 2995, 0, 594, 4276, 1379, 0, 2660, 0, + 1255, 773, 689, 4449, 2292, 3161, 607, 0, 2120, 587, 0, 0, 265, 0, 0, + 0, 1140, 3562, 0, 0, 2053, 1788, 0, 2530, 457, 1481, 3006, 283, 0, 0, + 1989, 670, 0, 0, 2170, 1477, 4068, 2586, 2447, 0, 2631, 1309, 2087, + 2322, 4121, 0, 1824, 0, 0, 2845, 0, 451, 0, 0, 1514, 3756, 0, 0, 0, + 1278, 1967, 1860, 0, 3379, 798, 3191, 2335, 392, 1595, 522, 2029, 0, 0, + 368, 0, 0, 2019, 411, 1136, 241, 0, 0, 0, 0, 0, 0, 0, 0, 288, 4280, 0, + 508, 701, 0, 0, 4527, 0, 1193, 1951, 1577, 2744, 0, 3953, 0, 0, 0, + 3924, 0, 4156, 0, 1095, 53, 1380, 3147, 0, 1969, 0, 0, 0, 66, 880, + 4451, 2133, 4571, 3317, 0, 0, 4144, 0, 1908, 1370, 0, 4106, 0, 0, 0, 0, + 3380, 0, 4474, 1457, 664, 432, 1304, 0, 1982, 806, 0, 2434, 0, 0, 0, + 566, 0, 169, 3834, 0, 4472, 572, 2975, 2908, 0, 2112, 0, 2410, 1189, 0, + 1522, 0, 83, 1762, 872, 0, 87, 3289, 1699, 0, 4002, 413, 4259, 1778, 0, + 0, 0, 4423, 1639, 4189, 1941, 0, 0, 0, 110, 0, 3907, 2569, 0, 0, 1163, + 0, 0, 0, 2207, 2297, 2128, 1514, 0, 1211, 0, 3831, 0, 0, 3719, 3892, + 2261, 0, 1243, 0, 0, 330, 2990, 0, 757, 0, 0, 2918, 1822, 0, 0, 401, + 1008, 782, 934, 2522, 0, 0, 1338, 1148, 0, 0, 3051, 0, 262, 1452, 103, + 0, 755, 0, 0, 689, 1382, 300, 0, 0, 0, 0, 924, 256, 2291, 1621, 2337, + 2592, 0, 2448, 183, 2584, 0, 1515, 4062, 404, 0, 1111, 4425, 0, 0, + 2894, 0, 0, 3137, 0, 0, 0, 2039, 287, 0, 0, 4130, 4522, 1779, 0, 0, 0, + 507, 4241, 0, 3439, 314, 1890, 0, 207, 0, 4371, 0, 165, 0, 831, 0, + 1376, 3418, 1992, 618, 2899, 764, 0, 0, 673, 346, 0, 0, 1079, 989, + 3310, 0, 0, 576, 4131, 1024, 0, 138, 977, 185, 1730, 450, 0, 0, 0, + 4118, 425, 2249, 3295, 0, 1001, 0, 0, 0, 3945, 1156, 0, 1716, 0, 1706, + 1638, 3503, 0, 0, 0, 846, 2395, 1228, 0, 2238, 880, 3836, 0, 0, 0, + 3963, 0, 0, 974, 0, 3635, 1295, 0, 2760, 687, 3754, 24, 4494, 313, + 2814, 0, 140, 410, 0, 899, 271, 2034, 0, 0, 663, 1174, 1200, 509, 395, + 1780, 0, 2002, 2746, 2185, 0, 195, 0, 0, 0, 0, 0, 3255, 0, 0, 0, 0, + 1051, 0, 1354, 0, 2197, 0, 34, 0, 0, 3821, 0, 0, 0, 0, 3585, 2865, 0, + 144, 2152, 2237, 1479, 1760, 238, 0, 458, 200, 609, 1941, 540, 0, 620, + 0, 489, 1875, 1178, 1149, 4376, 2933, 0, 1856, 2998, 3541, 276, 1942, + 1996, 0, 3894, 1539, 90, 0, 0, 0, 752, 0, 0, 803, 0, 4332, 0, 0, 804, + 1525, 701, 0, 763, 3174, 1902, 0, 626, 3469, 0, 0, 3151, 1585, 0, 0, + 163, 0, 474, 2644, 0, 1259, 2043, 0, 1932, 513, 323, 0, 0, 2205, 3636, + 4275, 3650, 1020, 73, 2189, 0, 2848, 724, 0, 0, 684, 0, 625, 1867, 867, + 4435, 0, 1383, 0, 0, 30, 1265, 3329, 0, 958, 1380, 965, 0, 0, 0, 3010, + 0, 3590, 0, 80, 638, 0, 2056, 0, 1062, 1923, 0, 1400, 970, 1163, 2802, + 363, 4340, 3853, 2718, 6, 1772, 1594, 0, 2512, 692, 2305, 328, 72, + 3371, 133, 2729, 503, 0, 0, 0, 0, 1816, 4319, 2285, 264, 3409, 458, + 4058, 1994, 3412, 0, 2318, 1209, 0, 119, 76, 0, 0, 0, 2629, 1969, 530, + 4327, 0, 2247, 0, 0, 0, 999, 4169, 0, 2040, 0, 518, 0, 934, 0, 1803, 0, + 0, 1782, 0, 0, 3814, 40, 2562, 1756, 4511, 3597, 1058, 0, 1983, 4472, + 723, 2866, 0, 1773, 3817, 172, 0, 0, 3119, 918, 646, 822, 0, 390, 0, + 1756, 0, 2208, 0, 4271, 2810, 80, 1249, 0, 1512, 0, 0, 3530, 0, 1325, + 578, 1238, 2979, 3714, 0, 0, 2587, 1849, 1200, 3996, 2045, 1279, 0, 0, + 353, 0, 712, 18, 0, 0, 1598, 1673, 1227, 0, 0, 0, 1603, 4017, 0, 893, + 4216, 2048, 2466, 0, 1121, 0, 571, 3242, 1929, 1203, 4285, 1669, 0, + 4344, 4061, 0, 2220, 0, 4211, 4070, 599, 0, 0, 3466, 3175, 0, 0, 2168, + 2410, 3863, 4, 2479, 217, 2673, 1783, 2294, 4085, 0, 109, 0, 3131, 0, + 1744, 3679, 0, 3613, 0, 0, 757, 3400, 59, 3072, 0, 1091, 432, 0, 356, + 2399, 2031, 81, 1614, 383, 1659, 0, 2694, 0, 2218, 1558, 0, 0, 0, 623, + 3248, 102, 1057, 0, 1612, 0, 201, 0, 796, 19, 2513, 0, 0, 490, 2901, + 396, 0, 0, 742, 2383, 3053, 85, 0, 4504, 743, 3757, 13, 328, 0, 2485, + 1419, 0, 0, 2621, 1981, 0, 934, 0, 1081, 0, 0, 735, 0, 0, 0, 1622, 0, + 0, 252, 0, 0, 2222, 0, 0, 655, 1912, 0, 0, 0, 4105, 0, 3236, 4412, + 1627, 1388, 4211, 0, 0, 1526, 1784, 892, 2843, 4195, 0, 0, 0, 578, 710, + 0, 2506, 0, 0, 0, 3075, 2753, 0, 0, 448, 3916, 1939, 0, 1751, 0, 0, 0, + 2009, 0, 96, 4257, 1033, 678, 1685, 0, 0, 2960, 0, 0, 1941, 2215, 117, + 1301, 0, 0, 3806, 0, 0, 3061, 0, 942, 667, 0, 0, 2380, 2154, 647, 0, 0, + 1070, 4496, 0, 3270, 1712, 0, 4436, 0, 0, 1855, 299, 0, 3156, 408, + 2773, 0, 0, 2803, 0, 1009, 0, 2447, 0, 3915, 1414, 4367, 2648, 0, 56, + 0, 456, 4297, 1730, 0, 1746, 0, 1803, 261, 0, 2132, 1495, 0, 1853, 0, + 0, 3651, 1429, 4264, 2360, 1785, 4130, 1488, 624, 4550, 4287, 713, 396, + 3085, 3959, 2609, 1375, 301, 2165, 796, 0, 0, 0, 3761, 3815, 2984, 0, + 0, 853, 0, 2174, 3323, 969, 231, 922, 0, 0, 707, 2036, 0, 951, 0, 2088, + 2129, 3954, 4241, 1988, 1584, 744, 948, 1525, 956, 263, 149, 1370, 497, + 3452, 0, 3159, 0, 0, 1582, 1131, 3481, 1546, 3777, 3252, 0, 3776, 699, + 0, 0, 4090, 1220, 0, 1309, 0, 1640, 0, 1922, 2236, 2497, 0, 964, 0, + 485, 873, 0, 2818, 0, 0, 0, 1564, 48, 1156, 1181, 178, 17, 0, 1098, + 4254, 0, 0, 0, 733, 4412, 3857, 0, 1529, 0, 2604, 0, 752, 0, 3717, 0, + 2247, 0, 718, 188, 3402, 833, 0, 3734, 0, 986, 4217, 0, 0, 0, 3450, + 1213, 0, 1185, 2605, 0, 2457, 1195, 4487, 3493, 0, 1628, 0, 437, 3372, + 0, 357, 2593, 3050, 1812, 3884, 0, 0, 2319, 4303, 0, 2524, 403, 0, 0, + 2182, 656, 0, 655, 774, 3919, 0, 1954, 1478, 1088, 196, 226, 0, 4179, + 0, 0, 2402, 3940, 1576, 1765, 556, 0, 0, 0, 0, 0, 849, 837, 0, 546, + 2396, 0, 1675, 0, 0, 2044, 0, 1582, 324, 2070, 0, 0, 777, 600, 0, 1042, + 2064, 28, 871, 0, 3814, 827, 0, 3803, 2057, 0, 3294, 2760, 652, 0, + 2987, 268, 544, 463, 1945, 0, 174, 0, 0, 2027, 275, 4251, 0, 3996, + 1030, 144, 2234, 1229, 580, 2394, 1156, 0, 0, 0, 3661, 1642, 0, 0, 35, + 0, 809, 978, 0, 0, 703, 813, 2387, 0, 637, 0, 0, 1185, 1723, 0, 2329, + 1040, 3978, 879, 0, 0, 0, 3842, 3161, 0, 4368, 0, 53, 0, 3356, 203, + 159, 3120, 1848, 1339, 1155, 787, 661, 3396, 974, 750, 2778, 0, 0, 136, + 0, 0, 4197, 157, 0, 0, 0, 0, 1818, 251, 2491, 3772, 0, 1345, 2096, 815, + 0, 0, 3211, 2277, 0, 1756, 1705, 4200, 2165, 0, 2025, 1716, 2766, 1562, + 0, 1469, 1726, 2383, 412, 233, 0, 2101, 263, 0, 1013, 1104, 0, 520, + 2619, 266, 1325, 0, 1486, 4396, 1495, 2887, 0, 0, 0, 3461, 0, 0, 0, 0, + 0, 0, 981, 3351, 148, 0, 0, 1804, 0, 0, 3039, 593, 0, 1545, 0, 2323, 0, + 3429, 1689, 1974, 308, 0, 0, 0, 0, 708, 1611, 1685, 1546, 0, 0, 0, 983, + 0, 1284, 0, 0, 2744, 0, 1697, 2061, 1561, 2, 0, 230, 0, 961, 0, 0, + 2400, 1583, 3664, 0, 0, 662, 0, 4252, 0, 3851, 1924, 1611, 749, 0, 0, + 2492, 0, 2461, 0, 526, 2526, 4, 4421, 1046, 0, 76, 4486, 0, 0, 0, 0, + 402, 310, 1851, 0, 768, 946, 1123, 1619, 692, 2021, 496, 2156, 2953, + 1973, 0, 0, 0, 2282, 0, 0, 3199, 1428, 0, 0, 2517, 0, 0, 524, 2534, + 4323, 2550, 0, 1077, 523, 0, 968, 0, 2923, 0, 0, 4058, 0, 312, 1638, + 3977, 4188, 3540, 2457, 0, 1266, 2023, 0, 1109, 0, 0, 374, 703, 212, 0, + 0, 353, 0, 393, 0, 0, 0, 0, 3141, 0, 1018, 1834, 0, 1310, 847, 0, 1852, + 0, 0, 0, 0, 0, 3457, 0, 0, 4235, 496, 3606, 2068, 0, 1364, 2368, 4044, + 0, 4053, 4357, 2562, 0, 3966, 1574, 2563, 0, 1096, 586, 0, 1363, 348, + 1799, 2334, 0, 1896, 0, 0, 0, 269, 147, 66, 1989, 420, 1770, 1320, 40, + 145, 0, 0, 1989, 780, 2146, 0, 34, 0, 1641, 0, 0, 1441, 656, 0, 3687, + 2618, 194, 1003, 4464, 1002, 3696, 1182, 1489, 0, 3082, 122, 1200, + 1225, 0, 1020, 0, 212, 0, 1571, 0, 0, 0, 3655, 0, 0, 786, 201, 1123, + 1410, 0, 1721, 3007, 14, 0, 2905, 805, 0, 0, 1391, 0, 0, 0, 1095, 3990, + 3241, 2310, 0, 3083, 0, 3538, 4414, 3027, 0, 0, 0, 4344, 0, 0, 2576, + 4572, 2427, 0, 0, 0, 2155, 0, 1085, 2425, 0, 0, 1918, 0, 1808, 564, + 4401, 4255, 557, 401, 3667, 2574, 2067, 0, 1738, 3622, 2265, 0, 0, + 2597, 0, 1932, 680, 331, 0, 0, 3656, 2620, 1607, 2507, 1598, 1814, + 2052, 0, 1230, 24, 175, 0, 2040, 2437, 925, 1398, 4414, 0, 0, 245, + 1453, 2389, 695, 991, 2947, 2074, 0, 949, 0, 0, 3646, 1700, 0, 3708, + 3165, 2216, 3551, 0, 0, 832, 2156, 48, 0, 630, 0, 994, 0, 0, 2157, + 4262, 384, 2055, 2999, 0, 0, 1666, 0, 0, 4361, 1326, 882, 0, 672, 730, + 4454, 2013, 0, 1017, 3375, 3795, 0, 1600, 3459, 3600, 2107, 1926, 712, + 12, 2950, 2014, 435, 844, 0, 2004, 0, 0, 636, 0, 0, 2756, 4568, 0, 502, + 1023, 2854, 0, 1247, 1165, 1437, 0, 2574, 0, 2650, 0, 2041, 0, 1443, 0, + 0, 0, 1627, 1057, 0, 269, 0, 1920, 2309, 2124, 0, 4058, 975, 3215, + 4226, 1434, 0, 0, 3977, 0, 889, 1403, 0, 458, 0, 1756, 417, 847, 2454, + 4237, 3904, 0, 188, 0, 769, 0, 1168, 0, 3939, 4182, 0, 0, 160, 0, 0, 0 +}; + +static size_t +keysym_name_hash_f(const char *key, const char *T) +{ + size_t sum = 0; + for (size_t i = 0; key[i] != '\0'; i++) + sum += T[i % 27] * key[i]; + return sum % 4573; +} + +static size_t +keysym_name_perfect_hash(const char *key) +{ + return ( + keysym_name_G[keysym_name_hash_f(key, "SkOf3HuNA56PIk6hejYLO1rtnca")] + + keysym_name_G[keysym_name_hash_f(key, "vRGsBGmF6OJG3WFF6jLu5nTcL4c")] + ) % 4573; +} + + struct name_keysym { xkb_keysym_t keysym; uint32_t offset; }; static const struct name_keysym name_to_keysym[] = { - { 0x00000030, 0 }, /* 0 */ - { 0x00000031, 2 }, /* 1 */ - { 0x00000032, 4 }, /* 2 */ - { 0x00000033, 6 }, /* 3 */ - { 0x0000fd10, 8 }, /* 3270_AltCursor */ - { 0x0000fd0e, 23 }, /* 3270_Attn */ - { 0x0000fd05, 33 }, /* 3270_BackTab */ - { 0x0000fd19, 46 }, /* 3270_ChangeScreen */ - { 0x0000fd15, 64 }, /* 3270_Copy */ - { 0x0000fd0f, 74 }, /* 3270_CursorBlink */ - { 0x0000fd1c, 91 }, /* 3270_CursorSelect */ - { 0x0000fd1a, 109 }, /* 3270_DeleteWord */ - { 0x0000fd01, 125 }, /* 3270_Duplicate */ - { 0x0000fd1e, 140 }, /* 3270_Enter */ - { 0x0000fd06, 151 }, /* 3270_EraseEOF */ - { 0x0000fd07, 165 }, /* 3270_EraseInput */ - { 0x0000fd1b, 181 }, /* 3270_ExSelect */ - { 0x0000fd02, 195 }, /* 3270_FieldMark */ - { 0x0000fd13, 210 }, /* 3270_Ident */ - { 0x0000fd12, 221 }, /* 3270_Jump */ - { 0x0000fd11, 231 }, /* 3270_KeyClick */ - { 0x0000fd04, 245 }, /* 3270_Left2 */ - { 0x0000fd0a, 256 }, /* 3270_PA1 */ - { 0x0000fd0b, 265 }, /* 3270_PA2 */ - { 0x0000fd0c, 274 }, /* 3270_PA3 */ - { 0x0000fd16, 283 }, /* 3270_Play */ - { 0x0000fd1d, 293 }, /* 3270_PrintScreen */ - { 0x0000fd09, 310 }, /* 3270_Quit */ - { 0x0000fd18, 320 }, /* 3270_Record */ - { 0x0000fd08, 332 }, /* 3270_Reset */ - { 0x0000fd03, 343 }, /* 3270_Right2 */ - { 0x0000fd14, 355 }, /* 3270_Rule */ - { 0x0000fd17, 365 }, /* 3270_Setup */ - { 0x0000fd0d, 376 }, /* 3270_Test */ - { 0x00000034, 386 }, /* 4 */ - { 0x00000035, 388 }, /* 5 */ - { 0x00000036, 390 }, /* 6 */ - { 0x00000037, 392 }, /* 7 */ - { 0x00000038, 394 }, /* 8 */ - { 0x00000039, 396 }, /* 9 */ - { 0x00000041, 398 }, /* A */ - { 0x000000c6, 848 }, /* AE */ - { 0x000000c1, 402 }, /* Aacute */ - { 0x01001ea0, 416 }, /* Abelowdot */ - { 0x000001c3, 445 }, /* Abreve */ - { 0x01001eae, 459 }, /* Abreveacute */ - { 0x01001eb6, 483 }, /* Abrevebelowdot */ - { 0x01001eb0, 513 }, /* Abrevegrave */ - { 0x01001eb2, 537 }, /* Abrevehook */ - { 0x01001eb4, 559 }, /* Abrevetilde */ - { 0x0000fe70, 583 }, /* AccessX_Enable */ - { 0x0000fe71, 598 }, /* AccessX_Feedback_Enable */ - { 0x000000c2, 622 }, /* Acircumflex */ - { 0x01001ea4, 646 }, /* Acircumflexacute */ - { 0x01001eac, 680 }, /* Acircumflexbelowdot */ - { 0x01001ea6, 720 }, /* Acircumflexgrave */ - { 0x01001ea8, 754 }, /* Acircumflexhook */ - { 0x01001eaa, 786 }, /* Acircumflextilde */ - { 0x000000c4, 826 }, /* Adiaeresis */ - { 0x000000c0, 854 }, /* Agrave */ - { 0x01001ea2, 868 }, /* Ahook */ - { 0x0000ffe9, 880 }, /* Alt_L */ - { 0x0000ffea, 886 }, /* Alt_R */ - { 0x000003c0, 892 }, /* Amacron */ - { 0x000001a1, 918 }, /* Aogonek */ - { 0x01000660, 966 }, /* Arabic_0 */ - { 0x01000661, 975 }, /* Arabic_1 */ - { 0x01000662, 984 }, /* Arabic_2 */ - { 0x01000663, 993 }, /* Arabic_3 */ - { 0x01000664, 1002 }, /* Arabic_4 */ - { 0x01000665, 1011 }, /* Arabic_5 */ - { 0x01000666, 1020 }, /* Arabic_6 */ - { 0x01000667, 1029 }, /* Arabic_7 */ - { 0x01000668, 1038 }, /* Arabic_8 */ - { 0x01000669, 1047 }, /* Arabic_9 */ - { 0x000005d9, 1056 }, /* Arabic_ain */ - { 0x000005c7, 1067 }, /* Arabic_alef */ - { 0x000005e9, 1079 }, /* Arabic_alefmaksura */ - { 0x000005c8, 1098 }, /* Arabic_beh */ - { 0x000005ac, 1109 }, /* Arabic_comma */ - { 0x000005d6, 1122 }, /* Arabic_dad */ - { 0x000005cf, 1133 }, /* Arabic_dal */ - { 0x000005ef, 1144 }, /* Arabic_damma */ - { 0x000005ec, 1157 }, /* Arabic_dammatan */ - { 0x01000688, 1173 }, /* Arabic_ddal */ - { 0x010006cc, 1185 }, /* Arabic_farsi_yeh */ - { 0x000005ee, 1202 }, /* Arabic_fatha */ - { 0x000005eb, 1215 }, /* Arabic_fathatan */ - { 0x000005e1, 1231 }, /* Arabic_feh */ - { 0x010006d4, 1242 }, /* Arabic_fullstop */ - { 0x010006af, 1258 }, /* Arabic_gaf */ - { 0x000005da, 1269 }, /* Arabic_ghain */ - { 0x000005e7, 1282 }, /* Arabic_ha */ - { 0x000005cd, 1292 }, /* Arabic_hah */ - { 0x000005c1, 1303 }, /* Arabic_hamza */ - { 0x01000654, 1316 }, /* Arabic_hamza_above */ - { 0x01000655, 1335 }, /* Arabic_hamza_below */ - { 0x000005c3, 1354 }, /* Arabic_hamzaonalef */ - { 0x000005c4, 1373 }, /* Arabic_hamzaonwaw */ - { 0x000005c6, 1391 }, /* Arabic_hamzaonyeh */ - { 0x000005c5, 1409 }, /* Arabic_hamzaunderalef */ - { 0x000005e7, 1431 }, /* Arabic_heh */ - { 0x010006be, 1442 }, /* Arabic_heh_doachashmee */ - { 0x010006c1, 1465 }, /* Arabic_heh_goal */ - { 0x000005cc, 1481 }, /* Arabic_jeem */ - { 0x01000698, 1493 }, /* Arabic_jeh */ - { 0x000005e3, 1504 }, /* Arabic_kaf */ - { 0x000005f0, 1515 }, /* Arabic_kasra */ - { 0x000005ed, 1528 }, /* Arabic_kasratan */ - { 0x010006a9, 1544 }, /* Arabic_keheh */ - { 0x000005ce, 1557 }, /* Arabic_khah */ - { 0x000005e4, 1569 }, /* Arabic_lam */ - { 0x01000653, 1580 }, /* Arabic_madda_above */ - { 0x000005c2, 1599 }, /* Arabic_maddaonalef */ - { 0x000005e5, 1618 }, /* Arabic_meem */ - { 0x000005e6, 1630 }, /* Arabic_noon */ - { 0x010006ba, 1642 }, /* Arabic_noon_ghunna */ - { 0x0100067e, 1661 }, /* Arabic_peh */ - { 0x0100066a, 1672 }, /* Arabic_percent */ - { 0x000005e2, 1687 }, /* Arabic_qaf */ - { 0x000005bf, 1698 }, /* Arabic_question_mark */ - { 0x000005d1, 1719 }, /* Arabic_ra */ - { 0x01000691, 1729 }, /* Arabic_rreh */ - { 0x000005d5, 1741 }, /* Arabic_sad */ - { 0x000005d3, 1752 }, /* Arabic_seen */ - { 0x000005bb, 1764 }, /* Arabic_semicolon */ - { 0x000005f1, 1781 }, /* Arabic_shadda */ - { 0x000005d4, 1795 }, /* Arabic_sheen */ - { 0x000005f2, 1808 }, /* Arabic_sukun */ - { 0x01000670, 1821 }, /* Arabic_superscript_alef */ - { 0x0000ff7e, 1845 }, /* Arabic_switch */ - { 0x000005d7, 1859 }, /* Arabic_tah */ - { 0x000005e0, 1870 }, /* Arabic_tatweel */ - { 0x01000686, 1885 }, /* Arabic_tcheh */ - { 0x000005ca, 1898 }, /* Arabic_teh */ - { 0x000005c9, 1909 }, /* Arabic_tehmarbuta */ - { 0x000005d0, 1927 }, /* Arabic_thal */ - { 0x000005cb, 1939 }, /* Arabic_theh */ - { 0x01000679, 1951 }, /* Arabic_tteh */ - { 0x010006a4, 1963 }, /* Arabic_veh */ - { 0x000005e8, 1974 }, /* Arabic_waw */ - { 0x000005ea, 1985 }, /* Arabic_yeh */ - { 0x010006d2, 1996 }, /* Arabic_yeh_baree */ - { 0x000005d8, 2013 }, /* Arabic_zah */ - { 0x000005d2, 2024 }, /* Arabic_zain */ - { 0x000000c5, 2036 }, /* Aring */ - { 0x01000538, 2100 }, /* Armenian_AT */ - { 0x01000531, 2124 }, /* Armenian_AYB */ - { 0x01000532, 2150 }, /* Armenian_BEN */ - { 0x01000549, 2189 }, /* Armenian_CHA */ - { 0x01000534, 2215 }, /* Armenian_DA */ - { 0x01000541, 2239 }, /* Armenian_DZA */ - { 0x01000537, 2265 }, /* Armenian_E */ - { 0x01000556, 2303 }, /* Armenian_FE */ - { 0x01000542, 2346 }, /* Armenian_GHAT */ - { 0x01000533, 2374 }, /* Armenian_GIM */ - { 0x01000545, 2400 }, /* Armenian_HI */ - { 0x01000540, 2424 }, /* Armenian_HO */ - { 0x0100053b, 2464 }, /* Armenian_INI */ - { 0x0100054b, 2490 }, /* Armenian_JE */ - { 0x01000554, 2514 }, /* Armenian_KE */ - { 0x0100053f, 2538 }, /* Armenian_KEN */ - { 0x0100053d, 2564 }, /* Armenian_KHE */ - { 0x0100053c, 2611 }, /* Armenian_LYUN */ - { 0x01000544, 2639 }, /* Armenian_MEN */ - { 0x01000546, 2665 }, /* Armenian_NU */ - { 0x01000555, 2689 }, /* Armenian_O */ - { 0x0100054a, 2727 }, /* Armenian_PE */ - { 0x01000553, 2751 }, /* Armenian_PYUR */ - { 0x0100054c, 2797 }, /* Armenian_RA */ - { 0x01000550, 2821 }, /* Armenian_RE */ - { 0x0100054d, 2845 }, /* Armenian_SE */ - { 0x01000547, 2894 }, /* Armenian_SHA */ - { 0x01000543, 2936 }, /* Armenian_TCHE */ - { 0x01000539, 2964 }, /* Armenian_TO */ - { 0x0100053e, 2988 }, /* Armenian_TSA */ - { 0x01000551, 3014 }, /* Armenian_TSO */ - { 0x0100054f, 3040 }, /* Armenian_TYUN */ - { 0x0100054e, 3086 }, /* Armenian_VEV */ - { 0x01000548, 3112 }, /* Armenian_VO */ - { 0x01000552, 3136 }, /* Armenian_VYUN */ - { 0x01000535, 3164 }, /* Armenian_YECH */ - { 0x01000536, 3210 }, /* Armenian_ZA */ - { 0x0100053a, 3234 }, /* Armenian_ZHE */ - { 0x0100055b, 2048 }, /* Armenian_accent */ - { 0x0100055c, 2064 }, /* Armenian_amanak */ - { 0x0100055a, 2080 }, /* Armenian_apostrophe */ - { 0x01000568, 2112 }, /* Armenian_at */ - { 0x01000561, 2137 }, /* Armenian_ayb */ - { 0x01000562, 2163 }, /* Armenian_ben */ - { 0x0100055d, 2176 }, /* Armenian_but */ - { 0x01000579, 2202 }, /* Armenian_cha */ - { 0x01000564, 2227 }, /* Armenian_da */ - { 0x01000571, 2252 }, /* Armenian_dza */ - { 0x01000567, 2276 }, /* Armenian_e */ - { 0x0100055c, 2287 }, /* Armenian_exclam */ - { 0x01000586, 2315 }, /* Armenian_fe */ - { 0x01000589, 2327 }, /* Armenian_full_stop */ - { 0x01000572, 2360 }, /* Armenian_ghat */ - { 0x01000563, 2387 }, /* Armenian_gim */ - { 0x01000575, 2412 }, /* Armenian_hi */ - { 0x01000570, 2436 }, /* Armenian_ho */ - { 0x0100058a, 2448 }, /* Armenian_hyphen */ - { 0x0100056b, 2477 }, /* Armenian_ini */ - { 0x0100057b, 2502 }, /* Armenian_je */ - { 0x01000584, 2526 }, /* Armenian_ke */ - { 0x0100056f, 2551 }, /* Armenian_ken */ - { 0x0100056d, 2577 }, /* Armenian_khe */ - { 0x01000587, 2590 }, /* Armenian_ligature_ew */ - { 0x0100056c, 2625 }, /* Armenian_lyun */ - { 0x01000574, 2652 }, /* Armenian_men */ - { 0x01000576, 2677 }, /* Armenian_nu */ - { 0x01000585, 2700 }, /* Armenian_o */ - { 0x0100055e, 2711 }, /* Armenian_paruyk */ - { 0x0100057a, 2739 }, /* Armenian_pe */ - { 0x01000583, 2765 }, /* Armenian_pyur */ - { 0x0100055e, 2779 }, /* Armenian_question */ - { 0x0100057c, 2809 }, /* Armenian_ra */ - { 0x01000580, 2833 }, /* Armenian_re */ - { 0x0100057d, 2857 }, /* Armenian_se */ - { 0x0100055d, 2869 }, /* Armenian_separation_mark */ - { 0x01000577, 2907 }, /* Armenian_sha */ - { 0x0100055b, 2920 }, /* Armenian_shesht */ - { 0x01000573, 2950 }, /* Armenian_tche */ - { 0x01000569, 2976 }, /* Armenian_to */ - { 0x0100056e, 3001 }, /* Armenian_tsa */ - { 0x01000581, 3027 }, /* Armenian_tso */ - { 0x0100057f, 3054 }, /* Armenian_tyun */ - { 0x01000589, 3068 }, /* Armenian_verjaket */ - { 0x0100057e, 3099 }, /* Armenian_vev */ - { 0x01000578, 3124 }, /* Armenian_vo */ - { 0x01000582, 3150 }, /* Armenian_vyun */ - { 0x01000565, 3178 }, /* Armenian_yech */ - { 0x0100058a, 3192 }, /* Armenian_yentamna */ - { 0x01000566, 3222 }, /* Armenian_za */ - { 0x0100056a, 3247 }, /* Armenian_zhe */ - { 0x000000c3, 3295 }, /* Atilde */ - { 0x0000fe7a, 3309 }, /* AudibleBell_Enable */ - { 0x00000042, 3328 }, /* B */ - { 0x01001e02, 3332 }, /* Babovedot */ - { 0x0000ff08, 3362 }, /* BackSpace */ - { 0x1000ff74, 3372 }, /* BackTab */ - { 0x0000ff58, 3404 }, /* Begin */ - { 0x0000fe74, 3564 }, /* BounceKeys_Enable */ - { 0x0000ff6b, 8377 }, /* Break */ - { 0x000006be, 8419 }, /* Byelorussian_SHORTU */ - { 0x000006ae, 8399 }, /* Byelorussian_shortu */ - { 0x00000043, 8439 }, /* C */ - { 0x0000fea2, 8600 }, /* CH */ - { 0x0000fea5, 8451 }, /* C_H */ - { 0x0000fea4, 8447 }, /* C_h */ - { 0x000002c5, 8455 }, /* Cabovedot */ - { 0x000001c6, 8475 }, /* Cacute */ - { 0x0000ff69, 8489 }, /* Cancel */ - { 0x0000ffe5, 8496 }, /* Caps_Lock */ - { 0x000001c8, 8525 }, /* Ccaron */ - { 0x000000c7, 8539 }, /* Ccedilla */ - { 0x000002c6, 8557 }, /* Ccircumflex */ - { 0x0000fea1, 8597 }, /* Ch */ - { 0x0000ff0b, 8633 }, /* Clear */ - { 0x1000ff6f, 8639 }, /* ClearLine */ - { 0x0000ff37, 8654 }, /* Codeinput */ - { 0x010020a1, 8670 }, /* ColonSign */ - { 0x0000ffe3, 8779 }, /* Control_L */ - { 0x0000ffe4, 8789 }, /* Control_R */ - { 0x010020a2, 8826 }, /* CruzeiroSign */ - { 0x000006e1, 8875 }, /* Cyrillic_A */ - { 0x000006e2, 8898 }, /* Cyrillic_BE */ - { 0x000006fe, 8923 }, /* Cyrillic_CHE */ - { 0x010004b6, 8936 }, /* Cyrillic_CHE_descender */ - { 0x010004b8, 8982 }, /* Cyrillic_CHE_vertstroke */ - { 0x000006e4, 9042 }, /* Cyrillic_DE */ - { 0x000006bf, 9068 }, /* Cyrillic_DZHE */ - { 0x000006fc, 9093 }, /* Cyrillic_E */ - { 0x000006e6, 9116 }, /* Cyrillic_EF */ - { 0x000006ec, 9140 }, /* Cyrillic_EL */ - { 0x000006ed, 9164 }, /* Cyrillic_EM */ - { 0x000006ee, 9188 }, /* Cyrillic_EN */ - { 0x010004a2, 9200 }, /* Cyrillic_EN_descender */ - { 0x000006f2, 9256 }, /* Cyrillic_ER */ - { 0x000006f3, 9280 }, /* Cyrillic_ES */ - { 0x000006e7, 9305 }, /* Cyrillic_GHE */ - { 0x01000492, 9318 }, /* Cyrillic_GHE_bar */ - { 0x000006e8, 9364 }, /* Cyrillic_HA */ - { 0x000006ff, 9438 }, /* Cyrillic_HARDSIGN */ - { 0x010004b2, 9376 }, /* Cyrillic_HA_descender */ - { 0x000006e9, 9467 }, /* Cyrillic_I */ - { 0x000006e5, 9526 }, /* Cyrillic_IE */ - { 0x000006b3, 9550 }, /* Cyrillic_IO */ - { 0x010004e2, 9478 }, /* Cyrillic_I_macron */ - { 0x000006b8, 9574 }, /* Cyrillic_JE */ - { 0x000006eb, 9598 }, /* Cyrillic_KA */ - { 0x0100049a, 9610 }, /* Cyrillic_KA_descender */ - { 0x0100049c, 9654 }, /* Cyrillic_KA_vertstroke */ - { 0x000006b9, 9713 }, /* Cyrillic_LJE */ - { 0x000006ba, 9739 }, /* Cyrillic_NJE */ - { 0x000006ef, 9763 }, /* Cyrillic_O */ - { 0x010004e8, 9774 }, /* Cyrillic_O_bar */ - { 0x000006f0, 9816 }, /* Cyrillic_PE */ - { 0x010004d8, 9828 }, /* Cyrillic_SCHWA */ - { 0x000006fb, 9871 }, /* Cyrillic_SHA */ - { 0x000006fd, 9899 }, /* Cyrillic_SHCHA */ - { 0x010004ba, 9914 }, /* Cyrillic_SHHA */ - { 0x000006ea, 9958 }, /* Cyrillic_SHORTI */ - { 0x000006f8, 9992 }, /* Cyrillic_SOFTSIGN */ - { 0x000006f4, 10022 }, /* Cyrillic_TE */ - { 0x000006e3, 10047 }, /* Cyrillic_TSE */ - { 0x000006f5, 10071 }, /* Cyrillic_U */ - { 0x010004ee, 10082 }, /* Cyrillic_U_macron */ - { 0x010004ae, 10118 }, /* Cyrillic_U_straight */ - { 0x010004b0, 10158 }, /* Cyrillic_U_straight_bar */ - { 0x000006f7, 10218 }, /* Cyrillic_VE */ - { 0x000006f1, 10242 }, /* Cyrillic_YA */ - { 0x000006f9, 10268 }, /* Cyrillic_YERU */ - { 0x000006e0, 10294 }, /* Cyrillic_YU */ - { 0x000006fa, 10318 }, /* Cyrillic_ZE */ - { 0x000006f6, 10343 }, /* Cyrillic_ZHE */ - { 0x01000496, 10356 }, /* Cyrillic_ZHE_descender */ - { 0x000006c1, 8864 }, /* Cyrillic_a */ - { 0x000006c2, 8886 }, /* Cyrillic_be */ - { 0x000006de, 8910 }, /* Cyrillic_che */ - { 0x010004b7, 8959 }, /* Cyrillic_che_descender */ - { 0x010004b9, 9006 }, /* Cyrillic_che_vertstroke */ - { 0x000006c4, 9030 }, /* Cyrillic_de */ - { 0x000006af, 9054 }, /* Cyrillic_dzhe */ - { 0x000006dc, 9082 }, /* Cyrillic_e */ - { 0x000006c6, 9104 }, /* Cyrillic_ef */ - { 0x000006cc, 9128 }, /* Cyrillic_el */ - { 0x000006cd, 9152 }, /* Cyrillic_em */ - { 0x000006ce, 9176 }, /* Cyrillic_en */ - { 0x010004a3, 9222 }, /* Cyrillic_en_descender */ - { 0x000006d2, 9244 }, /* Cyrillic_er */ - { 0x000006d3, 9268 }, /* Cyrillic_es */ - { 0x000006c7, 9292 }, /* Cyrillic_ghe */ - { 0x01000493, 9335 }, /* Cyrillic_ghe_bar */ - { 0x000006c8, 9352 }, /* Cyrillic_ha */ - { 0x010004b3, 9398 }, /* Cyrillic_ha_descender */ - { 0x000006df, 9420 }, /* Cyrillic_hardsign */ - { 0x000006c9, 9456 }, /* Cyrillic_i */ - { 0x010004e3, 9496 }, /* Cyrillic_i_macron */ - { 0x000006c5, 9514 }, /* Cyrillic_ie */ - { 0x000006a3, 9538 }, /* Cyrillic_io */ - { 0x000006a8, 9562 }, /* Cyrillic_je */ - { 0x000006cb, 9586 }, /* Cyrillic_ka */ - { 0x0100049b, 9632 }, /* Cyrillic_ka_descender */ - { 0x0100049d, 9677 }, /* Cyrillic_ka_vertstroke */ - { 0x000006a9, 9700 }, /* Cyrillic_lje */ - { 0x000006aa, 9726 }, /* Cyrillic_nje */ - { 0x000006cf, 9752 }, /* Cyrillic_o */ - { 0x010004e9, 9789 }, /* Cyrillic_o_bar */ - { 0x000006d0, 9804 }, /* Cyrillic_pe */ - { 0x010004d9, 9843 }, /* Cyrillic_schwa */ - { 0x000006db, 9858 }, /* Cyrillic_sha */ - { 0x000006dd, 9884 }, /* Cyrillic_shcha */ - { 0x010004bb, 9928 }, /* Cyrillic_shha */ - { 0x000006ca, 9942 }, /* Cyrillic_shorti */ - { 0x000006d8, 9974 }, /* Cyrillic_softsign */ - { 0x000006d4, 10010 }, /* Cyrillic_te */ - { 0x000006c3, 10034 }, /* Cyrillic_tse */ - { 0x000006d5, 10060 }, /* Cyrillic_u */ - { 0x010004ef, 10100 }, /* Cyrillic_u_macron */ - { 0x010004af, 10138 }, /* Cyrillic_u_straight */ - { 0x010004b1, 10182 }, /* Cyrillic_u_straight_bar */ - { 0x000006d7, 10206 }, /* Cyrillic_ve */ - { 0x000006d1, 10230 }, /* Cyrillic_ya */ - { 0x000006d9, 10254 }, /* Cyrillic_yeru */ - { 0x000006c0, 10282 }, /* Cyrillic_yu */ - { 0x000006da, 10306 }, /* Cyrillic_ze */ - { 0x000006d6, 10330 }, /* Cyrillic_zhe */ - { 0x01000497, 10379 }, /* Cyrillic_zhe_descender */ - { 0x00000044, 10402 }, /* D */ - { 0x1000ff00, 11462 }, /* DRemove */ - { 0x01001e0a, 10406 }, /* Dabovedot */ - { 0x1000fe27, 10426 }, /* Dacute_accent */ - { 0x000001cf, 10447 }, /* Dcaron */ - { 0x1000fe2c, 10461 }, /* Dcedilla_accent */ - { 0x1000fe5e, 10477 }, /* Dcircumflex_accent */ - { 0x1000fe22, 10496 }, /* Ddiaeresis */ - { 0x0000ffff, 11242 }, /* Delete */ - { 0x1000ff73, 11249 }, /* DeleteChar */ - { 0x1000ff71, 11260 }, /* DeleteLine */ - { 0x1000fe60, 11271 }, /* Dgrave_accent */ - { 0x010020ab, 11340 }, /* DongSign */ - { 0x0000ff54, 11409 }, /* Down */ - { 0x1000feb0, 11470 }, /* Dring_accent */ - { 0x000001d0, 11483 }, /* Dstroke */ - { 0x1000fe7e, 11499 }, /* Dtilde */ - { 0x00000045, 11506 }, /* E */ - { 0x000003bd, 12065 }, /* ENG */ - { 0x000000d0, 12146 }, /* ETH */ - { 0x010001b7, 12229 }, /* EZH */ - { 0x000003cc, 11510 }, /* Eabovedot */ - { 0x000000c9, 11530 }, /* Eacute */ - { 0x01001eb8, 11544 }, /* Ebelowdot */ - { 0x000001cc, 11564 }, /* Ecaron */ - { 0x000000ca, 11578 }, /* Ecircumflex */ - { 0x01001ebe, 11602 }, /* Ecircumflexacute */ - { 0x01001ec6, 11636 }, /* Ecircumflexbelowdot */ - { 0x01001ec0, 11676 }, /* Ecircumflexgrave */ - { 0x01001ec2, 11710 }, /* Ecircumflexhook */ - { 0x01001ec4, 11742 }, /* Ecircumflextilde */ - { 0x010020a0, 11776 }, /* EcuSign */ - { 0x000000cb, 11784 }, /* Ediaeresis */ - { 0x000000c8, 11806 }, /* Egrave */ - { 0x01001eba, 11820 }, /* Ehook */ - { 0x0000ff2f, 11861 }, /* Eisu_Shift */ - { 0x0000ff30, 11872 }, /* Eisu_toggle */ - { 0x000003aa, 11921 }, /* Emacron */ - { 0x0000ff57, 12018 }, /* End */ - { 0x000001ca, 12117 }, /* Eogonek */ - { 0x0000ff1b, 12139 }, /* Escape */ - { 0x000000d0, 12150 }, /* Eth */ - { 0x01001ebc, 12158 }, /* Etilde */ - { 0x000020ac, 12172 }, /* EuroSign */ - { 0x0000ff62, 12199 }, /* Execute */ - { 0x1000ff76, 12207 }, /* Ext16bit_L */ - { 0x1000ff77, 12218 }, /* Ext16bit_R */ - { 0x00000046, 12237 }, /* F */ - { 0x0000ffbe, 12241 }, /* F1 */ - { 0x0000ffc7, 12244 }, /* F10 */ - { 0x0000ffc8, 12248 }, /* F11 */ - { 0x0000ffc9, 12252 }, /* F12 */ - { 0x0000ffca, 12256 }, /* F13 */ - { 0x0000ffcb, 12260 }, /* F14 */ - { 0x0000ffcc, 12264 }, /* F15 */ - { 0x0000ffcd, 12268 }, /* F16 */ - { 0x0000ffce, 12272 }, /* F17 */ - { 0x0000ffcf, 12276 }, /* F18 */ - { 0x0000ffd0, 12280 }, /* F19 */ - { 0x0000ffbf, 12284 }, /* F2 */ - { 0x0000ffd1, 12287 }, /* F20 */ - { 0x0000ffd2, 12291 }, /* F21 */ - { 0x0000ffd3, 12295 }, /* F22 */ - { 0x0000ffd4, 12299 }, /* F23 */ - { 0x0000ffd5, 12303 }, /* F24 */ - { 0x0000ffd6, 12307 }, /* F25 */ - { 0x0000ffd7, 12311 }, /* F26 */ - { 0x0000ffd8, 12315 }, /* F27 */ - { 0x0000ffd9, 12319 }, /* F28 */ - { 0x0000ffda, 12323 }, /* F29 */ - { 0x0000ffc0, 12327 }, /* F3 */ - { 0x0000ffdb, 12330 }, /* F30 */ - { 0x0000ffdc, 12334 }, /* F31 */ - { 0x0000ffdd, 12338 }, /* F32 */ - { 0x0000ffde, 12342 }, /* F33 */ - { 0x0000ffdf, 12346 }, /* F34 */ - { 0x0000ffe0, 12350 }, /* F35 */ - { 0x0000ffc1, 12354 }, /* F4 */ - { 0x0000ffc2, 12357 }, /* F5 */ - { 0x0000ffc3, 12360 }, /* F6 */ - { 0x0000ffc4, 12363 }, /* F7 */ - { 0x0000ffc5, 12366 }, /* F8 */ - { 0x0000ffc6, 12369 }, /* F9 */ - { 0x010020a3, 12498 }, /* FFrancSign */ - { 0x01001e1e, 12372 }, /* Fabovedot */ - { 0x010006f0, 12392 }, /* Farsi_0 */ - { 0x010006f1, 12400 }, /* Farsi_1 */ - { 0x010006f2, 12408 }, /* Farsi_2 */ - { 0x010006f3, 12416 }, /* Farsi_3 */ - { 0x010006f4, 12424 }, /* Farsi_4 */ - { 0x010006f5, 12432 }, /* Farsi_5 */ - { 0x010006f6, 12440 }, /* Farsi_6 */ - { 0x010006f7, 12448 }, /* Farsi_7 */ - { 0x010006f8, 12456 }, /* Farsi_8 */ - { 0x010006f9, 12464 }, /* Farsi_9 */ - { 0x010006cc, 12472 }, /* Farsi_yeh */ - { 0x0000ff68, 12613 }, /* Find */ - { 0x0000fed0, 12618 }, /* First_Virtual_Screen */ - { 0x00000047, 12747 }, /* G */ - { 0x000002d5, 12751 }, /* Gabovedot */ - { 0x000002ab, 12771 }, /* Gbreve */ - { 0x010001e6, 12785 }, /* Gcaron */ - { 0x000003ab, 12799 }, /* Gcedilla */ - { 0x000002d8, 12817 }, /* Gcircumflex */ - { 0x010010d0, 12841 }, /* Georgian_an */ - { 0x010010d1, 12853 }, /* Georgian_ban */ - { 0x010010ea, 12866 }, /* Georgian_can */ - { 0x010010ed, 12879 }, /* Georgian_char */ - { 0x010010e9, 12893 }, /* Georgian_chin */ - { 0x010010ec, 12907 }, /* Georgian_cil */ - { 0x010010d3, 12920 }, /* Georgian_don */ - { 0x010010d4, 12933 }, /* Georgian_en */ - { 0x010010f6, 12945 }, /* Georgian_fi */ - { 0x010010d2, 12957 }, /* Georgian_gan */ - { 0x010010e6, 12970 }, /* Georgian_ghan */ - { 0x010010f0, 12984 }, /* Georgian_hae */ - { 0x010010f4, 12997 }, /* Georgian_har */ - { 0x010010f1, 13010 }, /* Georgian_he */ - { 0x010010f2, 13022 }, /* Georgian_hie */ - { 0x010010f5, 13035 }, /* Georgian_hoe */ - { 0x010010d8, 13048 }, /* Georgian_in */ - { 0x010010ef, 13060 }, /* Georgian_jhan */ - { 0x010010eb, 13074 }, /* Georgian_jil */ - { 0x010010d9, 13087 }, /* Georgian_kan */ - { 0x010010e5, 13100 }, /* Georgian_khar */ - { 0x010010da, 13114 }, /* Georgian_las */ - { 0x010010db, 13127 }, /* Georgian_man */ - { 0x010010dc, 13140 }, /* Georgian_nar */ - { 0x010010dd, 13153 }, /* Georgian_on */ - { 0x010010de, 13165 }, /* Georgian_par */ - { 0x010010e4, 13178 }, /* Georgian_phar */ - { 0x010010e7, 13192 }, /* Georgian_qar */ - { 0x010010e0, 13205 }, /* Georgian_rae */ - { 0x010010e1, 13218 }, /* Georgian_san */ - { 0x010010e8, 13231 }, /* Georgian_shin */ - { 0x010010d7, 13245 }, /* Georgian_tan */ - { 0x010010e2, 13258 }, /* Georgian_tar */ - { 0x010010e3, 13271 }, /* Georgian_un */ - { 0x010010d5, 13283 }, /* Georgian_vin */ - { 0x010010f3, 13296 }, /* Georgian_we */ - { 0x010010ee, 13308 }, /* Georgian_xan */ - { 0x010010d6, 13321 }, /* Georgian_zen */ - { 0x010010df, 13334 }, /* Georgian_zhar */ - { 0x000007c1, 13400 }, /* Greek_ALPHA */ - { 0x000007a1, 13424 }, /* Greek_ALPHAaccent */ - { 0x000007c2, 13460 }, /* Greek_BETA */ - { 0x000007d7, 13482 }, /* Greek_CHI */ - { 0x000007c4, 13502 }, /* Greek_DELTA */ - { 0x000007c5, 13526 }, /* Greek_EPSILON */ - { 0x000007a2, 13554 }, /* Greek_EPSILONaccent */ - { 0x000007c7, 13594 }, /* Greek_ETA */ - { 0x000007a3, 13614 }, /* Greek_ETAaccent */ - { 0x000007c3, 13668 }, /* Greek_GAMMA */ - { 0x000007c9, 13707 }, /* Greek_IOTA */ - { 0x000007a4, 13729 }, /* Greek_IOTAaccent */ - { 0x000007a5, 13788 }, /* Greek_IOTAdiaeresis */ - { 0x000007a5, 13808 }, /* Greek_IOTAdieresis */ - { 0x000007ca, 13846 }, /* Greek_KAPPA */ - { 0x000007cb, 13870 }, /* Greek_LAMBDA */ - { 0x000007cb, 13896 }, /* Greek_LAMDA */ - { 0x000007cc, 13920 }, /* Greek_MU */ - { 0x000007cd, 13938 }, /* Greek_NU */ - { 0x000007d9, 13956 }, /* Greek_OMEGA */ - { 0x000007ab, 13980 }, /* Greek_OMEGAaccent */ - { 0x000007cf, 14016 }, /* Greek_OMICRON */ - { 0x000007a7, 14044 }, /* Greek_OMICRONaccent */ - { 0x000007d6, 14084 }, /* Greek_PHI */ - { 0x000007d0, 14104 }, /* Greek_PI */ - { 0x000007d8, 14122 }, /* Greek_PSI */ - { 0x000007d1, 14142 }, /* Greek_RHO */ - { 0x000007d2, 14162 }, /* Greek_SIGMA */ - { 0x000007d4, 14199 }, /* Greek_TAU */ - { 0x000007c8, 14219 }, /* Greek_THETA */ - { 0x000007d5, 14243 }, /* Greek_UPSILON */ - { 0x000007a8, 14271 }, /* Greek_UPSILONaccent */ - { 0x000007a9, 14339 }, /* Greek_UPSILONdieresis */ - { 0x000007ce, 14383 }, /* Greek_XI */ - { 0x000007c6, 14401 }, /* Greek_ZETA */ - { 0x000007ae, 13379 }, /* Greek_accentdieresis */ - { 0x000007e1, 13412 }, /* Greek_alpha */ - { 0x000007b1, 13442 }, /* Greek_alphaaccent */ - { 0x000007e2, 13471 }, /* Greek_beta */ - { 0x000007f7, 13492 }, /* Greek_chi */ - { 0x000007e4, 13514 }, /* Greek_delta */ - { 0x000007e5, 13540 }, /* Greek_epsilon */ - { 0x000007b2, 13574 }, /* Greek_epsilonaccent */ - { 0x000007e7, 13604 }, /* Greek_eta */ - { 0x000007b3, 13630 }, /* Greek_etaaccent */ - { 0x000007f3, 13646 }, /* Greek_finalsmallsigma */ - { 0x000007e3, 13680 }, /* Greek_gamma */ - { 0x000007af, 13692 }, /* Greek_horizbar */ - { 0x000007e9, 13718 }, /* Greek_iota */ - { 0x000007b4, 13746 }, /* Greek_iotaaccent */ - { 0x000007b6, 13763 }, /* Greek_iotaaccentdieresis */ - { 0x000007b5, 13827 }, /* Greek_iotadieresis */ - { 0x000007ea, 13858 }, /* Greek_kappa */ - { 0x000007eb, 13883 }, /* Greek_lambda */ - { 0x000007eb, 13908 }, /* Greek_lamda */ - { 0x000007ec, 13929 }, /* Greek_mu */ - { 0x000007ed, 13947 }, /* Greek_nu */ - { 0x000007f9, 13968 }, /* Greek_omega */ - { 0x000007bb, 13998 }, /* Greek_omegaaccent */ - { 0x000007ef, 14030 }, /* Greek_omicron */ - { 0x000007b7, 14064 }, /* Greek_omicronaccent */ - { 0x000007f6, 14094 }, /* Greek_phi */ - { 0x000007f0, 14113 }, /* Greek_pi */ - { 0x000007f8, 14132 }, /* Greek_psi */ - { 0x000007f1, 14152 }, /* Greek_rho */ - { 0x000007f2, 14174 }, /* Greek_sigma */ - { 0x0000ff7e, 14186 }, /* Greek_switch */ - { 0x000007f4, 14209 }, /* Greek_tau */ - { 0x000007e8, 14231 }, /* Greek_theta */ - { 0x000007f5, 14257 }, /* Greek_upsilon */ - { 0x000007b8, 14291 }, /* Greek_upsilonaccent */ - { 0x000007ba, 14311 }, /* Greek_upsilonaccentdieresis */ - { 0x000007b9, 14361 }, /* Greek_upsilondieresis */ - { 0x000007ee, 14392 }, /* Greek_xi */ - { 0x000007e6, 14412 }, /* Greek_zeta */ - { 0x00000048, 14460 }, /* H */ - { 0x0000ff31, 14474 }, /* Hangul */ - { 0x00000ebf, 14481 }, /* Hangul_A */ - { 0x00000ec0, 14490 }, /* Hangul_AE */ - { 0x00000ef6, 14500 }, /* Hangul_AraeA */ - { 0x00000ef7, 14513 }, /* Hangul_AraeAE */ - { 0x0000ff39, 14527 }, /* Hangul_Banja */ - { 0x00000eba, 14540 }, /* Hangul_Cieuc */ - { 0x0000ff37, 14553 }, /* Hangul_Codeinput */ - { 0x00000ea7, 14570 }, /* Hangul_Dikeud */ - { 0x00000ec4, 14584 }, /* Hangul_E */ - { 0x00000ec3, 14604 }, /* Hangul_EO */ - { 0x00000ed1, 14614 }, /* Hangul_EU */ - { 0x0000ff33, 14593 }, /* Hangul_End */ - { 0x0000ff34, 14624 }, /* Hangul_Hanja */ - { 0x00000ebe, 14637 }, /* Hangul_Hieuh */ - { 0x00000ed3, 14650 }, /* Hangul_I */ - { 0x00000eb7, 14659 }, /* Hangul_Ieung */ - { 0x00000eea, 14672 }, /* Hangul_J_Cieuc */ - { 0x00000eda, 14687 }, /* Hangul_J_Dikeud */ - { 0x00000eee, 14703 }, /* Hangul_J_Hieuh */ - { 0x00000ee8, 14718 }, /* Hangul_J_Ieung */ - { 0x00000ee9, 14733 }, /* Hangul_J_Jieuj */ - { 0x00000eeb, 14748 }, /* Hangul_J_Khieuq */ - { 0x00000ed4, 14764 }, /* Hangul_J_Kiyeog */ - { 0x00000ed6, 14780 }, /* Hangul_J_KiyeogSios */ - { 0x00000ef9, 14800 }, /* Hangul_J_KkogjiDalrinIeung */ - { 0x00000ee3, 14827 }, /* Hangul_J_Mieum */ - { 0x00000ed7, 14842 }, /* Hangul_J_Nieun */ - { 0x00000ed9, 14857 }, /* Hangul_J_NieunHieuh */ - { 0x00000ed8, 14877 }, /* Hangul_J_NieunJieuj */ - { 0x00000ef8, 14897 }, /* Hangul_J_PanSios */ - { 0x00000eed, 14914 }, /* Hangul_J_Phieuf */ - { 0x00000ee4, 14930 }, /* Hangul_J_Pieub */ - { 0x00000ee5, 14945 }, /* Hangul_J_PieubSios */ - { 0x00000edb, 14964 }, /* Hangul_J_Rieul */ - { 0x00000ee2, 14979 }, /* Hangul_J_RieulHieuh */ - { 0x00000edc, 14999 }, /* Hangul_J_RieulKiyeog */ - { 0x00000edd, 15020 }, /* Hangul_J_RieulMieum */ - { 0x00000ee1, 15040 }, /* Hangul_J_RieulPhieuf */ - { 0x00000ede, 15061 }, /* Hangul_J_RieulPieub */ - { 0x00000edf, 15081 }, /* Hangul_J_RieulSios */ - { 0x00000ee0, 15100 }, /* Hangul_J_RieulTieut */ - { 0x00000ee6, 15120 }, /* Hangul_J_Sios */ - { 0x00000ed5, 15134 }, /* Hangul_J_SsangKiyeog */ - { 0x00000ee7, 15155 }, /* Hangul_J_SsangSios */ - { 0x00000eec, 15174 }, /* Hangul_J_Tieut */ - { 0x00000efa, 15189 }, /* Hangul_J_YeorinHieuh */ - { 0x0000ff35, 15210 }, /* Hangul_Jamo */ - { 0x0000ff38, 15222 }, /* Hangul_Jeonja */ - { 0x00000eb8, 15236 }, /* Hangul_Jieuj */ - { 0x00000ebb, 15249 }, /* Hangul_Khieuq */ - { 0x00000ea1, 15263 }, /* Hangul_Kiyeog */ - { 0x00000ea3, 15277 }, /* Hangul_KiyeogSios */ - { 0x00000ef3, 15295 }, /* Hangul_KkogjiDalrinIeung */ - { 0x00000eb1, 15320 }, /* Hangul_Mieum */ - { 0x0000ff3d, 15333 }, /* Hangul_MultipleCandidate */ - { 0x00000ea4, 15358 }, /* Hangul_Nieun */ - { 0x00000ea6, 15371 }, /* Hangul_NieunHieuh */ - { 0x00000ea5, 15389 }, /* Hangul_NieunJieuj */ - { 0x00000ec7, 15407 }, /* Hangul_O */ - { 0x00000eca, 15416 }, /* Hangul_OE */ - { 0x00000ef2, 15426 }, /* Hangul_PanSios */ - { 0x00000ebd, 15441 }, /* Hangul_Phieuf */ - { 0x00000eb2, 15455 }, /* Hangul_Pieub */ - { 0x00000eb4, 15468 }, /* Hangul_PieubSios */ - { 0x0000ff3b, 15485 }, /* Hangul_PostHanja */ - { 0x0000ff3a, 15502 }, /* Hangul_PreHanja */ - { 0x0000ff3e, 15518 }, /* Hangul_PreviousCandidate */ - { 0x00000ea9, 15543 }, /* Hangul_Rieul */ - { 0x00000eb0, 15556 }, /* Hangul_RieulHieuh */ - { 0x00000eaa, 15574 }, /* Hangul_RieulKiyeog */ - { 0x00000eab, 15593 }, /* Hangul_RieulMieum */ - { 0x00000eaf, 15611 }, /* Hangul_RieulPhieuf */ - { 0x00000eac, 15630 }, /* Hangul_RieulPieub */ - { 0x00000ead, 15648 }, /* Hangul_RieulSios */ - { 0x00000eae, 15665 }, /* Hangul_RieulTieut */ - { 0x00000eef, 15683 }, /* Hangul_RieulYeorinHieuh */ - { 0x0000ff36, 15707 }, /* Hangul_Romaja */ - { 0x0000ff3c, 15721 }, /* Hangul_SingleCandidate */ - { 0x00000eb5, 15744 }, /* Hangul_Sios */ - { 0x0000ff3f, 15756 }, /* Hangul_Special */ - { 0x00000ea8, 15771 }, /* Hangul_SsangDikeud */ - { 0x00000eb9, 15790 }, /* Hangul_SsangJieuj */ - { 0x00000ea2, 15808 }, /* Hangul_SsangKiyeog */ - { 0x00000eb3, 15827 }, /* Hangul_SsangPieub */ - { 0x00000eb6, 15845 }, /* Hangul_SsangSios */ - { 0x0000ff32, 15862 }, /* Hangul_Start */ - { 0x00000ef0, 15875 }, /* Hangul_SunkyeongeumMieum */ - { 0x00000ef4, 15900 }, /* Hangul_SunkyeongeumPhieuf */ - { 0x00000ef1, 15926 }, /* Hangul_SunkyeongeumPieub */ - { 0x00000ebc, 15965 }, /* Hangul_Tieut */ - { 0x00000ecc, 15978 }, /* Hangul_U */ - { 0x00000ec8, 15987 }, /* Hangul_WA */ - { 0x00000ec9, 15997 }, /* Hangul_WAE */ - { 0x00000ece, 16008 }, /* Hangul_WE */ - { 0x00000ecd, 16018 }, /* Hangul_WEO */ - { 0x00000ecf, 16029 }, /* Hangul_WI */ - { 0x00000ec1, 16039 }, /* Hangul_YA */ - { 0x00000ec2, 16049 }, /* Hangul_YAE */ - { 0x00000ec6, 16060 }, /* Hangul_YE */ - { 0x00000ec5, 16070 }, /* Hangul_YEO */ - { 0x00000ed2, 16100 }, /* Hangul_YI */ - { 0x00000ecb, 16110 }, /* Hangul_YO */ - { 0x00000ed0, 16120 }, /* Hangul_YU */ - { 0x00000ef5, 16081 }, /* Hangul_YeorinHieuh */ - { 0x0000ff7e, 15951 }, /* Hangul_switch */ - { 0x0000ff29, 16130 }, /* Hankaku */ - { 0x000002a6, 16138 }, /* Hcircumflex */ - { 0x0000ff7e, 16554 }, /* Hebrew_switch */ - { 0x0000ff6a, 16684 }, /* Help */ - { 0x0000ff23, 16689 }, /* Henkan */ - { 0x0000ff23, 16696 }, /* Henkan_Mode */ - { 0x0000ff25, 16717 }, /* Hiragana */ - { 0x0000ff27, 16726 }, /* Hiragana_Katakana */ - { 0x0000ff50, 16744 }, /* Home */ - { 0x000002a1, 17109 }, /* Hstroke */ - { 0x0000ffed, 17128 }, /* Hyper_L */ - { 0x0000ffee, 17136 }, /* Hyper_R */ - { 0x00000049, 17151 }, /* I */ - { 0x100000ee, 17417 }, /* IO */ - { 0x0000fe33, 17436 }, /* ISO_Center_Object */ - { 0x0000fe30, 17454 }, /* ISO_Continuous_Underline */ - { 0x0000fe31, 17479 }, /* ISO_Discontinuous_Underline */ - { 0x0000fe32, 17507 }, /* ISO_Emphasize */ - { 0x0000fe34, 17521 }, /* ISO_Enter */ - { 0x0000fe2f, 17531 }, /* ISO_Fast_Cursor_Down */ - { 0x0000fe2c, 17552 }, /* ISO_Fast_Cursor_Left */ - { 0x0000fe2d, 17573 }, /* ISO_Fast_Cursor_Right */ - { 0x0000fe2e, 17595 }, /* ISO_Fast_Cursor_Up */ - { 0x0000fe0c, 17614 }, /* ISO_First_Group */ - { 0x0000fe0d, 17630 }, /* ISO_First_Group_Lock */ - { 0x0000fe06, 17651 }, /* ISO_Group_Latch */ - { 0x0000fe07, 17667 }, /* ISO_Group_Lock */ - { 0x0000ff7e, 17682 }, /* ISO_Group_Shift */ - { 0x0000fe0e, 17698 }, /* ISO_Last_Group */ - { 0x0000fe0f, 17713 }, /* ISO_Last_Group_Lock */ - { 0x0000fe20, 17733 }, /* ISO_Left_Tab */ - { 0x0000fe02, 17746 }, /* ISO_Level2_Latch */ - { 0x0000fe04, 17763 }, /* ISO_Level3_Latch */ - { 0x0000fe05, 17780 }, /* ISO_Level3_Lock */ - { 0x0000fe03, 17796 }, /* ISO_Level3_Shift */ - { 0x0000fe12, 17813 }, /* ISO_Level5_Latch */ - { 0x0000fe13, 17830 }, /* ISO_Level5_Lock */ - { 0x0000fe11, 17846 }, /* ISO_Level5_Shift */ - { 0x0000fe01, 17863 }, /* ISO_Lock */ - { 0x0000fe22, 17872 }, /* ISO_Move_Line_Down */ - { 0x0000fe21, 17891 }, /* ISO_Move_Line_Up */ - { 0x0000fe08, 17908 }, /* ISO_Next_Group */ - { 0x0000fe09, 17923 }, /* ISO_Next_Group_Lock */ - { 0x0000fe24, 17943 }, /* ISO_Partial_Line_Down */ - { 0x0000fe23, 17965 }, /* ISO_Partial_Line_Up */ - { 0x0000fe25, 17985 }, /* ISO_Partial_Space_Left */ - { 0x0000fe26, 18008 }, /* ISO_Partial_Space_Right */ - { 0x0000fe0a, 18032 }, /* ISO_Prev_Group */ - { 0x0000fe0b, 18047 }, /* ISO_Prev_Group_Lock */ - { 0x0000fe2b, 18067 }, /* ISO_Release_Both_Margins */ - { 0x0000fe29, 18092 }, /* ISO_Release_Margin_Left */ - { 0x0000fe2a, 18116 }, /* ISO_Release_Margin_Right */ - { 0x0000fe27, 18141 }, /* ISO_Set_Margin_Left */ - { 0x0000fe28, 18161 }, /* ISO_Set_Margin_Right */ - { 0x000002a9, 17155 }, /* Iabovedot */ - { 0x000000cd, 17165 }, /* Iacute */ - { 0x01001eca, 17179 }, /* Ibelowdot */ - { 0x0100012c, 17199 }, /* Ibreve */ - { 0x000000ce, 17213 }, /* Icircumflex */ - { 0x000000cf, 17247 }, /* Idiaeresis */ - { 0x000000cc, 17287 }, /* Igrave */ - { 0x01001ec8, 17301 }, /* Ihook */ - { 0x000003cf, 17313 }, /* Imacron */ - { 0x0000ff63, 17366 }, /* Insert */ - { 0x1000ff72, 17373 }, /* InsertChar */ - { 0x1000ff70, 17384 }, /* InsertLine */ - { 0x000003c7, 17420 }, /* Iogonek */ - { 0x000003a5, 18182 }, /* Itilde */ - { 0x0000004a, 18196 }, /* J */ - { 0x000002ac, 18200 }, /* Jcircumflex */ - { 0x0000004b, 18228 }, /* K */ - { 0x0000ffb0, 18890 }, /* KP_0 */ - { 0x0000ffb1, 18895 }, /* KP_1 */ - { 0x0000ffb2, 18900 }, /* KP_2 */ - { 0x0000ffb3, 18905 }, /* KP_3 */ - { 0x0000ffb4, 18910 }, /* KP_4 */ - { 0x0000ffb5, 18915 }, /* KP_5 */ - { 0x0000ffb6, 18920 }, /* KP_6 */ - { 0x0000ffb7, 18925 }, /* KP_7 */ - { 0x0000ffb8, 18930 }, /* KP_8 */ - { 0x0000ffb9, 18935 }, /* KP_9 */ - { 0x0000ffab, 18940 }, /* KP_Add */ - { 0x1000ff75, 18947 }, /* KP_BackTab */ - { 0x0000ff9d, 18958 }, /* KP_Begin */ - { 0x0000ffae, 18967 }, /* KP_Decimal */ - { 0x0000ff9f, 18978 }, /* KP_Delete */ - { 0x0000ffaf, 18988 }, /* KP_Divide */ - { 0x0000ff99, 18998 }, /* KP_Down */ - { 0x0000ff9c, 19006 }, /* KP_End */ - { 0x0000ff8d, 19013 }, /* KP_Enter */ - { 0x0000ffbd, 19022 }, /* KP_Equal */ - { 0x0000ff91, 19031 }, /* KP_F1 */ - { 0x0000ff92, 19037 }, /* KP_F2 */ - { 0x0000ff93, 19043 }, /* KP_F3 */ - { 0x0000ff94, 19049 }, /* KP_F4 */ - { 0x0000ff95, 19055 }, /* KP_Home */ - { 0x0000ff9e, 19063 }, /* KP_Insert */ - { 0x0000ff96, 19073 }, /* KP_Left */ - { 0x0000ffaa, 19081 }, /* KP_Multiply */ - { 0x0000ff9b, 19093 }, /* KP_Next */ - { 0x0000ff9b, 19101 }, /* KP_Page_Down */ - { 0x0000ff9a, 19114 }, /* KP_Page_Up */ - { 0x0000ff9a, 19125 }, /* KP_Prior */ - { 0x0000ff98, 19134 }, /* KP_Right */ - { 0x0000ffac, 19143 }, /* KP_Separator */ - { 0x0000ff80, 19156 }, /* KP_Space */ - { 0x0000ffad, 19165 }, /* KP_Subtract */ - { 0x0000ff89, 19177 }, /* KP_Tab */ - { 0x0000ff97, 19184 }, /* KP_Up */ - { 0x0000ff2d, 18433 }, /* Kana_Lock */ - { 0x0000ff2e, 18644 }, /* Kana_Shift */ - { 0x0000ff21, 18827 }, /* Kanji */ - { 0x0000ff37, 18833 }, /* Kanji_Bangou */ - { 0x0000ff26, 18852 }, /* Katakana */ - { 0x000003d3, 18861 }, /* Kcedilla */ - { 0x00000eff, 18879 }, /* Korean_Won */ - { 0x0000004c, 19194 }, /* L */ - { 0x0000ffc8, 19198 }, /* L1 */ - { 0x0000ffd1, 19201 }, /* L10 */ - { 0x0000ffc9, 19205 }, /* L2 */ - { 0x0000ffca, 19208 }, /* L3 */ - { 0x0000ffcb, 19211 }, /* L4 */ - { 0x0000ffcc, 19214 }, /* L5 */ - { 0x0000ffcd, 19217 }, /* L6 */ - { 0x0000ffce, 19220 }, /* L7 */ - { 0x0000ffcf, 19223 }, /* L8 */ - { 0x0000ffd0, 19226 }, /* L9 */ - { 0x000001c5, 19229 }, /* Lacute */ - { 0x0000fed4, 19243 }, /* Last_Virtual_Screen */ - { 0x01001e36, 19274 }, /* Lbelowdot */ - { 0x000001a5, 19294 }, /* Lcaron */ - { 0x000003a6, 19308 }, /* Lcedilla */ - { 0x0000ff51, 19326 }, /* Left */ - { 0x0000ff0a, 19516 }, /* Linefeed */ - { 0x010020a4, 19530 }, /* LiraSign */ - { 0x000001a3, 19599 }, /* Lstroke */ - { 0x0000004d, 19615 }, /* M */ - { 0x01001e40, 19619 }, /* Mabovedot */ - { 0x000006b5, 19653 }, /* Macedonia_DSE */ - { 0x000006b2, 19681 }, /* Macedonia_GJE */ - { 0x000006bc, 19709 }, /* Macedonia_KJE */ - { 0x000006a5, 19639 }, /* Macedonia_dse */ - { 0x000006a2, 19667 }, /* Macedonia_gje */ - { 0x000006ac, 19695 }, /* Macedonia_kje */ - { 0x0000ff3e, 19730 }, /* Mae_Koho */ - { 0x0000ff2c, 19780 }, /* Massyo */ - { 0x0000ff67, 19787 }, /* Menu */ - { 0x0000ffe7, 19792 }, /* Meta_L */ - { 0x0000ffe8, 19799 }, /* Meta_R */ - { 0x010020a5, 19806 }, /* MillSign */ - { 0x0000ff7e, 19829 }, /* Mode_switch */ - { 0x0000fe77, 19841 }, /* MouseKeys_Accel_Enable */ - { 0x0000fe76, 19864 }, /* MouseKeys_Enable */ - { 0x0000ff22, 19884 }, /* Muhenkan */ - { 0x0000ff20, 19893 }, /* Multi_key */ - { 0x0000ff3d, 19903 }, /* MultipleCandidate */ - { 0x0000004e, 20025 }, /* N */ - { 0x000001d1, 20035 }, /* Nacute */ - { 0x010020a6, 20049 }, /* NairaSign */ - { 0x000001d2, 20059 }, /* Ncaron */ - { 0x000003d1, 20073 }, /* Ncedilla */ - { 0x010020aa, 20091 }, /* NewSheqelSign */ - { 0x0000ff56, 20105 }, /* Next */ - { 0x0000fed2, 20110 }, /* Next_Virtual_Screen */ - { 0x00000000, 20173 }, /* NoSymbol */ - { 0x000000d1, 20237 }, /* Ntilde */ - { 0x0000ff7f, 20251 }, /* Num_Lock */ - { 0x0000004f, 20282 }, /* O */ - { 0x000013bc, 20596 }, /* OE */ - { 0x000000d3, 20286 }, /* Oacute */ - { 0x0100019f, 20300 }, /* Obarred */ - { 0x01001ecc, 20316 }, /* Obelowdot */ - { 0x010001d1, 20336 }, /* Ocaron */ - { 0x000000d4, 20350 }, /* Ocircumflex */ - { 0x01001ed0, 20374 }, /* Ocircumflexacute */ - { 0x01001ed8, 20408 }, /* Ocircumflexbelowdot */ - { 0x01001ed2, 20448 }, /* Ocircumflexgrave */ - { 0x01001ed4, 20482 }, /* Ocircumflexhook */ - { 0x01001ed6, 20514 }, /* Ocircumflextilde */ - { 0x000000d6, 20548 }, /* Odiaeresis */ - { 0x000001d5, 20570 }, /* Odoubleacute */ - { 0x000000d2, 20609 }, /* Ograve */ - { 0x01001ece, 20623 }, /* Ohook */ - { 0x010001a0, 20635 }, /* Ohorn */ - { 0x01001eda, 20647 }, /* Ohornacute */ - { 0x01001ee2, 20669 }, /* Ohornbelowdot */ - { 0x01001edc, 20697 }, /* Ohorngrave */ - { 0x01001ede, 20719 }, /* Ohornhook */ - { 0x01001ee0, 20739 }, /* Ohorntilde */ - { 0x000003d2, 20761 }, /* Omacron */ - { 0x000000d8, 20858 }, /* Ooblique */ - { 0x000000d8, 21378 }, /* Oslash */ - { 0x000000d5, 21392 }, /* Otilde */ - { 0x0000fe78, 21414 }, /* Overlay1_Enable */ - { 0x0000fe79, 21430 }, /* Overlay2_Enable */ - { 0x00000050, 21455 }, /* P */ - { 0x01001e56, 21459 }, /* Pabovedot */ - { 0x0000ff56, 21479 }, /* Page_Down */ - { 0x0000ff55, 21489 }, /* Page_Up */ - { 0x0000ff13, 21563 }, /* Pause */ - { 0x010020a7, 21608 }, /* PesetaSign */ - { 0x0000fefa, 21654 }, /* Pointer_Accelerate */ - { 0x0000fee9, 21673 }, /* Pointer_Button1 */ - { 0x0000feea, 21689 }, /* Pointer_Button2 */ - { 0x0000feeb, 21705 }, /* Pointer_Button3 */ - { 0x0000feec, 21721 }, /* Pointer_Button4 */ - { 0x0000feed, 21737 }, /* Pointer_Button5 */ - { 0x0000fee8, 21753 }, /* Pointer_Button_Dflt */ - { 0x0000feef, 21773 }, /* Pointer_DblClick1 */ - { 0x0000fef0, 21791 }, /* Pointer_DblClick2 */ - { 0x0000fef1, 21809 }, /* Pointer_DblClick3 */ - { 0x0000fef2, 21827 }, /* Pointer_DblClick4 */ - { 0x0000fef3, 21845 }, /* Pointer_DblClick5 */ - { 0x0000feee, 21863 }, /* Pointer_DblClick_Dflt */ - { 0x0000fefb, 21885 }, /* Pointer_DfltBtnNext */ - { 0x0000fefc, 21905 }, /* Pointer_DfltBtnPrev */ - { 0x0000fee3, 21925 }, /* Pointer_Down */ - { 0x0000fee6, 21938 }, /* Pointer_DownLeft */ - { 0x0000fee7, 21955 }, /* Pointer_DownRight */ - { 0x0000fef5, 21973 }, /* Pointer_Drag1 */ - { 0x0000fef6, 21987 }, /* Pointer_Drag2 */ - { 0x0000fef7, 22001 }, /* Pointer_Drag3 */ - { 0x0000fef8, 22015 }, /* Pointer_Drag4 */ - { 0x0000fefd, 22029 }, /* Pointer_Drag5 */ - { 0x0000fef4, 22043 }, /* Pointer_Drag_Dflt */ - { 0x0000fef9, 22061 }, /* Pointer_EnableKeys */ - { 0x0000fee0, 22080 }, /* Pointer_Left */ - { 0x0000fee1, 22093 }, /* Pointer_Right */ - { 0x0000fee2, 22107 }, /* Pointer_Up */ - { 0x0000fee4, 22118 }, /* Pointer_UpLeft */ - { 0x0000fee5, 22133 }, /* Pointer_UpRight */ - { 0x0000fed1, 22162 }, /* Prev_Virtual_Screen */ - { 0x0000ff3e, 22182 }, /* PreviousCandidate */ - { 0x0000ff61, 22200 }, /* Print */ - { 0x0000ff55, 22206 }, /* Prior */ - { 0x00000051, 22238 }, /* Q */ - { 0x00000052, 22299 }, /* R */ - { 0x0000ffd2, 22303 }, /* R1 */ - { 0x0000ffdb, 22306 }, /* R10 */ - { 0x0000ffdc, 22310 }, /* R11 */ - { 0x0000ffdd, 22314 }, /* R12 */ - { 0x0000ffde, 22318 }, /* R13 */ - { 0x0000ffdf, 22322 }, /* R14 */ - { 0x0000ffe0, 22326 }, /* R15 */ - { 0x0000ffd3, 22330 }, /* R2 */ - { 0x0000ffd4, 22333 }, /* R3 */ - { 0x0000ffd5, 22336 }, /* R4 */ - { 0x0000ffd6, 22339 }, /* R5 */ - { 0x0000ffd7, 22342 }, /* R6 */ - { 0x0000ffd8, 22345 }, /* R7 */ - { 0x0000ffd9, 22348 }, /* R8 */ - { 0x0000ffda, 22351 }, /* R9 */ - { 0x000001c0, 22354 }, /* Racute */ - { 0x000001d8, 22376 }, /* Rcaron */ - { 0x000003a3, 22390 }, /* Rcedilla */ - { 0x0000ff66, 22408 }, /* Redo */ - { 0x0000fe72, 22424 }, /* RepeatKeys_Enable */ - { 0x1000ff6c, 22442 }, /* Reset */ - { 0x0000ff0d, 22448 }, /* Return */ - { 0x0000ff53, 22455 }, /* Right */ - { 0x0000ff24, 22644 }, /* Romaji */ - { 0x010020a8, 22651 }, /* RupeeSign */ - { 0x00000053, 22661 }, /* S */ - { 0x0100018f, 22731 }, /* SCHWA */ - { 0x01001e60, 22665 }, /* Sabovedot */ - { 0x000001a6, 22685 }, /* Sacute */ - { 0x000001a9, 22699 }, /* Scaron */ - { 0x000001aa, 22713 }, /* Scedilla */ - { 0x000002de, 22743 }, /* Scircumflex */ - { 0x0000ff14, 22781 }, /* Scroll_Lock */ - { 0x0000ff60, 22809 }, /* Select */ - { 0x000006b1, 22854 }, /* Serbian_DJE */ - { 0x000006bf, 22878 }, /* Serbian_DZE */ - { 0x000006b8, 22901 }, /* Serbian_JE */ - { 0x000006b9, 22924 }, /* Serbian_LJE */ - { 0x000006ba, 22948 }, /* Serbian_NJE */ - { 0x000006bb, 22973 }, /* Serbian_TSHE */ - { 0x000006a1, 22842 }, /* Serbian_dje */ - { 0x000006af, 22866 }, /* Serbian_dze */ - { 0x000006a8, 22890 }, /* Serbian_je */ - { 0x000006a9, 22912 }, /* Serbian_lje */ - { 0x000006aa, 22936 }, /* Serbian_nje */ - { 0x000006ab, 22960 }, /* Serbian_tshe */ - { 0x0000ffe1, 23028 }, /* Shift_L */ - { 0x0000ffe6, 23036 }, /* Shift_Lock */ - { 0x0000ffe2, 23047 }, /* Shift_R */ - { 0x0000ff3c, 23094 }, /* SingleCandidate */ - { 0x01000d85, 23129 }, /* Sinh_a */ - { 0x01000d86, 23136 }, /* Sinh_aa */ - { 0x01000dcf, 23144 }, /* Sinh_aa2 */ - { 0x01000d87, 23153 }, /* Sinh_ae */ - { 0x01000dd0, 23161 }, /* Sinh_ae2 */ - { 0x01000d88, 23170 }, /* Sinh_aee */ - { 0x01000dd1, 23179 }, /* Sinh_aee2 */ - { 0x01000d93, 23189 }, /* Sinh_ai */ - { 0x01000ddb, 23197 }, /* Sinh_ai2 */ - { 0x01000dca, 23206 }, /* Sinh_al */ - { 0x01000d96, 23214 }, /* Sinh_au */ - { 0x01000dde, 23222 }, /* Sinh_au2 */ - { 0x01000db6, 23231 }, /* Sinh_ba */ - { 0x01000db7, 23239 }, /* Sinh_bha */ - { 0x01000da0, 23248 }, /* Sinh_ca */ - { 0x01000da1, 23256 }, /* Sinh_cha */ - { 0x01000da9, 23265 }, /* Sinh_dda */ - { 0x01000daa, 23274 }, /* Sinh_ddha */ - { 0x01000daf, 23284 }, /* Sinh_dha */ - { 0x01000db0, 23293 }, /* Sinh_dhha */ - { 0x01000d91, 23303 }, /* Sinh_e */ - { 0x01000dd9, 23310 }, /* Sinh_e2 */ - { 0x01000d92, 23318 }, /* Sinh_ee */ - { 0x01000dda, 23326 }, /* Sinh_ee2 */ - { 0x01000dc6, 23335 }, /* Sinh_fa */ - { 0x01000d9c, 23343 }, /* Sinh_ga */ - { 0x01000d9d, 23351 }, /* Sinh_gha */ - { 0x01000d83, 23360 }, /* Sinh_h2 */ - { 0x01000dc4, 23368 }, /* Sinh_ha */ - { 0x01000d89, 23376 }, /* Sinh_i */ - { 0x01000dd2, 23383 }, /* Sinh_i2 */ - { 0x01000d8a, 23391 }, /* Sinh_ii */ - { 0x01000dd3, 23399 }, /* Sinh_ii2 */ - { 0x01000da2, 23408 }, /* Sinh_ja */ - { 0x01000da3, 23416 }, /* Sinh_jha */ - { 0x01000da5, 23425 }, /* Sinh_jnya */ - { 0x01000d9a, 23435 }, /* Sinh_ka */ - { 0x01000d9b, 23443 }, /* Sinh_kha */ - { 0x01000df4, 23452 }, /* Sinh_kunddaliya */ - { 0x01000dbd, 23468 }, /* Sinh_la */ - { 0x01000dc5, 23476 }, /* Sinh_lla */ - { 0x01000d8f, 23485 }, /* Sinh_lu */ - { 0x01000ddf, 23493 }, /* Sinh_lu2 */ - { 0x01000d90, 23502 }, /* Sinh_luu */ - { 0x01000df3, 23511 }, /* Sinh_luu2 */ - { 0x01000db8, 23521 }, /* Sinh_ma */ - { 0x01000db9, 23529 }, /* Sinh_mba */ - { 0x01000db1, 23538 }, /* Sinh_na */ - { 0x01000dac, 23546 }, /* Sinh_ndda */ - { 0x01000db3, 23556 }, /* Sinh_ndha */ - { 0x01000d82, 23566 }, /* Sinh_ng */ - { 0x01000d9e, 23574 }, /* Sinh_ng2 */ - { 0x01000d9f, 23583 }, /* Sinh_nga */ - { 0x01000da6, 23592 }, /* Sinh_nja */ - { 0x01000dab, 23601 }, /* Sinh_nna */ - { 0x01000da4, 23610 }, /* Sinh_nya */ - { 0x01000d94, 23619 }, /* Sinh_o */ - { 0x01000ddc, 23626 }, /* Sinh_o2 */ - { 0x01000d95, 23634 }, /* Sinh_oo */ - { 0x01000ddd, 23642 }, /* Sinh_oo2 */ - { 0x01000db4, 23651 }, /* Sinh_pa */ - { 0x01000db5, 23659 }, /* Sinh_pha */ - { 0x01000dbb, 23668 }, /* Sinh_ra */ - { 0x01000d8d, 23676 }, /* Sinh_ri */ - { 0x01000d8e, 23684 }, /* Sinh_rii */ - { 0x01000dd8, 23693 }, /* Sinh_ru2 */ - { 0x01000df2, 23702 }, /* Sinh_ruu2 */ - { 0x01000dc3, 23712 }, /* Sinh_sa */ - { 0x01000dc1, 23720 }, /* Sinh_sha */ - { 0x01000dc2, 23729 }, /* Sinh_ssha */ - { 0x01000dad, 23739 }, /* Sinh_tha */ - { 0x01000dae, 23748 }, /* Sinh_thha */ - { 0x01000da7, 23758 }, /* Sinh_tta */ - { 0x01000da8, 23767 }, /* Sinh_ttha */ - { 0x01000d8b, 23777 }, /* Sinh_u */ - { 0x01000dd4, 23784 }, /* Sinh_u2 */ - { 0x01000d8c, 23792 }, /* Sinh_uu */ - { 0x01000dd6, 23800 }, /* Sinh_uu2 */ - { 0x01000dc0, 23809 }, /* Sinh_va */ - { 0x01000dba, 23817 }, /* Sinh_ya */ - { 0x0000fe73, 23856 }, /* SlowKeys_Enable */ - { 0x0000fe75, 23918 }, /* StickyKeys_Enable */ - { 0x0000ff66, 23945 }, /* SunAgain */ - { 0x0000ff7e, 23954 }, /* SunAltGraph */ - { 0x1005ff77, 23966 }, /* SunAudioLowerVolume */ - { 0x1005ff78, 23986 }, /* SunAudioMute */ - { 0x1005ff79, 23999 }, /* SunAudioRaiseVolume */ - { 0x0000ff20, 24019 }, /* SunCompose */ - { 0x1005ff72, 24030 }, /* SunCopy */ - { 0x1005ff75, 24038 }, /* SunCut */ - { 0x1005ff10, 24045 }, /* SunF36 */ - { 0x1005ff11, 24052 }, /* SunF37 */ - { 0x1005ff03, 24059 }, /* SunFA_Acute */ - { 0x1005ff05, 24071 }, /* SunFA_Cedilla */ - { 0x1005ff01, 24085 }, /* SunFA_Circum */ - { 0x1005ff04, 24098 }, /* SunFA_Diaeresis */ - { 0x1005ff00, 24114 }, /* SunFA_Grave */ - { 0x1005ff02, 24126 }, /* SunFA_Tilde */ - { 0x0000ff68, 24138 }, /* SunFind */ - { 0x1005ff71, 24146 }, /* SunFront */ - { 0x1005ff73, 24155 }, /* SunOpen */ - { 0x0000ff56, 24163 }, /* SunPageDown */ - { 0x0000ff55, 24175 }, /* SunPageUp */ - { 0x1005ff74, 24185 }, /* SunPaste */ - { 0x1005ff76, 24194 }, /* SunPowerSwitch */ - { 0x1005ff7d, 24209 }, /* SunPowerSwitchShift */ - { 0x0000ff61, 24229 }, /* SunPrint_Screen */ - { 0x1005ff70, 24245 }, /* SunProps */ - { 0x0000ff69, 24254 }, /* SunStop */ - { 0x1005ff60, 24262 }, /* SunSys_Req */ - { 0x0000ff65, 24273 }, /* SunUndo */ - { 0x1005ff7a, 24281 }, /* SunVideoDegauss */ - { 0x1005ff7b, 24297 }, /* SunVideoLowerBrightness */ - { 0x1005ff7c, 24321 }, /* SunVideoRaiseBrightness */ - { 0x0000ffeb, 24345 }, /* Super_L */ - { 0x0000ffec, 24353 }, /* Super_R */ - { 0x0000ff15, 24361 }, /* Sys_Req */ - { 0x1000ff6d, 24369 }, /* System */ - { 0x00000054, 24376 }, /* T */ - { 0x000000de, 25581 }, /* THORN */ - { 0x0000ff09, 24380 }, /* Tab */ - { 0x01001e6a, 24384 }, /* Tabovedot */ - { 0x000001ab, 24404 }, /* Tcaron */ - { 0x000001de, 24418 }, /* Tcedilla */ - { 0x0000fed5, 24464 }, /* Terminate_Server */ - { 0x00000ddf, 24481 }, /* Thai_baht */ - { 0x00000dba, 24491 }, /* Thai_bobaimai */ - { 0x00000da8, 24505 }, /* Thai_chochan */ - { 0x00000daa, 24518 }, /* Thai_chochang */ - { 0x00000da9, 24532 }, /* Thai_choching */ - { 0x00000dac, 24546 }, /* Thai_chochoe */ - { 0x00000dae, 24559 }, /* Thai_dochada */ - { 0x00000db4, 24572 }, /* Thai_dodek */ - { 0x00000dbd, 24583 }, /* Thai_fofa */ - { 0x00000dbf, 24593 }, /* Thai_fofan */ - { 0x00000dcb, 24604 }, /* Thai_hohip */ - { 0x00000dce, 24615 }, /* Thai_honokhuk */ - { 0x00000da2, 24629 }, /* Thai_khokhai */ - { 0x00000da5, 24642 }, /* Thai_khokhon */ - { 0x00000da3, 24655 }, /* Thai_khokhuat */ - { 0x00000da4, 24669 }, /* Thai_khokhwai */ - { 0x00000da6, 24683 }, /* Thai_khorakhang */ - { 0x00000da1, 24699 }, /* Thai_kokai */ - { 0x00000de5, 24710 }, /* Thai_lakkhangyao */ - { 0x00000df7, 24727 }, /* Thai_lekchet */ - { 0x00000df5, 24740 }, /* Thai_lekha */ - { 0x00000df6, 24751 }, /* Thai_lekhok */ - { 0x00000df9, 24763 }, /* Thai_lekkao */ - { 0x00000df1, 24775 }, /* Thai_leknung */ - { 0x00000df8, 24788 }, /* Thai_lekpaet */ - { 0x00000df3, 24801 }, /* Thai_leksam */ - { 0x00000df4, 24813 }, /* Thai_leksi */ - { 0x00000df2, 24824 }, /* Thai_leksong */ - { 0x00000df0, 24837 }, /* Thai_leksun */ - { 0x00000dcc, 24849 }, /* Thai_lochula */ - { 0x00000dc5, 24862 }, /* Thai_loling */ - { 0x00000dc6, 24874 }, /* Thai_lu */ - { 0x00000deb, 24882 }, /* Thai_maichattawa */ - { 0x00000de8, 24899 }, /* Thai_maiek */ - { 0x00000dd1, 24910 }, /* Thai_maihanakat */ - { 0x00000dde, 24926 }, /* Thai_maihanakat_maitho */ - { 0x00000de7, 24949 }, /* Thai_maitaikhu */ - { 0x00000de9, 24964 }, /* Thai_maitho */ - { 0x00000dea, 24976 }, /* Thai_maitri */ - { 0x00000de6, 24988 }, /* Thai_maiyamok */ - { 0x00000dc1, 25002 }, /* Thai_moma */ - { 0x00000da7, 25012 }, /* Thai_ngongu */ - { 0x00000ded, 25024 }, /* Thai_nikhahit */ - { 0x00000db3, 25038 }, /* Thai_nonen */ - { 0x00000db9, 25049 }, /* Thai_nonu */ - { 0x00000dcd, 25059 }, /* Thai_oang */ - { 0x00000dcf, 25069 }, /* Thai_paiyannoi */ - { 0x00000dda, 25084 }, /* Thai_phinthu */ - { 0x00000dbe, 25097 }, /* Thai_phophan */ - { 0x00000dbc, 25110 }, /* Thai_phophung */ - { 0x00000dc0, 25124 }, /* Thai_phosamphao */ - { 0x00000dbb, 25140 }, /* Thai_popla */ - { 0x00000dc3, 25151 }, /* Thai_rorua */ - { 0x00000dc4, 25162 }, /* Thai_ru */ - { 0x00000dd0, 25170 }, /* Thai_saraa */ - { 0x00000dd2, 25181 }, /* Thai_saraaa */ - { 0x00000de1, 25193 }, /* Thai_saraae */ - { 0x00000de4, 25205 }, /* Thai_saraaimaimalai */ - { 0x00000de3, 25225 }, /* Thai_saraaimaimuan */ - { 0x00000dd3, 25244 }, /* Thai_saraam */ - { 0x00000de0, 25256 }, /* Thai_sarae */ - { 0x00000dd4, 25267 }, /* Thai_sarai */ - { 0x00000dd5, 25278 }, /* Thai_saraii */ - { 0x00000de2, 25290 }, /* Thai_sarao */ - { 0x00000dd8, 25301 }, /* Thai_sarau */ - { 0x00000dd6, 25312 }, /* Thai_saraue */ - { 0x00000dd7, 25324 }, /* Thai_sarauee */ - { 0x00000dd9, 25337 }, /* Thai_sarauu */ - { 0x00000dc9, 25349 }, /* Thai_sorusi */ - { 0x00000dc8, 25361 }, /* Thai_sosala */ - { 0x00000dab, 25373 }, /* Thai_soso */ - { 0x00000dca, 25383 }, /* Thai_sosua */ - { 0x00000dec, 25394 }, /* Thai_thanthakhat */ - { 0x00000db1, 25411 }, /* Thai_thonangmontho */ - { 0x00000db2, 25430 }, /* Thai_thophuthao */ - { 0x00000db7, 25446 }, /* Thai_thothahan */ - { 0x00000db0, 25461 }, /* Thai_thothan */ - { 0x00000db8, 25474 }, /* Thai_thothong */ - { 0x00000db6, 25488 }, /* Thai_thothung */ - { 0x00000daf, 25502 }, /* Thai_topatak */ - { 0x00000db5, 25515 }, /* Thai_totao */ - { 0x00000dc7, 25526 }, /* Thai_wowaen */ - { 0x00000dc2, 25538 }, /* Thai_yoyak */ - { 0x00000dad, 25549 }, /* Thai_yoying */ - { 0x000000de, 25587 }, /* Thorn */ - { 0x0000ff2b, 25834 }, /* Touroku */ - { 0x000003ac, 25870 }, /* Tslash */ - { 0x00000055, 25929 }, /* U */ - { 0x000000da, 25933 }, /* Uacute */ - { 0x01001ee4, 25947 }, /* Ubelowdot */ - { 0x000002dd, 25967 }, /* Ubreve */ - { 0x000000db, 25981 }, /* Ucircumflex */ - { 0x000000dc, 26005 }, /* Udiaeresis */ - { 0x000001db, 26027 }, /* Udoubleacute */ - { 0x000000d9, 26053 }, /* Ugrave */ - { 0x01001ee6, 26067 }, /* Uhook */ - { 0x010001af, 26079 }, /* Uhorn */ - { 0x01001ee8, 26091 }, /* Uhornacute */ - { 0x01001ef0, 26113 }, /* Uhornbelowdot */ - { 0x01001eea, 26141 }, /* Uhorngrave */ - { 0x01001eec, 26163 }, /* Uhornhook */ - { 0x01001eee, 26183 }, /* Uhorntilde */ - { 0x000006bd, 26231 }, /* Ukrainian_GHE_WITH_UPTURN */ - { 0x000006b6, 26269 }, /* Ukrainian_I */ - { 0x000006b4, 26294 }, /* Ukrainian_IE */ - { 0x000006b7, 26320 }, /* Ukrainian_YI */ - { 0x000006ad, 26205 }, /* Ukrainian_ghe_with_upturn */ - { 0x000006a6, 26257 }, /* Ukrainian_i */ - { 0x000006a4, 26281 }, /* Ukrainian_ie */ - { 0x000006a7, 26307 }, /* Ukrainian_yi */ - { 0x000006b6, 26344 }, /* Ukranian_I */ - { 0x000006b4, 26367 }, /* Ukranian_JE */ - { 0x000006b7, 26391 }, /* Ukranian_YI */ - { 0x000006a6, 26333 }, /* Ukranian_i */ - { 0x000006a4, 26355 }, /* Ukranian_je */ - { 0x000006a7, 26379 }, /* Ukranian_yi */ - { 0x000003de, 26403 }, /* Umacron */ - { 0x0000ff65, 26439 }, /* Undo */ - { 0x000003d9, 26450 }, /* Uogonek */ - { 0x0000ff52, 26466 }, /* Up */ - { 0x000001d9, 26534 }, /* Uring */ - { 0x1000ff6e, 26546 }, /* User */ - { 0x000003dd, 26551 }, /* Utilde */ - { 0x00000056, 26565 }, /* V */ - { 0x00ffffff, 26613 }, /* VoidSymbol */ - { 0x00000057, 26627 }, /* W */ - { 0x01001e82, 26631 }, /* Wacute */ - { 0x01000174, 26645 }, /* Wcircumflex */ - { 0x01001e84, 26669 }, /* Wdiaeresis */ - { 0x01001e80, 26691 }, /* Wgrave */ - { 0x010020a9, 26705 }, /* WonSign */ - { 0x00000058, 26713 }, /* X */ - { 0x100811b9, 26737 }, /* XF8610ChannelsDown */ - { 0x100811b8, 26756 }, /* XF8610ChannelsUp */ - { 0x1008126f, 26773 }, /* XF863DMode */ - { 0x10081230, 26816 }, /* XF86ALSToggle */ - { 0x1008ff39, 26784 }, /* XF86AddFavorite */ - { 0x100811ad, 26800 }, /* XF86Addressbook */ - { 0x10081244, 26871 }, /* XF86AppSelect */ - { 0x1008ff50, 26830 }, /* XF86ApplicationLeft */ - { 0x1008ff51, 26850 }, /* XF86ApplicationRight */ - { 0x10081177, 26885 }, /* XF86AspectRatio */ - { 0x10081247, 26901 }, /* XF86Assistant */ - { 0x1008121c, 26915 }, /* XF86AttendantOff */ - { 0x1008121b, 26932 }, /* XF86AttendantOn */ - { 0x1008121d, 26948 }, /* XF86AttendantToggle */ - { 0x10081188, 26968 }, /* XF86Audio */ - { 0x1008ff9b, 26978 }, /* XF86AudioCycleTrack */ - { 0x1008126e, 26998 }, /* XF86AudioDesc */ - { 0x1008ff97, 27012 }, /* XF86AudioForward */ - { 0x1008ff11, 27029 }, /* XF86AudioLowerVolume */ - { 0x1008ff32, 27050 }, /* XF86AudioMedia */ - { 0x1008ffb2, 27065 }, /* XF86AudioMicMute */ - { 0x1008ff12, 27082 }, /* XF86AudioMute */ - { 0x1008ff17, 27096 }, /* XF86AudioNext */ - { 0x1008ff31, 27110 }, /* XF86AudioPause */ - { 0x1008ff14, 27125 }, /* XF86AudioPlay */ - { 0x1008ffb6, 27139 }, /* XF86AudioPreset */ - { 0x1008ff16, 27155 }, /* XF86AudioPrev */ - { 0x1008ff13, 27169 }, /* XF86AudioRaiseVolume */ - { 0x1008ff99, 27190 }, /* XF86AudioRandomPlay */ - { 0x1008ff1c, 27210 }, /* XF86AudioRecord */ - { 0x1008ff98, 27226 }, /* XF86AudioRepeat */ - { 0x1008ff3e, 27242 }, /* XF86AudioRewind */ - { 0x1008ff15, 27258 }, /* XF86AudioStop */ - { 0x1008ff8d, 27272 }, /* XF86Away */ - { 0x1008ff26, 27281 }, /* XF86Back */ - { 0x1008ff3f, 27290 }, /* XF86BackForward */ - { 0x1008ff93, 27306 }, /* XF86Battery */ - { 0x1008ffa6, 27318 }, /* XF86Blue */ - { 0x1008ff94, 27327 }, /* XF86Bluetooth */ - { 0x1008ff52, 27341 }, /* XF86Book */ - { 0x1008119b, 27350 }, /* XF86Break */ - { 0x1008ff3b, 27360 }, /* XF86BrightnessAdjust */ - { 0x100810f4, 27381 }, /* XF86BrightnessAuto */ - { 0x10081251, 27400 }, /* XF86BrightnessMax */ - { 0x10081250, 27418 }, /* XF86BrightnessMin */ - { 0x10081240, 27436 }, /* XF86Buttonconfig */ - { 0x1008ff53, 27606 }, /* XF86CD */ - { 0x1008ff54, 27453 }, /* XF86Calculater */ - { 0x1008ff1d, 27468 }, /* XF86Calculator */ - { 0x1008ff20, 27483 }, /* XF86Calendar */ - { 0x10081218, 27496 }, /* XF86CameraDown */ - { 0x10081210, 27511 }, /* XF86CameraFocus */ - { 0x10081219, 27527 }, /* XF86CameraLeft */ - { 0x1008121a, 27542 }, /* XF86CameraRight */ - { 0x10081217, 27558 }, /* XF86CameraUp */ - { 0x10081215, 27571 }, /* XF86CameraZoomIn */ - { 0x10081216, 27588 }, /* XF86CameraZoomOut */ - { 0x10081193, 27613 }, /* XF86ChannelDown */ - { 0x10081192, 27629 }, /* XF86ChannelUp */ - { 0x1008ff55, 27643 }, /* XF86Clear */ - { 0x1008fe21, 27653 }, /* XF86ClearGrab */ - { 0x1008ff56, 27667 }, /* XF86Close */ - { 0x1008ff3d, 27677 }, /* XF86Community */ - { 0x100811b6, 27691 }, /* XF86ContextMenu */ - { 0x1008ff22, 27707 }, /* XF86ContrastAdjust */ - { 0x10081243, 27726 }, /* XF86ControlPanel */ - { 0x1008ff57, 27743 }, /* XF86Copy */ - { 0x1008ff58, 27752 }, /* XF86Cut */ - { 0x1008ff9c, 27760 }, /* XF86CycleAngle */ - { 0x1008ff5a, 27856 }, /* XF86DOS */ - { 0x10081185, 27864 }, /* XF86DVD */ - { 0x10081277, 27775 }, /* XF86Data */ - { 0x100811aa, 27784 }, /* XF86Database */ - { 0x1008ff59, 27797 }, /* XF86Display */ - { 0x100810f5, 27809 }, /* XF86DisplayOff */ - { 0x100811af, 27824 }, /* XF86DisplayToggle */ - { 0x1008ff5b, 27842 }, /* XF86Documents */ - { 0x100811a6, 27872 }, /* XF86Editor */ - { 0x1008ff2c, 27883 }, /* XF86Eject */ - { 0x1008ff5c, 27893 }, /* XF86Excel */ - { 0x1008ff5d, 27903 }, /* XF86Explorer */ - { 0x10081275, 27916 }, /* XF86FastReverse */ - { 0x1008ff30, 27932 }, /* XF86Favorites */ - { 0x1008ff3c, 27946 }, /* XF86Finance */ - { 0x100811d0, 27958 }, /* XF86Fn */ - { 0x100811e5, 27976 }, /* XF86FnRightShift */ - { 0x100811d1, 27965 }, /* XF86Fn_Esc */ - { 0x1008ff27, 27993 }, /* XF86Forward */ - { 0x1008ff9d, 28005 }, /* XF86FrameBack */ - { 0x1008ff9e, 28019 }, /* XF86FrameForward */ - { 0x1008ffb8, 28036 }, /* XF86FullScreen */ - { 0x1008ff5e, 28051 }, /* XF86Game */ - { 0x1008ff5f, 28060 }, /* XF86Go */ - { 0x100811a8, 28067 }, /* XF86GraphicsEditor */ - { 0x1008ffa4, 28086 }, /* XF86Green */ - { 0x100811be, 28096 }, /* XF86HangupPhone */ - { 0x1008ffa8, 28112 }, /* XF86Hibernate */ - { 0x1008ff37, 28126 }, /* XF86History */ - { 0x1008ff18, 28138 }, /* XF86HomePage */ - { 0x1008ff3a, 28151 }, /* XF86HotLinks */ - { 0x100811ba, 28164 }, /* XF86Images */ - { 0x10081166, 28175 }, /* XF86Info */ - { 0x10081242, 28195 }, /* XF86Journal */ - { 0x1008ff06, 28207 }, /* XF86KbdBrightnessDown */ - { 0x1008ff05, 28229 }, /* XF86KbdBrightnessUp */ - { 0x10081264, 28249 }, /* XF86KbdInputAssistAccept */ - { 0x10081265, 28274 }, /* XF86KbdInputAssistCancel */ - { 0x10081261, 28299 }, /* XF86KbdInputAssistNext */ - { 0x10081263, 28322 }, /* XF86KbdInputAssistNextgroup */ - { 0x10081260, 28350 }, /* XF86KbdInputAssistPrev */ - { 0x10081262, 28373 }, /* XF86KbdInputAssistPrevgroup */ - { 0x100812b8, 28401 }, /* XF86KbdLcdMenu1 */ - { 0x100812b9, 28417 }, /* XF86KbdLcdMenu2 */ - { 0x100812ba, 28433 }, /* XF86KbdLcdMenu3 */ - { 0x100812bb, 28449 }, /* XF86KbdLcdMenu4 */ - { 0x100812bc, 28465 }, /* XF86KbdLcdMenu5 */ - { 0x1008ff04, 28481 }, /* XF86KbdLightOnOff */ - { 0x1008ffb3, 28499 }, /* XF86Keyboard */ - { 0x1008ff40, 28512 }, /* XF86Launch0 */ - { 0x1008ff41, 28524 }, /* XF86Launch1 */ - { 0x1008ff42, 28536 }, /* XF86Launch2 */ - { 0x1008ff43, 28548 }, /* XF86Launch3 */ - { 0x1008ff44, 28560 }, /* XF86Launch4 */ - { 0x1008ff45, 28572 }, /* XF86Launch5 */ - { 0x1008ff46, 28584 }, /* XF86Launch6 */ - { 0x1008ff47, 28596 }, /* XF86Launch7 */ - { 0x1008ff48, 28608 }, /* XF86Launch8 */ - { 0x1008ff49, 28620 }, /* XF86Launch9 */ - { 0x1008ff4a, 28632 }, /* XF86LaunchA */ - { 0x1008ff4b, 28644 }, /* XF86LaunchB */ - { 0x1008ff4c, 28656 }, /* XF86LaunchC */ - { 0x1008ff4d, 28668 }, /* XF86LaunchD */ - { 0x1008ff4e, 28680 }, /* XF86LaunchE */ - { 0x1008ff4f, 28692 }, /* XF86LaunchF */ - { 0x10081269, 28704 }, /* XF86LeftDown */ - { 0x10081268, 28717 }, /* XF86LeftUp */ - { 0x1008ff35, 28728 }, /* XF86LightBulb */ - { 0x1008121e, 28742 }, /* XF86LightsToggle */ - { 0x1008fe25, 28759 }, /* XF86LogGrabInfo */ - { 0x1008ff61, 28775 }, /* XF86LogOff */ - { 0x1008fe24, 28786 }, /* XF86LogWindowTree */ - { 0x10081290, 28804 }, /* XF86Macro1 */ - { 0x10081299, 28815 }, /* XF86Macro10 */ - { 0x1008129a, 28827 }, /* XF86Macro11 */ - { 0x1008129b, 28839 }, /* XF86Macro12 */ - { 0x1008129c, 28851 }, /* XF86Macro13 */ - { 0x1008129d, 28863 }, /* XF86Macro14 */ - { 0x1008129e, 28875 }, /* XF86Macro15 */ - { 0x1008129f, 28887 }, /* XF86Macro16 */ - { 0x100812a0, 28899 }, /* XF86Macro17 */ - { 0x100812a1, 28911 }, /* XF86Macro18 */ - { 0x100812a2, 28923 }, /* XF86Macro19 */ - { 0x10081291, 28935 }, /* XF86Macro2 */ - { 0x100812a3, 28946 }, /* XF86Macro20 */ - { 0x100812a4, 28958 }, /* XF86Macro21 */ - { 0x100812a5, 28970 }, /* XF86Macro22 */ - { 0x100812a6, 28982 }, /* XF86Macro23 */ - { 0x100812a7, 28994 }, /* XF86Macro24 */ - { 0x100812a8, 29006 }, /* XF86Macro25 */ - { 0x100812a9, 29018 }, /* XF86Macro26 */ - { 0x100812aa, 29030 }, /* XF86Macro27 */ - { 0x100812ab, 29042 }, /* XF86Macro28 */ - { 0x100812ac, 29054 }, /* XF86Macro29 */ - { 0x10081292, 29066 }, /* XF86Macro3 */ - { 0x100812ad, 29077 }, /* XF86Macro30 */ - { 0x10081293, 29089 }, /* XF86Macro4 */ - { 0x10081294, 29100 }, /* XF86Macro5 */ - { 0x10081295, 29111 }, /* XF86Macro6 */ - { 0x10081296, 29122 }, /* XF86Macro7 */ - { 0x10081297, 29133 }, /* XF86Macro8 */ - { 0x10081298, 29144 }, /* XF86Macro9 */ - { 0x100812b3, 29155 }, /* XF86MacroPreset1 */ - { 0x100812b4, 29172 }, /* XF86MacroPreset2 */ - { 0x100812b5, 29189 }, /* XF86MacroPreset3 */ - { 0x100812b2, 29206 }, /* XF86MacroPresetCycle */ - { 0x100812b0, 29227 }, /* XF86MacroRecordStart */ - { 0x100812b1, 29248 }, /* XF86MacroRecordStop */ - { 0x1008ff19, 29268 }, /* XF86Mail */ - { 0x1008ff90, 29277 }, /* XF86MailForward */ - { 0x1008ff62, 29293 }, /* XF86Market */ - { 0x100811b7, 29304 }, /* XF86MediaRepeat */ - { 0x1008126b, 29320 }, /* XF86MediaTopMenu */ - { 0x1008ff63, 29337 }, /* XF86Meeting */ - { 0x1008ff1e, 29349 }, /* XF86Memo */ - { 0x1008ff65, 29358 }, /* XF86MenuKB */ - { 0x1008ff66, 29369 }, /* XF86MenuPB */ - { 0x1008ff8e, 29380 }, /* XF86Messenger */ - { 0x1008ff01, 29394 }, /* XF86ModeLock */ - { 0x1008ff07, 29407 }, /* XF86MonBrightnessCycle */ - { 0x1008ff03, 29430 }, /* XF86MonBrightnessDown */ - { 0x1008ff02, 29452 }, /* XF86MonBrightnessUp */ - { 0x1008ff92, 29472 }, /* XF86Music */ - { 0x1008ff33, 29482 }, /* XF86MyComputer */ - { 0x1008ff67, 29497 }, /* XF86MySites */ - { 0x1008ff68, 29509 }, /* XF86New */ - { 0x1008ff69, 29517 }, /* XF86News */ - { 0x10081270, 29541 }, /* XF86NextFavorite */ - { 0x1008fe22, 29526 }, /* XF86Next_VMode */ - { 0x100811bc, 29558 }, /* XF86NotificationCenter */ - { 0x10081200, 29581 }, /* XF86Numeric0 */ - { 0x10081201, 29594 }, /* XF86Numeric1 */ - { 0x1008126c, 29607 }, /* XF86Numeric11 */ - { 0x1008126d, 29621 }, /* XF86Numeric12 */ - { 0x10081202, 29635 }, /* XF86Numeric2 */ - { 0x10081203, 29648 }, /* XF86Numeric3 */ - { 0x10081204, 29661 }, /* XF86Numeric4 */ - { 0x10081205, 29674 }, /* XF86Numeric5 */ - { 0x10081206, 29687 }, /* XF86Numeric6 */ - { 0x10081207, 29700 }, /* XF86Numeric7 */ - { 0x10081208, 29713 }, /* XF86Numeric8 */ - { 0x10081209, 29726 }, /* XF86Numeric9 */ - { 0x1008120c, 29739 }, /* XF86NumericA */ - { 0x1008120d, 29752 }, /* XF86NumericB */ - { 0x1008120e, 29765 }, /* XF86NumericC */ - { 0x1008120f, 29778 }, /* XF86NumericD */ - { 0x1008120b, 29791 }, /* XF86NumericPound */ - { 0x1008120a, 29808 }, /* XF86NumericStar */ - { 0x1008ff6a, 29824 }, /* XF86OfficeHome */ - { 0x10081278, 29839 }, /* XF86OnScreenKeyboard */ - { 0x1008ff6b, 29860 }, /* XF86Open */ - { 0x1008ff38, 29869 }, /* XF86OpenURL */ - { 0x1008ff6c, 29881 }, /* XF86Option */ - { 0x1008ff6d, 29892 }, /* XF86Paste */ - { 0x10081272, 29902 }, /* XF86PauseRecord */ - { 0x1008ff6e, 29918 }, /* XF86Phone */ - { 0x100811bd, 29928 }, /* XF86PickupPhone */ - { 0x1008ff91, 29944 }, /* XF86Pictures */ - { 0x1008ff21, 29957 }, /* XF86PowerDown */ - { 0x1008ff2a, 29971 }, /* XF86PowerOff */ - { 0x100811a9, 29984 }, /* XF86Presentation */ - { 0x1008fe23, 30001 }, /* XF86Prev_VMode */ - { 0x10081279, 30016 }, /* XF86PrivacyScreenToggle */ - { 0x1008ff70, 30040 }, /* XF86Q */ - { 0x1008ffb5, 30087 }, /* XF86RFKill */ - { 0x1008ffa3, 30046 }, /* XF86Red */ - { 0x1008ff29, 30054 }, /* XF86Refresh */ - { 0x1008ff73, 30066 }, /* XF86Reload */ - { 0x1008ff72, 30077 }, /* XF86Reply */ - { 0x10081267, 30098 }, /* XF86RightDown */ - { 0x10081266, 30112 }, /* XF86RightUp */ - { 0x1008ff24, 30124 }, /* XF86RockerDown */ - { 0x1008ff25, 30139 }, /* XF86RockerEnter */ - { 0x1008ff23, 30155 }, /* XF86RockerUp */ - { 0x1008126a, 30168 }, /* XF86RootMenu */ - { 0x1008ff74, 30181 }, /* XF86RotateWindows */ - { 0x1008ff76, 30199 }, /* XF86RotationKB */ - { 0x1008ffb7, 30214 }, /* XF86RotationLockToggle */ - { 0x1008ff75, 30237 }, /* XF86RotationPB */ - { 0x1008ff77, 30252 }, /* XF86Save */ - { 0x1008ff2d, 30261 }, /* XF86ScreenSaver */ - { 0x10081245, 30277 }, /* XF86Screensaver */ - { 0x1008ff7a, 30293 }, /* XF86ScrollClick */ - { 0x1008ff79, 30309 }, /* XF86ScrollDown */ - { 0x1008ff78, 30324 }, /* XF86ScrollUp */ - { 0x1008ff1b, 30337 }, /* XF86Search */ - { 0x1008ffa0, 30348 }, /* XF86Select */ - { 0x1008127a, 30359 }, /* XF86SelectiveScreenshot */ - { 0x1008ff7b, 30383 }, /* XF86Send */ - { 0x1008ff36, 30392 }, /* XF86Shop */ - { 0x1008ff2f, 30401 }, /* XF86Sleep */ - { 0x10081276, 30411 }, /* XF86SlowReverse */ - { 0x1008ff7c, 30427 }, /* XF86Spell */ - { 0x100811b0, 30437 }, /* XF86SpellCheck */ - { 0x1008ff7d, 30452 }, /* XF86SplitScreen */ - { 0x1008ff10, 30468 }, /* XF86Standby */ - { 0x1008ff1a, 30480 }, /* XF86Start */ - { 0x1008ff28, 30490 }, /* XF86Stop */ - { 0x10081271, 30499 }, /* XF86StopRecord */ - { 0x1008ff9a, 30514 }, /* XF86Subtitle */ - { 0x1008ff7e, 30527 }, /* XF86Support */ - { 0x1008ffa7, 30539 }, /* XF86Suspend */ - { 0x1008fe01, 30551 }, /* XF86Switch_VT_1 */ - { 0x1008fe0a, 30567 }, /* XF86Switch_VT_10 */ - { 0x1008fe0b, 30584 }, /* XF86Switch_VT_11 */ - { 0x1008fe0c, 30601 }, /* XF86Switch_VT_12 */ - { 0x1008fe02, 30618 }, /* XF86Switch_VT_2 */ - { 0x1008fe03, 30634 }, /* XF86Switch_VT_3 */ - { 0x1008fe04, 30650 }, /* XF86Switch_VT_4 */ - { 0x1008fe05, 30666 }, /* XF86Switch_VT_5 */ - { 0x1008fe06, 30682 }, /* XF86Switch_VT_6 */ - { 0x1008fe07, 30698 }, /* XF86Switch_VT_7 */ - { 0x1008fe08, 30714 }, /* XF86Switch_VT_8 */ - { 0x1008fe09, 30730 }, /* XF86Switch_VT_9 */ - { 0x1008ff7f, 30762 }, /* XF86TaskPane */ - { 0x10081241, 30746 }, /* XF86Taskmanager */ - { 0x1008ff80, 30775 }, /* XF86Terminal */ - { 0x1008ff9f, 30788 }, /* XF86Time */ - { 0x1008ff1f, 30797 }, /* XF86ToDoList */ - { 0x1008ff81, 30810 }, /* XF86Tools */ - { 0x1008ffa2, 30820 }, /* XF86TopMenu */ - { 0x1008ffb1, 30832 }, /* XF86TouchpadOff */ - { 0x1008ffb0, 30848 }, /* XF86TouchpadOn */ - { 0x1008ffa9, 30863 }, /* XF86TouchpadToggle */ - { 0x1008ff82, 30882 }, /* XF86Travel */ - { 0x1008ff96, 30950 }, /* XF86UWB */ - { 0x1008fe20, 30893 }, /* XF86Ungrab */ - { 0x10081274, 30904 }, /* XF86Unmute */ - { 0x1008ff85, 30915 }, /* XF86User1KB */ - { 0x1008ff86, 30927 }, /* XF86User2KB */ - { 0x1008ff84, 30939 }, /* XF86UserPB */ - { 0x10081273, 31007 }, /* XF86VOD */ - { 0x1008ff34, 30958 }, /* XF86VendorHome */ - { 0x1008ff87, 30973 }, /* XF86Video */ - { 0x100811a0, 30983 }, /* XF86VideoPhone */ - { 0x1008ffa1, 30998 }, /* XF86View */ - { 0x10081246, 31015 }, /* XF86VoiceCommand */ - { 0x100811ac, 31032 }, /* XF86Voicemail */ - { 0x1008ff95, 31084 }, /* XF86WLAN */ - { 0x10081211, 31102 }, /* XF86WPSButton */ - { 0x1008ffb4, 31116 }, /* XF86WWAN */ - { 0x1008ff2e, 31125 }, /* XF86WWW */ - { 0x1008ff2b, 31046 }, /* XF86WakeUp */ - { 0x1008ff8f, 31057 }, /* XF86WebCam */ - { 0x1008ff88, 31068 }, /* XF86WheelButton */ - { 0x1008ff89, 31093 }, /* XF86Word */ - { 0x1008ff8a, 31133 }, /* XF86Xfer */ - { 0x1008ffa5, 31142 }, /* XF86Yellow */ - { 0x1008ff8b, 31153 }, /* XF86ZoomIn */ - { 0x1008ff8c, 31164 }, /* XF86ZoomOut */ - { 0x100811a4, 31176 }, /* XF86ZoomReset */ - { 0x1008ff60, 28184 }, /* XF86iTouch */ - { 0x01001e8a, 26717 }, /* Xabovedot */ - { 0x00000059, 31190 }, /* Y */ - { 0x000000dd, 31194 }, /* Yacute */ - { 0x01001ef4, 31208 }, /* Ybelowdot */ - { 0x01000176, 31228 }, /* Ycircumflex */ - { 0x000013be, 31263 }, /* Ydiaeresis */ - { 0x01001ef2, 31278 }, /* Ygrave */ - { 0x01001ef6, 31292 }, /* Yhook */ - { 0x01001ef8, 31304 }, /* Ytilde */ - { 0x0000005a, 31318 }, /* Z */ - { 0x000001af, 31322 }, /* Zabovedot */ - { 0x000001ac, 31342 }, /* Zacute */ - { 0x000001ae, 31356 }, /* Zcaron */ - { 0x0000ff3d, 31370 }, /* Zen_Koho */ - { 0x0000ff28, 31379 }, /* Zenkaku */ - { 0x0000ff2a, 31387 }, /* Zenkaku_Hankaku */ - { 0x010001b5, 31430 }, /* Zstroke */ - { 0x00000061, 400 }, /* a */ - { 0x000000e1, 409 }, /* aacute */ - { 0x01001ea1, 426 }, /* abelowdot */ - { 0x000001ff, 436 }, /* abovedot */ - { 0x000001e3, 452 }, /* abreve */ - { 0x01001eaf, 471 }, /* abreveacute */ - { 0x01001eb7, 498 }, /* abrevebelowdot */ - { 0x01001eb1, 525 }, /* abrevegrave */ - { 0x01001eb3, 548 }, /* abrevehook */ - { 0x01001eb5, 571 }, /* abrevetilde */ - { 0x000000e2, 634 }, /* acircumflex */ - { 0x01001ea5, 663 }, /* acircumflexacute */ - { 0x01001ead, 700 }, /* acircumflexbelowdot */ - { 0x01001ea7, 737 }, /* acircumflexgrave */ - { 0x01001ea9, 770 }, /* acircumflexhook */ - { 0x01001eab, 803 }, /* acircumflextilde */ - { 0x000000b4, 820 }, /* acute */ - { 0x000000e4, 837 }, /* adiaeresis */ - { 0x000000e6, 851 }, /* ae */ - { 0x000000e0, 861 }, /* agrave */ - { 0x01001ea3, 874 }, /* ahook */ - { 0x000003e0, 900 }, /* amacron */ - { 0x00000026, 908 }, /* ampersand */ - { 0x000001b1, 926 }, /* aogonek */ - { 0x00000027, 934 }, /* apostrophe */ - { 0x01002248, 945 }, /* approxeq */ - { 0x000008c8, 954 }, /* approximate */ - { 0x000000e5, 2042 }, /* aring */ - { 0x0000005e, 3260 }, /* asciicircum */ - { 0x0000007e, 3272 }, /* asciitilde */ - { 0x0000002a, 3283 }, /* asterisk */ - { 0x00000040, 3292 }, /* at */ - { 0x000000e3, 3302 }, /* atilde */ - { 0x00000062, 3330 }, /* b */ - { 0x01001e03, 3342 }, /* babovedot */ - { 0x0000005c, 3352 }, /* backslash */ - { 0x00000af4, 3380 }, /* ballotcross */ - { 0x0000007c, 3392 }, /* bar */ - { 0x01002235, 3396 }, /* because */ - { 0x000009df, 3410 }, /* blank */ - { 0x100000fc, 3416 }, /* block */ - { 0x000008a5, 3422 }, /* botintegral */ - { 0x000008ac, 3434 }, /* botleftparens */ - { 0x000008a8, 3448 }, /* botleftsqbracket */ - { 0x000008b2, 3465 }, /* botleftsummation */ - { 0x000008ae, 3482 }, /* botrightparens */ - { 0x000008aa, 3497 }, /* botrightsqbracket */ - { 0x000008b6, 3515 }, /* botrightsummation */ - { 0x000009f6, 3533 }, /* bott */ - { 0x000008b4, 3538 }, /* botvertsummationconnector */ - { 0x0000007b, 3582 }, /* braceleft */ - { 0x0000007d, 3592 }, /* braceright */ - { 0x0000005b, 3603 }, /* bracketleft */ - { 0x0000005d, 3615 }, /* bracketright */ - { 0x01002800, 3628 }, /* braille_blank */ - { 0x0000fff1, 3642 }, /* braille_dot_1 */ - { 0x0000fffa, 3656 }, /* braille_dot_10 */ - { 0x0000fff2, 3671 }, /* braille_dot_2 */ - { 0x0000fff3, 3685 }, /* braille_dot_3 */ - { 0x0000fff4, 3699 }, /* braille_dot_4 */ - { 0x0000fff5, 3713 }, /* braille_dot_5 */ - { 0x0000fff6, 3727 }, /* braille_dot_6 */ - { 0x0000fff7, 3741 }, /* braille_dot_7 */ - { 0x0000fff8, 3755 }, /* braille_dot_8 */ - { 0x0000fff9, 3769 }, /* braille_dot_9 */ - { 0x01002801, 3783 }, /* braille_dots_1 */ - { 0x01002803, 3798 }, /* braille_dots_12 */ - { 0x01002807, 3814 }, /* braille_dots_123 */ - { 0x0100280f, 3831 }, /* braille_dots_1234 */ - { 0x0100281f, 3849 }, /* braille_dots_12345 */ - { 0x0100283f, 3868 }, /* braille_dots_123456 */ - { 0x0100287f, 3888 }, /* braille_dots_1234567 */ - { 0x010028ff, 3909 }, /* braille_dots_12345678 */ - { 0x010028bf, 3931 }, /* braille_dots_1234568 */ - { 0x0100285f, 3952 }, /* braille_dots_123457 */ - { 0x010028df, 3972 }, /* braille_dots_1234578 */ - { 0x0100289f, 3993 }, /* braille_dots_123458 */ - { 0x0100282f, 4013 }, /* braille_dots_12346 */ - { 0x0100286f, 4032 }, /* braille_dots_123467 */ - { 0x010028ef, 4052 }, /* braille_dots_1234678 */ - { 0x010028af, 4073 }, /* braille_dots_123468 */ - { 0x0100284f, 4093 }, /* braille_dots_12347 */ - { 0x010028cf, 4112 }, /* braille_dots_123478 */ - { 0x0100288f, 4132 }, /* braille_dots_12348 */ - { 0x01002817, 4151 }, /* braille_dots_1235 */ - { 0x01002837, 4169 }, /* braille_dots_12356 */ - { 0x01002877, 4188 }, /* braille_dots_123567 */ - { 0x010028f7, 4208 }, /* braille_dots_1235678 */ - { 0x010028b7, 4229 }, /* braille_dots_123568 */ - { 0x01002857, 4249 }, /* braille_dots_12357 */ - { 0x010028d7, 4268 }, /* braille_dots_123578 */ - { 0x01002897, 4288 }, /* braille_dots_12358 */ - { 0x01002827, 4307 }, /* braille_dots_1236 */ - { 0x01002867, 4325 }, /* braille_dots_12367 */ - { 0x010028e7, 4344 }, /* braille_dots_123678 */ - { 0x010028a7, 4364 }, /* braille_dots_12368 */ - { 0x01002847, 4383 }, /* braille_dots_1237 */ - { 0x010028c7, 4401 }, /* braille_dots_12378 */ - { 0x01002887, 4420 }, /* braille_dots_1238 */ - { 0x0100280b, 4438 }, /* braille_dots_124 */ - { 0x0100281b, 4455 }, /* braille_dots_1245 */ - { 0x0100283b, 4473 }, /* braille_dots_12456 */ - { 0x0100287b, 4492 }, /* braille_dots_124567 */ - { 0x010028fb, 4512 }, /* braille_dots_1245678 */ - { 0x010028bb, 4533 }, /* braille_dots_124568 */ - { 0x0100285b, 4553 }, /* braille_dots_12457 */ - { 0x010028db, 4572 }, /* braille_dots_124578 */ - { 0x0100289b, 4592 }, /* braille_dots_12458 */ - { 0x0100282b, 4611 }, /* braille_dots_1246 */ - { 0x0100286b, 4629 }, /* braille_dots_12467 */ - { 0x010028eb, 4648 }, /* braille_dots_124678 */ - { 0x010028ab, 4668 }, /* braille_dots_12468 */ - { 0x0100284b, 4687 }, /* braille_dots_1247 */ - { 0x010028cb, 4705 }, /* braille_dots_12478 */ - { 0x0100288b, 4724 }, /* braille_dots_1248 */ - { 0x01002813, 4742 }, /* braille_dots_125 */ - { 0x01002833, 4759 }, /* braille_dots_1256 */ - { 0x01002873, 4777 }, /* braille_dots_12567 */ - { 0x010028f3, 4796 }, /* braille_dots_125678 */ - { 0x010028b3, 4816 }, /* braille_dots_12568 */ - { 0x01002853, 4835 }, /* braille_dots_1257 */ - { 0x010028d3, 4853 }, /* braille_dots_12578 */ - { 0x01002893, 4872 }, /* braille_dots_1258 */ - { 0x01002823, 4890 }, /* braille_dots_126 */ - { 0x01002863, 4907 }, /* braille_dots_1267 */ - { 0x010028e3, 4925 }, /* braille_dots_12678 */ - { 0x010028a3, 4944 }, /* braille_dots_1268 */ - { 0x01002843, 4962 }, /* braille_dots_127 */ - { 0x010028c3, 4979 }, /* braille_dots_1278 */ - { 0x01002883, 4997 }, /* braille_dots_128 */ - { 0x01002805, 5014 }, /* braille_dots_13 */ - { 0x0100280d, 5030 }, /* braille_dots_134 */ - { 0x0100281d, 5047 }, /* braille_dots_1345 */ - { 0x0100283d, 5065 }, /* braille_dots_13456 */ - { 0x0100287d, 5084 }, /* braille_dots_134567 */ - { 0x010028fd, 5104 }, /* braille_dots_1345678 */ - { 0x010028bd, 5125 }, /* braille_dots_134568 */ - { 0x0100285d, 5145 }, /* braille_dots_13457 */ - { 0x010028dd, 5164 }, /* braille_dots_134578 */ - { 0x0100289d, 5184 }, /* braille_dots_13458 */ - { 0x0100282d, 5203 }, /* braille_dots_1346 */ - { 0x0100286d, 5221 }, /* braille_dots_13467 */ - { 0x010028ed, 5240 }, /* braille_dots_134678 */ - { 0x010028ad, 5260 }, /* braille_dots_13468 */ - { 0x0100284d, 5279 }, /* braille_dots_1347 */ - { 0x010028cd, 5297 }, /* braille_dots_13478 */ - { 0x0100288d, 5316 }, /* braille_dots_1348 */ - { 0x01002815, 5334 }, /* braille_dots_135 */ - { 0x01002835, 5351 }, /* braille_dots_1356 */ - { 0x01002875, 5369 }, /* braille_dots_13567 */ - { 0x010028f5, 5388 }, /* braille_dots_135678 */ - { 0x010028b5, 5408 }, /* braille_dots_13568 */ - { 0x01002855, 5427 }, /* braille_dots_1357 */ - { 0x010028d5, 5445 }, /* braille_dots_13578 */ - { 0x01002895, 5464 }, /* braille_dots_1358 */ - { 0x01002825, 5482 }, /* braille_dots_136 */ - { 0x01002865, 5499 }, /* braille_dots_1367 */ - { 0x010028e5, 5517 }, /* braille_dots_13678 */ - { 0x010028a5, 5536 }, /* braille_dots_1368 */ - { 0x01002845, 5554 }, /* braille_dots_137 */ - { 0x010028c5, 5571 }, /* braille_dots_1378 */ - { 0x01002885, 5589 }, /* braille_dots_138 */ - { 0x01002809, 5606 }, /* braille_dots_14 */ - { 0x01002819, 5622 }, /* braille_dots_145 */ - { 0x01002839, 5639 }, /* braille_dots_1456 */ - { 0x01002879, 5657 }, /* braille_dots_14567 */ - { 0x010028f9, 5676 }, /* braille_dots_145678 */ - { 0x010028b9, 5696 }, /* braille_dots_14568 */ - { 0x01002859, 5715 }, /* braille_dots_1457 */ - { 0x010028d9, 5733 }, /* braille_dots_14578 */ - { 0x01002899, 5752 }, /* braille_dots_1458 */ - { 0x01002829, 5770 }, /* braille_dots_146 */ - { 0x01002869, 5787 }, /* braille_dots_1467 */ - { 0x010028e9, 5805 }, /* braille_dots_14678 */ - { 0x010028a9, 5824 }, /* braille_dots_1468 */ - { 0x01002849, 5842 }, /* braille_dots_147 */ - { 0x010028c9, 5859 }, /* braille_dots_1478 */ - { 0x01002889, 5877 }, /* braille_dots_148 */ - { 0x01002811, 5894 }, /* braille_dots_15 */ - { 0x01002831, 5910 }, /* braille_dots_156 */ - { 0x01002871, 5927 }, /* braille_dots_1567 */ - { 0x010028f1, 5945 }, /* braille_dots_15678 */ - { 0x010028b1, 5964 }, /* braille_dots_1568 */ - { 0x01002851, 5982 }, /* braille_dots_157 */ - { 0x010028d1, 5999 }, /* braille_dots_1578 */ - { 0x01002891, 6017 }, /* braille_dots_158 */ - { 0x01002821, 6034 }, /* braille_dots_16 */ - { 0x01002861, 6050 }, /* braille_dots_167 */ - { 0x010028e1, 6067 }, /* braille_dots_1678 */ - { 0x010028a1, 6085 }, /* braille_dots_168 */ - { 0x01002841, 6102 }, /* braille_dots_17 */ - { 0x010028c1, 6118 }, /* braille_dots_178 */ - { 0x01002881, 6135 }, /* braille_dots_18 */ - { 0x01002802, 6151 }, /* braille_dots_2 */ - { 0x01002806, 6166 }, /* braille_dots_23 */ - { 0x0100280e, 6182 }, /* braille_dots_234 */ - { 0x0100281e, 6199 }, /* braille_dots_2345 */ - { 0x0100283e, 6217 }, /* braille_dots_23456 */ - { 0x0100287e, 6236 }, /* braille_dots_234567 */ - { 0x010028fe, 6256 }, /* braille_dots_2345678 */ - { 0x010028be, 6277 }, /* braille_dots_234568 */ - { 0x0100285e, 6297 }, /* braille_dots_23457 */ - { 0x010028de, 6316 }, /* braille_dots_234578 */ - { 0x0100289e, 6336 }, /* braille_dots_23458 */ - { 0x0100282e, 6355 }, /* braille_dots_2346 */ - { 0x0100286e, 6373 }, /* braille_dots_23467 */ - { 0x010028ee, 6392 }, /* braille_dots_234678 */ - { 0x010028ae, 6412 }, /* braille_dots_23468 */ - { 0x0100284e, 6431 }, /* braille_dots_2347 */ - { 0x010028ce, 6449 }, /* braille_dots_23478 */ - { 0x0100288e, 6468 }, /* braille_dots_2348 */ - { 0x01002816, 6486 }, /* braille_dots_235 */ - { 0x01002836, 6503 }, /* braille_dots_2356 */ - { 0x01002876, 6521 }, /* braille_dots_23567 */ - { 0x010028f6, 6540 }, /* braille_dots_235678 */ - { 0x010028b6, 6560 }, /* braille_dots_23568 */ - { 0x01002856, 6579 }, /* braille_dots_2357 */ - { 0x010028d6, 6597 }, /* braille_dots_23578 */ - { 0x01002896, 6616 }, /* braille_dots_2358 */ - { 0x01002826, 6634 }, /* braille_dots_236 */ - { 0x01002866, 6651 }, /* braille_dots_2367 */ - { 0x010028e6, 6669 }, /* braille_dots_23678 */ - { 0x010028a6, 6688 }, /* braille_dots_2368 */ - { 0x01002846, 6706 }, /* braille_dots_237 */ - { 0x010028c6, 6723 }, /* braille_dots_2378 */ - { 0x01002886, 6741 }, /* braille_dots_238 */ - { 0x0100280a, 6758 }, /* braille_dots_24 */ - { 0x0100281a, 6774 }, /* braille_dots_245 */ - { 0x0100283a, 6791 }, /* braille_dots_2456 */ - { 0x0100287a, 6809 }, /* braille_dots_24567 */ - { 0x010028fa, 6828 }, /* braille_dots_245678 */ - { 0x010028ba, 6848 }, /* braille_dots_24568 */ - { 0x0100285a, 6867 }, /* braille_dots_2457 */ - { 0x010028da, 6885 }, /* braille_dots_24578 */ - { 0x0100289a, 6904 }, /* braille_dots_2458 */ - { 0x0100282a, 6922 }, /* braille_dots_246 */ - { 0x0100286a, 6939 }, /* braille_dots_2467 */ - { 0x010028ea, 6957 }, /* braille_dots_24678 */ - { 0x010028aa, 6976 }, /* braille_dots_2468 */ - { 0x0100284a, 6994 }, /* braille_dots_247 */ - { 0x010028ca, 7011 }, /* braille_dots_2478 */ - { 0x0100288a, 7029 }, /* braille_dots_248 */ - { 0x01002812, 7046 }, /* braille_dots_25 */ - { 0x01002832, 7062 }, /* braille_dots_256 */ - { 0x01002872, 7079 }, /* braille_dots_2567 */ - { 0x010028f2, 7097 }, /* braille_dots_25678 */ - { 0x010028b2, 7116 }, /* braille_dots_2568 */ - { 0x01002852, 7134 }, /* braille_dots_257 */ - { 0x010028d2, 7151 }, /* braille_dots_2578 */ - { 0x01002892, 7169 }, /* braille_dots_258 */ - { 0x01002822, 7186 }, /* braille_dots_26 */ - { 0x01002862, 7202 }, /* braille_dots_267 */ - { 0x010028e2, 7219 }, /* braille_dots_2678 */ - { 0x010028a2, 7237 }, /* braille_dots_268 */ - { 0x01002842, 7254 }, /* braille_dots_27 */ - { 0x010028c2, 7270 }, /* braille_dots_278 */ - { 0x01002882, 7287 }, /* braille_dots_28 */ - { 0x01002804, 7303 }, /* braille_dots_3 */ - { 0x0100280c, 7318 }, /* braille_dots_34 */ - { 0x0100281c, 7334 }, /* braille_dots_345 */ - { 0x0100283c, 7351 }, /* braille_dots_3456 */ - { 0x0100287c, 7369 }, /* braille_dots_34567 */ - { 0x010028fc, 7388 }, /* braille_dots_345678 */ - { 0x010028bc, 7408 }, /* braille_dots_34568 */ - { 0x0100285c, 7427 }, /* braille_dots_3457 */ - { 0x010028dc, 7445 }, /* braille_dots_34578 */ - { 0x0100289c, 7464 }, /* braille_dots_3458 */ - { 0x0100282c, 7482 }, /* braille_dots_346 */ - { 0x0100286c, 7499 }, /* braille_dots_3467 */ - { 0x010028ec, 7517 }, /* braille_dots_34678 */ - { 0x010028ac, 7536 }, /* braille_dots_3468 */ - { 0x0100284c, 7554 }, /* braille_dots_347 */ - { 0x010028cc, 7571 }, /* braille_dots_3478 */ - { 0x0100288c, 7589 }, /* braille_dots_348 */ - { 0x01002814, 7606 }, /* braille_dots_35 */ - { 0x01002834, 7622 }, /* braille_dots_356 */ - { 0x01002874, 7639 }, /* braille_dots_3567 */ - { 0x010028f4, 7657 }, /* braille_dots_35678 */ - { 0x010028b4, 7676 }, /* braille_dots_3568 */ - { 0x01002854, 7694 }, /* braille_dots_357 */ - { 0x010028d4, 7711 }, /* braille_dots_3578 */ - { 0x01002894, 7729 }, /* braille_dots_358 */ - { 0x01002824, 7746 }, /* braille_dots_36 */ - { 0x01002864, 7762 }, /* braille_dots_367 */ - { 0x010028e4, 7779 }, /* braille_dots_3678 */ - { 0x010028a4, 7797 }, /* braille_dots_368 */ - { 0x01002844, 7814 }, /* braille_dots_37 */ - { 0x010028c4, 7830 }, /* braille_dots_378 */ - { 0x01002884, 7847 }, /* braille_dots_38 */ - { 0x01002808, 7863 }, /* braille_dots_4 */ - { 0x01002818, 7878 }, /* braille_dots_45 */ - { 0x01002838, 7894 }, /* braille_dots_456 */ - { 0x01002878, 7911 }, /* braille_dots_4567 */ - { 0x010028f8, 7929 }, /* braille_dots_45678 */ - { 0x010028b8, 7948 }, /* braille_dots_4568 */ - { 0x01002858, 7966 }, /* braille_dots_457 */ - { 0x010028d8, 7983 }, /* braille_dots_4578 */ - { 0x01002898, 8001 }, /* braille_dots_458 */ - { 0x01002828, 8018 }, /* braille_dots_46 */ - { 0x01002868, 8034 }, /* braille_dots_467 */ - { 0x010028e8, 8051 }, /* braille_dots_4678 */ - { 0x010028a8, 8069 }, /* braille_dots_468 */ - { 0x01002848, 8086 }, /* braille_dots_47 */ - { 0x010028c8, 8102 }, /* braille_dots_478 */ - { 0x01002888, 8119 }, /* braille_dots_48 */ - { 0x01002810, 8135 }, /* braille_dots_5 */ - { 0x01002830, 8150 }, /* braille_dots_56 */ - { 0x01002870, 8166 }, /* braille_dots_567 */ - { 0x010028f0, 8183 }, /* braille_dots_5678 */ - { 0x010028b0, 8201 }, /* braille_dots_568 */ - { 0x01002850, 8218 }, /* braille_dots_57 */ - { 0x010028d0, 8234 }, /* braille_dots_578 */ - { 0x01002890, 8251 }, /* braille_dots_58 */ - { 0x01002820, 8267 }, /* braille_dots_6 */ - { 0x01002860, 8282 }, /* braille_dots_67 */ - { 0x010028e0, 8298 }, /* braille_dots_678 */ - { 0x010028a0, 8315 }, /* braille_dots_68 */ - { 0x01002840, 8331 }, /* braille_dots_7 */ - { 0x010028c0, 8346 }, /* braille_dots_78 */ - { 0x01002880, 8362 }, /* braille_dots_8 */ - { 0x000001a2, 8383 }, /* breve */ - { 0x000000a6, 8389 }, /* brokenbar */ - { 0x00000063, 8441 }, /* c */ - { 0x0000fea3, 8443 }, /* c_h */ - { 0x000002e5, 8465 }, /* cabovedot */ - { 0x000001e6, 8482 }, /* cacute */ - { 0x00000ab8, 8506 }, /* careof */ - { 0x00000afc, 8513 }, /* caret */ - { 0x000001b7, 8519 }, /* caron */ - { 0x000001e8, 8532 }, /* ccaron */ - { 0x000000e7, 8548 }, /* ccedilla */ - { 0x000002e6, 8569 }, /* ccircumflex */ - { 0x000000b8, 8581 }, /* cedilla */ - { 0x000000a2, 8589 }, /* cent */ - { 0x0000fea0, 8594 }, /* ch */ - { 0x000009e1, 8603 }, /* checkerboard */ - { 0x00000af3, 8616 }, /* checkmark */ - { 0x00000bcf, 8626 }, /* circle */ - { 0x00000aec, 8649 }, /* club */ - { 0x0000003a, 8664 }, /* colon */ - { 0x01000301, 8680 }, /* combining_acute */ - { 0x01000323, 8696 }, /* combining_belowdot */ - { 0x01000300, 8715 }, /* combining_grave */ - { 0x01000309, 8731 }, /* combining_hook */ - { 0x01000303, 8746 }, /* combining_tilde */ - { 0x0000002c, 8762 }, /* comma */ - { 0x0100220b, 8768 }, /* containsas */ - { 0x000000a9, 8799 }, /* copyright */ - { 0x000009e4, 8809 }, /* cr */ - { 0x000009ee, 8812 }, /* crossinglines */ - { 0x0100221b, 8839 }, /* cuberoot */ - { 0x000000a4, 8848 }, /* currency */ - { 0x00000aff, 8857 }, /* cursor */ - { 0x00000064, 10404 }, /* d */ - { 0x01001e0b, 10416 }, /* dabovedot */ - { 0x00000af1, 10440 }, /* dagger */ - { 0x000001ef, 10454 }, /* dcaron */ - { 0x0000fe81, 10514 }, /* dead_A */ - { 0x0000fe83, 10933 }, /* dead_E */ - { 0x0000fe85, 10989 }, /* dead_I */ - { 0x0000fe87, 11081 }, /* dead_O */ - { 0x0000fe89, 11197 }, /* dead_U */ - { 0x0000fe80, 10507 }, /* dead_a */ - { 0x0000fe64, 10521 }, /* dead_abovecomma */ - { 0x0000fe56, 10537 }, /* dead_abovedot */ - { 0x0000fe65, 10551 }, /* dead_abovereversedcomma */ - { 0x0000fe58, 10575 }, /* dead_abovering */ - { 0x0000fe91, 10590 }, /* dead_aboveverticalline */ - { 0x0000fe51, 10613 }, /* dead_acute */ - { 0x0000fe6b, 10624 }, /* dead_belowbreve */ - { 0x0000fe69, 10640 }, /* dead_belowcircumflex */ - { 0x0000fe6e, 10661 }, /* dead_belowcomma */ - { 0x0000fe6c, 10677 }, /* dead_belowdiaeresis */ - { 0x0000fe60, 10697 }, /* dead_belowdot */ - { 0x0000fe68, 10711 }, /* dead_belowmacron */ - { 0x0000fe67, 10728 }, /* dead_belowring */ - { 0x0000fe6a, 10743 }, /* dead_belowtilde */ - { 0x0000fe92, 10759 }, /* dead_belowverticalline */ - { 0x0000fe55, 10782 }, /* dead_breve */ - { 0x0000fe8b, 10793 }, /* dead_capital_schwa */ - { 0x0000fe5a, 10812 }, /* dead_caron */ - { 0x0000fe5b, 10823 }, /* dead_cedilla */ - { 0x0000fe52, 10836 }, /* dead_circumflex */ - { 0x0000fe6f, 10852 }, /* dead_currency */ - { 0x0000fe65, 10866 }, /* dead_dasia */ - { 0x0000fe57, 10877 }, /* dead_diaeresis */ - { 0x0000fe59, 10892 }, /* dead_doubleacute */ - { 0x0000fe66, 10909 }, /* dead_doublegrave */ - { 0x0000fe82, 10926 }, /* dead_e */ - { 0x0000fe50, 10940 }, /* dead_grave */ - { 0x0000fe8c, 10951 }, /* dead_greek */ - { 0x0000fe61, 10962 }, /* dead_hook */ - { 0x0000fe62, 10972 }, /* dead_horn */ - { 0x0000fe84, 10982 }, /* dead_i */ - { 0x0000fe6d, 10996 }, /* dead_invertedbreve */ - { 0x0000fe5d, 11015 }, /* dead_iota */ - { 0x0000fe93, 11025 }, /* dead_longsolidusoverlay */ - { 0x0000fe90, 11049 }, /* dead_lowline */ - { 0x0000fe54, 11062 }, /* dead_macron */ - { 0x0000fe86, 11074 }, /* dead_o */ - { 0x0000fe5c, 11088 }, /* dead_ogonek */ - { 0x0000fe53, 11100 }, /* dead_perispomeni */ - { 0x0000fe64, 11117 }, /* dead_psili */ - { 0x0000fe5f, 11128 }, /* dead_semivoiced_sound */ - { 0x0000fe8a, 11150 }, /* dead_small_schwa */ - { 0x0000fe63, 11167 }, /* dead_stroke */ - { 0x0000fe53, 11179 }, /* dead_tilde */ - { 0x0000fe88, 11190 }, /* dead_u */ - { 0x0000fe5e, 11204 }, /* dead_voiced_sound */ - { 0x00000abd, 11222 }, /* decimalpoint */ - { 0x000000b0, 11235 }, /* degree */ - { 0x000000a8, 11285 }, /* diaeresis */ - { 0x00000aed, 11295 }, /* diamond */ - { 0x00000aa5, 11303 }, /* digitspace */ - { 0x0100222c, 11314 }, /* dintegral */ - { 0x000000f7, 11324 }, /* division */ - { 0x00000024, 11333 }, /* dollar */ - { 0x00000aaf, 11349 }, /* doubbaselinedot */ - { 0x000001bd, 11365 }, /* doubleacute */ - { 0x00000af2, 11377 }, /* doubledagger */ - { 0x00000afe, 11390 }, /* doublelowquotemark */ - { 0x000008fe, 11414 }, /* downarrow */ - { 0x00000ba8, 11424 }, /* downcaret */ - { 0x00000bd6, 11434 }, /* downshoe */ - { 0x00000bc4, 11443 }, /* downstile */ - { 0x00000bc2, 11453 }, /* downtack */ - { 0x000001f0, 11491 }, /* dstroke */ - { 0x00000065, 11508 }, /* e */ - { 0x000003ec, 11520 }, /* eabovedot */ - { 0x000000e9, 11537 }, /* eacute */ - { 0x01001eb9, 11554 }, /* ebelowdot */ - { 0x000001ec, 11571 }, /* ecaron */ - { 0x000000ea, 11590 }, /* ecircumflex */ - { 0x01001ebf, 11619 }, /* ecircumflexacute */ - { 0x01001ec7, 11656 }, /* ecircumflexbelowdot */ - { 0x01001ec1, 11693 }, /* ecircumflexgrave */ - { 0x01001ec3, 11726 }, /* ecircumflexhook */ - { 0x01001ec5, 11759 }, /* ecircumflextilde */ - { 0x000000eb, 11795 }, /* ediaeresis */ - { 0x000000e8, 11813 }, /* egrave */ - { 0x01001ebb, 11826 }, /* ehook */ - { 0x01002088, 11832 }, /* eightsubscript */ - { 0x01002078, 11847 }, /* eightsuperior */ - { 0x01002208, 11884 }, /* elementof */ - { 0x00000aae, 11894 }, /* ellipsis */ - { 0x00000aa3, 11903 }, /* em3space */ - { 0x00000aa4, 11912 }, /* em4space */ - { 0x000003ba, 11929 }, /* emacron */ - { 0x00000aa9, 11937 }, /* emdash */ - { 0x00000ade, 11944 }, /* emfilledcircle */ - { 0x00000adf, 11959 }, /* emfilledrect */ - { 0x00000ace, 11972 }, /* emopencircle */ - { 0x00000acf, 11985 }, /* emopenrectangle */ - { 0x01002205, 12001 }, /* emptyset */ - { 0x00000aa1, 12010 }, /* emspace */ - { 0x00000aaa, 12022 }, /* endash */ - { 0x00000ae6, 12029 }, /* enfilledcircbullet */ - { 0x00000ae7, 12048 }, /* enfilledsqbullet */ - { 0x000003bf, 12069 }, /* eng */ - { 0x00000ae0, 12073 }, /* enopencircbullet */ - { 0x00000ae1, 12090 }, /* enopensquarebullet */ - { 0x00000aa2, 12109 }, /* enspace */ - { 0x000001ea, 12125 }, /* eogonek */ - { 0x0000003d, 12133 }, /* equal */ - { 0x000000f0, 12154 }, /* eth */ - { 0x01001ebd, 12165 }, /* etilde */ - { 0x00000021, 12181 }, /* exclam */ - { 0x000000a1, 12188 }, /* exclamdown */ - { 0x01000292, 12233 }, /* ezh */ - { 0x00000066, 12239 }, /* f */ - { 0x01001e1f, 12382 }, /* fabovedot */ - { 0x00000af8, 12482 }, /* femalesymbol */ - { 0x000009e3, 12495 }, /* ff */ - { 0x00000abb, 12509 }, /* figdash */ - { 0x00000adc, 12517 }, /* filledlefttribullet */ - { 0x00000adb, 12537 }, /* filledrectbullet */ - { 0x00000add, 12554 }, /* filledrighttribullet */ - { 0x00000ae9, 12575 }, /* filledtribulletdown */ - { 0x00000ae8, 12595 }, /* filledtribulletup */ - { 0x00000ac5, 12639 }, /* fiveeighths */ - { 0x00000ab7, 12651 }, /* fivesixths */ - { 0x01002085, 12662 }, /* fivesubscript */ - { 0x01002075, 12676 }, /* fivesuperior */ - { 0x00000ab5, 12689 }, /* fourfifths */ - { 0x01002084, 12700 }, /* foursubscript */ - { 0x01002074, 12714 }, /* foursuperior */ - { 0x0100221c, 12727 }, /* fourthroot */ - { 0x000008f6, 12738 }, /* function */ - { 0x00000067, 12749 }, /* g */ - { 0x000002f5, 12761 }, /* gabovedot */ - { 0x000002bb, 12778 }, /* gbreve */ - { 0x010001e7, 12792 }, /* gcaron */ - { 0x000003bb, 12808 }, /* gcedilla */ - { 0x000002f8, 12829 }, /* gcircumflex */ - { 0x00000060, 13348 }, /* grave */ - { 0x0000003e, 13354 }, /* greater */ - { 0x000008be, 13362 }, /* greaterthanequal */ - { 0x100000be, 14423 }, /* guilder */ - { 0x000000ab, 14431 }, /* guillemotleft */ - { 0x000000bb, 14445 }, /* guillemotright */ - { 0x00000068, 14462 }, /* h */ - { 0x00000aa8, 14464 }, /* hairspace */ - { 0x000002b6, 16150 }, /* hcircumflex */ - { 0x00000aee, 16162 }, /* heart */ - { 0x00000ce0, 16168 }, /* hebrew_aleph */ - { 0x00000cf2, 16181 }, /* hebrew_ayin */ - { 0x00000ce1, 16193 }, /* hebrew_bet */ - { 0x00000ce1, 16204 }, /* hebrew_beth */ - { 0x00000ce7, 16216 }, /* hebrew_chet */ - { 0x00000ce3, 16228 }, /* hebrew_dalet */ - { 0x00000ce3, 16241 }, /* hebrew_daleth */ - { 0x00000cdf, 16255 }, /* hebrew_doublelowline */ - { 0x00000cea, 16276 }, /* hebrew_finalkaph */ - { 0x00000ced, 16293 }, /* hebrew_finalmem */ - { 0x00000cef, 16309 }, /* hebrew_finalnun */ - { 0x00000cf3, 16325 }, /* hebrew_finalpe */ - { 0x00000cf5, 16340 }, /* hebrew_finalzade */ - { 0x00000cf5, 16357 }, /* hebrew_finalzadi */ - { 0x00000ce2, 16374 }, /* hebrew_gimel */ - { 0x00000ce2, 16387 }, /* hebrew_gimmel */ - { 0x00000ce4, 16401 }, /* hebrew_he */ - { 0x00000ce7, 16411 }, /* hebrew_het */ - { 0x00000ceb, 16422 }, /* hebrew_kaph */ - { 0x00000cf7, 16434 }, /* hebrew_kuf */ - { 0x00000cec, 16445 }, /* hebrew_lamed */ - { 0x00000cee, 16458 }, /* hebrew_mem */ - { 0x00000cf0, 16469 }, /* hebrew_nun */ - { 0x00000cf4, 16480 }, /* hebrew_pe */ - { 0x00000cf7, 16490 }, /* hebrew_qoph */ - { 0x00000cf8, 16502 }, /* hebrew_resh */ - { 0x00000cf1, 16514 }, /* hebrew_samech */ - { 0x00000cf1, 16528 }, /* hebrew_samekh */ - { 0x00000cf9, 16542 }, /* hebrew_shin */ - { 0x00000cfa, 16568 }, /* hebrew_taf */ - { 0x00000cfa, 16579 }, /* hebrew_taw */ - { 0x00000ce8, 16590 }, /* hebrew_tet */ - { 0x00000ce8, 16601 }, /* hebrew_teth */ - { 0x00000ce5, 16613 }, /* hebrew_waw */ - { 0x00000ce9, 16624 }, /* hebrew_yod */ - { 0x00000cf6, 16635 }, /* hebrew_zade */ - { 0x00000cf6, 16647 }, /* hebrew_zadi */ - { 0x00000ce6, 16659 }, /* hebrew_zain */ - { 0x00000ce6, 16671 }, /* hebrew_zayin */ - { 0x00000ada, 16708 }, /* hexagram */ - { 0x000008a3, 16749 }, /* horizconnector */ - { 0x000009ef, 16764 }, /* horizlinescan1 */ - { 0x000009f0, 16779 }, /* horizlinescan3 */ - { 0x000009f1, 16794 }, /* horizlinescan5 */ - { 0x000009f2, 16809 }, /* horizlinescan7 */ - { 0x000009f3, 16824 }, /* horizlinescan9 */ - { 0x1000ff74, 16839 }, /* hpBackTab */ - { 0x1000ff6f, 16857 }, /* hpClearLine */ - { 0x1000ff73, 16869 }, /* hpDeleteChar */ - { 0x1000ff71, 16882 }, /* hpDeleteLine */ - { 0x100000ee, 16931 }, /* hpIO */ - { 0x1000ff72, 16905 }, /* hpInsertChar */ - { 0x1000ff70, 16918 }, /* hpInsertLine */ - { 0x1000ff75, 16936 }, /* hpKP_BackTab */ - { 0x1000ff48, 16968 }, /* hpModelock1 */ - { 0x1000ff49, 16980 }, /* hpModelock2 */ - { 0x1000ff6c, 17072 }, /* hpReset */ - { 0x1000ff6d, 17080 }, /* hpSystem */ - { 0x1000ff6e, 17089 }, /* hpUser */ - { 0x100000ee, 17096 }, /* hpYdiaeresis */ - { 0x100000fc, 16849 }, /* hpblock */ - { 0x100000be, 16895 }, /* hpguilder */ - { 0x100000af, 16949 }, /* hplira */ - { 0x100000f6, 16956 }, /* hplongminus */ - { 0x100000a8, 16992 }, /* hpmute_acute */ - { 0x100000aa, 17005 }, /* hpmute_asciicircum */ - { 0x100000ac, 17024 }, /* hpmute_asciitilde */ - { 0x100000ab, 17042 }, /* hpmute_diaeresis */ - { 0x100000a9, 17059 }, /* hpmute_grave */ - { 0x000002b1, 17117 }, /* hstroke */ - { 0x000009e2, 17125 }, /* ht */ - { 0x000000ad, 17144 }, /* hyphen */ - { 0x00000069, 17153 }, /* i */ - { 0x000000ed, 17172 }, /* iacute */ - { 0x01001ecb, 17189 }, /* ibelowdot */ - { 0x0100012d, 17206 }, /* ibreve */ - { 0x000000ee, 17225 }, /* icircumflex */ - { 0x000008cf, 17237 }, /* identical */ - { 0x000000ef, 17258 }, /* idiaeresis */ - { 0x000002b9, 17269 }, /* idotless */ - { 0x000008cd, 17278 }, /* ifonlyif */ - { 0x000000ec, 17294 }, /* igrave */ - { 0x01001ec9, 17307 }, /* ihook */ - { 0x000003ef, 17321 }, /* imacron */ - { 0x000008ce, 17329 }, /* implies */ - { 0x000008da, 17337 }, /* includedin */ - { 0x000008db, 17348 }, /* includes */ - { 0x000008c2, 17357 }, /* infinity */ - { 0x000008bf, 17395 }, /* integral */ - { 0x000008dc, 17404 }, /* intersection */ - { 0x000003e7, 17428 }, /* iogonek */ - { 0x000003b5, 18189 }, /* itilde */ - { 0x0000006a, 18198 }, /* j */ - { 0x000002bc, 18212 }, /* jcircumflex */ - { 0x00000bca, 18224 }, /* jot */ - { 0x0000006b, 18230 }, /* k */ - { 0x000004b1, 18239 }, /* kana_A */ - { 0x000004c1, 18246 }, /* kana_CHI */ - { 0x000004b4, 18310 }, /* kana_E */ - { 0x000004cc, 18317 }, /* kana_FU */ - { 0x000004ca, 18339 }, /* kana_HA */ - { 0x000004cd, 18347 }, /* kana_HE */ - { 0x000004cb, 18355 }, /* kana_HI */ - { 0x000004ce, 18363 }, /* kana_HO */ - { 0x000004cc, 18371 }, /* kana_HU */ - { 0x000004b2, 18386 }, /* kana_I */ - { 0x000004b6, 18393 }, /* kana_KA */ - { 0x000004b9, 18401 }, /* kana_KE */ - { 0x000004b7, 18409 }, /* kana_KI */ - { 0x000004ba, 18417 }, /* kana_KO */ - { 0x000004b8, 18425 }, /* kana_KU */ - { 0x000004cf, 18443 }, /* kana_MA */ - { 0x000004d2, 18451 }, /* kana_ME */ - { 0x000004d0, 18459 }, /* kana_MI */ - { 0x000004d3, 18482 }, /* kana_MO */ - { 0x000004d1, 18490 }, /* kana_MU */ - { 0x000004dd, 18498 }, /* kana_N */ - { 0x000004c5, 18505 }, /* kana_NA */ - { 0x000004c8, 18513 }, /* kana_NE */ - { 0x000004c6, 18521 }, /* kana_NI */ - { 0x000004c9, 18529 }, /* kana_NO */ - { 0x000004c7, 18537 }, /* kana_NU */ - { 0x000004b5, 18552 }, /* kana_O */ - { 0x000004d7, 18579 }, /* kana_RA */ - { 0x000004da, 18587 }, /* kana_RE */ - { 0x000004d8, 18595 }, /* kana_RI */ - { 0x000004db, 18603 }, /* kana_RO */ - { 0x000004d9, 18611 }, /* kana_RU */ - { 0x000004bb, 18619 }, /* kana_SA */ - { 0x000004be, 18627 }, /* kana_SE */ - { 0x000004bc, 18635 }, /* kana_SHI */ - { 0x000004bf, 18655 }, /* kana_SO */ - { 0x000004bd, 18663 }, /* kana_SU */ - { 0x000004c0, 18683 }, /* kana_TA */ - { 0x000004c3, 18691 }, /* kana_TE */ - { 0x000004c1, 18699 }, /* kana_TI */ - { 0x000004c4, 18707 }, /* kana_TO */ - { 0x000004c2, 18724 }, /* kana_TSU */ - { 0x000004c2, 18741 }, /* kana_TU */ - { 0x000004b3, 18756 }, /* kana_U */ - { 0x000004dc, 18763 }, /* kana_WA */ - { 0x000004a6, 18771 }, /* kana_WO */ - { 0x000004d4, 18787 }, /* kana_YA */ - { 0x000004d6, 18803 }, /* kana_YO */ - { 0x000004d5, 18819 }, /* kana_YU */ - { 0x000004a7, 18232 }, /* kana_a */ - { 0x000004a3, 18255 }, /* kana_closingbracket */ - { 0x000004a4, 18275 }, /* kana_comma */ - { 0x000004a5, 18286 }, /* kana_conjunctive */ - { 0x000004aa, 18303 }, /* kana_e */ - { 0x000004a1, 18325 }, /* kana_fullstop */ - { 0x000004a8, 18379 }, /* kana_i */ - { 0x000004a5, 18467 }, /* kana_middledot */ - { 0x000004ab, 18545 }, /* kana_o */ - { 0x000004a2, 18559 }, /* kana_openingbracket */ - { 0x0000ff7e, 18671 }, /* kana_switch */ - { 0x000004af, 18715 }, /* kana_tsu */ - { 0x000004af, 18733 }, /* kana_tu */ - { 0x000004a9, 18749 }, /* kana_u */ - { 0x000004ac, 18779 }, /* kana_ya */ - { 0x000004ae, 18795 }, /* kana_yo */ - { 0x000004ad, 18811 }, /* kana_yu */ - { 0x000003a2, 18846 }, /* kappa */ - { 0x000003f3, 18870 }, /* kcedilla */ - { 0x000003a2, 19190 }, /* kra */ - { 0x0000006c, 19196 }, /* l */ - { 0x000001e5, 19236 }, /* lacute */ - { 0x00000ad9, 19263 }, /* latincross */ - { 0x01001e37, 19284 }, /* lbelowdot */ - { 0x000001b5, 19301 }, /* lcaron */ - { 0x000003b6, 19317 }, /* lcedilla */ - { 0x00000abc, 19331 }, /* leftanglebracket */ - { 0x000008fb, 19348 }, /* leftarrow */ - { 0x00000ba3, 19358 }, /* leftcaret */ - { 0x00000ad2, 19368 }, /* leftdoublequotemark */ - { 0x000008af, 19388 }, /* leftmiddlecurlybrace */ - { 0x00000acc, 19409 }, /* leftopentriangle */ - { 0x00000aea, 19426 }, /* leftpointer */ - { 0x000008a1, 19438 }, /* leftradical */ - { 0x00000bda, 19450 }, /* leftshoe */ - { 0x00000ad0, 19459 }, /* leftsinglequotemark */ - { 0x000009f4, 19479 }, /* leftt */ - { 0x00000bdc, 19485 }, /* lefttack */ - { 0x0000003c, 19494 }, /* less */ - { 0x000008bc, 19499 }, /* lessthanequal */ - { 0x000009e5, 19513 }, /* lf */ - { 0x100000af, 19525 }, /* lira */ - { 0x000008de, 19539 }, /* logicaland */ - { 0x000008df, 19550 }, /* logicalor */ - { 0x100000f6, 19560 }, /* longminus */ - { 0x000009ed, 19570 }, /* lowleftcorner */ - { 0x000009ea, 19584 }, /* lowrightcorner */ - { 0x000001b3, 19607 }, /* lstroke */ - { 0x0000006d, 19617 }, /* m */ - { 0x01001e41, 19629 }, /* mabovedot */ - { 0x000000af, 19723 }, /* macron */ - { 0x00000af7, 19739 }, /* malesymbol */ - { 0x00000af0, 19750 }, /* maltesecross */ - { 0x00000abf, 19763 }, /* marker */ - { 0x000000ba, 19770 }, /* masculine */ - { 0x0000002d, 19815 }, /* minus */ - { 0x00000ad6, 19821 }, /* minutes */ - { 0x000000b5, 19881 }, /* mu */ - { 0x000000d7, 19921 }, /* multiply */ - { 0x00000af6, 19930 }, /* musicalflat */ - { 0x00000af5, 19942 }, /* musicalsharp */ - { 0x100000a8, 19955 }, /* mute_acute */ - { 0x100000aa, 19966 }, /* mute_asciicircum */ - { 0x100000ac, 19983 }, /* mute_asciitilde */ - { 0x100000ab, 19999 }, /* mute_diaeresis */ - { 0x100000a9, 20014 }, /* mute_grave */ - { 0x0000006e, 20027 }, /* n */ - { 0x000008c5, 20029 }, /* nabla */ - { 0x000001f1, 20042 }, /* nacute */ - { 0x000001f2, 20066 }, /* ncaron */ - { 0x000003f1, 20082 }, /* ncedilla */ - { 0x01002089, 20130 }, /* ninesubscript */ - { 0x01002079, 20144 }, /* ninesuperior */ - { 0x000009e8, 20157 }, /* nl */ - { 0x000000a0, 20160 }, /* nobreakspace */ - { 0x01002247, 20182 }, /* notapproxeq */ - { 0x01002209, 20194 }, /* notelementof */ - { 0x000008bd, 20207 }, /* notequal */ - { 0x01002262, 20216 }, /* notidentical */ - { 0x000000ac, 20229 }, /* notsign */ - { 0x000000f1, 20244 }, /* ntilde */ - { 0x00000023, 20260 }, /* numbersign */ - { 0x000006b0, 20271 }, /* numerosign */ - { 0x0000006f, 20284 }, /* o */ - { 0x000000f3, 20293 }, /* oacute */ - { 0x01000275, 20308 }, /* obarred */ - { 0x01001ecd, 20326 }, /* obelowdot */ - { 0x010001d2, 20343 }, /* ocaron */ - { 0x000000f4, 20362 }, /* ocircumflex */ - { 0x01001ed1, 20391 }, /* ocircumflexacute */ - { 0x01001ed9, 20428 }, /* ocircumflexbelowdot */ - { 0x01001ed3, 20465 }, /* ocircumflexgrave */ - { 0x01001ed5, 20498 }, /* ocircumflexhook */ - { 0x01001ed7, 20531 }, /* ocircumflextilde */ - { 0x000000f6, 20559 }, /* odiaeresis */ - { 0x000001f5, 20583 }, /* odoubleacute */ - { 0x000013bd, 20599 }, /* oe */ - { 0x000001b2, 20602 }, /* ogonek */ - { 0x000000f2, 20616 }, /* ograve */ - { 0x01001ecf, 20629 }, /* ohook */ - { 0x010001a1, 20641 }, /* ohorn */ - { 0x01001edb, 20658 }, /* ohornacute */ - { 0x01001ee3, 20683 }, /* ohornbelowdot */ - { 0x01001edd, 20708 }, /* ohorngrave */ - { 0x01001edf, 20729 }, /* ohornhook */ - { 0x01001ee1, 20750 }, /* ohorntilde */ - { 0x000003f2, 20769 }, /* omacron */ - { 0x00000ac3, 20777 }, /* oneeighth */ - { 0x00000ab2, 20787 }, /* onefifth */ - { 0x000000bd, 20796 }, /* onehalf */ - { 0x000000bc, 20804 }, /* onequarter */ - { 0x00000ab6, 20815 }, /* onesixth */ - { 0x01002081, 20824 }, /* onesubscript */ - { 0x000000b9, 20837 }, /* onesuperior */ - { 0x00000ab0, 20849 }, /* onethird */ - { 0x000000f8, 20867 }, /* ooblique */ - { 0x00000ae2, 20876 }, /* openrectbullet */ - { 0x00000ae5, 20891 }, /* openstar */ - { 0x00000ae4, 20900 }, /* opentribulletdown */ - { 0x00000ae3, 20918 }, /* opentribulletup */ - { 0x000000aa, 20934 }, /* ordfeminine */ - { 0x1004ff44, 20946 }, /* osfActivate */ - { 0x1004ff31, 20958 }, /* osfAddMode */ - { 0x1004ff08, 20969 }, /* osfBackSpace */ - { 0x1004ff07, 20982 }, /* osfBackTab */ - { 0x1004ff5a, 20993 }, /* osfBeginData */ - { 0x1004ff58, 21006 }, /* osfBeginLine */ - { 0x1004ff69, 21019 }, /* osfCancel */ - { 0x1004ff0b, 21029 }, /* osfClear */ - { 0x1004ff02, 21038 }, /* osfCopy */ - { 0x1004ff03, 21046 }, /* osfCut */ - { 0x1004ffff, 21053 }, /* osfDelete */ - { 0x1004ff72, 21063 }, /* osfDeselectAll */ - { 0x1004ff54, 21078 }, /* osfDown */ - { 0x1004ff59, 21086 }, /* osfEndData */ - { 0x1004ff57, 21097 }, /* osfEndLine */ - { 0x1004ff1b, 21108 }, /* osfEscape */ - { 0x1004ff74, 21118 }, /* osfExtend */ - { 0x1004ff6a, 21128 }, /* osfHelp */ - { 0x1004ff63, 21136 }, /* osfInsert */ - { 0x1004ff51, 21146 }, /* osfLeft */ - { 0x1004ff67, 21154 }, /* osfMenu */ - { 0x1004ff45, 21162 }, /* osfMenuBar */ - { 0x1004ff5e, 21173 }, /* osfNextField */ - { 0x1004ff5c, 21186 }, /* osfNextMenu */ - { 0x1004ff42, 21198 }, /* osfPageDown */ - { 0x1004ff40, 21210 }, /* osfPageLeft */ - { 0x1004ff43, 21222 }, /* osfPageRight */ - { 0x1004ff41, 21235 }, /* osfPageUp */ - { 0x1004ff04, 21245 }, /* osfPaste */ - { 0x1004ff5d, 21254 }, /* osfPrevField */ - { 0x1004ff5b, 21267 }, /* osfPrevMenu */ - { 0x1004ff32, 21279 }, /* osfPrimaryPaste */ - { 0x1004ff33, 21295 }, /* osfQuickPaste */ - { 0x1004ff73, 21309 }, /* osfReselect */ - { 0x1004ff78, 21321 }, /* osfRestore */ - { 0x1004ff53, 21332 }, /* osfRight */ - { 0x1004ff60, 21341 }, /* osfSelect */ - { 0x1004ff71, 21351 }, /* osfSelectAll */ - { 0x1004ff65, 21364 }, /* osfUndo */ - { 0x1004ff52, 21372 }, /* osfUp */ - { 0x000000f8, 21385 }, /* oslash */ - { 0x000000f5, 21399 }, /* otilde */ - { 0x00000bc0, 21406 }, /* overbar */ - { 0x0000047e, 21446 }, /* overline */ - { 0x00000070, 21457 }, /* p */ - { 0x01001e57, 21469 }, /* pabovedot */ - { 0x000000b6, 21497 }, /* paragraph */ - { 0x00000028, 21507 }, /* parenleft */ - { 0x00000029, 21517 }, /* parenright */ - { 0x01002202, 21528 }, /* partdifferential */ - { 0x000008ef, 21545 }, /* partialderivative */ - { 0x00000025, 21569 }, /* percent */ - { 0x0000002e, 21577 }, /* period */ - { 0x000000b7, 21584 }, /* periodcentered */ - { 0x00000ad5, 21599 }, /* permille */ - { 0x00000afb, 21619 }, /* phonographcopyright */ - { 0x0000002b, 21639 }, /* plus */ - { 0x000000b1, 21644 }, /* plusminus */ - { 0x00000ad4, 22149 }, /* prescription */ - { 0x000004b0, 22212 }, /* prolongedsound */ - { 0x00000aa6, 22227 }, /* punctspace */ - { 0x00000071, 22240 }, /* q */ - { 0x00000bcc, 22242 }, /* quad */ - { 0x0000003f, 22247 }, /* question */ - { 0x000000bf, 22256 }, /* questiondown */ - { 0x00000022, 22269 }, /* quotedbl */ - { 0x00000060, 22278 }, /* quoteleft */ - { 0x00000027, 22288 }, /* quoteright */ - { 0x00000072, 22301 }, /* r */ - { 0x000001e0, 22361 }, /* racute */ - { 0x000008d6, 22368 }, /* radical */ - { 0x000001f8, 22383 }, /* rcaron */ - { 0x000003b3, 22399 }, /* rcedilla */ - { 0x000000ae, 22413 }, /* registered */ - { 0x00000abe, 22461 }, /* rightanglebracket */ - { 0x000008fd, 22479 }, /* rightarrow */ - { 0x00000ba6, 22490 }, /* rightcaret */ - { 0x00000ad3, 22501 }, /* rightdoublequotemark */ - { 0x000008b0, 22522 }, /* rightmiddlecurlybrace */ - { 0x000008b7, 22544 }, /* rightmiddlesummation */ - { 0x00000acd, 22565 }, /* rightopentriangle */ - { 0x00000aeb, 22583 }, /* rightpointer */ - { 0x00000bd8, 22596 }, /* rightshoe */ - { 0x00000ad1, 22606 }, /* rightsinglequotemark */ - { 0x000009f5, 22627 }, /* rightt */ - { 0x00000bfc, 22634 }, /* righttack */ - { 0x00000073, 22663 }, /* s */ - { 0x01001e61, 22675 }, /* sabovedot */ - { 0x000001b6, 22692 }, /* sacute */ - { 0x000001b9, 22706 }, /* scaron */ - { 0x000001ba, 22722 }, /* scedilla */ - { 0x01000259, 22737 }, /* schwa */ - { 0x000002fe, 22755 }, /* scircumflex */ - { 0x0000ff7e, 22767 }, /* script_switch */ - { 0x00000ad7, 22793 }, /* seconds */ - { 0x000000a7, 22801 }, /* section */ - { 0x0000003b, 22816 }, /* semicolon */ - { 0x000004df, 22826 }, /* semivoicedsound */ - { 0x00000ac6, 22986 }, /* seveneighths */ - { 0x01002087, 22999 }, /* sevensubscript */ - { 0x01002077, 23014 }, /* sevensuperior */ - { 0x00000aca, 23055 }, /* signaturemark */ - { 0x00000aac, 23069 }, /* signifblank */ - { 0x000008c9, 23081 }, /* similarequal */ - { 0x00000afd, 23110 }, /* singlelowquotemark */ - { 0x01002086, 23825 }, /* sixsubscript */ - { 0x01002076, 23838 }, /* sixsuperior */ - { 0x0000002f, 23850 }, /* slash */ - { 0x000009e0, 23872 }, /* soliddiamond */ - { 0x00000020, 23885 }, /* space */ - { 0x0100221a, 23891 }, /* squareroot */ - { 0x000000df, 23902 }, /* ssharp */ - { 0x000000a3, 23909 }, /* sterling */ - { 0x01002263, 23936 }, /* stricteq */ - { 0x00000074, 24378 }, /* t */ - { 0x01001e6b, 24394 }, /* tabovedot */ - { 0x000001bb, 24411 }, /* tcaron */ - { 0x000001fe, 24427 }, /* tcedilla */ - { 0x00000af9, 24436 }, /* telephone */ - { 0x00000afa, 24446 }, /* telephonerecorder */ - { 0x000008c0, 25561 }, /* therefore */ - { 0x00000aa7, 25571 }, /* thinspace */ - { 0x000000fe, 25593 }, /* thorn */ - { 0x00000ac4, 25599 }, /* threeeighths */ - { 0x00000ab4, 25612 }, /* threefifths */ - { 0x000000be, 25624 }, /* threequarters */ - { 0x01002083, 25638 }, /* threesubscript */ - { 0x000000b3, 25653 }, /* threesuperior */ - { 0x0100222d, 25667 }, /* tintegral */ - { 0x000008a4, 25677 }, /* topintegral */ - { 0x000008ab, 25689 }, /* topleftparens */ - { 0x000008a2, 25703 }, /* topleftradical */ - { 0x000008a7, 25718 }, /* topleftsqbracket */ - { 0x000008b1, 25735 }, /* topleftsummation */ - { 0x000008ad, 25752 }, /* toprightparens */ - { 0x000008a9, 25767 }, /* toprightsqbracket */ - { 0x000008b5, 25785 }, /* toprightsummation */ - { 0x000009f7, 25803 }, /* topt */ - { 0x000008b3, 25808 }, /* topvertsummationconnector */ - { 0x00000ac9, 25842 }, /* trademark */ - { 0x00000acb, 25852 }, /* trademarkincircle */ - { 0x000003bc, 25877 }, /* tslash */ - { 0x00000ab3, 25884 }, /* twofifths */ - { 0x01002082, 25894 }, /* twosubscript */ - { 0x000000b2, 25907 }, /* twosuperior */ - { 0x00000ab1, 25919 }, /* twothirds */ - { 0x00000075, 25931 }, /* u */ - { 0x000000fa, 25940 }, /* uacute */ - { 0x01001ee5, 25957 }, /* ubelowdot */ - { 0x000002fd, 25974 }, /* ubreve */ - { 0x000000fb, 25993 }, /* ucircumflex */ - { 0x000000fc, 26016 }, /* udiaeresis */ - { 0x000001fb, 26040 }, /* udoubleacute */ - { 0x000000f9, 26060 }, /* ugrave */ - { 0x01001ee7, 26073 }, /* uhook */ - { 0x010001b0, 26085 }, /* uhorn */ - { 0x01001ee9, 26102 }, /* uhornacute */ - { 0x01001ef1, 26127 }, /* uhornbelowdot */ - { 0x01001eeb, 26152 }, /* uhorngrave */ - { 0x01001eed, 26173 }, /* uhornhook */ - { 0x01001eef, 26194 }, /* uhorntilde */ - { 0x000003fe, 26411 }, /* umacron */ - { 0x00000bc6, 26419 }, /* underbar */ - { 0x0000005f, 26428 }, /* underscore */ - { 0x000008dd, 26444 }, /* union */ - { 0x000003f9, 26458 }, /* uogonek */ - { 0x000008fc, 26469 }, /* uparrow */ - { 0x00000ba9, 26477 }, /* upcaret */ - { 0x000009ec, 26485 }, /* upleftcorner */ - { 0x000009eb, 26498 }, /* uprightcorner */ - { 0x00000bc3, 26512 }, /* upshoe */ - { 0x00000bd3, 26519 }, /* upstile */ - { 0x00000bce, 26527 }, /* uptack */ - { 0x000001f9, 26540 }, /* uring */ - { 0x000003fd, 26558 }, /* utilde */ - { 0x00000076, 26567 }, /* v */ - { 0x000008c1, 26569 }, /* variation */ - { 0x000009f8, 26579 }, /* vertbar */ - { 0x000008a6, 26587 }, /* vertconnector */ - { 0x000004de, 26601 }, /* voicedsound */ - { 0x000009e9, 26624 }, /* vt */ - { 0x00000077, 26629 }, /* w */ - { 0x01001e83, 26638 }, /* wacute */ - { 0x01000175, 26657 }, /* wcircumflex */ - { 0x01001e85, 26680 }, /* wdiaeresis */ - { 0x01001e81, 26698 }, /* wgrave */ - { 0x00000078, 26715 }, /* x */ - { 0x01001e8b, 26727 }, /* xabovedot */ - { 0x00000079, 31192 }, /* y */ - { 0x000000fd, 31201 }, /* yacute */ - { 0x01001ef5, 31218 }, /* ybelowdot */ - { 0x01000177, 31240 }, /* ycircumflex */ - { 0x000000ff, 31252 }, /* ydiaeresis */ - { 0x000000a5, 31274 }, /* yen */ - { 0x01001ef3, 31285 }, /* ygrave */ - { 0x01001ef7, 31298 }, /* yhook */ - { 0x01001ef9, 31311 }, /* ytilde */ - { 0x0000007a, 31320 }, /* z */ - { 0x000001bf, 31332 }, /* zabovedot */ - { 0x000001bc, 31349 }, /* zacute */ - { 0x000001be, 31363 }, /* zcaron */ - { 0x01002080, 31403 }, /* zerosubscript */ - { 0x01002070, 31417 }, /* zerosuperior */ - { 0x010001b6, 31438 }, /* zstroke */ -}; - -static const struct name_keysym name_to_keysym_icase[] = { { 0x00000030, 0 }, /* 0 */ { 0x00000031, 2 }, /* 1 */ { 0x00000032, 4 }, /* 2 */