aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/Xxf86misc
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/Xxf86misc')
-rw-r--r--nx-X11/lib/Xxf86misc/Imakefile40
-rw-r--r--nx-X11/lib/Xxf86misc/XF86Misc.c406
-rw-r--r--nx-X11/lib/Xxf86misc/XF86Misc.man217
-rw-r--r--nx-X11/lib/Xxf86misc/Xxf86misc-def.cpp14
4 files changed, 677 insertions, 0 deletions
diff --git a/nx-X11/lib/Xxf86misc/Imakefile b/nx-X11/lib/Xxf86misc/Imakefile
new file mode 100644
index 000000000..db46af416
--- /dev/null
+++ b/nx-X11/lib/Xxf86misc/Imakefile
@@ -0,0 +1,40 @@
+XCOMM $XFree86: xc/lib/Xxf86misc/Imakefile,v 3.3 2002/10/16 00:37:34 dawes Exp $
+XCOMM $XdotOrg: xc/lib/Xxf86misc/Imakefile,v 1.3 2005/05/14 18:35:56 alanc Exp $
+
+#define DoNormalLib NormalLibXxf86misc
+#define DoSharedLib SharedLibXxf86misc
+#define DoExtraLib SharedLibXxf86misc
+#define DoDebugLib DebugLibXxf86misc
+#define DoProfileLib ProfileLibXxf86misc
+#define LibName Xxf86misc
+#define SoRev SOXXF86MISCREV
+#define LibHeaders NO
+
+#include <Threads.tmpl>
+
+#ifdef SharedXxf86miscReqs
+REQUIREDLIBS = SharedXxf86miscReqs
+#endif
+
+XF86MISCSRCS = XF86Misc.c
+XF86MISCOBJS = XF86Misc.o
+
+#if Malloc0ReturnsNull
+ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
+#endif
+
+ DEFINES = $(ALLOC_DEFINES)
+ SRCS = $(XF86MISCSRCS)
+ OBJS = $(XF86MISCOBJS)
+ LINTLIBS = $(LINTXLIB)
+
+#define IncludeSharedObjectInNormalLib
+
+#include <Library.tmpl>
+
+InstallGenManPage(XF86Misc,$(LIBMANDIR),$(LIBMANSUFFIX))
+#if ExpandManNames
+InstallGenManPageAliases(XF86Misc,$(LIBMANDIR),$(LIBMANSUFFIX),XF86MiscQueryExtension XF86MiscQueryVersion XF86MiscGetSaver XF86MiscSetSaver XF86MiscGetMouseSettings XF86MiscSetMouseSettings XF86MiscGetKbdSettings XF86MiscSetKbdSettings)
+#endif
+
+DependTarget()
diff --git a/nx-X11/lib/Xxf86misc/XF86Misc.c b/nx-X11/lib/Xxf86misc/XF86Misc.c
new file mode 100644
index 000000000..b0669d527
--- /dev/null
+++ b/nx-X11/lib/Xxf86misc/XF86Misc.c
@@ -0,0 +1,406 @@
+/* $XFree86: xc/lib/Xxf86misc/XF86Misc.c,v 3.12 2002/11/20 04:04:57 dawes Exp $ */
+
+/*
+ * Copyright (c) 1995, 1996 The XFree86 Project, Inc
+ */
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD */
+
+#define NEED_EVENTS
+#define NEED_REPLIES
+#include <X11/Xlibint.h>
+#include <X11/extensions/xf86mscstr.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+
+static XExtensionInfo _xf86misc_info_data;
+static XExtensionInfo *xf86misc_info = &_xf86misc_info_data;
+static char *xf86misc_extension_name = XF86MISCNAME;
+
+#define XF86MiscCheckExtension(dpy,i,val) \
+ XextCheckExtension (dpy, i, xf86misc_extension_name, val)
+
+/*****************************************************************************
+ * *
+ * private utility routines *
+ * *
+ *****************************************************************************/
+
+static int close_display(Display *dpy, XExtCodes *codes);
+
+static /* const */ XExtensionHooks xf86misc_extension_hooks = {
+ NULL, /* create_gc */
+ NULL, /* copy_gc */
+ NULL, /* flush_gc */
+ NULL, /* free_gc */
+ NULL, /* create_font */
+ NULL, /* free_font */
+ close_display, /* close_display */
+ NULL, /* wire_to_event */
+ NULL, /* event_to_wire */
+ NULL, /* error */
+ NULL, /* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, xf86misc_info,
+ xf86misc_extension_name,
+ &xf86misc_extension_hooks,
+ 0, NULL)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, xf86misc_info)
+
+
+/*****************************************************************************
+ * *
+ * public XFree86-Misc Extension routines *
+ * *
+ *****************************************************************************/
+
+Bool XF86MiscQueryExtension (dpy, event_basep, error_basep)
+ Display *dpy;
+ int *event_basep, *error_basep;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+
+ if (XextHasExtension(info)) {
+ *event_basep = info->codes->first_event;
+ *error_basep = info->codes->first_error;
+ return True;
+ } else {
+ return False;
+ }
+}
+
+Bool XF86MiscQueryVersion(dpy, majorVersion, minorVersion)
+ Display* dpy;
+ int* majorVersion;
+ int* minorVersion;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscQueryVersionReply rep;
+ xXF86MiscQueryVersionReq *req;
+
+ XF86MiscCheckExtension (dpy, info, False);
+ LockDisplay(dpy);
+ GetReq(XF86MiscQueryVersion, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscQueryVersion;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+ *majorVersion = rep.majorVersion;
+ *minorVersion = rep.minorVersion;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ if (*majorVersion > 0 || *minorVersion > 5)
+ XF86MiscSetClientVersion(dpy);
+
+ return True;
+}
+
+Bool
+XF86MiscSetClientVersion(Display *dpy)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xXF86MiscSetClientVersionReq *req;
+
+ XF86MiscCheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscSetClientVersion, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscSetClientVersion;
+ req->major = XF86MISC_MAJOR_VERSION;
+ req->minor = XF86MISC_MINOR_VERSION;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool XF86MiscGetMouseSettings(dpy, mouseinfo)
+ Display* dpy;
+ XF86MiscMouseSettings *mouseinfo;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscGetMouseSettingsReply rep;
+ xXF86MiscGetMouseSettingsReq *req;
+
+ XF86MiscCheckExtension (dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscGetMouseSettings, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscGetMouseSettings;
+ if (!_XReply(dpy, (xReply *)&rep,
+ (SIZEOF(xXF86MiscGetMouseSettingsReply) - SIZEOF(xReply))>>2,
+ xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
+ mouseinfo->type = rep.mousetype;
+ mouseinfo->baudrate = rep.baudrate;
+ mouseinfo->samplerate = rep.samplerate;
+ mouseinfo->resolution = rep.resolution;
+ mouseinfo->buttons = rep.buttons;
+ mouseinfo->emulate3buttons = rep.emulate3buttons;
+ mouseinfo->emulate3timeout = rep.emulate3timeout;
+ mouseinfo->chordmiddle = rep.chordmiddle;
+ mouseinfo->flags = rep.flags;
+ if (rep.devnamelen > 0) {
+ if (!(mouseinfo->device = Xcalloc(rep.devnamelen + 1, 1))) {
+ _XEatData(dpy, (rep.devnamelen+3) & ~3);
+ Xfree(mouseinfo->device);
+ return False;
+ }
+ _XReadPad(dpy, mouseinfo->device, rep.devnamelen);
+ } else
+ mouseinfo->device = NULL;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool XF86MiscGetKbdSettings(dpy, kbdinfo)
+ Display* dpy;
+ XF86MiscKbdSettings *kbdinfo;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscGetKbdSettingsReply rep;
+ xXF86MiscGetKbdSettingsReq *req;
+
+ XF86MiscCheckExtension (dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscGetKbdSettings, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscGetKbdSettings;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
+ kbdinfo->type = rep.kbdtype;
+ kbdinfo->rate = rep.rate;
+ kbdinfo->delay = rep.delay;
+ kbdinfo->servnumlock = rep.servnumlock;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool XF86MiscSetMouseSettings(dpy, mouseinfo)
+ Display* dpy;
+ XF86MiscMouseSettings *mouseinfo;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscSetMouseSettingsReq *req;
+ int majorVersion, minorVersion;
+
+ XF86MiscCheckExtension (dpy, info, False);
+ XF86MiscQueryVersion(dpy, &majorVersion, &minorVersion);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscSetMouseSettings, req);
+
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscSetMouseSettings;
+ req->mousetype = mouseinfo->type;
+ req->baudrate = mouseinfo->baudrate;
+ req->samplerate = mouseinfo->samplerate;
+ req->resolution = mouseinfo->resolution;
+ req->buttons = mouseinfo->buttons;
+ req->emulate3buttons = mouseinfo->emulate3buttons;
+ req->emulate3timeout = mouseinfo->emulate3timeout;
+ req->chordmiddle = mouseinfo->chordmiddle;
+ req->flags = mouseinfo->flags;
+ if (majorVersion > 0 || minorVersion > 5) {
+ int len;
+ if ((len = strlen(mouseinfo->device))) {
+ req->devnamelen = len + 1;
+ len = (req->devnamelen + 3) >> 2;
+ SetReqLen(req,len,len);
+ Data(dpy, mouseinfo->device, req->devnamelen);
+ }
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool XF86MiscSetKbdSettings(dpy, kbdinfo)
+ Display* dpy;
+ XF86MiscKbdSettings *kbdinfo;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscSetKbdSettingsReq *req;
+
+ XF86MiscCheckExtension (dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscSetKbdSettings, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscSetKbdSettings;
+ req->kbdtype = kbdinfo->type;
+ req->rate = kbdinfo->rate;
+ req->delay = kbdinfo->delay;
+ req->servnumlock = kbdinfo->servnumlock;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+int XF86MiscSetGrabKeysState(dpy, enable)
+ Display* dpy;
+ Bool enable;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscSetGrabKeysStateReply rep;
+ xXF86MiscSetGrabKeysStateReq *req;
+
+ XF86MiscCheckExtension (dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscSetGrabKeysState, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscSetGrabKeysState;
+ req->enable = enable;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return rep.status;
+}
+
+Bool XF86MiscGetFilePaths(dpy, filpaths)
+ Display* dpy;
+ XF86MiscFilePaths *filpaths;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscGetFilePathsReply rep;
+ xXF86MiscGetFilePathsReq *req;
+
+ XF86MiscCheckExtension (dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscGetFilePaths, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscGetFilePaths;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
+ if (rep.configlen) {
+ if (!(filpaths->configfile = Xcalloc(rep.configlen + 1, 1))) {
+ _XEatData(dpy, ((rep.configlen+3) & ~3) + ((rep.modulelen+3) & ~3)
+ + ((rep.loglen+3) & ~3));
+ return False;
+ }
+ }
+
+ if (rep.modulelen) {
+ if (!(filpaths->modulepath = Xcalloc(rep.modulelen + 1, 1))) {
+ _XEatData(dpy, ((rep.configlen+3) & ~3) + ((rep.modulelen+3) & ~3)
+ + ((rep.loglen+3) & ~3));
+ if (filpaths->configfile)
+ Xfree(filpaths->configfile);
+ return False;
+ }
+ }
+
+ if (rep.loglen) {
+ if (!(filpaths->logfile = Xcalloc(rep.loglen + 1, 1))) {
+ _XEatData(dpy, ((rep.configlen+3) & ~3) + ((rep.modulelen+3) & ~3)
+ + ((rep.loglen+3) & ~3));
+ if (filpaths->configfile)
+ Xfree(filpaths->configfile);
+ if (filpaths->modulepath)
+ Xfree(filpaths->modulepath);
+ return False;
+ }
+ }
+
+ if (rep.configlen)
+ _XReadPad(dpy, filpaths->configfile, rep.configlen);
+ else
+ filpaths->configfile = "";
+
+ if (rep.modulelen)
+ _XReadPad(dpy, filpaths->modulepath, rep.modulelen);
+ else
+ filpaths->modulepath = "";
+
+ if (rep.loglen)
+ _XReadPad(dpy, filpaths->logfile, rep.loglen);
+ else
+ filpaths->logfile = "";
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Status XF86MiscPassMessage(dpy, screen, msgtype, msgval, retmsg)
+ Display* dpy;
+ int screen;
+ const char* msgtype;
+ const char* msgval;
+ char** retmsg;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXF86MiscPassMessageReply rep;
+ xXF86MiscPassMessageReq *req;
+ int len;
+
+ XF86MiscCheckExtension (dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(XF86MiscPassMessage, req);
+ req->reqType = info->codes->major_opcode;
+ req->xf86miscReqType = X_XF86MiscPassMessage;
+ req->screen = screen;
+ if ((len = strlen(msgtype))) {
+ req->typelen = len + 1;
+ len = (req->typelen + 3) >> 2;
+ SetReqLen(req,len,len);
+ Data(dpy, msgtype, req->typelen);
+ }
+ if ((len = strlen(msgval))) {
+ req->vallen = len + 1;
+ len = (req->vallen + 3) >> 2;
+ SetReqLen(req,len,len);
+ Data(dpy, msgval, req->vallen);
+ }
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadImplementation;
+ }
+
+ if (rep.mesglen) {
+ if (!(*retmsg = Xcalloc(rep.mesglen + 1, 1))) {
+ _XEatData(dpy, ((rep.mesglen+3) & ~3));
+ return BadAlloc;
+ }
+ _XReadPad(dpy, *retmsg, rep.mesglen);
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return rep.status;
+}
+
diff --git a/nx-X11/lib/Xxf86misc/XF86Misc.man b/nx-X11/lib/Xxf86misc/XF86Misc.man
new file mode 100644
index 000000000..2c80dff0b
--- /dev/null
+++ b/nx-X11/lib/Xxf86misc/XF86Misc.man
@@ -0,0 +1,217 @@
+.\" $XdotOrg: xc/lib/Xxf86misc/XF86Misc.man,v 1.2 2004/04/23 19:23:08 eich Exp $
+.\" $TOG: XF86Misc.man /main/7 1997/07/19 10:30:32 kaleb $
+.\"
+.\"
+.\"
+.\" Copyright (c) 1996 Joe Moss, The XFree86 Project
+.\"
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/doc/man/XF86Misc.man,v 3.12 2002/12/22 00:46:54 dawes Exp $
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.TH XF86MISC __libmansuffix__ __vendorversion__ "X FUNCTIONS"
+.SH NAME
+XF86MiscQueryExtension, XF86MiscQueryVersion, XF86MiscGetMouseSettings, XF86MiscSetMouseSettings, XF86MiscGetKbdSettings, XF86MiscSetKbdSettings \- Extension library for the XFree86-Misc X extension.
+.SH SYNTAX
+.nf
+.LP
+\&#include <X11/extensions/xf86misc.h>
+.LP
+Bool XF86MiscQueryExtension(
+ Display *\fIdisplay\fP\^,
+ int *\fIevent_base_return\fP\^,
+ int *\fIerror_base_return\fP\^);
+.LP
+Bool XF86MiscQueryVersion(
+ Display *\fIdisplay\fP\^,
+ int *\fImajor_version_return\fP\^,
+ int *\fIminor_version_return\fP\^);
+.ig
+.LP
+Status XF86MiscGetSaver(
+ Display *\fIdisplay\fP\^,
+ int \fIscreen\fP\^,
+ int *\fIsuspend_time_return\fP\^,
+ int *\fIoff_time_return\fP\^);
+.LP
+Status XF86MiscSetSaver(
+ Display *\fIdisplay\fP\^,
+ int \fIscreen\fP\^,
+ int \fIsuspend_time\fP\^,
+ int \fIoff_time\fP\^);
+..
+.LP
+Status XF86MiscGetMouseSettings(
+ Display *\fIdisplay\fP\^,
+ XF86MiscMouseSettings *\fImseinfo\fP\^);
+.LP
+Status XF86MiscSetMouseSettings(
+ Display *\fIdisplay\fP\^,
+ XF86MiscMouseSettings *\fImseinfo\fP\^);
+.LP
+Status XF86MiscGetKbdSettings(
+ Display *\fIdisplay\fP\^,
+ XF86MiscKbdSettings *\fIkbdinfo\fP\^);
+.LP
+Status XF86MiscSetKbdSettings(
+ Display *\fIdisplay\fP\^,
+ XF86MiscKbdSettings *\fIkbdinfo\fP\^);
+.fi
+.SH ARGUMENTS
+.IP \fIdisplay\fP 2i
+Specifies the connection to the X server.
+.IP \fIscreen\fP 2i
+Specifies which screen number the setting apply to.
+.IP \fIevent_base_return\fP 2i
+Returns the base event number for the extension.
+.IP \fIerror_base_return\fP 2i
+Returns the base error number for the extension.
+.IP \fImajor_version_return\fP 2i
+Returns the major version number of the extension.
+.IP \fIminor_version_return\fP 2i
+Returns the minor version number of the extension.
+.ig
+.IP \fIsuspend_time_return\fP 2i
+Returns the number of seconds of idle time the server
+will wait before activating the monitor's suspend mode.
+.IP \fIoff_time_return\fP 2i
+Returns the number of seconds of idle time the server
+will wait before causing the monitor to powerdown.
+.IP \fIsuspend_time\fP 2i
+Specifies the number of seconds of idle time the server
+should wait before activating the monitor's suspend mode.
+.IP \fIoff_time\fP 2i
+Specifies the number of seconds of idle time the server
+should wait before causing the monitor to powerdown.
+..
+.IP \fImseinfo\fP 2i
+Specifies a structure which contains the mouse parameters.
+.IP \fIkbdinfo\fP 2i
+Specifies a structure which contains the keyboard parameters.
+.SH STRUCTURES
+.nf
+.ta 3i
+\fIMouse:\fP
+typedef struct {
+ char *device; /\(** returned path to device */
+ int type; /\(** mouse protocol */
+ int baudrate; /\(** 1200, 2400, 4800, or 9600 */
+ int samplerate; /\(** samples per second */
+ int resolution; /\(** resolution, count per inch */
+ int buttons; /\(** number of buttons */
+ Bool emulate3buttons; /\(** Button1+Button3 -> Button2 ? */
+ int emulate3timeout; /\(** in milliseconds */
+ Bool chordmiddle; /\(** Button1+Button3 == Button2 ? */
+ int flags; /\(** Device open flags */
+} XF86MiscMouseSettings;
+.LP
+\fIKeyboard:\fP
+typedef struct {
+ int type; /\(** of keyboard: 84-key, 101-key, Xqueue */
+ int rate; /\(** repeat rate */
+ int delay; /\(** delay until repeat starts */
+ Bool servnumlock; /\(** Server handles NumLock ? */
+} XF86MiscKbdSettings;
+.fi
+.SH DESCRIPTION
+These functions provide an interface to the
+\fIXFree86-Misc\fP extension
+which allows various server settings to be
+queried and changed dynamically.
+Applications that use these functions must be linked with
+.ZN -lXxf86misc
+.SS "POWER-SAVER FUNCTIONS"
+The
+.ZN XF86MiscGetSaver
+and
+.ZN XF86MiscSetSaver
+functions have been removed. This functionality is now provided by
+the DPMS extension.
+.SS "MOUSE FUNCTIONS"
+Mouse parameters can be queried using the function
+.ZN XF86MiscGetMouseSettings .
+The structure pointed to by its second argument is filled in
+with the current mouse settings.
+.PP
+Not all fields are valid in all cases.
+For example, when the protocol indicates a bus mouse (i.e. the
+type field has value
+.ZN MTYPE_BUSMOUSE
+as defined in
+.ZN xf86misc.h ),
+then the value in the
+.ZN baudrate
+field should be ignored as it does not apply to bus mice.
+.PP
+The
+.ZN samplerate
+field contains the resolution in lines per inch when
+using the Hitachi tablet protocol.
+.PP
+The device field of the structure points to dynamically
+allocated storage which should be freed by the caller.
+.PP
+Any of the fields of the structure can be altered and then passed
+to the
+.ZN XF86MiscSetMouseSettings
+function to change their value in the server,
+with the following restrictions:
+.RS 5
+.IP 1) 3
+The device can not be changed
+.IP 2) 3
+The protocol can not be changed to or from Xqueue or OsMouse
+.IP 3) 3
+The buttons field can not be changed
+.IP 4) 3
+Invalid combinations of parameters are not allowed
+.RE
+.PP
+The server will generate an error if any of the above is attempted,
+except the first \- the contents of the device field are simply ignored.
+.PP
+A change of the protocol causes the device to be closed and reopened.
+Changes to the baud rate, sample rate, resolution or flags,
+when applicable to the
+selected protocol, also cause a reopen of the device.
+A reopen can be forced by using the MF_REOPEN flag, except in the
+case of the OsMouse and Xqueue protocols which ignore all attempts
+to reopen the device.
+.SS "KEYBOARD FUNCTIONS"
+The
+.ZN XF86MiscGetKbdSettings
+function allows you to retrieve the current keyboard-related
+settings from the server.
+.PP
+Using the
+.ZN XF86MiscSetKbdSettings
+function, the keyboard autorepeat delay and rate can be set.
+Requests to change the
+.ZN type
+and
+.ZN servnumlock
+fields are ignored (except for checking for an invalid keyboard type).
+This is expected to change in a future release.
+.SS "OTHER FUNCTIONS"
+Two functions,
+.ZN XF86MiscQueryExtension
+and
+.ZN XF86MiscQueryVersion ,
+are provided which allow the client to query some information
+regarding the extension itself.
+.SH PREDEFINED VALUES
+The header file
+.ZN X11/extensions/xf86misc.h
+contains definitions for
+.IP \fBMTYPE_\fP* 1i
+Mouse protocols
+.IP \fBKTYPE_\fP* 1i
+Keyboard types
+.IP \fBMF_\fP* 1i
+Mouse flags
+.SH "SEE ALSO"
+xset(__appmansuffix__), __xconfigfile__(__filemansuffix__)
+.SH AUTHORS
+Joe Moss and David Dawes, The XFree86 Project, Inc.
+
diff --git a/nx-X11/lib/Xxf86misc/Xxf86misc-def.cpp b/nx-X11/lib/Xxf86misc/Xxf86misc-def.cpp
new file mode 100644
index 000000000..74b1df8e6
--- /dev/null
+++ b/nx-X11/lib/Xxf86misc/Xxf86misc-def.cpp
@@ -0,0 +1,14 @@
+LIBRARY XXF86MISC
+EXPORTS
+ XF86MiscQueryExtension
+ XF86MiscQueryVersion
+ XF86MiscSetKbdSettings
+ XF86MiscGetKbdSettings
+ XF86MiscSetMouseSettings
+ XF86MiscGetMouseSettings
+ XF86MiscGetFilePaths
+; XF86MiscSetSaver
+; XF86MiscGetSaver
+
+
+/* $XFree86: xc/lib/Xxf86misc/Xxf86misc-def.cpp,v 1.1 2000/08/09 23:40:14 dawes Exp $ */