--- /dev/null
+/* $XFree86: xc/programs/Xserver/Xext/xf86misc.c,v 3.21.2.4 1998/02/25 14:26:43 dawes Exp $ */
+
+/*
+ * Copyright (c) 1995, 1996 The XFree86 Project, Inc
+ */
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD */
+
+#define NEED_REPLIES
+#define NEED_EVENTS
+#include "X.h"
+#include "Xproto.h"
+#include "misc.h"
+#include "dixstruct.h"
+#include "extnsionst.h"
+#include "scrnintstr.h"
+#include "inputstr.h"
+#include "servermd.h"
+#define _XF86MISC_SERVER_
+#define _XF86MISC_SAVER_COMPAT_
+#include "xf86mscstr.h"
+#include "Xfuncproto.h"
+#include "xf86.h"
+#include "xf86Priv.h"
+#include "xf86_OSlib.h"
+
+#include <X11/Xtrans.h>
+#include "../os/osdep.h"
+#include <X11/Xauth.h>
+#ifndef ESIX
+#ifndef Lynx
+#include <sys/socket.h>
+#else
+#include <socket.h>
+#endif
+#else
+#include <lan/socket.h>
+#endif
+
+#include "swaprep.h"
+
+extern int xf86ScreenIndex;
+extern Bool xf86MiscModInDevEnabled;
+extern Bool xf86MiscModInDevAllowNonLocal;
+
+static int miscErrorBase;
+
+static void XF86MiscResetProc(
+#if NeedFunctionPrototypes
+ ExtensionEntry* /* extEntry */
+#endif
+);
+
+static DISPATCH_PROC(ProcXF86MiscDispatch);
+static DISPATCH_PROC(ProcXF86MiscGetKbdSettings);
+static DISPATCH_PROC(ProcXF86MiscGetMouseSettings);
+static DISPATCH_PROC(ProcXF86MiscGetSaver);
+static DISPATCH_PROC(ProcXF86MiscQueryVersion);
+static DISPATCH_PROC(ProcXF86MiscSetKbdSettings);
+static DISPATCH_PROC(ProcXF86MiscSetMouseSettings);
+static DISPATCH_PROC(ProcXF86MiscSetSaver);
+static DISPATCH_PROC(SProcXF86MiscDispatch);
+static DISPATCH_PROC(SProcXF86MiscGetKbdSettings);
+static DISPATCH_PROC(SProcXF86MiscGetMouseSettings);
+static DISPATCH_PROC(SProcXF86MiscGetSaver);
+static DISPATCH_PROC(SProcXF86MiscQueryVersion);
+static DISPATCH_PROC(SProcXF86MiscSetKbdSettings);
+static DISPATCH_PROC(SProcXF86MiscSetMouseSettings);
+static DISPATCH_PROC(SProcXF86MiscSetSaver);
+
+static unsigned char XF86MiscReqCode = 0;
+
+extern InputInfo inputInfo;
+
+void
+XFree86MiscExtensionInit()
+{
+ ExtensionEntry* extEntry;
+
+ if (
+ (extEntry = AddExtension(XF86MISCNAME,
+ XF86MiscNumberEvents,
+ XF86MiscNumberErrors,
+ ProcXF86MiscDispatch,
+ SProcXF86MiscDispatch,
+ XF86MiscResetProc,
+ StandardMinorOpcode))) {
+ XF86MiscReqCode = (unsigned char)extEntry->base;
+ miscErrorBase = extEntry->errorBase;
+ }
+}
+
+/*ARGSUSED*/
+static void
+XF86MiscResetProc (extEntry)
+ ExtensionEntry* extEntry;
+{
+}
+
+static int
+ProcXF86MiscQueryVersion(client)
+ register ClientPtr client;
+{
+ xXF86MiscQueryVersionReply rep;
+ register int n;
+
+ REQUEST_SIZE_MATCH(xXF86MiscQueryVersionReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.majorVersion = XF86MISC_MAJOR_VERSION;
+ rep.minorVersion = XF86MISC_MINOR_VERSION;
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swaps(&rep.majorVersion, n);
+ swaps(&rep.minorVersion, n);
+ }
+ WriteToClient(client, sizeof(xXF86MiscQueryVersionReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+/*
+ * This will go away, but remains for now for compatibility with older
+ * clients.
+ */
+static int
+ProcXF86MiscSetSaver(client)
+ register ClientPtr client;
+{
+ REQUEST(xXF86MiscSetSaverReq);
+ ScrnInfoPtr vptr;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
+
+ REQUEST_SIZE_MATCH(xXF86MiscSetSaverReq);
+
+ if (stuff->suspendTime < 0)
+ return BadValue;
+ if (stuff->offTime < 0)
+ return BadValue;
+
+ return (client->noClientException);
+}
+
+/*
+ * This will go away, but remains for now for compatibility with older
+ * clients.
+ */
+static int
+ProcXF86MiscGetSaver(client)
+ register ClientPtr client;
+{
+ REQUEST(xXF86MiscGetSaverReq);
+ xXF86MiscGetSaverReply rep;
+ register int n;
+ ScrnInfoPtr vptr;
+
+ if (stuff->screen > screenInfo.numScreens)
+ return BadValue;
+
+ vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
+
+ REQUEST_SIZE_MATCH(xXF86MiscGetSaverReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.suspendTime = 0;
+ rep.offTime = 0;
+
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.suspendTime, n);
+ swapl(&rep.offTime, n);
+ }
+ WriteToClient(client, SIZEOF(xXF86MiscGetSaverReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+ProcXF86MiscGetMouseSettings(client)
+ register ClientPtr client;
+{
+ xXF86MiscGetMouseSettingsReply rep;
+ register int n;
+
+ REQUEST_SIZE_MATCH(xXF86MiscGetMouseSettingsReq);
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.mousetype = xf86Info.mouseDev->mseType;
+#ifdef XQUEUE
+ if (xf86Info.mouseDev->mseProc == xf86XqueMseProc)
+ rep.mousetype = MTYPE_XQUEUE;
+#endif
+#if defined(USE_OSMOUSE) || defined(OSMOUSE_ONLY)
+ if (xf86Info.mouseDev->mseProc == xf86OsMouseProc)
+ rep.mousetype = MTYPE_OSMOUSE;
+#endif
+ rep.baudrate = xf86Info.mouseDev->baudRate;
+ rep.samplerate = xf86Info.mouseDev->sampleRate;
+ rep.resolution = xf86Info.mouseDev->resolution;
+ rep.buttons = xf86Info.mouseDev->buttons;
+ rep.emulate3buttons = xf86Info.mouseDev->emulate3Buttons;
+ rep.emulate3timeout = xf86Info.mouseDev->emulate3Timeout;
+ rep.chordmiddle = xf86Info.mouseDev->chordMiddle;
+ rep.flags = xf86Info.mouseDev->mouseFlags;
+ if (xf86Info.mouseDev->mseDevice)
+ rep.devnamelen = strlen(xf86Info.mouseDev->mseDevice);
+ else
+ rep.devnamelen = 0;
+ rep.length = (sizeof(xXF86MiscGetMouseSettingsReply) -
+ sizeof(xGenericReply) + ((rep.devnamelen+3) & ~3)) >> 2;
+
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.mousetype, n);
+ swapl(&rep.baudrate, n);
+ swapl(&rep.samplerate, n);
+ swapl(&rep.resolution, n);
+ swapl(&rep.buttons, n);
+ swapl(&rep.emulate3buttons, n);
+ swapl(&rep.emulate3timeout, n);
+ swapl(&rep.chordmiddle, n);
+ swapl(&rep.flags, n);
+ }
+ WriteToClient(client, SIZEOF(xXF86MiscGetMouseSettingsReply), (char *)&rep);
+ if (rep.devnamelen)
+ WriteToClient(client, rep.devnamelen, xf86Info.mouseDev->mseDevice);
+ return (client->noClientException);
+}
+
+static int
+ProcXF86MiscGetKbdSettings(client)
+ register ClientPtr client;
+{
+ xXF86MiscGetKbdSettingsReply rep;
+ register int n;
+
+ REQUEST_SIZE_MATCH(xXF86MiscGetKbdSettingsReq);
+ rep.type = X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.kbdtype = xf86Info.kbdType;
+#ifdef XQUEUE
+ if (xf86Info.kbdProc == xf86XqueKbdProc)
+ rep.kbdtype = KTYPE_XQUEUE;
+#endif
+ rep.rate = xf86Info.kbdRate;
+ rep.delay = xf86Info.kbdDelay;
+ rep.servnumlock = xf86Info.serverNumLock;
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length, n);
+ swapl(&rep.kbdtype, n);
+ swapl(&rep.rate, n);
+ swapl(&rep.delay, n);
+ }
+ WriteToClient(client, SIZEOF(xXF86MiscGetKbdSettingsReply), (char *)&rep);
+ return (client->noClientException);
+}
+
+static int
+ProcXF86MiscSetMouseSettings(client)
+ register ClientPtr client;
+{
+ int reopen, msetype, flags, baudrate, samplerate, resolution;
+
+ REQUEST(xXF86MiscSetMouseSettingsReq);
+
+ REQUEST_SIZE_MATCH(xXF86MiscSetMouseSettingsReq);
+
+ if (xf86Verbose) {
+ ErrorF("SetMouseSettings - type: %d brate: %d srate: %d chdmid: %d\n",
+ stuff->mousetype, stuff->baudrate,
+ stuff->samplerate, stuff->chordmiddle);
+ ErrorF(" em3but: %d em3tim: %d res: %d flags: %d\n",
+ stuff->emulate3buttons, stuff->emulate3timeout,
+ stuff->resolution, stuff->flags);
+ }
+ if (stuff->mousetype > MTYPE_OSMOUSE
+ || stuff->mousetype < MTYPE_MICROSOFT)
+ return miscErrorBase + XF86MiscBadMouseProtocol;
+#ifdef OSMOUSE_ONLY
+ if (stuff->mousetype != MTYPE_OSMOUSE)
+ return miscErrorBase + XF86MiscBadMouseProtocol;
+#else
+#ifndef XQUEUE
+ if (stuff->mousetype == MTYPE_XQUEUE)
+ return miscErrorBase + XF86MiscBadMouseProtocol;
+#endif
+#ifndef USE_OSMOUSE
+ if (stuff->mousetype == MTYPE_OSMOUSE)
+ return miscErrorBase + XF86MiscBadMouseProtocol;
+#endif
+#endif /* OSMOUSE_ONLY */
+
+ if (stuff->emulate3timeout < 0)
+ return BadValue;
+
+ if (stuff->mousetype == MTYPE_LOGIMAN
+ && !(stuff->baudrate == 1200 || stuff->baudrate == 9600) )
+ return miscErrorBase + XF86MiscBadMouseBaudRate;
+ if (stuff->mousetype == MTYPE_LOGIMAN && stuff->samplerate)
+ return miscErrorBase + XF86MiscBadMouseCombo;
+
+ samplerate = xf86Info.mouseDev->sampleRate;
+ resolution = xf86Info.mouseDev->resolution;
+ baudrate = xf86Info.mouseDev->baudRate;
+ flags = xf86Info.mouseDev->mouseFlags;
+ msetype = xf86Info.mouseDev->mseType;
+#ifdef XQUEUE
+ if (xf86Info.mouseDev->mseProc == xf86XqueMseProc)
+ msetype = MTYPE_XQUEUE;
+#endif
+#if defined(USE_OSMOUSE) || defined(OSMOUSE_ONLY)
+ if (xf86Info.mouseDev->mseProc == xf86OsMouseProc)
+ msetype = MTYPE_OSMOUSE;
+#endif
+
+ reopen = 0;
+
+ if (stuff->mousetype != msetype)
+ if (stuff->mousetype == MTYPE_XQUEUE
+ || stuff->mousetype == MTYPE_OSMOUSE
+ || msetype == MTYPE_XQUEUE
+ || msetype == MTYPE_OSMOUSE)
+ return miscErrorBase + XF86MiscBadMouseProtocol;
+ else {
+ reopen++;
+ msetype = stuff->mousetype;
+ }
+
+ if (stuff->flags & MF_REOPEN) {
+ reopen++;
+ stuff->flags &= ~MF_REOPEN;
+ }
+ if (stuff->mousetype != MTYPE_OSMOUSE
+ && stuff->mousetype != MTYPE_XQUEUE
+ && stuff->mousetype != MTYPE_PS_2
+ && stuff->mousetype != MTYPE_BUSMOUSE
+ && stuff->mousetype != MTYPE_IMPS2
+ && stuff->mousetype != MTYPE_THINKINGPS2
+ && stuff->mousetype != MTYPE_MMANPLUSPS2
+ && stuff->mousetype != MTYPE_GLIDEPOINTPS2
+ && stuff->mousetype != MTYPE_NETPS2
+ && stuff->mousetype != MTYPE_NETSCROLLPS2
+ && stuff->mousetype != MTYPE_SYSMOUSE)
+ {
+ if (stuff->baudrate < 1200)
+ return miscErrorBase + XF86MiscBadMouseBaudRate;
+ if (stuff->baudrate % 1200 != 0
+ || stuff->baudrate < 1200 || stuff->baudrate > 9600)
+ return miscErrorBase + XF86MiscBadMouseBaudRate;
+ if (xf86Info.mouseDev->baudRate != stuff->baudrate) {
+ reopen++;
+ baudrate = stuff->baudrate;
+ }
+ }
+ if (stuff->flags & (MF_CLEAR_DTR|MF_CLEAR_RTS))
+ if (stuff->mousetype != MTYPE_MOUSESYS)
+ return miscErrorBase + XF86MiscBadMouseFlags;
+ else if (xf86Info.mouseDev->mouseFlags != stuff->flags) {
+ reopen++;
+ flags = stuff->flags;
+ }
+
+ if (stuff->mousetype != MTYPE_OSMOUSE
+ && stuff->mousetype != MTYPE_XQUEUE
+ && stuff->mousetype != MTYPE_BUSMOUSE)
+ {
+ if (stuff->samplerate < 0)
+ return BadValue;
+
+ if (xf86Info.mouseDev->sampleRate != stuff->samplerate) {
+ reopen++;
+ samplerate = stuff->samplerate;
+ }
+ }
+
+ if (stuff->resolution < 0)
+ return BadValue;
+ if (xf86Info.mouseDev->resolution != stuff->resolution) {
+ reopen++;
+ resolution = stuff->resolution;
+ }
+
+#if 0
+ /* Ignore the buttons field */
+ if (xf86Info.mouseDev->buttons != stuff->buttons)
+ /* we cannot change this field on the fly... */
+ return BadValue;
+#endif
+
+ if (stuff->chordmiddle)
+ if (stuff->emulate3buttons
+ || !(stuff->mousetype == MTYPE_MICROSOFT
+ || stuff->mousetype == MTYPE_LOGIMAN) )
+ return miscErrorBase + XF86MiscBadMouseCombo;
+
+ xf86Info.mouseDev->chordMiddle = stuff->chordmiddle!=0;
+ xf86Info.mouseDev->emulate3Buttons = stuff->emulate3buttons!=0;
+ xf86Info.mouseDev->emulate3Timeout = stuff->emulate3timeout;
+
+ if (reopen && msetype != MTYPE_OSMOUSE && msetype != MTYPE_XQUEUE) {
+
+ (xf86Info.mouseDev->mseProc)(xf86Info.pMouse, DEVICE_CLOSE);
+
+ xf86Info.mouseDev->mseType = msetype;
+ xf86Info.mouseDev->mouseFlags = flags;
+ xf86Info.mouseDev->baudRate = baudrate;
+ xf86Info.mouseDev->sampleRate = samplerate;
+ xf86Info.mouseDev->resolution = resolution;
+
+ xf86Info.pMouse->public.on = FALSE;
+ xf86AllowMouseOpenFail = TRUE;
+ xf86MouseInit(xf86Info.mouseDev);
+ (xf86Info.mouseDev->mseProc)(xf86Info.pMouse, DEVICE_ON);
+ }
+
+ if (xf86Verbose)
+ ErrorF("SetMouseSettings - Succeeded\n");
+ return (client->noClientException);
+}
+
+static int
+ProcXF86MiscSetKbdSettings(client)
+ register ClientPtr client;
+{
+ REQUEST(xXF86MiscSetKbdSettingsReq);
+
+ REQUEST_SIZE_MATCH(xXF86MiscSetKbdSettingsReq);
+
+ if (xf86Verbose)
+ ErrorF("SetKbdSettings - type: %d rate: %d delay: %d snumlk: %d\n",
+ stuff->kbdtype, stuff->rate,
+ stuff->delay, stuff->servnumlock);
+ if (stuff->rate < 0)
+ return BadValue;
+ if (stuff->delay < 0)
+ return BadValue;
+ if (stuff->kbdtype < KTYPE_UNKNOWN || stuff->kbdtype > KTYPE_XQUEUE)
+ return miscErrorBase + XF86MiscBadKbdType;
+
+ if (xf86Info.kbdRate!=stuff->rate || xf86Info.kbdDelay!=stuff->delay) {
+ char rad;
+
+ xf86Info.kbdRate = stuff->rate;
+ xf86Info.kbdDelay = stuff->delay;
+ if (xf86Info.kbdDelay <= 375) rad = 0x00;
+ else if (xf86Info.kbdDelay <= 625) rad = 0x20;
+ else if (xf86Info.kbdDelay <= 875) rad = 0x40;
+ else rad = 0x60;
+
+ if (xf86Info.kbdRate <= 2) rad |= 0x1F;
+ else if (xf86Info.kbdRate >= 30) rad |= 0x00;
+ else rad |= ((58/xf86Info.kbdRate)-2);
+
+ xf86SetKbdRepeat(rad);
+ }
+#if 0 /* Not done yet */
+ xf86Info.kbdType = stuff->kbdtype;
+ xf86Info.serverNumLock = stuff->servnumlock!=0;
+#endif
+
+ if (xf86Verbose)
+ ErrorF("SetKbdSettings - Succeeded\n");
+ return (client->noClientException);
+}
+
+static int
+ProcXF86MiscDispatch (client)
+ register ClientPtr client;
+{
+ REQUEST(xReq);
+ switch (stuff->data)
+ {
+ case X_XF86MiscQueryVersion:
+ return ProcXF86MiscQueryVersion(client);
+ case X_XF86MiscGetSaver:
+ return ProcXF86MiscGetSaver(client);
+ case X_XF86MiscSetSaver:
+ return ProcXF86MiscSetSaver(client);
+ case X_XF86MiscGetMouseSettings:
+ return ProcXF86MiscGetMouseSettings(client);
+ case X_XF86MiscGetKbdSettings:
+ return ProcXF86MiscGetKbdSettings(client);
+ default:
+ if (!xf86MiscModInDevEnabled)
+ return miscErrorBase + XF86MiscModInDevDisabled;
+ if (xf86MiscModInDevAllowNonLocal || LocalClient (client)) {
+ switch (stuff->data) {
+ case X_XF86MiscSetMouseSettings:
+ return ProcXF86MiscSetMouseSettings(client);
+ case X_XF86MiscSetKbdSettings:
+ return ProcXF86MiscSetKbdSettings(client);
+ default:
+ return BadRequest;
+ }
+ } else
+ return miscErrorBase + XF86MiscModInDevClientNotLocal;
+ }
+}
+
+static int
+SProcXF86MiscQueryVersion(client)
+ register ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscQueryVersionReq);
+ swaps(&stuff->length, n);
+ return ProcXF86MiscQueryVersion(client);
+}
+
+static int
+SProcXF86MiscGetSaver(client)
+ ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscGetSaverReq);
+ swaps(&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXF86MiscGetSaverReq);
+ swaps(&stuff->screen, n);
+ return ProcXF86MiscGetSaver(client);
+}
+
+static int
+SProcXF86MiscSetSaver(client)
+ ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscSetSaverReq);
+ swaps(&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXF86MiscSetSaverReq);
+ swaps(&stuff->screen, n);
+ swapl(&stuff->suspendTime, n);
+ swapl(&stuff->offTime, n);
+ return ProcXF86MiscSetSaver(client);
+}
+
+static int
+SProcXF86MiscGetMouseSettings(client)
+ ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscGetMouseSettingsReq);
+ swaps(&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXF86MiscGetMouseSettingsReq);
+ return ProcXF86MiscGetMouseSettings(client);
+}
+
+static int
+SProcXF86MiscGetKbdSettings(client)
+ ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscGetKbdSettingsReq);
+ swaps(&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXF86MiscGetKbdSettingsReq);
+ return ProcXF86MiscGetKbdSettings(client);
+}
+
+static int
+SProcXF86MiscSetMouseSettings(client)
+ ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscSetMouseSettingsReq);
+ swaps(&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXF86MiscSetMouseSettingsReq);
+ swapl(&stuff->mousetype, n);
+ swapl(&stuff->baudrate, n);
+ swapl(&stuff->samplerate, n);
+ swapl(&stuff->resolution, n);
+ swapl(&stuff->buttons, n);
+ swapl(&stuff->emulate3timeout, n);
+ swapl(&stuff->flags, n);
+ return ProcXF86MiscSetMouseSettings(client);
+}
+
+static int
+SProcXF86MiscSetKbdSettings(client)
+ ClientPtr client;
+{
+ register int n;
+ REQUEST(xXF86MiscSetKbdSettingsReq);
+ swaps(&stuff->length, n);
+ REQUEST_SIZE_MATCH(xXF86MiscSetKbdSettingsReq);
+ swapl(&stuff->kbdtype, n);
+ swapl(&stuff->rate, n);
+ swapl(&stuff->delay, n);
+ return ProcXF86MiscSetKbdSettings(client);
+}
+
+static int
+SProcXF86MiscDispatch (client)
+ register ClientPtr client;
+{
+ REQUEST(xReq);
+ switch (stuff->data)
+ {
+ case X_XF86MiscQueryVersion:
+ return SProcXF86MiscQueryVersion(client);
+ case X_XF86MiscGetSaver:
+ return SProcXF86MiscGetSaver(client);
+ case X_XF86MiscSetSaver:
+ return SProcXF86MiscSetSaver(client);
+ case X_XF86MiscGetMouseSettings:
+ return SProcXF86MiscGetMouseSettings(client);
+ case X_XF86MiscGetKbdSettings:
+ return SProcXF86MiscGetKbdSettings(client);
+ default:
+ if (!xf86MiscModInDevEnabled)
+ return miscErrorBase + XF86MiscModInDevDisabled;
+ if (xf86MiscModInDevAllowNonLocal || LocalClient (client)) {
+ switch (stuff->data) {
+ case X_XF86MiscSetMouseSettings:
+ return SProcXF86MiscSetMouseSettings(client);
+ case X_XF86MiscSetKbdSettings:
+ return SProcXF86MiscSetKbdSettings(client);
+ default:
+ return BadRequest;
+ }
+ } else
+ return miscErrorBase + XF86MiscModInDevClientNotLocal;
+ }
+}
+