changeset 44353:4c66bc116ca9

(make_lispy_event): Handle unknown keysyms together with system-specific keysyms. Use it also for unknown function keys.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 03 Apr 2002 04:49:33 +0000
parents d38932df86fc
children 43d4fae4eb7d
files src/keyboard.c
diffstat 1 files changed, 19 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Tue Apr 02 23:14:41 2002 +0000
+++ b/src/keyboard.c	Wed Apr 03 04:49:33 2002 +0000
@@ -4762,21 +4762,6 @@
 				      (sizeof (lispy_accent_keys)
 				       / sizeof (lispy_accent_keys[0])));
 
-      /* Handle system-specific keysyms.  */
-      if (event->code & (1 << 28))
-	{
-	  /* We need to use an alist rather than a vector as the cache
-	     since we can't make a vector long enuf.  */
-	  if (NILP (current_kboard->system_key_syms))
-	    current_kboard->system_key_syms = Fcons (Qnil, Qnil);
-	  return modify_event_symbol (event->code,
-				      event->modifiers,
-				      Qfunction_key,
-				      current_kboard->Vsystem_key_alist,
-				      0, &current_kboard->system_key_syms,
-				      (unsigned) -1);
-	}
-
 #ifdef XK_kana_A
       if (event->code >= 0x400 && event->code < 0x500)
 	return modify_event_symbol (event->code - 0x400,
@@ -4796,30 +4781,26 @@
 				    iso_lispy_function_keys, &func_key_syms,
 				    (sizeof (iso_lispy_function_keys)
 				     / sizeof (iso_lispy_function_keys[0])));
-      else
-#endif
-
-#ifdef HAVE_X_WINDOWS
-      if (event->code - FUNCTION_KEY_OFFSET < 0
+#endif
+
+      /* Handle system-specific or unknown keysyms.  */
+      if (event->code & (1 << 28)
+	  || event->code - FUNCTION_KEY_OFFSET < 0
 	  || (event->code - FUNCTION_KEY_OFFSET
-	      >= sizeof lispy_function_keys / sizeof *lispy_function_keys))
-	{
-	  /* EVENT->code is an unknown keysym, for example someone
-	     assigned `ccaron' to a key in a locale where
-	     XmbLookupString doesn't return a translation for it.  */
-	  char *name;
-	  Lisp_Object symbol;
-	  
-	  BLOCK_INPUT;
-	  /* This returns a pointer to a static area.  Don't free it.  */
-	  name = XKeysymToString (event->code);
-	  symbol = name ? intern (name) : Qnil;
-	  UNBLOCK_INPUT;
-	  
-	  if (!NILP (symbol))
-	    return apply_modifiers (event->modifiers, symbol);
-	}
-#endif /* HAVE_X_WINDOWS */
+	      >= sizeof lispy_function_keys / sizeof *lispy_function_keys)
+	  || !lispy_function_keys[event->code - FUNCTION_KEY_OFFSET])
+	{
+	  /* We need to use an alist rather than a vector as the cache
+	     since we can't make a vector long enuf.  */
+	  if (NILP (current_kboard->system_key_syms))
+	    current_kboard->system_key_syms = Fcons (Qnil, Qnil);
+	  return modify_event_symbol (event->code,
+				      event->modifiers,
+				      Qfunction_key,
+				      current_kboard->Vsystem_key_alist,
+				      0, &current_kboard->system_key_syms,
+				      (unsigned) -1);
+	}
 
       return modify_event_symbol (event->code - FUNCTION_KEY_OFFSET,
 				  event->modifiers,