Petr Hracek 602552
diff --git a/configure.ac b/configure.ac
Petr Hracek 602552
index 62f53a3..a6f2f04 100644
Petr Hracek 602552
--- a/configure.ac
Petr Hracek 602552
+++ b/configure.ac
Petr Hracek 602552
@@ -1874,6 +1874,7 @@ if test "${HAVE_X11}" = "yes"; then
Petr Hracek 602552
   AC_MSG_RESULT($emacs_xkb)
Petr Hracek 602552
   if test $emacs_xkb = yes; then
Petr Hracek 602552
     AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
Petr Hracek 602552
+    AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
Petr Hracek 602552
   fi
Petr Hracek 602552
 
Petr Hracek 602552
   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
Petr Hracek 602552
diff --git a/src/xterm.c b/src/xterm.c
Petr Hracek 602552
index fb407c8..102ce43 100644
Petr Hracek 602552
--- a/src/xterm.c
Petr Hracek 602552
+++ b/src/xterm.c
Petr Hracek 602552
@@ -130,6 +130,10 @@ extern void _XEditResCheckMessages (Widget, XtPointer, XEvent *, Boolean *);
Petr Hracek 602552
 
Petr Hracek 602552
 #include "bitmaps/gray.xbm"
Petr Hracek 602552
 
Petr Hracek 602552
+#ifdef HAVE_XKB
Petr Hracek 602552
+#include <X11/XKBlib.h>
Petr Hracek 602552
+#endif
Petr Hracek 602552
+
Petr Hracek 602552
 /* Default to using XIM if available.  */
Petr Hracek 602552
 #ifdef USE_XIM
Petr Hracek 602552
 int use_xim = 1;
Petr Hracek 602552
@@ -3243,7 +3247,11 @@ XTring_bell (struct frame *f)
Petr Hracek 602552
       else
Petr Hracek 602552
 	{
Petr Hracek 602552
 	  block_input ();
Petr Hracek 602552
+#ifdef HAVE_XKB
Petr Hracek 602552
+      XkbBell (FRAME_X_DISPLAY (f), None, 0, None);
Petr Hracek 602552
+#else
Petr Hracek 602552
 	  XBell (FRAME_X_DISPLAY (f), 0);
Petr Hracek 602552
+#endif
Petr Hracek 602552
 	  XFlush (FRAME_X_DISPLAY (f));
Petr Hracek 602552
 	  unblock_input ();
Petr Hracek 602552
 	}