From: Michael Jumper Date: Wed, 16 May 2012 08:26:09 +0000 (-0700) Subject: Use direct translation between keysym and Unicode, rather than table (see http:/... X-Git-Url: http://git.alex.org.uk Use direct translation between keysym and Unicode, rather than table (see x.org/wiki/KeySyms, same translation used from Unicode to keysym by the Guacmole JS client). Remove related files. --- diff --git a/Makefile.am b/Makefile.am index be4b416..c7069ee 100644 --- a/Makefile.am +++ b/Makefile.am @@ -42,7 +42,6 @@ AM_CFLAGS = -Werror -Wall -pedantic -Iinclude lib_LTLIBRARIES = libguac-client-rdp.la libguac_client_rdp_la_SOURCES = src/client.c src/rdp_bitmap.c src/rdp_glyph.c src/rdp_pointer.c src/rdp_gdi.c src/guac_handlers.c src/rdp_cliprdr.c \ - src/unicode_convtable.c\ src/rdp_keymap.c \ src/rdp_keymap_base.c \ src/rdp_keymap_en_us.c diff --git a/include/unicode_convtable.h b/include/unicode_convtable.h deleted file mode 100644 index 30e9fb3..0000000 --- a/include/unicode_convtable.h +++ /dev/null @@ -1,52 +0,0 @@ - -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is libguac-client-rdp. - * - * The Initial Developer of the Original Code is - * Jocelyn DELALANDE Ulteo SAS - http://www.ulteo.com - * - * Portions created by the Initial Developer are Copyright (C) 2012 Ulteo SAS. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef _GUAC_UNICODE_CONVTABLE_H -#define _GUAC_UNICODE_CONVTABLE_H - -int keysym2uni(int keysym); - -/* Keysym->unicode Exceptions tables */ -int keysym2uni_base[65536]; -int keysym2uni_ext0[4096]; -int keysym2uni_ext1[4096]; -int keysym2uni_ext2[4096]; - -/* Fill global tables, if needed (only on first call) */ -void init_unicode_tables(); - -#endif diff --git a/src/guac_handlers.c b/src/guac_handlers.c index 5cb216c..a712e56 100644 --- a/src/guac_handlers.c +++ b/src/guac_handlers.c @@ -62,7 +62,6 @@ #include "rdp_keymap.h" #include "rdp_cliprdr.h" #include "guac_handlers.h" -#include "unicode_convtable.h" void __guac_rdp_update_keysyms(guac_client* client, const int* keysym_string, int from, int to); int __guac_rdp_send_keysym(guac_client* client, int keysym, int pressed); @@ -329,7 +328,7 @@ int __guac_rdp_send_keysym(guac_client* client, int keysym, int pressed) { freerdp* rdp_inst = guac_client_data->rdp_inst; /* If keysym can be in lookup table */ - //if (keysym <= 0xFFFF) { + if (keysym <= 0xFFFF) { /* Look up scancode mapping */ const guac_rdp_keysym_desc* keysym_desc = @@ -363,29 +362,33 @@ int __guac_rdp_send_keysym(guac_client* client, int keysym, int pressed) { if (keysym_desc->clear_keysyms != NULL) __guac_rdp_update_keysyms(client, keysym_desc->clear_keysyms, 1, 1); + return 0; - } else { - /* Fall back to unicode events if undefined inside current keymap */ - int unicode_code = keysym2uni(keysym); - guac_client_log_info(client, "Translated keysym:0x%x to unicode:0x%x (pressed=%d flag=%d)", - keysym, unicode_code, pressed, pressed ? KBD_FLAGS_DOWN : KBD_FLAGS_RELEASE); + } + } - /* LibfreeRDP seems not to take into account the DOWN/RELEASE flags. - * So we send only on of the two key events. - */ - if (pressed) { - rdp_inst->input->UnicodeKeyboardEvent( - rdp_inst->input, - //pressed ? KBD_FLAGS_DOW : KBD_FLAGS_RELEASE, <- not - // taken into account - 0, - unicode_code); - } else { - - guac_client_log_info(client, "Ignoring release"); - } - } - //} + /* Fall back to unicode events if undefined inside current keymap */ + + /* Only send when key pressed - Unicode events do not have DOWN/RELEASE flags */ + if (pressed) { + + /* Translate keysym into codepoint */ + int codepoint; + if (keysym <= 0xFF) + codepoint = keysym; + else + codepoint = keysym & 0xFFFFFF; + + guac_client_log_info(client, "Translated keysym 0x%x to U+%04X", keysym, codepoint); + + /* Send Unicode event */ + rdp_inst->input->UnicodeKeyboardEvent( + rdp_inst->input, + 0, codepoint); + } + + else + guac_client_log_info(client, "Ignoring key release (Unicode event)"); return 0; } diff --git a/src/unicode_convtable.c b/src/unicode_convtable.c deleted file mode 100644 index e022e96..0000000 --- a/src/unicode_convtable.c +++ /dev/null @@ -1,1117 +0,0 @@ - -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is libguac-client-rdp. - * - * The Initial Developer of the Original Code is - * Jocelyn DELALANDE Ulteo SAS - http://www.ulteo.com - * - * Portions created by the Initial Developer are Copyright (C) 2012 Ulteo SAS. - * - * Contributor(s): David LECHEVALIER 2011 - * - * Portions created by Ulteo Employees are Copyright (C) 2011-2012 Ulteo SAS. - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - -#include "unicode_convtable.h" - -int keysym2uni(int keysym) { - init_unicode_tables(); - /* Default: no exception */ - int exception = 0; - - if (keysym < 0x100000) { - // Look for a 4-digits-form exception - exception = keysym2uni_base[keysym]; - } else { - // Look for a 7-digits-form exception - /* Switch to look for 0x1001XXX 0x1002XXX or 0x1002XXX - the tables only indexes on XXX - */ - switch(keysym & 0xFFFF000) { - case 0x1000000: - exception = keysym2uni_ext0[keysym & 0x0000FFF]; - break; - case 0x1001000: - exception = keysym2uni_ext1[keysym & 0x0000FFF]; - break; - case 0x1002000: - exception = keysym2uni_ext2[keysym & 0x0000FFF]; - break; - } - - /* If the keysym is not within exceptions, keysym = unicode */ - } - if (exception != 0) { - return exception; - } else { - return keysym; - } -} - -void init_unicode_tables() { - // initialize only on first function call. - static int keysym2uni_initialized = 0; - - if (keysym2uni_initialized >0) - return; - else - keysym2uni_initialized = 1; - -/* Filled with script tools/ini2dot_h_unimap.py */ -keysym2uni_base[0x11] = 104; -keysym2uni_base[0x1a1] = 0x104; -keysym2uni_base[0x1a2] = 0x2d8; -keysym2uni_base[0x1a3] = 0x141; -keysym2uni_base[0x1a5] = 0x13d; -keysym2uni_base[0x1a6] = 0x15a; -keysym2uni_base[0x1a9] = 0x160; -keysym2uni_base[0x1aa] = 0x15e; -keysym2uni_base[0x1ab] = 0x164; -keysym2uni_base[0x1ac] = 0x179; -keysym2uni_base[0x1ae] = 0x17d; -keysym2uni_base[0x1af] = 0x17b; -keysym2uni_base[0x1b1] = 0x105; -keysym2uni_base[0x1b2] = 0x2db; -keysym2uni_base[0x1b3] = 0x142; -keysym2uni_base[0x1b5] = 0x13e; -keysym2uni_base[0x1b6] = 0x15b; -keysym2uni_base[0x1b7] = 0x2c7; -keysym2uni_base[0x1b9] = 0x161; -keysym2uni_base[0x1ba] = 0x15f; -keysym2uni_base[0x1bb] = 0x165; -keysym2uni_base[0x1bc] = 0x17a; -keysym2uni_base[0x1bd] = 0x2dd; -keysym2uni_base[0x1be] = 0x17e; -keysym2uni_base[0x1bf] = 0x17c; -keysym2uni_base[0x1c0] = 0x154; -keysym2uni_base[0x1c3] = 0x102; -keysym2uni_base[0x1c5] = 0x139; -keysym2uni_base[0x1c6] = 0x106; -keysym2uni_base[0x1c8] = 0x10c; -keysym2uni_base[0x1ca] = 0x118; -keysym2uni_base[0x1cc] = 0x11a; -keysym2uni_base[0x1cf] = 0x10e; -keysym2uni_base[0x1d0] = 0x110; -keysym2uni_base[0x1d1] = 0x143; -keysym2uni_base[0x1d2] = 0x147; -keysym2uni_base[0x1d5] = 0x150; -keysym2uni_base[0x1d8] = 0x158; -keysym2uni_base[0x1d9] = 0x16e; -keysym2uni_base[0x1db] = 0x170; -keysym2uni_base[0x1de] = 0x162; -keysym2uni_base[0x1e0] = 0x155; -keysym2uni_base[0x1e3] = 0x103; -keysym2uni_base[0x1e5] = 0x13a; -keysym2uni_base[0x1e6] = 0x107; -keysym2uni_base[0x1e8] = 0x10d; -keysym2uni_base[0x1ea] = 0x119; -keysym2uni_base[0x1ec] = 0x11b; -keysym2uni_base[0x1ef] = 0x10f; -keysym2uni_base[0x1f0] = 0x111; -keysym2uni_base[0x1f1] = 0x144; -keysym2uni_base[0x1f2] = 0x148; -keysym2uni_base[0x1f5] = 0x151; -keysym2uni_base[0x1fb] = 0x171; -keysym2uni_base[0x1f8] = 0x159; -keysym2uni_base[0x1f9] = 0x16f; -keysym2uni_base[0x1fe] = 0x163; -keysym2uni_base[0x2a1] = 0x126; -keysym2uni_base[0x2a6] = 0x124; -keysym2uni_base[0x2a9] = 0x130; -keysym2uni_base[0x2ab] = 0x11e; -keysym2uni_base[0x2ac] = 0x134; -keysym2uni_base[0x2b1] = 0x127; -keysym2uni_base[0x2b6] = 0x125; -keysym2uni_base[0x2b9] = 0x131; -keysym2uni_base[0x2bb] = 0x11f; -keysym2uni_base[0x2bc] = 0x135; -keysym2uni_base[0x2c5] = 0x10a; -keysym2uni_base[0x2c6] = 0x108; -keysym2uni_base[0x2d5] = 0x120; -keysym2uni_base[0x2d8] = 0x11c; -keysym2uni_base[0x2dd] = 0x16c; -keysym2uni_base[0x2de] = 0x15c; -keysym2uni_base[0x2e5] = 0x10b; -keysym2uni_base[0x2e6] = 0x109; -keysym2uni_base[0x2f5] = 0x121; -keysym2uni_base[0x2f8] = 0x11d; -keysym2uni_base[0x2fd] = 0x16d; -keysym2uni_base[0x2fe] = 0x15d; -keysym2uni_base[0x3a2] = 0x138; -keysym2uni_base[0x3a3] = 0x156; -keysym2uni_base[0x3a5] = 0x128; -keysym2uni_base[0x3a6] = 0x13b; -keysym2uni_base[0x3aa] = 0x112; -keysym2uni_base[0x3ab] = 0x122; -keysym2uni_base[0x3ac] = 0x166; -keysym2uni_base[0x3b3] = 0x157; -keysym2uni_base[0x3b5] = 0x129; -keysym2uni_base[0x3b6] = 0x13c; -keysym2uni_base[0x3ba] = 0x113; -keysym2uni_base[0x3bb] = 0x123; -keysym2uni_base[0x3bc] = 0x167; -keysym2uni_base[0x3bd] = 0x14a; -keysym2uni_base[0x3bf] = 0x14b; -keysym2uni_base[0x3c0] = 0x100; -keysym2uni_base[0x3c7] = 0x12e; -keysym2uni_base[0x3cc] = 0x116; -keysym2uni_base[0x3cf] = 0x12a; -keysym2uni_base[0x3d1] = 0x145; -keysym2uni_base[0x3d2] = 0x14c; -keysym2uni_base[0x3d3] = 0x136; -keysym2uni_base[0x3d9] = 0x172; -keysym2uni_base[0x3dd] = 0x168; -keysym2uni_base[0x3de] = 0x16a; -keysym2uni_base[0x3e0] = 0x101; -keysym2uni_base[0x3e7] = 0x12f; -keysym2uni_base[0x3ec] = 0x117; -keysym2uni_base[0x3ef] = 0x12b; -keysym2uni_base[0x3f1] = 0x146; -keysym2uni_base[0x3f2] = 0x14d; -keysym2uni_base[0x3f3] = 0x137; -keysym2uni_base[0x3f9] = 0x173; -keysym2uni_base[0x3fd] = 0x169; -keysym2uni_base[0x3fe] = 0x16b; -keysym2uni_base[0x13bc] = 0x152; -keysym2uni_base[0x13bd] = 0x153; -keysym2uni_base[0x13be] = 0x178; -keysym2uni_base[0x47e] = 0x203e; -keysym2uni_base[0x4a1] = 0x3002; -keysym2uni_base[0x4a2] = 0x300c; -keysym2uni_base[0x4a3] = 0x300d; -keysym2uni_base[0x4a4] = 0x3001; -keysym2uni_base[0x4a5] = 0x30fb; -keysym2uni_base[0x4a6] = 0x30f2; -keysym2uni_base[0x4a7] = 0x30a1; -keysym2uni_base[0x4a8] = 0x30a3; -keysym2uni_base[0x4a9] = 0x30a5; -keysym2uni_base[0x4aa] = 0x30a7; -keysym2uni_base[0x4ab] = 0x30a9; -keysym2uni_base[0x4ac] = 0x30e3; -keysym2uni_base[0x4ad] = 0x30e5; -keysym2uni_base[0x4ae] = 0x30e7; -keysym2uni_base[0x4af] = 0x30c3; -keysym2uni_base[0x4b0] = 0x30fc; -keysym2uni_base[0x4b1] = 0x30a2; -keysym2uni_base[0x4b2] = 0x30a4; -keysym2uni_base[0x4b3] = 0x30a6; -keysym2uni_base[0x4b4] = 0x30a8; -keysym2uni_base[0x4b5] = 0x30aa; -keysym2uni_base[0x4b6] = 0x30ab; -keysym2uni_base[0x4b7] = 0x30ad; -keysym2uni_base[0x4b8] = 0x30af; -keysym2uni_base[0x4b9] = 0x30b1; -keysym2uni_base[0x4ba] = 0x30b3; -keysym2uni_base[0x4bb] = 0x30b5; -keysym2uni_base[0x4bc] = 0x30b7; -keysym2uni_base[0x4bd] = 0x30b9; -keysym2uni_base[0x4be] = 0x30bb; -keysym2uni_base[0x4bf] = 0x30bd; -keysym2uni_base[0x4c0] = 0x30bf; -keysym2uni_base[0x4c1] = 0x30c1; -keysym2uni_base[0x4c2] = 0x30c4; -keysym2uni_base[0x4c3] = 0x30c6; -keysym2uni_base[0x4c4] = 0x30c8; -keysym2uni_base[0x4c5] = 0x30ca; -keysym2uni_base[0x4c6] = 0x30cb; -keysym2uni_base[0x4c7] = 0x30cc; -keysym2uni_base[0x4c8] = 0x30cd; -keysym2uni_base[0x4c9] = 0x30ce; -keysym2uni_base[0x4ca] = 0x30cf; -keysym2uni_base[0x4cb] = 0x30d2; -keysym2uni_base[0x4cc] = 0x30d5; -keysym2uni_base[0x4cd] = 0x30d8; -keysym2uni_base[0x4ce] = 0x30db; -keysym2uni_base[0x4cf] = 0x30de; -keysym2uni_base[0x4d0] = 0x30df; -keysym2uni_base[0x4d1] = 0x30e0; -keysym2uni_base[0x4d2] = 0x30e1; -keysym2uni_base[0x4d3] = 0x30e2; -keysym2uni_base[0x4d4] = 0x30e4; -keysym2uni_base[0x4d5] = 0x30e6; -keysym2uni_base[0x4d6] = 0x30e8; -keysym2uni_base[0x4d7] = 0x30e9; -keysym2uni_base[0x4d8] = 0x30ea; -keysym2uni_base[0x4d9] = 0x30eb; -keysym2uni_base[0x4da] = 0x30ec; -keysym2uni_base[0x4db] = 0x30ed; -keysym2uni_base[0x4dc] = 0x30ef; -keysym2uni_base[0x4dd] = 0x30f3; -keysym2uni_base[0x4de] = 0x309b; -keysym2uni_base[0x4df] = 0x309c; -keysym2uni_base[0x5ac] = 0x60c; -keysym2uni_base[0x5bb] = 0x61b; -keysym2uni_base[0x5bf] = 0x61f; -keysym2uni_base[0x5c1] = 0x621; -keysym2uni_base[0x5c2] = 0x622; -keysym2uni_base[0x5c3] = 0x623; -keysym2uni_base[0x5c4] = 0x624; -keysym2uni_base[0x5c5] = 0x625; -keysym2uni_base[0x5c6] = 0x626; -keysym2uni_base[0x5c7] = 0x627; -keysym2uni_base[0x5c8] = 0x628; -keysym2uni_base[0x5c9] = 0x629; -keysym2uni_base[0x5ca] = 0x62a; -keysym2uni_base[0x5cb] = 0x62b; -keysym2uni_base[0x5cc] = 0x62c; -keysym2uni_base[0x5cd] = 0x62d; -keysym2uni_base[0x5ce] = 0x62e; -keysym2uni_base[0x5cf] = 0x62f; -keysym2uni_base[0x5d0] = 0x630; -keysym2uni_base[0x5d1] = 0x631; -keysym2uni_base[0x5d2] = 0x632; -keysym2uni_base[0x5d3] = 0x633; -keysym2uni_base[0x5d4] = 0x634; -keysym2uni_base[0x5d5] = 0x635; -keysym2uni_base[0x5d6] = 0x636; -keysym2uni_base[0x5d7] = 0x637; -keysym2uni_base[0x5d8] = 0x638; -keysym2uni_base[0x5d9] = 0x639; -keysym2uni_base[0x5da] = 0x63a; -keysym2uni_base[0x5e0] = 0x640; -keysym2uni_base[0x5e1] = 0x641; -keysym2uni_base[0x5e2] = 0x642; -keysym2uni_base[0x5e3] = 0x643; -keysym2uni_base[0x5e4] = 0x644; -keysym2uni_base[0x5e5] = 0x645; -keysym2uni_base[0x5e6] = 0x646; -keysym2uni_base[0x5e7] = 0x647; -keysym2uni_base[0x5e8] = 0x648; -keysym2uni_base[0x5e9] = 0x649; -keysym2uni_base[0x5ea] = 0x64a; -keysym2uni_base[0x5eb] = 0x64b; -keysym2uni_base[0x5ec] = 0x64c; -keysym2uni_base[0x5ed] = 0x64d; -keysym2uni_base[0x5ee] = 0x64e; -keysym2uni_base[0x5ef] = 0x64f; -keysym2uni_base[0x5f0] = 0x650; -keysym2uni_base[0x5f1] = 0x651; -keysym2uni_base[0x5f2] = 0x652; -keysym2uni_base[0x6a1] = 0x452; -keysym2uni_base[0x6a2] = 0x453; -keysym2uni_base[0x6a3] = 0x451; -keysym2uni_base[0x6a4] = 0x454; -keysym2uni_base[0x6a5] = 0x455; -keysym2uni_base[0x6a6] = 0x456; -keysym2uni_base[0x6a7] = 0x457; -keysym2uni_base[0x6a8] = 0x458; -keysym2uni_base[0x6a9] = 0x459; -keysym2uni_base[0x6aa] = 0x45a; -keysym2uni_base[0x6ab] = 0x45b; -keysym2uni_base[0x6ac] = 0x45c; -keysym2uni_base[0x6ad] = 0x491; -keysym2uni_base[0x6ae] = 0x45e; -keysym2uni_base[0x6af] = 0x45f; -keysym2uni_base[0x6b0] = 0x2116; -keysym2uni_base[0x6b1] = 0x402; -keysym2uni_base[0x6b2] = 0x403; -keysym2uni_base[0x6b3] = 0x401; -keysym2uni_base[0x6b4] = 0x404; -keysym2uni_base[0x6b5] = 0x405; -keysym2uni_base[0x6b6] = 0x406; -keysym2uni_base[0x6b7] = 0x407; -keysym2uni_base[0x6b8] = 0x408; -keysym2uni_base[0x6b9] = 0x409; -keysym2uni_base[0x6ba] = 0x40a; -keysym2uni_base[0x6bb] = 0x40b; -keysym2uni_base[0x6bc] = 0x40c; -keysym2uni_base[0x6bd] = 0x490; -keysym2uni_base[0x6be] = 0x40e; -keysym2uni_base[0x6bf] = 0x40f; -keysym2uni_base[0x6c0] = 0x44e; -keysym2uni_base[0x6c1] = 0x430; -keysym2uni_base[0x6c2] = 0x431; -keysym2uni_base[0x6c3] = 0x446; -keysym2uni_base[0x6c4] = 0x434; -keysym2uni_base[0x6c5] = 0x435; -keysym2uni_base[0x6c6] = 0x444; -keysym2uni_base[0x6c7] = 0x433; -keysym2uni_base[0x6c8] = 0x445; -keysym2uni_base[0x6c9] = 0x438; -keysym2uni_base[0x6ca] = 0x439; -keysym2uni_base[0x6cb] = 0x43a; -keysym2uni_base[0x6cc] = 0x43b; -keysym2uni_base[0x6cd] = 0x43c; -keysym2uni_base[0x6ce] = 0x43d; -keysym2uni_base[0x6cf] = 0x43e; -keysym2uni_base[0x6d0] = 0x43f; -keysym2uni_base[0x6d1] = 0x44f; -keysym2uni_base[0x6d2] = 0x440; -keysym2uni_base[0x6d3] = 0x441; -keysym2uni_base[0x6d4] = 0x442; -keysym2uni_base[0x6d5] = 0x443; -keysym2uni_base[0x6d6] = 0x436; -keysym2uni_base[0x6d7] = 0x432; -keysym2uni_base[0x6d8] = 0x44c; -keysym2uni_base[0x6d9] = 0x44b; -keysym2uni_base[0x6da] = 0x437; -keysym2uni_base[0x6db] = 0x448; -keysym2uni_base[0x6dc] = 0x44d; -keysym2uni_base[0x6dd] = 0x449; -keysym2uni_base[0x6de] = 0x447; -keysym2uni_base[0x6df] = 0x44a; -keysym2uni_base[0x6e0] = 0x42e; -keysym2uni_base[0x6e1] = 0x410; -keysym2uni_base[0x6e2] = 0x411; -keysym2uni_base[0x6e3] = 0x426; -keysym2uni_base[0x6e4] = 0x414; -keysym2uni_base[0x6e5] = 0x415; -keysym2uni_base[0x6e6] = 0x424; -keysym2uni_base[0x6e7] = 0x413; -keysym2uni_base[0x6e8] = 0x425; -keysym2uni_base[0x6e9] = 0x418; -keysym2uni_base[0x6ea] = 0x419; -keysym2uni_base[0x6eb] = 0x41a; -keysym2uni_base[0x6ec] = 0x41b; -keysym2uni_base[0x6ed] = 0x41c; -keysym2uni_base[0x6ee] = 0x41d; -keysym2uni_base[0x6ef] = 0x41e; -keysym2uni_base[0x6f0] = 0x41f; -keysym2uni_base[0x6f1] = 0x42f; -keysym2uni_base[0x6f2] = 0x420; -keysym2uni_base[0x6f3] = 0x421; -keysym2uni_base[0x6f4] = 0x422; -keysym2uni_base[0x6f5] = 0x423; -keysym2uni_base[0x6f6] = 0x416; -keysym2uni_base[0x6f7] = 0x412; -keysym2uni_base[0x6f8] = 0x42c; -keysym2uni_base[0x6f9] = 0x42b; -keysym2uni_base[0x6fa] = 0x417; -keysym2uni_base[0x6fb] = 0x428; -keysym2uni_base[0x6fc] = 0x42d; -keysym2uni_base[0x6fd] = 0x429; -keysym2uni_base[0x6fe] = 0x427; -keysym2uni_base[0x6ff] = 0x42a; -keysym2uni_base[0x7a1] = 0x386; -keysym2uni_base[0x7a2] = 0x388; -keysym2uni_base[0x7a3] = 0x389; -keysym2uni_base[0x7a4] = 0x38a; -keysym2uni_base[0x7a5] = 0x3aa; -keysym2uni_base[0x7a7] = 0x38c; -keysym2uni_base[0x7a8] = 0x38e; -keysym2uni_base[0x7a9] = 0x3ab; -keysym2uni_base[0x7ab] = 0x38f; -keysym2uni_base[0x7ae] = 0x385; -keysym2uni_base[0x7af] = 0x2015; -keysym2uni_base[0x7b1] = 0x3ac; -keysym2uni_base[0x7b2] = 0x3ad; -keysym2uni_base[0x7b3] = 0x3ae; -keysym2uni_base[0x7b4] = 0x3af; -keysym2uni_base[0x7b5] = 0x3ca; -keysym2uni_base[0x7b6] = 0x390; -keysym2uni_base[0x7b7] = 0x3cc; -keysym2uni_base[0x7b8] = 0x3cd; -keysym2uni_base[0x7b9] = 0x3cb; -keysym2uni_base[0x7ba] = 0x3b0; -keysym2uni_base[0x7bb] = 0x3ce; -keysym2uni_base[0x7c1] = 0x391; -keysym2uni_base[0x7c2] = 0x392; -keysym2uni_base[0x7c3] = 0x393; -keysym2uni_base[0x7c4] = 0x394; -keysym2uni_base[0x7c5] = 0x395; -keysym2uni_base[0x7c6] = 0x396; -keysym2uni_base[0x7c7] = 0x397; -keysym2uni_base[0x7c8] = 0x398; -keysym2uni_base[0x7c9] = 0x399; -keysym2uni_base[0x7ca] = 0x39a; -keysym2uni_base[0x7cb] = 0x39b; -keysym2uni_base[0x7cc] = 0x39c; -keysym2uni_base[0x7cd] = 0x39d; -keysym2uni_base[0x7ce] = 0x39e; -keysym2uni_base[0x7cf] = 0x39f; -keysym2uni_base[0x7d0] = 0x3a0; -keysym2uni_base[0x7d1] = 0x3a1; -keysym2uni_base[0x7d2] = 0x3a3; -keysym2uni_base[0x7d4] = 0x3a4; -keysym2uni_base[0x7d5] = 0x3a5; -keysym2uni_base[0x7d6] = 0x3a6; -keysym2uni_base[0x7d7] = 0x3a7; -keysym2uni_base[0x7d8] = 0x3a8; -keysym2uni_base[0x7d9] = 0x3a9; -keysym2uni_base[0x7e1] = 0x3b1; -keysym2uni_base[0x7e2] = 0x3b2; -keysym2uni_base[0x7e3] = 0x3b3; -keysym2uni_base[0x7e4] = 0x3b4; -keysym2uni_base[0x7e5] = 0x3b5; -keysym2uni_base[0x7e6] = 0x3b6; -keysym2uni_base[0x7e7] = 0x3b7; -keysym2uni_base[0x7e8] = 0x3b8; -keysym2uni_base[0x7e9] = 0x3b9; -keysym2uni_base[0x7ea] = 0x3ba; -keysym2uni_base[0x7eb] = 0x3bb; -keysym2uni_base[0x7ec] = 0x3bc; -keysym2uni_base[0x7ed] = 0x3bd; -keysym2uni_base[0x7ee] = 0x3be; -keysym2uni_base[0x7ef] = 0x3bf; -keysym2uni_base[0x7f0] = 0x3c0; -keysym2uni_base[0x7f1] = 0x3c1; -keysym2uni_base[0x7f2] = 0x3c3; -keysym2uni_base[0x7f3] = 0x3c2; -keysym2uni_base[0x7f4] = 0x3c4; -keysym2uni_base[0x7f5] = 0x3c5; -keysym2uni_base[0x7f6] = 0x3c6; -keysym2uni_base[0x7f7] = 0x3c7; -keysym2uni_base[0x7f8] = 0x3c8; -keysym2uni_base[0x7f9] = 0x3c9; -keysym2uni_base[0x8a1] = 0x23b7; -keysym2uni_base[0x9ec] = 0x250c; -keysym2uni_base[0x9f1] = 0x2500; -keysym2uni_base[0x8a4] = 0x2320; -keysym2uni_base[0x8a5] = 0x2321; -keysym2uni_base[0x9f8] = 0x2502; -keysym2uni_base[0x8a7] = 0x23a1; -keysym2uni_base[0x8a8] = 0x23a3; -keysym2uni_base[0x8a9] = 0x23a4; -keysym2uni_base[0x8aa] = 0x23a6; -keysym2uni_base[0x8ab] = 0x239b; -keysym2uni_base[0x8ac] = 0x239d; -keysym2uni_base[0x8ad] = 0x239e; -keysym2uni_base[0x8ae] = 0x23a0; -keysym2uni_base[0x8af] = 0x23a8; -keysym2uni_base[0x8b0] = 0x23ac; -keysym2uni_base[0x8bc] = 0x2264; -keysym2uni_base[0x8bd] = 0x2260; -keysym2uni_base[0x8be] = 0x2265; -keysym2uni_base[0x8bf] = 0x222b; -keysym2uni_base[0x8c0] = 0x2234; -keysym2uni_base[0x8c1] = 0x221d; -keysym2uni_base[0x8c2] = 0x221e; -keysym2uni_base[0x8c5] = 0x2207; -keysym2uni_base[0x8c8] = 0x223c; -keysym2uni_base[0x8c9] = 0x2243; -keysym2uni_base[0x8cd] = 0x21d4; -keysym2uni_base[0x8ce] = 0x21d2; -keysym2uni_base[0x8cf] = 0x2261; -keysym2uni_base[0xbda] = 0x2282; -keysym2uni_base[0xbd8] = 0x2283; -keysym2uni_base[0xbc3] = 0x2229; -keysym2uni_base[0xbd6] = 0x222a; -keysym2uni_base[0xba9] = 0x2227; -keysym2uni_base[0xba8] = 0x2228; -keysym2uni_base[0x8f6] = 0x192; -keysym2uni_base[0x8fb] = 0x2190; -keysym2uni_base[0x8fc] = 0x2191; -keysym2uni_base[0x8fd] = 0x2192; -keysym2uni_base[0x8fe] = 0x2193; -keysym2uni_base[0x9e0] = 0x25c6; -keysym2uni_base[0x9e1] = 0x2592; -keysym2uni_base[0x9e2] = 0x2409; -keysym2uni_base[0x9e3] = 0x240c; -keysym2uni_base[0x9e4] = 0x240d; -keysym2uni_base[0x9e5] = 0x240a; -keysym2uni_base[0x9e8] = 0x2424; -keysym2uni_base[0x9e9] = 0x240b; -keysym2uni_base[0x9ea] = 0x2518; -keysym2uni_base[0x9eb] = 0x2510; -keysym2uni_base[0x9ed] = 0x2514; -keysym2uni_base[0x9ee] = 0x253c; -keysym2uni_base[0x9ef] = 0x23ba; -keysym2uni_base[0x9f0] = 0x23bb; -keysym2uni_base[0x9f2] = 0x23bc; -keysym2uni_base[0x9f3] = 0x23bd; -keysym2uni_base[0x9f4] = 0x251c; -keysym2uni_base[0x9f5] = 0x2524; -keysym2uni_base[0x9f6] = 0x2534; -keysym2uni_base[0x9f7] = 0x252c; -keysym2uni_base[0xaa1] = 0x2003; -keysym2uni_base[0xaa2] = 0x2002; -keysym2uni_base[0xaa3] = 0x2004; -keysym2uni_base[0xaa4] = 0x2005; -keysym2uni_base[0xaa5] = 0x2007; -keysym2uni_base[0xaa6] = 0x2008; -keysym2uni_base[0xaa7] = 0x2009; -keysym2uni_base[0xaa8] = 0x200a; -keysym2uni_base[0xaa9] = 0x2014; -keysym2uni_base[0xaaa] = 0x2013; -keysym2uni_base[0xaac] = 0x2423; -keysym2uni_base[0xaae] = 0x2026; -keysym2uni_base[0xaaf] = 0x2025; -keysym2uni_base[0xab0] = 0x2153; -keysym2uni_base[0xab1] = 0x2154; -keysym2uni_base[0xab2] = 0x2155; -keysym2uni_base[0xab3] = 0x2156; -keysym2uni_base[0xab4] = 0x2157; -keysym2uni_base[0xab5] = 0x2158; -keysym2uni_base[0xab6] = 0x2159; -keysym2uni_base[0xab7] = 0x215a; -keysym2uni_base[0xab8] = 0x2105; -keysym2uni_base[0xabb] = 0x2012; -keysym2uni_base[0xabc] = 0x27e8; -keysym2uni_base[0xabd] = 0x2e; -keysym2uni_base[0xabe] = 0x27e9; -keysym2uni_base[0xac3] = 0x215b; -keysym2uni_base[0xac4] = 0x215c; -keysym2uni_base[0xac5] = 0x215d; -keysym2uni_base[0xac6] = 0x215e; -keysym2uni_base[0xac9] = 0x2122; -keysym2uni_base[0xaca] = 0x2613; -keysym2uni_base[0xacc] = 0x25c1; -keysym2uni_base[0xacd] = 0x25b7; -keysym2uni_base[0xbcf] = 0x25cb; -keysym2uni_base[0xacf] = 0x25af; -keysym2uni_base[0xad0] = 0x2018; -keysym2uni_base[0xad1] = 0x2019; -keysym2uni_base[0xad2] = 0x201c; -keysym2uni_base[0xad3] = 0x201d; -keysym2uni_base[0xad4] = 0x211e; -keysym2uni_base[0xad6] = 0x2032; -keysym2uni_base[0xad7] = 0x2033; -keysym2uni_base[0xad9] = 0x271d; -keysym2uni_base[0xadb] = 0x25ac; -keysym2uni_base[0xadc] = 0x25c0; -keysym2uni_base[0xadd] = 0x25b6; -keysym2uni_base[0xade] = 0x25cf; -keysym2uni_base[0xadf] = 0x25ae; -keysym2uni_base[0xae0] = 0x25e6; -keysym2uni_base[0xae1] = 0x25ab; -keysym2uni_base[0xae2] = 0x25ad; -keysym2uni_base[0xae3] = 0x25b3; -keysym2uni_base[0xae4] = 0x25bd; -keysym2uni_base[0xae5] = 0x2606; -keysym2uni_base[0xae6] = 0x2022; -keysym2uni_base[0xae7] = 0x25aa; -keysym2uni_base[0xae8] = 0x25b2; -keysym2uni_base[0xae9] = 0x25bc; -keysym2uni_base[0xaea] = 0x261c; -keysym2uni_base[0xaeb] = 0x261e; -keysym2uni_base[0xaec] = 0x2663; -keysym2uni_base[0xaed] = 0x2666; -keysym2uni_base[0xaee] = 0x2665; -keysym2uni_base[0xaf0] = 0x2720; -keysym2uni_base[0xaf1] = 0x2020; -keysym2uni_base[0xaf2] = 0x2021; -keysym2uni_base[0xaf3] = 0x2713; -keysym2uni_base[0xaf4] = 0x2717; -keysym2uni_base[0xaf5] = 0x266f; -keysym2uni_base[0xaf6] = 0x266d; -keysym2uni_base[0xaf7] = 0x2642; -keysym2uni_base[0xaf8] = 0x2640; -keysym2uni_base[0xaf9] = 0x260e; -keysym2uni_base[0xafa] = 0x2315; -keysym2uni_base[0xafb] = 0x2117; -keysym2uni_base[0xafc] = 0x2038; -keysym2uni_base[0xafd] = 0x201a; -keysym2uni_base[0xafe] = 0x201e; -keysym2uni_base[0xba3] = 0x3c; -keysym2uni_base[0xba6] = 0x3e; -keysym2uni_base[0xbc0] = 0xaf; -keysym2uni_base[0xbc2] = 0x22a4; -keysym2uni_base[0xbc4] = 0x230a; -keysym2uni_base[0xbca] = 0x2218; -keysym2uni_base[0xbcc] = 0x2395; -keysym2uni_base[0xbce] = 0x22a5; -keysym2uni_base[0xbd3] = 0x2308; -keysym2uni_base[0xbdc] = 0x22a3; -keysym2uni_base[0xbfc] = 0x22a2; -keysym2uni_base[0xcdf] = 0x2017; -keysym2uni_base[0xce0] = 0x5d0; -keysym2uni_base[0xce1] = 0x5d1; -keysym2uni_base[0xce2] = 0x5d2; -keysym2uni_base[0xce3] = 0x5d3; -keysym2uni_base[0xce4] = 0x5d4; -keysym2uni_base[0xce5] = 0x5d5; -keysym2uni_base[0xce6] = 0x5d6; -keysym2uni_base[0xce7] = 0x5d7; -keysym2uni_base[0xce8] = 0x5d8; -keysym2uni_base[0xce9] = 0x5d9; -keysym2uni_base[0xcea] = 0x5da; -keysym2uni_base[0xceb] = 0x5db; -keysym2uni_base[0xcec] = 0x5dc; -keysym2uni_base[0xced] = 0x5dd; -keysym2uni_base[0xcee] = 0x5de; -keysym2uni_base[0xcef] = 0x5df; -keysym2uni_base[0xcf0] = 0x5e0; -keysym2uni_base[0xcf1] = 0x5e1; -keysym2uni_base[0xcf2] = 0x5e2; -keysym2uni_base[0xcf3] = 0x5e3; -keysym2uni_base[0xcf4] = 0x5e4; -keysym2uni_base[0xcf5] = 0x5e5; -keysym2uni_base[0xcf6] = 0x5e6; -keysym2uni_base[0xcf7] = 0x5e7; -keysym2uni_base[0xcf8] = 0x5e8; -keysym2uni_base[0xcf9] = 0x5e9; -keysym2uni_base[0xcfa] = 0x5ea; -keysym2uni_base[0xda1] = 0xe01; -keysym2uni_base[0xda2] = 0xe02; -keysym2uni_base[0xda3] = 0xe03; -keysym2uni_base[0xda4] = 0xe04; -keysym2uni_base[0xda5] = 0xe05; -keysym2uni_base[0xda6] = 0xe06; -keysym2uni_base[0xda7] = 0xe07; -keysym2uni_base[0xda8] = 0xe08; -keysym2uni_base[0xda9] = 0xe09; -keysym2uni_base[0xdaa] = 0xe0a; -keysym2uni_base[0xdab] = 0xe0b; -keysym2uni_base[0xdac] = 0xe0c; -keysym2uni_base[0xdad] = 0xe0d; -keysym2uni_base[0xdae] = 0xe0e; -keysym2uni_base[0xdaf] = 0xe0f; -keysym2uni_base[0xdb0] = 0xe10; -keysym2uni_base[0xdb1] = 0xe11; -keysym2uni_base[0xdb2] = 0xe12; -keysym2uni_base[0xdb3] = 0xe13; -keysym2uni_base[0xdb4] = 0xe14; -keysym2uni_base[0xdb5] = 0xe15; -keysym2uni_base[0xdb6] = 0xe16; -keysym2uni_base[0xdb7] = 0xe17; -keysym2uni_base[0xdb8] = 0xe18; -keysym2uni_base[0xdb9] = 0xe19; -keysym2uni_base[0xdba] = 0xe1a; -keysym2uni_base[0xdbb] = 0xe1b; -keysym2uni_base[0xdbc] = 0xe1c; -keysym2uni_base[0xdbd] = 0xe1d; -keysym2uni_base[0xdbe] = 0xe1e; -keysym2uni_base[0xdbf] = 0xe1f; -keysym2uni_base[0xdc0] = 0xe20; -keysym2uni_base[0xdc1] = 0xe21; -keysym2uni_base[0xdc2] = 0xe22; -keysym2uni_base[0xdc3] = 0xe23; -keysym2uni_base[0xdc4] = 0xe24; -keysym2uni_base[0xdc5] = 0xe25; -keysym2uni_base[0xdc6] = 0xe26; -keysym2uni_base[0xdc7] = 0xe27; -keysym2uni_base[0xdc8] = 0xe28; -keysym2uni_base[0xdc9] = 0xe29; -keysym2uni_base[0xdca] = 0xe2a; -keysym2uni_base[0xdcb] = 0xe2b; -keysym2uni_base[0xdcc] = 0xe2c; -keysym2uni_base[0xdcd] = 0xe2d; -keysym2uni_base[0xdce] = 0xe2e; -keysym2uni_base[0xdcf] = 0xe2f; -keysym2uni_base[0xdd0] = 0xe30; -keysym2uni_base[0xdd1] = 0xe31; -keysym2uni_base[0xdd2] = 0xe32; -keysym2uni_base[0xdd3] = 0xe33; -keysym2uni_base[0xdd4] = 0xe34; -keysym2uni_base[0xdd5] = 0xe35; -keysym2uni_base[0xdd6] = 0xe36; -keysym2uni_base[0xdd7] = 0xe37; -keysym2uni_base[0xdd8] = 0xe38; -keysym2uni_base[0xdd9] = 0xe39; -keysym2uni_base[0xdda] = 0xe3a; -keysym2uni_base[0xddf] = 0xe3f; -keysym2uni_base[0xde0] = 0xe40; -keysym2uni_base[0xde1] = 0xe41; -keysym2uni_base[0xde2] = 0xe42; -keysym2uni_base[0xde3] = 0xe43; -keysym2uni_base[0xde4] = 0xe44; -keysym2uni_base[0xde5] = 0xe45; -keysym2uni_base[0xde6] = 0xe46; -keysym2uni_base[0xde7] = 0xe47; -keysym2uni_base[0xde8] = 0xe48; -keysym2uni_base[0xde9] = 0xe49; -keysym2uni_base[0xdea] = 0xe4a; -keysym2uni_base[0xdeb] = 0xe4b; -keysym2uni_base[0xdec] = 0xe4c; -keysym2uni_base[0xded] = 0xe4d; -keysym2uni_base[0xdf0] = 0xe50; -keysym2uni_base[0xdf1] = 0xe51; -keysym2uni_base[0xdf2] = 0xe52; -keysym2uni_base[0xdf3] = 0xe53; -keysym2uni_base[0xdf4] = 0xe54; -keysym2uni_base[0xdf5] = 0xe55; -keysym2uni_base[0xdf6] = 0xe56; -keysym2uni_base[0xdf7] = 0xe57; -keysym2uni_base[0xdf8] = 0xe58; -keysym2uni_base[0xdf9] = 0xe59; - - -keysym2uni_ext0[0x174] = 0x174; -keysym2uni_ext0[0x176] = 0x176; -keysym2uni_ext0[0x175] = 0x175; -keysym2uni_ext0[0x177] = 0x177; -keysym2uni_ext0[0x6f0] = 0x6f0; -keysym2uni_ext0[0x6f1] = 0x6f1; -keysym2uni_ext0[0x6f2] = 0x6f2; -keysym2uni_ext0[0x6f3] = 0x6f3; -keysym2uni_ext0[0x6f4] = 0x6f4; -keysym2uni_ext0[0x6f5] = 0x6f5; -keysym2uni_ext0[0x6f6] = 0x6f6; -keysym2uni_ext0[0x6f7] = 0x6f7; -keysym2uni_ext0[0x6f8] = 0x6f8; -keysym2uni_ext0[0x6f9] = 0x6f9; -keysym2uni_ext0[0x66a] = 0x66a; -keysym2uni_ext0[0x670] = 0x670; -keysym2uni_ext0[0x679] = 0x679; -keysym2uni_ext0[0x67e] = 0x67e; -keysym2uni_ext0[0x686] = 0x686; -keysym2uni_ext0[0x688] = 0x688; -keysym2uni_ext0[0x691] = 0x691; -keysym2uni_ext0[0x6d4] = 0x6d4; -keysym2uni_ext0[0x660] = 0x660; -keysym2uni_ext0[0x661] = 0x661; -keysym2uni_ext0[0x662] = 0x662; -keysym2uni_ext0[0x663] = 0x663; -keysym2uni_ext0[0x664] = 0x664; -keysym2uni_ext0[0x665] = 0x665; -keysym2uni_ext0[0x666] = 0x666; -keysym2uni_ext0[0x667] = 0x667; -keysym2uni_ext0[0x668] = 0x668; -keysym2uni_ext0[0x669] = 0x669; -keysym2uni_ext0[0x653] = 0x653; -keysym2uni_ext0[0x654] = 0x654; -keysym2uni_ext0[0x655] = 0x655; -keysym2uni_ext0[0x698] = 0x698; -keysym2uni_ext0[0x6a4] = 0x6a4; -keysym2uni_ext0[0x6a9] = 0x6a9; -keysym2uni_ext0[0x6af] = 0x6af; -keysym2uni_ext0[0x6ba] = 0x6ba; -keysym2uni_ext0[0x6be] = 0x6be; -keysym2uni_ext0[0x6cc] = 0x6cc; -keysym2uni_ext0[0x6d2] = 0x6d2; -keysym2uni_ext0[0x6c1] = 0x6c1; -keysym2uni_ext0[0x492] = 0x492; -keysym2uni_ext0[0x493] = 0x493; -keysym2uni_ext0[0x496] = 0x496; -keysym2uni_ext0[0x497] = 0x497; -keysym2uni_ext0[0x49a] = 0x49a; -keysym2uni_ext0[0x49b] = 0x49b; -keysym2uni_ext0[0x49c] = 0x49c; -keysym2uni_ext0[0x49d] = 0x49d; -keysym2uni_ext0[0x4a2] = 0x4a2; -keysym2uni_ext0[0x4a3] = 0x4a3; -keysym2uni_ext0[0x4ae] = 0x4ae; -keysym2uni_ext0[0x4af] = 0x4af; -keysym2uni_ext0[0x4b0] = 0x4b0; -keysym2uni_ext0[0x4b1] = 0x4b1; -keysym2uni_ext0[0x4b2] = 0x4b2; -keysym2uni_ext0[0x4b3] = 0x4b3; -keysym2uni_ext0[0x4b6] = 0x4b6; -keysym2uni_ext0[0x4b7] = 0x4b7; -keysym2uni_ext0[0x4b8] = 0x4b8; -keysym2uni_ext0[0x4b9] = 0x4b9; -keysym2uni_ext0[0x4ba] = 0x4ba; -keysym2uni_ext0[0x4bb] = 0x4bb; -keysym2uni_ext0[0x4d8] = 0x4d8; -keysym2uni_ext0[0x4d9] = 0x4d9; -keysym2uni_ext0[0x4e2] = 0x4e2; -keysym2uni_ext0[0x4e3] = 0x4e3; -keysym2uni_ext0[0x4e8] = 0x4e8; -keysym2uni_ext0[0x4e9] = 0x4e9; -keysym2uni_ext0[0x4ee] = 0x4ee; -keysym2uni_ext0[0x4ef] = 0x4ef; -keysym2uni_ext0[0x587] = 0x587; -keysym2uni_ext0[0x589] = 0x589; -keysym2uni_ext0[0x55d] = 0x55d; -keysym2uni_ext0[0x58a] = 0x58a; -keysym2uni_ext0[0x55c] = 0x55c; -keysym2uni_ext0[0x55b] = 0x55b; -keysym2uni_ext0[0x55e] = 0x55e; -keysym2uni_ext0[0x531] = 0x531; -keysym2uni_ext0[0x561] = 0x561; -keysym2uni_ext0[0x532] = 0x532; -keysym2uni_ext0[0x562] = 0x562; -keysym2uni_ext0[0x533] = 0x533; -keysym2uni_ext0[0x563] = 0x563; -keysym2uni_ext0[0x534] = 0x534; -keysym2uni_ext0[0x564] = 0x564; -keysym2uni_ext0[0x535] = 0x535; -keysym2uni_ext0[0x565] = 0x565; -keysym2uni_ext0[0x536] = 0x536; -keysym2uni_ext0[0x566] = 0x566; -keysym2uni_ext0[0x537] = 0x537; -keysym2uni_ext0[0x567] = 0x567; -keysym2uni_ext0[0x538] = 0x538; -keysym2uni_ext0[0x568] = 0x568; -keysym2uni_ext0[0x539] = 0x539; -keysym2uni_ext0[0x569] = 0x569; -keysym2uni_ext0[0x53a] = 0x53a; -keysym2uni_ext0[0x56a] = 0x56a; -keysym2uni_ext0[0x53b] = 0x53b; -keysym2uni_ext0[0x56b] = 0x56b; -keysym2uni_ext0[0x53c] = 0x53c; -keysym2uni_ext0[0x56c] = 0x56c; -keysym2uni_ext0[0x53d] = 0x53d; -keysym2uni_ext0[0x56d] = 0x56d; -keysym2uni_ext0[0x53e] = 0x53e; -keysym2uni_ext0[0x56e] = 0x56e; -keysym2uni_ext0[0x53f] = 0x53f; -keysym2uni_ext0[0x56f] = 0x56f; -keysym2uni_ext0[0x540] = 0x540; -keysym2uni_ext0[0x570] = 0x570; -keysym2uni_ext0[0x541] = 0x541; -keysym2uni_ext0[0x571] = 0x571; -keysym2uni_ext0[0x542] = 0x542; -keysym2uni_ext0[0x572] = 0x572; -keysym2uni_ext0[0x543] = 0x543; -keysym2uni_ext0[0x573] = 0x573; -keysym2uni_ext0[0x544] = 0x544; -keysym2uni_ext0[0x574] = 0x574; -keysym2uni_ext0[0x545] = 0x545; -keysym2uni_ext0[0x575] = 0x575; -keysym2uni_ext0[0x546] = 0x546; -keysym2uni_ext0[0x576] = 0x576; -keysym2uni_ext0[0x547] = 0x547; -keysym2uni_ext0[0x577] = 0x577; -keysym2uni_ext0[0x548] = 0x548; -keysym2uni_ext0[0x578] = 0x578; -keysym2uni_ext0[0x549] = 0x549; -keysym2uni_ext0[0x579] = 0x579; -keysym2uni_ext0[0x54a] = 0x54a; -keysym2uni_ext0[0x57a] = 0x57a; -keysym2uni_ext0[0x54b] = 0x54b; -keysym2uni_ext0[0x57b] = 0x57b; -keysym2uni_ext0[0x54c] = 0x54c; -keysym2uni_ext0[0x57c] = 0x57c; -keysym2uni_ext0[0x54d] = 0x54d; -keysym2uni_ext0[0x57d] = 0x57d; -keysym2uni_ext0[0x54e] = 0x54e; -keysym2uni_ext0[0x57e] = 0x57e; -keysym2uni_ext0[0x54f] = 0x54f; -keysym2uni_ext0[0x57f] = 0x57f; -keysym2uni_ext0[0x550] = 0x550; -keysym2uni_ext0[0x580] = 0x580; -keysym2uni_ext0[0x551] = 0x551; -keysym2uni_ext0[0x581] = 0x581; -keysym2uni_ext0[0x552] = 0x552; -keysym2uni_ext0[0x582] = 0x582; -keysym2uni_ext0[0x553] = 0x553; -keysym2uni_ext0[0x583] = 0x583; -keysym2uni_ext0[0x554] = 0x554; -keysym2uni_ext0[0x584] = 0x584; -keysym2uni_ext0[0x555] = 0x555; -keysym2uni_ext0[0x585] = 0x585; -keysym2uni_ext0[0x556] = 0x556; -keysym2uni_ext0[0x586] = 0x586; -keysym2uni_ext0[0x55a] = 0x55a; -keysym2uni_ext0[0x1b5] = 0x1b5; -keysym2uni_ext0[0x1e6] = 0x1e6; -keysym2uni_ext0[0x1d2] = 0x1d2; -keysym2uni_ext0[0x19f] = 0x19f; -keysym2uni_ext0[0x12d] = 0x12d; -keysym2uni_ext0[0x1b6] = 0x1b6; -keysym2uni_ext0[0x1e7] = 0x1e7; -keysym2uni_ext0[0x275] = 0x275; -keysym2uni_ext0[0x18f] = 0x18f; -keysym2uni_ext0[0x259] = 0x259; -keysym2uni_ext0[0x1a0] = 0x1a0; -keysym2uni_ext0[0x1a1] = 0x1a1; -keysym2uni_ext0[0x1af] = 0x1af; -keysym2uni_ext0[0x1b0] = 0x1b0; - - -keysym2uni_ext1[0xe02] = 0x1e02; -keysym2uni_ext1[0xe03] = 0x1e03; -keysym2uni_ext1[0xe0a] = 0x1e0a; -keysym2uni_ext1[0xe80] = 0x1e80; -keysym2uni_ext1[0xe82] = 0x1e82; -keysym2uni_ext1[0xe0b] = 0x1e0b; -keysym2uni_ext1[0xef2] = 0x1ef2; -keysym2uni_ext1[0xe1e] = 0x1e1e; -keysym2uni_ext1[0xe1f] = 0x1e1f; -keysym2uni_ext1[0xe40] = 0x1e40; -keysym2uni_ext1[0xe41] = 0x1e41; -keysym2uni_ext1[0xe56] = 0x1e56; -keysym2uni_ext1[0xe81] = 0x1e81; -keysym2uni_ext1[0xe57] = 0x1e57; -keysym2uni_ext1[0xe83] = 0x1e83; -keysym2uni_ext1[0xe60] = 0x1e60; -keysym2uni_ext1[0xef3] = 0x1ef3; -keysym2uni_ext1[0xe84] = 0x1e84; -keysym2uni_ext1[0xe85] = 0x1e85; -keysym2uni_ext1[0xe61] = 0x1e61; -keysym2uni_ext1[0xe6a] = 0x1e6a; -keysym2uni_ext1[0xe6b] = 0x1e6b; -keysym2uni_ext1[0x0d0] = 0x10d0; -keysym2uni_ext1[0x0d1] = 0x10d1; -keysym2uni_ext1[0x0d2] = 0x10d2; -keysym2uni_ext1[0x0d3] = 0x10d3; -keysym2uni_ext1[0x0d4] = 0x10d4; -keysym2uni_ext1[0x0d5] = 0x10d5; -keysym2uni_ext1[0x0d6] = 0x10d6; -keysym2uni_ext1[0x0d7] = 0x10d7; -keysym2uni_ext1[0x0d8] = 0x10d8; -keysym2uni_ext1[0x0d9] = 0x10d9; -keysym2uni_ext1[0x0da] = 0x10da; -keysym2uni_ext1[0x0db] = 0x10db; -keysym2uni_ext1[0x0dc] = 0x10dc; -keysym2uni_ext1[0x0dd] = 0x10dd; -keysym2uni_ext1[0x0de] = 0x10de; -keysym2uni_ext1[0x0df] = 0x10df; -keysym2uni_ext1[0x0e0] = 0x10e0; -keysym2uni_ext1[0x0e1] = 0x10e1; -keysym2uni_ext1[0x0e2] = 0x10e2; -keysym2uni_ext1[0x0e3] = 0x10e3; -keysym2uni_ext1[0x0e4] = 0x10e4; -keysym2uni_ext1[0x0e5] = 0x10e5; -keysym2uni_ext1[0x0e6] = 0x10e6; -keysym2uni_ext1[0x0e7] = 0x10e7; -keysym2uni_ext1[0x0e8] = 0x10e8; -keysym2uni_ext1[0x0e9] = 0x10e9; -keysym2uni_ext1[0x0ea] = 0x10ea; -keysym2uni_ext1[0x0eb] = 0x10eb; -keysym2uni_ext1[0x0ec] = 0x10ec; -keysym2uni_ext1[0x0ed] = 0x10ed; -keysym2uni_ext1[0x0ee] = 0x10ee; -keysym2uni_ext1[0x0ef] = 0x10ef; -keysym2uni_ext1[0x0f0] = 0x10f0; -keysym2uni_ext1[0x0f1] = 0x10f1; -keysym2uni_ext1[0x0f2] = 0x10f2; -keysym2uni_ext1[0x0f3] = 0x10f3; -keysym2uni_ext1[0x0f4] = 0x10f4; -keysym2uni_ext1[0x0f5] = 0x10f5; -keysym2uni_ext1[0x0f6] = 0x10f6; -keysym2uni_ext1[0xe8b] = 0x1e8b; -keysym2uni_ext1[0xe36] = 0x1e36; -keysym2uni_ext1[0xe37] = 0x1e37; -keysym2uni_ext1[0xea0] = 0x1ea0; -keysym2uni_ext1[0xea1] = 0x1ea1; -keysym2uni_ext1[0xea2] = 0x1ea2; -keysym2uni_ext1[0xea3] = 0x1ea3; -keysym2uni_ext1[0xea4] = 0x1ea4; -keysym2uni_ext1[0xea5] = 0x1ea5; -keysym2uni_ext1[0xea6] = 0x1ea6; -keysym2uni_ext1[0xea7] = 0x1ea7; -keysym2uni_ext1[0xea8] = 0x1ea8; -keysym2uni_ext1[0xea9] = 0x1ea9; -keysym2uni_ext1[0xeaa] = 0x1eaa; -keysym2uni_ext1[0xeab] = 0x1eab; -keysym2uni_ext1[0xeac] = 0x1eac; -keysym2uni_ext1[0xead] = 0x1ead; -keysym2uni_ext1[0xeae] = 0x1eae; -keysym2uni_ext1[0xeaf] = 0x1eaf; -keysym2uni_ext1[0xeb0] = 0x1eb0; -keysym2uni_ext1[0xeb1] = 0x1eb1; -keysym2uni_ext1[0xeb2] = 0x1eb2; -keysym2uni_ext1[0xeb3] = 0x1eb3; -keysym2uni_ext1[0xeb4] = 0x1eb4; -keysym2uni_ext1[0xeb5] = 0x1eb5; -keysym2uni_ext1[0xeb6] = 0x1eb6; -keysym2uni_ext1[0xeb7] = 0x1eb7; -keysym2uni_ext1[0xeb8] = 0x1eb8; -keysym2uni_ext1[0xeb9] = 0x1eb9; -keysym2uni_ext1[0xeba] = 0x1eba; -keysym2uni_ext1[0xebb] = 0x1ebb; -keysym2uni_ext1[0xebc] = 0x1ebc; -keysym2uni_ext1[0xebd] = 0x1ebd; -keysym2uni_ext1[0xebe] = 0x1ebe; -keysym2uni_ext1[0xebf] = 0x1ebf; -keysym2uni_ext1[0xec0] = 0x1ec0; -keysym2uni_ext1[0xec1] = 0x1ec1; -keysym2uni_ext1[0xec2] = 0x1ec2; -keysym2uni_ext1[0xec3] = 0x1ec3; -keysym2uni_ext1[0xec4] = 0x1ec4; -keysym2uni_ext1[0xec5] = 0x1ec5; -keysym2uni_ext1[0xec6] = 0x1ec6; -keysym2uni_ext1[0xec7] = 0x1ec7; -keysym2uni_ext1[0xec8] = 0x1ec8; -keysym2uni_ext1[0xec9] = 0x1ec9; -keysym2uni_ext1[0xeca] = 0x1eca; -keysym2uni_ext1[0xecb] = 0x1ecb; -keysym2uni_ext1[0xecc] = 0x1ecc; -keysym2uni_ext1[0xecd] = 0x1ecd; -keysym2uni_ext1[0xece] = 0x1ece; -keysym2uni_ext1[0xecf] = 0x1ecf; -keysym2uni_ext1[0xed0] = 0x1ed0; -keysym2uni_ext1[0xed1] = 0x1ed1; -keysym2uni_ext1[0xed2] = 0x1ed2; -keysym2uni_ext1[0xed3] = 0x1ed3; -keysym2uni_ext1[0xed4] = 0x1ed4; -keysym2uni_ext1[0xed5] = 0x1ed5; -keysym2uni_ext1[0xed6] = 0x1ed6; -keysym2uni_ext1[0xed7] = 0x1ed7; -keysym2uni_ext1[0xed8] = 0x1ed8; -keysym2uni_ext1[0xed9] = 0x1ed9; -keysym2uni_ext1[0xeda] = 0x1eda; -keysym2uni_ext1[0xedb] = 0x1edb; -keysym2uni_ext1[0xedc] = 0x1edc; -keysym2uni_ext1[0xedd] = 0x1edd; -keysym2uni_ext1[0xede] = 0x1ede; -keysym2uni_ext1[0xedf] = 0x1edf; -keysym2uni_ext1[0xee0] = 0x1ee0; -keysym2uni_ext1[0xee1] = 0x1ee1; -keysym2uni_ext1[0xee2] = 0x1ee2; -keysym2uni_ext1[0xee3] = 0x1ee3; -keysym2uni_ext1[0xee4] = 0x1ee4; -keysym2uni_ext1[0xee5] = 0x1ee5; -keysym2uni_ext1[0xee6] = 0x1ee6; -keysym2uni_ext1[0xee7] = 0x1ee7; -keysym2uni_ext1[0xee8] = 0x1ee8; -keysym2uni_ext1[0xee9] = 0x1ee9; -keysym2uni_ext1[0xeea] = 0x1eea; -keysym2uni_ext1[0xeeb] = 0x1eeb; -keysym2uni_ext1[0xeec] = 0x1eec; -keysym2uni_ext1[0xeed] = 0x1eed; -keysym2uni_ext1[0xeee] = 0x1eee; -keysym2uni_ext1[0xeef] = 0x1eef; -keysym2uni_ext1[0xef0] = 0x1ef0; -keysym2uni_ext1[0xef1] = 0x1ef1; -keysym2uni_ext1[0xef4] = 0x1ef4; -keysym2uni_ext1[0xef5] = 0x1ef5; -keysym2uni_ext1[0xef6] = 0x1ef6; -keysym2uni_ext1[0xef7] = 0x1ef7; -keysym2uni_ext1[0xef8] = 0x1ef8; -keysym2uni_ext1[0xef9] = 0x1ef9; - - -keysym2uni_ext2[0x21a] = 0x221a; -keysym2uni_ext2[0x202] = 0x2202; -keysym2uni_ext2[0x0a9] = 0x20a9; -keysym2uni_ext2[0x0a0] = 0x20a0; -keysym2uni_ext2[0x0a1] = 0x20a1; -keysym2uni_ext2[0x0a2] = 0x20a2; -keysym2uni_ext2[0x0a3] = 0x20a3; -keysym2uni_ext2[0x0a4] = 0x20a4; -keysym2uni_ext2[0x0a5] = 0x20a5; -keysym2uni_ext2[0x0a6] = 0x20a6; -keysym2uni_ext2[0x0a7] = 0x20a7; -keysym2uni_ext2[0x0a8] = 0x20a8; -keysym2uni_ext2[0x0aa] = 0x20aa; -keysym2uni_ext2[0x0ab] = 0x20ab; -keysym2uni_ext2[0x070] = 0x2070; -keysym2uni_ext2[0x074] = 0x2074; -keysym2uni_ext2[0x075] = 0x2075; -keysym2uni_ext2[0x076] = 0x2076; -keysym2uni_ext2[0x077] = 0x2077; -keysym2uni_ext2[0x078] = 0x2078; -keysym2uni_ext2[0x079] = 0x2079; -keysym2uni_ext2[0x080] = 0x2080; -keysym2uni_ext2[0x081] = 0x2081; -keysym2uni_ext2[0x082] = 0x2082; -keysym2uni_ext2[0x083] = 0x2083; -keysym2uni_ext2[0x084] = 0x2084; -keysym2uni_ext2[0x085] = 0x2085; -keysym2uni_ext2[0x086] = 0x2086; -keysym2uni_ext2[0x087] = 0x2087; -keysym2uni_ext2[0x088] = 0x2088; -keysym2uni_ext2[0x089] = 0x2089; -keysym2uni_ext2[0x205] = 0x2205; -keysym2uni_ext2[0x208] = 0x2208; -keysym2uni_ext2[0x209] = 0x2209; -keysym2uni_ext2[0x20b] = 0x220b; -keysym2uni_ext2[0x21b] = 0x221b; -keysym2uni_ext2[0x21c] = 0x221c; -keysym2uni_ext2[0x22c] = 0x222c; -keysym2uni_ext2[0x22d] = 0x222d; -keysym2uni_ext2[0x235] = 0x2235; -keysym2uni_ext2[0x248] = 0x2245; -keysym2uni_ext2[0x247] = 0x2247; -keysym2uni_ext2[0x262] = 0x2262; -keysym2uni_ext2[0x263] = 0x2263; -} diff --git a/tools/ini2dot_h_unimap.py b/tools/ini2dot_h_unimap.py deleted file mode 100644 index 16573ed..0000000 --- a/tools/ini2dot_h_unimap.py +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/env python - -# ***** BEGIN LICENSE BLOCK ***** -# Version: MPL 1.1/GPL 2.0/LGPL 2.1 -# -# The contents of this file are subject to the Mozilla Public License Version -# 1.1 (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS IS" basis, -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -# for the specific language governing rights and limitations under the -# License. -# -# The Original Code is libguac-client-rdp. -# -# The Initial Developer of the Original Code is -# Jocelyn DELALANDE Ulteo SAS - http://www.ulteo.com -# -# Portions created by the Initial Developer are Copyright (C) 2012 Ulteo SAS. -# -# Contributor(s): -# -# Alternatively, the contents of this file may be used under the terms of -# either the GNU General Public License Version 2 or later (the "GPL"), or -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -# Converts a .ini file defining unicode exceptions to a dot_h file -# The dot_h file defines an array of keysim->unicode -# -# Used to extract the keysym<->unicode mapping exceptions from -# unicode_exception.ini (can be found in Ulteo patched version of xrdp) -# -# Such an ini file can be found at -# http://www.ulteo.com/home/en/download/sourcecode (xrdp folder) -# - -import sys -import ConfigParser - - -class KeysymMaps: - def __init__(self): - # 4 digits keysyms - self.base = [] - # Extented keysym starting with 0x1000 - self.ext0 = [] - # Extented keysym starting with 0x1001 - self.ext1 = [] - # Extented keysym starting with 0x1002 - self.ext2 = [] - - def insert(self, keysym, uni): - # Main keysym table is 4-digit hexa keysyms - # (most of 'em are 3-digits but they lack the leading zero) - if len(keysym) <= 6: - self.base.append((keysym[2:], uni)) - - elif keysym.startswith('0x100'): - if keysym[:6] == '0x1000': - self.ext0.append((keysym[6:], uni)) - elif keysym[:6] == '0x1001': - self.ext1.append((keysym[6:], uni)) - elif keysym[:6] == '0x1002': - self.ext2.append((keysym[6:], uni)) - - else: - raise ValueError("Unexpected keysym : %s" % keysym) - - else: - raise ValueError("Unexpected keysym : %s" % keysym) - - def get_h_content(self, base_name, ext0_name, ext1_name, ext2_name): - out = '' - maps = ((base_name, self.base), - (ext0_name, self.ext0), - (ext1_name, self.ext1), - (ext2_name, self.ext2)) - - for var_name, kmap in maps: - for keysym, uni in kmap: - out += '%s[0x%s] = %s;\n' %(var_name, keysym, uni) - out += '\n\n' - return out - - -if __name__ == '__main__': - if len(sys.argv) < 2: - print "ini2dot_h_unimap.py " - exit(2) - - inifile = sys.argv[1] - - print "uni2keysym_map[]" - - ini = ConfigParser.ConfigParser() - ini.read([inifile]) - mapping = ini.items('unicode_exception') - - maps = KeysymMaps() - - - for uni, keysym in mapping: - maps.insert(keysym, uni) - - dot_h_content = \ -""" -int keysm2uni_base[4096]; -int keysm2uni_ext0[4096]; -int keysm2uni_ext1[4096]; -int keysm2uni_ext2[4096]; - - -""" - dot_h_content += maps.get_h_content('keysm2uni_base', 'keysm2uni_ext0', - 'keysm2uni_ext1', 'keysm2uni_ext2'); - - print dot_h_content