#include <stdio.h>
#define NEED_REPLIES
#define NEED_EVENTS
#include "Xlibint.h"
#include <X11/extensions/XKBproto.h>
#include "XKBlibint.h"
Bool
XkbDeviceBell( Display * dpy,
Window window,
int deviceID,
int bellClass,
int bellID,
int percent,
Atom name)
{
register xkbBellReq *req;
XkbInfoPtr xkbi;
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
GetReq(kbBell,req);
req->reqType = xkbi->codes->major_opcode;
req->xkbReqType = X_kbBell;
req->deviceSpec = deviceID;
req->window = (CARD32)window;
req->bellClass = (CARD16)bellClass;
req->bellID = (CARD16)bellID;
req->percent = percent;
req->forceSound = False;
req->eventOnly = False;
req->pitch = 0;
req->duration = 0;
req->name = (CARD32)name;
req->pad1= 0; req->pad2= 0;
UnlockDisplay(dpy);
SyncHandle();
return True;
}
Bool
XkbForceDeviceBell( Display * dpy,
int deviceID,
int bellClass,
int bellID,
int percent)
{
register xkbBellReq *req;
XkbInfoPtr xkbi;
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
GetReq(kbBell,req);
req->reqType = xkbi->codes->major_opcode;
req->xkbReqType = X_kbBell;
req->deviceSpec = deviceID;
req->window = (CARD32)None;
req->bellClass = (CARD16)bellClass;
req->bellID = (CARD16)bellID;
req->percent = percent;
req->forceSound = True;
req->eventOnly = False;
req->pitch = 0;
req->duration = 0;
req->name = None;
req->pad1= 0; req->pad2= 0;
UnlockDisplay(dpy);
SyncHandle();
return True;
}
Bool
XkbDeviceBellEvent( Display * dpy,
Window window,
int deviceID,
int bellClass,
int bellID,
int percent,
Atom name)
{
register xkbBellReq *req;
XkbInfoPtr xkbi;
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
GetReq(kbBell,req);
req->reqType = xkbi->codes->major_opcode;
req->xkbReqType = X_kbBell;
req->deviceSpec = deviceID;
req->window = (CARD32)window;
req->bellClass = (CARD16)bellClass;
req->bellID = (CARD16)bellID;
req->percent = percent;
req->forceSound = False;
req->eventOnly = True;
req->pitch = 0;
req->duration = 0;
req->name = (CARD32)name;
req->pad1= 0; req->pad2= 0;
UnlockDisplay(dpy);
SyncHandle();
return True;
}
Bool
XkbBell(Display *dpy,Window window,int percent,Atom name)
{
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
XBell(dpy,percent);
return False;
}
return XkbDeviceBell(dpy,window,XkbUseCoreKbd,XkbDfltXIClass,XkbDfltXIId,
percent,name);
}
Bool
XkbForceBell(Display *dpy,int percent)
{
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
XBell(dpy,percent);
return False;
}
return XkbForceDeviceBell(dpy,XkbUseCoreKbd,XkbDfltXIClass,XkbDfltXIId,
percent);
}
Bool
XkbBellEvent(Display *dpy,Window window,int percent,Atom name)
{
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
return False;
}
return XkbDeviceBellEvent(dpy,window,XkbUseCoreKbd,
XkbDfltXIClass,XkbDfltXIId,
percent,name);
}