Lisp_Object Fthis_command_keys ();
Lisp_Object Qextended_command_history;
+extern char *x_get_keysym_name ();
+
Lisp_Object Qpolling_period;
extern Lisp_Object Vprint_level, Vprint_length;
since we can't make a vector long enuf. */
if (NILP (system_key_syms))
system_key_syms = Fcons (Qnil, Qnil);
- return modify_event_symbol (event->code & 0xffffff,
+ return modify_event_symbol (event->code,
event->modifiers,
Qfunction_key,
current_kboard->Vsystem_key_alist,
- 0, &system_key_syms, 0xffffff);
+ 0, &system_key_syms, (unsigned)-1);
}
return modify_event_symbol (event->code - 0xff00,
Lisp_Object name_alist;
char **name_table;
Lisp_Object *symbol_table;
- int table_size;
+ unsigned int table_size;
{
Lisp_Object value;
Lisp_Object symbol_int;
- XSETINT (symbol_int, symbol_num);
+ /* Get rid of the "vendor-specific" bit here. */
+ XSETINT (symbol_int, symbol_num & 0xffffff);
/* Is this a request for a valid symbol? */
if (symbol_num < 0 || symbol_num >= table_size)
else if (name_table[symbol_num])
value = intern (name_table[symbol_num]);
+#ifdef HAVE_X_WINDOWS
+ if (NILP (value))
+ {
+ char *name = x_get_keysym_name (symbol_num);
+ if (name)
+ value = intern (name);
+ }
+#endif
+
if (NILP (value))
{
char buf[20];