From 4c8bc8947949080161f255334eb8c7a2877cc175 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 3 Apr 2002 04:50:28 +0000 Subject: [PATCH] (make_lispy_event): Handle unknown keysyms together with system-specific keysyms. Use it also for unknown function keys. --- src/ChangeLog | 3 +++ src/keyboard.c | 49 +++++++++++++++---------------------------------- 2 files changed, 18 insertions(+), 34 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d8ae770d63e..4d4eee2dbcc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2002-04-02 Stefan Monnier + * keyboard.c (make_lispy_event): Handle unknown keysyms together + with system-specific keysyms. Use it also for unknown function keys. + * doc.c (reread_doc_file): Return whether reload was attempted. (Fdocumentation, Fdocumentation_property): Don't try to reload if the doc is 0 and only ask once. diff --git a/src/keyboard.c b/src/keyboard.c index 3e263395fe8..3a20949f112 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -4762,21 +4762,6 @@ make_lispy_event (event) (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, ¤t_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 @@ make_lispy_event (event) 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 + /* 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)) + >= sizeof lispy_function_keys / sizeof *lispy_function_keys) + || !lispy_function_keys[event->code - FUNCTION_KEY_OFFSET]) { - /* 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); + /* 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, ¤t_kboard->system_key_syms, + (unsigned) -1); } -#endif /* HAVE_X_WINDOWS */ return modify_event_symbol (event->code - FUNCTION_KEY_OFFSET, event->modifiers, -- 2.39.2