aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1995-06-09 19:15:55 +0000
committerKarl Heuer1995-06-09 19:15:55 +0000
commit2c834fb35bbe69c629333796a58b98b18c13007b (patch)
treeec5bb7d462f100905c948914007ee01d4e6a7dd7 /src
parentd047c4ebf21104688ff15f0cc3a3882997bb53fd (diff)
downloademacs-2c834fb35bbe69c629333796a58b98b18c13007b.tar.gz
emacs-2c834fb35bbe69c629333796a58b98b18c13007b.zip
(modify_event_symbol): Mask out high bits here,
and only for certain purposes. table_size now unsigned. (modify_event_symbol) [HAVE_X_WINDOWS]: Use x_get_keysym_name. (make_lispy_event): Don't mask high bits here. Supply -1 as table_size for system-specific keys.
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 6e4485b1460..45890ee9944 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -440,6 +440,8 @@ Lisp_Object recursive_edit_unwind (), command_loop ();
440Lisp_Object Fthis_command_keys (); 440Lisp_Object Fthis_command_keys ();
441Lisp_Object Qextended_command_history; 441Lisp_Object Qextended_command_history;
442 442
443extern char *x_get_keysym_name ();
444
443Lisp_Object Qpolling_period; 445Lisp_Object Qpolling_period;
444 446
445extern Lisp_Object Vprint_level, Vprint_length; 447extern Lisp_Object Vprint_level, Vprint_length;
@@ -3003,11 +3005,11 @@ make_lispy_event (event)
3003 since we can't make a vector long enuf. */ 3005 since we can't make a vector long enuf. */
3004 if (NILP (system_key_syms)) 3006 if (NILP (system_key_syms))
3005 system_key_syms = Fcons (Qnil, Qnil); 3007 system_key_syms = Fcons (Qnil, Qnil);
3006 return modify_event_symbol (event->code & 0xffffff, 3008 return modify_event_symbol (event->code,
3007 event->modifiers, 3009 event->modifiers,
3008 Qfunction_key, 3010 Qfunction_key,
3009 current_kboard->Vsystem_key_alist, 3011 current_kboard->Vsystem_key_alist,
3010 0, &system_key_syms, 0xffffff); 3012 0, &system_key_syms, (unsigned)-1);
3011 } 3013 }
3012 3014
3013 return modify_event_symbol (event->code - 0xff00, 3015 return modify_event_symbol (event->code - 0xff00,
@@ -3722,12 +3724,13 @@ modify_event_symbol (symbol_num, modifiers, symbol_kind, name_alist,
3722 Lisp_Object name_alist; 3724 Lisp_Object name_alist;
3723 char **name_table; 3725 char **name_table;
3724 Lisp_Object *symbol_table; 3726 Lisp_Object *symbol_table;
3725 int table_size; 3727 unsigned int table_size;
3726{ 3728{
3727 Lisp_Object value; 3729 Lisp_Object value;
3728 Lisp_Object symbol_int; 3730 Lisp_Object symbol_int;
3729 3731
3730 XSETINT (symbol_int, symbol_num); 3732 /* Get rid of the "vendor-specific" bit here. */
3733 XSETINT (symbol_int, symbol_num & 0xffffff);
3731 3734
3732 /* Is this a request for a valid symbol? */ 3735 /* Is this a request for a valid symbol? */
3733 if (symbol_num < 0 || symbol_num >= table_size) 3736 if (symbol_num < 0 || symbol_num >= table_size)
@@ -3763,6 +3766,15 @@ modify_event_symbol (symbol_num, modifiers, symbol_kind, name_alist,
3763 else if (name_table[symbol_num]) 3766 else if (name_table[symbol_num])
3764 value = intern (name_table[symbol_num]); 3767 value = intern (name_table[symbol_num]);
3765 3768
3769#ifdef HAVE_X_WINDOWS
3770 if (NILP (value))
3771 {
3772 char *name = x_get_keysym_name (symbol_num);
3773 if (name)
3774 value = intern (name);
3775 }
3776#endif
3777
3766 if (NILP (value)) 3778 if (NILP (value))
3767 { 3779 {
3768 char buf[20]; 3780 char buf[20];