changeset 66377:6edd64b37316

(handle_one_xevent): Handle keysyms directly mapped to supported Unicode characters.
author Kenichi Handa <handa@m17n.org>
date Mon, 24 Oct 2005 08:05:36 +0000
parents c054783885e0
children bfedfa64c50b
files src/xterm.c
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Mon Oct 24 08:04:01 2005 +0000
+++ b/src/xterm.c	Mon Oct 24 08:05:36 2005 +0000
@@ -6236,6 +6236,27 @@
 	      goto done_keysym;
 	    }
 
+	  /* Keysyms directly mapped to supported Unicode characters.  */
+	  if ((keysym >= 0x01000100 && keysym <= 0x010033ff)
+	      || (keysym >= 0x0100e000 && keysym <= 0x0100ffff))
+	    {
+	      int code, charset_id, c1, c2;
+
+	      if (keysym < 0x01002500)
+		charset_id = charset_mule_unicode_0100_24ff,
+		  code = (keysym & 0xFFFF) - 0x100;
+	      else if (keysym < 0x0100e000)
+		charset_id = charset_mule_unicode_2500_33ff,
+		  code = (keysym & 0xFFFF) - 0x2500;
+	      else
+		charset_id = charset_mule_unicode_e000_ffff,
+		  code = (keysym & 0xFFFF) - 0xe000;
+	      c1 = (code / 96) + 32, c2 = (code % 96) + 32;
+	      inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
+	      inev.ie.code = MAKE_CHAR (charset_id, c1, c2);
+	      goto done_keysym;
+	    }
+
 	  /* Now non-ASCII.  */
 	  if (HASH_TABLE_P (Vx_keysym_table)
 	      && (NATNUMP (c = Fgethash (make_number (keysym),