diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-05-13 00:13:02 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-05-13 00:13:02 +0000 |
commit | 59e755be76dfa0e5c66f8e49cfd0d0644f899f37 (patch) | |
tree | 2e827594d36ef43b911e36a0e460a686043288fa /src/xterm.c | |
parent | b9df9faab45baa583b2dd388de708b0986bfbe30 (diff) | |
download | emacs-59e755be76dfa0e5c66f8e49cfd0d0644f899f37.tar.gz |
(Qvendor_specific_keysyms): New var.
(syms_of_xterm): Initialize and staticpro it.
(x_term_init): Initialize Vsystem_key_alist according to vendor.
Diffstat (limited to 'src/xterm.c')
-rw-r--r-- | src/xterm.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/xterm.c b/src/xterm.c index 2f714486057..7e2679b2f4e 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -211,6 +211,8 @@ extern int errno; /* A mask of extra modifier bits to put into every keyboard char. */ extern int extra_keyboard_modifiers; +static Lisp_Object Qvendor_specific_keysyms; + extern XrmDatabase x_load_resources (); void x_delete_display (); @@ -5624,9 +5626,14 @@ x_term_init (display_name, xrm_option, resource_name) { dpyinfo->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); init_kboard (dpyinfo->kboard); - /* Change this after lisp/term/x-win.el is prepared to initialize - this var in a server-dependent manner. */ - dpyinfo->kboard->Vsystem_key_alist = initial_kboard->Vsystem_key_alist; + if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound)) + { + char *vendor = ServerVendor (dpy); + dpyinfo->kboard->Vsystem_key_alist + = call1 (Qvendor_specific_keysyms, + build_string (vendor ? vendor : "")); + } + dpyinfo->kboard->next_kboard = all_kboards; all_kboards = dpyinfo->kboard; /* Don't let the initial kboard remain current longer than necessary. @@ -5896,5 +5903,8 @@ syms_of_xterm () staticpro (&last_mouse_scroll_bar); last_mouse_scroll_bar = Qnil; + + staticpro (&Qvendor_specific_keysyms); + Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); } #endif /* ! defined (HAVE_X_WINDOWS) */ |