2006-11-25 10:22:40 -07:00
|
|
|
.\"
|
|
|
|
.\" $XFree86: xc/doc/man/Xi/XChMMap.man,v 1.2 2001/01/27 18:20:21 dawes Exp $
|
|
|
|
.\"
|
|
|
|
.\"
|
|
|
|
.\" Copyright ([\d,\s]*) by Hewlett-Packard Company, Ardent Computer,
|
|
|
|
.\"
|
|
|
|
.\" Permission to use, copy, modify, distribute, and sell this documentation
|
|
|
|
.\" for any purpose and without fee is hereby granted, provided that the above
|
|
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
|
|
.\" Ardent, and Hewlett-Packard make no representations about the
|
|
|
|
.\" suitability for any purpose of the information in this document. It is
|
|
|
|
.\" provided \`\`as is'' without express or implied warranty.
|
|
|
|
.\"
|
|
|
|
.\" $Xorg: XChMMap.man,v 1.3 2000/08/17 19:41:56 cpqbld Exp $
|
|
|
|
.ds xL Programming With Xlib
|
2007-11-24 09:45:12 -07:00
|
|
|
.TH XGetDeviceModifierMapping __LIB_MAN_SUFFIX__ __xorgversion__ "X FUNCTIONS"
|
2006-11-25 10:22:40 -07:00
|
|
|
.SH NAME
|
|
|
|
XGetDeviceModifierMapping, XSetDeviceModifierMapping \- query or change device modifier mappings
|
|
|
|
.SH SYNTAX
|
|
|
|
\fB
|
|
|
|
.HP
|
|
|
|
int XSetDeviceModifierMapping(\^Display *\fIdisplay\fP\^, XDevice
|
|
|
|
*\fIdevice\fP\^, XModifierKeymap *\fImodmap\fP\^);
|
|
|
|
.HP
|
|
|
|
XModifierKeymap *XGetDeviceModifierMapping(\^Display *\fIdisplay\fP\^, XDevice
|
|
|
|
*\fIdevice\fP\^);
|
|
|
|
.fi
|
|
|
|
\fP
|
|
|
|
.SH ARGUMENTS
|
|
|
|
.TP 12
|
|
|
|
.I display
|
|
|
|
Specifies the connection to the X server.
|
|
|
|
.TP 12
|
|
|
|
.I device
|
|
|
|
Specifies the device whose modifier mapping is to be queried or modified.
|
|
|
|
.TP 12
|
|
|
|
.I modmap
|
|
|
|
Specifies a pointer to the \fIXModifierKeymap\fP structure.
|
|
|
|
.SH DESCRIPTION
|
|
|
|
The \fIXSetDeviceModifierMapping\fP
|
|
|
|
request specifies the KeyCodes of the keys (if any) that are to be used
|
|
|
|
as modifiers for the specified device.
|
|
|
|
If it succeeds, the X server generates a \fIDeviceMappingNotify\fP
|
|
|
|
event, and \fIXSetDeviceModifierMapping\fP returns \fIMappingSuccess\fP.
|
|
|
|
X permits at most eight modifier keys.
|
|
|
|
If more than eight are specified in the
|
|
|
|
\fIXModifierKeymap\fP structure, a \fIBadLength\fP
|
|
|
|
error results.
|
|
|
|
.LP
|
|
|
|
The modifiermap member of the \fIXModifierKeymap\fP
|
|
|
|
structure contains eight sets of max_keypermod KeyCodes,
|
|
|
|
one for each modifier in the order
|
|
|
|
\fIShift\fP,
|
|
|
|
\fILock\fP,
|
|
|
|
\fIControl\fP,
|
|
|
|
\fIMod1\fP,
|
|
|
|
\fIMod2\fP,
|
|
|
|
\fIMod3\fP,
|
|
|
|
\fIMod4\fP,
|
|
|
|
and
|
|
|
|
\fIMod5\fP.
|
|
|
|
Only nonzero KeyCodes have meaning in each set,
|
|
|
|
and zero KeyCodes are ignored.
|
|
|
|
In addition, all of the nonzero KeyCodes must be in the range specified by
|
|
|
|
min_keycode and max_keycode as returned by
|
|
|
|
\fIXListInputDevices\fP, or a \fIBadValue\fP
|
|
|
|
error results.
|
|
|
|
No KeyCode may appear twice in the entire map,
|
|
|
|
or a
|
|
|
|
\fIBadValue\fP
|
|
|
|
error results.
|
|
|
|
.LP
|
|
|
|
An X server can impose restrictions on how modifiers can be changed,
|
|
|
|
for example,
|
|
|
|
if certain keys do not generate up transitions in hardware,
|
|
|
|
if auto-repeat cannot be disabled on certain keys,
|
|
|
|
or if multiple modifier keys are not supported.
|
|
|
|
If some such restriction is violated,
|
|
|
|
the status reply is
|
|
|
|
\fIMappingFailed\fP,
|
|
|
|
and none of the modifiers are changed.
|
|
|
|
If the new KeyCodes specified for a modifier differ from those
|
|
|
|
currently defined and any (current or new) keys for that modifier are
|
|
|
|
in the logically down state,
|
|
|
|
\fIXSetDeviceModifierMapping\fP
|
|
|
|
returns \fIMappingBusy\fP,
|
|
|
|
and none of the modifiers is changed.
|
|
|
|
.LP
|
|
|
|
\fIXSetDeviceModifierMapping\fP
|
|
|
|
can generate \fIBadLength\P, \fIBadDevice\fP, \fIBadMatch\fP, \fIBadAlloc\fP,
|
|
|
|
and \fIBadValue\fP errors.
|
|
|
|
.LP
|
|
|
|
The
|
|
|
|
\fIXGetDeviceModifierMapping\fP
|
|
|
|
request returns a pointer to a newly created
|
|
|
|
\fIXModifierKeymap\fP
|
|
|
|
structure that contains the keys being used as modifiers.
|
|
|
|
The structure should be freed after use by calling
|
|
|
|
\fIXFreeModifierMapping \fP.
|
|
|
|
If only zero values appear in the set for any modifier,
|
|
|
|
that modifier is disabled.
|
|
|
|
.LP
|
|
|
|
\fIXGetDeviceModifierMapping\fP
|
|
|
|
can generate \fIBadDevice\fP and \fIBadMatch\fP errors.
|
|
|
|
.SH STRUCTURES
|
|
|
|
The \fIXModifierKeymap\fP structure contains:
|
|
|
|
.LP
|
|
|
|
.nf
|
|
|
|
typedef struct {
|
|
|
|
int max_keypermod;
|
|
|
|
KeyCode *modifiermap;
|
|
|
|
} XModifierKeymap;
|
|
|
|
.fi
|
|
|
|
.LP
|
|
|
|
.SH DIAGNOSTICS
|
|
|
|
.TP 12
|
|
|
|
\fIBadLength\fP
|
|
|
|
More than eight keys were specified in the
|
|
|
|
\fIXModifierKeymap\fP structure.
|
|
|
|
.TP 12
|
|
|
|
\fIBadAlloc\fP
|
|
|
|
The server failed to allocate the requested resource or server memory.
|
|
|
|
.TP 12
|
|
|
|
\fIBadDevice\fP
|
|
|
|
An invalid device was specified. The specified device does not exist or has
|
|
|
|
not been opened by this client via \fIXOpenInputDevice\fP. This error may
|
|
|
|
also occur if the specified device is the X keyboard or X pointer device.
|
|
|
|
.TP 12
|
|
|
|
\fIBadMatch\fP
|
|
|
|
This error may occur if an \fIXGetDeviceModifierMapping\fP
|
|
|
|
or \fIXChangeDeviceModifierMapping\fP request was made
|
|
|
|
specifying
|
|
|
|
a device that has no keys.
|
|
|
|
.TP 12
|
|
|
|
\fIBadValue\fP
|
|
|
|
Some numeric value falls outside the range of values accepted by the request.
|
|
|
|
Unless a specific range is specified for an argument, the full range defined
|
|
|
|
by the argument's type is accepted. Any argument defined as a set of
|
|
|
|
alternatives can generate this error.
|
|
|
|
.SH "SEE ALSO"
|
2007-11-24 09:45:12 -07:00
|
|
|
XSetDeviceKeyMapping(3)
|
2006-11-25 10:22:40 -07:00
|
|
|
.br
|
2007-11-24 09:45:12 -07:00
|
|
|
XSetDeviceButtonMapping(3)
|
2006-11-25 10:22:40 -07:00
|
|
|
.br
|
|
|
|
\fI\*(xL\fP
|