diff options
author | Gerd Moellmann <[email protected]> | 2000-12-28 16:23:19 +0000 |
---|---|---|
committer | Gerd Moellmann <[email protected]> | 2000-12-28 16:23:19 +0000 |
commit | 46f6a2585461878660811a7eb3d03451599f90f3 (patch) | |
tree | bdf5fd16a59b34bc4d3fec78941e4784b5001ad6 /src/xfns.c | |
parent | 2ece9174d1f57d48229b4cbd3d1d932df40687ed (diff) |
(Fx_backspace_delete_keys_p): Check library and server
XKB versions. Call XkbFreeKeyboard with 2nd arg 0.
Diffstat (limited to 'src/xfns.c')
-rw-r--r-- | src/xfns.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/xfns.c b/src/xfns.c index 6e8931b42d..b52f7fef7c 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -11096,10 +11096,23 @@ usual X keysyms.") struct frame *f = check_x_frame (frame); Display *dpy = FRAME_X_DISPLAY (f); Lisp_Object have_keys; - - have_keys = Qnil; + int major, minor, op, event, error; BLOCK_INPUT; + + /* Check library version in case we're dynamically linked. */ + major = XkbMajorVersion; + minor = XkbMinorVersion; + if (!XkbLibraryVersion (&major, &minor)) + return Qnil; + + /* Check that the server supports XKB. */ + major = XkbMajorVersion; + minor = XkbMinorVersion; + if (!XkbQueryExtension (dpy, &op, &event, &error, &major, &minor)) + return Qnil; + + have_keys = Qnil; kb = XkbGetKeyboard (dpy, XkbAllComponentsMask, XkbUseCoreKbd); if (kb) { @@ -11118,7 +11131,7 @@ usual X keysyms.") backspace_keycode = i; } - XkbFreeKeyboard (kb, XkbAllComponentsMask, True); + XkbFreeKeyboard (kb, 0, True); if (delete_keycode && backspace_keycode |