5
#include "connections.h"
8
* Bell event handling. Requires XKEYBOARD extension.
10
int xkb_base_event_type = 0;
12
void initialize_xkb(void);
13
void initialize_watch_bell(void);
14
void check_bell_event(void);
17
#if LIBVNCSERVER_HAVE_XKEYBOARD
20
* check for XKEYBOARD, set up xkb_base_event_type
22
void initialize_xkb(void) {
24
int op, ev, er, maj, min;
30
} else if (! XkbQueryExtension(dpy, &op, &ev, &er, &maj, &min)) {
32
rfbLog("warning: XKEYBOARD extension not present.\n");
47
if (! XkbOpenDisplay(DisplayString(dpy), &xkb_base_event_type, &ir,
48
NULL, NULL, &reason) ) {
50
rfbLog("warning: disabling XKEYBOARD. XkbOpenDisplay"
53
xkb_base_event_type = 0;
59
void initialize_watch_bell(void) {
62
rfbLog("warning: disabling bell. XKEYBOARD ext. "
72
XkbSelectEvents(dpy, XkbUseCoreKbd, XkbBellNotifyMask, 0);
77
if (! XkbSelectEvents(dpy, XkbUseCoreKbd, XkbBellNotifyMask,
78
XkbBellNotifyMask) ) {
80
rfbLog("warning: disabling bell. XkbSelectEvents"
89
* We call this periodically to process any bell events that have
92
void check_bell_event(void) {
97
if (! xkb_base_event_type) {
102
/* caller does X_LOCK */
103
if (! XCheckTypedEvent(dpy, xkb_base_event_type, &xev)) {
107
/* we return here to avoid xkb events piling up */
111
xkb_ev = (XkbAnyEvent *) &xev;
112
if (xkb_ev->xkb_type == XkbBellNotify) {
116
if (got_bell && sound_bell) {
117
if (! all_clients_initialized()) {
118
rfbLog("check_bell_event: not sending bell: "
119
"uninitialized clients\n");
121
if (screen && client_count) {
128
void initialize_watch_bell(void) {
132
void check_bell_event(void) {}