diff --git a/java/com/tigervnc/rfb/Keysyms.java b/java/com/tigervnc/rfb/Keysyms.java
index 4cf1784..e5ece69 100644
--- a/java/com/tigervnc/rfb/Keysyms.java
+++ b/java/com/tigervnc/rfb/Keysyms.java
@@ -21,14 +21,22 @@
 //
 // Keysyms - defines X keysyms for non-character keys.  All keysyms
 // corresponding to characters should be generated by calling
-// UnicodeToKeysym.translate().
+// UnicodeToKeysym.ucs2keysym().
 //
 
 package com.tigervnc.rfb;
 
+import java.awt.event.KeyEvent;
+import com.tigervnc.vncviewer.VncViewer;
+
 public class Keysyms {
 
-  public static final int ISO_Level3_Shift = 0xFE03;
+  public static final int VoidSymbol = 0xffffff;
+  /*
+   * TTY Functions, cleverly chosen to map to ascii, for convenience of
+   * programming, but could have been arbitrary (at the cost of lookup
+   * tables in client code.
+   */
   public static final int BackSpace = 0xFF08;
   public static final int Tab = 0xFF09;
   public static final int Linefeed = 0xFF0A;
@@ -40,12 +48,14 @@
   public static final int Escape = 0xFF1B;
   public static final int Delete = 0xFFFF;
 
+  /* International & multi-key character composition */
   public static final int Multi_key = 0xFF20;  /* Multi-key character compose */
   public static final int Codeinput = 0xFF37;
   public static final int SingleCandidate = 0xFF3C;
   public static final int MultipleCandidate = 0xFF3D;
   public static final int PreviousCandidate = 0xFF3E;
 
+  /* Japanese keyboard support */
   public static final int Kanji = 0xFF21;  /* Kanji, Kanji convert */
   public static final int Muhenkan = 0xFF22;  /* Cancel Conversion */
   public static final int Henkan_Mode = 0xFF23;  /* Start/Stop Conversion */
@@ -67,6 +77,7 @@
   public static final int Zen_Koho = 0xFF3D;  /* Multiple/All Candidate(s) */
   public static final int Mae_Koho = 0xFF3E;  /* Previous Candidate */
 
+  /* Cursor control & motion */
   public static final int Home = 0xFF50;
   public static final int Left = 0xFF51;
   public static final int Up = 0xFF52;
@@ -79,6 +90,7 @@
   public static final int End = 0xFF57;
   public static final int Begin = 0xFF58;
 
+  /* Misc Functions */
   public static final int Select = 0xFF60;
   public static final int Print = 0xFF61;
   public static final int Execute = 0xFF62;
@@ -94,6 +106,42 @@
   public static final int script_switch = 0xFF7E;
   public static final int Num_Lock = 0xFF7F;
 
+  /* Keypad Functions, keypad numbers cleverly chosen to map to ascii */
+  public static final int KP_Enter = 0xFF8D;
+  public static final int KP_Home = 0xFF95;
+  public static final int KP_Left = 0xFF96;
+  public static final int KP_Up = 0xFF97;
+  public static final int KP_Right = 0xFF98;
+  public static final int KP_Down = 0xFF99;
+  public static final int KP_Page_Up = 0xFF9A;
+  public static final int KP_Page_Down = 0xFF9B;
+  public static final int KP_End = 0xFF9C;
+  public static final int KP_Begin = 0xFF9D;
+  public static final int KP_Insert = 0xFF9E;
+  public static final int KP_Delete = 0xFF9F;
+  public static final int KP_Equal = 0xFFBD;
+  public static final int KP_0 = 0xFFB0;
+  public static final int KP_1 = 0xFFB1;
+  public static final int KP_2 = 0xFFB2;
+  public static final int KP_3 = 0xFFB3;
+  public static final int KP_4 = 0xFFB4;
+  public static final int KP_5 = 0xFFB5;
+  public static final int KP_6 = 0xFFB6;
+  public static final int KP_7 = 0xFFB7;
+  public static final int KP_8 = 0xFFB8;
+  public static final int KP_9 = 0xFFB9;
+  public static final int KP_Decimal = 0xFFAE;
+  public static final int KP_Add = 0xFFAB;
+  public static final int KP_Subtract = 0xFFAD;
+  public static final int KP_Multiply = 0xFFAA;
+  public static final int KP_Divide = 0xFFAF;
+
+  /*
+   * Auxilliary Functions; note the duplicate definitions for left and right
+   * function keys;  Sun keyboards and a few other manufactures have such
+   * function key groups on the left and/or right sides of the keyboard.
+   * We've not found a keyboard with more than 35 function keys total.
+   */
   public static final int F1 = 0xFFBE;
   public static final int F2 = 0xFFBF;
   public static final int F3 = 0xFFC0;
@@ -119,43 +167,224 @@
   public static final int F23 = 0xFFD4;
   public static final int F24 = 0xFFD5;
 
+  /* Modifiers */
   public static final int Shift_L = 0xFFE1;
   public static final int Shift_R = 0xFFE2;
   public static final int Control_L = 0xFFE3;
   public static final int Control_R = 0xFFE4;
+  public static final int Caps_Lock = 0xFFE5;
+  public static final int Shift_Lock = 0xFFE6;
+
   public static final int Meta_L = 0xFFE7;
   public static final int Meta_R = 0xFFE8;
   public static final int Alt_L = 0xFFE9;
   public static final int Alt_R = 0xFFEA;
-
   public static final int Super_L = 0xFFEB;
-  public static final int Caps_Lock = 0xFFE5;
+  public static final int Super_R = 0xFFEC;
+  public static final int Hyper_L = 0xFFED;
+  public static final int Hyper_R = 0xFFEE;
 
-  public static final int KP_Enter = 0xFF8D;
-  public static final int KP_Home = 0xFF95;
-  public static final int KP_Left = 0xFF96;
-  public static final int KP_Up = 0xFF97;
-  public static final int KP_Right = 0xFF98;
-  public static final int KP_Down = 0xFF99;
-  public static final int KP_Page_Up = 0xFF9A;
-  public static final int KP_Page_Down = 0xFF9B;
-  public static final int KP_End = 0xFF9C;
-  public static final int KP_Begin = 0xFF9D;
-  public static final int KP_Insert = 0xFF9E;
-  public static final int KP_Delete = 0xFF9F;
-  public static final int KP_0 = 0xFFB0;
-  public static final int KP_1 = 0xFFB1;
-  public static final int KP_2 = 0xFFB2;
-  public static final int KP_3 = 0xFFB3;
-  public static final int KP_4 = 0xFFB4;
-  public static final int KP_5 = 0xFFB5;
-  public static final int KP_6 = 0xFFB6;
-  public static final int KP_7 = 0xFFB7;
-  public static final int KP_8 = 0xFFB8;
-  public static final int KP_9 = 0xFFB9;
-  public static final int KP_Decimal = 0xFFAE;
-  public static final int KP_Add = 0xFFAB;
-  public static final int KP_Subtract = 0xFFAD;
-  public static final int KP_Multiply = 0xFFAA;
-  public static final int KP_Divide = 0xFFAF;
+  /*
+   * ISO 9995 Function and Modifier Keys
+   * Byte 3 = 0xFE
+   */
+  public static final int ISO_Level3_Shift = 0xFE03;
+
+  /*
+   * Dead Modifier Keys
+   */
+  public static final int Dead_Grave = 0xfe50; /*                               COMBINING GRAVE ACCENT */
+  public static final int Dead_Acute = 0xfe51; /*                               COMBINING ACUTE ACCENT */
+  public static final int Dead_Circumflex = 0xfe52; /*                               COMBINING CIRCUMFLEX ACCENT */
+  public static final int Dead_Tilde = 0xfe53; /*                               COMBINING TILDE */
+  public static final int Dead_Macron = 0xfe54; /*                               COMBINING MACRON */
+  public static final int Dead_Breve = 0xfe55; /*                               COMBINING BREVE */
+  public static final int Dead_AboveDot = 0xfe56; /*                               COMBINING DOT ABOVE */
+  public static final int Dead_Diaeresis = 0xfe57; /*                               COMBINING DIAERESIS */
+  public static final int Dead_AboveRing = 0xfe58; /*                               COMBINING RING ABOVE */
+  public static final int Dead_DoubleAcute = 0xfe59; /*                               COMBINING DOUBLE ACUTE ACCENT */
+  public static final int Dead_Caron = 0xfe5a; /*                               COMBINING CARON */
+  public static final int Dead_Cedilla = 0xfe5b; /*                               COMBINING CEDILLA */
+  public static final int Dead_Ogonek = 0xfe5c; /*                               COMBINING OGONEK */
+  public static final int Dead_Iota = 0xfe5d; /*                               MODIFIER LETTER SMALL IOTA */
+  public static final int Dead_Voiced_Sound = 0xfe5e; /*                               COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK */
+  public static final int Dead_SemiVoiced_Sound = 0xfe5f; /*                               COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+  public static final int Dead_BelowDot = 0xfe60; /*                               COMBINING DOT BELOW */
+
+  private static class KeySymbol {
+    public KeySymbol(int keycode_, int[] keysym_) {
+      keycode = keycode_;
+      keysym = new int[5];
+      System.arraycopy(keysym_, 0, keysym, 0, 5);
+    }
+    int keycode;
+    int[] keysym;
+  }
+
+  private static KeySymbol[] keySymbols = {
+    /*                 KEYCODE                                                    LOCATION                          */
+    /*                                                UNKNOWN     STANDARD          LEFT        RIGHT       NUMPAD  */
+    new KeySymbol(KeyEvent.VK_BACK_SPACE,   new int[]{VoidSymbol, BackSpace,        VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_TAB,          new int[]{VoidSymbol, Tab,              VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_ENTER,        new int[]{VoidSymbol, Return,           VoidSymbol, VoidSymbol, KP_Enter}),
+    new KeySymbol(KeyEvent.VK_ESCAPE,       new int[]{VoidSymbol, Escape,           VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_CONTROL,      new int[]{VoidSymbol, Control_L,        Control_L,  Control_R,  VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_ALT_GRAPH,    new int[]{VoidSymbol, ISO_Level3_Shift, VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_ALT,          new int[]{VoidSymbol, ISO_Level3_Shift, Alt_L,      Alt_R,      VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_SHIFT,        new int[]{VoidSymbol, Shift_L,          Shift_L,    Shift_R,    VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_META,         new int[]{VoidSymbol, Meta_L,           Meta_L,     Meta_R,     VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_NUMPAD0,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_0}),
+    new KeySymbol(KeyEvent.VK_NUMPAD1,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_1}),
+    new KeySymbol(KeyEvent.VK_NUMPAD2,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_2}),
+    new KeySymbol(KeyEvent.VK_NUMPAD3,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_3}),
+    new KeySymbol(KeyEvent.VK_NUMPAD4,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_4}),
+    new KeySymbol(KeyEvent.VK_NUMPAD5,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_5}),
+    new KeySymbol(KeyEvent.VK_NUMPAD6,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_6}),
+    new KeySymbol(KeyEvent.VK_NUMPAD7,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_7}),
+    new KeySymbol(KeyEvent.VK_NUMPAD8,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_8}),
+    new KeySymbol(KeyEvent.VK_NUMPAD9,      new int[]{VoidSymbol, VoidSymbol,       VoidSymbol, VoidSymbol, KP_9}),
+    new KeySymbol(KeyEvent.VK_DECIMAL,      new int[]{VoidSymbol, KP_Decimal,       VoidSymbol, VoidSymbol, KP_Decimal}),
+    new KeySymbol(KeyEvent.VK_ADD,          new int[]{VoidSymbol, KP_Add,           VoidSymbol, VoidSymbol, KP_Add}),
+    new KeySymbol(KeyEvent.VK_SUBTRACT,     new int[]{VoidSymbol, KP_Subtract,      VoidSymbol, VoidSymbol, KP_Subtract}),
+    new KeySymbol(KeyEvent.VK_MULTIPLY,     new int[]{VoidSymbol, KP_Multiply,      VoidSymbol, VoidSymbol, KP_Multiply}),
+    new KeySymbol(KeyEvent.VK_DIVIDE,       new int[]{VoidSymbol, KP_Divide,        VoidSymbol, VoidSymbol, KP_Divide}),
+    new KeySymbol(KeyEvent.VK_DELETE,       new int[]{VoidSymbol, Delete,           VoidSymbol, VoidSymbol, KP_Delete}),
+    new KeySymbol(KeyEvent.VK_CLEAR,        new int[]{VoidSymbol, Clear,            VoidSymbol, VoidSymbol, KP_Begin}),
+    new KeySymbol(KeyEvent.VK_HOME,         new int[]{VoidSymbol, Home,             VoidSymbol, VoidSymbol, KP_Home}),
+    new KeySymbol(KeyEvent.VK_END,          new int[]{VoidSymbol, End,              VoidSymbol, VoidSymbol, KP_End}),
+    new KeySymbol(KeyEvent.VK_PAGE_UP,      new int[]{VoidSymbol, Page_Up,          VoidSymbol, VoidSymbol, KP_Page_Up}),
+    new KeySymbol(KeyEvent.VK_PAGE_DOWN,    new int[]{VoidSymbol, Page_Down,        VoidSymbol, VoidSymbol, KP_Page_Down}),
+    new KeySymbol(KeyEvent.VK_UP,           new int[]{VoidSymbol, Up,               VoidSymbol, VoidSymbol, KP_Up}),
+    new KeySymbol(KeyEvent.VK_DOWN,         new int[]{VoidSymbol, Down,             VoidSymbol, VoidSymbol, KP_Down}),
+    new KeySymbol(KeyEvent.VK_LEFT,         new int[]{VoidSymbol, Left,             VoidSymbol, VoidSymbol, KP_Left}),
+    new KeySymbol(KeyEvent.VK_RIGHT,        new int[]{VoidSymbol, Right,            VoidSymbol, VoidSymbol, KP_Right}),
+    new KeySymbol(KeyEvent.VK_BEGIN,        new int[]{VoidSymbol, Begin,            VoidSymbol, VoidSymbol, KP_Begin}),
+    new KeySymbol(KeyEvent.VK_KP_LEFT,      new int[]{VoidSymbol, KP_Left,          VoidSymbol, VoidSymbol, KP_Left}),
+    new KeySymbol(KeyEvent.VK_KP_UP,        new int[]{VoidSymbol, KP_Up,            VoidSymbol, VoidSymbol, KP_Up}),
+    new KeySymbol(KeyEvent.VK_KP_RIGHT,     new int[]{VoidSymbol, KP_Right,         VoidSymbol, VoidSymbol, KP_Right}),
+    new KeySymbol(KeyEvent.VK_KP_DOWN,      new int[]{VoidSymbol, KP_Down,          VoidSymbol, VoidSymbol, KP_Down}),
+    new KeySymbol(KeyEvent.VK_PRINTSCREEN,  new int[]{VoidSymbol, Print,            VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_SCROLL_LOCK,  new int[]{VoidSymbol, Scroll_Lock,      VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_CAPS_LOCK,    new int[]{VoidSymbol, Caps_Lock,        VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_NUM_LOCK,     new int[]{VoidSymbol, Num_Lock,         VoidSymbol, VoidSymbol, Num_Lock}),
+    new KeySymbol(KeyEvent.VK_INSERT,       new int[]{VoidSymbol, Insert,           VoidSymbol, VoidSymbol, KP_Insert}),
+    new KeySymbol(KeyEvent.VK_AGAIN,        new int[]{VoidSymbol, Redo,             VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_UNDO,         new int[]{VoidSymbol, Undo,             VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_FIND,         new int[]{VoidSymbol, Find,             VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_STOP,         new int[]{VoidSymbol, Cancel,           VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_HELP,         new int[]{VoidSymbol, Help,             VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_WINDOWS,      new int[]{VoidSymbol, Super_L,          Super_L,    Super_R,    VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_CONTEXT_MENU, new int[]{VoidSymbol, Menu,             VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_KANJI,        new int[]{VoidSymbol, Kanji,            VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_KATAKANA,     new int[]{VoidSymbol, Katakana,         VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_HIRAGANA,     new int[]{VoidSymbol, Hiragana,         VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_PREVIOUS_CANDIDATE, 
+                                            new int[]{VoidSymbol, PreviousCandidate,VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_CODE_INPUT,   new int[]{VoidSymbol, Codeinput,        VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_JAPANESE_ROMAN, 
+                                            new int[]{VoidSymbol, Romaji,           VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_KANA_LOCK,    new int[]{VoidSymbol, Kana_Lock,        VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_ABOVEDOT,new int[]{VoidSymbol, Dead_AboveDot,    VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_ABOVERING,
+                                            new int[]{VoidSymbol, Dead_AboveRing,   VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_ACUTE,   new int[]{VoidSymbol, Dead_Acute,       VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_BREVE,   new int[]{VoidSymbol, Dead_Breve,       VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_CARON,   new int[]{VoidSymbol, Dead_Caron,       VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_CIRCUMFLEX,
+                                            new int[]{VoidSymbol, Dead_Circumflex,  VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_DIAERESIS,
+                                            new int[]{VoidSymbol, Dead_Diaeresis,   VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_DOUBLEACUTE,
+                                            new int[]{VoidSymbol, Dead_DoubleAcute, VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_GRAVE,   new int[]{VoidSymbol, Dead_Grave,       VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_IOTA,    new int[]{VoidSymbol, Dead_Iota,        VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_MACRON,  new int[]{VoidSymbol, Dead_Macron,      VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_OGONEK,  new int[]{VoidSymbol, Dead_Ogonek,      VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_SEMIVOICED_SOUND,
+                                            new int[]{VoidSymbol, Dead_SemiVoiced_Sound,VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_TILDE,   new int[]{VoidSymbol, Dead_Tilde,       VoidSymbol, VoidSymbol, VoidSymbol}),
+    new KeySymbol(KeyEvent.VK_DEAD_VOICED_SOUND,
+                                            new int[]{VoidSymbol, Dead_Voiced_Sound, VoidSymbol, VoidSymbol, VoidSymbol}),
+  };
+
+  public static int translateKeyEvent(KeyEvent ev) {
+    int location = ev.getKeyLocation();
+    int keyCode = ev.getKeyCode();
+
+    // First check for function keys
+    if (keyCode >= KeyEvent.VK_F1 && keyCode <= KeyEvent.VK_F12)
+      return Keysyms.F1 + keyCode - KeyEvent.VK_F1;
+    if (keyCode >= KeyEvent.VK_F13 && keyCode <= KeyEvent.VK_F24)
+      return Keysyms.F13 + keyCode - KeyEvent.VK_F13;
+
+    // Numpad numbers
+    if (keyCode >= KeyEvent.VK_0 && keyCode <= KeyEvent.VK_9 &&
+        location == KeyEvent.KEY_LOCATION_NUMPAD)
+      return Keysyms.KP_0 + keyCode - KeyEvent.VK_0;
+
+    if (VncViewer.os.startsWith("mac os x")) {
+      // Alt on OS X behaves more like AltGr on other systems, and to get
+      // sane behaviour we should translate things in that manner for the
+      // remote VNC server. However that means we lose the ability to use
+      // Alt as a shortcut modifier. Do what RealVNC does and hijack the
+      // left command key as an Alt replacement.
+      switch (keyCode) {
+      case KeyEvent.VK_META:
+        if (location == KeyEvent.KEY_LOCATION_LEFT)
+          return Alt_L;
+        else
+          return Super_L;
+      case KeyEvent.VK_ALT:
+        if (location == KeyEvent.KEY_LOCATION_LEFT)
+          return Alt_L;
+        else
+          return ISO_Level3_Shift;
+      }
+    }
+
+    // Then other special keys
+    if (keyCode == KeyEvent.VK_PAUSE)
+      return (ev.isControlDown() ? Break : Pause);
+    else if (keyCode == KeyEvent.VK_PRINTSCREEN)
+      return (ev.isControlDown() ? Sys_Req : Print);
+    else
+      for(int i = 0; i < keySymbols.length; i++)
+        if (keySymbols[i].keycode == keyCode)
+          return (keySymbols[i].keysym)[location];
+
+    // Unknown special key?
+    if (KeyEvent.getKeyText(keyCode).isEmpty()) {
+      vlog.error("Unknown key code:");
+      String fmt = ev.paramString().replaceAll("%","%%");
+      vlog.error(String.format(fmt.replaceAll(",","%n       ")));
+      return VoidSymbol;
+    }
+
+    char keyChar = ev.getKeyChar();
+    if (!ev.isControlDown() && keyChar != KeyEvent.CHAR_UNDEFINED)
+      return UnicodeToKeysym.ucs2keysym(Character.toString(keyChar).codePointAt(0));
+
+    int key = keyChar;
+    if (ev.isControlDown()) {
+      // For CTRL-<letter>, CTRL is sent separately, so just send <letter>.
+      if ((key >= 1 && key <= 26 && !ev.isShiftDown()) ||
+          // CTRL-{, CTRL-|, CTRL-} also map to ASCII 96-127
+          (key >= 27 && key <= 29 && ev.isShiftDown()))
+        key += 96;
+      // For CTRL-SHIFT-<letter>, send capital <letter> to emulate behavior
+      // of Linux.  For CTRL-@, send @.  For CTRL-_, send _.  For CTRL-^,
+      // send ^.
+      else if (key < 32)
+        key += 64;
+      // Windows and Mac sometimes return CHAR_UNDEFINED with CTRL-SHIFT
+      // combinations, so best we can do is send the key code if it is
+      // a valid ASCII symbol.
+      else if (ev.getKeyChar() == KeyEvent.CHAR_UNDEFINED && keyCode >= 0 &&
+               keyCode <= 127)
+        key = keyCode;
+    }
+    return UnicodeToKeysym.ucs2keysym(key);
+  }
+
+  static LogWriter vlog = new LogWriter("Keysyms");
 }
diff --git a/java/com/tigervnc/rfb/UnicodeToKeysym.java b/java/com/tigervnc/rfb/UnicodeToKeysym.java
index 576a2a9..0927eb3 100644
--- a/java/com/tigervnc/rfb/UnicodeToKeysym.java
+++ b/java/com/tigervnc/rfb/UnicodeToKeysym.java
@@ -24,772 +24,828 @@
 
 public class UnicodeToKeysym {
 
-  public static short[][] table = {
-    { 0x03c0, 0x0100 },
-    { 0x03e0, 0x0101 },
-    { 0x01c3, 0x0102 },
-    { 0x01e3, 0x0103 },
-    { 0x01a1, 0x0104 },
-    { 0x01b1, 0x0105 },
-    { 0x01c6, 0x0106 },
-    { 0x01e6, 0x0107 },
-    { 0x02c6, 0x0108 },
-    { 0x02e6, 0x0109 },
-    { 0x02c5, 0x010a },
-    { 0x02e5, 0x010b },
-    { 0x01c8, 0x010c },
-    { 0x01e8, 0x010d },
-    { 0x01cf, 0x010e },
-    { 0x01ef, 0x010f },
-    { 0x01d0, 0x0110 },
-    { 0x01f0, 0x0111 },
-    { 0x03aa, 0x0112 },
-    { 0x03ba, 0x0113 },
-    { 0x03cc, 0x0116 },
-    { 0x03ec, 0x0117 },
-    { 0x01ca, 0x0118 },
-    { 0x01ea, 0x0119 },
-    { 0x01cc, 0x011a },
-    { 0x01ec, 0x011b },
-    { 0x02d8, 0x011c },
-    { 0x02f8, 0x011d },
-    { 0x02ab, 0x011e },
-    { 0x02bb, 0x011f },
-    { 0x02d5, 0x0120 },
-    { 0x02f5, 0x0121 },
-    { 0x03ab, 0x0122 },
-    { 0x03bb, 0x0123 },
-    { 0x02a6, 0x0124 },
-    { 0x02b6, 0x0125 },
-    { 0x02a1, 0x0126 },
-    { 0x02b1, 0x0127 },
-    { 0x03a5, 0x0128 },
-    { 0x03b5, 0x0129 },
-    { 0x03cf, 0x012a },
-    { 0x03ef, 0x012b },
-    { 0x03c7, 0x012e },
-    { 0x03e7, 0x012f },
-    { 0x02a9, 0x0130 },
-    { 0x02b9, 0x0131 },
-    { 0x02ac, 0x0134 },
-    { 0x02bc, 0x0135 },
-    { 0x03d3, 0x0136 },
-    { 0x03f3, 0x0137 },
-    { 0x03a2, 0x0138 },
-    { 0x01c5, 0x0139 },
-    { 0x01e5, 0x013a },
-    { 0x03a6, 0x013b },
-    { 0x03b6, 0x013c },
-    { 0x01a5, 0x013d },
-    { 0x01b5, 0x013e },
-    { 0x01a3, 0x0141 },
-    { 0x01b3, 0x0142 },
-    { 0x01d1, 0x0143 },
-    { 0x01f1, 0x0144 },
-    { 0x03d1, 0x0145 },
-    { 0x03f1, 0x0146 },
-    { 0x01d2, 0x0147 },
-    { 0x01f2, 0x0148 },
-    { 0x03bd, 0x014a },
-    { 0x03bf, 0x014b },
-    { 0x03d2, 0x014c },
-    { 0x03f2, 0x014d },
-    { 0x01d5, 0x0150 },
-    { 0x01f5, 0x0151 },
-    { 0x13bc, 0x0152 },
-    { 0x13bd, 0x0153 },
-    { 0x01c0, 0x0154 },
-    { 0x01e0, 0x0155 },
-    { 0x03a3, 0x0156 },
-    { 0x03b3, 0x0157 },
-    { 0x01d8, 0x0158 },
-    { 0x01f8, 0x0159 },
-    { 0x01a6, 0x015a },
-    { 0x01b6, 0x015b },
-    { 0x02de, 0x015c },
-    { 0x02fe, 0x015d },
-    { 0x01aa, 0x015e },
-    { 0x01ba, 0x015f },
-    { 0x01a9, 0x0160 },
-    { 0x01b9, 0x0161 },
-    { 0x01de, 0x0162 },
-    { 0x01fe, 0x0163 },
-    { 0x01ab, 0x0164 },
-    { 0x01bb, 0x0165 },
-    { 0x03ac, 0x0166 },
-    { 0x03bc, 0x0167 },
-    { 0x03dd, 0x0168 },
-    { 0x03fd, 0x0169 },
-    { 0x03de, 0x016a },
-    { 0x03fe, 0x016b },
-    { 0x02dd, 0x016c },
-    { 0x02fd, 0x016d },
-    { 0x01d9, 0x016e },
-    { 0x01f9, 0x016f },
-    { 0x01db, 0x0170 },
-    { 0x01fb, 0x0171 },
-    { 0x03d9, 0x0172 },
-    { 0x03f9, 0x0173 },
-    { 0x13be, 0x0178 },
-    { 0x01ac, 0x0179 },
-    { 0x01bc, 0x017a },
-    { 0x01af, 0x017b },
-    { 0x01bf, 0x017c },
-    { 0x01ae, 0x017d },
-    { 0x01be, 0x017e },
-    { 0x08f6, 0x0192 },
-    { 0x01b7, 0x02c7 },
-    { 0x01a2, 0x02d8 },
-    { 0x01ff, 0x02d9 },
-    { 0x01b2, 0x02db },
-    { 0x01bd, 0x02dd },
-    { 0x07ae, 0x0385 },
-    { 0x07a1, 0x0386 },
-    { 0x07a2, 0x0388 },
-    { 0x07a3, 0x0389 },
-    { 0x07a4, 0x038a },
-    { 0x07a7, 0x038c },
-    { 0x07a8, 0x038e },
-    { 0x07ab, 0x038f },
-    { 0x07b6, 0x0390 },
-    { 0x07c1, 0x0391 },
-    { 0x07c2, 0x0392 },
-    { 0x07c3, 0x0393 },
-    { 0x07c4, 0x0394 },
-    { 0x07c5, 0x0395 },
-    { 0x07c6, 0x0396 },
-    { 0x07c7, 0x0397 },
-    { 0x07c8, 0x0398 },
-    { 0x07c9, 0x0399 },
-    { 0x07ca, 0x039a },
-    { 0x07cb, 0x039b },
-    { 0x07cc, 0x039c },
-    { 0x07cd, 0x039d },
-    { 0x07ce, 0x039e },
-    { 0x07cf, 0x039f },
-    { 0x07d0, 0x03a0 },
-    { 0x07d1, 0x03a1 },
-    { 0x07d2, 0x03a3 },
-    { 0x07d4, 0x03a4 },
-    { 0x07d5, 0x03a5 },
-    { 0x07d6, 0x03a6 },
-    { 0x07d7, 0x03a7 },
-    { 0x07d8, 0x03a8 },
-    { 0x07d9, 0x03a9 },
-    { 0x07a5, 0x03aa },
-    { 0x07a9, 0x03ab },
-    { 0x07b1, 0x03ac },
-    { 0x07b2, 0x03ad },
-    { 0x07b3, 0x03ae },
-    { 0x07b4, 0x03af },
-    { 0x07ba, 0x03b0 },
-    { 0x07e1, 0x03b1 },
-    { 0x07e2, 0x03b2 },
-    { 0x07e3, 0x03b3 },
-    { 0x07e4, 0x03b4 },
-    { 0x07e5, 0x03b5 },
-    { 0x07e6, 0x03b6 },
-    { 0x07e7, 0x03b7 },
-    { 0x07e8, 0x03b8 },
-    { 0x07e9, 0x03b9 },
-    { 0x07ea, 0x03ba },
-    { 0x07eb, 0x03bb },
-    { 0x07ec, 0x03bc },
-    { 0x07ed, 0x03bd },
-    { 0x07ee, 0x03be },
-    { 0x07ef, 0x03bf },
-    { 0x07f0, 0x03c0 },
-    { 0x07f1, 0x03c1 },
-    { 0x07f3, 0x03c2 },
-    { 0x07f2, 0x03c3 },
-    { 0x07f4, 0x03c4 },
-    { 0x07f5, 0x03c5 },
-    { 0x07f6, 0x03c6 },
-    { 0x07f7, 0x03c7 },
-    { 0x07f8, 0x03c8 },
-    { 0x07f9, 0x03c9 },
-    { 0x07b5, 0x03ca },
-    { 0x07b9, 0x03cb },
-    { 0x07b7, 0x03cc },
-    { 0x07b8, 0x03cd },
-    { 0x07bb, 0x03ce },
-    { 0x06b3, 0x0401 },
-    { 0x06b1, 0x0402 },
-    { 0x06b2, 0x0403 },
-    { 0x06b4, 0x0404 },
-    { 0x06b5, 0x0405 },
-    { 0x06b6, 0x0406 },
-    { 0x06b7, 0x0407 },
-    { 0x06b8, 0x0408 },
-    { 0x06b9, 0x0409 },
-    { 0x06ba, 0x040a },
-    { 0x06bb, 0x040b },
-    { 0x06bc, 0x040c },
-    { 0x06be, 0x040e },
-    { 0x06bf, 0x040f },
-    { 0x06e1, 0x0410 },
-    { 0x06e2, 0x0411 },
-    { 0x06f7, 0x0412 },
-    { 0x06e7, 0x0413 },
-    { 0x06e4, 0x0414 },
-    { 0x06e5, 0x0415 },
-    { 0x06f6, 0x0416 },
-    { 0x06fa, 0x0417 },
-    { 0x06e9, 0x0418 },
-    { 0x06ea, 0x0419 },
-    { 0x06eb, 0x041a },
-    { 0x06ec, 0x041b },
-    { 0x06ed, 0x041c },
-    { 0x06ee, 0x041d },
-    { 0x06ef, 0x041e },
-    { 0x06f0, 0x041f },
-    { 0x06f2, 0x0420 },
-    { 0x06f3, 0x0421 },
-    { 0x06f4, 0x0422 },
-    { 0x06f5, 0x0423 },
-    { 0x06e6, 0x0424 },
-    { 0x06e8, 0x0425 },
-    { 0x06e3, 0x0426 },
-    { 0x06fe, 0x0427 },
-    { 0x06fb, 0x0428 },
-    { 0x06fd, 0x0429 },
-    { 0x06ff, 0x042a },
-    { 0x06f9, 0x042b },
-    { 0x06f8, 0x042c },
-    { 0x06fc, 0x042d },
-    { 0x06e0, 0x042e },
-    { 0x06f1, 0x042f },
-    { 0x06c1, 0x0430 },
-    { 0x06c2, 0x0431 },
-    { 0x06d7, 0x0432 },
-    { 0x06c7, 0x0433 },
-    { 0x06c4, 0x0434 },
-    { 0x06c5, 0x0435 },
-    { 0x06d6, 0x0436 },
-    { 0x06da, 0x0437 },
-    { 0x06c9, 0x0438 },
-    { 0x06ca, 0x0439 },
-    { 0x06cb, 0x043a },
-    { 0x06cc, 0x043b },
-    { 0x06cd, 0x043c },
-    { 0x06ce, 0x043d },
-    { 0x06cf, 0x043e },
-    { 0x06d0, 0x043f },
-    { 0x06d2, 0x0440 },
-    { 0x06d3, 0x0441 },
-    { 0x06d4, 0x0442 },
-    { 0x06d5, 0x0443 },
-    { 0x06c6, 0x0444 },
-    { 0x06c8, 0x0445 },
-    { 0x06c3, 0x0446 },
-    { 0x06de, 0x0447 },
-    { 0x06db, 0x0448 },
-    { 0x06dd, 0x0449 },
-    { 0x06df, 0x044a },
-    { 0x06d9, 0x044b },
-    { 0x06d8, 0x044c },
-    { 0x06dc, 0x044d },
-    { 0x06c0, 0x044e },
-    { 0x06d1, 0x044f },
-    { 0x06a3, 0x0451 },
-    { 0x06a1, 0x0452 },
-    { 0x06a2, 0x0453 },
-    { 0x06a4, 0x0454 },
-    { 0x06a5, 0x0455 },
-    { 0x06a6, 0x0456 },
-    { 0x06a7, 0x0457 },
-    { 0x06a8, 0x0458 },
-    { 0x06a9, 0x0459 },
-    { 0x06aa, 0x045a },
-    { 0x06ab, 0x045b },
-    { 0x06ac, 0x045c },
-    { 0x06ae, 0x045e },
-    { 0x06af, 0x045f },
-    { 0x0ce0, 0x05d0 },
-    { 0x0ce1, 0x05d1 },
-    { 0x0ce2, 0x05d2 },
-    { 0x0ce3, 0x05d3 },
-    { 0x0ce4, 0x05d4 },
-    { 0x0ce5, 0x05d5 },
-    { 0x0ce6, 0x05d6 },
-    { 0x0ce7, 0x05d7 },
-    { 0x0ce8, 0x05d8 },
-    { 0x0ce9, 0x05d9 },
-    { 0x0cea, 0x05da },
-    { 0x0ceb, 0x05db },
-    { 0x0cec, 0x05dc },
-    { 0x0ced, 0x05dd },
-    { 0x0cee, 0x05de },
-    { 0x0cef, 0x05df },
-    { 0x0cf0, 0x05e0 },
-    { 0x0cf1, 0x05e1 },
-    { 0x0cf2, 0x05e2 },
-    { 0x0cf3, 0x05e3 },
-    { 0x0cf4, 0x05e4 },
-    { 0x0cf5, 0x05e5 },
-    { 0x0cf6, 0x05e6 },
-    { 0x0cf7, 0x05e7 },
-    { 0x0cf8, 0x05e8 },
-    { 0x0cf9, 0x05e9 },
-    { 0x0cfa, 0x05ea },
-    { 0x05ac, 0x060c },
-    { 0x05bb, 0x061b },
-    { 0x05bf, 0x061f },
-    { 0x05c1, 0x0621 },
-    { 0x05c2, 0x0622 },
-    { 0x05c3, 0x0623 },
-    { 0x05c4, 0x0624 },
-    { 0x05c5, 0x0625 },
-    { 0x05c6, 0x0626 },
-    { 0x05c7, 0x0627 },
-    { 0x05c8, 0x0628 },
-    { 0x05c9, 0x0629 },
-    { 0x05ca, 0x062a },
-    { 0x05cb, 0x062b },
-    { 0x05cc, 0x062c },
-    { 0x05cd, 0x062d },
-    { 0x05ce, 0x062e },
-    { 0x05cf, 0x062f },
-    { 0x05d0, 0x0630 },
-    { 0x05d1, 0x0631 },
-    { 0x05d2, 0x0632 },
-    { 0x05d3, 0x0633 },
-    { 0x05d4, 0x0634 },
-    { 0x05d5, 0x0635 },
-    { 0x05d6, 0x0636 },
-    { 0x05d7, 0x0637 },
-    { 0x05d8, 0x0638 },
-    { 0x05d9, 0x0639 },
-    { 0x05da, 0x063a },
-    { 0x05e0, 0x0640 },
-    { 0x05e1, 0x0641 },
-    { 0x05e2, 0x0642 },
-    { 0x05e3, 0x0643 },
-    { 0x05e4, 0x0644 },
-    { 0x05e5, 0x0645 },
-    { 0x05e6, 0x0646 },
-    { 0x05e7, 0x0647 },
-    { 0x05e8, 0x0648 },
-    { 0x05e9, 0x0649 },
-    { 0x05ea, 0x064a },
-    { 0x05eb, 0x064b },
-    { 0x05ec, 0x064c },
-    { 0x05ed, 0x064d },
-    { 0x05ee, 0x064e },
-    { 0x05ef, 0x064f },
-    { 0x05f0, 0x0650 },
-    { 0x05f1, 0x0651 },
-    { 0x05f2, 0x0652 },
-    { 0x0da1, 0x0e01 },
-    { 0x0da2, 0x0e02 },
-    { 0x0da3, 0x0e03 },
-    { 0x0da4, 0x0e04 },
-    { 0x0da5, 0x0e05 },
-    { 0x0da6, 0x0e06 },
-    { 0x0da7, 0x0e07 },
-    { 0x0da8, 0x0e08 },
-    { 0x0da9, 0x0e09 },
-    { 0x0daa, 0x0e0a },
-    { 0x0dab, 0x0e0b },
-    { 0x0dac, 0x0e0c },
-    { 0x0dad, 0x0e0d },
-    { 0x0dae, 0x0e0e },
-    { 0x0daf, 0x0e0f },
-    { 0x0db0, 0x0e10 },
-    { 0x0db1, 0x0e11 },
-    { 0x0db2, 0x0e12 },
-    { 0x0db3, 0x0e13 },
-    { 0x0db4, 0x0e14 },
-    { 0x0db5, 0x0e15 },
-    { 0x0db6, 0x0e16 },
-    { 0x0db7, 0x0e17 },
-    { 0x0db8, 0x0e18 },
-    { 0x0db9, 0x0e19 },
-    { 0x0dba, 0x0e1a },
-    { 0x0dbb, 0x0e1b },
-    { 0x0dbc, 0x0e1c },
-    { 0x0dbd, 0x0e1d },
-    { 0x0dbe, 0x0e1e },
-    { 0x0dbf, 0x0e1f },
-    { 0x0dc0, 0x0e20 },
-    { 0x0dc1, 0x0e21 },
-    { 0x0dc2, 0x0e22 },
-    { 0x0dc3, 0x0e23 },
-    { 0x0dc4, 0x0e24 },
-    { 0x0dc5, 0x0e25 },
-    { 0x0dc6, 0x0e26 },
-    { 0x0dc7, 0x0e27 },
-    { 0x0dc8, 0x0e28 },
-    { 0x0dc9, 0x0e29 },
-    { 0x0dca, 0x0e2a },
-    { 0x0dcb, 0x0e2b },
-    { 0x0dcc, 0x0e2c },
-    { 0x0dcd, 0x0e2d },
-    { 0x0dce, 0x0e2e },
-    { 0x0dcf, 0x0e2f },
-    { 0x0dd0, 0x0e30 },
-    { 0x0dd1, 0x0e31 },
-    { 0x0dd2, 0x0e32 },
-    { 0x0dd3, 0x0e33 },
-    { 0x0dd4, 0x0e34 },
-    { 0x0dd5, 0x0e35 },
-    { 0x0dd6, 0x0e36 },
-    { 0x0dd7, 0x0e37 },
-    { 0x0dd8, 0x0e38 },
-    { 0x0dd9, 0x0e39 },
-    { 0x0dda, 0x0e3a },
-    { 0x0ddf, 0x0e3f },
-    { 0x0de0, 0x0e40 },
-    { 0x0de1, 0x0e41 },
-    { 0x0de2, 0x0e42 },
-    { 0x0de3, 0x0e43 },
-    { 0x0de4, 0x0e44 },
-    { 0x0de5, 0x0e45 },
-    { 0x0de6, 0x0e46 },
-    { 0x0de7, 0x0e47 },
-    { 0x0de8, 0x0e48 },
-    { 0x0de9, 0x0e49 },
-    { 0x0dea, 0x0e4a },
-    { 0x0deb, 0x0e4b },
-    { 0x0dec, 0x0e4c },
-    { 0x0ded, 0x0e4d },
-    { 0x0df0, 0x0e50 },
-    { 0x0df1, 0x0e51 },
-    { 0x0df2, 0x0e52 },
-    { 0x0df3, 0x0e53 },
-    { 0x0df4, 0x0e54 },
-    { 0x0df5, 0x0e55 },
-    { 0x0df6, 0x0e56 },
-    { 0x0df7, 0x0e57 },
-    { 0x0df8, 0x0e58 },
-    { 0x0df9, 0x0e59 },
-    { 0x0ed4, 0x11a8 },
-    { 0x0ed5, 0x11a9 },
-    { 0x0ed6, 0x11aa },
-    { 0x0ed7, 0x11ab },
-    { 0x0ed8, 0x11ac },
-    { 0x0ed9, 0x11ad },
-    { 0x0eda, 0x11ae },
-    { 0x0edb, 0x11af },
-    { 0x0edc, 0x11b0 },
-    { 0x0edd, 0x11b1 },
-    { 0x0ede, 0x11b2 },
-    { 0x0edf, 0x11b3 },
-    { 0x0ee0, 0x11b4 },
-    { 0x0ee1, 0x11b5 },
-    { 0x0ee2, 0x11b6 },
-    { 0x0ee3, 0x11b7 },
-    { 0x0ee4, 0x11b8 },
-    { 0x0ee5, 0x11b9 },
-    { 0x0ee6, 0x11ba },
-    { 0x0ee7, 0x11bb },
-    { 0x0ee8, 0x11bc },
-    { 0x0ee9, 0x11bd },
-    { 0x0eea, 0x11be },
-    { 0x0eeb, 0x11bf },
-    { 0x0eec, 0x11c0 },
-    { 0x0eed, 0x11c1 },
-    { 0x0eee, 0x11c2 },
-    { 0x0ef8, 0x11eb },
-    { 0x0ef9, 0x11f0 },
-    { 0x0efa, 0x11f9 },
-    { 0x0aa2, 0x2002 },
-    { 0x0aa1, 0x2003 },
-    { 0x0aa3, 0x2004 },
-    { 0x0aa4, 0x2005 },
-    { 0x0aa5, 0x2007 },
-    { 0x0aa6, 0x2008 },
-    { 0x0aa7, 0x2009 },
-    { 0x0aa8, 0x200a },
-    { 0x0abb, 0x2012 },
-    { 0x0aaa, 0x2013 },
-    { 0x0aa9, 0x2014 },
-    { 0x07af, 0x2015 },
-    { 0x0cdf, 0x2017 },
-    { 0x0ad0, 0x2018 },
-    { 0x0ad1, 0x2019 },
-    { 0x0afd, 0x201a },
-    { 0x0ad2, 0x201c },
-    { 0x0ad3, 0x201d },
-    { 0x0afe, 0x201e },
-    { 0x0af1, 0x2020 },
-    { 0x0af2, 0x2021 },
-    { 0x0ae6, 0x2022 },
-    { 0x0aaf, 0x2025 },
-    { 0x0aae, 0x2026 },
-    { 0x0ad6, 0x2032 },
-    { 0x0ad7, 0x2033 },
-    { 0x0afc, 0x2038 },
-    { 0x047e, 0x203e },
-    { 0x0eff, 0x20a9 },
-    { 0x20ac, 0x20ac },
-    { 0x0ab8, 0x2105 },
-    { 0x06b0, 0x2116 },
-    { 0x0afb, 0x2117 },
-    { 0x0ad4, 0x211e },
-    { 0x0ac9, 0x2122 },
-    { 0x0ab0, 0x2153 },
-    { 0x0ab1, 0x2154 },
-    { 0x0ab2, 0x2155 },
-    { 0x0ab3, 0x2156 },
-    { 0x0ab4, 0x2157 },
-    { 0x0ab5, 0x2158 },
-    { 0x0ab6, 0x2159 },
-    { 0x0ab7, 0x215a },
-    { 0x0ac3, 0x215b },
-    { 0x0ac4, 0x215c },
-    { 0x0ac5, 0x215d },
-    { 0x0ac6, 0x215e },
-    { 0x08fb, 0x2190 },
-    { 0x08fc, 0x2191 },
-    { 0x08fd, 0x2192 },
-    { 0x08fe, 0x2193 },
-    { 0x08ce, 0x21d2 },
-    { 0x08cd, 0x21d4 },
-    { 0x08ef, 0x2202 },
-    { 0x08c5, 0x2207 },
-    { 0x0bca, 0x2218 },
-    { 0x08d6, 0x221a },
-    { 0x08c1, 0x221d },
-    { 0x08c2, 0x221e },
-    { 0x08de, 0x2227 },
-    { 0x08df, 0x2228 },
-    { 0x08dc, 0x2229 },
-    { 0x08dd, 0x222a },
-    { 0x08bf, 0x222b },
-    { 0x08c0, 0x2234 },
-    { 0x08c8, 0x223c },
-    { 0x08c9, 0x2243 },
-    { 0x08bd, 0x2260 },
-    { 0x08cf, 0x2261 },
-    { 0x08bc, 0x2264 },
-    { 0x08be, 0x2265 },
-    { 0x08da, 0x2282 },
-    { 0x08db, 0x2283 },
-    { 0x0bfc, 0x22a2 },
-    { 0x0bdc, 0x22a3 },
-    { 0x0bce, 0x22a4 },
-    { 0x0bc2, 0x22a5 },
-    { 0x0bd3, 0x2308 },
-    { 0x0bc4, 0x230a },
-    { 0x0afa, 0x2315 },
-    { 0x08a4, 0x2320 },
-    { 0x08a5, 0x2321 },
-    { 0x0abc, 0x2329 },
-    { 0x0abe, 0x232a },
-    { 0x0bcc, 0x2395 },
-    { 0x08ab, 0x239b },
-    { 0x08ac, 0x239d },
-    { 0x08ad, 0x239e },
-    { 0x08ae, 0x23a0 },
-    { 0x08a7, 0x23a1 },
-    { 0x08a8, 0x23a3 },
-    { 0x08a9, 0x23a4 },
-    { 0x08aa, 0x23a6 },
-    { 0x08af, 0x23a8 },
-    { 0x08b0, 0x23ac },
-    { 0x08a1, 0x23b7 },
-    { 0x09ef, 0x23ba },
-    { 0x09f0, 0x23bb },
-    { 0x09f2, 0x23bc },
-    { 0x09f3, 0x23bd },
-    { 0x09e2, 0x2409 },
-    { 0x09e5, 0x240a },
-    { 0x09e9, 0x240b },
-    { 0x09e3, 0x240c },
-    { 0x09e4, 0x240d },
-    { 0x09e8, 0x2424 },
-    { 0x09f1, 0x2500 },
-    { 0x09f8, 0x2502 },
-    { 0x09ec, 0x250c },
-    { 0x09eb, 0x2510 },
-    { 0x09ed, 0x2514 },
-    { 0x09ea, 0x2518 },
-    { 0x09f4, 0x251c },
-    { 0x09f5, 0x2524 },
-    { 0x09f7, 0x252c },
-    { 0x09f6, 0x2534 },
-    { 0x09ee, 0x253c },
-    { 0x09e1, 0x2592 },
-    { 0x0ae7, 0x25aa },
-    { 0x0ae1, 0x25ab },
-    { 0x0adb, 0x25ac },
-    { 0x0ae2, 0x25ad },
-    { 0x0adf, 0x25ae },
-    { 0x0acf, 0x25af },
-    { 0x0ae8, 0x25b2 },
-    { 0x0ae3, 0x25b3 },
-    { 0x0add, 0x25b6 },
-    { 0x0acd, 0x25b7 },
-    { 0x0ae9, 0x25bc },
-    { 0x0ae4, 0x25bd },
-    { 0x0adc, 0x25c0 },
-    { 0x0acc, 0x25c1 },
-    { 0x09e0, 0x25c6 },
-    { 0x0ace, 0x25cb },
-    { 0x0ade, 0x25cf },
-    { 0x0ae0, 0x25e6 },
-    { 0x0ae5, 0x2606 },
-    { 0x0af9, 0x260e },
-    { 0x0aca, 0x2613 },
-    { 0x0aea, 0x261c },
-    { 0x0aeb, 0x261e },
-    { 0x0af8, 0x2640 },
-    { 0x0af7, 0x2642 },
-    { 0x0aec, 0x2663 },
-    { 0x0aee, 0x2665 },
-    { 0x0aed, 0x2666 },
-    { 0x0af6, 0x266d },
-    { 0x0af5, 0x266f },
-    { 0x0af3, 0x2713 },
-    { 0x0af4, 0x2717 },
-    { 0x0ad9, 0x271d },
-    { 0x0af0, 0x2720 },
-    { 0x04a4, 0x3001 },
-    { 0x04a1, 0x3002 },
-    { 0x04a2, 0x300c },
-    { 0x04a3, 0x300d },
-    { 0x04de, 0x309b },
-    { 0x04df, 0x309c },
-    { 0x04a7, 0x30a1 },
-    { 0x04b1, 0x30a2 },
-    { 0x04a8, 0x30a3 },
-    { 0x04b2, 0x30a4 },
-    { 0x04a9, 0x30a5 },
-    { 0x04b3, 0x30a6 },
-    { 0x04aa, 0x30a7 },
-    { 0x04b4, 0x30a8 },
-    { 0x04ab, 0x30a9 },
-    { 0x04b5, 0x30aa },
-    { 0x04b6, 0x30ab },
-    { 0x04b7, 0x30ad },
-    { 0x04b8, 0x30af },
-    { 0x04b9, 0x30b1 },
-    { 0x04ba, 0x30b3 },
-    { 0x04bb, 0x30b5 },
-    { 0x04bc, 0x30b7 },
-    { 0x04bd, 0x30b9 },
-    { 0x04be, 0x30bb },
-    { 0x04bf, 0x30bd },
-    { 0x04c0, 0x30bf },
-    { 0x04c1, 0x30c1 },
-    { 0x04af, 0x30c3 },
-    { 0x04c2, 0x30c4 },
-    { 0x04c3, 0x30c6 },
-    { 0x04c4, 0x30c8 },
-    { 0x04c5, 0x30ca },
-    { 0x04c6, 0x30cb },
-    { 0x04c7, 0x30cc },
-    { 0x04c8, 0x30cd },
-    { 0x04c9, 0x30ce },
-    { 0x04ca, 0x30cf },
-    { 0x04cb, 0x30d2 },
-    { 0x04cc, 0x30d5 },
-    { 0x04cd, 0x30d8 },
-    { 0x04ce, 0x30db },
-    { 0x04cf, 0x30de },
-    { 0x04d0, 0x30df },
-    { 0x04d1, 0x30e0 },
-    { 0x04d2, 0x30e1 },
-    { 0x04d3, 0x30e2 },
-    { 0x04ac, 0x30e3 },
-    { 0x04d4, 0x30e4 },
-    { 0x04ad, 0x30e5 },
-    { 0x04d5, 0x30e6 },
-    { 0x04ae, 0x30e7 },
-    { 0x04d6, 0x30e8 },
-    { 0x04d7, 0x30e9 },
-    { 0x04d8, 0x30ea },
-    { 0x04d9, 0x30eb },
-    { 0x04da, 0x30ec },
-    { 0x04db, 0x30ed },
-    { 0x04dc, 0x30ef },
-    { 0x04a6, 0x30f2 },
-    { 0x04dd, 0x30f3 },
-    { 0x04a5, 0x30fb },
-    { 0x04b0, 0x30fc },
-    { 0x0ea1, 0x3131 },
-    { 0x0ea2, 0x3132 },
-    { 0x0ea3, 0x3133 },
-    { 0x0ea4, 0x3134 },
-    { 0x0ea5, 0x3135 },
-    { 0x0ea6, 0x3136 },
-    { 0x0ea7, 0x3137 },
-    { 0x0ea8, 0x3138 },
-    { 0x0ea9, 0x3139 },
-    { 0x0eaa, 0x313a },
-    { 0x0eab, 0x313b },
-    { 0x0eac, 0x313c },
-    { 0x0ead, 0x313d },
-    { 0x0eae, 0x313e },
-    { 0x0eaf, 0x313f },
-    { 0x0eb0, 0x3140 },
-    { 0x0eb1, 0x3141 },
-    { 0x0eb2, 0x3142 },
-    { 0x0eb3, 0x3143 },
-    { 0x0eb4, 0x3144 },
-    { 0x0eb5, 0x3145 },
-    { 0x0eb6, 0x3146 },
-    { 0x0eb7, 0x3147 },
-    { 0x0eb8, 0x3148 },
-    { 0x0eb9, 0x3149 },
-    { 0x0eba, 0x314a },
-    { 0x0ebb, 0x314b },
-    { 0x0ebc, 0x314c },
-    { 0x0ebd, 0x314d },
-    { 0x0ebe, 0x314e },
-    { 0x0ebf, 0x314f },
-    { 0x0ec0, 0x3150 },
-    { 0x0ec1, 0x3151 },
-    { 0x0ec2, 0x3152 },
-    { 0x0ec3, 0x3153 },
-    { 0x0ec4, 0x3154 },
-    { 0x0ec5, 0x3155 },
-    { 0x0ec6, 0x3156 },
-    { 0x0ec7, 0x3157 },
-    { 0x0ec8, 0x3158 },
-    { 0x0ec9, 0x3159 },
-    { 0x0eca, 0x315a },
-    { 0x0ecb, 0x315b },
-    { 0x0ecc, 0x315c },
-    { 0x0ecd, 0x315d },
-    { 0x0ece, 0x315e },
-    { 0x0ecf, 0x315f },
-    { 0x0ed0, 0x3160 },
-    { 0x0ed1, 0x3161 },
-    { 0x0ed2, 0x3162 },
-    { 0x0ed3, 0x3163 },
-    { 0x0eef, 0x316d },
-    { 0x0ef0, 0x3171 },
-    { 0x0ef1, 0x3178 },
-    { 0x0ef2, 0x317f },
-    { 0x0ef3, 0x3181 },
-    { 0x0ef4, 0x3184 },
-    { 0x0ef5, 0x3186 },
-    { 0x0ef6, 0x318d },
-    { 0x0ef7, 0x318e }
+  private static class codepair {
+    public codepair(int keysym_, int ucs_) {
+      keysym = keysym_;
+      ucs = ucs_;
+    }
+    int keysym;
+    int ucs;
+  }
+
+  public static codepair[] keysymtab = {
+    new codepair(0x01a1, 0x0104), /*                     Aogonek Ą LATIN CAPITAL LETTER A WITH OGONEK */
+    new codepair(0x01a2, 0x02d8), /*                       breve ˘ BREVE */
+    new codepair(0x01a3, 0x0141), /*                     Lstroke Ł LATIN CAPITAL LETTER L WITH STROKE */
+    new codepair(0x01a5, 0x013d), /*                      Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */
+    new codepair(0x01a6, 0x015a), /*                      Sacute Ś LATIN CAPITAL LETTER S WITH ACUTE */
+    new codepair(0x01a9, 0x0160), /*                      Scaron Š LATIN CAPITAL LETTER S WITH CARON */
+    new codepair(0x01aa, 0x015e), /*                    Scedilla Ş LATIN CAPITAL LETTER S WITH CEDILLA */
+    new codepair(0x01ab, 0x0164), /*                      Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */
+    new codepair(0x01ac, 0x0179), /*                      Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */
+    new codepair(0x01ae, 0x017d), /*                      Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */
+    new codepair(0x01af, 0x017b), /*                   Zabovedot Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE */
+    new codepair(0x01b1, 0x0105), /*                     aogonek ą LATIN SMALL LETTER A WITH OGONEK */
+    new codepair(0x01b2, 0x02db), /*                      ogonek ˛ OGONEK */
+    new codepair(0x01b3, 0x0142), /*                     lstroke ł LATIN SMALL LETTER L WITH STROKE */
+    new codepair(0x01b5, 0x013e), /*                      lcaron ľ LATIN SMALL LETTER L WITH CARON */
+    new codepair(0x01b6, 0x015b), /*                      sacute ś LATIN SMALL LETTER S WITH ACUTE */
+    new codepair(0x01b7, 0x02c7), /*                       caron ˇ CARON */
+    new codepair(0x01b9, 0x0161), /*                      scaron š LATIN SMALL LETTER S WITH CARON */
+    new codepair(0x01ba, 0x015f), /*                    scedilla ş LATIN SMALL LETTER S WITH CEDILLA */
+    new codepair(0x01bb, 0x0165), /*                      tcaron ť LATIN SMALL LETTER T WITH CARON */
+    new codepair(0x01bc, 0x017a), /*                      zacute ź LATIN SMALL LETTER Z WITH ACUTE */
+    new codepair(0x01bd, 0x02dd), /*                 doubleacute ˝ DOUBLE ACUTE ACCENT */
+    new codepair(0x01be, 0x017e), /*                      zcaron ž LATIN SMALL LETTER Z WITH CARON */
+    new codepair(0x01bf, 0x017c), /*                   zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */
+    new codepair(0x01c0, 0x0154), /*                      Racute Ŕ LATIN CAPITAL LETTER R WITH ACUTE */
+    new codepair(0x01c3, 0x0102), /*                      Abreve Ă LATIN CAPITAL LETTER A WITH BREVE */
+    new codepair(0x01c5, 0x0139), /*                      Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */
+    new codepair(0x01c6, 0x0106), /*                      Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */
+    new codepair(0x01c8, 0x010c), /*                      Ccaron Č LATIN CAPITAL LETTER C WITH CARON */
+    new codepair(0x01ca, 0x0118), /*                     Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */
+    new codepair(0x01cc, 0x011a), /*                      Ecaron Ě LATIN CAPITAL LETTER E WITH CARON */
+    new codepair(0x01cf, 0x010e), /*                      Dcaron Ď LATIN CAPITAL LETTER D WITH CARON */
+    new codepair(0x01d0, 0x0110), /*                     Dstroke Đ LATIN CAPITAL LETTER D WITH STROKE */
+    new codepair(0x01d1, 0x0143), /*                      Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */
+    new codepair(0x01d2, 0x0147), /*                      Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */
+    new codepair(0x01d5, 0x0150), /*                Odoubleacute Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
+    new codepair(0x01d8, 0x0158), /*                      Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */
+    new codepair(0x01d9, 0x016e), /*                       Uring Ů LATIN CAPITAL LETTER U WITH RING ABOVE */
+    new codepair(0x01db, 0x0170), /*                Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
+    new codepair(0x01de, 0x0162), /*                    Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */
+    new codepair(0x01e0, 0x0155), /*                      racute ŕ LATIN SMALL LETTER R WITH ACUTE */
+    new codepair(0x01e3, 0x0103), /*                      abreve ă LATIN SMALL LETTER A WITH BREVE */
+    new codepair(0x01e5, 0x013a), /*                      lacute ĺ LATIN SMALL LETTER L WITH ACUTE */
+    new codepair(0x01e6, 0x0107), /*                      cacute ć LATIN SMALL LETTER C WITH ACUTE */
+    new codepair(0x01e8, 0x010d), /*                      ccaron č LATIN SMALL LETTER C WITH CARON */
+    new codepair(0x01ea, 0x0119), /*                     eogonek ę LATIN SMALL LETTER E WITH OGONEK */
+    new codepair(0x01ec, 0x011b), /*                      ecaron ě LATIN SMALL LETTER E WITH CARON */
+    new codepair(0x01ef, 0x010f), /*                      dcaron ď LATIN SMALL LETTER D WITH CARON */
+    new codepair(0x01f0, 0x0111), /*                     dstroke đ LATIN SMALL LETTER D WITH STROKE */
+    new codepair(0x01f1, 0x0144), /*                      nacute ń LATIN SMALL LETTER N WITH ACUTE */
+    new codepair(0x01f2, 0x0148), /*                      ncaron ň LATIN SMALL LETTER N WITH CARON */
+    new codepair(0x01f5, 0x0151), /*                odoubleacute ő LATIN SMALL LETTER O WITH DOUBLE ACUTE */
+    new codepair(0x01f8, 0x0159), /*                      rcaron ř LATIN SMALL LETTER R WITH CARON */
+    new codepair(0x01f9, 0x016f), /*                       uring ů LATIN SMALL LETTER U WITH RING ABOVE */
+    new codepair(0x01fb, 0x0171), /*                udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */
+    new codepair(0x01fe, 0x0163), /*                    tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */
+    new codepair(0x01ff, 0x02d9), /*                    abovedot ˙ DOT ABOVE */
+    new codepair(0x02a1, 0x0126), /*                     Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */
+    new codepair(0x02a6, 0x0124), /*                 Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
+    new codepair(0x02a9, 0x0130), /*                   Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */
+    new codepair(0x02ab, 0x011e), /*                      Gbreve Ğ LATIN CAPITAL LETTER G WITH BREVE */
+    new codepair(0x02ac, 0x0134), /*                 Jcircumflex Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
+    new codepair(0x02b1, 0x0127), /*                     hstroke ħ LATIN SMALL LETTER H WITH STROKE */
+    new codepair(0x02b6, 0x0125), /*                 hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
+    new codepair(0x02b9, 0x0131), /*                    idotless ı LATIN SMALL LETTER DOTLESS I */
+    new codepair(0x02bb, 0x011f), /*                      gbreve ğ LATIN SMALL LETTER G WITH BREVE */
+    new codepair(0x02bc, 0x0135), /*                 jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */
+    new codepair(0x02c5, 0x010a), /*                   Cabovedot Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE */
+    new codepair(0x02c6, 0x0108), /*                 Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
+    new codepair(0x02d5, 0x0120), /*                   Gabovedot Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE */
+    new codepair(0x02d8, 0x011c), /*                 Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
+    new codepair(0x02dd, 0x016c), /*                      Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */
+    new codepair(0x02de, 0x015c), /*                 Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
+    new codepair(0x02e5, 0x010b), /*                   cabovedot ċ LATIN SMALL LETTER C WITH DOT ABOVE */
+    new codepair(0x02e6, 0x0109), /*                 ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */
+    new codepair(0x02f5, 0x0121), /*                   gabovedot ġ LATIN SMALL LETTER G WITH DOT ABOVE */
+    new codepair(0x02f8, 0x011d), /*                 gcircumflex ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX */
+    new codepair(0x02fd, 0x016d), /*                      ubreve ŭ LATIN SMALL LETTER U WITH BREVE */
+    new codepair(0x02fe, 0x015d), /*                 scircumflex ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX */
+    new codepair(0x03a2, 0x0138), /*                         kra ĸ LATIN SMALL LETTER KRA */
+    new codepair(0x03a3, 0x0156), /*                    Rcedilla Ŗ LATIN CAPITAL LETTER R WITH CEDILLA */
+    new codepair(0x03a5, 0x0128), /*                      Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */
+    new codepair(0x03a6, 0x013b), /*                    Lcedilla Ļ LATIN CAPITAL LETTER L WITH CEDILLA */
+    new codepair(0x03aa, 0x0112), /*                     Emacron Ē LATIN CAPITAL LETTER E WITH MACRON */
+    new codepair(0x03ab, 0x0122), /*                    Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */
+    new codepair(0x03ac, 0x0166), /*                      Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */
+    new codepair(0x03b3, 0x0157), /*                    rcedilla ŗ LATIN SMALL LETTER R WITH CEDILLA */
+    new codepair(0x03b5, 0x0129), /*                      itilde ĩ LATIN SMALL LETTER I WITH TILDE */
+    new codepair(0x03b6, 0x013c), /*                    lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */
+    new codepair(0x03ba, 0x0113), /*                     emacron ē LATIN SMALL LETTER E WITH MACRON */
+    new codepair(0x03bb, 0x0123), /*                    gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */
+    new codepair(0x03bc, 0x0167), /*                      tslash ŧ LATIN SMALL LETTER T WITH STROKE */
+    new codepair(0x03bd, 0x014a), /*                         ENG Ŋ LATIN CAPITAL LETTER ENG */
+    new codepair(0x03bf, 0x014b), /*                         eng ŋ LATIN SMALL LETTER ENG */
+    new codepair(0x03c0, 0x0100), /*                     Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */
+    new codepair(0x03c7, 0x012e), /*                     Iogonek Į LATIN CAPITAL LETTER I WITH OGONEK */
+    new codepair(0x03cc, 0x0116), /*                   Eabovedot Ė LATIN CAPITAL LETTER E WITH DOT ABOVE */
+    new codepair(0x03cf, 0x012a), /*                     Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */
+    new codepair(0x03d1, 0x0145), /*                    Ncedilla Ņ LATIN CAPITAL LETTER N WITH CEDILLA */
+    new codepair(0x03d2, 0x014c), /*                     Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */
+    new codepair(0x03d3, 0x0136), /*                    Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */
+    new codepair(0x03d9, 0x0172), /*                     Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */
+    new codepair(0x03dd, 0x0168), /*                      Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */
+    new codepair(0x03de, 0x016a), /*                     Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */
+    new codepair(0x03e0, 0x0101), /*                     amacron ā LATIN SMALL LETTER A WITH MACRON */
+    new codepair(0x03e7, 0x012f), /*                     iogonek į LATIN SMALL LETTER I WITH OGONEK */
+    new codepair(0x03ec, 0x0117), /*                   eabovedot ė LATIN SMALL LETTER E WITH DOT ABOVE */
+    new codepair(0x03ef, 0x012b), /*                     imacron ī LATIN SMALL LETTER I WITH MACRON */
+    new codepair(0x03f1, 0x0146), /*                    ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */
+    new codepair(0x03f2, 0x014d), /*                     omacron ō LATIN SMALL LETTER O WITH MACRON */
+    new codepair(0x03f3, 0x0137), /*                    kcedilla ķ LATIN SMALL LETTER K WITH CEDILLA */
+    new codepair(0x03f9, 0x0173), /*                     uogonek ų LATIN SMALL LETTER U WITH OGONEK */
+    new codepair(0x03fd, 0x0169), /*                      utilde ũ LATIN SMALL LETTER U WITH TILDE */
+    new codepair(0x03fe, 0x016b), /*                     umacron ū LATIN SMALL LETTER U WITH MACRON */
+    new codepair(0x047e, 0x203e), /*                    overline ‾ OVERLINE */
+    new codepair(0x04a1, 0x3002), /*               kana_fullstop 。 IDEOGRAPHIC FULL STOP */
+    new codepair(0x04a2, 0x300c), /*         kana_openingbracket 「 LEFT CORNER BRACKET */
+    new codepair(0x04a3, 0x300d), /*         kana_closingbracket 」 RIGHT CORNER BRACKET */
+    new codepair(0x04a4, 0x3001), /*                  kana_comma 、 IDEOGRAPHIC COMMA */
+    new codepair(0x04a5, 0x30fb), /*            kana_conjunctive ・ KATAKANA MIDDLE DOT */
+    new codepair(0x04a6, 0x30f2), /*                     kana_WO ヲ KATAKANA LETTER WO */
+    new codepair(0x04a7, 0x30a1), /*                      kana_a ァ KATAKANA LETTER SMALL A */
+    new codepair(0x04a8, 0x30a3), /*                      kana_i ィ KATAKANA LETTER SMALL I */
+    new codepair(0x04a9, 0x30a5), /*                      kana_u ゥ KATAKANA LETTER SMALL U */
+    new codepair(0x04aa, 0x30a7), /*                      kana_e ェ KATAKANA LETTER SMALL E */
+    new codepair(0x04ab, 0x30a9), /*                      kana_o ォ KATAKANA LETTER SMALL O */
+    new codepair(0x04ac, 0x30e3), /*                     kana_ya ャ KATAKANA LETTER SMALL YA */
+    new codepair(0x04ad, 0x30e5), /*                     kana_yu ュ KATAKANA LETTER SMALL YU */
+    new codepair(0x04ae, 0x30e7), /*                     kana_yo ョ KATAKANA LETTER SMALL YO */
+    new codepair(0x04af, 0x30c3), /*                    kana_tsu ッ KATAKANA LETTER SMALL TU */
+    new codepair(0x04b0, 0x30fc), /*              prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */
+    new codepair(0x04b1, 0x30a2), /*                      kana_A ア KATAKANA LETTER A */
+    new codepair(0x04b2, 0x30a4), /*                      kana_I イ KATAKANA LETTER I */
+    new codepair(0x04b3, 0x30a6), /*                      kana_U ウ KATAKANA LETTER U */
+    new codepair(0x04b4, 0x30a8), /*                      kana_E エ KATAKANA LETTER E */
+    new codepair(0x04b5, 0x30aa), /*                      kana_O オ KATAKANA LETTER O */
+    new codepair(0x04b6, 0x30ab), /*                     kana_KA カ KATAKANA LETTER KA */
+    new codepair(0x04b7, 0x30ad), /*                     kana_KI キ KATAKANA LETTER KI */
+    new codepair(0x04b8, 0x30af), /*                     kana_KU ク KATAKANA LETTER KU */
+    new codepair(0x04b9, 0x30b1), /*                     kana_KE ケ KATAKANA LETTER KE */
+    new codepair(0x04ba, 0x30b3), /*                     kana_KO コ KATAKANA LETTER KO */
+    new codepair(0x04bb, 0x30b5), /*                     kana_SA サ KATAKANA LETTER SA */
+    new codepair(0x04bc, 0x30b7), /*                    kana_SHI シ KATAKANA LETTER SI */
+    new codepair(0x04bd, 0x30b9), /*                     kana_SU ス KATAKANA LETTER SU */
+    new codepair(0x04be, 0x30bb), /*                     kana_SE セ KATAKANA LETTER SE */
+    new codepair(0x04bf, 0x30bd), /*                     kana_SO ソ KATAKANA LETTER SO */
+    new codepair(0x04c0, 0x30bf), /*                     kana_TA タ KATAKANA LETTER TA */
+    new codepair(0x04c1, 0x30c1), /*                    kana_CHI チ KATAKANA LETTER TI */
+    new codepair(0x04c2, 0x30c4), /*                    kana_TSU ツ KATAKANA LETTER TU */
+    new codepair(0x04c3, 0x30c6), /*                     kana_TE テ KATAKANA LETTER TE */
+    new codepair(0x04c4, 0x30c8), /*                     kana_TO ト KATAKANA LETTER TO */
+    new codepair(0x04c5, 0x30ca), /*                     kana_NA ナ KATAKANA LETTER NA */
+    new codepair(0x04c6, 0x30cb), /*                     kana_NI ニ KATAKANA LETTER NI */
+    new codepair(0x04c7, 0x30cc), /*                     kana_NU ヌ KATAKANA LETTER NU */
+    new codepair(0x04c8, 0x30cd), /*                     kana_NE ネ KATAKANA LETTER NE */
+    new codepair(0x04c9, 0x30ce), /*                     kana_NO ノ KATAKANA LETTER NO */
+    new codepair(0x04ca, 0x30cf), /*                     kana_HA ハ KATAKANA LETTER HA */
+    new codepair(0x04cb, 0x30d2), /*                     kana_HI ヒ KATAKANA LETTER HI */
+    new codepair(0x04cc, 0x30d5), /*                     kana_FU フ KATAKANA LETTER HU */
+    new codepair(0x04cd, 0x30d8), /*                     kana_HE ヘ KATAKANA LETTER HE */
+    new codepair(0x04ce, 0x30db), /*                     kana_HO ホ KATAKANA LETTER HO */
+    new codepair(0x04cf, 0x30de), /*                     kana_MA マ KATAKANA LETTER MA */
+    new codepair(0x04d0, 0x30df), /*                     kana_MI ミ KATAKANA LETTER MI */
+    new codepair(0x04d1, 0x30e0), /*                     kana_MU ム KATAKANA LETTER MU */
+    new codepair(0x04d2, 0x30e1), /*                     kana_ME メ KATAKANA LETTER ME */
+    new codepair(0x04d3, 0x30e2), /*                     kana_MO モ KATAKANA LETTER MO */
+    new codepair(0x04d4, 0x30e4), /*                     kana_YA ヤ KATAKANA LETTER YA */
+    new codepair(0x04d5, 0x30e6), /*                     kana_YU ユ KATAKANA LETTER YU */
+    new codepair(0x04d6, 0x30e8), /*                     kana_YO ヨ KATAKANA LETTER YO */
+    new codepair(0x04d7, 0x30e9), /*                     kana_RA ラ KATAKANA LETTER RA */
+    new codepair(0x04d8, 0x30ea), /*                     kana_RI リ KATAKANA LETTER RI */
+    new codepair(0x04d9, 0x30eb), /*                     kana_RU ル KATAKANA LETTER RU */
+    new codepair(0x04da, 0x30ec), /*                     kana_RE レ KATAKANA LETTER RE */
+    new codepair(0x04db, 0x30ed), /*                     kana_RO ロ KATAKANA LETTER RO */
+    new codepair(0x04dc, 0x30ef), /*                     kana_WA ワ KATAKANA LETTER WA */
+    new codepair(0x04dd, 0x30f3), /*                      kana_N ン KATAKANA LETTER N */
+    new codepair(0x04de, 0x309b), /*                 voicedsound ゛ KATAKANA-HIRAGANA VOICED SOUND MARK */
+    new codepair(0x04df, 0x309c), /*             semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+    new codepair(0x05ac, 0x060c), /*                Arabic_comma ، ARABIC COMMA */
+    new codepair(0x05bb, 0x061b), /*            Arabic_semicolon ؛ ARABIC SEMICOLON */
+    new codepair(0x05bf, 0x061f), /*        Arabic_question_mark ؟ ARABIC QUESTION MARK */
+    new codepair(0x05c1, 0x0621), /*                Arabic_hamza ء ARABIC LETTER HAMZA */
+    new codepair(0x05c2, 0x0622), /*          Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */
+    new codepair(0x05c3, 0x0623), /*          Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */
+    new codepair(0x05c4, 0x0624), /*           Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */
+    new codepair(0x05c5, 0x0625), /*       Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */
+    new codepair(0x05c6, 0x0626), /*           Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */
+    new codepair(0x05c7, 0x0627), /*                 Arabic_alef ا ARABIC LETTER ALEF */
+    new codepair(0x05c8, 0x0628), /*                  Arabic_beh ب ARABIC LETTER BEH */
+    new codepair(0x05c9, 0x0629), /*           Arabic_tehmarbuta ة ARABIC LETTER TEH MARBUTA */
+    new codepair(0x05ca, 0x062a), /*                  Arabic_teh ت ARABIC LETTER TEH */
+    new codepair(0x05cb, 0x062b), /*                 Arabic_theh ث ARABIC LETTER THEH */
+    new codepair(0x05cc, 0x062c), /*                 Arabic_jeem ج ARABIC LETTER JEEM */
+    new codepair(0x05cd, 0x062d), /*                  Arabic_hah ح ARABIC LETTER HAH */
+    new codepair(0x05ce, 0x062e), /*                 Arabic_khah خ ARABIC LETTER KHAH */
+    new codepair(0x05cf, 0x062f), /*                  Arabic_dal د ARABIC LETTER DAL */
+    new codepair(0x05d0, 0x0630), /*                 Arabic_thal ذ ARABIC LETTER THAL */
+    new codepair(0x05d1, 0x0631), /*                   Arabic_ra ر ARABIC LETTER REH */
+    new codepair(0x05d2, 0x0632), /*                 Arabic_zain ز ARABIC LETTER ZAIN */
+    new codepair(0x05d3, 0x0633), /*                 Arabic_seen س ARABIC LETTER SEEN */
+    new codepair(0x05d4, 0x0634), /*                Arabic_sheen ش ARABIC LETTER SHEEN */
+    new codepair(0x05d5, 0x0635), /*                  Arabic_sad ص ARABIC LETTER SAD */
+    new codepair(0x05d6, 0x0636), /*                  Arabic_dad ض ARABIC LETTER DAD */
+    new codepair(0x05d7, 0x0637), /*                  Arabic_tah ط ARABIC LETTER TAH */
+    new codepair(0x05d8, 0x0638), /*                  Arabic_zah ظ ARABIC LETTER ZAH */
+    new codepair(0x05d9, 0x0639), /*                  Arabic_ain ع ARABIC LETTER AIN */
+    new codepair(0x05da, 0x063a), /*                Arabic_ghain غ ARABIC LETTER GHAIN */
+    new codepair(0x05e0, 0x0640), /*              Arabic_tatweel ـ ARABIC TATWEEL */
+    new codepair(0x05e1, 0x0641), /*                  Arabic_feh ف ARABIC LETTER FEH */
+    new codepair(0x05e2, 0x0642), /*                  Arabic_qaf ق ARABIC LETTER QAF */
+    new codepair(0x05e3, 0x0643), /*                  Arabic_kaf ك ARABIC LETTER KAF */
+    new codepair(0x05e4, 0x0644), /*                  Arabic_lam ل ARABIC LETTER LAM */
+    new codepair(0x05e5, 0x0645), /*                 Arabic_meem م ARABIC LETTER MEEM */
+    new codepair(0x05e6, 0x0646), /*                 Arabic_noon ن ARABIC LETTER NOON */
+    new codepair(0x05e7, 0x0647), /*                   Arabic_ha ه ARABIC LETTER HEH */
+    new codepair(0x05e8, 0x0648), /*                  Arabic_waw و ARABIC LETTER WAW */
+    new codepair(0x05e9, 0x0649), /*          Arabic_alefmaksura ى ARABIC LETTER ALEF MAKSURA */
+    new codepair(0x05ea, 0x064a), /*                  Arabic_yeh ي ARABIC LETTER YEH */
+    new codepair(0x05eb, 0x064b), /*             Arabic_fathatan ً ARABIC FATHATAN */
+    new codepair(0x05ec, 0x064c), /*             Arabic_dammatan ٌ ARABIC DAMMATAN */
+    new codepair(0x05ed, 0x064d), /*             Arabic_kasratan ٍ ARABIC KASRATAN */
+    new codepair(0x05ee, 0x064e), /*                Arabic_fatha َ ARABIC FATHA */
+    new codepair(0x05ef, 0x064f), /*                Arabic_damma ُ ARABIC DAMMA */
+    new codepair(0x05f0, 0x0650), /*                Arabic_kasra ِ ARABIC KASRA */
+    new codepair(0x05f1, 0x0651), /*               Arabic_shadda ّ ARABIC SHADDA */
+    new codepair(0x05f2, 0x0652), /*                Arabic_sukun ْ ARABIC SUKUN */
+    new codepair(0x06a1, 0x0452), /*                 Serbian_dje ђ CYRILLIC SMALL LETTER DJE */
+    new codepair(0x06a2, 0x0453), /*               Macedonia_gje ѓ CYRILLIC SMALL LETTER GJE */
+    new codepair(0x06a3, 0x0451), /*                 Cyrillic_io ё CYRILLIC SMALL LETTER IO */
+    new codepair(0x06a4, 0x0454), /*                Ukrainian_ie є CYRILLIC SMALL LETTER UKRAINIAN IE */
+    new codepair(0x06a5, 0x0455), /*               Macedonia_dse ѕ CYRILLIC SMALL LETTER DZE */
+    new codepair(0x06a6, 0x0456), /*                 Ukrainian_i і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
+    new codepair(0x06a7, 0x0457), /*                Ukrainian_yi ї CYRILLIC SMALL LETTER YI */
+    new codepair(0x06a8, 0x0458), /*                 Cyrillic_je ј CYRILLIC SMALL LETTER JE */
+    new codepair(0x06a9, 0x0459), /*                Cyrillic_lje љ CYRILLIC SMALL LETTER LJE */
+    new codepair(0x06aa, 0x045a), /*                Cyrillic_nje њ CYRILLIC SMALL LETTER NJE */
+    new codepair(0x06ab, 0x045b), /*                Serbian_tshe ћ CYRILLIC SMALL LETTER TSHE */
+    new codepair(0x06ac, 0x045c), /*               Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */
+    new codepair(0x06ae, 0x045e), /*         Byelorussian_shortu ў CYRILLIC SMALL LETTER SHORT U */
+    new codepair(0x06af, 0x045f), /*               Cyrillic_dzhe џ CYRILLIC SMALL LETTER DZHE */
+    new codepair(0x06b0, 0x2116), /*                  numerosign № NUMERO SIGN */
+    new codepair(0x06b1, 0x0402), /*                 Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */
+    new codepair(0x06b2, 0x0403), /*               Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */
+    new codepair(0x06b3, 0x0401), /*                 Cyrillic_IO Ё CYRILLIC CAPITAL LETTER IO */
+    new codepair(0x06b4, 0x0404), /*                Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */
+    new codepair(0x06b5, 0x0405), /*               Macedonia_DSE Ѕ CYRILLIC CAPITAL LETTER DZE */
+    new codepair(0x06b6, 0x0406), /*                 Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
+    new codepair(0x06b7, 0x0407), /*                Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */
+    new codepair(0x06b8, 0x0408), /*                 Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */
+    new codepair(0x06b9, 0x0409), /*                Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */
+    new codepair(0x06ba, 0x040a), /*                Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */
+    new codepair(0x06bb, 0x040b), /*                Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */
+    new codepair(0x06bc, 0x040c), /*               Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */
+    new codepair(0x06be, 0x040e), /*         Byelorussian_SHORTU Ў CYRILLIC CAPITAL LETTER SHORT U */
+    new codepair(0x06bf, 0x040f), /*               Cyrillic_DZHE Џ CYRILLIC CAPITAL LETTER DZHE */
+    new codepair(0x06c0, 0x044e), /*                 Cyrillic_yu ю CYRILLIC SMALL LETTER YU */
+    new codepair(0x06c1, 0x0430), /*                  Cyrillic_a а CYRILLIC SMALL LETTER A */
+    new codepair(0x06c2, 0x0431), /*                 Cyrillic_be б CYRILLIC SMALL LETTER BE */
+    new codepair(0x06c3, 0x0446), /*                Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */
+    new codepair(0x06c4, 0x0434), /*                 Cyrillic_de д CYRILLIC SMALL LETTER DE */
+    new codepair(0x06c5, 0x0435), /*                 Cyrillic_ie е CYRILLIC SMALL LETTER IE */
+    new codepair(0x06c6, 0x0444), /*                 Cyrillic_ef ф CYRILLIC SMALL LETTER EF */
+    new codepair(0x06c7, 0x0433), /*                Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */
+    new codepair(0x06c8, 0x0445), /*                 Cyrillic_ha х CYRILLIC SMALL LETTER HA */
+    new codepair(0x06c9, 0x0438), /*                  Cyrillic_i и CYRILLIC SMALL LETTER I */
+    new codepair(0x06ca, 0x0439), /*             Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */
+    new codepair(0x06cb, 0x043a), /*                 Cyrillic_ka к CYRILLIC SMALL LETTER KA */
+    new codepair(0x06cc, 0x043b), /*                 Cyrillic_el л CYRILLIC SMALL LETTER EL */
+    new codepair(0x06cd, 0x043c), /*                 Cyrillic_em м CYRILLIC SMALL LETTER EM */
+    new codepair(0x06ce, 0x043d), /*                 Cyrillic_en н CYRILLIC SMALL LETTER EN */
+    new codepair(0x06cf, 0x043e), /*                  Cyrillic_o о CYRILLIC SMALL LETTER O */
+    new codepair(0x06d0, 0x043f), /*                 Cyrillic_pe п CYRILLIC SMALL LETTER PE */
+    new codepair(0x06d1, 0x044f), /*                 Cyrillic_ya я CYRILLIC SMALL LETTER YA */
+    new codepair(0x06d2, 0x0440), /*                 Cyrillic_er р CYRILLIC SMALL LETTER ER */
+    new codepair(0x06d3, 0x0441), /*                 Cyrillic_es с CYRILLIC SMALL LETTER ES */
+    new codepair(0x06d4, 0x0442), /*                 Cyrillic_te т CYRILLIC SMALL LETTER TE */
+    new codepair(0x06d5, 0x0443), /*                  Cyrillic_u у CYRILLIC SMALL LETTER U */
+    new codepair(0x06d6, 0x0436), /*                Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */
+    new codepair(0x06d7, 0x0432), /*                 Cyrillic_ve в CYRILLIC SMALL LETTER VE */
+    new codepair(0x06d8, 0x044c), /*           Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */
+    new codepair(0x06d9, 0x044b), /*               Cyrillic_yeru ы CYRILLIC SMALL LETTER YERU */
+    new codepair(0x06da, 0x0437), /*                 Cyrillic_ze з CYRILLIC SMALL LETTER ZE */
+    new codepair(0x06db, 0x0448), /*                Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */
+    new codepair(0x06dc, 0x044d), /*                  Cyrillic_e э CYRILLIC SMALL LETTER E */
+    new codepair(0x06dd, 0x0449), /*              Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */
+    new codepair(0x06de, 0x0447), /*                Cyrillic_che ч CYRILLIC SMALL LETTER CHE */
+    new codepair(0x06df, 0x044a), /*           Cyrillic_hardsign ъ CYRILLIC SMALL LETTER HARD SIGN */
+    new codepair(0x06e0, 0x042e), /*                 Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */
+    new codepair(0x06e1, 0x0410), /*                  Cyrillic_A А CYRILLIC CAPITAL LETTER A */
+    new codepair(0x06e2, 0x0411), /*                 Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */
+    new codepair(0x06e3, 0x0426), /*                Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */
+    new codepair(0x06e4, 0x0414), /*                 Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */
+    new codepair(0x06e5, 0x0415), /*                 Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */
+    new codepair(0x06e6, 0x0424), /*                 Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */
+    new codepair(0x06e7, 0x0413), /*                Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */
+    new codepair(0x06e8, 0x0425), /*                 Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */
+    new codepair(0x06e9, 0x0418), /*                  Cyrillic_I И CYRILLIC CAPITAL LETTER I */
+    new codepair(0x06ea, 0x0419), /*             Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */
+    new codepair(0x06eb, 0x041a), /*                 Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */
+    new codepair(0x06ec, 0x041b), /*                 Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */
+    new codepair(0x06ed, 0x041c), /*                 Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */
+    new codepair(0x06ee, 0x041d), /*                 Cyrillic_EN Н CYRILLIC CAPITAL LETTER EN */
+    new codepair(0x06ef, 0x041e), /*                  Cyrillic_O О CYRILLIC CAPITAL LETTER O */
+    new codepair(0x06f0, 0x041f), /*                 Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */
+    new codepair(0x06f1, 0x042f), /*                 Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */
+    new codepair(0x06f2, 0x0420), /*                 Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */
+    new codepair(0x06f3, 0x0421), /*                 Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */
+    new codepair(0x06f4, 0x0422), /*                 Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */
+    new codepair(0x06f5, 0x0423), /*                  Cyrillic_U У CYRILLIC CAPITAL LETTER U */
+    new codepair(0x06f6, 0x0416), /*                Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */
+    new codepair(0x06f7, 0x0412), /*                 Cyrillic_VE В CYRILLIC CAPITAL LETTER VE */
+    new codepair(0x06f8, 0x042c), /*           Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */
+    new codepair(0x06f9, 0x042b), /*               Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */
+    new codepair(0x06fa, 0x0417), /*                 Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */
+    new codepair(0x06fb, 0x0428), /*                Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */
+    new codepair(0x06fc, 0x042d), /*                  Cyrillic_E Э CYRILLIC CAPITAL LETTER E */
+    new codepair(0x06fd, 0x0429), /*              Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */
+    new codepair(0x06fe, 0x0427), /*                Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */
+    new codepair(0x06ff, 0x042a), /*           Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */
+    new codepair(0x07a1, 0x0386), /*           Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */
+    new codepair(0x07a2, 0x0388), /*         Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */
+    new codepair(0x07a3, 0x0389), /*             Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */
+    new codepair(0x07a4, 0x038a), /*            Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */
+    new codepair(0x07a5, 0x03aa), /*         Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
+    new codepair(0x07a7, 0x038c), /*         Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */
+    new codepair(0x07a8, 0x038e), /*         Greek_UPSILONaccent Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS */
+    new codepair(0x07a9, 0x03ab), /*       Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
+    new codepair(0x07ab, 0x038f), /*           Greek_OMEGAaccent Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS */
+    new codepair(0x07ae, 0x0385), /*        Greek_accentdieresis ΅ GREEK DIALYTIKA TONOS */
+    new codepair(0x07af, 0x2015), /*              Greek_horizbar ― HORIZONTAL BAR */
+    new codepair(0x07b1, 0x03ac), /*           Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */
+    new codepair(0x07b2, 0x03ad), /*         Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */
+    new codepair(0x07b3, 0x03ae), /*             Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */
+    new codepair(0x07b4, 0x03af), /*            Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */
+    new codepair(0x07b5, 0x03ca), /*          Greek_iotadieresis ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
+    new codepair(0x07b6, 0x0390), /*    Greek_iotaaccentdieresis ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+    new codepair(0x07b7, 0x03cc), /*         Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */
+    new codepair(0x07b8, 0x03cd), /*         Greek_upsilonaccent ύ GREEK SMALL LETTER UPSILON WITH TONOS */
+    new codepair(0x07b9, 0x03cb), /*       Greek_upsilondieresis ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
+    new codepair(0x07ba, 0x03b0), /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+    new codepair(0x07bb, 0x03ce), /*           Greek_omegaaccent ώ GREEK SMALL LETTER OMEGA WITH TONOS */
+    new codepair(0x07c1, 0x0391), /*                 Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */
+    new codepair(0x07c2, 0x0392), /*                  Greek_BETA Β GREEK CAPITAL LETTER BETA */
+    new codepair(0x07c3, 0x0393), /*                 Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */
+    new codepair(0x07c4, 0x0394), /*                 Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */
+    new codepair(0x07c5, 0x0395), /*               Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */
+    new codepair(0x07c6, 0x0396), /*                  Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */
+    new codepair(0x07c7, 0x0397), /*                   Greek_ETA Η GREEK CAPITAL LETTER ETA */
+    new codepair(0x07c8, 0x0398), /*                 Greek_THETA Θ GREEK CAPITAL LETTER THETA */
+    new codepair(0x07c9, 0x0399), /*                  Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */
+    new codepair(0x07ca, 0x039a), /*                 Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */
+    new codepair(0x07cb, 0x039b), /*                Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */
+    new codepair(0x07cc, 0x039c), /*                    Greek_MU Μ GREEK CAPITAL LETTER MU */
+    new codepair(0x07cd, 0x039d), /*                    Greek_NU Ν GREEK CAPITAL LETTER NU */
+    new codepair(0x07ce, 0x039e), /*                    Greek_XI Ξ GREEK CAPITAL LETTER XI */
+    new codepair(0x07cf, 0x039f), /*               Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */
+    new codepair(0x07d0, 0x03a0), /*                    Greek_PI Π GREEK CAPITAL LETTER PI */
+    new codepair(0x07d1, 0x03a1), /*                   Greek_RHO Ρ GREEK CAPITAL LETTER RHO */
+    new codepair(0x07d2, 0x03a3), /*                 Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */
+    new codepair(0x07d4, 0x03a4), /*                   Greek_TAU Τ GREEK CAPITAL LETTER TAU */
+    new codepair(0x07d5, 0x03a5), /*               Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */
+    new codepair(0x07d6, 0x03a6), /*                   Greek_PHI Φ GREEK CAPITAL LETTER PHI */
+    new codepair(0x07d7, 0x03a7), /*                   Greek_CHI Χ GREEK CAPITAL LETTER CHI */
+    new codepair(0x07d8, 0x03a8), /*                   Greek_PSI Ψ GREEK CAPITAL LETTER PSI */
+    new codepair(0x07d9, 0x03a9), /*                 Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */
+    new codepair(0x07e1, 0x03b1), /*                 Greek_alpha α GREEK SMALL LETTER ALPHA */
+    new codepair(0x07e2, 0x03b2), /*                  Greek_beta β GREEK SMALL LETTER BETA */
+    new codepair(0x07e3, 0x03b3), /*                 Greek_gamma γ GREEK SMALL LETTER GAMMA */
+    new codepair(0x07e4, 0x03b4), /*                 Greek_delta δ GREEK SMALL LETTER DELTA */
+    new codepair(0x07e5, 0x03b5), /*               Greek_epsilon ε GREEK SMALL LETTER EPSILON */
+    new codepair(0x07e6, 0x03b6), /*                  Greek_zeta ζ GREEK SMALL LETTER ZETA */
+    new codepair(0x07e7, 0x03b7), /*                   Greek_eta η GREEK SMALL LETTER ETA */
+    new codepair(0x07e8, 0x03b8), /*                 Greek_theta θ GREEK SMALL LETTER THETA */
+    new codepair(0x07e9, 0x03b9), /*                  Greek_iota ι GREEK SMALL LETTER IOTA */
+    new codepair(0x07ea, 0x03ba), /*                 Greek_kappa κ GREEK SMALL LETTER KAPPA */
+    new codepair(0x07eb, 0x03bb), /*                Greek_lambda λ GREEK SMALL LETTER LAMDA */
+    new codepair(0x07ec, 0x03bc), /*                    Greek_mu μ GREEK SMALL LETTER MU */
+    new codepair(0x07ed, 0x03bd), /*                    Greek_nu ν GREEK SMALL LETTER NU */
+    new codepair(0x07ee, 0x03be), /*                    Greek_xi ξ GREEK SMALL LETTER XI */
+    new codepair(0x07ef, 0x03bf), /*               Greek_omicron ο GREEK SMALL LETTER OMICRON */
+    new codepair(0x07f0, 0x03c0), /*                    Greek_pi π GREEK SMALL LETTER PI */
+    new codepair(0x07f1, 0x03c1), /*                   Greek_rho ρ GREEK SMALL LETTER RHO */
+    new codepair(0x07f2, 0x03c3), /*                 Greek_sigma σ GREEK SMALL LETTER SIGMA */
+    new codepair(0x07f3, 0x03c2), /*       Greek_finalsmallsigma ς GREEK SMALL LETTER FINAL SIGMA */
+    new codepair(0x07f4, 0x03c4), /*                   Greek_tau τ GREEK SMALL LETTER TAU */
+    new codepair(0x07f5, 0x03c5), /*               Greek_upsilon υ GREEK SMALL LETTER UPSILON */
+    new codepair(0x07f6, 0x03c6), /*                   Greek_phi φ GREEK SMALL LETTER PHI */
+    new codepair(0x07f7, 0x03c7), /*                   Greek_chi χ GREEK SMALL LETTER CHI */
+    new codepair(0x07f8, 0x03c8), /*                   Greek_psi ψ GREEK SMALL LETTER PSI */
+    new codepair(0x07f9, 0x03c9), /*                 Greek_omega ω GREEK SMALL LETTER OMEGA */
+    new codepair(0x08a1, 0x23b7), /*                 leftradical ⎷ ??? */
+    new codepair(0x08a2, 0x250c), /*              topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
+    new codepair(0x08a3, 0x2500), /*              horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */
+    new codepair(0x08a4, 0x2320), /*                 topintegral ⌠ TOP HALF INTEGRAL */
+    new codepair(0x08a5, 0x2321), /*                 botintegral ⌡ BOTTOM HALF INTEGRAL */
+    new codepair(0x08a6, 0x2502), /*               vertconnector │ BOX DRAWINGS LIGHT VERTICAL */
+    new codepair(0x08a7, 0x23a1), /*            topleftsqbracket ⎡ ??? */
+    new codepair(0x08a8, 0x23a3), /*            botleftsqbracket ⎣ ??? */
+    new codepair(0x08a9, 0x23a4), /*           toprightsqbracket ⎤ ??? */
+    new codepair(0x08aa, 0x23a6), /*           botrightsqbracket ⎦ ??? */
+    new codepair(0x08ab, 0x239b), /*               topleftparens ⎛ ??? */
+    new codepair(0x08ac, 0x239d), /*               botleftparens ⎝ ??? */
+    new codepair(0x08ad, 0x239e), /*              toprightparens ⎞ ??? */
+    new codepair(0x08ae, 0x23a0), /*              botrightparens ⎠ ??? */
+    new codepair(0x08af, 0x23a8), /*        leftmiddlecurlybrace ⎨ ??? */
+    new codepair(0x08b0, 0x23ac), /*       rightmiddlecurlybrace ⎬ ??? */
+  /*  0x08b1                          topleftsummation ? ??? */
+  /*  0x08b2                          botleftsummation ? ??? */
+  /*  0x08b3                 topvertsummationconnector ? ??? */
+  /*  0x08b4                 botvertsummationconnector ? ??? */
+  /*  0x08b5                         toprightsummation ? ??? */
+  /*  0x08b6                         botrightsummation ? ??? */
+  /*  0x08b7                      rightmiddlesummation ? ??? */
+    new codepair(0x08bc, 0x2264), /*               lessthanequal ≤ LESS-THAN OR EQUAL TO */
+    new codepair(0x08bd, 0x2260), /*                    notequal ≠ NOT EQUAL TO */
+    new codepair(0x08be, 0x2265), /*            greaterthanequal ≥ GREATER-THAN OR EQUAL TO */
+    new codepair(0x08bf, 0x222b), /*                    integral ∫ INTEGRAL */
+    new codepair(0x08c0, 0x2234), /*                   therefore ∴ THEREFORE */
+    new codepair(0x08c1, 0x221d), /*                   variation ∝ PROPORTIONAL TO */
+    new codepair(0x08c2, 0x221e), /*                    infinity ∞ INFINITY */
+    new codepair(0x08c5, 0x2207), /*                       nabla ∇ NABLA */
+    new codepair(0x08c8, 0x223c), /*                 approximate ∼ TILDE OPERATOR */
+    new codepair(0x08c9, 0x2243), /*                similarequal ≃ ASYMPTOTICALLY EQUAL TO */
+    new codepair(0x08cd, 0x21d4), /*                    ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */
+    new codepair(0x08ce, 0x21d2), /*                     implies ⇒ RIGHTWARDS DOUBLE ARROW */
+    new codepair(0x08cf, 0x2261), /*                   identical ≡ IDENTICAL TO */
+    new codepair(0x08d6, 0x221a), /*                     radical √ SQUARE ROOT */
+    new codepair(0x08da, 0x2282), /*                  includedin ⊂ SUBSET OF */
+    new codepair(0x08db, 0x2283), /*                    includes ⊃ SUPERSET OF */
+    new codepair(0x08dc, 0x2229), /*                intersection ∩ INTERSECTION */
+    new codepair(0x08dd, 0x222a), /*                       union ∪ UNION */
+    new codepair(0x08de, 0x2227), /*                  logicaland ∧ LOGICAL AND */
+    new codepair(0x08df, 0x2228), /*                   logicalor ∨ LOGICAL OR */
+    new codepair(0x08ef, 0x2202), /*           partialderivative ∂ PARTIAL DIFFERENTIAL */
+    new codepair(0x08f6, 0x0192), /*                    function ƒ LATIN SMALL LETTER F WITH HOOK */
+    new codepair(0x08fb, 0x2190), /*                   leftarrow ← LEFTWARDS ARROW */
+    new codepair(0x08fc, 0x2191), /*                     uparrow ↑ UPWARDS ARROW */
+    new codepair(0x08fd, 0x2192), /*                  rightarrow → RIGHTWARDS ARROW */
+    new codepair(0x08fe, 0x2193), /*                   downarrow ↓ DOWNWARDS ARROW */
+  /*  0x09df                                     blank ? ??? */
+    new codepair(0x09e0, 0x25c6), /*                soliddiamond ◆ BLACK DIAMOND */
+    new codepair(0x09e1, 0x2592), /*                checkerboard ▒ MEDIUM SHADE */
+    new codepair(0x09e2, 0x2409), /*                          ht ␉ SYMBOL FOR HORIZONTAL TABULATION */
+    new codepair(0x09e3, 0x240c), /*                          ff ␌ SYMBOL FOR FORM FEED */
+    new codepair(0x09e4, 0x240d), /*                          cr ␍ SYMBOL FOR CARRIAGE RETURN */
+    new codepair(0x09e5, 0x240a), /*                          lf ␊ SYMBOL FOR LINE FEED */
+    new codepair(0x09e8, 0x2424), /*                          nl ␤ SYMBOL FOR NEWLINE */
+    new codepair(0x09e9, 0x240b), /*                          vt ␋ SYMBOL FOR VERTICAL TABULATION */
+    new codepair(0x09ea, 0x2518), /*              lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */
+    new codepair(0x09eb, 0x2510), /*               uprightcorner ┐ BOX DRAWINGS LIGHT DOWN AND LEFT */
+    new codepair(0x09ec, 0x250c), /*                upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
+    new codepair(0x09ed, 0x2514), /*               lowleftcorner └ BOX DRAWINGS LIGHT UP AND RIGHT */
+    new codepair(0x09ee, 0x253c), /*               crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
+    new codepair(0x09ef, 0x23ba), /*              horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */
+    new codepair(0x09f0, 0x23bb), /*              horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */
+    new codepair(0x09f1, 0x2500), /*              horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */
+    new codepair(0x09f2, 0x23bc), /*              horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */
+    new codepair(0x09f3, 0x23bd), /*              horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */
+    new codepair(0x09f4, 0x251c), /*                       leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
+    new codepair(0x09f5, 0x2524), /*                      rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
+    new codepair(0x09f6, 0x2534), /*                        bott ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
+    new codepair(0x09f7, 0x252c), /*                        topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
+    new codepair(0x09f8, 0x2502), /*                     vertbar │ BOX DRAWINGS LIGHT VERTICAL */
+    new codepair(0x0aa1, 0x2003), /*                     emspace   EM SPACE */
+    new codepair(0x0aa2, 0x2002), /*                     enspace   EN SPACE */
+    new codepair(0x0aa3, 0x2004), /*                    em3space   THREE-PER-EM SPACE */
+    new codepair(0x0aa4, 0x2005), /*                    em4space   FOUR-PER-EM SPACE */
+    new codepair(0x0aa5, 0x2007), /*                  digitspace   FIGURE SPACE */
+    new codepair(0x0aa6, 0x2008), /*                  punctspace   PUNCTUATION SPACE */
+    new codepair(0x0aa7, 0x2009), /*                   thinspace   THIN SPACE */
+    new codepair(0x0aa8, 0x200a), /*                   hairspace   HAIR SPACE */
+    new codepair(0x0aa9, 0x2014), /*                      emdash — EM DASH */
+    new codepair(0x0aaa, 0x2013), /*                      endash – EN DASH */
+  /*  0x0aac                               signifblank ? ??? */
+    new codepair(0x0aae, 0x2026), /*                    ellipsis … HORIZONTAL ELLIPSIS */
+    new codepair(0x0aaf, 0x2025), /*             doubbaselinedot ‥ TWO DOT LEADER */
+    new codepair(0x0ab0, 0x2153), /*                    onethird ⅓ VULGAR FRACTION ONE THIRD */
+    new codepair(0x0ab1, 0x2154), /*                   twothirds ⅔ VULGAR FRACTION TWO THIRDS */
+    new codepair(0x0ab2, 0x2155), /*                    onefifth ⅕ VULGAR FRACTION ONE FIFTH */
+    new codepair(0x0ab3, 0x2156), /*                   twofifths ⅖ VULGAR FRACTION TWO FIFTHS */
+    new codepair(0x0ab4, 0x2157), /*                 threefifths ⅗ VULGAR FRACTION THREE FIFTHS */
+    new codepair(0x0ab5, 0x2158), /*                  fourfifths ⅘ VULGAR FRACTION FOUR FIFTHS */
+    new codepair(0x0ab6, 0x2159), /*                    onesixth ⅙ VULGAR FRACTION ONE SIXTH */
+    new codepair(0x0ab7, 0x215a), /*                  fivesixths ⅚ VULGAR FRACTION FIVE SIXTHS */
+    new codepair(0x0ab8, 0x2105), /*                      careof ℅ CARE OF */
+    new codepair(0x0abb, 0x2012), /*                     figdash ‒ FIGURE DASH */
+    new codepair(0x0abc, 0x2329), /*            leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */
+  /*  0x0abd                              decimalpoint ? ??? */
+    new codepair(0x0abe, 0x232a), /*           rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */
+  /*  0x0abf                                    marker ? ??? */
+    new codepair(0x0ac3, 0x215b), /*                   oneeighth ⅛ VULGAR FRACTION ONE EIGHTH */
+    new codepair(0x0ac4, 0x215c), /*                threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */
+    new codepair(0x0ac5, 0x215d), /*                 fiveeighths ⅝ VULGAR FRACTION FIVE EIGHTHS */
+    new codepair(0x0ac6, 0x215e), /*                seveneighths ⅞ VULGAR FRACTION SEVEN EIGHTHS */
+    new codepair(0x0ac9, 0x2122), /*                   trademark ™ TRADE MARK SIGN */
+    new codepair(0x0aca, 0x2613), /*               signaturemark ☓ SALTIRE */
+  /*  0x0acb                         trademarkincircle ? ??? */
+    new codepair(0x0acc, 0x25c1), /*            leftopentriangle ◁ WHITE LEFT-POINTING TRIANGLE */
+    new codepair(0x0acd, 0x25b7), /*           rightopentriangle ▷ WHITE RIGHT-POINTING TRIANGLE */
+    new codepair(0x0ace, 0x25cb), /*                emopencircle ○ WHITE CIRCLE */
+    new codepair(0x0acf, 0x25af), /*             emopenrectangle ▯ WHITE VERTICAL RECTANGLE */
+    new codepair(0x0ad0, 0x2018), /*         leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */
+    new codepair(0x0ad1, 0x2019), /*        rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */
+    new codepair(0x0ad2, 0x201c), /*         leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */
+    new codepair(0x0ad3, 0x201d), /*        rightdoublequotemark ” RIGHT DOUBLE QUOTATION MARK */
+    new codepair(0x0ad4, 0x211e), /*                prescription ℞ PRESCRIPTION TAKE */
+    new codepair(0x0ad6, 0x2032), /*                     minutes ′ PRIME */
+    new codepair(0x0ad7, 0x2033), /*                     seconds ″ DOUBLE PRIME */
+    new codepair(0x0ad9, 0x271d), /*                  latincross ✝ LATIN CROSS */
+  /*  0x0ada                                  hexagram ? ??? */
+    new codepair(0x0adb, 0x25ac), /*            filledrectbullet ▬ BLACK RECTANGLE */
+    new codepair(0x0adc, 0x25c0), /*         filledlefttribullet ◀ BLACK LEFT-POINTING TRIANGLE */
+    new codepair(0x0add, 0x25b6), /*        filledrighttribullet ▶ BLACK RIGHT-POINTING TRIANGLE */
+    new codepair(0x0ade, 0x25cf), /*              emfilledcircle ● BLACK CIRCLE */
+    new codepair(0x0adf, 0x25ae), /*                emfilledrect ▮ BLACK VERTICAL RECTANGLE */
+    new codepair(0x0ae0, 0x25e6), /*            enopencircbullet ◦ WHITE BULLET */
+    new codepair(0x0ae1, 0x25ab), /*          enopensquarebullet ▫ WHITE SMALL SQUARE */
+    new codepair(0x0ae2, 0x25ad), /*              openrectbullet ▭ WHITE RECTANGLE */
+    new codepair(0x0ae3, 0x25b3), /*             opentribulletup △ WHITE UP-POINTING TRIANGLE */
+    new codepair(0x0ae4, 0x25bd), /*           opentribulletdown ▽ WHITE DOWN-POINTING TRIANGLE */
+    new codepair(0x0ae5, 0x2606), /*                    openstar ☆ WHITE STAR */
+    new codepair(0x0ae6, 0x2022), /*          enfilledcircbullet • BULLET */
+    new codepair(0x0ae7, 0x25aa), /*            enfilledsqbullet ▪ BLACK SMALL SQUARE */
+    new codepair(0x0ae8, 0x25b2), /*           filledtribulletup ▲ BLACK UP-POINTING TRIANGLE */
+    new codepair(0x0ae9, 0x25bc), /*         filledtribulletdown ▼ BLACK DOWN-POINTING TRIANGLE */
+    new codepair(0x0aea, 0x261c), /*                 leftpointer ☜ WHITE LEFT POINTING INDEX */
+    new codepair(0x0aeb, 0x261e), /*                rightpointer ☞ WHITE RIGHT POINTING INDEX */
+    new codepair(0x0aec, 0x2663), /*                        club ♣ BLACK CLUB SUIT */
+    new codepair(0x0aed, 0x2666), /*                     diamond ♦ BLACK DIAMOND SUIT */
+    new codepair(0x0aee, 0x2665), /*                       heart ♥ BLACK HEART SUIT */
+    new codepair(0x0af0, 0x2720), /*                maltesecross ✠ MALTESE CROSS */
+    new codepair(0x0af1, 0x2020), /*                      dagger † DAGGER */
+    new codepair(0x0af2, 0x2021), /*                doubledagger ‡ DOUBLE DAGGER */
+    new codepair(0x0af3, 0x2713), /*                   checkmark ✓ CHECK MARK */
+    new codepair(0x0af4, 0x2717), /*                 ballotcross ✗ BALLOT X */
+    new codepair(0x0af5, 0x266f), /*                musicalsharp ♯ MUSIC SHARP SIGN */
+    new codepair(0x0af6, 0x266d), /*                 musicalflat ♭ MUSIC FLAT SIGN */
+    new codepair(0x0af7, 0x2642), /*                  malesymbol ♂ MALE SIGN */
+    new codepair(0x0af8, 0x2640), /*                femalesymbol ♀ FEMALE SIGN */
+    new codepair(0x0af9, 0x260e), /*                   telephone ☎ BLACK TELEPHONE */
+    new codepair(0x0afa, 0x2315), /*           telephonerecorder ⌕ TELEPHONE RECORDER */
+    new codepair(0x0afb, 0x2117), /*         phonographcopyright ℗ SOUND RECORDING COPYRIGHT */
+    new codepair(0x0afc, 0x2038), /*                       caret ‸ CARET */
+    new codepair(0x0afd, 0x201a), /*          singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */
+    new codepair(0x0afe, 0x201e), /*          doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */
+  /*  0x0aff                                    cursor ? ??? */
+    new codepair(0x0ba3, 0x003c), /*                   leftcaret < LESS-THAN SIGN */
+    new codepair(0x0ba6, 0x003e), /*                  rightcaret > GREATER-THAN SIGN */
+    new codepair(0x0ba8, 0x2228), /*                   downcaret ∨ LOGICAL OR */
+    new codepair(0x0ba9, 0x2227), /*                     upcaret ∧ LOGICAL AND */
+    new codepair(0x0bc0, 0x00af), /*                     overbar ¯ MACRON */
+    new codepair(0x0bc2, 0x22a5), /*                    downtack ⊥ UP TACK */
+    new codepair(0x0bc3, 0x2229), /*                      upshoe ∩ INTERSECTION */
+    new codepair(0x0bc4, 0x230a), /*                   downstile ⌊ LEFT FLOOR */
+    new codepair(0x0bc6, 0x005f), /*                    underbar _ LOW LINE */
+    new codepair(0x0bca, 0x2218), /*                         jot ∘ RING OPERATOR */
+    new codepair(0x0bcc, 0x2395), /*                        quad ⎕ APL FUNCTIONAL SYMBOL QUAD */
+    new codepair(0x0bce, 0x22a4), /*                      uptack ⊤ DOWN TACK */
+    new codepair(0x0bcf, 0x25cb), /*                      circle ○ WHITE CIRCLE */
+    new codepair(0x0bd3, 0x2308), /*                     upstile ⌈ LEFT CEILING */
+    new codepair(0x0bd6, 0x222a), /*                    downshoe ∪ UNION */
+    new codepair(0x0bd8, 0x2283), /*                   rightshoe ⊃ SUPERSET OF */
+    new codepair(0x0bda, 0x2282), /*                    leftshoe ⊂ SUBSET OF */
+    new codepair(0x0bdc, 0x22a2), /*                    lefttack ⊢ RIGHT TACK */
+    new codepair(0x0bfc, 0x22a3), /*                   righttack ⊣ LEFT TACK */
+    new codepair(0x0cdf, 0x2017), /*        hebrew_doublelowline ‗ DOUBLE LOW LINE */
+    new codepair(0x0ce0, 0x05d0), /*                hebrew_aleph א HEBREW LETTER ALEF */
+    new codepair(0x0ce1, 0x05d1), /*                  hebrew_bet ב HEBREW LETTER BET */
+    new codepair(0x0ce2, 0x05d2), /*                hebrew_gimel ג HEBREW LETTER GIMEL */
+    new codepair(0x0ce3, 0x05d3), /*                hebrew_dalet ד HEBREW LETTER DALET */
+    new codepair(0x0ce4, 0x05d4), /*                   hebrew_he ה HEBREW LETTER HE */
+    new codepair(0x0ce5, 0x05d5), /*                  hebrew_waw ו HEBREW LETTER VAV */
+    new codepair(0x0ce6, 0x05d6), /*                 hebrew_zain ז HEBREW LETTER ZAYIN */
+    new codepair(0x0ce7, 0x05d7), /*                 hebrew_chet ח HEBREW LETTER HET */
+    new codepair(0x0ce8, 0x05d8), /*                  hebrew_tet ט HEBREW LETTER TET */
+    new codepair(0x0ce9, 0x05d9), /*                  hebrew_yod י HEBREW LETTER YOD */
+    new codepair(0x0cea, 0x05da), /*            hebrew_finalkaph ך HEBREW LETTER FINAL KAF */
+    new codepair(0x0ceb, 0x05db), /*                 hebrew_kaph כ HEBREW LETTER KAF */
+    new codepair(0x0cec, 0x05dc), /*                hebrew_lamed ל HEBREW LETTER LAMED */
+    new codepair(0x0ced, 0x05dd), /*             hebrew_finalmem ם HEBREW LETTER FINAL MEM */
+    new codepair(0x0cee, 0x05de), /*                  hebrew_mem מ HEBREW LETTER MEM */
+    new codepair(0x0cef, 0x05df), /*             hebrew_finalnun ן HEBREW LETTER FINAL NUN */
+    new codepair(0x0cf0, 0x05e0), /*                  hebrew_nun נ HEBREW LETTER NUN */
+    new codepair(0x0cf1, 0x05e1), /*               hebrew_samech ס HEBREW LETTER SAMEKH */
+    new codepair(0x0cf2, 0x05e2), /*                 hebrew_ayin ע HEBREW LETTER AYIN */
+    new codepair(0x0cf3, 0x05e3), /*              hebrew_finalpe ף HEBREW LETTER FINAL PE */
+    new codepair(0x0cf4, 0x05e4), /*                   hebrew_pe פ HEBREW LETTER PE */
+    new codepair(0x0cf5, 0x05e5), /*            hebrew_finalzade ץ HEBREW LETTER FINAL TSADI */
+    new codepair(0x0cf6, 0x05e6), /*                 hebrew_zade צ HEBREW LETTER TSADI */
+    new codepair(0x0cf7, 0x05e7), /*                 hebrew_qoph ק HEBREW LETTER QOF */
+    new codepair(0x0cf8, 0x05e8), /*                 hebrew_resh ר HEBREW LETTER RESH */
+    new codepair(0x0cf9, 0x05e9), /*                 hebrew_shin ש HEBREW LETTER SHIN */
+    new codepair(0x0cfa, 0x05ea), /*                  hebrew_taw ת HEBREW LETTER TAV */
+    new codepair(0x0da1, 0x0e01), /*                  Thai_kokai ก THAI CHARACTER KO KAI */
+    new codepair(0x0da2, 0x0e02), /*                Thai_khokhai ข THAI CHARACTER KHO KHAI */
+    new codepair(0x0da3, 0x0e03), /*               Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */
+    new codepair(0x0da4, 0x0e04), /*               Thai_khokhwai ค THAI CHARACTER KHO KHWAI */
+    new codepair(0x0da5, 0x0e05), /*                Thai_khokhon ฅ THAI CHARACTER KHO KHON */
+    new codepair(0x0da6, 0x0e06), /*             Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */
+    new codepair(0x0da7, 0x0e07), /*                 Thai_ngongu ง THAI CHARACTER NGO NGU */
+    new codepair(0x0da8, 0x0e08), /*                Thai_chochan จ THAI CHARACTER CHO CHAN */
+    new codepair(0x0da9, 0x0e09), /*               Thai_choching ฉ THAI CHARACTER CHO CHING */
+    new codepair(0x0daa, 0x0e0a), /*               Thai_chochang ช THAI CHARACTER CHO CHANG */
+    new codepair(0x0dab, 0x0e0b), /*                   Thai_soso ซ THAI CHARACTER SO SO */
+    new codepair(0x0dac, 0x0e0c), /*                Thai_chochoe ฌ THAI CHARACTER CHO CHOE */
+    new codepair(0x0dad, 0x0e0d), /*                 Thai_yoying ญ THAI CHARACTER YO YING */
+    new codepair(0x0dae, 0x0e0e), /*                Thai_dochada ฎ THAI CHARACTER DO CHADA */
+    new codepair(0x0daf, 0x0e0f), /*                Thai_topatak ฏ THAI CHARACTER TO PATAK */
+    new codepair(0x0db0, 0x0e10), /*                Thai_thothan ฐ THAI CHARACTER THO THAN */
+    new codepair(0x0db1, 0x0e11), /*          Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */
+    new codepair(0x0db2, 0x0e12), /*             Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */
+    new codepair(0x0db3, 0x0e13), /*                  Thai_nonen ณ THAI CHARACTER NO NEN */
+    new codepair(0x0db4, 0x0e14), /*                  Thai_dodek ด THAI CHARACTER DO DEK */
+    new codepair(0x0db5, 0x0e15), /*                  Thai_totao ต THAI CHARACTER TO TAO */
+    new codepair(0x0db6, 0x0e16), /*               Thai_thothung ถ THAI CHARACTER THO THUNG */
+    new codepair(0x0db7, 0x0e17), /*              Thai_thothahan ท THAI CHARACTER THO THAHAN */
+    new codepair(0x0db8, 0x0e18), /*               Thai_thothong ธ THAI CHARACTER THO THONG */
+    new codepair(0x0db9, 0x0e19), /*                   Thai_nonu น THAI CHARACTER NO NU */
+    new codepair(0x0dba, 0x0e1a), /*               Thai_bobaimai บ THAI CHARACTER BO BAIMAI */
+    new codepair(0x0dbb, 0x0e1b), /*                  Thai_popla ป THAI CHARACTER PO PLA */
+    new codepair(0x0dbc, 0x0e1c), /*               Thai_phophung ผ THAI CHARACTER PHO PHUNG */
+    new codepair(0x0dbd, 0x0e1d), /*                   Thai_fofa ฝ THAI CHARACTER FO FA */
+    new codepair(0x0dbe, 0x0e1e), /*                Thai_phophan พ THAI CHARACTER PHO PHAN */
+    new codepair(0x0dbf, 0x0e1f), /*                  Thai_fofan ฟ THAI CHARACTER FO FAN */
+    new codepair(0x0dc0, 0x0e20), /*             Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */
+    new codepair(0x0dc1, 0x0e21), /*                   Thai_moma ม THAI CHARACTER MO MA */
+    new codepair(0x0dc2, 0x0e22), /*                  Thai_yoyak ย THAI CHARACTER YO YAK */
+    new codepair(0x0dc3, 0x0e23), /*                  Thai_rorua ร THAI CHARACTER RO RUA */
+    new codepair(0x0dc4, 0x0e24), /*                     Thai_ru ฤ THAI CHARACTER RU */
+    new codepair(0x0dc5, 0x0e25), /*                 Thai_loling ล THAI CHARACTER LO LING */
+    new codepair(0x0dc6, 0x0e26), /*                     Thai_lu ฦ THAI CHARACTER LU */
+    new codepair(0x0dc7, 0x0e27), /*                 Thai_wowaen ว THAI CHARACTER WO WAEN */
+    new codepair(0x0dc8, 0x0e28), /*                 Thai_sosala ศ THAI CHARACTER SO SALA */
+    new codepair(0x0dc9, 0x0e29), /*                 Thai_sorusi ษ THAI CHARACTER SO RUSI */
+    new codepair(0x0dca, 0x0e2a), /*                  Thai_sosua ส THAI CHARACTER SO SUA */
+    new codepair(0x0dcb, 0x0e2b), /*                  Thai_hohip ห THAI CHARACTER HO HIP */
+    new codepair(0x0dcc, 0x0e2c), /*                Thai_lochula ฬ THAI CHARACTER LO CHULA */
+    new codepair(0x0dcd, 0x0e2d), /*                   Thai_oang อ THAI CHARACTER O ANG */
+    new codepair(0x0dce, 0x0e2e), /*               Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */
+    new codepair(0x0dcf, 0x0e2f), /*              Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */
+    new codepair(0x0dd0, 0x0e30), /*                  Thai_saraa ะ THAI CHARACTER SARA A */
+    new codepair(0x0dd1, 0x0e31), /*             Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */
+    new codepair(0x0dd2, 0x0e32), /*                 Thai_saraaa า THAI CHARACTER SARA AA */
+    new codepair(0x0dd3, 0x0e33), /*                 Thai_saraam ำ THAI CHARACTER SARA AM */
+    new codepair(0x0dd4, 0x0e34), /*                  Thai_sarai ิ THAI CHARACTER SARA I */
+    new codepair(0x0dd5, 0x0e35), /*                 Thai_saraii ี THAI CHARACTER SARA II */
+    new codepair(0x0dd6, 0x0e36), /*                 Thai_saraue ึ THAI CHARACTER SARA UE */
+    new codepair(0x0dd7, 0x0e37), /*                Thai_sarauee ื THAI CHARACTER SARA UEE */
+    new codepair(0x0dd8, 0x0e38), /*                  Thai_sarau ุ THAI CHARACTER SARA U */
+    new codepair(0x0dd9, 0x0e39), /*                 Thai_sarauu ู THAI CHARACTER SARA UU */
+    new codepair(0x0dda, 0x0e3a), /*                Thai_phinthu ฺ THAI CHARACTER PHINTHU */
+  /*  0x0dde                    Thai_maihanakat_maitho ? ??? */
+    new codepair(0x0ddf, 0x0e3f), /*                   Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */
+    new codepair(0x0de0, 0x0e40), /*                  Thai_sarae เ THAI CHARACTER SARA E */
+    new codepair(0x0de1, 0x0e41), /*                 Thai_saraae แ THAI CHARACTER SARA AE */
+    new codepair(0x0de2, 0x0e42), /*                  Thai_sarao โ THAI CHARACTER SARA O */
+    new codepair(0x0de3, 0x0e43), /*          Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */
+    new codepair(0x0de4, 0x0e44), /*         Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */
+    new codepair(0x0de5, 0x0e45), /*            Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */
+    new codepair(0x0de6, 0x0e46), /*               Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */
+    new codepair(0x0de7, 0x0e47), /*              Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */
+    new codepair(0x0de8, 0x0e48), /*                  Thai_maiek ่ THAI CHARACTER MAI EK */
+    new codepair(0x0de9, 0x0e49), /*                 Thai_maitho ้ THAI CHARACTER MAI THO */
+    new codepair(0x0dea, 0x0e4a), /*                 Thai_maitri ๊ THAI CHARACTER MAI TRI */
+    new codepair(0x0deb, 0x0e4b), /*            Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */
+    new codepair(0x0dec, 0x0e4c), /*            Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */
+    new codepair(0x0ded, 0x0e4d), /*               Thai_nikhahit ํ THAI CHARACTER NIKHAHIT */
+    new codepair(0x0df0, 0x0e50), /*                 Thai_leksun ๐ THAI DIGIT ZERO */
+    new codepair(0x0df1, 0x0e51), /*                Thai_leknung ๑ THAI DIGIT ONE */
+    new codepair(0x0df2, 0x0e52), /*                Thai_leksong ๒ THAI DIGIT TWO */
+    new codepair(0x0df3, 0x0e53), /*                 Thai_leksam ๓ THAI DIGIT THREE */
+    new codepair(0x0df4, 0x0e54), /*                  Thai_leksi ๔ THAI DIGIT FOUR */
+    new codepair(0x0df5, 0x0e55), /*                  Thai_lekha ๕ THAI DIGIT FIVE */
+    new codepair(0x0df6, 0x0e56), /*                 Thai_lekhok ๖ THAI DIGIT SIX */
+    new codepair(0x0df7, 0x0e57), /*                Thai_lekchet ๗ THAI DIGIT SEVEN */
+    new codepair(0x0df8, 0x0e58), /*                Thai_lekpaet ๘ THAI DIGIT EIGHT */
+    new codepair(0x0df9, 0x0e59), /*                 Thai_lekkao ๙ THAI DIGIT NINE */
+    new codepair(0x0ea1, 0x3131), /*               Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */
+    new codepair(0x0ea2, 0x3132), /*          Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */
+    new codepair(0x0ea3, 0x3133), /*           Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */
+    new codepair(0x0ea4, 0x3134), /*                Hangul_Nieun ㄴ HANGUL LETTER NIEUN */
+    new codepair(0x0ea5, 0x3135), /*           Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */
+    new codepair(0x0ea6, 0x3136), /*           Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */
+    new codepair(0x0ea7, 0x3137), /*               Hangul_Dikeud ㄷ HANGUL LETTER TIKEUT */
+    new codepair(0x0ea8, 0x3138), /*          Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */
+    new codepair(0x0ea9, 0x3139), /*                Hangul_Rieul ㄹ HANGUL LETTER RIEUL */
+    new codepair(0x0eaa, 0x313a), /*          Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */
+    new codepair(0x0eab, 0x313b), /*           Hangul_RieulMieum ㄻ HANGUL LETTER RIEUL-MIEUM */
+    new codepair(0x0eac, 0x313c), /*           Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */
+    new codepair(0x0ead, 0x313d), /*            Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */
+    new codepair(0x0eae, 0x313e), /*           Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */
+    new codepair(0x0eaf, 0x313f), /*          Hangul_RieulPhieuf ㄿ HANGUL LETTER RIEUL-PHIEUPH */
+    new codepair(0x0eb0, 0x3140), /*           Hangul_RieulHieuh ㅀ HANGUL LETTER RIEUL-HIEUH */
+    new codepair(0x0eb1, 0x3141), /*                Hangul_Mieum ㅁ HANGUL LETTER MIEUM */
+    new codepair(0x0eb2, 0x3142), /*                Hangul_Pieub ㅂ HANGUL LETTER PIEUP */
+    new codepair(0x0eb3, 0x3143), /*           Hangul_SsangPieub ㅃ HANGUL LETTER SSANGPIEUP */
+    new codepair(0x0eb4, 0x3144), /*            Hangul_PieubSios ㅄ HANGUL LETTER PIEUP-SIOS */
+    new codepair(0x0eb5, 0x3145), /*                 Hangul_Sios ㅅ HANGUL LETTER SIOS */
+    new codepair(0x0eb6, 0x3146), /*            Hangul_SsangSios ㅆ HANGUL LETTER SSANGSIOS */
+    new codepair(0x0eb7, 0x3147), /*                Hangul_Ieung ㅇ HANGUL LETTER IEUNG */
+    new codepair(0x0eb8, 0x3148), /*                Hangul_Jieuj ㅈ HANGUL LETTER CIEUC */
+    new codepair(0x0eb9, 0x3149), /*           Hangul_SsangJieuj ㅉ HANGUL LETTER SSANGCIEUC */
+    new codepair(0x0eba, 0x314a), /*                Hangul_Cieuc ㅊ HANGUL LETTER CHIEUCH */
+    new codepair(0x0ebb, 0x314b), /*               Hangul_Khieuq ㅋ HANGUL LETTER KHIEUKH */
+    new codepair(0x0ebc, 0x314c), /*                Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */
+    new codepair(0x0ebd, 0x314d), /*               Hangul_Phieuf ㅍ HANGUL LETTER PHIEUPH */
+    new codepair(0x0ebe, 0x314e), /*                Hangul_Hieuh ㅎ HANGUL LETTER HIEUH */
+    new codepair(0x0ebf, 0x314f), /*                    Hangul_A ㅏ HANGUL LETTER A */
+    new codepair(0x0ec0, 0x3150), /*                   Hangul_AE ㅐ HANGUL LETTER AE */
+    new codepair(0x0ec1, 0x3151), /*                   Hangul_YA ㅑ HANGUL LETTER YA */
+    new codepair(0x0ec2, 0x3152), /*                  Hangul_YAE ㅒ HANGUL LETTER YAE */
+    new codepair(0x0ec3, 0x3153), /*                   Hangul_EO ㅓ HANGUL LETTER EO */
+    new codepair(0x0ec4, 0x3154), /*                    Hangul_E ㅔ HANGUL LETTER E */
+    new codepair(0x0ec5, 0x3155), /*                  Hangul_YEO ㅕ HANGUL LETTER YEO */
+    new codepair(0x0ec6, 0x3156), /*                   Hangul_YE ㅖ HANGUL LETTER YE */
+    new codepair(0x0ec7, 0x3157), /*                    Hangul_O ㅗ HANGUL LETTER O */
+    new codepair(0x0ec8, 0x3158), /*                   Hangul_WA ㅘ HANGUL LETTER WA */
+    new codepair(0x0ec9, 0x3159), /*                  Hangul_WAE ㅙ HANGUL LETTER WAE */
+    new codepair(0x0eca, 0x315a), /*                   Hangul_OE ㅚ HANGUL LETTER OE */
+    new codepair(0x0ecb, 0x315b), /*                   Hangul_YO ㅛ HANGUL LETTER YO */
+    new codepair(0x0ecc, 0x315c), /*                    Hangul_U ㅜ HANGUL LETTER U */
+    new codepair(0x0ecd, 0x315d), /*                  Hangul_WEO ㅝ HANGUL LETTER WEO */
+    new codepair(0x0ece, 0x315e), /*                   Hangul_WE ㅞ HANGUL LETTER WE */
+    new codepair(0x0ecf, 0x315f), /*                   Hangul_WI ㅟ HANGUL LETTER WI */
+    new codepair(0x0ed0, 0x3160), /*                   Hangul_YU ㅠ HANGUL LETTER YU */
+    new codepair(0x0ed1, 0x3161), /*                   Hangul_EU ㅡ HANGUL LETTER EU */
+    new codepair(0x0ed2, 0x3162), /*                   Hangul_YI ㅢ HANGUL LETTER YI */
+    new codepair(0x0ed3, 0x3163), /*                    Hangul_I ㅣ HANGUL LETTER I */
+    new codepair(0x0ed4, 0x11a8), /*             Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */
+    new codepair(0x0ed5, 0x11a9), /*        Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */
+    new codepair(0x0ed6, 0x11aa), /*         Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */
+    new codepair(0x0ed7, 0x11ab), /*              Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */
+    new codepair(0x0ed8, 0x11ac), /*         Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */
+    new codepair(0x0ed9, 0x11ad), /*         Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */
+    new codepair(0x0eda, 0x11ae), /*             Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */
+    new codepair(0x0edb, 0x11af), /*              Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */
+    new codepair(0x0edc, 0x11b0), /*        Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */
+    new codepair(0x0edd, 0x11b1), /*         Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */
+    new codepair(0x0ede, 0x11b2), /*         Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */
+    new codepair(0x0edf, 0x11b3), /*          Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */
+    new codepair(0x0ee0, 0x11b4), /*         Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */
+    new codepair(0x0ee1, 0x11b5), /*        Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */
+    new codepair(0x0ee2, 0x11b6), /*         Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */
+    new codepair(0x0ee3, 0x11b7), /*              Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */
+    new codepair(0x0ee4, 0x11b8), /*              Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */
+    new codepair(0x0ee5, 0x11b9), /*          Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */
+    new codepair(0x0ee6, 0x11ba), /*               Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */
+    new codepair(0x0ee7, 0x11bb), /*          Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */
+    new codepair(0x0ee8, 0x11bc), /*              Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */
+    new codepair(0x0ee9, 0x11bd), /*              Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */
+    new codepair(0x0eea, 0x11be), /*              Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */
+    new codepair(0x0eeb, 0x11bf), /*             Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */
+    new codepair(0x0eec, 0x11c0), /*              Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */
+    new codepair(0x0eed, 0x11c1), /*             Hangul_J_Phieuf ᇁ HANGUL JONGSEONG PHIEUPH */
+    new codepair(0x0eee, 0x11c2), /*              Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */
+    new codepair(0x0eef, 0x316d), /*     Hangul_RieulYeorinHieuh ㅭ HANGUL LETTER RIEUL-YEORINHIEUH */
+    new codepair(0x0ef0, 0x3171), /*    Hangul_SunkyeongeumMieum ㅱ HANGUL LETTER KAPYEOUNMIEUM */
+    new codepair(0x0ef1, 0x3178), /*    Hangul_SunkyeongeumPieub ㅸ HANGUL LETTER KAPYEOUNPIEUP */
+    new codepair(0x0ef2, 0x317f), /*              Hangul_PanSios ㅿ HANGUL LETTER PANSIOS */
+    new codepair(0x0ef3, 0x3181), /*    Hangul_KkogjiDalrinIeung ㆁ HANGUL LETTER YESIEUNG */
+    new codepair(0x0ef4, 0x3184), /*   Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */
+    new codepair(0x0ef5, 0x3186), /*          Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */
+    new codepair(0x0ef6, 0x318d), /*                Hangul_AraeA ㆍ HANGUL LETTER ARAEA */
+    new codepair(0x0ef7, 0x318e), /*               Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */
+    new codepair(0x0ef8, 0x11eb), /*            Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */
+    new codepair(0x0ef9, 0x11f0), /*  Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */
+    new codepair(0x0efa, 0x11f9), /*        Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
+    new codepair(0x0eff, 0x20a9), /*                  Korean_Won ₩ WON SIGN */
+    new codepair(0x13bc, 0x0152), /*                          OE Œ LATIN CAPITAL LIGATURE OE */
+    new codepair(0x13bd, 0x0153), /*                          oe œ LATIN SMALL LIGATURE OE */
+    new codepair(0x13be, 0x0178), /*                  Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
+    new codepair(0x20ac, 0x20ac), /*                    EuroSign € EURO SIGN */
+    new codepair(0xfe50, 0x0300), /*                               COMBINING GRAVE ACCENT */
+    new codepair(0xfe51, 0x0301), /*                               COMBINING ACUTE ACCENT */
+    new codepair(0xfe52, 0x0302), /*                               COMBINING CIRCUMFLEX ACCENT */
+    new codepair(0xfe53, 0x0303), /*                               COMBINING TILDE */
+    new codepair(0xfe54, 0x0304), /*                               COMBINING MACRON */
+    new codepair(0xfe55, 0x0306), /*                               COMBINING BREVE */
+    new codepair(0xfe56, 0x0307), /*                               COMBINING DOT ABOVE */
+    new codepair(0xfe57, 0x0308), /*                               COMBINING DIAERESIS */
+    new codepair(0xfe58, 0x030a), /*                               COMBINING RING ABOVE */
+    new codepair(0xfe59, 0x030b), /*                               COMBINING DOUBLE ACUTE ACCENT */
+    new codepair(0xfe5a, 0x030c), /*                               COMBINING CARON */
+    new codepair(0xfe5b, 0x0327), /*                               COMBINING CEDILLA */
+    new codepair(0xfe5c, 0x0328), /*                               COMBINING OGONEK */
+    new codepair(0xfe5d, 0x1da5), /*                               MODIFIER LETTER SMALL IOTA */
+    new codepair(0xfe5e, 0x3099), /*                               COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK */
+    new codepair(0xfe5f, 0x309a), /*                               COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+    new codepair(0xfe60, 0x0323), /*                               COMBINING DOT BELOW */
   };
 
-  public static int translate(int unicode) {
-    if ((unicode >= 0x20 && unicode <= 0x7e) ||
-        (unicode >= 0xa0 && unicode <= 0xff))
-      return unicode;
+  public static int ucs2keysym(int ucs) {
+    int cur = 0;
+    int max = keysymtab.length - 1;
 
-    int min = 0;
-    int max = table.length - 1;
-    int mid;
+    /* first check for Latin-1 characters (1:1 mapping) */
+    if ((ucs >= 0x0020 && ucs <= 0x007e) ||
+        (ucs >= 0x00a0 && ucs <= 0x00ff))
+      return ucs;
 
-    while (max >= min) {
-      mid = (min + max) / 2;
-      if (table[mid][1] < unicode)
-        min = mid + 1;
-      else if (table[mid][1] > unicode)
-        max = mid - 1;
-      else
-        return table[mid][0];
+    /* linear search in table */
+    while (cur <= max) {
+      if (keysymtab[cur].ucs == ucs)
+        return keysymtab[cur].keysym;
+      cur++;
     }
 
+    /* use the directly encoded 24-bit UCS character */
+    if ((ucs & 0xff000000) == 0)
+      return ucs | 0x01000000;
+
     /* no matching Unicode value found */
-    return -1;
+    return 0xffffff;
   }
 }
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index 727f5a2..545c7e2 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -91,6 +91,7 @@
     clipboardDialog = new ClipboardDialog(this);
     firstUpdate = true; pendingUpdate = false; continuousUpdates = false;
     forceNonincremental = true; supportsSyncFence = false;
+    downKeySym = new HashMap<Integer, Integer>();
 
     setShared(viewer.shared.getValue());
     upg = this;
@@ -1157,284 +1158,94 @@
     writer().writeKeyEvent(keysym, down);
   }
 
-  public void writeKeyEvent(KeyEvent ev, int keysym) {
-    if (keysym < 0)
-      return;
-    String fmt = ev.paramString().replaceAll("%","%%");
-    vlog.debug(String.format(fmt.replaceAll(",","%n       ")));
-    // Windows sends an extra CTRL_L + ALT_R when AltGr is down that need to
-    // be suppressed for keyTyped events. In Java 6 KeyEvent.isAltGraphDown()
-    // is broken for keyPressed/keyReleased events.
-    int ALTGR_MASK = ((Event.CTRL_MASK<<KEY_LOC_SHIFT_L) | Event.ALT_MASK);
-    String os = System.getProperty("os.name");
-    if (os.startsWith("Windows") && ((modifiers & ALTGR_MASK) != 0)) {
-      writeKeyEvent(Keysyms.Control_L, false);
-      writeKeyEvent(Keysyms.Alt_R, false);
-      writeKeyEvent(keysym, true);
-      writeKeyEvent(keysym, false);
-      writeKeyEvent(Keysyms.Control_L, true);
-      writeKeyEvent(Keysyms.Alt_R, true);
-    } else {
-      writeKeyEvent(keysym, true);
-      writeKeyEvent(keysym, false);
-    }
-  }
-
   public void writeKeyEvent(KeyEvent ev) {
-    int keysym = 0, keycode, key, location, locationShift;
-
-    if (shuttingDown)
+    if (viewer.viewOnly.getValue() || shuttingDown)
       return;
 
     boolean down = (ev.getID() == KeyEvent.KEY_PRESSED);
+   
+    int keySym, keyCode = ev.getKeyCode();
 
-    keycode = ev.getKeyCode();
-    if (keycode == KeyEvent.VK_UNDEFINED)
+    // If neither the keyCode or keyChar are defined, then there's
+    // really nothing that we can do with this.  The fn key on OS-X
+    // fires events like this when pressed but does not fire a
+    // corresponding release event.
+    if (keyCode == 0 && ev.getKeyChar() == KeyEvent.CHAR_UNDEFINED)
       return;
-    key = ev.getKeyChar();
-    location = ev.getKeyLocation();
-    if (location == KeyEvent.KEY_LOCATION_RIGHT)
-      locationShift = KEY_LOC_SHIFT_R;
-    else
-      locationShift = KEY_LOC_SHIFT_L;
 
-    if (!ev.isActionKey()) {
-      if (keycode >= KeyEvent.VK_0 && keycode <= KeyEvent.VK_9 &&
-        location == KeyEvent.KEY_LOCATION_NUMPAD)
-        keysym = Keysyms.KP_0 + keycode - KeyEvent.VK_0;
+    if (!down) {
+      Integer iter = downKeySym.get(keyCode);
+      if (iter == null) {
+        // Note that dead keys will raise this sort of error falsely
+        // See https://bugs.openjdk.java.net/browse/JDK-6534883 
+        vlog.error("Unexpected key release of keyCode "+keyCode);
+        String fmt = ev.paramString().replaceAll("%","%%");
+        vlog.error(String.format(fmt.replaceAll(",","%n       ")));
 
-      switch (keycode) {
-      case KeyEvent.VK_BACK_SPACE: keysym = Keysyms.BackSpace; break;
-      case KeyEvent.VK_TAB:        keysym = Keysyms.Tab; break;
-      case KeyEvent.VK_ENTER:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Enter;
-        else
-          keysym = Keysyms.Return;  break;
-      case KeyEvent.VK_ESCAPE:     keysym = Keysyms.Escape; break;
-      case KeyEvent.VK_NUMPAD0:    keysym = Keysyms.KP_0; break;
-      case KeyEvent.VK_NUMPAD1:    keysym = Keysyms.KP_1; break;
-      case KeyEvent.VK_NUMPAD2:    keysym = Keysyms.KP_2; break;
-      case KeyEvent.VK_NUMPAD3:    keysym = Keysyms.KP_3; break;
-      case KeyEvent.VK_NUMPAD4:    keysym = Keysyms.KP_4; break;
-      case KeyEvent.VK_NUMPAD5:    keysym = Keysyms.KP_5; break;
-      case KeyEvent.VK_NUMPAD6:    keysym = Keysyms.KP_6; break;
-      case KeyEvent.VK_NUMPAD7:    keysym = Keysyms.KP_7; break;
-      case KeyEvent.VK_NUMPAD8:    keysym = Keysyms.KP_8; break;
-      case KeyEvent.VK_NUMPAD9:    keysym = Keysyms.KP_9; break;
-      case KeyEvent.VK_DECIMAL:    keysym = Keysyms.KP_Decimal; break;
-      case KeyEvent.VK_ADD:        keysym = Keysyms.KP_Add; break;
-      case KeyEvent.VK_SUBTRACT:   keysym = Keysyms.KP_Subtract; break;
-      case KeyEvent.VK_MULTIPLY:   keysym = Keysyms.KP_Multiply; break;
-      case KeyEvent.VK_DIVIDE:     keysym = Keysyms.KP_Divide; break;
-      case KeyEvent.VK_DELETE:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Delete;
-        else
-          keysym = Keysyms.Delete;  break;
-      case KeyEvent.VK_CLEAR:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Begin;
-        else
-          keysym = Keysyms.Clear;  break;
-      case KeyEvent.VK_CONTROL:
-        if (down)
-          modifiers |= (Event.CTRL_MASK<<locationShift);
-        else
-          modifiers &= ~(Event.CTRL_MASK<<locationShift);
-        if (location == KeyEvent.KEY_LOCATION_RIGHT)
-          keysym = Keysyms.Control_R;
-        else
-          keysym = Keysyms.Control_L;  break;
-      case KeyEvent.VK_ALT:
-        if (down)
-          modifiers |= (Event.ALT_MASK<<locationShift);
-        else
-          modifiers &= ~(Event.ALT_MASK<<locationShift);
-        if (location == KeyEvent.KEY_LOCATION_RIGHT)
-          keysym = Keysyms.Alt_R;
-        else
-          keysym = Keysyms.Alt_L;  break;
-      case KeyEvent.VK_SHIFT:
-        if (down)
-          modifiers |= (Event.SHIFT_MASK<<locationShift);
-        else
-          modifiers &= ~(Event.SHIFT_MASK<<locationShift);
-        if (location == KeyEvent.KEY_LOCATION_RIGHT)
-          keysym = Keysyms.Shift_R;
-        else
-          keysym = Keysyms.Shift_L;  break;
-      case KeyEvent.VK_META:
-        if (down)
-          modifiers |= (Event.META_MASK<<locationShift);
-        else
-          modifiers &= ~(Event.META_MASK<<locationShift);
-        if (location == KeyEvent.KEY_LOCATION_RIGHT)
-          keysym = Keysyms.Meta_R;
-        else
-          keysym = Keysyms.Meta_L;  break;
-      default:
-        if (ev.isControlDown()) {
-          // For CTRL-<letter>, CTRL is sent separately, so just send <letter>.
-          if ((key >= 1 && key <= 26 && !ev.isShiftDown()) ||
-              // CTRL-{, CTRL-|, CTRL-} also map to ASCII 96-127
-              (key >= 27 && key <= 29 && ev.isShiftDown()))
-            key += 96;
-          // For CTRL-SHIFT-<letter>, send capital <letter> to emulate behavior
-          // of Linux.  For CTRL-@, send @.  For CTRL-_, send _.  For CTRL-^,
-          // send ^.
-          else if (key < 32)
-            key += 64;
-          // Windows and Mac sometimes return CHAR_UNDEFINED with CTRL-SHIFT
-          // combinations, so best we can do is send the key code if it is
-          // a valid ASCII symbol.
-          else if (key == KeyEvent.CHAR_UNDEFINED && keycode >= 0 &&
-                   keycode <= 127)
-            key = keycode;
-        }
-
-        keysym = UnicodeToKeysym.translate(key);
-        if (keysym == -1)
-          return;
+        return;
       }
-    } else {
-      // KEY_ACTION
-      switch (keycode) {
-      case KeyEvent.VK_HOME:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Home;
-        else
-          keysym = Keysyms.Home;  break;
-      case KeyEvent.VK_END:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_End;
-        else
-          keysym = Keysyms.End;  break;
-      case KeyEvent.VK_PAGE_UP:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Page_Up;
-        else
-          keysym = Keysyms.Page_Up;  break;
-      case KeyEvent.VK_PAGE_DOWN:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Page_Down;
-        else
-          keysym = Keysyms.Page_Down;  break;
-      case KeyEvent.VK_UP:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Up;
-        else
-          keysym = Keysyms.Up;  break;
-      case KeyEvent.VK_DOWN:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Down;
-        else
-         keysym = Keysyms.Down;  break;
-      case KeyEvent.VK_LEFT:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Left;
-        else
-         keysym = Keysyms.Left;  break;
-      case KeyEvent.VK_RIGHT:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Right;
-        else
-          keysym = Keysyms.Right;  break;
-      case KeyEvent.VK_BEGIN:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Begin;
-        else
-          keysym = Keysyms.Begin;  break;
-      case KeyEvent.VK_KP_LEFT:      keysym = Keysyms.KP_Left; break;
-      case KeyEvent.VK_KP_UP:        keysym = Keysyms.KP_Up; break;
-      case KeyEvent.VK_KP_RIGHT:     keysym = Keysyms.KP_Right; break;
-      case KeyEvent.VK_KP_DOWN:      keysym = Keysyms.KP_Down; break;
-      case KeyEvent.VK_F1:           keysym = Keysyms.F1; break;
-      case KeyEvent.VK_F2:           keysym = Keysyms.F2; break;
-      case KeyEvent.VK_F3:           keysym = Keysyms.F3; break;
-      case KeyEvent.VK_F4:           keysym = Keysyms.F4; break;
-      case KeyEvent.VK_F5:           keysym = Keysyms.F5; break;
-      case KeyEvent.VK_F6:           keysym = Keysyms.F6; break;
-      case KeyEvent.VK_F7:           keysym = Keysyms.F7; break;
-      case KeyEvent.VK_F8:           keysym = Keysyms.F8; break;
-      case KeyEvent.VK_F9:           keysym = Keysyms.F9; break;
-      case KeyEvent.VK_F10:          keysym = Keysyms.F10; break;
-      case KeyEvent.VK_F11:          keysym = Keysyms.F11; break;
-      case KeyEvent.VK_F12:          keysym = Keysyms.F12; break;
-      case KeyEvent.VK_F13:          keysym = Keysyms.F13; break;
-      case KeyEvent.VK_F14:          keysym = Keysyms.F14; break;
-      case KeyEvent.VK_F15:          keysym = Keysyms.F15; break;
-      case KeyEvent.VK_F16:          keysym = Keysyms.F16; break;
-      case KeyEvent.VK_F17:          keysym = Keysyms.F17; break;
-      case KeyEvent.VK_F18:          keysym = Keysyms.F18; break;
-      case KeyEvent.VK_F19:          keysym = Keysyms.F19; break;
-      case KeyEvent.VK_F20:          keysym = Keysyms.F20; break;
-      case KeyEvent.VK_F21:          keysym = Keysyms.F21; break;
-      case KeyEvent.VK_F22:          keysym = Keysyms.F22; break;
-      case KeyEvent.VK_F23:          keysym = Keysyms.F23; break;
-      case KeyEvent.VK_F24:          keysym = Keysyms.F24; break;
-      case KeyEvent.VK_PRINTSCREEN:  keysym = Keysyms.Print; break;
-      case KeyEvent.VK_SCROLL_LOCK:  keysym = Keysyms.Scroll_Lock; break;
-      case KeyEvent.VK_CAPS_LOCK:    keysym = Keysyms.Caps_Lock; break;
-      case KeyEvent.VK_NUM_LOCK:     keysym = Keysyms.Num_Lock; break;
-      case KeyEvent.VK_PAUSE:
-        if (ev.isControlDown())
-          keysym = Keysyms.Break;
-        else
-          keysym = Keysyms.Pause;
-        break;
-      case KeyEvent.VK_INSERT:
-        if (location == KeyEvent.KEY_LOCATION_NUMPAD)
-          keysym = Keysyms.KP_Insert;
-        else
-          keysym = Keysyms.Insert;  break;
-      // case KeyEvent.VK_FINAL:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_CONVERT:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_NONCONVERT:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_ACCEPT:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_MODECHANGE:     keysym = Keysyms.Mode_switch?; break;
-      // case KeyEvent.VK_KANA:     keysym = Keysyms.Kana_shift?; break;
-      case KeyEvent.VK_KANJI:     keysym = Keysyms.Kanji; break;
-      // case KeyEvent.VK_ALPHANUMERIC:     keysym = Keysyms.Eisu_Shift?; break;
-      case KeyEvent.VK_KATAKANA:     keysym = Keysyms.Katakana; break;
-      case KeyEvent.VK_HIRAGANA:     keysym = Keysyms.Hiragana; break;
-      // case KeyEvent.VK_FULL_WIDTH:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_HALF_WIDTH:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_ROMAN_CHARACTERS:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_ALL_CANDIDATES:     keysym = Keysyms.MultipleCandidate?; break;
-      case KeyEvent.VK_PREVIOUS_CANDIDATE:     keysym = Keysyms.PreviousCandidate; break;
-      case KeyEvent.VK_CODE_INPUT:     keysym = Keysyms.Codeinput; break;
-      // case KeyEvent.VK_JAPANESE_KATAKANA:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_JAPANESE_HIRAGANA:     keysym = Keysyms.?; break;
-      case KeyEvent.VK_JAPANESE_ROMAN:     keysym = Keysyms.Romaji; break;
-      case KeyEvent.VK_KANA_LOCK:     keysym = Keysyms.Kana_Lock; break;
-      // case KeyEvent.VK_INPUT_METHOD_ON_OFF:     keysym = Keysyms.?; break;
 
-      case KeyEvent.VK_AGAIN:     keysym = Keysyms.Redo; break;
-      case KeyEvent.VK_UNDO:     keysym = Keysyms.Undo; break;
-      // case KeyEvent.VK_COPY:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_PASTE:     keysym = Keysyms.?; break;
-      // case KeyEvent.VK_CUT:     keysym = Keysyms.?; break;
-      case KeyEvent.VK_FIND:     keysym = Keysyms.Find; break;
-      // case KeyEvent.VK_PROPS:     keysym = Keysyms.?; break;
-      case KeyEvent.VK_STOP:     keysym = Keysyms.Cancel; break;
-      case KeyEvent.VK_HELP:         keysym = Keysyms.Help; break;
-      case KeyEvent.VK_WINDOWS:
-        if (down)
-          modifiers |= SUPER_MASK;
-        else
-          modifiers &= ~SUPER_MASK;
-        keysym = Keysyms.Super_L; break;
-      case KeyEvent.VK_CONTEXT_MENU: keysym = Keysyms.Menu; break;
-      default: return;
+      vlog.debug(String.format("Key released: 0x%04x => 0x%04x",
+                 keyCode, iter));
+
+      writeKeyEvent(iter, false);
+      downKeySym.remove(keyCode);
+
+      return;
+    }
+
+    keySym = Keysyms.translateKeyEvent(ev);
+    if (keySym == Keysyms.VoidSymbol)
+      return;
+
+    boolean need_cheat = true;
+    if (VncViewer.os.startsWith("windows")) {
+      // Windows doesn't have a proper AltGr, but handles it using fake
+      // Ctrl+Alt. Unfortunately X11 doesn't generally like the combination
+      // Ctrl+Alt+AltGr, which we usually end up with when Xvnc tries to
+      // get everything in the correct state. Cheat and temporarily release
+      // Ctrl and Alt whenever we get a key with a symbol.
+      if (KeyEvent.getKeyText(keyCode).isEmpty())
+        need_cheat = false;
+      else if (!downKeySym.containsValue(Keysyms.Control_L) &&
+               !downKeySym.containsValue(Keysyms.Control_R))
+        need_cheat = false;
+      else if (!downKeySym.containsValue(Keysyms.Alt_L) &&
+               !downKeySym.containsValue(Keysyms.Alt_R))
+        need_cheat = false;
+
+      if (need_cheat) {
+        vlog.info("Faking release of AltGr (Ctrl+Alt)");
+        if (downKeySym.containsValue(Keysyms.Control_L))
+          writeKeyEvent(Keysyms.Control_L, false);
+        if (downKeySym.containsValue(Keysyms.Control_R))
+          writeKeyEvent(Keysyms.Control_R, false);
+        if (downKeySym.containsValue(Keysyms.Alt_L))
+          writeKeyEvent(Keysyms.Alt_L, false);
+        if (downKeySym.containsValue(Keysyms.Alt_R))
+          writeKeyEvent(Keysyms.Alt_R, false);
       }
     }
 
-    if (keysym > 0) {
-      String fmt = ev.paramString().replaceAll("%","%%");
-      vlog.debug(String.format(fmt.replaceAll(",","%n       ")));
+    vlog.debug(String.format("Key pressed: 0x%04x '%s' => 0x%04x",
+               keyCode, Character.toString(ev.getKeyChar()), keySym));
 
-      writeKeyEvent(keysym, down);
+    downKeySym.put(keyCode, keySym);
+
+    writeKeyEvent(keySym, down);
+
+    if (VncViewer.os.startsWith("windows")) {
+      if (need_cheat) {
+        vlog.debug("Restoring AltGr state");
+        if (downKeySym.containsValue(Keysyms.Control_L))
+          writeKeyEvent(Keysyms.Control_L, true);
+        if (downKeySym.containsValue(Keysyms.Control_R))
+          writeKeyEvent(Keysyms.Control_R, true);
+        if (downKeySym.containsValue(Keysyms.Alt_L))
+          writeKeyEvent(Keysyms.Alt_L, true);
+        if (downKeySym.containsValue(Keysyms.Alt_R))
+          writeKeyEvent(Keysyms.Alt_R, true);
+      }
     }
   }
 
@@ -1486,25 +1297,26 @@
   }
 
   synchronized void releaseModifiers() {
-    if ((modifiers & Event.SHIFT_MASK) == Event.SHIFT_MASK)
-      writeKeyEvent(Keysyms.Shift_R, false);
-    if (((modifiers>>KEY_LOC_SHIFT_L) & Event.SHIFT_MASK) == Event.SHIFT_MASK)
-      writeKeyEvent(Keysyms.Shift_L, false);
-    if ((modifiers & Event.CTRL_MASK) == Event.CTRL_MASK)
-      writeKeyEvent(Keysyms.Control_R, false);
-    if (((modifiers>>KEY_LOC_SHIFT_L) & Event.CTRL_MASK) == Event.CTRL_MASK)
-      writeKeyEvent(Keysyms.Control_L, false);
-    if ((modifiers & Event.ALT_MASK) == Event.ALT_MASK)
-      writeKeyEvent(Keysyms.Alt_R, false);
-    if (((modifiers>>KEY_LOC_SHIFT_L) & Event.ALT_MASK) == Event.ALT_MASK)
-      writeKeyEvent(Keysyms.Alt_L, false);
-    if ((modifiers & Event.META_MASK) == Event.META_MASK)
-      writeKeyEvent(Keysyms.Meta_R, false);
-    if (((modifiers>>KEY_LOC_SHIFT_L) & Event.META_MASK) == Event.META_MASK)
-      writeKeyEvent(Keysyms.Meta_L, false);
-    if ((modifiers & SUPER_MASK) == SUPER_MASK)
-      writeKeyEvent(Keysyms.Super_L, false);
-    modifiers = 0;
+    if (downKeySym.containsValue(Keysyms.Shift_L))
+      writeKeyEvent(Keysyms.Shift_L, true);
+    if (downKeySym.containsValue(Keysyms.Shift_R))
+      writeKeyEvent(Keysyms.Shift_R, true);
+    if (downKeySym.containsValue(Keysyms.Control_L))
+      writeKeyEvent(Keysyms.Control_L, true);
+    if (downKeySym.containsValue(Keysyms.Control_R))
+      writeKeyEvent(Keysyms.Control_R, true);
+    if (downKeySym.containsValue(Keysyms.Alt_L))
+      writeKeyEvent(Keysyms.Alt_L, true);
+    if (downKeySym.containsValue(Keysyms.Alt_R))
+      writeKeyEvent(Keysyms.Alt_R, true);
+    if (downKeySym.containsValue(Keysyms.Meta_L))
+      writeKeyEvent(Keysyms.Meta_L, true);
+    if (downKeySym.containsValue(Keysyms.Meta_R))
+      writeKeyEvent(Keysyms.Meta_R, true);
+    if (downKeySym.containsValue(Keysyms.Super_L))
+      writeKeyEvent(Keysyms.Super_L, true);
+    if (downKeySym.containsValue(Keysyms.Super_R))
+      writeKeyEvent(Keysyms.Super_R, true);
   }
 
 
@@ -1583,12 +1395,12 @@
 
   private boolean supportsSyncFence;
 
-  int modifiers;
   public int menuKeyCode;
   Viewport viewport;
   private boolean fullColour;
   private boolean autoSelect;
   boolean fullScreen;
+  private HashMap<Integer, Integer> downKeySym;
 
   static LogWriter vlog = new LogWriter("CConn");
 }
diff --git a/java/com/tigervnc/vncviewer/DesktopWindow.java b/java/com/tigervnc/vncviewer/DesktopWindow.java
index e1d242a..3dc4c25 100644
--- a/java/com/tigervnc/vncviewer/DesktopWindow.java
+++ b/java/com/tigervnc/vncviewer/DesktopWindow.java
@@ -439,20 +439,16 @@
     mouseWheelCB(e);
   }
 
+  private static final Integer keyEventLock = 0; 
+
   // Handle the key-typed event.
-  public void keyTyped(KeyEvent e) {
-    int keysym = UnicodeToKeysym.translate(e.getKeyChar());
-    if (!cc.viewer.viewOnly.getValue())
-      if (!e.isActionKey() && keysym > 0)
-        cc.writeKeyEvent(e, keysym);
-  }
+  public void keyTyped(KeyEvent e) { }
 
   // Handle the key-released event.
   public void keyReleased(KeyEvent e) {
-    int keysym = UnicodeToKeysym.translate(e.getKeyChar());
-    if (!cc.viewer.viewOnly.getValue())
-      if (e.isActionKey() || keysym < 0)
-        cc.writeKeyEvent(e);
+    synchronized(keyEventLock) {
+      cc.writeKeyEvent(e);
+    }
   }
 
   // Handle the key-pressed event.
@@ -509,10 +505,9 @@
           return;
       }
     }
-    int keysym = UnicodeToKeysym.translate(e.getKeyChar());
-    if (!cc.viewer.viewOnly.getValue())
-      if (e.isActionKey() || keysym < 0)
-        cc.writeKeyEvent(e);
+    synchronized(keyEventLock) {
+      cc.writeKeyEvent(e);
+    }
   }
 
   ////////////////////////////////////////////////////////////////////
