summaryrefslogtreecommitdiff
path: root/src/xterm.c
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1995-05-13 00:13:02 +0000
committerKarl Heuer <kwzh@gnu.org>1995-05-13 00:13:02 +0000
commit59e755be76dfa0e5c66f8e49cfd0d0644f899f37 (patch)
tree2e827594d36ef43b911e36a0e460a686043288fa /src/xterm.c
parentb9df9faab45baa583b2dd388de708b0986bfbe30 (diff)
downloademacs-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.c16
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) */