summaryrefslogtreecommitdiff
path: root/man/xkb
diff options
context:
space:
mode:
authorDennis Arellano <Dennis.Arellano@Sun.COM>1999-08-19 00:00:00 -0700
committerAlan Coopersmith <alan.coopersmith@sun.com>2007-04-27 23:50:45 -0700
commitd9954c6f6f3a8c406b946acd0d034ff83c656156 (patch)
treefb39c1b6b38330b3ff6463e494cfead9ca606cc6 /man/xkb
parentf640a49b5e2ebf29f9d655df544c63bf826f619a (diff)
Add man pages for XKB API's
Man pages originally written for X11R6.4 integration to Solaris 7 11/99 Sun bug id 4258344: Add new XKB API manpages for 6.4 upgrade <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=4258344> (Volunteer needed to convert prototypes in man pages to ANSI C style...)
Diffstat (limited to 'man/xkb')
-rw-r--r--man/xkb/XkbActionCtrls.man146
-rw-r--r--man/xkb/XkbAddDeviceLedInfo.man131
-rw-r--r--man/xkb/XkbAddGeomColor.man110
-rw-r--r--man/xkb/XkbAddGeomDoodad.man123
-rw-r--r--man/xkb/XkbAddGeomKey.man86
-rw-r--r--man/xkb/XkbAddGeomKeyAlias.man99
-rw-r--r--man/xkb/XkbAddGeomOutline.man94
-rw-r--r--man/xkb/XkbAddGeomOverlay.man105
-rw-r--r--man/xkb/XkbAddGeomOverlayKey.man95
-rw-r--r--man/xkb/XkbAddGeomOverlayRow.man100
-rw-r--r--man/xkb/XkbAddGeomProperty.man100
-rw-r--r--man/xkb/XkbAddGeomRow.man88
-rw-r--r--man/xkb/XkbAddGeomSection.man137
-rw-r--r--man/xkb/XkbAddGeomShape.man103
-rw-r--r--man/xkb/XkbAddSymInterpret.man81
-rw-r--r--man/xkb/XkbAllocClientMap.man178
-rw-r--r--man/xkb/XkbAllocCompatMap.man122
-rw-r--r--man/xkb/XkbAllocControls.man150
-rw-r--r--man/xkb/XkbAllocDeviceInfo.man114
-rw-r--r--man/xkb/XkbAllocDeviceLedInfo.man125
-rw-r--r--man/xkb/XkbAllocGeomColors.man82
-rw-r--r--man/xkb/XkbAllocGeomDoodads.man81
-rw-r--r--man/xkb/XkbAllocGeomKeyAliases.man86
-rw-r--r--man/xkb/XkbAllocGeomKeys.man80
-rw-r--r--man/xkb/XkbAllocGeomOutlines.man86
-rw-r--r--man/xkb/XkbAllocGeomOverlayKey.man76
-rw-r--r--man/xkb/XkbAllocGeomOverlayRows.man85
-rw-r--r--man/xkb/XkbAllocGeomOverlays.man75
-rw-r--r--man/xkb/XkbAllocGeomPoints.man80
-rw-r--r--man/xkb/XkbAllocGeomProps.man83
-rw-r--r--man/xkb/XkbAllocGeomRows.man80
-rw-r--r--man/xkb/XkbAllocGeomSectionDoodads.man87
-rw-r--r--man/xkb/XkbAllocGeomSections.man85
-rw-r--r--man/xkb/XkbAllocGeomShapes.man86
-rw-r--r--man/xkb/XkbAllocGeometry.man97
-rw-r--r--man/xkb/XkbAllocIndicatorMaps.man75
-rw-r--r--man/xkb/XkbAllocKeyboard.man62
-rw-r--r--man/xkb/XkbAllocNames.man132
-rw-r--r--man/xkb/XkbAllocServerMap.man135
-rw-r--r--man/xkb/XkbApplyCompatMapToKey.man376
-rw-r--r--man/xkb/XkbBell.man344
-rw-r--r--man/xkb/XkbBellEvent.man341
-rw-r--r--man/xkb/XkbChangeControls.man336
-rw-r--r--man/xkb/XkbChangeDeviceInfo.man88
-rw-r--r--man/xkb/XkbChangeEnabledControls.man180
-rw-r--r--man/xkb/XkbChangeIndicators.man172
-rw-r--r--man/xkb/XkbChangeMap.man149
-rw-r--r--man/xkb/XkbChangeNames.man200
-rw-r--r--man/xkb/XkbChangeTypesOfKey.man222
-rw-r--r--man/xkb/XkbComputeRowBounds.man64
-rw-r--r--man/xkb/XkbComputeSectionBounds.man62
-rw-r--r--man/xkb/XkbComputeShapeBounds.man92
-rw-r--r--man/xkb/XkbComputeShapeTop.man87
-rw-r--r--man/xkb/XkbCopyKeyType.man106
-rw-r--r--man/xkb/XkbCopyKeyTypes.man130
-rw-r--r--man/xkb/XkbDeviceBell.man313
-rw-r--r--man/xkb/XkbDeviceBellEvent.man344
-rw-r--r--man/xkb/XkbFindOverlayForKey.man66
-rw-r--r--man/xkb/XkbForceBell.man326
-rw-r--r--man/xkb/XkbForceDeviceBell.man319
-rw-r--r--man/xkb/XkbFreeClientMap.man215
-rw-r--r--man/xkb/XkbFreeCompatMap.man178
-rw-r--r--man/xkb/XkbFreeComponentList.man54
-rw-r--r--man/xkb/XkbFreeControls.man127
-rw-r--r--man/xkb/XkbFreeDeviceInfo.man190
-rw-r--r--man/xkb/XkbFreeGeomColors.man96
-rw-r--r--man/xkb/XkbFreeGeomDoodads.man92
-rw-r--r--man/xkb/XkbFreeGeomKeyAliases.man105
-rw-r--r--man/xkb/XkbFreeGeomKeys.man74
-rw-r--r--man/xkb/XkbFreeGeomOutlines.man74
-rw-r--r--man/xkb/XkbFreeGeomOverlayKeys.man102
-rw-r--r--man/xkb/XkbFreeGeomOverlayRows.man102
-rw-r--r--man/xkb/XkbFreeGeomOverlays.man102
-rw-r--r--man/xkb/XkbFreeGeomPoints.man102
-rw-r--r--man/xkb/XkbFreeGeomProperties.man101
-rw-r--r--man/xkb/XkbFreeGeomRows.man102
-rw-r--r--man/xkb/XkbFreeGeomSections.man102
-rw-r--r--man/xkb/XkbFreeGeomShapes.man101
-rw-r--r--man/xkb/XkbFreeGeometry.man104
-rw-r--r--man/xkb/XkbFreeIndicatorMaps.man58
-rw-r--r--man/xkb/XkbFreeKeyboard.man76
-rw-r--r--man/xkb/XkbFreeNames.man107
-rw-r--r--man/xkb/XkbFreeServerMap.man201
-rw-r--r--man/xkb/XkbGetAccessXTimeout.man162
-rw-r--r--man/xkb/XkbGetAutoRepeatRate.man100
-rw-r--r--man/xkb/XkbGetAutoResetControls.man105
-rw-r--r--man/xkb/XkbGetBounceKeysDelay.man226
-rw-r--r--man/xkb/XkbGetCompatMap.man130
-rw-r--r--man/xkb/XkbGetControls.man176
-rw-r--r--man/xkb/XkbGetControlsChanges.man244
-rw-r--r--man/xkb/XkbGetDetectableAutorepeat.man104
-rw-r--r--man/xkb/XkbGetDeviceButtonActions.man132
-rw-r--r--man/xkb/XkbGetDeviceInfo.man265
-rw-r--r--man/xkb/XkbGetDeviceInfoChanges.man76
-rw-r--r--man/xkb/XkbGetDeviceLedInfo.man171
-rw-r--r--man/xkb/XkbGetGeometry.man84
-rw-r--r--man/xkb/XkbGetIndicatorChanges.man169
-rw-r--r--man/xkb/XkbGetIndicatorMap.man101
-rw-r--r--man/xkb/XkbGetIndicatorState.man93
-rw-r--r--man/xkb/XkbGetKeyActions.man108
-rw-r--r--man/xkb/XkbGetKeyBehaviors.man106
-rw-r--r--man/xkb/XkbGetKeyExplicitComponents.man168
-rw-r--r--man/xkb/XkbGetKeyModifierMap.man109
-rw-r--r--man/xkb/XkbGetKeySyms.man115
-rw-r--r--man/xkb/XkbGetKeyTypes.man98
-rw-r--r--man/xkb/XkbGetKeyVirtualModMap.man119
-rw-r--r--man/xkb/XkbGetKeyboard.man106
-rw-r--r--man/xkb/XkbGetKeyboardByName.man405
-rw-r--r--man/xkb/XkbGetMap.man335
-rw-r--r--man/xkb/XkbGetNameChanges.man84
-rw-r--r--man/xkb/XkbGetNamedGeometry.man173
-rw-r--r--man/xkb/XkbGetNamedIndicator.man138
-rw-r--r--man/xkb/XkbGetNames.man149
-rw-r--r--man/xkb/XkbGetSlowKeysDelay.man229
-rw-r--r--man/xkb/XkbGetState.man69
-rw-r--r--man/xkb/XkbGetStickyKeysOptions.man129
-rw-r--r--man/xkb/XkbGetUpdatedMap.man276
-rw-r--r--man/xkb/XkbGetVirtualMods.man222
-rw-r--r--man/xkb/XkbGetXlibControls.man71
-rw-r--r--man/xkb/XkbIgnoreExtension.man89
-rw-r--r--man/xkb/XkbInitCanonicalKeyTypes.man98
-rw-r--r--man/xkb/XkbKeyAction.man147
-rw-r--r--man/xkb/XkbKeyActionEntry.man153
-rw-r--r--man/xkb/XkbKeyActionsPtr.man146
-rw-r--r--man/xkb/XkbKeyGroupInfo.man210
-rw-r--r--man/xkb/XkbKeyGroupWidth.man86
-rw-r--r--man/xkb/XkbKeyGroupsWidth.man76
-rw-r--r--man/xkb/XkbKeyHasActions.man137
-rw-r--r--man/xkb/XkbKeyNumActions.man125
-rw-r--r--man/xkb/XkbKeyNumGroups.man322
-rw-r--r--man/xkb/XkbKeyNumSyms.man77
-rw-r--r--man/xkb/XkbKeySymEntry.man95
-rw-r--r--man/xkb/XkbKeySymsOffset.man78
-rw-r--r--man/xkb/XkbKeySymsPtr.man78
-rw-r--r--man/xkb/XkbKeyType.man84
-rw-r--r--man/xkb/XkbKeyTypeIndex.man70
-rw-r--r--man/xkb/XkbKeyTypesForCoreSymbols.man248
-rw-r--r--man/xkb/XkbKeycodeToKeysym.man76
-rw-r--r--man/xkb/XkbKeysymToModifiers.man64
-rw-r--r--man/xkb/XkbLatchGroup.man97
-rw-r--r--man/xkb/XkbLatchModifiers.man120
-rw-r--r--man/xkb/XkbLibraryVersion.man104
-rw-r--r--man/xkb/XkbListComponents.man181
-rw-r--r--man/xkb/XkbLockGroup.man95
-rw-r--r--man/xkb/XkbLockModifiers.man118
-rw-r--r--man/xkb/XkbLookupKeyBinding.man104
-rw-r--r--man/xkb/XkbLookupKeySym.man89
-rw-r--r--man/xkb/XkbModActionVMods.man58
-rw-r--r--man/xkb/XkbNoteControlsChanges.man214
-rw-r--r--man/xkb/XkbNoteDeviceChanges.man149
-rw-r--r--man/xkb/XkbNoteIndicatorChanges.man137
-rw-r--r--man/xkb/XkbNoteNameChanges.man106
-rw-r--r--man/xkb/XkbOpenDisplay.man170
-rw-r--r--man/xkb/XkbOutOfRangeGroupInfo.man196
-rw-r--r--man/xkb/XkbOutOfRangeGroupNumber.man197
-rw-r--r--man/xkb/XkbPtrActionX.man114
-rw-r--r--man/xkb/XkbPtrActionY.man114
-rw-r--r--man/xkb/XkbQueryExtension.man146
-rw-r--r--man/xkb/XkbRefreshKeyboardMapping.man78
-rw-r--r--man/xkb/XkbResizeDeviceButtonActions.man105
-rw-r--r--man/xkb/XkbResizeKeyActions.man114
-rw-r--r--man/xkb/XkbResizeKeySyms.man112
-rw-r--r--man/xkb/XkbResizeKeyType.man155
-rw-r--r--man/xkb/XkbSAActionSetCtrls.man162
-rw-r--r--man/xkb/XkbSAGroup.man67
-rw-r--r--man/xkb/XkbSAPtrDfltValue.man117
-rw-r--r--man/xkb/XkbSARedirectSetVMods.man121
-rw-r--r--man/xkb/XkbSARedirectSetVModsMask.man134
-rw-r--r--man/xkb/XkbSARedirectVMods.man126
-rw-r--r--man/xkb/XkbSARedirectVModsMask.man127
-rw-r--r--man/xkb/XkbSAScreen.man112
-rw-r--r--man/xkb/XkbSASetGroup.man72
-rw-r--r--man/xkb/XkbSASetPtrDfltValue.man116
-rw-r--r--man/xkb/XkbSASetScreen.man109
-rw-r--r--man/xkb/XkbSelectEventDetails.man163
-rw-r--r--man/xkb/XkbSelectEvents.man186
-rw-r--r--man/xkb/XkbSetAccessXTimeout.man215
-rw-r--r--man/xkb/XkbSetAutoRepeatRate.man114
-rw-r--r--man/xkb/XkbSetAutoResetControls.man116
-rw-r--r--man/xkb/XkbSetBounceKeysDelay.man221
-rw-r--r--man/xkb/XkbSetCompatMap.man219
-rw-r--r--man/xkb/XkbSetControls.man181
-rw-r--r--man/xkb/XkbSetDebuggingFlags.man193
-rw-r--r--man/xkb/XkbSetDetectableAutorepeat.man119
-rw-r--r--man/xkb/XkbSetDeviceButtonActions.man112
-rw-r--r--man/xkb/XkbSetDeviceInfo.man235
-rw-r--r--man/xkb/XkbSetIgnoreLockMods.man214
-rw-r--r--man/xkb/XkbSetIndicatorMap.man194
-rw-r--r--man/xkb/XkbSetMap.man397
-rw-r--r--man/xkb/XkbSetModActionVMods.man69
-rw-r--r--man/xkb/XkbSetNamedIndicator.man141
-rw-r--r--man/xkb/XkbSetNames.man226
-rw-r--r--man/xkb/XkbSetPtrActionX.man120
-rw-r--r--man/xkb/XkbSetPtrActionY.man120
-rw-r--r--man/xkb/XkbSetServerInternalMods.man218
-rw-r--r--man/xkb/XkbSetXlibControls.man119
-rw-r--r--man/xkb/XkbTranslateKeyCode.man89
-rw-r--r--man/xkb/XkbTranslateKeySym.man101
-rw-r--r--man/xkb/XkbUpdateMapFromCore.man130
-rw-r--r--man/xkb/XkbVirtualModsToReal.man144
200 files changed, 27520 insertions, 0 deletions
diff --git a/man/xkb/XkbActionCtrls.man b/man/xkb/XkbActionCtrls.man
new file mode 100644
index 00000000..53a90f81
--- /dev/null
+++ b/man/xkb/XkbActionCtrls.man
@@ -0,0 +1,146 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbActionCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbActionCtrls \- Returns the ctrls fields of act converted to an unsigned int
+.SH SYNOPSIS
+.B unsigned int XkbActionCtrls macro
+(
+.I act
+)
+.br
+ XkbCtrlsAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract controls
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbCtrlsAction structure change the state of the
+boolean controls.
+
+The
+.I type
+field can have any one of the values shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Controls Action Types
+_
+Type Effect
+_
+XkbSA_SetControls T{
+A key press enables any boolean controls specified in the ctrls fields that were
+not already enabled at
+the time of the key press.
+A key release disables any controls enabled by the key press.
+This action can cause XkbControlsNotify events.
+T}
+XkbSA_LockControls T{
+If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables
+any controls specified in
+the ctrls fields that were not already enabled at the time of the key press.
+.br
+If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release
+disables any controls
+specified in the ctrls fields that were not already disabled at the time of the
+key press.
+.br
+This action can cause XkbControlsNotify events.
+T}
+.TE
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 2.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 2 Control Action Flags
+_
+Flag Meaning
+_
+XkbSA_LockNoLock T{
+If set, and the action type is XkbSA_LockControls, the server only disables
+controls.
+T}
+XkbSA_LockNoUnlock T{
+If set, and the action type is XkbSA_LockControls, the server only enables
+controls.
+T}
+.TE
+
+The XkbSA_SetControls action implements a key that enables a boolean control
+when pressed and disables it
+when released. The XkbSA_LockControls action is used to implement a key that
+toggles the state of a
+boolean control each time it is pressed and released. The XkbSA_LockNoLock and
+XkbSA_LockNoUnlock flags
+allow modifying the toggling behavior to only unlock or only lock the boolean
+control.
+
+The
+.I ctrls0, ctrls1, ctrls2,
+and
+.I ctrls3
+fields represent the boolean controls in the
+.I enabled_ctrls
+field of the controls structure. Xkb macros, to convert between the two formats.
+
+.I XkbActionCtrls
+returns the
+.I ctrls
+fields of
+.I act
+converted to an unsigned int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbCtrlsAction {
+ unsigned char type; /* XkbSA_SetControls, XkbSA_LockControls */
+ unsigned char flags; /* with type, controls enabling and disabling
+of controls */
+ unsigned char ctrls3; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls2; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls1; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls0; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ } XkbCtrlsAction;
+.fi
diff --git a/man/xkb/XkbAddDeviceLedInfo.man b/man/xkb/XkbAddDeviceLedInfo.man
new file mode 100644
index 00000000..83e8cd35
--- /dev/null
+++ b/man/xkb/XkbAddDeviceLedInfo.man
@@ -0,0 +1,131 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddDeviceLedInfo \- Initialize an XkbDeviceLedInfoRec structure
+.SH SYNOPSIS
+.B XkbDeviceLedInfoPtr XkbAddDeviceLedInfo
+(
+.I device_info,
+.I led_class,
+.I led_id
+)
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ unsigned int \fIled_class\fP\^;
+.br
+ unsigned int \fIled_id\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+structure in which to add LED info
+.TP
+.I \- led_class
+input extension class for LED device of interest
+.TP
+.I \- led_id
+input extension ID for LED device of interest
+.SH DESCRIPTION
+.LP
+.I XkbAddDeviceLedInfo
+first checks to see whether an entry matching
+.I led_class
+and
+.I led_id
+already exists in the
+.I device_info->leds
+array. If it finds a matching entry, it returns a pointer to that entry. Otherwise, it checks to be sure
+there is at least one empty entry in
+.I device_info->leds
+and extends it if there is not enough room. It then increments
+.I device_info->num_leds
+and fills in the next available entry in
+.I device_info->leds
+with
+.I led_class
+and
+.I led_id.
+
+If successful,
+.I XkbAddDeviceLedInfo
+returns a pointer to the XkbDeviceLedInfoRec structure that was initialized. If unable to allocate
+sufficient storage, or if
+.I device_info
+points to an invalid XkbDeviceInfoRec structure, or if
+.I led_class
+or
+.I led_id
+are inappropriate,
+.I XkbAddDeviceLedInfo
+returns NULL.
+
+To allocate additional space for button actions in an XkbDeviceInfoRec structure, use
+.I XkbResizeDeviceButtonActions.
+
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /* name for device */
+ Atom type; /* name for class of devices */
+ unsigned short device_spec; /* device of interest */
+ Bool has_own_state; /* True=>this device has its own state */
+ unsigned short supported; /* bits indicating supported capabilities */
+ unsigned short unsupported; /* bits indicating unsupported capabilities */
+ unsigned short num_btns; /* number of entries in btn_acts */
+ XkbAction * btn_acts; /* button actions */
+ unsigned short sz_leds; /* total number of entries in LEDs vector */
+ unsigned short num_leds; /* number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /* LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+
+ typedef struct {
+ unsigned short led_class; /* class for this LED device*/
+ unsigned short led_id; /* ID for this LED device */
+ unsigned int phys_indicators; /* bits for which LEDs physically present */
+ unsigned int maps_present; /* bits for which LEDs have maps in maps */
+ unsigned int names_present; /* bits for which LEDs are in names */
+ unsigned int state; /* 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /* names for LEDs */
+ XkbIndicatorMapRec maps; /* indicator maps for each LED */
+ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbResizeDeviceButtonActions (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomColor.man b/man/xkb/XkbAddGeomColor.man
new file mode 100644
index 00000000..e691d624
--- /dev/null
+++ b/man/xkb/XkbAddGeomColor.man
@@ -0,0 +1,110 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomColor __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomColor \- Add one color name to an existing keyboard geometry
+description
+.SH SYNOPSIS
+.B XkbColorPtr XkbAddGeomColor
+(
+.I geom,
+.I spec,
+.I pixel
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ char * \fIspec\fP\^;
+.br
+ unsigned int \fIpixel\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- spec
+color to be added
+.TP
+.I \- pixel
+color to be added
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomColor
+adds the specified color
+.I name
+and
+.I pixel
+to the specified geometry
+.I geom.
+The top-level geometry description includes a list of up to MaxColors (32)
+.I color names.
+A color
+.I name
+is a string whose interpretation is not specified by Xkb and neither is the
+.I pixel
+value's interpretation. All other geometry data structures refer to colors using
+their indices in this global list or pointers to colors in this list.
+.I XkbAddGeomColor
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the color. To allocate space for an arbitrary number of colors to a
+geometry, use the
+.I XkbAllocGeomColors
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbColor {
+ unsigned int pixel; /* color */
+ char * spec; /* color name */
+ } XkbColorRec,*XkbColorPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomColors (__libmansuffix__)
+
diff --git a/man/xkb/XkbAddGeomDoodad.man b/man/xkb/XkbAddGeomDoodad.man
new file mode 100644
index 00000000..f6be93cb
--- /dev/null
+++ b/man/xkb/XkbAddGeomDoodad.man
@@ -0,0 +1,123 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomDoodad __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomDoodad \- Add one doodad to a section of a keyboard geometry or to the
+top-level geometry
+.SH SYNOPSIS
+.B XkbDoodadPtr XkbAddGeomDoodad
+(
+.I geom ,
+.I section,
+.I name
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ Atom \fIname\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to which the doodad is added
+.TP
+.I \- section
+section, if any, to which the doodad is added
+.TP
+.I \- name
+name of the new doodad
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+A
+.I doodad
+describes some visible aspect of the keyboard that is not a key and is not a
+section.
+.I XkbAddGeomDoodad
+adds a doodad with name specified by
+.I name
+to the geometry
+.I geom
+if
+.I section
+is NULL or to the section of the geometry specified by
+.I section
+if
+.I section
+is not NULL.
+.I XkbAddGeomDoodad
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the doodad. If there is already a doodad with the name
+.I name
+in the doodad array for the geometry (if
+.I section
+is NULL) or the section (if
+.I section
+is non-NULL), a pointer to that doodad is returned. To allocate space for an
+arbitrary number of doodads to a section, use the
+.I XkbAllocGeomSectionDoodads
+function. To allocate space for an arbitrary number of doodads to a keyboard
+geometry, use the
+.I XkbAllocGeomDoodads
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef union _XkbDoodad {
+ XkbAnyDoodadRec any;
+ XkbShapeDoodadRec shape;
+ XkbTextDoodadRec text;
+ XkbIndicatorDoodadRec indicator;
+ XkbLogoDoodadRec logo;
+ } XkbDoodadRec, *XkbDoodadPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomDoodads (__libmansuffix__),
+.BR XkbAllocGeomSectionDoodads (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomKey.man b/man/xkb/XkbAddGeomKey.man
new file mode 100644
index 00000000..c6f8f934
--- /dev/null
+++ b/man/xkb/XkbAddGeomKey.man
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomKey \- Add one key at the end of an existing row of keys
+.SH SYNOPSIS
+.B XkbKeyPtr XkbAddGeomKey
+(
+.I row
+)
+.br
+ XkbRowPtr \fIrow\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row to be updated
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case
+the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the values of the
+element's structure from the arguments. For other functions, you must explicitly write code to fill
+the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary name. Programs that
+display images of keyboards can use geometry properties as hints, but they are not interpreted by
+Xkb. No other geometry structures refer to geometry properties.
+
+Keys are grouped into rows.
+.I XkbAddGeomKey
+adds one key to the end of the specified
+.I row.
+The key is allocated and zeroed.
+.I XkbAddGeomKey
+returns NULL if
+.I row
+is empty or if it was not able to allocate space for the key. To allocate space for an arbitrary
+number of keys to a row, use
+.I XkbAllocGeomKeys.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbKey { /* key in a row */
+ XkbKeyNameRec name; /* key name */
+ short gap; /* gap in mm/10 from previous key in row */
+ unsigned char shape_ndx; /* index of shape for key */
+ unsigned char color_ndx; /* index of color for key body */
+ } XkbKeyRec, *XkbKeyPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomKeys (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomKeyAlias.man b/man/xkb/XkbAddGeomKeyAlias.man
new file mode 100644
index 00000000..fc74c8ff
--- /dev/null
+++ b/man/xkb/XkbAddGeomKeyAlias.man
@@ -0,0 +1,99 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomKeyAlias __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomKeyAlias \- Add one key alias to an existing keyboard geometry
+description
+.SH SYNOPSIS
+.B XkbKeyAliasPtr XkbAddGeomKeyAlias
+(
+.I geom,
+.I alias,
+.I real
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ char * \fIalias\fP\^;
+.br
+ char * \fIreal\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- alias
+alias to be added
+.TP
+.I \- real
+real name to be bound to the new alias
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomKeyAlias
+adds one key alias with the value
+.I alias
+to the geometry
+.I geom,
+and associates it with the key whose real name is
+.I real. XkbAddGeomKeyAlias
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the alias. To allocate space for an arbitrary number of aliases, use
+the
+.I XkbAllocGeomKeyAliases
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct {
+ char real[XkbKeyNameLength]; /* this key name must be in the keys array */
+ char alias[XkbKeyNameLength]; /* symbolic key name as alias for the key */
+ } XkbKeyAliasRec,*XkbKeyAliasPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomKeyAliases (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomOutline.man b/man/xkb/XkbAddGeomOutline.man
new file mode 100644
index 00000000..5c1531b2
--- /dev/null
+++ b/man/xkb/XkbAddGeomOutline.man
@@ -0,0 +1,94 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomOutline __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOutline \- Add one outline to an existing shape
+.SH SYNOPSIS
+.B XkbOutlinePtr XkbAddGeomOutline
+(
+.I shape,
+.I sz_points
+)
+.br
+ XkbShapePtr \fIshape\fP\^;
+.br
+ int \fIsz_points\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape to be updated
+.TP
+.I \- sz_points
+number of points to be reserved
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+An outline consists of an arbitrary number of points.
+.I XkbAddGeomOutline
+adds an outline to the specified
+.I shape
+by reserving
+.I sz_points
+points for it. The new outline is allocated and zeroed.
+.I XkbAddGeomOutline
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space. To allocate space for an arbitrary number of outlines to a shape, use
+.I XkbAllocGeomOutlines.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOutline {
+ unsigned short num_points; /* number of points in the outline */
+ unsigned short sz_points; /* size of the points array */
+ unsigned short corner_radius; /* draw corners as circles with this radius */
+ XkbPointPtr points; /* array of points defining the outline */
+ } XkbOutlineRec, *XkbOutlinePtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomOutlines (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomOverlay.man b/man/xkb/XkbAddGeomOverlay.man
new file mode 100644
index 00000000..49791273
--- /dev/null
+++ b/man/xkb/XkbAddGeomOverlay.man
@@ -0,0 +1,105 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomOverlay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOverlay \- Add one overlay to a section
+.SH SYNOPSIS
+.B XkbOverlayPtr XkbAddGeomOverlay
+(
+.I section,
+.I name,
+.I sz_rows
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ Atom \fIname\fP\^;
+.br
+ int \fIsz_rows\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section to which an overlay will be added
+.TP
+.I \- name
+name of the overlay
+.TP
+.I \- sz_rows
+number of rows to reserve in the overlay
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomOverlay
+adds an overlay with the specified name to the specified
+.I section.
+The new overlay is created with space allocated for
+.I sz_rows
+rows. If an overlay with name
+.I name
+already exists in the section, a pointer to the existing overlay is returned.
+.I XkbAddGeomOverlay
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the overlay. To allocate space for an arbitrary number of overlays to
+a section, use the
+.I XkbAllocGeomOverlay
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOverlayRec {
+ Atom name; /* overlay name */
+ XkbSectionPtr section_under; /* the section under this overlay */
+ unsigned short num_rows; /* number of rows in the rows array */
+ unsigned short sz_rows; /* size of the rows array */
+ XkbOverlayRowPtr rows; /* array of rows in the overlay */
+ XkbBoundsPtr bounds; /* bounding box for the overlay */
+ } XkbOverlayRec,*XkbOverlayPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomOverlay (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomOverlayKey.man b/man/xkb/XkbAddGeomOverlayKey.man
new file mode 100644
index 00000000..ab3181d7
--- /dev/null
+++ b/man/xkb/XkbAddGeomOverlayKey.man
@@ -0,0 +1,95 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomOverlayKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOverlayKey \- Add a key to an existing overlay row
+.SH SYNOPSIS
+.B XkbOverlayKeyPtr XkbAddGeomOverlayKey
+(
+.I overlay,
+.I row,
+.I under
+)
+.br
+ XkbOverlayPtr \fIoverlay\fP\^;
+.br
+ XkbRowPtr \fIrow\fP\^;
+.br
+ char * \fIunder\fP\^;
+..if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+overlay to be updated
+.TP
+.I \- row
+row in overlay to be updated
+.TP
+.I \- under
+primary name of the key to be considered
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomOverlayKey
+adds one key to the
+.I row
+in the
+.I overlay.
+If there is no key named
+.I under
+in the row of the underlying section,
+.I XkbAddGeomOverlayKey
+returns NULL.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOverlayKey {
+ XkbKeyNameRec over; /* name of this overlay key */
+ XkbKeyNameRec under; /* name of the key under this overlay key */
+ } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
+.fi
+
diff --git a/man/xkb/XkbAddGeomOverlayRow.man b/man/xkb/XkbAddGeomOverlayRow.man
new file mode 100644
index 00000000..27bc528f
--- /dev/null
+++ b/man/xkb/XkbAddGeomOverlayRow.man
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomOverlayRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOverlayRow \- Add a row to an existing overlay
+.SH SYNOPSIS
+.B XkbOverlayRowPtr XkbAddGeomOverlayRow
+(
+.I overlay,
+.I row_under,
+.I sz_keys
+)
+.br
+ XkbOverlayPtr \fIoverlay\fP\^;
+.br
+ XkbRowPtr \fIrow_under\fP\^;
+.br
+ int \fIsz_keys\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+overlay to be updated
+.TP
+.I \- row_under
+row to be overlayed in the section overlay overlays
+.TP
+.I \- sz_keys
+number of keys to reserve in the row
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomOverlayRow
+adds one row to the
+.I overlay.
+The new row contains space for
+.I sz_keys
+keys. If
+. I row_under
+specifies a row that doesn't exist on the underlying section,
+.I XkbAddGeomOverlayRow
+returns NULL and doesn't change the overlay.
+.I XkbAddGeomOverlayRow
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the overlay.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOverlayRow {
+ unsigned short row_under; /* index into the row under this overlay row */
+ unsigned short num_keys; /* number of keys in the keys array */
+ unsigned short sz_keys; /* size of the keys array */
+ XkbOverlayKeyPtr keys; /* array of keys in the overlay row */
+ } XkbOverlayRowRec,*XkbOverlayRowPtr;
+
+.fi
diff --git a/man/xkb/XkbAddGeomProperty.man b/man/xkb/XkbAddGeomProperty.man
new file mode 100644
index 00000000..4d63f3f5
--- /dev/null
+++ b/man/xkb/XkbAddGeomProperty.man
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomProperty __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomProperty \- Add one property to an existing keyboard geometry
+description
+.SH SYNOPSIS
+.B XkbPropertyPtr XkbAddGeomProperty
+(
+.I geom,
+.I name,
+.I value
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ char * \fIname\fP\^;
+.br
+ char * \fIvalue\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- name
+name of the new property
+.TP
+.I \- value
+value for the new property
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomProperty
+adds one property with the specified
+.I name
+and
+.I value
+to the keyboard geometry specified by
+.I geom. XkbAddGeomProperty
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the property. To allocate space for an arbitrary number of properties,
+use the
+.I XkbAllocGeomProps
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbProperty {
+ char * name; /* property name */
+ char * value; /* property value */
+ } XkbPropertyRec,*XkbPropertyPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomProps (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomRow.man b/man/xkb/XkbAddGeomRow.man
new file mode 100644
index 00000000..a74bddb9
--- /dev/null
+++ b/man/xkb/XkbAddGeomRow.man
@@ -0,0 +1,88 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomRow \- Add a row to a section
+.SH SYNOPSIS
+.B XkbRowPtr XkbAddGeomRow
+(
+.I section,
+.I sz_keys
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ int \fIsz_keys\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section to be updated
+.TP
+.I \- sz_keys
+number of keys to be reserved
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties.
+
+One of the components of a keyboard geometry section is one or more rows of keys.
+.I XkbAddGeomRow
+adds one row to the specified
+.I section.
+The newly created row contains space for the number of keys specified in
+.I sz_keys.
+They are allocated and zeroed, but otherwise uninitialized.
+.I XkbAddGeomRow
+returns NULL if any of the parameters is empty or if it was not able to allocate space for the row. To allocate space for an arbitrary number of rows to a section, use the
+.I XkbAllocGeomRows
+function.
+.SH STRUCTURES
+.LP
+.nf
+typedef struct _XkbRow {
+ short top;
+ short left;
+ unsigned short num_keys;
+ unsigned short sz_keys;
+ int vertical;
+ XkbKeyPtr keys;
+ XkbBoundsRec bounds;
+} XkbRowRec, *XkbRowPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomRows (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomSection.man b/man/xkb/XkbAddGeomSection.man
new file mode 100644
index 00000000..2344138c
--- /dev/null
+++ b/man/xkb/XkbAddGeomSection.man
@@ -0,0 +1,137 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomSection __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomSection \- Add one section to an existing keyboard geometry
+.SH SYNOPSIS
+.B XkbSectionPtr XkbAddGeomSection
+(
+.I geom,
+.I name,
+.I sz_rows,
+.I sz_doodads,
+.I sz_overlays
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ Atom \fIname\fP\^;
+.br
+ int \fIsz_rows\fP\^;
+.br
+ int \fIsz_doodads\fP\^;
+.br
+ int \fIsz_overlays\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- name
+name of the new section
+.TP
+.I \- sz_rows
+number of rows to reserve in the section
+.TP
+.I \- sz_doodads
+number of doodads to reserve in the section
+.TP
+.I \- sz_overlays
+number of overlays to reserve in the section
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+A keyboard geometry contains an arbitrary number of sections.
+.I XkbAddGeomSection
+adds one section to an existing keyboard geometry
+.I geom.
+The new section contains space for the number of rows, doodads, and overlays
+specified by
+.I sz_rows, sz_doodads,
+and
+.I sz_overlays.
+The new section is allocated and zeroed and given the name specified by
+.I name.
+If a section with name
+.I name
+already exists in the geometry, a pointer to the existing section is returned.
+.I XkbAddGeomSection
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the section. To allocate space for an arbitrary number of sections to
+a geometry, use
+.I XkbAllocGeomSections.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct _XkbSection {
+ Atom name; /* section name */
+ unsigned char priority; /* drawing priority, 0=>highest, 255=>lowest */
+ short top; /* top coordinate of section origin */
+ short left; /* left coordinate of row origin */
+ unsigned short width; /* section width, in mm/10 */
+ unsigned short height; /* section height, in mm/10 */
+ short angle; /* angle of section rotation, counterclockwise */
+ unsigned short num_rows; /* number of rows in the rows array */
+ unsigned short num_doodads; /* number of doodads in the doodads array */
+ unsigned short num_overlays; /* number of overlays in the overlays array */
+ unsigned short sz_rows; /* size of the rows array */
+ unsigned short sz_doodads; /* size of the doodads array */
+ unsigned short sz_overlays; /* size of the overlays array */
+ XkbRowPtr rows; /* section rows array */
+ XkbDoodadPtr doodads; /* section doodads array */
+ XkbBoundsRec bounds; /* bounding box for the section, before rotation*/
+ XkbOverlayPtr overlays; /* section overlays array */
+} XkbSectionRec, *XkbSectionPtr;
+
+.fi
+.I top
+and
+.I left
+are the origin of the section, relative to the origin of the keyboard, in mm/10. angle is in 1/10 degrees.
+.SH "SEE ALSO"
+.BR XkbAllocGeomSections (__libmansuffix__)
diff --git a/man/xkb/XkbAddGeomShape.man b/man/xkb/XkbAddGeomShape.man
new file mode 100644
index 00000000..c78fcf04
--- /dev/null
+++ b/man/xkb/XkbAddGeomShape.man
@@ -0,0 +1,103 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddGeomShape __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomShape \- Add a shape to a keyboard geometry
+.SH SYNOPSIS
+.B XkbShapePtr XkbAddGeomShape
+(
+.I geom,
+.I name,
+.I sz_outlines
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ Atom \fIname\fP\^;
+.br
+ int \fIsz_outlines\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- name
+name of the new shape
+.TP
+.I \- sz_outlines
+number of outlines to be reserved
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the
+arguments. For other functions, you must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of
+keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to
+geometry properties.
+
+A geometry contains an arbitrary number of shapes, each of which is made up of an arbitrary number of outlines.
+.I XkbAddGeomShape
+adds a shape to a geometry
+.I geom
+by allocating space for
+.I sz_outlines
+outlines for it and giving it the name specified by
+.I name.
+If a shape with name
+.I name
+already exists in the geometry, a pointer to the existing shape is returned.
+.I XkbAddGeomShape
+returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary
+number of geometry shapes, use
+.I XkbAllocGeomShapes.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbShape {
+ Atom name; /* shape's name */
+ unsigned short num_outlines; /* number of outlines for the shape */
+ unsigned short sz_outlines; /* size of the outlines array */
+ XkbOutlinePtr outlines; /* array of outlines for the shape */
+ XkbOutlinePtr approx; /* pointer into the array to the approximating outline */
+ XkbOutlinePtr primary; /* pointer into the array to the primary outline */
+ XkbBoundsRec bounds; /* bounding box for the shape; encompasses all outlines */
+ } XkbShapeRec, *XkbShapePtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomShapes (__libmansuffix__)
diff --git a/man/xkb/XkbAddSymInterpret.man b/man/xkb/XkbAddSymInterpret.man
new file mode 100644
index 00000000..b9aa4f63
--- /dev/null
+++ b/man/xkb/XkbAddSymInterpret.man
@@ -0,0 +1,81 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAddSymInterpret __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddSymInterpret \- Add a symbol interpretation to the list of symbol
+interpretations in an XkbCompatRec
+.SH SYNOPSIS
+.B XkbSymInterpretPtr XkbAddSymInterpret
+(
+.I xkb,
+.I si,
+.I updateMap,
+.I changes
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbSymInterpretPtr \fIsi\fP\^;
+.br
+ Bool \fIupdateMap\fP\^;
+.br
+ XkbChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be updated
+.TP
+.I \- si
+symbol interpretation to be added
+.TP
+.I \- updateMap
+True=>apply compatibility map to keys
+.TP
+.I \- changes
+changes are put here
+.SH DESCRIPTION
+.LP
+.I XkbAddSymInterpret
+adds
+.I si
+to the list of symbol interpretations in
+.I xkb.
+If
+.I updateMap
+is True, it (re)applies the compatibility map to all of the keys on the
+keyboard. If
+.I changes
+is non-NULL, it reports the parts of the keyboard that were affected (unless
+.I updateMap
+is True, not much changes).
+.I XkbAddSymInterpret
+returns a pointer to the actual new symbol interpretation in the list or NULL if
+it failed.
diff --git a/man/xkb/XkbAllocClientMap.man b/man/xkb/XkbAllocClientMap.man
new file mode 100644
index 00000000..e371753b
--- /dev/null
+++ b/man/xkb/XkbAllocClientMap.man
@@ -0,0 +1,178 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocClientMap \- Allocate and initialize an empty client map description
+record
+.SH SYNOPSIS
+.B Status XkbAllocClientMap
+(
+.I xkb,
+.I which,
+.I type_count
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fItype_count\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to allocate client map
+.TP
+.I \- which
+mask selecting map components to allocate
+.TP
+.I \- type_count
+value of num_types field in map to be allocated
+.SH DESCRIPTION
+.LP
+Calling
+.I XkbGetMap
+should be sufficient for most applications to get client and server maps. As a
+result, most applications do not need to directly allocate client and server
+maps.
+
+If you change the number of key types or construct map components without
+loading the necessary components from the X server, do not allocate any map
+components directly using
+.I malloc
+or
+.I Xmalloc.
+Instead, use the Xkb allocators,
+.I XkbAllocClientMap,
+and
+.I XkbAllocServerMap.
+
+Similarly, use the Xkb destructors,
+.I XkbFreeClientMap,
+and
+.I XkbFreeServerMap
+instead of
+.I free
+or
+.I Xfree.
+
+.I XkbAllocClientMap
+allocates and initializes an empty client map in the
+.I map
+field of the keyboard description specified by
+.I xkb.
+The
+.I which
+parameter specifies the particular components of the client map structure to
+allocate and is a mask composed by a bitwise inclusive OR of one or more of the
+masks shown in Table 1.
+.bp
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocClientMap Masks
+_
+Mask Effect
+_
+XkbKeyTypesMask T{
+The type_count field specifies the number of entries to preallocate for the
+types field of the client map. If the type_count field is less than
+XkbNumRequiredTypes returns BadValue.
+T}
+.sp
+XkbKeySymsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the syms and key_sym_map fields of the client map. The fields are
+allocated to contain the maximum number of entries necessary for max_key_code -
+min_key_code + 1 keys.
+T}
+.sp
+XkbModifierMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the modmap field of the client map. The field is allocated to contain
+the maximum number of entries necessary for max_key_code - min_key_code + 1
+keys.
+T}
+.TE
+
+NOTE: The
+.I min_key_code
+and
+.I max_key_code
+fields of the
+.I xkb
+parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks
+are set in the
+.I which
+parameter. If they are not valid,
+.I XkbAllocClientMap
+returns BadValue.
+
+If the client map of the keyboard description is not NULL, and any fields are
+already allocated in the client map,
+.I XkbAllocClientMap
+does not overwrite the existing values; it simply ignores that part of the
+request. The only exception is the
+.I types
+array. If
+.I type_count
+is greater than the current
+.I num_types
+field of the client map,
+.I XkbAllocClientMap
+resizes the
+.I types
+array and resets the
+.I num_types
+field accordingly.
+
+If
+.I XkbAllocClientMap
+is successful, it returns Success. Otherwise, it can return either BadMatch,
+BadAlloc, or BadValue errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbAllocClientMap (__libmansuffix__),
+.BR XkbAllocServerMap (__libmansuffix__),
+.BR XkbFreeClientMap, (__libmansuffix__),
+.BR XkbFreeServerMap (__libmansuffix__),
+.BR XkbGetMap (__libmansuffix__)
diff --git a/man/xkb/XkbAllocCompatMap.man b/man/xkb/XkbAllocCompatMap.man
new file mode 100644
index 00000000..3d115861
--- /dev/null
+++ b/man/xkb/XkbAllocCompatMap.man
@@ -0,0 +1,122 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocCompatMap \- Allocate a new compatibility map if you do not already have one available
+.SH SYNOPSIS
+.B Status XkbAllocCompatMap
+(
+.I xkb,
+.I which,
+.I num_si
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fInum_si\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to allocate compat map
+.TP
+.I \- which
+mask of compatibility map components to allocate
+.TP
+.I \- num_si
+number of symbol interpretations to allocate
+.SH DESCRIPTION
+.LP
+.I xkb
+specifies the keyboard description for which compatibility maps are to be allocated. The compatibility map is the
+.I compat
+field in this structure.
+
+.I which
+specifies the compatibility map components to be allocated (see XkbGetCompatMap).
+.I which
+is an inclusive OR of the bits shown in Table 1.
+
+.TS
+c s s
+l l l.
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+.I num_si
+specifies the total number of entries to allocate in the symbol interpretation vector
+.I (xkb.compat.sym_interpret).
+
+.I XkbAllocCompatMap
+returns Success if successful, BadMatch if
+.I xkb
+is NULL, or BadAlloc if errors are encountered when attempting to allocate storage.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct {
+ KeySym sym; /* keysym of interest or NULL */
+ unsigned char flags; /* XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /* specifies how mods is interpreted */
+ unsigned char mods; /* modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /* 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /* action to bind to symbol position on key */
+ } XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetCompatMap (__libmansuffix__)
+.SH NOTES
+.LP
+Note that symbol interpretations in a compatibility map (the
+.I sym_interpret
+vector of XkbSymInterpretRec structures) are also allocated using this same function. To ensure that there is sufficient space in the symbol interpretation vector for entries to be added, use
+.I XkbAllocCompatMap
+specifying
+.I which
+as XkbSymInterpretMask and the number of free symbol interpretations needed in
+.I num_si.
diff --git a/man/xkb/XkbAllocControls.man b/man/xkb/XkbAllocControls.man
new file mode 100644
index 00000000..d62ce9b9
--- /dev/null
+++ b/man/xkb/XkbAllocControls.man
@@ -0,0 +1,150 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocControls \- Allocates an XkbControlsRec structure in the XkbDescRec
+.SH SYNOPSIS
+.B Status XkbAllocControls
+(
+.I xkb,
+.I which
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description in which to allocate ctrls rec
+.TP
+.I \- which
+mask of components of ctrls to allocate
+.SH DESCRIPTION
+.LP
+The need to allocate an XkbControlsRec structure seldom arises; Xkb creates one
+when an application calls
+.I XkbGetControls
+or a related function. For those situations where there is not an XkbControlsRec
+structure allocated in the XkbDescRec, allocate one by calling
+.I XkbAllocControls.
+
+.I XkbAllocControls
+allocates the
+.I ctrls
+field of the
+.I xkb
+parameter, initializes all fields to zero, and returns Success. If the
+.I ctrls
+field is not NULL,
+.I XkbAllocControls
+simply returns Success. If
+.I xkb
+is NULL,
+.I XkbAllocControls
+reports a BadMatch error. If the
+.I ctrls
+field could not be allocated, it reports a BadAlloc error.
+
+The
+.I which
+mask specifies the individual fields of the
+.I ctrls
+structure to be allocated and can contain any of the valid masks defined in
+Table 1.
+(SHOULD THIS COMMENT BE LEFT IN????)
+Because none of the currently existing controls have any structures associated
+with them, which is currently of little practical value in this call.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+.nh
+.SH "RETURN VALUES"
+.TP 15
+SUCCESS
+allocates the ctrls field of the xkb parameter, initializes all fields to zero
+.sp
+.in 20
+the ctrls field is not NULL
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetControls (__libmansuffix__)
diff --git a/man/xkb/XkbAllocDeviceInfo.man b/man/xkb/XkbAllocDeviceInfo.man
new file mode 100644
index 00000000..d2d028de
--- /dev/null
+++ b/man/xkb/XkbAllocDeviceInfo.man
@@ -0,0 +1,114 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocDeviceInfo \- Obtain an XkbDeviceInfoRec structure
+.SH SYNOPSIS
+.B XkbDeviceInfoPtr XkbAllocDeviceInfo
+(
+.I device_spec,
+.I n_buttons,
+.I sz_leds
+)
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIn_buttons\fP\^;
+.br
+ unsigned int \fIsz_leds\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_spec
+device ID with which structure will be used
+.TP
+.I \- n_buttons
+number of button actions to allocate space for
+.TP
+.I \- sz_leds
+number of LED feedbacks to allocate space for
+.SH DESCRIPTION
+.LP
+.I XkbAllocDeviceInfo
+allocates space for an XkbDeviceInfoRec structure and initializes that structure's
+.I device_spec
+field with the device ID specified by
+.I device_spec.
+If
+.I n_buttons
+is nonzero,
+.I n_buttons
+XkbActions are linked into the XkbDeviceInfoRec structure and initialized to zero. If
+.I sz_leds
+is nonzero,
+.I sz_leds
+XkbDeviceLedInfoRec structures are also allocated and linked into the XkbDeviceInfoRec structure. If
+you request XkbDeviceLedInfoRec structures be allocated using this request, you must initialize them
+explicitly.
+
+To obtain an XkbDeviceLedInfoRec structure, use
+.I XkbAllocDeviceLedInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /* name for device */
+ Atom type; /* name for class of devices */
+ unsigned short device_spec; /* device of interest */
+ Bool has_own_state; /* True=>this device has its own state */
+ unsigned short supported; /* bits indicating supported capabilities */
+ unsigned short unsupported; /* bits indicating unsupported capabilities */
+ unsigned short num_btns; /* number of entries in btn_acts */
+ XkbAction * btn_acts; /* button actions */
+ unsigned short sz_leds; /* total number of entries in LEDs vector */
+ unsigned short num_leds; /* number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /* LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+
+ typedef struct {
+ unsigned short led_class; /* class for this LED device*/
+ unsigned short led_id; /* ID for this LED device */
+ unsigned int phys_indicators; /* bits for which LEDs physically present */
+ unsigned int maps_present; /* bits for which LEDs have maps in maps */
+ unsigned int names_present; /* bits for which LEDs are in names */
+ unsigned int state; /* 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /* names for LEDs */
+ XkbIndicatorMapRec maps; /* indicator maps for each LED */
+ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocDeviceLedInfo (__libmansuffix__)
diff --git a/man/xkb/XkbAllocDeviceLedInfo.man b/man/xkb/XkbAllocDeviceLedInfo.man
new file mode 100644
index 00000000..ff45c1b6
--- /dev/null
+++ b/man/xkb/XkbAllocDeviceLedInfo.man
@@ -0,0 +1,125 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocDeviceLedInfo \- Obtain an XkbDeviceLedInfoRec structure
+.SH SYNOPSIS
+.B Status XkbAllocDeviceLedInfo
+(
+.I device_info,
+.I num_needed
+)
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+structure in which to allocate LED space
+.TP
+.I \- num_needed
+number of indicators to allocate space for
+.SH DESCRIPTION
+.LP
+.I XkbAllocDeviceLedInfo
+allocates space for an XkbDeviceLedInfoRec and places it in
+.I device_info.
+If
+.I num_needed
+is nonzero,
+.I num_needed
+XkbIndicatorMapRec structures are also allocated and linked into the XkbDeviceLedInfoRec structure. If you request XkbIndicatorMapRec structures be allocated using this request, you must initialize them explicitly. All other fields are initialized to zero.
+
+To initialize an XkbDeviceLedInfoRec structure, use
+.I XkbAddDeviceLedInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /* name for device */
+ Atom type; /* name for class of devices */
+ unsigned short device_spec; /* device of interest */
+ Bool has_own_state; /* True=>this device has its own state */
+ unsigned short supported; /* bits indicating supported capabilities */
+ unsigned short unsupported; /* bits indicating unsupported capabilities */
+ unsigned short num_btns; /* number of entries in btn_acts */
+ XkbAction * btn_acts; /* button actions */
+ unsigned short sz_leds; /* total number of entries in LEDs vector */
+ unsigned short num_leds; /* number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /* LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+
+ typedef struct {
+ unsigned short led_class; /* class for this LED device*/
+ unsigned short led_id; /* ID for this LED device */
+ unsigned int phys_indicators; /* bits for which LEDs physically present */
+ unsigned int maps_present; /* bits for which LEDs have maps in maps */
+ unsigned int names_present; /* bits for which LEDs are in names */
+ unsigned int state; /* 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /* names for LEDs */
+ XkbIndicatorMapRec maps; /* indicator maps for each LED */
+ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+
+.fi
+Each indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The attributes of each indicator are held in the maps array, which is an array of XkbIndicatorRec structures:
+.nf
+
+ typedef struct {
+ unsigned char flags; /* how the indicator can be changed */
+ unsigned char which_groups; /* match criteria for groups */
+ unsigned char groups; /* which keyboard groups the indicator watches */
+ unsigned char which_mods; /* match criteria for modifiers */
+ XkbModsRec mods; /* which modifiers the indicator watches */
+ unsigned int ctrls; /* which controls the indicator watches */
+ } XkbIndicatorMapRec, *XkbIndicatorMapPtr;
+
+.fi
+This indicator map specifies for each indicator:
+
+.IP \(bu 5
+The conditions under which the keyboard modifier state affects the indicator
+.IP \(bu 5
+The conditions under which the keyboard group state affects the indicator
+.IP \(bu 5
+The conditions under which the state of the boolean controls affects the indicator
+.IP \(bu 5
+The effect (if any) of attempts to explicitly change the state of the indicator using the functions XkbSetControls or XChangeKeyboardControl
+.SH "SEE ALSO"
+.BR XkbAddDeviceLedInfo (__libmansuffix__),
+.BR XkbSetControls (__libmansuffix__)
diff --git a/man/xkb/XkbAllocGeomColors.man b/man/xkb/XkbAllocGeomColors.man
new file mode 100644
index 00000000..9efe169d
--- /dev/null
+++ b/man/xkb/XkbAllocGeomColors.man
@@ -0,0 +1,82 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomColors \- Allocate geometry colors
+.SH SYNOPSIS
+.B Status XkbAllocGeomColors
+(
+.I geom,
+.I num_needed
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which colors should be allocated
+.TP
+.I \- num_needed
+number of new colors required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomColors
+allocates space for
+.I num_needed
+colors and adds them to the specified geometry
+.I geom.
+A color name is a string whose interpretation is not specified by Xkb. All other
+geometry data structures refer to colors using their indices in this global list
+or pointers to colors in this list.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomDoodads.man b/man/xkb/XkbAllocGeomDoodads.man
new file mode 100644
index 00000000..f2d2fa38
--- /dev/null
+++ b/man/xkb/XkbAllocGeomDoodads.man
@@ -0,0 +1,81 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomDoodads \- Allocate doodads that are global to a keyboard geometry
+.SH SYNOPSIS
+.B Status XkbAllocGeomDoodads
+(
+.I geom,
+.I num_needed
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which doodads should be allocated
+.TP
+.I \- num_needed
+number of new doodads required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomDoodads
+allocates
+.I num_needed
+doodads and adds them to the specified geometry
+.I geom.
+No initialization of the doodads is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomKeyAliases.man b/man/xkb/XkbAllocGeomKeyAliases.man
new file mode 100644
index 00000000..381bed1a
--- /dev/null
+++ b/man/xkb/XkbAllocGeomKeyAliases.man
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomKeyAliases \- Allocate geometry key aliases
+.SH SYNOPSIS
+.B Status XkbAllocGeomKeyAliases
+(
+.I geom,
+.I num_needed
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which key aliases should be allocated
+.TP
+.I \- num_needed
+number of new key aliases required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomKeyAliases
+allocates space for
+.I num_needed
+key aliases and adds them to the specified geometry
+.I geom.
+A key alias is a pair of strings that associates an alternate name for a key
+with the real name for that key.
+
+To free geometry key aliases, use
+.I XkbFreeGeomKeyAliases.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomKeyAliases (__libmansuffix__)
diff --git a/man/xkb/XkbAllocGeomKeys.man b/man/xkb/XkbAllocGeomKeys.man
new file mode 100644
index 00000000..dcd5d786
--- /dev/null
+++ b/man/xkb/XkbAllocGeomKeys.man
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomKeys \- Allocate space for an arbitrary number of keys to a row
+.SH SYNOPSIS
+.B Status XkbAllocGeomKeys
+(
+.I row,
+.I num_needed
+)
+.br
+ XkbRowPtr \fIrow\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row to which keys should be allocated
+.TP
+.I \- num_needed
+number of new keys required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomKeys
+allocates
+.I num_needed
+keys and adds them to the
+.I row.
+No initialization of the keys is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomOutlines.man b/man/xkb/XkbAllocGeomOutlines.man
new file mode 100644
index 00000000..77982917
--- /dev/null
+++ b/man/xkb/XkbAllocGeomOutlines.man
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOutlines \- Allocate space for an arbitrary number of outlines to a
+shape
+.SH SYNOPSIS
+.B Status XkbAllocGeomOutlines
+(
+.I shape,
+.I num_needed
+)
+.br
+ XkbShapePtr \fIshape\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape for which outlines should be allocated
+.TP
+.I \- num_needed
+number of new outlines required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOutlines
+allocates space for
+.I num_needed
+outlines in the specified
+.I shape.
+The outlines are not initialized.
+
+To free geometry outlines, use
+.I XkbFreeGeomOutlines.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomOutlines (__libmansuffix__)
diff --git a/man/xkb/XkbAllocGeomOverlayKey.man b/man/xkb/XkbAllocGeomOverlayKey.man
new file mode 100644
index 00000000..f33dd366
--- /dev/null
+++ b/man/xkb/XkbAllocGeomOverlayKey.man
@@ -0,0 +1,76 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOverlayKeys \- Allocate keys in an overlay row
+.SH SYNOPSIS
+.B Status XkbAllocGeomOverlayKeys
+(
+.I row,
+.I num_needed
+)
+.br
+ XkbRowPtr \fIrow\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+section for which rows should be allocated
+.TP
+.I \- num_needed
+number of new rows required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOverlayKeys
+allocates
+.I num_needed
+keys and adds them to the
+.I row.
+No initialization of the keys is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomOverlayRows.man b/man/xkb/XkbAllocGeomOverlayRows.man
new file mode 100644
index 00000000..8b18092f
--- /dev/null
+++ b/man/xkb/XkbAllocGeomOverlayRows.man
@@ -0,0 +1,85 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomOverlayRows 3Xkb "Release 6.1" "X Version 11" "XKBLIB FUNCTION"
+.SH NAME
+XkbAllocGeomOverlayRows \- Allocate rows in a overlay
+.SH SYNOPSIS
+.B Status XkbAllocGeomOverlayRows
+(
+.I overlay,
+.I num_needed
+)
+.br
+ XkbSectionPtr \fIoverlay\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+section for which rows should be allocated
+.TP
+.I \- num_needed
+number of new rows required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOverlayRows
+allocates
+.I num_needed
+rows and adds them to the
+.I overlay.
+No initialization of the rows is done.
+
+To free rows in an overlay, use
+.I XkbFreeGeomOverlayRows.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomOverlayRows (__libmansuffix__)
diff --git a/man/xkb/XkbAllocGeomOverlays.man b/man/xkb/XkbAllocGeomOverlays.man
new file mode 100644
index 00000000..6320f1c2
--- /dev/null
+++ b/man/xkb/XkbAllocGeomOverlays.man
@@ -0,0 +1,75 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOverlays \- Allocate overlays in a section
+.SH SYNOPSIS
+.B Status XkbAllocGeomOverlays
+(
+.I section,
+.I num_needed
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section for which overlays should be allocated
+.TP
+.I \- num_needed
+number of new overlays required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOverlays
+allocates
+.I num_needed
+overlays and adds them to the
+.I section.
+No initialization of the overlays is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomPoints.man b/man/xkb/XkbAllocGeomPoints.man
new file mode 100644
index 00000000..f9e8cd0a
--- /dev/null
+++ b/man/xkb/XkbAllocGeomPoints.man
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomPoints \- Allocate points in an outline
+.SH SYNOPSIS
+.B Status XkbAllocGeomPoints
+(
+.I outline,
+.I num_needed
+)
+.br
+ XkbOutlinePtr \fIoutline\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- outline
+outline for which points should be allocated
+.TP
+.I \- num_needed
+number of new points required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomPoints
+allocates space for
+.I num_needed
+points in the specified
+.I outline.
+The points are not initialized.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomProps.man b/man/xkb/XkbAllocGeomProps.man
new file mode 100644
index 00000000..56c086e1
--- /dev/null
+++ b/man/xkb/XkbAllocGeomProps.man
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomProps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomProps \- Allocate geometry properties
+.SH SYNOPSIS
+.B Status XkbAllocGeomProps
+(
+.I geom,
+.I num_needed
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+_summary_
+.TP
+.I \- num_needed
+_summary_
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomProps
+allocates space for
+.I num_needed
+properties and adds them to the specified geometry
+.I geom.
+No initialization of the properties is done. A geometry property associates an
+arbitrary string with an equally arbitrary name. Geometry properties can be used
+to provide hints to programs that display images of keyboards, but they are not
+interpreted by Xkb. No other geometry structures refer to geometry properties.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomRows.man b/man/xkb/XkbAllocGeomRows.man
new file mode 100644
index 00000000..daa87114
--- /dev/null
+++ b/man/xkb/XkbAllocGeomRows.man
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomRows \- Allocate rows in a section
+.SH SYNOPSIS
+.B Status XkbAllocGeomRows
+(
+.I section,
+.I num_needed
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section for which rows should be allocated
+.TP
+.I \- num_needed
+number of new rows required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomRows
+allocates
+.I num_needed
+rows and adds them to the
+.I section.
+No initialization of the rows is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbAllocGeomSectionDoodads.man b/man/xkb/XkbAllocGeomSectionDoodads.man
new file mode 100644
index 00000000..2f0e7847
--- /dev/null
+++ b/man/xkb/XkbAllocGeomSectionDoodads.man
@@ -0,0 +1,87 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomSectionDoodads 3Xkb "Release 6.1" "X Version 11" "XKBLIB
+FUNCTION"
+.SH NAME
+XkbAllocGeomSectionDoodads \- Allocate doodads that are specific to a section
+.SH SYNOPSIS
+.B Status XkbAllocGeomSectionDoodads
+(
+.I section,
+.I num_needed
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section for which doodads should be allocated
+.TP
+.I \- num_needed
+number of new doodads required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomSectionDoodads
+allocates
+.I num_needed
+doodads and adds them to the specified
+.I section.
+No initialization of the doodads is done.
+
+To free geometry doodads, use
+.I XkbFreeGeomDoodads.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomDoodads (__libmansuffix__)
diff --git a/man/xkb/XkbAllocGeomSections.man b/man/xkb/XkbAllocGeomSections.man
new file mode 100644
index 00000000..7eb8fad4
--- /dev/null
+++ b/man/xkb/XkbAllocGeomSections.man
@@ -0,0 +1,85 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomSections \- Allocate geometry sections
+.SH SYNOPSIS
+.B Status XkbAllocGeomSections
+(
+.I geom,
+.I num_needed
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which sections should be allocated
+.TP
+.I \- num_needed
+number of new sections required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomSections
+allocates
+.I num_needed
+sections and adds them to the geometry
+.I geom.
+No initialization of the sections is done.
+
+To free geometry sections, use
+.I XkbFreeGeomSections.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomSections (__libmansuffix__)
diff --git a/man/xkb/XkbAllocGeomShapes.man b/man/xkb/XkbAllocGeomShapes.man
new file mode 100644
index 00000000..e197636a
--- /dev/null
+++ b/man/xkb/XkbAllocGeomShapes.man
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomShapes \- Allocate space for an arbitrary number of geometry shapes
+.SH SYNOPSIS
+.B Status XkbAllocGeomShapes
+(
+.I geom,
+.I num_needed
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fInum_needed\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which shapes should be allocated
+.TP
+.I \- num_needed
+number of new shapes required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomShapes
+allocates space for
+.I num_needed
+shapes in the specified geometry
+.I geom.
+The shapes are not initialized.
+
+To free geometry shapes, use
+.I XkbFreeGeomShapes.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomShapes (__libmansuffix__)
+
diff --git a/man/xkb/XkbAllocGeometry.man b/man/xkb/XkbAllocGeometry.man
new file mode 100644
index 00000000..7de54d77
--- /dev/null
+++ b/man/xkb/XkbAllocGeometry.man
@@ -0,0 +1,97 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeometry \- Allocate an entire geometry
+.SH SYNOPSIS
+.B Status XkbAllocGeometry
+(
+.I xkb,
+.I sizes
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbGeometrySizesPtr \fIsizes\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for which geometry is to be allocated
+.TP
+.I \- sizes
+initial sizes for all geometry components
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeometry
+allocates a keyboard geometry and adds it to the keyboard description specified
+by
+.I xkb.
+The keyboard description should be obtained via the
+.I XkbGetKeyboard
+or
+.I XkbAllocKeyboard
+functions. The
+.I sizes
+parameter specifies the number of elements to be reserved for the subcomponents
+of the keyboard geometry and can be zero or more. These subcomponents include
+the
+.I properties, colors, shapes, sections, and doodads.
+
+To free an entire geometry, use
+.I XkbFreeGeometry.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbAllocKeyboard (__libmansuffix__),
+.BR XkbFreeGeometry (__libmansuffix__),
+.BR XkbGetKeyboard (__libmansuffix__)
+
diff --git a/man/xkb/XkbAllocIndicatorMaps.man b/man/xkb/XkbAllocIndicatorMaps.man
new file mode 100644
index 00000000..f64cc052
--- /dev/null
+++ b/man/xkb/XkbAllocIndicatorMaps.man
@@ -0,0 +1,75 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocIndicatorMaps \- Allocates, directly, the
+.I indicators
+member of the keyboard description record
+.SH SYNOPSIS
+.B Status XkbAllocIndicatorMaps
+(
+.I xkb
+)
+.br
+ variable_type *\fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description structure
+.SH DESCRIPTION
+.LP
+The
+.I xkb
+parameter must point to a valid keyboard description. If it doesn't,
+.I XkbAllocIndicatorMaps
+returns a BadMatch error. Otherwise,
+.I XkbAllocIndicatorMaps
+allocates and initializes the
+.I indicators
+member of the keyboard description record and returns Success. If
+.I XkbAllocIndicatorMaps
+was unable to allocate the indicators record, it reports a BadAlloc error.
+.SH RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbAllocIndicatorMaps
+function returns Success if it is successful in allocating and initializing the
+.I indicators
+member of the keyboard description record.
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/man/xkb/XkbAllocKeyboard.man b/man/xkb/XkbAllocKeyboard.man
new file mode 100644
index 00000000..d1c38cdb
--- /dev/null
+++ b/man/xkb/XkbAllocKeyboard.man
@@ -0,0 +1,62 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocKeyboard \- Creates a keyboard description from scratch
+.SH SYNOPSIS
+.B XkbDescRec XkbAllocKeyboard
+(
+.I void
+)
+.if n .ti +5n
+.if t .ti +.5i
+.SH DESCRIPTION
+.LP
+Applications seldom need to directly allocate a keyboard description; calling
+.I XkbGetKeyboard
+usually suffices. In the event you need to create a keyboard description from
+scratch, however, use
+.I XkbAllocKeyboard
+rather than directly calling
+.I malloc.
+
+If
+.I XkbAllocKeyboard
+fails to allocate the keyboard description, it returns NULL.
+Otherwise, it returns a pointer to an empty keyboard description structure. The
+.I device_spec
+field will have been initialized to XkbUseCoreKbd. You may then
+either fill in the structure components or use Xkb functions to obtain values
+for the structure components from a keyboard device.
+.SH "SEE ALSO"
+.BR malloc (3F),
+.BR XkbUseCoreKbd (__libmansuffix__),
+.BR XkbGetKeyboard (__libmansuffix__)
+
+
diff --git a/man/xkb/XkbAllocNames.man b/man/xkb/XkbAllocNames.man
new file mode 100644
index 00000000..eec606b5
--- /dev/null
+++ b/man/xkb/XkbAllocNames.man
@@ -0,0 +1,132 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocNames \- Allocate symbolic names structures
+.SH SYNOPSIS
+.B Status XkbAllocNames
+(
+.I xkb,
+.I which,
+.I num_rg,
+.I num_key_aliases
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ int \fInum_rg\fP\^;
+.br
+ int \fInum_key_aliases\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for which names are to be allocated
+.TP
+.I \- which
+mask of names to be allocated
+.TP
+.I \- num_rg
+total number of radio group names needed
+.TP
+.I \- num_key_aliases
+total number of key aliases needed
+.SH DESCRIPTION
+.LP
+Most applications do not need to directly allocate symbolic names structures. Do
+not allocate a names structure directly using
+.I malloc
+or
+.I Xmalloc
+if your application changes the number of key aliases or radio groups or
+constructs a symbolic names structure without loading the necessary components
+from the X server. Instead use
+.I XkbAllocNames.
+
+.I XkbAllocNames
+can return BadAlloc, BadMatch, and BadValue errors. The
+.I which
+parameter is the bitwise inclusive OR of the valid names mask bits defined in
+Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+Do not free symbolic names structures directly using
+.I free
+or
+.I XFree.
+Use
+.I XkbFreeNames
+instead.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeNames (__libmansuffix__)
diff --git a/man/xkb/XkbAllocServerMap.man b/man/xkb/XkbAllocServerMap.man
new file mode 100644
index 00000000..9994b35e
--- /dev/null
+++ b/man/xkb/XkbAllocServerMap.man
@@ -0,0 +1,135 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbAllocServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocServerMap \- Allocate and initialize an empty server map description record
+.SH SYNOPSIS
+.B Status XkbAllocServerMap
+(
+.I xkb,
+.I which,
+.I count_acts
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fIcount_acts\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to allocate server map
+.TP
+.I \- which
+mask selecting map components to allocate
+.TP
+.I \- count_acts
+value of num_acts field in map to be allocated
+.SH DESCRIPTION
+.LP
+.I XkbAllocServerMap
+allocates and initializes an empty server map in the
+.I server
+field of the keyboard description specified by
+.I xkb.
+The
+.I which
+parameter specifies the particular components of the server map structure to allocate, as specified in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocServerMap Masks
+_
+Mask Effect
+_
+XkbExplicitComponentsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the explicit field of the server map.
+T}
+.sp
+XkbKeyActionsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to allocate the key_acts field of the server map. The count_acts parameter is used to allocate the acts field of the server map.
+T}
+.sp
+XkbKeyBehaviorsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to allocate the behaviors field of the server map.
+T}
+.sp
+XkbVirtualModMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to allocate the vmodmap field of the server map.
+T}
+
+.TE
+
+If the server map of the keyboard description is not NULL and any fields are already allocated in the server map,
+.I XkbAllocServerMap
+does not overwrite the existing values. The only exception is with the
+.I acts
+array. If the
+.I count_acts
+parameter is greater than the current
+.I num_acts
+field of the server map,
+.I XkbAllocServerMap
+resizes the
+.I acts
+array and resets the
+.I num_acts
+field accordingly.
+
+If
+.I XkbAllocServerMap
+is successful, it returns Success. Otherwise, it can return either BadMatch or BadAlloc errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH NOTES
+.LP
+The
+.I min_key_code
+and
+.I max_key_code
+fields of the
+.I xkb
+parameter must be legal values. If they are not valid,
+.I XkbAllocServerMap
+returns BadValue.
diff --git a/man/xkb/XkbApplyCompatMapToKey.man b/man/xkb/XkbApplyCompatMapToKey.man
new file mode 100644
index 00000000..ab3c0b23
--- /dev/null
+++ b/man/xkb/XkbApplyCompatMapToKey.man
@@ -0,0 +1,376 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbApplyCompatMapToKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbApplyCompatMapToKey \- Apply the new compatibility mapping to an individual
+key to get its semantics updated
+.SH SYNOPSIS
+.B Bool XkbApplyCompatMapToKey
+(
+.I xkb,
+.I key,
+.I changes
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkey\fP\^;
+.br
+ XkbChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be updated
+.TP
+.I \- key
+key to be updated
+.TP
+.I \- changes
+notes changes to the Xkb keyboard description
+.SH DESCRIPTION
+.LP
+.I XkbApplyCompatMapToKey
+essentially performs the operation described in Core Keyboard Mapping to Xkb
+Keyboard Mapping Transformation to a specific key. This updates the behavior,
+actions, repeat status, and virtual modifier bindings of the key.
+
+.B Core Keyboard Mapping to Xkb Keyboard Mapping Transformation
+
+When a core protocol keyboard mapping request is received by the server, the
+server's core keyboard map is updated, and then the Xkb map maintained by the
+server is updated. Because a client may have explicitly configured some of the
+Xkb keyboard mapping in the server, this automatic regeneration of the Xkb
+keyboard mapping from the core protocol keyboard mapping should not modify any
+components of the Xkb keyboard mapping that were explicitly set by a client. The
+client must set explicit override controls to prevent this from happening (see
+Explicit Components-Avoiding Automatic Remapping by the Server). The core-to-Xkb
+mapping is done as follows:
+
+.B Explicit Components-Avoiding Automatic Remapping by the Server
+
+Whenever a client remaps the keyboard using core protocol requests, Xkb examines
+the map to determine likely default values for the components that cannot be
+specified using the core protocol.
+
+This automatic remapping might replace definitions explicitly requested by an
+application, so the Xkb keyboard description defines an explicit components mask
+for each key. Any aspects of the automatic remapping listed in the explicit
+components mask for a key are not changed by the automatic keyboard mapping.
+
+The explicit components masks are held in the
+.I explicit
+field of the server map, which is an array indexed by keycode. Each entry in
+this array is a mask that is a bitwise inclusive OR of the values shown in Table
+1.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Explicit Component Masks
+_
+Bit in Explicit Mask Value Protects Against
+_
+ExplicitKeyType1 (1<<0) T{
+Automatic determination of the key type associated with Group1.
+T}
+ExplicitKeyType2 (1<<1) T{
+Automatic determination of the key type associated with Group2.
+T}
+ExplicitKeyType3 (1<<2) T{
+Automatic determination of the key type associated with Group3.
+T}
+ExplicitKeyType4 (1<<3) T{
+Automatic determination of the key type associated with Group4.
+T}
+ExplicitInterpret (1<<4) T{
+Application of any of the fields of a symbol interpretation to the key in
+question.
+T}
+ExplicitAutoRepeat (1<<5) T{
+Automatic determination of auto-repeat status for the key, as specified in a
+symbol interpretation.
+T}
+ExplicitBehavior (1<<6) T{
+Automatic assignment of the XkbKB_Lock behavior to the key, if the
+XkbSI_LockingKey flag is set in a symbol interpretation.
+T}
+ExplicitVModMap (1<<7) T{
+Automatic determination of the virtual modifier map for the key based on the
+actions assigned to the key and the symbol interpretations that match the key.
+T}
+.TE
+.TP 4
+1.
+Map the symbols from the keys in the core keyboard map to groups and symbols on
+keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so
+each key in the core mapping has the same number of symbols associated with it.
+The Xkb mapping allows a different number of symbols to be associated with each
+key; those symbols may be divided into a different number of groups (1-4) for
+each key. For each key, this process therefore involves partitioning the fixed
+number of symbols from the core mapping into a set of variable-length groups
+with a variable number of symbols in each group. For example, if the core
+protocol map is of width five, the partition for one key might result in one
+group with two symbols and another with three symbols. A different key might
+result in two groups with two symbols plus a third group with one symbol. The
+core protocol map requires at least two symbols in each of the first two groups.
+.TP 4
+1a.
+For each changed key, determine the number of groups represented in the new core
+keyboard map. This results in a tentative group count for each key in the Xkb
+map.
+.TP 4
+1b.
+For each changed key, determine the number of symbols in each of the groups
+found in step 1a. There is one explicit override control associated with each of
+the four possible groups for each Xkb key, ExplicitKeyType1 through
+ExplicitKeyType4. If no explicit override control is set for a group, the number
+of symbols used for that group from the core map is two. If the explicit
+override control is set for a group on the key, the number of symbols used for
+that Xkb group from the core map is the width of the Xkb group with one
+exception: because of the core protocol requirement for at least two symbols in
+each of groups one and two, the number of symbols used for groups one and two is
+the maximum of 2 or the width of the Xkb group.
+.TP 4
+1c.
+For each changed key, assign the symbols in the core map to the appropriate
+group on the key. If the total number of symbols required by the Xkb map for a
+particular key needs more symbols than the core protocol map contains, the
+additional symbols are taken to be NoSymbol keysyms appended to the end of the
+core set. If the core map contains more symbols than are needed by the Xkb map,
+trailing symbols in the core map are discarded. In the absence of an explicit
+override for group one or two, symbols are assigned in order by group; the first
+symbols in the core map are assigned to group one, in order, followed by group
+two, and so on. For example, if the core map contained eight symbols per key,
+and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the
+symbols would be assigned as (G is group, L is shift level):
+.nf
+
+ G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3
+
+.fi
+If an explicit override control is set for group one or two, the symbols are
+taken from the core set in a somewhat different order. The first four symbols
+from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group
+one requires more symbols, they are taken next, and then any additional symbols
+needed by group two. Group three and four symbols are taken in complete sequence
+after group two. For example, a key with four groups and three symbols in each
+group would take symbols from the core set in the following order:
+.nf
+
+ G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3
+
+.fi
+As previously noted, the core protocol map requires at lease two symbols in
+groups one and two. Because of this, if an explicit override control for an Xkb
+key is set and group one and / or group two is of width one, it is not possible
+to generate the symbols taken from the core protocol set and assigned to
+position G1L2 and / or G2L2.
+.TP 4
+1d.
+For each group on each changed key, assign a key type appropriate for the
+symbols in the group.
+.TP 4
+1e.
+For each changed key, remove any empty or redundant groups.
+
+At this point, the groups and their associated symbols have been assigned to the
+corresponding key definitions in the Xkb map.
+.TP 4
+2.
+Apply symbol interpretations to modify key operation. This phase is completely
+skipped if the ExplicitInterpret override control bit is set in the explicit
+controls mask for the Xkb key (see Explicit Components-Avoiding Automatic
+Remapping by the Server).
+.TP 4
+2a.
+For each symbol on each changed key, attempt to match the symbol and modifiers
+from the Xkb map to a symbol interpretation describing how to generate the
+symbol.
+.TP 4
+2b.
+When a match is found in step 2a, apply the symbol interpretation to change the
+semantics associated with the symbol in the Xkb key map. If no match is found,
+apply a default interpretation.
+.LP
+The symbol interpretations used in step 2 are configurable and may be specified
+using XkbSymInterpretRec structures referenced by the sym_interpret field of an
+XkbCompatMapRec.
+
+.B Symbol Interpretations - the XkbSymInterpretRec Structure
+
+Symbol interpretations are used to guide the X server when it modifies the Xkb
+keymap in step 2. An initial set of symbol interpretations is loaded by the
+server when it starts. A client may add new ones using XkbSetCompatMap.
+
+Symbol interpretations result in key semantics being set. When a symbol
+interpretation is applied, the following components of server key event
+processing may be modified for the particular key involved:
+.nf
+
+ Virtual modifier map
+ Auto repeat
+ Key behavior (may be set to XkbKB_Lock)
+ Key action
+
+.fi
+The XkbSymInterpretRec structure specifies a symbol interpretation:
+.nf
+
+typedef struct {
+ KeySym sym; /* keysym of interest or NULL */
+ unsigned char flags; /* XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /* specifies how mods is interpreted */
+ unsigned char mods; /* modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /* 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /* action to bind to symbol position on key */
+} XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+If sym is not NULL, it limits the symbol interpretation to keys on which that
+particular keysym is selected by the modifiers matching the criteria specified
+by
+.I mods
+and
+.I match.
+If
+.I sym
+is NULL, the interpretation may be applied to any symbol selected on a key when
+the modifiers match the criteria specified by
+.I mods
+and
+.I match.
+
+.I match
+must be one of the values shown in Table 2 and specifies how the real modifiers
+specified in
+.I mods
+are to be interpreted.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 Symbol Interpretation Match Criteria
+_
+Match Criteria Value Effect
+_
+XkbSI_NoneOf (0) T{
+None of the bits that are on in mods can be set, but other bits can be.
+T}
+XkbSI_AnyOfOrNone (1) T{
+Zero or more of the bits that are on in mods can be set, as well as others.
+T}
+XkbSI_AnyOf (2) T{
+One or more of the bits that are on in mods can be set, as well as any others.
+T}
+XkbSI_AllOf (3) T{
+All of the bits that are on in mods must be set, but others may be set as well.
+T}
+XkbSI_Exactly (4) T{
+All of the bits that are on in mods must be set, and no other bits may be set.
+T}
+.TE
+
+In addition to the above bits,
+.I match
+may contain the XkbSI_LevelOneOnly bit, in which case the modifier match
+criteria specified by
+.I mods
+and
+.I match
+applies only if
+.I sym
+is in level one of its group; otherwise,
+.I mods
+and
+.I match
+are ignored and the symbol matches a condition where no modifiers are set.
+.nf
+
+#define XkbSI_LevelOneOnly (0x80) /* use mods + match only if sym is level 1 */
+
+.fi
+If no matching symbol interpretation is found, the server uses a default
+interpretation where:
+.nf
+
+ sym = 0
+ flags = XkbSI_AutoRepeat
+ match = XkbSI_AnyOfOrNone
+ mods = 0
+ virtual_mod = XkbNoModifier
+ act = SA_NoAction
+
+.fi
+When a matching symbol interpretation is found in step 2a, the interpretation is
+applied to modify the Xkb map as follows.
+
+The
+.I act
+field specifies a single action to be bound to the symbol position; any key event that selects the symbol
+causes the action to be taken. Valid actions are defined in Key Actions.
+
+If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit
+and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in
+.I match
+or the symbol is in position G1L1, the
+.I virtual_mod
+field is examined. If
+.I virtual_mod
+is not XkbNoModifier,
+.I virtual_mod
+specifies a single virtual modifier to be added to the virtual modifier map for the key.
+.I virtual_mod
+is specified as an index in the range [0..15].
+
+If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify
+additional behavior modifications:
+.nf
+
+#define XkbSI_AutoRepeat (1<<0) /* key repeats if sym is in position G1L1 */
+#define XkbSI_LockingKey (1<<1) /* set KB_Lock behavior if sym is in psn G1L1 */
+
+.fi
+If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior
+is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat
+behavior of the key is turned on; otherwise, it is turned off.
+
+If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is
+set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to
+KB_Lock; otherwise, it is turned off.
+.SH "SEE ALSO"
+.BR XkbKeyAction (__libmansuffix__),
+.BR XkbKeyActionEntry (__libmansuffix__),
+.BR XkbKeyActionsPtr (__libmansuffix__),
+.BR XkbKeyHasActions (__libmansuffix__),
+.BR XkbKeyNumActions (__libmansuffix__)
diff --git a/man/xkb/XkbBell.man b/man/xkb/XkbBell.man
new file mode 100644
index 00000000..38ba9fba
--- /dev/null
+++ b/man/xkb/XkbBell.man
@@ -0,0 +1,344 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbBell \- Rings the bell on the default keyboard
+.SH SYNOPSIS
+.B Bool XkbBell
+(
+.I display,
+.I window,
+.I percent,
+.I name
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ int \fIpercent\fP\^;
+.br
+ Atom \fIname\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+event window, or None
+.TP
+.I \- percent
+relative volume, which can range from -100 to 100 inclusive
+.TP
+.I \- name
+a bell name, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing
+clients to
+attach symbolic names to bells, disable audible bells, and receive an event
+whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed
+to any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id
+pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point
+of view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is
+associated with
+the name.)
+
+.LP
+You can also ask to receive XkbBellNotify events when the server rings the
+default bell
+or if any client has requested events only (without the bell sounding) for any
+of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that
+replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate
+feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the
+functions that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed
+or
+repeating, Xkb can provide feedback for the controls by using special beep
+codes. The
+AccessXFeedback control is used to configure the specific types of operations
+that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to
+an Atom
+and then using this name when you call the functions listed in this chapter. If
+an event
+is generated as a result, the name is then passed to all other clients
+interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that
+there is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event
+containing the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in
+Table 1 below; the name is included in any bell event sent to clients that have
+requested to receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4I) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{ SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system
+bell. This
+is useful if you need to use an audio server instead of the system beep. For
+example,
+when an audio client starts, it could disable the audible bell (the system bell)
+and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the
+audio client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell
+event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one
+feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbBell
+calls
+.I XBell
+with the specified
+.I display
+and
+.I percent,
+and returns False. Otherwise,
+.I XkbBell
+calls
+.I XkbDeviceBell
+with the specified
+.I display, window, percent,
+and
+.I name,
+a
+.I device_spec
+of XkbUseCoreKbd, a
+.I bell_class
+of XkbDfltXIClass, and a
+.I bell_id
+of XkbDfltXIId, and returns True.
+
+If you have disabled the audible bell, the server does not ring the system bell,
+although it does generate a XkbBellNotify event.
+
+You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH "RETURN VALUES"
+.TP 15
+FALSE
+The XkbBell function returns FALSE if XlibDisplayNoXkb is set.
+.SH STRUCTURES
+.LP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is
+not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbBellNotify */
+ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int percent; /* requested volume as % of max */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in microseconds */
+ unsigned int bell_class; /* X input extension feedback class */
+ unsigned int bell_id; /* X input extension feedback ID */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* False -> the server did not produce a beep
+*/
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (3X11),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
+
+
+
+
+
diff --git a/man/xkb/XkbBellEvent.man b/man/xkb/XkbBellEvent.man
new file mode 100644
index 00000000..9be974e1
--- /dev/null
+++ b/man/xkb/XkbBellEvent.man
@@ -0,0 +1,341 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbBellEvent \- Provides a function that initiates a bell event for the keyboard
+without ringing the bell
+.SH SYNOPSIS
+.B Bool XkbBellEvent
+(
+.I display,
+.I window,
+.I percent,
+.I name
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ Window \fI window \fP\^;
+.br
+ int \fI percent \fP\^;
+.br
+ Atom \fI name \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+the event window, or None
+.TP
+.I \- percent,
+relative volume, which can range from -100 to 100 inclusive
+.TP
+.I \- name
+a bell name, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing
+clients to
+attach symbolic names to bells, disable audible bells, and receive an event
+whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed
+to any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id
+pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point
+of view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is
+associated with
+the name.)
+
+You can also ask to receive XkbBellNotify events when the server rings the
+default bell
+or if any client has requested events only (without the bell sounding) for any
+of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that
+replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate
+feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the
+functions that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed
+or
+repeating, Xkb can provide feedback for the controls by using special beep
+codes. The
+AccessXFeedback control is used to configure the specific types of operations
+that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to
+an Atom
+and then using this name when you call the functions listed in this chapter. If
+an event
+is generated as a result, the name is then passed to all other clients
+interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that
+there is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event
+containing the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in
+Table 1; the name is included in any bell event sent to clients that have
+requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system
+bell. This
+is useful if you need to use an audio server instead of the system beep. For
+example,
+when an audio client starts, it could disable the audible bell (the system bell)
+and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the
+audio client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell
+event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one
+feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an
+XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbBellEvent
+immediately returns False. Otherwise,
+.I XkbBellEvent
+calls
+.I XkbDeviceBellEvent
+with the specified
+.I display, window, percent,
+and
+.I name,
+a
+.I device_spec
+of XkbUseCoreKbd, a
+.I bell_class
+of XkbDfltXIClass, and a
+.I bell_id
+of XkbDfltXIId, and returns what
+.I XkbDeviceBellEvent
+returns.
+
+.I XkbBellEvent
+generates a XkbBellNotify event.
+
+You can call
+.I XkbBellEvent
+without first initializing the keyboard extension.
+.SH "RETURN VALUES"
+.TP 15
+False
+The
+.I XkbBellEvent
+immediately returns False, if a compatible keyboard extension isn't present in
+the X server.
+.SH STRUCTURES
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is
+not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbBellNotify */
+ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int percent; /* requested volume as % of max */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in microseconds */
+ unsigned int bell_class; /* X input extension feedback class */
+ unsigned int bell_id; /* X input extension feedback ID */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* False -> the server did not produce a beep
+*/
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBellEvent (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
+
+
+
diff --git a/man/xkb/XkbChangeControls.man b/man/xkb/XkbChangeControls.man
new file mode 100644
index 00000000..7beb0197
--- /dev/null
+++ b/man/xkb/XkbChangeControls.man
@@ -0,0 +1,336 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeControls \- Provides a flexible method for updating the controls in a
+server to match those in
+the changed keyboard description
+.SH SYNOPSIS
+.B Bool XkbChangeControls
+(
+.I dpy,
+.I xkb,
+.I changes
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbControlsChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- xkb
+keyboard description with changed xkb->ctrls
+.TP
+.I \- changes
+which parts of xkb->ctrls have changed
+.SH DESCRIPTION
+.LP
+The XkbControlsChangesRec structure allows applications to track modifications
+to an XkbControlsRec
+structure and thereby reduce the amount of traffic sent to the server. The same
+XkbControlsChangesRec
+structure may be used in several successive modifications to the same
+XkbControlsRec structure, then
+subsequently used to cause all of the changes, and only the changes, to be
+propagated to the server.
+
+The
+.I changed_ctrls
+field is a mask specifying which logical sets of data in the controls structure
+have been modified. In
+this context, modified means
+.I set,
+that is, if a value is set to the same value it previously contained, it has
+still been modified, and is
+noted as changed. Valid values for
+.I changed_ctrls
+are any combination of the masks listed in Table 1 that have "ok" in the
+.I changed_ctrls
+column. Setting a bit implies the corresponding data fields from the "Relevant
+XkbControlsRec Data
+Fields" column in Table 1 have been modified. The
+.I enabled_ctrls_changes
+field specifies which bits in the
+.I enabled_ctrls
+field have changed. If the number of keyboard groups has changed, the
+.I num_groups_changed
+field is set to True.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s s
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+lw(1.5i) lw(1.5i) l lw(1.5i) l.
+Table 1 Xkb Controls
+_
+Control Control
+ Selection Relevant
+ Mask XkbControlsRec Boolean Control
+ (which parameter) DataFields enabled_ctrls bit Section
+_
+T{
+AccessXFeedback
+T} T{
+XkbAccessXFeedbackMask
+T} ax_options: T{
+XkbAccessXFeedbackMask
+T} 10.6.3
+ XkbAX_*FBMask
+T{
+AccessXKeys
+T} T{
+XkbAccessXKeysMask
+T} 10.6.1
+T{
+AccessXTimeout
+T} T{
+XkbAccessXTimeoutMask
+T} ax_timeout T{
+XkbAccessXTimeoutMask
+T} 10.6.2
+ axt_opts_mask
+ axt_opts_values
+ axt_ctrls_mask
+ axt_ctrls_values
+T{
+AudibleBell
+T} T{
+XkbAudibleBellMask
+T} 9.2
+T{
+AutoReset
+T} 10.1.2
+T{
+BounceKeys
+T} T{
+XkbBounceKeysMask
+T} debounce_delay T{
+XkbBounceKeysMask
+T} 10.6.7
+T{
+Detectable-
+T} 10.3.3
+T{
+Autorepeat
+T}
+T{
+EnabledControls
+T} T{
+XkbControlsEnabledMask
+T} enabled_ctrls T{
+Non-Boolean Control
+T} 10.1.1
+T{
+GroupsWrap
+T} T{
+XkbGroupsWrapMask
+T} groups_wrap T{
+Non-Boolean Control
+T} 10.7.1
+T{
+IgnoreGroupLock
+T} T{
+XkbIgnoreGroupLockMask
+T} 10.7.3
+T{
+IgnoreLockMods
+T} T{
+XkbIgnoreLockModsMask
+T} ignore_lock T{
+Non-Boolean Control
+T} 5.1
+T{
+InternalMods
+T} T{
+XkbInternalModsMask
+T} internal T{
+Non-Boolean Control
+T} 5.1
+T{
+MouseKeys
+T} T{
+XkbMouseKeysMask
+T} mk_dflt_btn T{
+XkbMouseKeysMask
+T} 10.5.1
+T{
+MouseKeysAccel
+T} T{
+XkbMouseKeysAccelMask
+T} mk_delay T{
+XkbMouseKeysAccelMask
+T} 10.5.2
+ mk_interval
+ mk_time_to_max
+ mk_max_speed
+ mk_curve
+T{
+Overlay1
+T} T{
+XkbOverlay1Mask
+T} 10.4
+T{
+Overlay2
+T} T{
+XkbOverlay2Mask
+T} 10.4
+T{
+PerKeyRepeat
+T} T{
+XkbPerKeyRepeatMask
+T} per_key_repeat T{
+Non-Boolean Control
+T} 10.3.1
+T{
+RepeatKeys
+T} T{
+XkbRepeatKeysMask
+T} repeat_delay T{
+XkbRepeatKeysMask
+T} 10.3
+ repeat_interval
+T{
+SlowKeys
+T} T{
+XkbSlowKeysMask
+T} slow_keys_delay T{
+XkbSlowKeysMask
+T} 10.6.6
+T{
+StickyKeys
+T} T{
+XkbStickyKeysMask
+T} ax_options: T{
+XkbStickyKeysMask
+T} 10.6.8
+ XkbAX_TwoKeysMask
+ XkbAX_LatchToLockMask
+.TE
+
+Table 2 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 2 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+
+
+
+If you have an Xkb description with controls that have been modified and an
+XkbControlsChangesRec that
+describes the changes that have been made, the
+.I XkbChangeControls
+function provides a flexible method for updating the controls in a server to
+match those in the changed
+keyboard description.
+
+.I XkbChangeControls
+copies any controls fields specified by
+.I changes
+from the keyboard description controls structure,
+.I xkb->ctrls,
+to the server specified by
+.I dpy.
+.SH STRUCTURES
+.LP
+The XkbControlsChangesRec structure is defined as follows:
+.nf
+
+typedef struct _XkbControlsChanges {
+ unsigned int changed_ctrls; /* bits indicating changed control data
+*/
+ unsigned int enabled_ctrls_changes; /* bits indicating enabled/disabled
+controls */
+ Bool num_groups_changed; /* True if number of keyboard groups
+changed */
+} XkbControlsChangesRec,*XkbControlsChangesPtr;
+
+.fi
diff --git a/man/xkb/XkbChangeDeviceInfo.man b/man/xkb/XkbChangeDeviceInfo.man
new file mode 100644
index 00000000..a2502517
--- /dev/null
+++ b/man/xkb/XkbChangeDeviceInfo.man
@@ -0,0 +1,88 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeDeviceInfo \- Update the server's description of a device with the changes noted in an
+XkbDeviceChangesRec
+.SH SYNOPSIS
+.B Bool XkbChangeDeviceInfo
+(
+.I dpy,
+.I device_info,
+.I changes
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ XkbDeviceChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+local copy of device state and configuration
+.TP
+.I \- changes
+note specifying changes in device_info
+.SH DESCRIPTION
+.LP
+.I XkbChangeDeviceInfo
+updates the server's description of the device specified in
+.I device_info->device_spec
+with the changes specified in
+.I changes
+and contained in
+.I device_info.
+The update is made by an
+.I XkbSetDeviceInfo
+request.
+.SH STRUCTURES
+.LP
+Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events
+and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the
+structure may then be used in subsequent operations to update either a server configuration or a
+local copy of an Xkb extension device configuration. The changes structure is defined as follows:
+.nf
+
+typedef struct _XkbDeviceChanges {
+ unsigned int changed; /* bits indicating what has changed */
+ unsigned short first_btn; /* number of first button which changed, if any */
+ unsigned short num_btns; /* number of buttons that have changed */
+ XkbDeviceLedChangesRec leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbSetDeviceInfo (__libmansuffix__)
diff --git a/man/xkb/XkbChangeEnabledControls.man b/man/xkb/XkbChangeEnabledControls.man
new file mode 100644
index 00000000..56fe8834
--- /dev/null
+++ b/man/xkb/XkbChangeEnabledControls.man
@@ -0,0 +1,180 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeEnabledControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeEnabledControls \- Manipulates the EnabledControls control
+.SH SYNOPSIS
+.B Bool XkbChangeEnabledControls
+(
+.I dpy,
+.I device_spec,
+.I mask,
+.I values
+)
+.br
+ Display *\fI dpy \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned int \fI mask \fP\^;
+.br
+ unsigned int \fI values \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_spec
+ keyboard device to modify
+.TP
+.I \- mask
+1 bit -> controls to enable / disable
+.TP
+.I \- values
+1 bit => enable, 0 bit => disable
+.SH DESCRIPTION
+.LP
+The EnabledControls control is a bit mask where each bit that is turned on means the
+corresponding control is enabled, and when turned off, disabled. It corresponds to the
+.I enabled_ctrls
+field of an XkbControlsRec structure (see STRUCTURES). The bits describing which controls are
+turned on or off are defined in Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select controls for
+modification and to enable and disable the control. Note that the same mask bit is used to
+specify general modifications to the parameters used to configure the control (which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column)
+are for controls that have no configurable attributes; and for controls that are not boolean
+controls and therefore cannot be enabled or disabled.
+.bp
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+The
+.I mask
+parameter specifies the boolean controls to be enabled or disabled, and the
+.I values
+mask specifies the new state for those controls. Valid values for both of these
+masks are composed of a bitwise inclusive OR of bits taken from the set of mask
+bits in Table 1, using only those masks with "ok" in the
+.I enabled_ctrls
+column.
+
+If the X server does not support a compatible version of Xkb or the Xkb
+extension has not been properly initialized,
+.I XkbChangeEnabledControls
+returns False; otherwise, it sends the request to the X server and returns True.
+
+Note that the EnabledControls control only enables and disables controls; it
+does not configure them. Some controls, such as the AudibleBell control, have no
+configuration attributes and are therefore manipulated solely by enabling and
+disabling them. Others, however, have additional attributes to configure their
+behavior. For example, the RepeatControl control uses
+.I repeat_delay
+and
+.I repeat_interval
+fields to describe the timing behavior of keys that repeat. The RepeatControl
+behavior is turned on or off depending on the value of the XkbRepeatKeysMask
+bit, but you must use other means, as described in this chapter, to configure
+its behavior in detail.
+.SH "RETURN VALUES"
+.TP 15
+True
+The X server supports a compatible version of Xkb.
+.TP 15
+False
+The X server does not support a compatible version of Xkb or the Xkb extension has not been properly initialized.
+.SH STRUCTURES
+.LP
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
diff --git a/man/xkb/XkbChangeIndicators.man b/man/xkb/XkbChangeIndicators.man
new file mode 100644
index 00000000..0088418e
--- /dev/null
+++ b/man/xkb/XkbChangeIndicators.man
@@ -0,0 +1,172 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeIndicators __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeIndicators \- Changes indicator maps or state without passing the
+entire keyboard description
+.SH SYNOPSIS
+.B Bool XkbChangeIndicators
+(
+.I dpy,
+.I xkb,
+.I changes,
+.I state
+)
+.br
+ Display *\fI dpy \fP\^;
+.br
+ XkbDescPtr \fI xkb \fP\^;
+.br
+ XkbIndicatorChangesPtr \fI changes \fP\^;
+.br
+ unsigned int \fI state \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description from which names are to be taken.
+.TP
+.I \- changes
+indicators to be updated on the server
+.TP
+.I \- state
+new state of indicators listed in changes->state_changes
+.SH DESCRIPTION
+.LP
+The XkbIndicatorChangesRec identifies small modifications to the indicator map.
+Use it with the function
+.I XkbChangeIndicators
+to reduce the amount of traffic sent to the server (see STRUCTURES).
+
+The
+.I state_changes
+field is a mask that specifies the indicators that have changed state, and
+.I map_changes
+is a mask that specifies the indicators whose maps have changed.
+
+.I XkbChangeIndicators
+copies any maps specified by
+.I changes
+from the keyboard description,
+.I xkb,
+to the server specified by
+.I dpy.
+If any bits are set in the
+.I state_changes
+field of
+.I changes, XkbChangeIndicators
+also sets the state of those indicators to the values specified in the
+.I state
+mask. A 1 bit in
+.I state
+turns the corresponding indicator on, a 0 bit turns it off.
+
+In addition, it can also generate XkbIndicatorStateNotify and
+XkbIndicatorMapNotify events.
+
+Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events
+to all interested clients. Similarly, whenever an indicator's map changes, the
+server sends XkbIndicatorMapNotify events to all interested clients.
+
+To receive XkbIndicatorStateNotify events, use
+.I XkbSelectEvents
+with both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify
+events, use
+.I XkbSelectEvents
+with XkbIndicatorMapNotifyMask.
+
+To receive events for only specific indicators, use
+.I XkbSelectEventDetails.
+Set the
+.I event_type
+parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
+.I bits_to_change
+and
+.I values_for_bits
+detail parameters to a mask where each bit specifies one indicator, turning on those
+bits that specify the indicators for which you want to receive events.
+
+.I xkb_type
+is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the
+event is a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
+
+The
+.I changed
+parameter is a mask that is the bitwise inclusive OR of the indicators that have
+changed. If the event is of type XkbIndicatorMapNotify,
+.I changed
+reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
+.I changed
+reports the indicators that have changed state.
+.I state
+is a mask that specifies the current state of all indicators, whether they have
+changed or not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
+.SH STRUCTURES
+.LP
+.nf
+ typedef struct _XkbIndicatorChanges {
+ unsigned int state_changes;
+ unsigned int map_changes;
+ }XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
+
+.fi
+Both types of indicator events use the same structure:
+
+.nf
+ typedef struct _XkbIndicatorNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* specifies state or map notify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd*/
+ unsigned int changed; /* mask of indicators with new state or map */
+ unsigned int state; /* current state of all indicators */
+ } XkbIndicatorNotifyEvent;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.SH "SEE ALSO"
+.BR XkbIndicatorMapNotify (__libmansuffix__),
+.BR XkbIndicatorStateNotify (__libmansuffix__)
diff --git a/man/xkb/XkbChangeMap.man b/man/xkb/XkbChangeMap.man
new file mode 100644
index 00000000..d53915e6
--- /dev/null
+++ b/man/xkb/XkbChangeMap.man
@@ -0,0 +1,149 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeMap \- Update only partial components of a keyboard description, modify
+the appropriate fields in the server and map components of a local copy of the
+keyboard description
+.SH SYNOPSIS
+.B Bool XkbChangeMap
+(
+.I dpy,
+.I xkb,
+.I changes
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbMapChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- xkb
+description from which new values are taken
+.TP
+.I \- changes
+identifies component parts to update
+.SH DESCRIPTION
+.LP
+To update only partial components of a keyboard description, modify the
+appropriate fields in the server and map components of a local copy of the
+keyboard description, then call
+.I XkbChangeMap
+with an XkbMapChangesRec structure indicating which components have changed.
+
+.I XkbChangeMap
+copies any components specified by the
+.I changes
+structure from the keyboard description,
+.I xkb,
+to the X server specified by
+.I dpy.
+
+If any components specified by
+.I changes
+are not present in the
+.I xkb
+parameter,
+.I XkbChangeMap
+returns False. Otherwise, it sends a request to the server and returns True.
+
+.I XkbChangeMap
+can generate BadAlloc, BadLength, and BadValue protocol errors.
+.SH "RETURN VALUES"
+.TP 15
+True
+The XkbChangeMap function returns True if the components specified by
+.I changes
+are present in the
+.I xkb
+parameter.
+.TP 15
+False
+The XkbChangeMap function returns False if the components specified by
+.I changes
+are not present in the
+.I xkb
+parameter.
+.SH STRUCTURES
+.LP
+Use the XkbMapChangesRec structure to identify and track partial modifications
+to the mapping components and to reduce the amount of traffic between the server
+and clients.
+.nf
+
+typedef struct _XkbMapChanges {
+ unsigned short changed; /* identifies valid components in
+structure */
+ KeyCode min_key_code; /* lowest numbered keycode for device
+*/
+ KeyCode max_key_code; /* highest numbered keycode for device
+*/
+ unsigned char first_type; /* index of first key type modified */
+ unsigned char num_types; /* # types modified */
+ KeyCode first_key_sym; /* first key whose key_sym_map changed
+*/
+ unsigned char num_key_syms; /* # key_sym_map entries changed */
+ KeyCode first_key_act; /* first key whose key_acts entry
+changed */
+ unsigned char num_key_acts; /* # key_acts entries changed */
+ KeyCode first_key_behavior; /* first key whose behaviors changed */
+ unsigned char num_key_behaviors; /* # behaviors entries changed */
+ KeyCode first_key_explicit; /* first key whose explicit entry
+changed */
+ unsigned char num_key_explicit; /* # explicit entries changed */
+ KeyCode first_modmap_key; /* first key whose modmap entry changed
+*/
+ unsigned char num_modmap_keys; /* # modmap entries changed */
+ KeyCode first_vmodmap_key; /* first key whose vmodmap changed */
+ unsigned char num_vmodmap_keys; /* # vmodmap entries changed */
+ unsigned char pad1; /* reserved */
+ unsigned short vmods; /* mask indicating which vmods changed
+*/
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbChangeNames.man b/man/xkb/XkbChangeNames.man
new file mode 100644
index 00000000..3f5d1292
--- /dev/null
+++ b/man/xkb/XkbChangeNames.man
@@ -0,0 +1,200 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeNames \- _summary-line_
+.SH SYNOPSIS
+.B Bool XkbChangeNames
+(
+.I dpy,
+.I which,
+.I Xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIXkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of names or map components to be updated
+.TP
+.I \- Xkb
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+.I XkbChangeNames
+provides a more flexible method for changing symbolic names than
+.I XkbSetNames
+and requires the use of an XkbNameChangesRec structure.
+
+.I XkbChangeNames
+copies any names specified by
+.I changes
+from the keyboard description,
+.I xkb,
+to the X server specified by
+.I dpy. XkbChangeNames
+aborts and returns False if any illegal type names or type shift level names are
+specified by changes.
+
+To change the symbolic names in the server, first modify a local copy of the
+keyboard description and then use either
+.I XkbSetNames,
+or, to save network traffic, use a XkbNameChangesRec structure and call
+.I XkbChangeNames
+to download the changes to the server.
+.I XkbSetNames
+and
+.I XkbChangeNames
+can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation
+errors.
+.SH STRUCTURES
+.LP
+The XkbNameChangesRec allows applications to identify small modifications to the
+symbolic names and
+effectively reduces the amount of traffic sent to the server:
+.nf
+
+ typedef struct _XkbNameChanges {
+ unsigned int changed; /* name components that have changed
+*/
+ unsigned char first_type; /* first key type with a new name */
+ unsigned char num_types; /* number of types with new names */
+ unsigned char first_lvl; /* first key type with new level
+names */
+ unsigned char num_lvls; /* number of key types with new level
+names */
+ unsigned char num_aliases; /* if key aliases changed, total
+number of key aliases */
+ unsigned char num_rg; /* if radio groups changed, total
+number of radio groups */
+ unsigned char first_key; /* first key with a new name */
+ unsigned char num_keys; /* number of keys with new names */
+ unsigned short changed_vmods; /* mask of virtual modifiers for
+which names have changed */
+ unsigned long changed_indicators; /* mask of indicators for which names
+were changed */
+ unsigned char changed_groups; /* mask of groups for which names
+were changed */
+ } XkbNameChangesRec, *XkbNameChangesPtr
+
+.fi
+The
+.I changed
+field specifies the name components that have changed and is the bitwise
+inclusive OR of the valid names
+mask bits defined in Table 1. The rest of the fields in the structure specify
+the ranges that have changed
+for the various kinds of symbolic names, as shown in Table 2.
+
+Xkb provides several functions that work with symbolic names. Each of these
+functions uses a mask to
+specify individual fields of the structures described above. These masks and
+their relationships to the
+fields in a keyboard description are shown in Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+.TS
+c s s s
+l l l l.
+Table 2 XkbNameChanges Fields
+_
+Mask Fields Component Field
+_
+XkbKeyTypeNamesMask first_type, Xkb->map type[*].name
+ num_types
+XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*]
+ num_lvls
+XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*]
+XkbRGNamesMask num_rg Xkb->names radio_groups[*]
+XkbKeyNamesMask first_key, Xkb->names keys[*]
+ num_keys
+XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*]
+XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*]
+XkbGroupNamesMask changed_groups Xkb->names groups[*]
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbSetNames (__libmansuffix__)
diff --git a/man/xkb/XkbChangeTypesOfKey.man b/man/xkb/XkbChangeTypesOfKey.man
new file mode 100644
index 00000000..b11ae706
--- /dev/null
+++ b/man/xkb/XkbChangeTypesOfKey.man
@@ -0,0 +1,222 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeTypesOfKey \- Change the number of groups and the types bound to a key
+.SH SYNOPSIS
+.B Status XkbChangeTypesOfKey
+(
+.I xkb,
+.I key,
+.I n_groups,
+.I groups,
+.I new_types_in,
+.I p_changes
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ int \fIkey\fP\^;
+.br
+ int \fIn_groups\fP\^;
+.br
+ unsigned int \fIgroups\fP\^;
+.br
+ int * \fInew_types_in\fP\^;
+.br
+ XkbMapChangesPtr \fIp_changes\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be changed
+.TP
+.I \- key
+keycode for key of interest
+.TP
+.I \- n_groups
+new number of groups for key
+.TP
+.I \- groups
+mask indicating groups to change
+.TP
+.I \- new_types_in
+indices for new groups specified in groups
+.TP
+.I \- p_changes
+notes changes made to xkb
+.SH DESCRIPTION
+.LP
+.I XkbChangeTypesOfKey
+reallocates the symbols and actions bound to the key, if necessary, and
+initializes any new symbols
+or actions to NoSymbol or NoAction, as appropriate. If the p_changes parameter
+is not NULL,
+.I XkbChangeTypesOfKey
+adds the XkbKeySymsMask to the changes field of
+.I p_changes
+and modifies the
+.I first_key_sym
+and
+.I num_key_syms
+fields of
+.I p_changes
+to include the
+.I key
+that was changed. See STRUCTURE for more information on the XkbMapChangesPtr
+structure. If
+successful,
+.I XkbChangeTypesOfKey
+returns Success.
+
+The
+.I n_groups
+parameter specifies the new number of groups for the key. The
+.I groups
+parameter is a mask specifying the groups for which new types are supplied and
+is a bitwise
+inclusive OR of the following masks: XkbGroup1Mask, XkbGroup2Mask,
+XkbGroup3Mask, and XkbGroup4Mask.
+
+The
+.I new_types_in
+parameter is an integer array of length
+.I n_groups.
+Each entry represents the type to use for the associated group and is an index
+into
+.I xkb->map->types.
+The
+.I new_types_in
+array is indexed by group index; if
+.I n_groups
+is four and
+.I groups
+only has Group1Mask and Group3Mask set,
+.I new_types_in
+looks like this:
+.nf
+
+ new_types_in[0] = type for Group1
+ new_types_in[1] = ignored
+ new_types_in[2] = type for Group3
+ new_types_in[3] = ignored
+
+.fi
+For convenience, Xkb provides the following constants to use as indices to the
+groups:
+
+.TS
+c s
+l l
+l l.
+Table 1 Group Index Constants
+_
+Constant Name Value
+_
+XkbGroup1Index 0
+XkbGroup2Index 1
+XkbGroup3Index 2
+XkbGroup4Index 3
+.TE
+
+If the Xkb extension has not been properly initialized,
+.I XkbChangeTypesOfKey
+returns BadAccess. If the
+.I xkb
+parameter it not valid (that is, it is NULL or it does not contain a valid
+client map),
+.I XkbChangeTypesOfKey
+returns BadMatch. If the
+.I key
+is not a valid keycode,
+.I n_groups
+is greater than XkbNumKbdGroups, or the
+.I groups
+mask does not contain any of the valid group mask bits,
+.I XkbChangeTypesOfKey
+returns BadValue. If it is necessary to resize the key symbols or key actions
+arrays and any
+allocation errors occur,
+.I XkbChangeTypesOfKey
+returns BadAlloc.
+.SH STRUCTURES
+.LP
+Use the XkbMapChangesRec structure to identify and track partial modifications
+to the mapping
+components and to reduce the amount of traffic between the server and clients.
+.nf
+
+typedef struct _XkbMapChanges {
+ unsigned short changed; /* identifies valid components in
+structure */
+ KeyCode min_key_code; /* lowest numbered keycode for device
+*/
+ KeyCode max_key_code; /* highest numbered keycode for device
+*/
+ unsigned char first_type; /* index of first key type modified */
+ unsigned char num_types; /* # types modified */
+ KeyCode first_key_sym; /* first key whose key_sym_map changed
+*/
+ unsigned char num_key_syms; /* # key_sym_map entries changed */
+ KeyCode first_key_act; /* first key whose key_acts entry
+changed */
+ unsigned char num_key_acts; /* # key_acts entries changed */
+ KeyCode first_key_behavior; /* first key whose behaviors changed */
+ unsigned char num_key_behaviors; /* # behaviors entries changed */
+ KeyCode first_key_explicit; /* first key whose explicit entry
+changed */
+ unsigned char num_key_explicit; /* # explicit entries changed */
+ KeyCode first_modmap_key; /* first key whose modmap entry changed
+*/
+ unsigned char num_modmap_keys; /* # modmap entries changed */
+ KeyCode first_vmodmap_key; /* first key whose vmodmap changed */
+ unsigned char num_vmodmap_keys; /* # vmodmap entries changed */
+ unsigned char pad1; /* reserved */
+ unsigned short vmods; /* mask indicating which vmods changed
+*/
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and
+range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbComputeRowBounds.man b/man/xkb/XkbComputeRowBounds.man
new file mode 100644
index 00000000..523505e0
--- /dev/null
+++ b/man/xkb/XkbComputeRowBounds.man
@@ -0,0 +1,64 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbComputeRowBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeRowBounds \- Update the bounding box of a row
+.SH SYNOPSIS
+.B Bool XkbComputeRowBounds
+(
+.I geom,
+.I section,
+.I row
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ XkbRowPtr \fIrow\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry that contains the section
+.TP
+.I \- section
+section that contains the row
+.TP
+.I \- row
+row to be examined and updated
+.SH DESCRIPTION
+.LP
+.I XkbComputeRowBounds
+checks the bounds of all keys in the
+.I row
+and updates the bounding box of the row if necessary.
+.I XkbComputeRowBounds
+returns False if any of the arguments is NULL; otherwise, it returns True.
diff --git a/man/xkb/XkbComputeSectionBounds.man b/man/xkb/XkbComputeSectionBounds.man
new file mode 100644
index 00000000..0ba9348a
--- /dev/null
+++ b/man/xkb/XkbComputeSectionBounds.man
@@ -0,0 +1,62 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbComputeSectionBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeSectionBounds \- Update the bounding box of a section
+.SH SYNOPSIS
+.B Bool XkbComputeSectionBounds
+(
+.I geom,
+.I section
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry that contains the section
+.TP
+.I \- section
+section to be examined and updated
+.SH DESCRIPTION
+.LP
+ If you add or delete a row to or from a section, or if you change the geometry
+of any of the rows in that section, you may need to update the bounding box for
+that section.
+
+.I XkbComputeSectionBounds
+examines all the rows of the
+.I section
+and updates the bounding box of that section so that it contains all rows.
+.I XkbComputeSectionBounds
+returns False if any of the arguments is NULL; otherwise, it returns True.
diff --git a/man/xkb/XkbComputeShapeBounds.man b/man/xkb/XkbComputeShapeBounds.man
new file mode 100644
index 00000000..cccdcbc0
--- /dev/null
+++ b/man/xkb/XkbComputeShapeBounds.man
@@ -0,0 +1,92 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbComputeShapeBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeShapeBounds \- Updates the bounding box of a shape
+.SH SYNOPSIS
+.B Bool XkbComputeShapeBounds
+(
+.I shape
+)
+.br
+ XkbShapePtr \fIshape\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape to be examined
+.SH DESCRIPTION
+.LP
+Xkb provides a number of convenience functions to help use a keyboard geometry. These include
+functions to return the bounding box of a shape's top surface and to update the bounding box
+of a shape row or section.
+
+A shape is made up of a number of outlines. Each outline is a polygon made up of a number of
+points. The bounding box of a shape is a rectangle that contains all the outlines of that
+shape.
+
+A ShapeRec contains a BoundsRec that describes the bounds of the shape. If you add or delete
+an outline to or from a shape, the bounding box must be updated.
+
+.I XkbComputeShapeBounds
+updates the BoundsRec contained in the
+.I shape
+by examining all the outlines of the shape and setting the BoundsRec to the minimum x and
+minimum y, and maximum x and maximum y values found in those outlines.
+.I XkbComputeShapeBounds
+returns False if
+.I shape
+is NULL or if there are no outlines for the shape; otherwise, it returns True.
+
+If you add or delete a key to or from a row, or if you update the shape of one of the keys in that row, you may need to update the bounding box of that row. To update the bounding box of a row, use
+.I XkbComputeRowBounds.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct _XkbShape {
+ Atom name; /* shape's name */
+ unsigned short num_outlines; /* number of outlines for the shape */
+ unsigned short sz_outlines; /* size of the outlines array */
+ XkbOutlinePtr outlines; /* array of outlines for the shape */
+ XkbOutlinePtr approx; /* pointer into the array to the approximating outline */
+ XkbOutlinePtr primary; /* pointer into the array to the primary outline */
+ XkbBoundsRec bounds; /* bounding box for the shape; encompasses all outlines */
+} XkbShapeRec, *XkbShapePtr;
+
+typedef struct _XkbBounds {
+ short x1,y1; /* upper left corner of the bounds, in mm/10 */
+ short x2,y2; /* lower right corner of the bounds, in mm/10 */
+} XkbBoundsRec, *XkbBoundsPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbComputeRowBounds (__libmansuffix__)
+
diff --git a/man/xkb/XkbComputeShapeTop.man b/man/xkb/XkbComputeShapeTop.man
new file mode 100644
index 00000000..844667a7
--- /dev/null
+++ b/man/xkb/XkbComputeShapeTop.man
@@ -0,0 +1,87 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbComputeShapeTop __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeShapeTop \- Determines the bounding box of the top surface of a shape
+.SH SYNOPSIS
+.B Bool XkbComputeShapeTop
+(
+.I shape,
+.I bounds_rtrn
+)
+.br
+ XkbShapePtr \fIshape\fP\^;
+.br
+ XkbBoundsPtr \fIbounds_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape to be examined
+.TP
+.I \- bounds_rtrn
+backfilled with the bounding box for the shape
+.SH DESCRIPTION
+.LP
+Xkb provides a number of convenience functions to help use a keyboard geometry.
+These include functions to return the bounding box of a shape's top surface and
+to update the bounding box of a shape row or section.
+
+A shape is made up of a number of outlines. Each outline is a polygon made up of
+a number of points. The bounding box of a shape is a rectangle that contains all
+the outlines of that shape.
+
+.I XkbComputeShapeTop
+returns a BoundsRec that contains two x and y coordinates. These coordinates
+describe the corners of a rectangle that contains the outline that describes the
+top surface of the shape. The top surface is defined to be the approximating
+outline if the
+.I approx
+field of
+.I shape
+is not NULL. If
+.I approx
+is NULL, the top surface is defined as the last outline in the
+.I shape's
+array of outlines.
+.I XkbComputeShapeTop
+returns False if
+.I shape
+is NULL or if there are no outlines for the shape; otherwise, it returns True.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct _XkbBounds {
+ short x1,y1; /* upper left corner of the bounds, in mm/10 */
+ short x2,y2; /* lower right corner of the bounds, in mm/10 */
+} XkbBoundsRec, *XkbBoundsPtr;
+
+.fi
diff --git a/man/xkb/XkbCopyKeyType.man b/man/xkb/XkbCopyKeyType.man
new file mode 100644
index 00000000..75cd0487
--- /dev/null
+++ b/man/xkb/XkbCopyKeyType.man
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbCopyKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbCopyKeyType \- Copy one XkbKeyTypeRec structures
+.SH SYNOPSIS
+.B Status XkbCopyKeyType
+(
+.I from,
+.I into
+)
+.br
+ XkbKeyTypePtr \fIfrom\fP\^;
+.br
+ XkbKeyTypePtr \fIinto\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- from
+pointer to XkbKeyTypeRec to be copied
+.TP
+.I \- into
+pointer to XkbKeyTypeRec to be changed
+.SH DESCRIPTION
+.LP
+.I XkbCopyKeyType
+copies the key type specified by
+.I from
+to the key type specified by
+.I into.
+Both must point to legal XkbKeyTypeRec structures. Xkb assumes
+.I from
+and
+.I into
+point to different places. As a result, overlaps can be fatal.
+.I XkbCopyKeyType
+frees any existing
+.I map, preserve,
+and
+.I level_names
+in
+.I into
+prior to copying. If any allocation errors occur while copying
+.I from
+to
+.I into, XkbCopyKeyType
+returns BadAlloc. Otherwise,
+.I XkbCopyKeyType
+copies
+.I from
+to
+.I into
+and returns Success.
+.SH STRUCTURES
+.LP
+Key types are used to determine the shift level of a key given the current state of the
+keyboard. The set of all possible key types for the Xkb keyboard description are held in the
+.I types
+field of the client map, whose total size is stored in
+.I size_types,
+and whose total number of valid entries is stored in
+.I num_types.
+Key types are defined using the following structure:
+.nf
+
+typedef struct { /* Key Type */
+ XkbModsRec mods; /* modifiers used to compute shift level */
+ unsigned char num_levels; /* total # shift levels, do not modify directly */
+ unsigned char map_count; /* # entries in map, preserve (if non-NULL) */
+ XkbKTMapEntryPtr map; /* vector of modifiers for each shift level */
+ XkbModsPtr preserve; /* mods to preserve for corresponding map entry */
+ Atom name; /* name of key type */
+ Atom * level_names; /* array of names of each shift level */
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/man/xkb/XkbCopyKeyTypes.man b/man/xkb/XkbCopyKeyTypes.man
new file mode 100644
index 00000000..d8240bf1
--- /dev/null
+++ b/man/xkb/XkbCopyKeyTypes.man
@@ -0,0 +1,130 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbCopyKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbCopyKeyTypes \- Copy more than one XkbKeyTypeRec structure
+.SH SYNOPSIS
+.B Status XkbCopyKeyTypes
+(
+.I from,
+.I into,
+.I num_types
+)
+.br
+ XkbKeyTypePtr \fIfrom\fP\^;
+.br
+ XkbKeyTypePtr \fIinto\fP\^;
+.br
+ int \fInum_types\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- from
+pointer to array of XkbKeyTypeRecs to copy
+.TP
+.I \- into
+pointer to array of XkbKeyTypeRecs to change
+.TP
+.I \- num_types
+number of types to copy
+.SH DESCRIPTION
+.LP
+.I XkbCopyKeyTypes
+copies
+.I num_types
+XkbKeyTypeRec structures from the array specified by
+.I from
+into the array specified by
+.I into.
+It is intended for copying between, rather than within, keyboard descriptions,
+so it
+doesn't check for overlaps. The same rules that apply to the
+.I from
+and
+.I into
+parameters in
+.I XkbCopyKeyType
+apply to each entry of the
+.I from
+and
+.I into
+arrays of
+.I XkbCopyKeyTypes.
+If any allocation errors occur while copying
+.I from
+to
+.I into, XkbCopyKeyTypes
+returns BadAlloc. Otherwise,
+.I XkbCopyKeyTypes
+copies
+.I from
+to
+.I into
+and returns Success.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbCopyKeyTypes function returns Success when there are no allocation
+errors.
+.SH STRUCTURES
+.LP
+Key types are used to determine the shift level of a key given the current state
+of the
+keyboard. The set of all possible key types for the Xkb keyboard description are
+held in
+the
+.I types
+field of the client map, whose total size is stored in
+.I size_types,
+and whose total number of valid entries is stored in
+.I num_types.
+Key types are defined using the following structure:
+.nf
+
+typedef struct { /* Key Type */
+ XkbModsRec mods; /* modifiers used to compute shift level */
+ unsigned char num_levels; /* total # shift levels, do not modify
+directly */
+ unsigned char map_count; /* # entries in map, preserve (if non-NULL)
+*/
+ XkbKTMapEntryPtr map; /* vector of modifiers for each shift level
+*/
+ XkbModsPtr preserve; /* mods to preserve for corresponding map
+entry */
+ Atom name; /* name of key type */
+ Atom * level_names; /* array of names of each shift level */
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.SH "SEE ALSO"
+.BR XkbCopyKeyType (__libmansuffix__)
diff --git a/man/xkb/XkbDeviceBell.man b/man/xkb/XkbDeviceBell.man
new file mode 100644
index 00000000..da5cf8bb
--- /dev/null
+++ b/man/xkb/XkbDeviceBell.man
@@ -0,0 +1,313 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbDeviceBell \- Rings the bell on an X input extension device or the default keyboard
+.SH SYNOPSIS
+.B Bool XkbDeviceBell
+(
+.I display,
+.I window,
+.I device_spec,
+.I bell_class,
+.I bell_id,
+.I percent,
+.I name
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ Window \fI window \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned int \fI bell_class \fP\^;
+.br
+ unsigned int \fI bell_id \fP\^;
+.br
+ int \fI percent \fP\^;
+.br
+ Atom \fI name \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+window for which the bell is generated, or None
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- bell_class
+X input extension bell class of the bell to be rung
+.TP
+.I \- bell_id
+X input extension bell ID of the bell to be rung
+.TP
+.I \- percent
+bell volume, from -100 to 100 inclusive
+.TP
+.I \- name
+a name for the bell, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell with a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients to
+attach symbolic names to bells, disable audible bells, and receive an event whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of view,
+merely a name, and not connected with any physical sound-generating device. Some client
+application must generate the sound, or visual feedback, if any, that is associated with
+the name.)
+
+You can also ask to receive XkbBellNotify events when the server rings the default bell
+or if any client has requested events only (without the bell sounding) for any of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell control
+to prevent the server from also generating a sound and avoid cacophony. If you disable
+audible bells and request to receive XkbBellNotify events, you can generate feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or
+repeating, Xkb can provide feedback for the controls by using special beep codes. The
+AccessXFeedback control is used to configure the specific types of operations that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an Atom
+and then using this name when you call the functions listed in this chapter. If an event
+is generated as a result, the name is then passed to all other clients interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that there is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the screen)
+must be generated by a client application upon receipt of the bell event containing the
+name. There is no default name for the default keyboard bell. The server does generate
+some predefined bells for the AccessX controls. These named bells are shown in the Table 1
+; the name is included in any bell event sent to clients that have requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell. This
+is useful if you need to use an audio server instead of the system beep. For example,
+when an audio client starts, it could disable the audible bell (the system bell) and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell events.
+
+The input extension has two types of feedbacks that can generate bells - bell feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+The Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+Set
+.I percent
+to be the volume relative to the base volume for the keyboard as described for .I XBell.
+
+Note that
+.I bell_class
+and
+.I bell_id
+indicate the bell to physically ring.
+.I name
+is simply an arbitrary moniker for the client application's use.
+
+To determine the current feedback settings of an extension input device, use
+.I XGetFeedbackControl.
+See the X input extension documentation for more information on
+.I XGetFeedbackControl
+and related data structures.
+
+If a compatible keyboard extension is not present in the X server,
+.I XkbDeviceBell
+immediately returns False. Otherwise,
+.I XkbDeviceBell
+rings the bell as specified for the display and keyboard device and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a
+.I XkbBellNotify
+event.
+
+You can call
+.I XkbDeviceBell
+without first initializing the keyboard extension.
+.SH STRUCTURES
+Xkb generates XkbBellNotify events for all bells except for those resulting from calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbBellNotify */
+ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /* requested volume as % of max */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in microseconds */
+ unsigned int bell_class; /* X input extension feedback class */
+ unsigned int bell_id; /* X input extension feedback ID */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (3X11),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XGetFeedbackControl (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
+
diff --git a/man/xkb/XkbDeviceBellEvent.man b/man/xkb/XkbDeviceBellEvent.man
new file mode 100644
index 00000000..b3568bd6
--- /dev/null
+++ b/man/xkb/XkbDeviceBellEvent.man
@@ -0,0 +1,344 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbDeviceBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbDeviceBellEvent \- Creates a bell event for an X input extension device or
+for the keyboard, without ringing the corresponding bell
+.SH SYNOPSIS
+.B Bool XkbDeviceBellEvent
+(
+.I display,
+.I window,
+.I device_spec,
+.I bell_class,
+.I bell_id,
+.I percent,
+.I name
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ Window \fI window \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned int \fI bell_class \fP\^;
+.br
+ unsigned int \fI bell_id \fP\^;
+.br
+ int \fI percent \fP\^;
+.br
+ Atom \fI name \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+event window, or None
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- bell_class
+input extension bell class for the event
+.TP
+.I \- bell_id
+input extension bell ID for the event
+.TP
+.I \- percent
+volume for the bell, which can range from -100 to 100 inclusive
+.TP
+.I \- name
+a bell name, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell with
+a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients to
+attach symbolic names to bells, disable audible bells, and receive an event whenever
+the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to
+any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of
+view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is associated
+with
+the name.)
+
+You can also ask to receive XkbBellNotify events when the server rings the default
+bell
+or if any client has requested events only (without the bell sounding) for any of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that replaces
+the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions
+that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or
+repeating, Xkb can provide feedback for the controls by using special beep codes. The
+AccessXFeedback control is used to configure the specific types of operations that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an
+Atom
+and then using this name when you call the functions listed in this chapter. If an
+event
+is generated as a result, the name is then passed to all other clients interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that there is
+no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event containing
+the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in the
+Table 1
+below; the name is included in any bell event sent to clients that have requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell.
+This
+is useful if you need to use an audio server instead of the system beep. For example,
+when an audio client starts, it could disable the audible bell (the system bell) and
+then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio
+client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an
+XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbDeviceBellEvent
+immediately returns False. Otherwise,
+.I XkbDeviceBellEvent
+causes an XkbBellNotify event to be sent to all interested clients and returns
+True. Set
+.I percent
+to be the volume relative to the base volume for the keyboard as described for
+.I XBell.
+
+In addition,
+.I XkbDeviceBellEvent
+may generate Atom protocol errors as well as XkbBellNotify events. You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbDeviceBellEvent
+sends an XkbBellNotify event to to all interested clients and returns
+True.
+.TP 15
+False
+If a compatible keyboard extension isn't present in the X server,
+.I XkbDeviceBellEvent
+immediately returns False
+.SH STRUCTURES
+.TP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask
+in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbBellNotify */
+ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /* requested volume as % of max */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in microseconds */
+ unsigned int bell_class; /* X input extension feedback class */
+ unsigned int bell_id; /* X input extension feedback ID */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (3X11),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
+
+
+
diff --git a/man/xkb/XkbFindOverlayForKey.man b/man/xkb/XkbFindOverlayForKey.man
new file mode 100644
index 00000000..783fddf1
--- /dev/null
+++ b/man/xkb/XkbFindOverlayForKey.man
@@ -0,0 +1,66 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFindOverlayForKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFindOverlayForKey \- Find the alternate name by using the primary name for a
+key that is part of an overlay
+.SH SYNOPSIS
+.B char * XkbFindOverlayForKey
+(
+.I geom,
+.I section,
+.I under
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ char * \fIunder\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry that contains the section
+.TP
+.I \- section
+section to be searched for matching keys
+.TP
+.I \- under
+primary name of the key to be considered
+.SH DESCRIPTION
+.LP
+Keys that can generate multiple keycodes may be associated with multiple names.
+Such keys have a primary name and an alternate name.
+
+.I XkbFindOverlayForKey
+uses the primary name of the key,
+.I under,
+to look up the alternate name, which it returns.
diff --git a/man/xkb/XkbForceBell.man b/man/xkb/XkbForceBell.man
new file mode 100644
index 00000000..2120530c
--- /dev/null
+++ b/man/xkb/XkbForceBell.man
@@ -0,0 +1,326 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbForceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbForceBell \- Overrides user preference settings for audible bells to ring the
+bell on the default keyboard
+.SH SYNOPSIS
+.B Bool XkbForceBell
+(
+.I display,
+.I percent
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ int \fI percent \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- percent
+volume for the bell, which can range from -100 to 100 inclusive
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients
+to
+attach symbolic names to bells, disable audible bells, and receive an event whenever
+the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to
+any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of
+view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is associated
+with
+the name.)
+
+.LP
+You can also ask to receive XkbBellNotify events when the server rings the default
+bell
+or if any client has requested events only (without the bell sounding) for any of
+the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that replaces
+the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions
+that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or
+repeating, Xkb can provide feedback for the controls by using special beep codes.
+The
+AccessXFeedback control is used to configure the specific types of operations that
+generate feedback.
+
+.B Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an
+Atom
+and then using this name when you call the functions listed in this chapter. If an
+event
+is generated as a result, the name is then passed to all other clients interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that there
+is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event containing
+the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in the
+Table 1; the name is included in any bell event sent to clients that have requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+.B Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell.
+This
+is useful if you need to use an audio server instead of the system beep. For
+example,
+when an audio client starts, it could disable the audible bell (the system bell) and
+then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio
+client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback
+of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is
+called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbForceBell
+calls
+.I XBell
+with the specified
+.I display
+and
+.I percent
+and returns False. Otherwise,
+.I XkbForceBell
+calls
+.I XkbForceDeviceBell
+with the specified
+.I display
+and
+.I percent, device_spec
+=XkbUseCoreKbd,
+.I bell_class
+= XkbDfltXIClass,
+.I bell_id
+= XkbDfltXIId,
+.I window
+= None, and
+.I name
+= NULL, and returns what
+.I XkbForceDeviceBell
+returns.
+
+.I XkbForceBell
+does not cause an XkbBellNotify event.
+
+You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH "RETURNS VALUES"
+.TP 15
+False
+The
+.I XkbForceBell
+function returns False when a compatible keyboard extension isn't present in the X server.
+.SH STRUCTURES
+.LP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbBellNotify */
+ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /* requested volume as % of max */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in microseconds */
+ unsigned int bell_class; /* X input extension feedback class */
+ unsigned int bell_id; /* X input extension feedback ID */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (3X11),
+.BR XkbBell (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/man/xkb/XkbForceDeviceBell.man b/man/xkb/XkbForceDeviceBell.man
new file mode 100644
index 00000000..86045d5b
--- /dev/null
+++ b/man/xkb/XkbForceDeviceBell.man
@@ -0,0 +1,319 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbForceDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbForceDeviceBell \- Rings the bell on any keyboard, overriding user preference
+settings for audible bells
+.SH SYNOPSIS
+.B Bool XkbForceDeviceBell
+(
+.I display,
+.I window,
+.I device_spec,
+.I bell_class,
+.I bell_id,
+.I percent
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ Window \fI window \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned int \fI bell_class \fP\^;
+.br
+ unsigned int \fI bell_id \fP\^;
+.br
+ int \fI percent \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+event window, or None
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- bell_class
+input extension class of the bell to be rung
+.TP
+.I \- bell_id
+input extension ID of the bell to be rung
+.TP
+.I \- percent
+relative volume, which can range from -100 to 100 inclusive
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients
+to
+attach symbolic names to bells, disable audible bells, and receive an event
+whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to
+any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of
+view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is associated
+with
+the name.)
+
+.LP
+You can also ask to receive XkbBellNotify events when the server rings the default
+bell
+or if any client has requested events only (without the bell sounding) for any of
+the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that
+replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate
+feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions
+that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb
+can provide feedback for the controls by using special beep codes. The AccessXFeedback control
+is used to configure the specific types of operations that generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an Atom
+and then using this name when you call the functions listed in this chapter. If an event
+is generated as a result, the name is then passed to all other clients interested in receiving
+XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any
+sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a
+client application upon receipt of the bell event containing the name. There is no default name
+for the default keyboard bell. The server does generate some predefined bells for the AccessX
+controls. These named bells are shown in Table 1; the name is included in any bell event sent to
+clients that have requested to receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell. This
+is useful if you need to use an audio server instead of the system beep. For example,
+when an audio client starts, it could disable the audible bell (the system bell) and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could
+then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs.
+This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does
+not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell events.
+
+The input extension has two types of feedbacks that can generate bells - bell feedback and
+keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type;
+set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated
+when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbForceDeviceBell
+immediately returns False. Otherwise,
+.I XkbForceDeviceBell
+rings the bell as specified for the display and keyboard device and returns
+True. Set
+.I percent
+to be the volume relative to the base volume for the keyboard as described for
+.I XBell.
+
+There is no
+.I name
+parameter because
+.I XkbForceDeviceBell
+does not cause an XkbBellNotify event.
+
+You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH STRUCTURES
+.LP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbBellNotify */
+ unsigned int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /* requested volume as % of max */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in microseconds */
+ unsigned int bell_class; /* X input extension feedback class */
+ unsigned int bell_id; /* X input extension feedback ID */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+.SH "SEE ALSO"
+.BR XBell (3X11),
+.BR XkbBell (__libmansuffix__),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
+
+
+
+
diff --git a/man/xkb/XkbFreeClientMap.man b/man/xkb/XkbFreeClientMap.man
new file mode 100644
index 00000000..073316b7
--- /dev/null
+++ b/man/xkb/XkbFreeClientMap.man
@@ -0,0 +1,215 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeClientMap \- Free memory used by the client map member of an XkbDescRec
+structure
+.SH SYNOPSIS
+.B void XkbFreeClientMap
+(
+.I xkb,
+.I which,
+.I free_all
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing client map to free
+.TP
+.I \- which
+mask identifying components of map to free
+.TP
+.I \- free_all
+True => free all client components and map itself
+.SH DESCRIPTION
+.LP
+.I XkbFreeClientMap
+frees the components of client map specified by
+.I which
+in the XkbDescRec structure specified by the
+.I xkb
+parameter and sets the corresponding structure component values to NULL. The
+.I which
+parameter specifies a combination of the client map masks shown in Table 1.
+
+If
+.I free_all
+is True,
+.I which
+is ignored;
+.I XkbFreeClientMap
+frees every non-NULL structure component in the client map, frees the
+XkbClientMapRec
+structure referenced by the
+.I map
+member of the
+.I xkb
+parameter, and sets the
+.I map
+member to NULL.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocClientMap Masks
+_
+Mask Effect
+_
+XkbKeyTypesMask T{
+The type_count field specifies the number of entries to preallocate for the
+types field of the client map. If the type_count field is less than
+XkbNumRequiredTypes returns BadValue.
+T}
+.sp
+XkbKeySymsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the syms and key_sym_map fields of the client map. The fields are
+allocated to contain the maximum number of entries necessary for max_key_code -
+min_key_code + 1 keys.
+T}
+.sp
+XkbModifierMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the modmap field of the client map. The field is allocated to contain
+the maximum number of entries necessary for max_key_code - min_key_code + 1
+keys.
+T}
+.TE
+
+NOTE: The
+.I min_key_code
+and
+.I max_key_code
+fields of the
+.I xkb
+parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks
+are set in the
+.I which
+parameter. If they are not valid,
+.I XkbAllocClientMap
+returns BadValue.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The
+.I map
+field of the complete Xkb keyboard description is a pointer to the Xkb client
+map, which is
+of type XkbClientMapRec:
+.nf
+
+ typedef struct { /* Client Map */
+ unsigned char size_types; /* # occupied entries in types */
+ unsigned char num_types; /* # entries in types */
+ XkbKeyTypePtr types; /* vector of key types used by this keymap */
+ unsigned short size_syms; /* length of the syms array */
+ unsigned short num_syms; /* # entries in syms */
+ KeySym * syms; /* linear 2d tables of keysyms, 1 per key */
+ XkbSymMapPtr key_sym_map; /* 1 per keycode, maps keycode to syms */
+ unsigned char * modmap; /* 1 per keycode, real mods bound to key */
+} XkbClientMapRec, *XkbClientMapPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbAllocClientMap (__libmansuffix__)
diff --git a/man/xkb/XkbFreeCompatMap.man b/man/xkb/XkbFreeCompatMap.man
new file mode 100644
index 00000000..d2f01e9c
--- /dev/null
+++ b/man/xkb/XkbFreeCompatMap.man
@@ -0,0 +1,178 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeCompatMap \- Free an entire compatibility map or selected portions of one
+.SH SYNOPSIS
+.B void XkbFreeCompatMap
+(
+.I xkb,
+.I which,
+.I free_map
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_map\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description in which to free compatibility map
+.TP
+.I \- which
+mask of compatibility map components to free
+.TP
+.I \- free_map
+True => free XkbCompatMap structure itself
+.SH DESCRIPTION
+.LP
+.I which
+specifies the compatibility map components to be freed (see XkbGetCompatMap).
+.I which
+is an inclusive OR of the bits shown in Table 1.
+
+.TS
+c s s
+l l l.
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+.I free_map
+indicates whether the XkbCompatMap structure itself should be freed. If
+.I free_map
+is True,
+.I which
+is ignored, all non-NULL compatibility map components are freed, and the
+.I compat
+field in the XkbDescRec referenced by
+.I xkb
+is set to NULL.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbCompatMapRec {
+ XkbSymInterpretPtr sym_interpret; /* symbol based key semantics*/
+ XkbModsRec groups[XkbNumKbdGroups]; /* group => modifier map */
+ unsigned short num_si; /* # structures used in sym_interpret */
+ unsigned short size_si; /* # structures allocated in sym_interpret */
+ } XkbCompatMapRec, *XkbCompatMapPtr;
+
+.fi
+
+The complete description of an Xkb keyboard is given by an XkbDescRec. The component
+structures in the XkbDescRec represent the major Xkb components outlined in Figure 1.1.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the keyboard.
+The other fields specify structure components of the keyboard description and are
+described in detail in other sections of this document. Table 2 identifies the
+subsequent sections of this document that discuss the individual components of the
+XkbDescRec.
+
+.TS
+c s
+l l
+l l.
+Table 2 XkbDescRec Component References
+_
+XkbDescRec Field For more info
+_
+ctrls Chapter 10
+server Chapter 16
+map Chapter 15
+indicators Chapter 8
+names Chapter 18
+compat Chapter 17
+geom Chapter 13
+.TE
+
+Each structure component has a corresponding mask bit that is used in function calls to
+indicate that the structure should be manipulated in some manner, such as allocating it
+or freeing it. These masks and their relationships to the fields in the XkbDescRec are
+shown in Table 3.
+
+.TS
+c s s
+l l l
+l l l.
+Table 3 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH "SEE ALSO"
+.BR XkbGetCompatMap (__libmansuffix__)
diff --git a/man/xkb/XkbFreeComponentList.man b/man/xkb/XkbFreeComponentList.man
new file mode 100644
index 00000000..137fd707
--- /dev/null
+++ b/man/xkb/XkbFreeComponentList.man
@@ -0,0 +1,54 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeComponentList __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeComponentList \- Free the structure returned by
+.I XkbListComponents
+.SH SYNOPSIS
+.B void XkbFreeComponentList
+(
+.I list
+)
+.br
+ XkbComponentListPtr \fIlist\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- list
+pointer to XkbComponentListRec to free
+.SH DESCRIPTION
+.LP
+When you are done using the structure returned by
+.I XkbListComponents,
+free it using
+.I XkbFreeComponentList.
+.SH "SEE ALSO"
+.BR XkbListComponents (__libmansuffix__)
diff --git a/man/xkb/XkbFreeControls.man b/man/xkb/XkbFreeControls.man
new file mode 100644
index 00000000..905a894b
--- /dev/null
+++ b/man/xkb/XkbFreeControls.man
@@ -0,0 +1,127 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeControls \- Frees memory used by the ctrls member of an XkbDescRec structure
+.SH SYNOPSIS
+.B void XkbFreeControls
+(
+.I xkb,
+.I which,
+.I free_all
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description in which to free controls components
+.TP
+.I \- which
+mask of components of ctrls to free
+.TP
+.I \- free_all
+True => free everything + ctrls itself
+.SH DESCRIPTION
+.LP
+.I XkbFreeControls
+frees the specified components of the
+.I ctrls
+field in the
+.I xkb
+keyboard description and sets the corresponding structure component values to NULL or zero. The
+.I which
+mask specifies the fields of
+.I ctrls
+to be freed and can contain any of the controls components specified in Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+If
+.I free_all
+is True,
+.I XkbFreeControls
+frees every non-NULL structure component in the controls, frees the XkbControlsRec structure referenced by the
+.I ctrls
+member of
+.I xkb,
+and sets
+.I ctrls
+to NULL.
diff --git a/man/xkb/XkbFreeDeviceInfo.man b/man/xkb/XkbFreeDeviceInfo.man
new file mode 100644
index 00000000..42ead2c1
--- /dev/null
+++ b/man/xkb/XkbFreeDeviceInfo.man
@@ -0,0 +1,190 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeDeviceInfo \- Free an XkbDeviceInfoRec structure
+.SH SYNOPSIS
+.B void XkbFreeDeviceInfo
+(
+.I device_info,
+.I which,
+.I free_all
+)
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+pointer to XkbDeviceInfoRec in which to free items
+.TP
+.I \- which
+mask of components of device_info to free
+.TP
+.I \- free_all
+True => free everything, including device_info
+.SH DESCRIPTION
+.LP
+If
+.I free_all
+is True, the
+.I XkbFreeDeviceInfo
+frees all components of
+.I device_info
+and the XkbDeviceInfoRec structure pointed to by
+.I device_info
+itself. If
+.I free_all
+is False, the value of
+.I which
+determines which subcomponents are freed.
+.I which
+is an inclusive OR of one or more of the values from Table 1. If
+.I which
+contains XkbXI_ButtonActionsMask, all button actions associated with
+.I device_info
+are freed,
+.I device_info->btn_acts
+is set to NULL, and
+.I device_info->num_btns
+is set to zero. If
+.I which
+contains all bits in XkbXI_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with
+.I device_info
+are freed,
+.I device_info->leds
+is set to NULL, and
+.I device_info->sz_leds
+and
+.I device_info->num_leds
+are set to zero. If
+.I which
+contains XkbXI_IndicatorMapsMask, all indicator maps associated with
+.I device_info
+are cleared, but the number of LEDs and the leds structures themselves is preserved. If
+.I which
+contains XkbXI_IndicatorNamesMask, all indicator names associated with
+.I device_info
+are cleared, but the number of LEDs and the leds structures themselves is preserved. If
+.I which
+contains XkbXI_IndicatorStateMask, the indicator state associated with the
+.I device_info
+leds are set to zeros but the number of LEDs and the leds structures themselves is preserved.
+.bp
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+typedef struct {
+ char * name; /* name for device */
+ Atom type; /* name for class of devices */
+ unsigned short device_spec; /* device of interest */
+ Bool has_own_state; /* True=>this device has its own state */
+ unsigned short supported; /* bits indicating supported capabilities */
+ unsigned short unsupported; /* bits indicating unsupported capabilities */
+ unsigned short num_btns; /* number of entries in btn_acts */
+ XkbAction * btn_acts; /* button actions */
+ unsigned short sz_leds; /* total number of entries in LEDs vector */
+ unsigned short num_leds; /* number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /* LED descriptions */
+} XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+typedef struct {
+ unsigned short led_class; /* class for this LED device*/
+ unsigned short led_id; /* ID for this LED device */
+ unsigned int phys_indicators; /* bits for which LEDs physically present */
+ unsigned int maps_present; /* bits for which LEDs have maps in maps */
+ unsigned int names_present; /* bits for which LEDs are in names */
+ unsigned int state; /* 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /* names for LEDs */
+ XkbIndicatorMapRec maps; /* indicator maps for each LED */
+} XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+
+.fi
diff --git a/man/xkb/XkbFreeGeomColors.man b/man/xkb/XkbFreeGeomColors.man
new file mode 100644
index 00000000..02827ae9
--- /dev/null
+++ b/man/xkb/XkbFreeGeomColors.man
@@ -0,0 +1,96 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomColors \- Free geometry colors
+.SH SYNOPSIS
+.B void XkbFreeGeomColors
+(
+.I geom,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which colors should be freed
+.TP
+.I \- first
+first color to be freed
+.TP
+.I \- count
+number of colors to be freed
+.TP
+.I \- free_all
+True => all colors are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all colors are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+colors are freed beginning with the one specified by
+.I first.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomDoodads.man b/man/xkb/XkbFreeGeomDoodads.man
new file mode 100644
index 00000000..56256e36
--- /dev/null
+++ b/man/xkb/XkbFreeGeomDoodads.man
@@ -0,0 +1,92 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomDoodads \- Free geometry doodads
+.SH SYNOPSIS
+.B void XkbFreeGeomDoodads
+(
+.I doodads,
+.I count,
+.I free_all
+)
+.br
+ XkbDoodadPtr \fIdoodads\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- doodads
+doodads to be freed
+.TP
+.I \- count
+number of doodads to be freed
+.TP
+.I \- free_all
+True => all doodads are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all doodads in the array are freed, regardless of the value of
+.I count.
+Otherwise,
+.I count
+doodads are freed.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomDoodads function returns Success if there are no allocation
+errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomKeyAliases.man b/man/xkb/XkbFreeGeomKeyAliases.man
new file mode 100644
index 00000000..f5efa4f0
--- /dev/null
+++ b/man/xkb/XkbFreeGeomKeyAliases.man
@@ -0,0 +1,105 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomKeyAliases \- Free geometry key aliases
+.SH SYNOPSIS
+.B void XkbFreeGeomKeyAliases
+(
+.I geom,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which key aliases should be freed
+.TP
+.I \- first
+first key alias to be freed
+.TP
+.I \- count
+number of key aliases to be freed
+.TP
+.I \- free_all
+True => all key aliases are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all aliases in the top level of the specified geometry
+.I geom
+are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+aliases in
+.I geom
+are freed beginning with the one specified by
+.I first.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomKeyAliases function returns Success if there are no allocation
+errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomKeys.man b/man/xkb/XkbFreeGeomKeys.man
new file mode 100644
index 00000000..b325daf4
--- /dev/null
+++ b/man/xkb/XkbFreeGeomKeys.man
@@ -0,0 +1,74 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomKeys \- Free geometry keys
+.SH SYNOPSIS
+.B void XkbFreeGeomKeys
+(
+.I row,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbRowPtr \fIrow\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row in which keys should be freed
+.TP
+.I \- first
+first key to be freed
+.TP
+.I \- count
+number of keys to be freed
+.TP
+.I \- free_all
+True => all keys are freed
+.SH DESCRIPTION
+.LP
+If
+.I free_all
+is True, all keys are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+keys are freed beginning with the one specified by
+.I first.
diff --git a/man/xkb/XkbFreeGeomOutlines.man b/man/xkb/XkbFreeGeomOutlines.man
new file mode 100644
index 00000000..3ed6c3d3
--- /dev/null
+++ b/man/xkb/XkbFreeGeomOutlines.man
@@ -0,0 +1,74 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOutlines \- Free geometry outlines
+.SH SYNOPSIS
+.B void XkbFreeGeomOutlines
+(
+.I shape,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbShapePtr \fIshape\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape in which outlines should be freed
+.TP
+.I \- first
+first outline to be freed
+.TP
+.I \- count
+number of outlines to be freed
+.TP
+.I \- free_all
+True => all outlines are freed
+.SH DESCRIPTION
+.LP
+If
+.I free_all
+is True, all outlines are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+outlines are freed beginning with the one specified by
+.I first.
diff --git a/man/xkb/XkbFreeGeomOverlayKeys.man b/man/xkb/XkbFreeGeomOverlayKeys.man
new file mode 100644
index 00000000..a065ace6
--- /dev/null
+++ b/man/xkb/XkbFreeGeomOverlayKeys.man
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOverlayKeys \- Free keys in an overlay row
+.SH SYNOPSIS
+.B void XkbFreeGeomOverlayKeys
+(
+.I row,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbRowPtr \fIrow\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row in which keys should be freed
+.TP
+.I \- first
+first key to be freed
+.TP
+.I \- count
+number of keys to be freed
+.TP
+.I \- free_all
+True => all keys are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all keys are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of keys specified by
+.I count
+are freed, beginning with the key specified by
+.I first
+in the specified row.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomOverlayKeys function returns Success if there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomOverlayRows.man b/man/xkb/XkbFreeGeomOverlayRows.man
new file mode 100644
index 00000000..f31fca21
--- /dev/null
+++ b/man/xkb/XkbFreeGeomOverlayRows.man
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOverlayRows \- Free rows in an overlay
+.SH SYNOPSIS
+.B void XkbFreeGeomOverlayRows
+(
+.I overlay,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbSectionPtr \fIoverlay\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+section in which rows should be freed
+.TP
+.I \- first
+first row to be freed
+.TP
+.I \- count
+number of rows to be freed
+.TP
+.I \- free_all
+True => all rows are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all rows are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of rows specified by
+.I count
+are freed, beginning with the row specified by
+.I first
+in the specified overlay.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomOverlayRows function returns Success if there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomOverlays.man b/man/xkb/XkbFreeGeomOverlays.man
new file mode 100644
index 00000000..afeb3582
--- /dev/null
+++ b/man/xkb/XkbFreeGeomOverlays.man
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOverlays \- Free rows in a section
+.SH SYNOPSIS
+.B void XkbFreeGeomOverlays
+(
+.I section,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section in which overlays should be freed
+.TP
+.I \- first
+first overlay to be freed
+.TP
+.I \- count
+number of overlays to be freed
+.TP
+.I \- free_all
+True => all overlays are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all overlays are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of overlays specified by
+.I count
+are freed, beginning with the overlay specified by
+.I first
+in the specified section.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomOverlays functions returns Success if there are no allocation or
+argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomPoints.man b/man/xkb/XkbFreeGeomPoints.man
new file mode 100644
index 00000000..ce941eb1
--- /dev/null
+++ b/man/xkb/XkbFreeGeomPoints.man
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomPoints \- Free points in a outline
+.SH SYNOPSIS
+.B void XkbFreeGeomPoints
+(
+.I outline,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbOutlinePtr \fIoutline\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- outline
+outline in which points should be freed
+.TP
+.I \- first
+first point to be freed
+.TP
+.I \- count
+number of points to be freed
+.TP
+.I \- free_all
+True => all points are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all points are freed regardless of the value of
+>i first
+and
+.I count.
+Otherwise, the number of points specified by
+.I count
+are freed, beginning with the point specified by
+.I first
+in the specified outline.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomPoints function returns Success when there are no allocation or
+argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomProperties.man b/man/xkb/XkbFreeGeomProperties.man
new file mode 100644
index 00000000..586dfb1d
--- /dev/null
+++ b/man/xkb/XkbFreeGeomProperties.man
@@ -0,0 +1,101 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomProperties __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomProperties \- Free geometry properties
+.SH SYNOPSIS
+.B void XkbFreeGeomProperties
+(
+.I geom,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool * \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which properties should be freed
+.TP
+.I \- first
+first property to be freed
+.TP
+.I \- count
+number of properties to be freed
+.TP
+.I \- free_all
+True => all properties are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all properties are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+properties are freed beginning with the one specified by
+.I first.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomProperties function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomRows.man b/man/xkb/XkbFreeGeomRows.man
new file mode 100644
index 00000000..0a67af5c
--- /dev/null
+++ b/man/xkb/XkbFreeGeomRows.man
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomRows \- Free rows in a section
+.SH SYNOPSIS
+.B void XkbFreeGeomRows
+(
+.I section,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbSectionPtr \fIsection\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section in which rows should be freed
+.TP
+.I \- first
+first row to be freed
+.TP
+.I \- count
+number of rows to be freed
+.TP
+.I \- free_all
+True => all rows are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all rows are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of rows specified by
+.I count
+are freed, beginning with the row specified by
+.I first
+in the specified section.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomRows function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomSections.man b/man/xkb/XkbFreeGeomSections.man
new file mode 100644
index 00000000..2f8e59e8
--- /dev/null
+++ b/man/xkb/XkbFreeGeomSections.man
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomSections \- Free geometry sections
+.SH SYNOPSIS
+.B void XkbFreeGeomSections
+(
+.I geom,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which sections should be freed
+.TP
+.I \- first
+first section to be freed
+.TP
+.I \- count
+number of sections to be freed
+.TP
+.I \- free_all
+True => all sections are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all sections are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of sections specified by
+.I count
+are freed, beginning with the section specified by
+.I first
+in the specified geometry.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomSections function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeomShapes.man b/man/xkb/XkbFreeGeomShapes.man
new file mode 100644
index 00000000..43ab964d
--- /dev/null
+++ b/man/xkb/XkbFreeGeomShapes.man
@@ -0,0 +1,101 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomShapes \- Free geometry shapes
+.SH SYNOPSIS
+.B void XkbFreeGeomShapes
+(
+.I geom,
+.I first,
+.I count,
+.I free_all
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ int \fIfirst\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which shapes should be freed
+.TP
+.I \- first
+first shape to be freed
+.TP
+.I \- count
+number of shapes to be freed
+.TP
+.I \- free_all
+True => all shapes are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all shapes in the geometry are freed regardless of the values of
+.I first
+and
+.I count.
+Otherwise,
+.I count
+shapes are freed, beginning with the shape specified by
+.I first.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomShapes function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeGeometry.man b/man/xkb/XkbFreeGeometry.man
new file mode 100644
index 00000000..8b342567
--- /dev/null
+++ b/man/xkb/XkbFreeGeometry.man
@@ -0,0 +1,104 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeometry \- Free an entire geometry
+.SH SYNOPSIS
+.B void XkbFreeGeometry
+(
+.I geom,
+.I which,
+.I free_all
+)
+.br
+ XkbGeometryPtr \fIgeom\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be freed
+.TP
+.I \- which
+mask of geometry components to be freed
+.TP
+.I \- free_all
+True => the entire geometry is freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+The values of
+.I which
+and
+.I free_all
+determine how much of the specified geometry is freed. The valid values for
+.I which
+are:
+
+.nf
+ #define XkbGeomPropertiesMask (1<<0)
+ #define XkbGeomColorsMask (1<<1)
+ #define XkbGeomShapesMask (1<<2)
+ #define XkbGeomSectionsMask (1<<3)
+ #define XkbGeomDoodadsMask (1<<4)
+ #define XkbGeomAllMask (0x1f)
+
+.fi
+If
+.I free_all
+is True, the entire geometry is freed regardless of the value of
+.I which.
+Otherwise, the portions of the geometry specified by
+.I which
+are freed.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbFreeIndicatorMaps.man b/man/xkb/XkbFreeIndicatorMaps.man
new file mode 100644
index 00000000..9dd6272a
--- /dev/null
+++ b/man/xkb/XkbFreeIndicatorMaps.man
@@ -0,0 +1,58 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeIndicatorMaps \- Frees memory used by the
+.I indicators
+member of an XkbDescRec structure
+.SH SYNOPSIS
+.B void XkbFreeIndicatorMaps
+(
+.I xkb
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description structure
+.SH DESCRIPTION
+.LP
+If the
+.I indicators
+member of the keyboard description record pointed to by
+.I xkb
+is not NULL,
+.I XkbFreeIndicatorMaps
+frees the memory associated with the
+.I indicators
+member of
+.I xkb.
diff --git a/man/xkb/XkbFreeKeyboard.man b/man/xkb/XkbFreeKeyboard.man
new file mode 100644
index 00000000..0d13bb12
--- /dev/null
+++ b/man/xkb/XkbFreeKeyboard.man
@@ -0,0 +1,76 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeKeyboard \- Destroys either an entire XkbDescRec or just some of its
+members
+.SH SYNOPSIS
+.B void XkbFreeKeyboard
+(
+.I xkb,
+.I which,
+.I free_all
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I xkb
+keyboard description with components to free
+.TP
+.I which
+mask selecting components to free
+.TP
+.I free_all
+True => free all components and
+.I xkb
+.SH DESCRIPTION
+.LP
+.I XkbFreeKeyboard
+frees the components of
+.I xkb
+specified by
+.I which
+and sets the corresponding values to NULL. If
+.I
+free_all
+is True,
+.I XkbFreeKeyboard
+frees every non-NULL component of
+.I xkb
+and then frees the
+.I xkb
+structure itself.
+
diff --git a/man/xkb/XkbFreeNames.man b/man/xkb/XkbFreeNames.man
new file mode 100644
index 00000000..576bf916
--- /dev/null
+++ b/man/xkb/XkbFreeNames.man
@@ -0,0 +1,107 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeNames \- Free symbolic names structures
+.SH SYNOPSIS
+.B void XkbFreeNames
+(
+.I xkb,
+.I which,
+.I free_map
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_map\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for which names are to be freed
+.TP
+.I \- which
+mask of names components to be freed
+.TP
+.I \- free_map
+True => XkbNamesRec structure itself should be freed
+.SH DESCRIPTION
+.LP
+Do not free symbolic names structures directly using
+.I free
+or
+.I XFree.
+Use
+.I XkbFreeNames
+instead.
+
+The
+.I which
+parameter is the bitwise inclusive OR of the valid names mask bits defined in
+Table 1.
+
+Xkb provides several functions that work with symbolic names. Each of these
+functions uses a mask to specify individual fields of the structures described
+above. These masks and their relationships to the fields in a keyboard
+description are shown in Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
diff --git a/man/xkb/XkbFreeServerMap.man b/man/xkb/XkbFreeServerMap.man
new file mode 100644
index 00000000..8ef932a0
--- /dev/null
+++ b/man/xkb/XkbFreeServerMap.man
@@ -0,0 +1,201 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbFreeServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeServerMap \- Free memory used by the server member of an XkbDescRec
+structure
+.SH SYNOPSIS
+.B void XkbFreeServerMap
+(
+.I xkb,
+.I which,
+.I free_all
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ Bool \fIfree_all\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing server map to free
+.TP
+.I \- which
+mask identifying components of map to free
+.TP
+.I \- free_all
+True => free all server map components and server itself
+.SH DESCRIPTION
+.LP
+The
+.I XkbFreeServerMap
+function frees the specified components of server map in the XkbDescRec
+structure specified by the
+.I xkb
+parameter and sets the corresponding structure component values to NULL. The
+.I which parameter specifies a combination of the server map masks and is a
+bitwise inclusive OR
+of the masks listed in Table 1. If
+.I free_all
+is True,
+.I which
+is ignored and
+.I XkbFreeServerMap
+frees every non-NULL structure component in the server map, frees the
+XkbServerMapRec structure
+referenced by the
+.I server
+member of the
+.I xkb
+parameter, and sets the
+.I server
+member to NULL.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocServerMap Masks
+_
+Mask Effect
+_
+XkbExplicitComponentsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the explicit field of the server map.
+T}
+.sp
+XkbKeyActionsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the key_acts
+field of the server map. The count_acts parameter is used to allocate the acts
+field of the
+server map.
+T}
+.sp
+XkbKeyBehaviorsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the behaviors
+field of the server map.
+T}
+.sp
+XkbVirtualModMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the vmodmap
+field of the server map.
+T}
+
+.TE
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The Xkb server map contains the information the server needs to interpret key
+events and is of
+type XkbServerMapRec:
+
+.nf
+#define XkbNumVirtualMods 16
+
+typedef struct { /* Server Map */
+ unsigned short num_acts; /* # of occupied entries in acts */
+ unsigned short size_acts; /* # of entries in acts */
+ XkbAction * acts; /* linear 2d tables of key actions, 1 per keycode */
+ XkbBehavior * behaviors; /* key behaviors,1 per keycode */
+ unsigned short * key_acts; /* index into acts, 1 per keycode */
+ unsigned char * explicit; /* explicit overrides of core remapping, 1 per key */
+ unsigned char vmods[XkbNumVirtualMods]; /* real mods bound to virtual mods */
+ unsigned short * vmodmap; /* virtual mods bound to key, 1 per keycode*/
+} XkbServerMapRec, *XkbServerMapPtr;
+
+.fi
diff --git a/man/xkb/XkbGetAccessXTimeout.man b/man/xkb/XkbGetAccessXTimeout.man
new file mode 100644
index 00000000..51dfe343
--- /dev/null
+++ b/man/xkb/XkbGetAccessXTimeout.man
@@ -0,0 +1,162 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetAccessXTimeout __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetAccessXTimeout \- Queries the current AccessXTimeout options for a
+keyboard device
+.SH SYNOPSIS
+.B Bool XkbGetAccessXTimeout
+(
+.I display,
+.I device_spec,
+.I timeout_rtrn,
+.I ctrls_mask_rtrn,
+.I ctrls_values_rtrn,
+.I options_mask_rtrn,
+.I options_values_rtrn
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned short *\fI timeout_rtrn \fP\^;
+.br
+ unsigned int *\fI ctrls_mask_rtrn \fP\^;
+.br
+ unsigned int *\fI ctrls_values_rtrn \fP\^;
+.br
+ unsigned short *\fI options_mask_rtrn \fP\^;
+.br
+ unsigned short *\fI options_values_rtrn \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+unsigned short
+.TP
+.I \- device_spec
+device to query, or XkbUseCoreKbd
+.TP
+.I \- timeout_rtrn
+delay until AccessXTimeout, seconds
+.TP
+.I \- ctrls_mask_rtrn
+backfilled with controls to modify
+.TP
+.I \- ctrls_values_rtrn
+backfilled with on/off status for controls
+.TP
+.I \- options_mask_rtrn
+backfilled with ax_options to modify
+.TP
+.I \- options_values_rtrn
+backfilled with values for ax_options
+.SH DESCRIPTION
+.LP
+In environments where computers are shared, features such as SlowKeys present a
+problem: if
+SlowKeys is on, the keyboard can appear to be unresponsive because keys are not
+accepted
+until they are held for a certain period of time. To help solve this problem,
+Xkb provides
+an AccessXTimeout control to automatically change the enabled/disabled state of
+any boolean
+controls and to change the value of the AccessXKeys and AccessXFeedback control
+attributes
+if the keyboard is idle for a specified period of time.
+
+When a timeout as specified by AccessXTimeout occurs and a control is
+consequently modified,
+Xkb generates an XkbControlsNotify event.
+
+.I XkbGetAccessXTimeout
+sends a request to the X server to obtain the current values for the
+AccessXTimeout attributes, waits for a reply, and backfills the values into the
+appropriate arguments. The parameters
+.I options_mask_rtrn
+and
+.I options_values_rtrn
+are backfilled with the options to modify and the values for
+.I ax_options,
+which is a field in the XkbControlsRec structure.
+.I XkbGetAccessXTimeout
+returns True if successful; if a compatible version of the Xkb extension is not
+available in the server,
+.I XkbGetAccessXTimeout
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetAccessXTimeout
+returns True when it successfully sends a request to the X server to obtain the
+current values for the AccessXTimeout attributes, waits for a reply, and
+backfills the values into the appropriate arguments.
+.TP 15
+False
+The
+.I XkbGetAccessXTimeout
+funtion returns False if a compatible version of the Xkb extension is not
+available in the
+server.
+.SH STRUCTURES
+.LP
+.nf
+The XkbControlsRec structure is defined as follows:
+
+#define XkbMaxLegalKeyCode 255
+#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+} XkbControlsRec, *XkbControlsPtr;
+.fi
diff --git a/man/xkb/XkbGetAutoRepeatRate.man b/man/xkb/XkbGetAutoRepeatRate.man
new file mode 100644
index 00000000..677819d2
--- /dev/null
+++ b/man/xkb/XkbGetAutoRepeatRate.man
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetAutoRepeatRate \- Gets the current attributes of the RepeatKeys control
+for a keyboard device
+.SH SYNOPSIS
+.B Bool XkbGetAutoRepeatRate
+(
+.I display,
+.I device_spec,
+.I timeout_rtrn,
+.I interval_rtrn
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned int *\fI timeout_rtrn \fP\^;
+.br
+ unsigned int *\fI interval_rtrn \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+desired device ID, or XkbUseCoreKbd
+.TP
+.I \- timeout_rtrn
+backfilled with initial repeat delay, ms
+.TP
+.I \- interval_rtrn
+backfilled with subsequent repeat delay, ms
+.SH DESCRIPTION
+.LP
+The core protocol allows only control over whether or not the entire keyboard or
+individual keys should auto-repeat when held down. RepeatKeys is a boolean
+control that extends this capability by adding control over the delay until a
+key begins to repeat and the rate at which it repeats. RepeatKeys is coupled
+with the core auto-repeat control: when RepeatKeys is enabled or disabled, the
+core auto-repeat is enabled or disabled and vice versa.
+
+Auto-repeating keys are controlled by two attributes. The first,
+.I timeout,
+is the delay after the initial press of an auto-repeating key and the first
+generated repeat event. The second,
+.I interval,
+is the delay between all subsequent generated repeat events. As with all boolean
+controls, configuring the attributes that determine how the control operates
+does not automatically enable the control as a whole.
+
+.I XkbGetAutoRepeatRate
+queries the server for the current values of the RepeatControls control
+attributes, backfills
+.I timeout_rtrn
+and
+.I interval_rtrn
+with them, and returns True. If a compatible version of the Xkb extension is not
+available in the server
+.I XkbGetAutoRepeatRate
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The XkbGetAutoRepeatRate function returns True if a compatible version of the
+Xkb extension is available in the server.
+.TP 15
+False
+The XkbGetAutoRepeatRate function returns False if a compatible version of the
+Xkb extension is not available in the server.
diff --git a/man/xkb/XkbGetAutoResetControls.man b/man/xkb/XkbGetAutoResetControls.man
new file mode 100644
index 00000000..23d8dd27
--- /dev/null
+++ b/man/xkb/XkbGetAutoResetControls.man
@@ -0,0 +1,105 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetAutoResetControls \- Gets the current values of the auto-reset controls
+.SH SYNOPSIS
+.B Bool XkbGetAutoResetControls
+(
+.I dpy,
+.I auto_ctrls,
+.I auto_values
+)
+.br
+ Display *\fI dpy \fP\^;
+.br
+ unsigned int *\fI auto_ctrls \fP\^;
+.br
+ unsigned int *\fI auto_values \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+ connection to X server
+.TP
+.I \- auto_ctrls
+ specifies which bits in auto_values are relevant
+.TP
+.I \- auto_values
+1 bit => corresponding control has auto-reset on
+.SH DESCRIPTION
+.LP
+You can configure the boolean controls to automatically be enabled or
+disabled when a program exits. This capability is controlled via two masks
+maintained in the X server on a per-client basis. There is no client-side Xkb
+data structure corresponding to these masks. Whenever the client exits for
+any reason, any boolean controls specified in the
+.I auto-reset mask
+are set to the corresponding value from the
+.I auto-reset values
+mask. This makes it
+possible for clients to "clean up after themselves" automatically, even if
+abnormally terminated. The bits used in the masks correspond to the
+EnabledControls control bits.
+
+For example, a client that replaces the keyboard bell with some other audible
+cue might want to turn off the AudibleBell control to prevent the server from
+also generating a sound and avoid cacophony. If the client were to exit
+without resetting the AudibleBell control, the user would be left without any
+feedback at all. Setting AudibleBell in both the auto-reset mask and
+auto-reset values guarantees that the audible bell will be turned back on
+when the client exits.
+
+.I XkbGetAutoResetControls
+backfills
+.I auto_ctrls
+and
+.I auto_values
+with the AutoReset control attributes for this particular client. It returns
+True if successful, and False otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetAutoResetControls
+function returns True when it successfully backfills
+.I auto_ctrls
+and
+.I auto_values
+with the AutoReset control attributes for this particular client.
+.TP 15
+False
+The
+.I XkbGetAutoResetControls
+function returns False when it does not successfully backfill
+.I auto_ctrls
+and
+.I auto_values
+with the AutoReset control attributes for this particular client.
diff --git a/man/xkb/XkbGetBounceKeysDelay.man b/man/xkb/XkbGetBounceKeysDelay.man
new file mode 100644
index 00000000..1727f25b
--- /dev/null
+++ b/man/xkb/XkbGetBounceKeysDelay.man
@@ -0,0 +1,226 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetBounceKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetBounceKeysDelay \- Queries the current BounceKeys delay for a keyboard
+device.
+.SH SYNOPSIS
+.B Bool XkbGetBounceKeysDelay
+(
+.I display,
+.I device_spec,
+.I delay_rtrn
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int *\fIdelay_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- delay_rtrn
+backfilled with bounce keys delay, ms
+.SH DESCRIPTION
+.LP
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 AccessXNotify Events
+_
+detail Reason
+_
+XkbAXN_SKPress T{
+A key was pressed when SlowKeys was enabled.
+T}
+XkbAXN_SKAccept T{
+A key was accepted (held longer than the SlowKeys delay).
+T}
+XkbAXN_SKRelease T{
+An accepted SlowKeys key was released.
+T}
+XkbAXN_SKReject T{
+A key was rejected (released before the SlowKeys delay expired).
+T}
+XkbAXN_BKAccept T{
+A key was accepted by BounceKeys.
+T}
+XkbAXN_BKReject T{
+A key was rejected (pressed before the BounceKeys delay expired).
+T}
+XkbAXN_AXKWarning T{
+AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
+T}
+.TE
+
+
+The
+.I keycode
+field reports the keycode of the key for which the event occurred. If the action
+is related to
+.I SlowKeys,
+the
+.I slowKeysDelay
+field contains the current SlowKeys acceptance delay. If the action is related
+to BounceKeys,
+the
+.I debounceDelay
+field contains the current BounceKeys debounce delay.
+
+Selecting for AccessX Events
+
+To receive XkbAccessXNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbAccesXNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbStateNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbAccessXNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 2.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 AccessXNotify Event Details
+_
+XkbAccessXNotify Event Details Value Circumstances
+_
+XkbAXN_SKPressMask (1<<0) T{
+Slow key press notification wanted
+T}
+XkbAXN_SKAcceptMask (1<<1) T{
+Slow key accept notification wanted
+T}
+XkbAXN_SKRejectMask (1<<2) T{
+Slow key reject notification wanted
+T}
+XkbAXN_SKReleaseMask (1<<3) T{
+Slow key release notification wanted
+T}
+XkbAXN_BKAcceptMask (1<<4) T{
+Bounce key accept notification wanted
+T}
+XkbAXN_BKRejectMask (1<<5) T{
+Bounce key reject notification wanted
+T}
+XkbAXN_AXKWarningMask (1<<6) T{
+AccessX warning notification wanted
+T}
+XkbAXN_AllEventsMask (0x7f) T{
+All AccessX features notifications wanted
+T}
+.TE
+
+Some users may accidentally "bounce" on a key when they release it. They press
+it once, then accidentally press it again after they release it. The BounceKeys
+control temporarily disables a key after it has been pressed, effectively
+"debouncing" the keyboard. The period of time the key is disabled after it is
+released is known as the
+.I BounceKeys delay.
+BounceKeys is a boolean control.
+
+When the BounceKeys control is active, the server reports acceptance or
+rejection of any key to interested clients by sending an appropriate
+AccessXNotify event (see STRUCTURES).
+
+.I XkbGetBounceKeysDelay
+requests the attributes of the BounceKeys control from the server, waits for a
+reply, and backfills
+.I delay_rtrn
+with the BounceKeys delay attribute.
+.I XkbGetBounceKeysDelay
+returns True if successful; if a compatible version of the Xkb extension is not
+available in the server
+.I XkbGetSlowKeysDelay
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetBounceKeysDelay
+function returns True when it successfully requests the attributes of the
+BounceKeys control from the server, waits for a
+reply, and backfills
+.I delay_rtrn
+with the BounceKeys delay attribute.
+.TP 15
+False
+The
+.I XkbGetBounceKeysDelay
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH STRUCTURES
+.LP
+The structure for the XkbAccessXNotify event type is as follows:
+
+.nf
+typedef struct {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbAccessXNotify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int detail; /* XkbAXN_* */
+ KeyCode keycode; /* key of event */
+ int slowKeysDelay; /* current SlowKeys delay */
+ int debounceDelay; /* current debounce delay */
+} XkbAccessXNotifyEvent;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbGetSlowKeysDelay (__libmansuffix__)
+
diff --git a/man/xkb/XkbGetCompatMap.man b/man/xkb/XkbGetCompatMap.man
new file mode 100644
index 00000000..cb8be2ea
--- /dev/null
+++ b/man/xkb/XkbGetCompatMap.man
@@ -0,0 +1,130 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetCompatMap \- Fetch any combination of the current compatibility map
+components from the server
+.SH SYNOPSIS
+.B Status XkbGetCompatMap
+(
+.I display,
+.I which,
+.I xkb
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescRec * \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to server
+.TP
+.I \- which
+mask of compatibility map components to fetch
+.TP
+.I \- xkb
+keyboard description where results placed
+.SH DESCRIPTION
+.LP
+When another client modifies the compatibility map, you are notified if you have
+selected for XkbCompatMapNotify events.
+.I XkbGetCompatMap
+is particularly useful when you receive an event of this type, as it allows you
+to update your program's version of the compatibility map to match the modified
+version now in the server. If your program is dealing with multiple servers and
+needs to configure them all in a similar manner, the updated compatibility map
+may be used to reconfigure other servers.
+
+.I XkbGetCompatMap
+fetches the components of the compatibility map specified in
+.I which
+from the server specified by
+.I display
+and places them in the
+.I compat
+structure of the keyboard description
+.I xkb.
+Valid values for
+.I which
+are an inclusive OR of the values shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+If no compatibility map structure is allocated in
+.I xkb
+upon entry,
+.I XkbGetCompatMap
+allocates one. If one already exists, its contents are overwritten with the
+returned results.
+
+.I XkbGetCompatMap
+fetches compatibility map information for the device specified by the
+.I device_spec
+field of
+.I xkb.
+Unless you have specifically modified this field, it is the default keyboard
+device.
+.I XkbGetCompatMap
+returns Success if successful, BadAlloc if it is unable to obtain necessary
+storage for either the return values or work space, BadMatch if the
+.I dpy
+field of the
+.I xkb
+argument is non-NULL and does not match the
+.I display
+argument, and BadLength under certain conditions caused by server or Xkb
+implementation errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
diff --git a/man/xkb/XkbGetControls.man b/man/xkb/XkbGetControls.man
new file mode 100644
index 00000000..b4631f10
--- /dev/null
+++ b/man/xkb/XkbGetControls.man
@@ -0,0 +1,176 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetControls \- Finds the current state of Xkb server controls
+.SH SYNOPSIS
+.B Status XkbGetControls
+(
+.I display,
+.I which,
+.I xkb
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned long \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask of controls requested
+.TP
+.I \- xkb
+keyboard description for controls information
+.SH DESCRIPTION
+.LP
+.I XkbGetControls
+queries the server for the requested control information, waits for a reply, and
+then copies the server's values for the requested information into the
+.I ctrls
+structure of the
+.I xkb
+argument. Only those components specified by the
+.I which
+parameter are copied. Valid values for
+.I which
+are any combination of the masks listed in Table 1 that have "ok" in the
+.I which
+column.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in Table 1 (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+
+If
+.I xkb->ctrls
+is NULL,
+.I XkbGetControls
+allocates and initializes it before obtaining the values specified by
+.I which.
+If
+.I xkb->ctrls
+is not NULL,
+.I XkbGetControls
+modifies only those portions of
+.I xkb->ctrls
+corresponding to the values specified by
+.I which.
+
+.I XkbGetControls
+returns Success if successful; otherwise, it returns BadAlloc if it cannot
+obtain sufficient storage, BadMatch if
+.I xkb
+is NULL or
+.I which
+is empty, or BadImplementation.
+
+To free the
+.I ctrls
+member of a keyboard description, use
+.I XkbFreeControls.
+
+The
+.I num_groups
+field in the
+.I ctrls
+structure is always filled in by
+.I XkbGetControls,
+regardless of which bits are selected by
+.I which.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetControls
+function returns Success if successful.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+
+.SH "SEE ALSO"
+.BR XkbFreeControls (__libmansuffix__)
diff --git a/man/xkb/XkbGetControlsChanges.man b/man/xkb/XkbGetControlsChanges.man
new file mode 100644
index 00000000..399eaf0f
--- /dev/null
+++ b/man/xkb/XkbGetControlsChanges.man
@@ -0,0 +1,244 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetControlsChanges \- Updates a local copy of a keyboard description with the
+changes previously noted by one or more calls to XkbNoteControlsChanges
+.SH SYNOPSIS
+XkbGetControlsChanges
+(
+.I dpy,
+.I xkb,
+.I changes
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbNameChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- xkb
+xkb->ctrls will be updated
+.TP
+.I \- changes
+indicates which parts of xkb->ctrls to update
+.SH DESCRIPTION
+.LP
+Whenever a field in the controls structure changes in the server's keyboard
+description, the server sends an XkbControlsNotify event to all interested
+clients.To receive XkbControlsNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbControlsNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbControlsNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbControlsNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+The
+.I changed_ctrls
+field specifies the controls components that have changed and consists of bits
+taken from the masks defined in Table 10.7 with "ok" in the
+.I changed_ctrls
+column.
+
+The controls currently enabled in the server are reported in the
+.I enabled_ctrls
+field. If any controls were just enabled or disabled (that is, the contents of
+the
+.I enabled_ctrls
+field changed), they are flagged in the
+.I enabled_ctrl_changes
+field. The valid bits for these fields are the masks listed in Table 10.7 with
+"ok" in the
+.I enabled_ctrls
+column. The
+.I num_groups
+field reports the number of groups bound to the key belonging to the most number
+of groups and is automatically updated when the keyboard mapping changes.
+
+If the change was caused by a request from a client, the
+.I keycode
+and
+.I event_type
+fields are set to zero and the
+.I req_major
+and
+.I req_minor
+fields identify the request. The
+.I req_major value is the same as the major extension opcode. Otherwise,
+.I event_type
+is set to the type of event that caused the change (one of KeyPress, KeyRelease,
+DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and
+.I req_major
+and
+.I req_minor
+are undefined. If
+.I event_type
+is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the
+.I keycode
+field is set to the key that caused the change. If
+.I event_type
+is ButtonPress or ButtonRelease,
+.I keycode
+contains the button number.
+
+When a client receives an XkbControlsNotify event, it can note the changes in a
+changes structure using
+.I XkbNoteControlsChanges.
+
+.I XkbGetControlsChanges
+examines the
+.I changes
+parameter, queries the server for the necessary information, and copies the
+results into the
+.I xkb->ctrls
+keyboard description. If the
+.I ctrls
+field of
+.I xkb
+is NULL,
+.I XkbGetControlsChanges
+allocates and initializes it. To free the
+.I ctrls
+field, use
+XkbFreeControls.
+
+.I XkbGetControlsChanges
+returns Success if successful and can generate BadAlloc, BadImplementation, and
+BadMatch errors.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetControlsChanges
+function returns Success if the query of the server was successful.
+.SH STRUCTURES
+.LP
+.nf
+The structure for the XkbControlsNotify event is defined as follows:
+
+typedef struct {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbCompatMapNotify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed_ctrls; /* bits indicating which controls data have
+changed*/
+ unsigned int enabled_ctrls; /* controls currently enabled in server */
+ unsigned int enabled_ctrl_changes; /* bits indicating enabled/disabled
+controls */
+ int num_groups; /* current number of keyboard groups */
+ KeyCode keycode; /* != 0 => keycode of key causing change */
+ char event_type; /* Type of event causing change */
+ char req_major; /* major event code of event causing change */
+ char req_minor; /* minor event code of event causing change */
+} XkbControlsNotifyEvent;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbFreeControls (__libmansuffix__),
+.BR XkbNoteControlsChanges (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/man/xkb/XkbGetDetectableAutorepeat.man b/man/xkb/XkbGetDetectableAutorepeat.man
new file mode 100644
index 00000000..24ebc5ef
--- /dev/null
+++ b/man/xkb/XkbGetDetectableAutorepeat.man
@@ -0,0 +1,104 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetDetectableAutorepeat __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDetectableAutorepeat \- Determines whether or not the server supports
+DetectableAutorepeat
+.SH SYNOPSIS
+.B Bool XkbGetDetectableAutorepeat
+(
+.I display,
+.I supported_rtrn
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ Bool * \fIsupported_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- supported_rtrn
+backfilled True if DetectableAutorepeat supported
+.SH DESCRIPTION
+.LP
+Auto-repeat is the generation of multiple key events by a keyboard when the user
+presses a key and holds it down. Keyboard hardware and device-dependent X server
+software often implement auto-repeat by generating multiple KeyPress events with no
+intervening KeyRelease event. The standard behavior of the X server is to generate
+a KeyRelease event for every KeyPress event. If the keyboard hardware and
+device-dependent software of the X server implement auto-repeat by generating
+multiple KeyPress events, the device-independent part of the X server by default
+synthetically generates a KeyRelease event after each KeyPress event. This provides
+predictable behavior for X clients, but does not allow those clients to detect the
+fact that a key is auto-repeating.
+
+Xkb allows clients to request
+.I detectable auto-repeat.
+If a client requests and the server supports DetectableAutorepeat, Xkb generates
+KeyRelease events only when the key is physically released. If DetectableAutorepeat
+is not supported or has not been requested, the server synthesizes a KeyRelease
+event for each repeating KeyPress event it generates.
+
+DetectableAutorepeat, unlike other controls, is not contained in the XkbControlsRec
+structure, nor can it be enabled or disabled via the EnabledControls control.
+Instead, query and set DetectableAutorepeat using
+.I XkbGetDetectableAutorepeat
+and
+.I XkbSetDetectableAutorepeat.
+
+DetectableAutorepeat is a condition that applies to all keyboard devices for a
+client's connection to a given X server; it cannot be selectively set for some
+devices and not for others. For this reason, none of the Xkb library functions
+involving DetectableAutorepeat involve a device specifier.
+
+.I XkbGetDetectableAutorepeat
+queries the server for the current state of DetectableAutorepeat and waits for a
+reply. If
+.I supported_rtrn
+is not NULL, it backfills
+.I supported_rtrn
+with True if the server supports DetectableAutorepeat, and False otherwise.
+.I XkbGetDetectableAutorepeat
+returns the current state of DetectableAutorepeat for the requesting client:
+True if DetectableAutorepeat is set, and False otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetDetectableAutorepeat
+function returns True if the server supports DetectableAutorepeat.
+.TP 15
+False
+The
+.I XkbGetDetectableAutorepeat
+function returns False if the server does not support DetectableAutorepeat.
diff --git a/man/xkb/XkbGetDeviceButtonActions.man b/man/xkb/XkbGetDeviceButtonActions.man
new file mode 100644
index 00000000..b1a076b5
--- /dev/null
+++ b/man/xkb/XkbGetDeviceButtonActions.man
@@ -0,0 +1,132 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceButtonActions \- Query the button actions associated with an X Input
+Extension device
+.SH SYNOPSIS
+.B Status XkbGetDeviceButtonActions
+(
+.I dpy,
+.I device_info,
+.I all_buttons,
+.I first_button,
+.I num_buttons
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ Bool \fIall_buttons\fP\^;
+.br
+ unsigned int \fIfirst_button\fP\^;
+.br
+ unsigned int \fInum_buttons\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+structure to update with results
+.TP
+.I \- all_buttons
+True => get information for all buttons
+.TP
+.I \- first_button
+number of first button for which info is desired
+.TP
+.I \- num_buttons
+number of buttons for which info is desired
+.SH DESCRIPTION
+.LP
+.I XkbGetDeviceButtonActions
+queries the server for the desired button information for the device indicated
+by the
+.I device_spec
+field of
+.I device_info
+and waits for a reply. If successful,
+.I XkbGetDeviceButtonActions
+backfills the button actions
+.I (btn_acts
+field of
+.I device_info)
+for only the requested buttons, updates the
+.I name, type, supported,
+and
+.I unsupported
+fields, and returns Success.
+
+.I all_buttons, first_button
+and
+.I num_buttons
+specify the device buttons for which actions should be returned. Setting
+.I all_buttons
+to True requests actions for all device buttons; if
+.I all_buttons
+is False,
+.I first_button
+and
+.I num_buttons
+specify a range of buttons for which actions are requested.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetDeviceButtonActions
+returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If
+the specified device
+.I (device_info->device_spec)
+is invalid, a BadKeyboard status is returned. If the device has no buttons, a
+BadMatch status is returned. If
+.I first_button
+and
+.I num_buttons
+specify illegal buttons, a BadValue status is returned.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadKeyboard
+The device specified was not a valid core or input extension device
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetDeviceInfo.man b/man/xkb/XkbGetDeviceInfo.man
new file mode 100644
index 00000000..30b6b610
--- /dev/null
+++ b/man/xkb/XkbGetDeviceInfo.man
@@ -0,0 +1,265 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceInfo \- Determine whether the X server allows Xkb access to particular capabilities of input devices other than
+the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass
+extension device
+.SH SYNOPSIS
+.B XkbDeviceInfoPtr XkbGetDeviceInfo
+(
+.I dpy,
+.I which,
+.I device_spec,
+.I ind_class,
+.I ind_id
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIind_class\fP\^;
+.br
+ unsigned int \fIind_id\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- which
+mask indicating information to return
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- ind_class
+feedback class for indicator requests
+.TP
+.I \- ind_id
+feedback ID for indicator requests
+.SH DESCRIPTION
+.LP
+To determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X
+keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension
+device, use
+.I XkbGetDeviceInfo.
+
+.I XkbGetDeviceInfo
+returns information about the input device specified by
+.I device_spec.
+Unlike the
+.I device_spec
+parameter of most Xkb functions,
+.I device_spec
+does not need to be a keyboard device. It must, however, indicate either the core keyboard or a valid X Input Extension
+device.
+
+The
+.I which
+parameter is a mask specifying optional information to be returned. It is an inclusive OR of one or more of the values from
+Table 1 and causes the returned XkbDeviceInfoRec to contain values for the corresponding fields specified in the table.
+
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+
+The XkbDeviceInfoRec returned by
+.I XkbGetDeviceInfo
+always has values for
+.I name
+(may be a null string, ""),
+.I type, supported, unsupported, has_own_state, dflt_kbd_fd,
+and
+.I dflt_kbd_fb.
+Other fields are filled in as specified by
+.I which.
+
+Upon return, the
+.I supported
+field will be set to the inclusive OR of zero or more bits from Table 1; each bit set indicates an optional Xkb extension
+device feature supported by the server implementation, and a client may modify the associated behavior.
+
+If the XkbButtonActionsMask bit is set in
+.I which,
+the XkbDeviceInfoRec returned will have the button actions
+.I (btn_acts
+field) filled in for all buttons.
+
+If
+.I which
+includes one of the bits in XkbXI_IndicatorsMask, the feedback class of the indicators must be specified in
+.I ind_class,
+and the feedback ID of the indicators must be specified in
+.I ind_id.
+If the request does not include any of the bits in XkbXI_IndicatorsMask, the
+.I ind_class
+and
+.I ind_id
+parameters are ignored. The class and ID can be obtained via the input device extension
+.I XListInputDevices
+request.
+
+If any of the XkbXI_IndicatorsMask bits are set in
+.I which,
+the XkbDeviceInfoRec returned will have filled in the portions of the
+.I leds
+structure corresponding to the indicator feedback identified by
+.I ind_class
+and
+.I ind_id.
+The
+.I leds
+vector of the XkbDeviceInfoRec is allocated if necessary and
+.I sz_leds
+and
+.I num_leds
+filled in. The
+.I led_class, led_id
+and
+.I phys_indicators
+fields of the
+.I leds
+entry corresponding to
+.I ind_class
+and
+.I ind_id
+are always filled in. If
+.I which
+contains XkbXI_IndicatorNamesMask, the
+.I names_present
+and
+.I names
+fields of the
+.I leds
+structure corresponding to
+.I ind_class
+and
+.I ind_id
+are returned. If
+.I which
+contains XkbXI_IndicatorStateMask, the corresponding
+.I state
+field is updated. If
+.I which
+contains XkbXI_IndicatorMapsMask, the
+.I maps_present
+and
+.I maps
+fields are updated.
+
+Xkb provides convenience functions to request subsets of the information available via
+.I XkbGetDeviceInfo.
+These convenience functions mirror some of the mask bits. The functions all take an XkbDeviceInfoPtr as an input argument
+and operate on the X Input Extension device specified by the
+.I device_spec
+field of the structure. Only the parts of the structure indicated in the function description are updated. The
+XkbDeviceInfoRec structure used in the function call can be obtained by calling
+.I XkbGetDeviceInfo
+or can be allocated by calling
+.I XkbAllocDeviceInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb extension in an
+XkbDeviceInfoRec structure:
+.nf
+
+typedef struct {
+ char * name; /* name for device */
+ Atom type; /* name for class of devices */
+ unsigned short device_spec; /* device of interest */
+ Bool has_own_state; /* True=>this device has its own state */
+ unsigned short supported; /* bits indicating supported capabilities */
+ unsigned short unsupported; /* bits indicating unsupported capabilities */
+ unsigned short num_btns; /* number of entries in btn_acts */
+ XkbAction * btn_acts; /* button actions */
+ unsigned short sz_leds; /* total number of entries in LEDs vector */
+ unsigned short num_leds; /* number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /* LED descriptions */
+} XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocDeviceInfo (__libmansuffix__),
+.BR XListInputDevices (3X11)
diff --git a/man/xkb/XkbGetDeviceInfoChanges.man b/man/xkb/XkbGetDeviceInfoChanges.man
new file mode 100644
index 00000000..ed873a98
--- /dev/null
+++ b/man/xkb/XkbGetDeviceInfoChanges.man
@@ -0,0 +1,76 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetDeviceInfoChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceInfoChanges \- Query the changes that have occurred in the button
+actions or indicator names and indicator maps associated with an input extension
+device
+.SH SYNOPSIS
+.B Status XkbGetDeviceInfoChanges
+(
+.I dpy,
+.I device_info,
+.I changes
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ XkbDeviceChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+structure to update with results
+.TP
+.I \- changes
+contains notes of changes that have occurred
+.SH DESCRIPTION
+.LP
+The
+.I changes->changed
+field indicates which attributes of the device specified in
+.I changes->device
+have changed. The parameters describing the changes are contained in the other
+fields of
+.I changes. XkbGetDeviceInfoChanges
+uses that information to call
+.I XkbGetDeviceInfo
+to obtain the current status of those attributes that have changed. It then
+updates the local description of the device in
+.I device_info
+with the new information.
+.SH "SEE ALSO"
+.BR XkbGetDeviceInfo (__libmansuffix__)
diff --git a/man/xkb/XkbGetDeviceLedInfo.man b/man/xkb/XkbGetDeviceLedInfo.man
new file mode 100644
index 00000000..33e83f54
--- /dev/null
+++ b/man/xkb/XkbGetDeviceLedInfo.man
@@ -0,0 +1,171 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceLedInfo \- Query the indicator names, maps, and state associated
+with an LED feedback of an input extension device
+.SH SYNOPSIS
+.B Status XkbGetDeviceLedInfo
+(
+.I dpy,
+.I device_info,
+.I led_class,
+.I led_id,
+.I which
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ unsigned int \fIled_class\fP\^;
+.br
+ unsigned int \fIled_id\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+structure to update with results
+.TP
+.I \- led_class
+LED feedback class assigned by input extension
+.TP
+.I \- led_id
+LED feedback ID assigned by input extension
+.TP
+.I \- which
+mask indicating desired information
+.SH DESCRIPTION
+.LP
+.I XkbGetDeviceLedInfo
+queries the server for the desired LED information for the feedback specified by
+.I led_class
+and
+.I led_id
+for the X input extension device indicated by
+.I device_spec->device_info
+and waits for a reply. If successful,
+.I XkbGetDeviceLedInfo
+backfills the relevant fields of
+.I device_info
+as determined by
+.I which
+with the results and returns Success. Valid values for
+.I which
+are the inclusive OR of any of XkbXI_IndicatorNamesMask,
+XkbXI_IndicatorMapsMask, and XkbXI_IndicatorStateMask.
+
+The fields of
+.I device_info
+that are filled in when this request succeeds are
+.I name, type, supported,
+and
+.I unsupported,
+and portions of the
+.I leds
+structure corresponding to
+.I led_class
+and
+.I led_id
+as indicated by the bits set in
+.I which.
+The
+.I device_info->leds
+vector is allocated if necessary and
+.I sz_leds
+and
+.I num_leds
+filled in. The
+.I led_class, led_id
+and
+.I phys_indicators
+fields of the
+.I device_info->leds
+entry corresponding to
+.I led_class
+and
+.I led_id
+are always filled in.
+
+If
+.I which
+contains XkbXI_IndicatorNamesMask, the
+.I names_present
+and
+.I names
+fields of the
+.I device_info->leds
+structure corresponding to
+.I led_class
+and
+.I led_id
+are updated, if
+.I which
+contains XkbXI_IndicatorStateMask, the corresponding
+.I state
+field is updated, and if
+.I which
+contains XkbXI_IndicatorMapsMask, the
+.I maps_present
+and
+.I maps
+fields are updated.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetDeviceLedInfo
+returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If
+the device has no indicators, a BadMatch error is returned. If
+.I ledClass
+or
+.I ledID
+have illegal values, a BadValue error is returned. If they have legal values but
+do not specify a feedback that contains LEDs and is associated with the
+specified device, a BadMatch error is returned.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetGeometry.man b/man/xkb/XkbGetGeometry.man
new file mode 100644
index 00000000..6add607e
--- /dev/null
+++ b/man/xkb/XkbGetGeometry.man
@@ -0,0 +1,84 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetGeometry \- Loads a keyboard geometry if you already have the keyboard
+description
+.SH SYNOPSIS
+.B Status XkbGetGeometry
+(
+.I dpy,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description that contains the ID for the keyboard and into which the
+geometry should be loaded
+.SH DESCRIPTION
+.LP
+You can load a keyboard geometry as part of the keyboard description returned by
+.I XkbGetKeyboard.
+However, if a keyboard description has been previously loaded, you can instead
+obtain the geometry by calling the
+.I XkbGetGeometry.
+In this case, the geometry returned is the one associated with the keyboard
+whose device ID is contained in the keyboard description.
+
+.I XkbGetGeometry
+can return BadValue, BadImplementation, BadName, BadAlloc, or BadLength errors
+or Success if it succeeds.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadName
+A font or color of the specified name does not exist
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbGetKeyboard (__libmansuffix__)
diff --git a/man/xkb/XkbGetIndicatorChanges.man b/man/xkb/XkbGetIndicatorChanges.man
new file mode 100644
index 00000000..075f7674
--- /dev/null
+++ b/man/xkb/XkbGetIndicatorChanges.man
@@ -0,0 +1,169 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetIndicatorChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetIndicatorChanges \- Updates a local copy of the keyboard description with
+the actual values of one or more calls to XkbNoteIndicatorChanges
+.SH SYNOPSIS
+.B Status XkbGetIndicatorChanges
+(
+.I dpy,
+.I xkb,
+.I changes,
+.I state
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbIndicatorChangesPtr \fIchanges\fP\^;
+.br
+ unsigned int \fIstate\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description to hold the new values
+.TP
+.I \- changes
+indicator maps/state to be obtained from the server
+.TP
+.I \- state
+backfilled with the state of the indicators
+.SH DESCRIPTION
+.LP
+Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all
+interested clients. Similarly, whenever an indicator's map changes, the server sends
+XkbIndicatorMapNotify events to all interested clients.
+
+To receive XkbIndicatorStateNotify events, use
+.I XkbSelectEvents
+with both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events,
+use
+.I XkbSelectEvents
+with XkbIndicatorMapNotifyMask.
+
+To receive events for only specific indicators, use
+.I XkbSelectEventDetails.
+Set the
+.I event_type
+parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
+.I bits_to_change
+and
+.I values_for_bits
+detail parameters to a mask where each bit specifies one indicator, turning on those bits that
+specify the indicators for which you want to receive events.
+
+Both types of indicator events use the same structure:
+.nf
+
+typedef struct _XkbIndicatorNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* specifies state or map notify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed; /* mask of indicators with new state or map */
+ unsigned int state; /* current state of all indicators */
+} XkbIndicatorNotifyEvent;
+
+.fi
+.I xkb_type
+is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is
+a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
+
+The
+.I changed
+parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If
+the event is of type XkbIndicatorMapNotify,
+.I changed
+reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
+.I changed
+reports the indicators that have changed state.
+.I state
+is a mask that specifies the current state of all indicators, whether they have changed or
+not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
+
+When your client application receives either a XkbIndicatorStateNotify event or
+XkbIndicatorMapNotify event, you can note the changes in a changes structure by calling
+.I XkbNoteIndicatorChanges.
+
+.I XkbGetIndicatorChanges
+examines the
+.I changes
+parameter, pulls over the necessary information from the server, and copies the
+results into the
+.I xkb
+keyboard description. If any bits are set in the
+.I state_changes
+field of
+.I changes, XkbGetIndicatorChanges
+also places the state of those indicators in
+.I state.
+If the
+.I indicators
+field of
+.I xkb
+is NULL,
+.I XkbGetIndicatorChanges
+allocates and initializes it. To free the
+.I indicators
+field, use
+.I XkbFreeIndicators.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbFreeIndicators (__libmansuffix__),
+.BR XkbGetIndicatorChanges (__libmansuffix__),
+.BR XkbNoteIndicatorChanges (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__),
+.BR XkbSelectEventDetail (__libmansuffix__)
+
+
+
diff --git a/man/xkb/XkbGetIndicatorMap.man b/man/xkb/XkbGetIndicatorMap.man
new file mode 100644
index 00000000..931842a4
--- /dev/null
+++ b/man/xkb/XkbGetIndicatorMap.man
@@ -0,0 +1,101 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetIndicatorMap \- Gets the map for one or more indicators, using a mask to
+specify the indicators
+.SH SYNOPSIS
+.B Status XkbGetIndicatorMap
+(
+.I dpy,
+.I which,
+.I desc
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIdesc\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of indicators for which maps should be returned
+.TP
+.I \- desc
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+Xkb allows applications to obtain information about indicators using two
+different methods. The first method, which is similar to the core X
+implementation, uses a mask to specify the indicators. The second method, which
+is more suitable for applications concerned with interoperability, uses
+indicator names. The correspondence between the indicator name and the bit
+position in masks is as follows: one of the parameters returned from
+.I XkbGetNamedIndicators
+is an index that is the bit position to use in any function call that requires a
+mask of indicator bits, as well as the indicator's index into the
+XkbIndicatorRec array of indicator maps.
+
+
+.I XkbGetIndicatorMap
+obtains the maps from the server for only those indicators specified by the
+.I which
+mask and copies the values into the keyboard description specified by
+.I desc.
+If the
+.I indicators
+field of the
+.I desc
+parameter is NULL,
+.I XkbGetIndicatorMap
+allocates and initializes it.
+
+To free the indicator maps, use
+.I XkbFreeIndicatorMaps.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.SH "SEE ALSO"
+.BR XkbFreeIndicatorMaps (__libmansuffix__),
+.BR XkbGetNamedIndicators (__libmansuffix__)
+
diff --git a/man/xkb/XkbGetIndicatorState.man b/man/xkb/XkbGetIndicatorState.man
new file mode 100644
index 00000000..cd40d155
--- /dev/null
+++ b/man/xkb/XkbGetIndicatorState.man
@@ -0,0 +1,93 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetIndicatorState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetIndicatorState \- Obtains the current state of the keyboard indicators
+.SH SYNOPSIS
+.B Status XkbGetIndicatorState
+(
+.I display,
+.I device_spec,
+.I state_return
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIstate_return\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- state_return
+backfilled with a mask of the indicator state
+.SH DESCRIPTION
+.LP
+Xkb allows applications to obtain information about indicators using two
+different methods. The first method, which is similar to the core X
+implementation, uses a mask to specify the indicators. The second method, which
+is more suitable for applications concerned with interoperability, uses
+indicator names. The correspondence between the indicator name and the bit
+position in masks is as follows: one of the parameters returned from
+.I XkbGetNamedIndicators
+is an index that is the bit position to use in any function call that requires a
+mask of indicator bits, as well as the indicator's index into the
+XkbIndicatorRec array of indicator maps.
+
+.I XkbGetIndicatorState
+queries the
+.I display
+for the state of the indicators on the device specified by the
+.I device_spec.
+For each indicator that is "turned on" on the device, the associated bit is set
+in
+.I state_return.
+If a compatible version of the Xkb extension is not available in the server, .I
+XkbGetIndicatorState
+returns a BadMatch error. Otherwise, it sends the request to the X server,
+places the state of the indicators into
+.I state_return,
+and returns Success. Thus the value reported by
+.I XkbGetIndicatorState
+is identical to the value reported by the core protocol.
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetNamedIndicators (__libmansuffix__)
+
diff --git a/man/xkb/XkbGetKeyActions.man b/man/xkb/XkbGetKeyActions.man
new file mode 100644
index 00000000..93385bca
--- /dev/null
+++ b/man/xkb/XkbGetKeyActions.man
@@ -0,0 +1,108 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyActions \- Update the actions (the key_acts array) for a subset of the
+keys in a keyboard description
+.SH SYNOPSIS
+.B Status XkbGetKeyActions
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+keycode of first key of interest
+.TP
+.I \- num
+number of keys desired
+.TP
+.I \- xkb
+pointer to keyboard description where result is stored
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyActions
+sends a request to the server to obtain the actions for
+.I num
+keys on the keyboard starting with key
+.I first.
+It waits for a reply and returns the actions in the
+.I server->key_acts
+field of
+.I xkb.
+If successful,
+.I XkbGetKeyActions
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the
+.I server
+map, in the
+.I xkb
+parameter, has not been allocated,
+.I XkbGetKeyActions
+allocates and initializes it before obtaining the actions.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetKeyActions
+returns BadAccess. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyActions
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyActions
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetKeyBehaviors.man b/man/xkb/XkbGetKeyBehaviors.man
new file mode 100644
index 00000000..82584cdf
--- /dev/null
+++ b/man/xkb/XkbGetKeyBehaviors.man
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeTypesOfKey \- Obtain the behaviors (the behaviors array) for a subset of the keys in
+a keyboard description from the server
+.SH SYNOPSIS
+.B Status XkbChangeTypesOfKey
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- first
+keycode of first key to get
+.TP
+.I \- num
+number of keys for which behaviors are desired
+.TP
+.I \- xkb
+Xkb description to contain the result
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyBehaviors
+sends a request to the server to obtain the behaviors for
+.I num
+keys on the keyboard starting with the key whose keycode is
+.I first.
+It waits for a reply and returns the behaviors in the
+.I server->behaviors
+field of
+.I xkb.
+If successful,
+.I XkbGetKeyBehaviors
+returns Success.
+
+If the
+.I server
+map in the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyBehaviors
+allocates and initializes it before obtaining the actions.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension has not been
+properly initialized,
+.I XkbGetKeyBehaviors
+returns BadAccess. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyBehaviors
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyBehaviors
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetKeyExplicitComponents.man b/man/xkb/XkbGetKeyExplicitComponents.man
new file mode 100644
index 00000000..b06a3829
--- /dev/null
+++ b/man/xkb/XkbGetKeyExplicitComponents.man
@@ -0,0 +1,168 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyExplicitComponents 3Xkb "20 Jul 1999" "X v11 Rel. 6.4" "XKB
+FUNCTION"
+.SH NAME
+XkbGetKeyExplicitComponents \- Obtain the explicit components (the explicit
+array) for a subset of the keys in a keyboard description
+.SH SYNOPSIS
+.B Status XkbGetKeyExplicitComponents
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- first
+keycode of first key to fetch
+.TP
+.I \- num
+number of keys for which to get explicit info
+.TP
+.I \- xkb
+Xkb description in which to put results
+.SH DESCRIPTION
+.LP
+Whenever a client remaps the keyboard using core protocol requests, Xkb examines
+the map to determine likely default values for the components that cannot be
+specified using the core protocol (see Core Keyboard Mapping to Xkb Keyboard
+Mapping Transformation for more information on how Xkb chooses the default
+values).
+
+DO THE FOUR PAGES OF "CORE KEYBOARD MAPPING TO XKB KEYBOARD MAPPING
+TRANSFORMATION" NEED TO BE ADDED HERE?
+
+This automatic remapping might replace definitions explicitly requested by an
+application, so the Xkb keyboard description defines an explicit components mask
+for each key. Any aspects of the automatic remapping listed in the explicit
+components mask for a key are not changed by the automatic keyboard mapping.
+
+The explicit components masks are held in the
+.I explicit
+field of the server map, which is an array indexed by keycode. Each entry in
+this array is a mask that is a bitwise inclusive OR of the values shown in Table
+1.
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Explicit Component Masks
+_
+Bit in Explicit Mask Value Protects Against
+_
+ExplicitKeyType1 (1<<0) T{
+Automatic determination of the key type associated with Group1.
+T}
+ExplicitKeyType2 (1<<1) T{
+Automatic determination of the key type associated with Group2.
+T}
+ExplicitKeyType3 (1<<2) T{
+Automatic determination of the key type associated with Group3.
+T}
+ExplicitKeyType4 (1<<3) T{
+Automatic determination of the key type associated with Group4.
+T}
+ExplicitInterpret (1<<4) T{
+Application of any of the fields of a symbol interpretation to the key in
+question.
+T}
+ExplicitAutoRepeat (1<<5) T{
+Automatic determination of auto-repeat status for the key, as specified in a
+symbol interpretation.
+T}
+ExplicitBehavior (1<<6) T{
+Automatic assignment of the XkbKB_Lock behavior to the key, if the
+XkbSI_LockingKey flag is set in a symbol interpretation.
+T}
+ExplicitVModMap (1<<7) T{
+Automatic determination of the virtual modifier map for the key based on the
+actions assigned to the key and the symbol interpretations that match the key.
+T}
+.TE
+
+.I XkbGetKeyExplicitComponents
+sends a request to the server to obtain the explicit components for
+.I num
+keys on the keyboard starting with key
+.I first.
+It waits for a reply and returns the explicit components in the
+.I server->explicit
+array of
+.I xkb.
+If successful,
+.I XkbGetKeyExplicitComponents
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the
+.I server
+map in the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyExplicitComponents
+allocates and initializes it before obtaining the actions.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetKeyExplicitComponents
+returns BadMatch. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyExplicitComponents
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyExplicitComponents
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetKeyModifierMap.man b/man/xkb/XkbGetKeyModifierMap.man
new file mode 100644
index 00000000..ab7978fa
--- /dev/null
+++ b/man/xkb/XkbGetKeyModifierMap.man
@@ -0,0 +1,109 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyModifierMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyModifierMap \- Update the modifier map for one or more of the keys in a
+keyboard description
+.SH SYNOPSIS
+.B Status XkbGetKeyModifierMap
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+keycode of first key to get
+.TP
+.I \- num
+number of keys for which information is desired
+.TP
+.I \- xkb
+keyboard description to update
+.SH DESCRIPTION
+.LP
+The
+.I modmap
+entry of the client map is an array, indexed by keycode, specifying the real
+modifiers bound to a key. Each entry is a mask composed of a bitwise inclusive
+OR of the legal real modifiers: ShiftMask, LockMask, ControlMask, Mod1Mask,
+Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. If a bit is set in a
+.I modmap
+entry, the corresponding key is bound to that modifier.
+
+Pressing or releasing the key bound to a modifier changes the modifier set and
+unset state. The particular manner in which the modifier set and unset state
+changes is determined by the behavior and actions assigned to the key.
+
+.I XkbGetKeyModifierMap
+sends a request to the server for the modifier mappings for
+.I num
+keys starting with the key whose keycode is
+.I first.
+It waits for a reply and places the results in the
+.I xkb->map->modmap
+array. If successful,
+.I XkbGetKeyModifier
+returns Success.
+
+If the map component of the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyModifierMap
+allocates and initializes it.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetKeySyms
+returns BadAccess. If any allocation errors occur while obtaining the modifier
+map,
+.I XkbGetKeyModifierMap
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/man/xkb/XkbGetKeySyms.man b/man/xkb/XkbGetKeySyms.man
new file mode 100644
index 00000000..95e07374
--- /dev/null
+++ b/man/xkb/XkbGetKeySyms.man
@@ -0,0 +1,115 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeySyms \- Obtain the symbols for a subset of the keys in a keyboard
+description
+.SH SYNOPSIS
+.B Status XkbGetKeySyms
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+keycode of first key to get
+.TP
+.I \- num
+number of keycodes for which syms desired
+.TP
+.I \- xkb
+Xkb description to be updated
+.SH DESCRIPTION
+.LP
+.I XkbGetKeySyms
+sends a request to the server to obtain the set of keysyms bound to
+.I num
+keys starting with the key whose keycode is
+.I first.
+It waits for a reply and returns the keysyms in the
+.I map.syms
+field of
+.I xkb.
+If successful,
+.I XkbGetKeySyms
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the client
+.I map
+in the xkb parameter has not been allocated,
+.I XkbGetKeySyms
+allocates and initializes it before obtaining the symbols.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetKeySyms
+returns BadAccess. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeySyms
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeySyms
+returns BadAlloc.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetKeySyms
+function returns Success if it gets a reply to a request to the server to obtain the set of keysyms bound to
+.I num
+keys starting with the key whose keycode is
+.I first.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetKeyTypes.man b/man/xkb/XkbGetKeyTypes.man
new file mode 100644
index 00000000..68ed52c6
--- /dev/null
+++ b/man/xkb/XkbGetKeyTypes.man
@@ -0,0 +1,98 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyTypes \- Obtain the list of available key types in the server's
+keyboard mapping
+.SH SYNOPSIS
+.B Status XkbGetKeyTypes
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+index to first type to get, 0 => 1st type
+.TP
+.I \- num
+number of key types to be returned
+.TP
+.I \- xkb
+keyboard description containing client map to update
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyTypes
+queries the server for the desired types, waits for a reply, and returns the
+desired types in the
+.I xkb->map->types.
+If successful, it returns Success.
+
+.I XkbGetKeyTypes
+returns BadAccess if the Xkb extension has not been properly initialized and
+BadValue if the combination of
+.I first
+and
+.I num
+results in numbers out of valid range.
+
+.B NOTE:
+.I XkbGetKeyTypes
+is used to obtain descriptions of the key types themselves, not the key types
+bound to individual keys. To obtain the key types bound to an individual key,
+refer to the
+.I key_sym_map
+field of the client map.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbKeyType (__libmansuffix__),
+.BR XkbKeyTypeIndex (__libmansuffix__)
+
diff --git a/man/xkb/XkbGetKeyVirtualModMap.man b/man/xkb/XkbGetKeyVirtualModMap.man
new file mode 100644
index 00000000..dcb7533d
--- /dev/null
+++ b/man/xkb/XkbGetKeyVirtualModMap.man
@@ -0,0 +1,119 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyVirtualModMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyVirtualModMap \- Obtain the virtual modifier map (the vmodmap array)
+for a subset of the keys in a keyboard description
+.SH SYNOPSIS
+.B Status XkbGetKeyVirtualModMap
+(
+.I dpy,
+.I first,
+.I num,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIfirst\fP\^;
+.br
+ unsigned int \fInum\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- first
+keycode of first key to fetch
+.TP
+.I \- num
+# keys for which virtual mod maps are desired
+.TP
+.I \- xkb
+Xkb description where results will be placed
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyVirutalModmap
+sends a request to the server to obtain the virtual modifier mappings for
+.I num
+keys on the keyboard starting with key
+.I first.
+It waits for a reply and returns the virtual modifier mappings in the
+.I server->vmodmap
+array of
+.I xkb.
+If successful,
+.I XkbGetKeyVirtualModMap
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the
+.I server
+map in the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyVirtualModMap
+allocates and initializes it before obtaining the virtual modifier mappings.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetKeyVirtualModMap
+returns BadMatch. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyVirtualModMap
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyVirtualModMap
+returns BadAlloc.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetKeyVirutalModmap
+function returns Success following a successful reply from the server to obtain
+the virtual modifier mappings for
+.I num
+keys on the keyboard starting with key
+.I first.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbGetKeyboard.man b/man/xkb/XkbGetKeyboard.man
new file mode 100644
index 00000000..870be35f
--- /dev/null
+++ b/man/xkb/XkbGetKeyboard.man
@@ -0,0 +1,106 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyboard \- Retrieves one or more components of a keyboard device
+description
+.SH SYNOPSIS
+.B Bool XkbGetKeyboard
+(
+.I display,
+.I which,
+.I device_spec
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I bits_to_change
+determines events to be selected / deselected
+.TP
+.I values_for_bits
+1=>select, 0->deselect; for events in bits_to_change
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyboard
+allocates and returns a pointer to a keyboard description. It queries the server for those
+components specified in the
+.I which
+parameter for device
+.I device_spec
+and copies the results to the XkbDescRec it allocated. The remaining fields in the keyboard
+description are set to NULL. The valid masks for
+.I which
+are those listed in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (1L<<7)
+.TE
+
+.I XkbGetKeyboard
+is used to read the current description for one or more components of a keyboard device. It calls
+.I XkbGetKeyboardByName
+as follows:
+
+.I XkbGetKeyboardByName(dpy, device_spec,
+NULL,
+.I which, which,
+False).
+.SH DIAGNOSTICS
+.TP 15
+.SM BadAlloc
+Unable to allocate storage
+
diff --git a/man/xkb/XkbGetKeyboardByName.man b/man/xkb/XkbGetKeyboardByName.man
new file mode 100644
index 00000000..39c17244
--- /dev/null
+++ b/man/xkb/XkbGetKeyboardByName.man
@@ -0,0 +1,405 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetKeyboardByName __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyboardByName \- Build a new keyboard description from a set of named
+components, and to optionally have the server use the resulting description to
+replace an active one
+.SH SYNOPSIS
+.B XkbDescPtr XkbGetKeyboardByName
+(
+.I dpy,
+.I device_spec,
+.I names,
+.I want,
+.I need,
+.I load
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ XkbComponentNamesPtr \fInames\fP\^;
+.br
+ unsigned int \fIwant\fP\^;
+.br
+ unsigned int \fIneed\fP\^;
+.br
+ Bool \fIload\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- names
+names of components to fetch
+.TP
+.I \- want
+desired structures in returned record
+.TP
+.I \- need
+mandatory structures in returned record
+.TP
+.I \- load
+True => load into
+.I device_spec
+.SH DESCRIPTION
+.LP
+A client may request that the server fetch one or more components from its
+database and use those components to build a new server keyboard description.
+The new keyboard description may be built from scratch, or it may be built
+starting with the current keyboard description for a particular device. Once the
+keyboard description is built, all or part of it may be returned to the client.
+The parts returned to the client need not include all of the parts used to build
+the description. At the time it requests the server to build a new keyboard
+description, a client may also request that the server use the new description
+internally to replace the current keyboard description for a specific device, in
+which case the behavior of the device changes accordingly.
+
+To build a new keyboard description from a set of named components, and to
+optionally have the server use the resulting description to replace an active
+one, use
+.I XkbGetKeyboardByName.
+
+.I names
+contains a set of expressions describing the keyboard components the
+server should use to build the new keyboard description.
+.I want
+and
+.I need
+are bit fields describing the parts of the resulting keyboard description that
+should be present in the returned XkbDescRec.
+
+The individual fields in
+.I names
+are
+.I component expressions
+composed of keyboard component names (no wildcarding as may be used in
+.I XkbListComponents),
+the special component name symbol `%', and the special operator characters `+'
+and `|'. A component expression is parsed left to right, as follows:
+
+.IP \(bu 5
+The special component name "computed" may be used in keycodes component
+expressions and refers to a component consisting of a set of keycodes computed
+automatically by the server as needed.
+.IP \(bu 5
+The special component name "canonical" may be used in types component
+expressions and refers to a partial component defining the four standard key
+types: ALPHABETIC, ONE_LEVEL, TWO_LEVEL, and KEYPAD.
+.IP \(bu 5
+The special component name `%' refers to the keyboard description for the device
+specified in device_spec or the keymap names component. If a keymap names
+component is specified that does not begin with `+' or `|' and does not contain
+`%', then `%' refers to the description generated by the keymap names component.
+Otherwise, it refers to the keyboard description for device_spec.
+.IP \(bu 5
+The `+' operator specifies that the following component should override the
+currently assembled description; any definitions that are present in both
+components are taken from the second.
+.IP \(bu 5
+The `|' operator specifies that the next specified component should augment the
+currently assembled description; any definitions that are present in both
+components are taken from the first.
+.IP \(bu 5
+If the component expression begins with an operator, a leading `%' is implied.
+.IP \(bu 5
+If any unknown or illegal characters appear anywhere in the expression, the
+entire expression is invalid and is ignored.
+
+For example, if
+.I names->symbols
+contained the expression "+de", it specifies that
+the default member of the "de" class of symbols should be applied to the current
+keyboard mapping, overriding any existing definitions (it could also be written
+"+de(default)").
+
+Here is a slightly more involved example: the expression
+"acme(ascii)+de(basic)|iso9995-3" constructs a German (de) mapping for the ASCII
+keyboard supplied by the "acme" vendor. The new definition begins with the
+symbols for the ASCII keyboard for Acme
+.I (acme(ascii)),
+overrides them with definitions for the basic German keyboard
+.I (de(basic)),
+and then applies the definitions from the default iso9995-3 keyboard
+.I (iso9995-3)
+to any undefined keys or groups of keys (part three of the iso9995 standard
+defines a common set of bindings for the secondary group, but allows national
+layouts to override those definitions where necessary).
+
+.B NOTE
+The interpretation of the above expression components (acme, ascii, de, basic,
+iso9995-3) is not defined by Xkb; only the operations and their ordering are.
+
+Note that the presence of a keymap
+.I names
+component that does not contain `%' (either explicit or implied by virtue of an
+expression starting with an operator) indicates a description that is
+independent of the keyboard description for the device specified in
+.I device_spec.
+The same is true of requests in which the keymap names component is empty and
+all five other names components contain expressions void of references to `%'.
+Requests of this form allow you to deal with keyboard definitions independent of
+any actual device.
+
+The server parses all non-NULL fields in
+.I names
+and uses them to build a keyboard description. However, before parsing the
+expressions in
+.I names,
+the server ORs the bits in
+.I want
+and
+.I need
+together and examines the result in relationship to the expressions in
+.I names.
+Table 1 identifies the components that are required for each of the possible
+bits in
+.I want
+or
+.I need.
+If a required component has not been specified in the
+.I names structure (the corresponding field is NULL), the server substitutes the
+expression "%", resulting in the component values being taken from
+.I device_spec.
+In addition, if
+.I load
+is True, the server modifies
+.I names
+if necessary (again using a "%" entry) to ensure all of the following fields are
+non-NULL:
+.I types, keycodes, symbols,
+and
+.I compat.
+.bp
+.TS
+c s s
+l l l.
+Table 1 Want and Need Mask Bits and Required Names Components
+_
+want or need mask bit Required names Components value
+_
+XkbGBN_TypesMask Types (1L<<0)
+XkbGBN_CompatMapMask Compat (1L<<1)
+XkbGBN_ClientSymbolsMask Types + Symbols + Keycodes (1L<<2)
+XkbGBN_ServerSymbolsMask Types + Symbols + Keycodes (1L<<3)
+XkbGBN_SymbolsMask Symbols (1L<<1)
+XkbGBN_IndicatorMapMask Compat (1L<<4)
+XkbGBN_KeyNamesMask Keycodes (1L<<5)
+XkbGBN_GeometryMask Geometry (1L<<6)
+XkbGBN_OtherNamesMask Types + Symbols + Keycodes + Compat + Geometry (1L<<7)
+XkbGBN_AllComponentsMask (0xff)
+.TE
+
+.I need
+specifies a set of keyboard components that the server must be able to
+resolve in order for
+.I XkbGetKeyboardByName
+to succeed; if any of the components specified in
+.I need
+cannot be successfully resolved,
+.I XkbGetKeyboardByName
+fails.
+
+.I want
+specifies a set of keyboard components that the server should attempt to
+resolve, but that are not mandatory. If the server is unable to resolve any of
+these components,
+.I XkbGetKeyboardByName
+still succeeds. Bits specified in
+.I want
+that are also specified in
+.I need
+have no effect in the context of
+.I want.
+
+If
+.I load
+is True, the server updates its keyboard description for
+.I device_spec
+to match the result of the keyboard description just built. If load is False,
+the
+server's description for device
+.I device_spec
+is not updated. In all cases, the parts specified by
+.I want
+and
+.I need
+from the just-built keyboard description are returned.
+
+The
+.I names
+structure in an XkbDescRec keyboard description record contains one field for
+each of the five component types used to build a keyboard description. When a
+keyboard description is built from a set of database components, the
+corresponding fields in this
+.I names
+structure are set to match the expressions used to build the component.
+
+Building a New Keyboard Description from the Server Database
+
+The information returned to the client in the XkbDescRec is essentially the
+result of a series of calls to extract information from a fictitious device
+whose description matches the one just built. The calls corresponding to each of
+the mask bits are summarized in Table 2, together with the XkbDescRec
+components that are filled in.
+
+.TS
+c s s
+l l l.
+Table 2 XkbDescRec Components Returned for Values of Want & Needs
+_
+Request (want+need) Fills in Xkb components Equivalent Function Call
+_
+XkbGBN_TypesMask map.types XkbGetUpdatedMap(dpy, XkbTypesMask, Xkb)
+XkbGBN_ServerSymbolsMask server XkbGetUpdatedMap(dpy,
+XkbAllClientInfoMask, Xkb)
+XkbGBN_ClientSymbolsMask map, including map.types
+XkbGetUpdatedMap(dpy, XkbAllServerInfoMask, Xkb)
+XkbGBN_IndicatorMaps indicators XkbGetIndicatorMap(dpy,
+XkbAllIndicators, Xkb)
+XkbGBN_CompatMapMask compat XkbGetCompatMap(dpy, XkbAllCompatMask, Xkb)
+XkbGBN_GeometryMask geom XkbGetGeometry(dpy, Xkb)
+XkbGBN_KeyNamesMask names.keys XkbGetNames(dpy, XkbKeyNamesMask |
+ names.key_aliases XkbKeyAliasesMask, Xkb)
+XkbGBN_OtherNamesMask names.keycodes XkbGetNames(dpy, XkbAllNamesMask &
+ names.geometry ~(XkbKeyNamesMask | XkbKeyAliasesMask),
+ names.symbols Xkb)
+ names.types
+ map.types[*].lvl_names[*]
+ names.compat
+ names.vmods
+ names.indicators
+ names.groups
+ names.radio_groups
+ names.phys_symbols
+.TE
+
+There is no way to determine which components specified in
+.I want
+(but not in
+.I need)
+were actually fetched, other than breaking the call into successive calls to
+.I XkbGetKeyboardByName
+and specifying individual components.
+
+.I XkbGetKeyboardByName
+always sets
+.I min_key_code
+and
+.I max_key_code
+in the returned XkbDescRec structure.
+
+.I XkbGetKeyboardByName
+is synchronous; it sends the request to the server to build a new keyboard
+description and waits for the reply. If successful, the return value is
+non-NULL.
+.I XkbGetKeyboardByName
+generates a BadMatch protocol error if errors are encountered when building the
+keyboard description.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components outlined in
+Figure 1.1.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 3.
+
+.TS
+c s s
+l l l
+l l l.
+Table 3 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbListComponents (__libmansuffix__)
+
+
diff --git a/man/xkb/XkbGetMap.man b/man/xkb/XkbGetMap.man
new file mode 100644
index 00000000..ae603911
--- /dev/null
+++ b/man/xkb/XkbGetMap.man
@@ -0,0 +1,335 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetMap \- Allocate an XkbDescRec structure and populate it with the server's
+keyboard
+client map and server map
+.SH SYNOPSIS
+.B XkbDescPtr XkbGetMap
+(
+.I display,
+.I which,
+.I device_spec
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask selecting subcomponents to populate
+.TP
+.I \- device_spec
+device_id, or XkbUseCoreKbd
+.SH DESCRIPTION
+.LP
+Xkb provides two functions to obtain the keyboard mapping components from the
+server. The
+first function,
+.I XkbGetMap,
+allocates an XkbDescRec structure, retrieves mapping components from the server,
+and
+stores them in the XkbDescRec structure it just allocated. The second function,
+.I XkbGetUpdatedMap,
+retrieves mapping components from the server and stores them in an XkbDescRec
+structure
+that has previously been allocated.
+
+To allocate an XkbDescRec structure and populate it with the server's keyboard
+client map
+and server map, use
+.I XkbGetMap. XkbGetMap
+is similar to
+.I XkbGetKeyboard,
+but is used only for obtaining the address of an XkbDescRec structure that is
+populated
+with keyboard mapping components. It allows finer control over which
+substructures of the
+keyboard mapping components are to be populated.
+.I XkbGetKeyboard
+always returns fully populated components, while
+.I XkbGetMap
+can be instructed to return a partially populated component.
+
+The
+.I which mask is a bitwise inclusive OR of the masks defined in Table 14.1. Only
+those
+portions of the keyboard server map and the keyboard client maps that are
+specified in
+.I which
+are allocated and populated.
+
+In addition to allocating and obtaining the server map and the client map,
+.I XkbGetMap
+also sets the
+.I device_spec,
+the
+.I min_key_code,
+and
+.I max_key_code
+fields of the keyboard description.
+
+.I XkbGetMap
+is synchronous; it queries the server for the desired information, waits for a
+reply, and
+then returns. If successful,
+.I XkbGetMap
+returns a pointer to the XkbDescRec structure it allocated. If unsuccessful,
+.I XkbGetMap
+returns NULL. When unsuccessful, one of the following protocol errors is also
+generated:
+BadAlloc (unable to allocate the XkbDescRec structure), BadValue (some mask bits
+in
+.I which
+are undefined), or BadImplementation (a compatible version of the Xkb extension
+is not
+available in the server). To free the returned data, use
+.I XkbFreeClientMap.
+
+Xkb also provides convenience functions to get partial component definitions
+from the
+server. These functions are specified in the "convenience functions" column in
+Table
+1. Refer to the sections listed in the table for more information on these
+functions.
+
+.TS
+c s s s s
+c s s s s
+l l l l l
+l l l l l
+lw(3i) l l lw(1i) lw(3i).
+Table 1 Xkb Mapping Component Masks
+and Convenience Functions
+_
+Mask Value Map Fields Convenience
+ Functions
+_
+T{
+XkbKeyTypesMask
+T} (1<<0) client T{
+types
+.br
+size_types
+.br
+num_types
+T} T{
+XkbGetKeyTypes
+.br
+XkbResizeKeyType
+.br
+XkbCopyKeyType
+.br
+XkbCopyKeyTypes
+T}
+T{
+XkbKeySymsMask
+T} (1<<1) client T{
+syms
+.br
+size_syms
+.br
+num_syms
+.br
+key_sym_map
+T} T{
+XkbGetKeySyms
+.br
+XkbResizeKeySyms
+.br
+XkbChangeTypesOfKey
+T}
+T{
+XkbModifierMapMask
+T} (1<<2) client modmap T{
+XkbGetKeyModifierMap
+T}
+T{
+XkbExplicitComponentsMask
+T} (1<<3) server T{
+explicit
+T} T{
+XkbGetKeyExplicitComponents
+T}
+T{
+XkbKeyActionsMask
+T} (1<<4) server T{
+key_acts
+.br
+acts
+.br
+num_acts
+.br
+size_acts
+T} T{
+XkbGetKeyActions
+.br
+XkbResizeKeyActions
+T}
+T{
+XkbKeyBehaviorsMask
+T} (1<<5) server T{
+behaviors
+T} T{
+XkbGetKeyBehaviors
+T}
+T{
+XkbVirtualModsMask
+T} (1<<6) server T{
+vmods
+T} T{
+XkbGetVirtualMods
+T}
+T{
+XkbVirtualModMapMask
+T} (1<<7) server T{
+vmodmap
+T} T{
+XkbGetVirtualModMap
+T}
+.TE
+
+.nf
+.bp
+Xkb defines combinations of these masks for convenience:
+
+ #define XkbResizableInfoMask (XkbKeyTypesMask)
+ #define XkbAllClientInfoMask (XkbKeyTypesMask | XkbKeySymsMask |
+ XkbModifierMapMask)
+ #define XkbAllServerInfoMask (XkbExplicitComponentsMask |
+ XkbKeyActionsMask |
+ XkbKeyBehaviorsMask |
+ XkbVirtualModsMask |
+ XkbVirtualModMapMask)
+ #define XkbAllMapComponentsMask XkbAllClientInfoMask |
+ XkbAllServerInfoMask)
+
+.fi
+Key types, symbol maps, and actions are all interrelated: changes in one require
+changes
+in the others. The convenience functions make it easier to edit these components
+and
+handle the interdependencies.
+
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbCopyKeyType (__libmansuffix__),
+.BR XkbCopyKeyTypes (__libmansuffix__),
+.BR XkbFreeClientMap (__libmansuffix__),
+.BR XkbGetKeyActions (__libmansuffix__),
+.BR XkbGetKeyBehaviors (__libmansuffix__),
+.BR XkbGetKeyboard (__libmansuffix__),
+.BR XkbGetKeyExplicitComponents (__libmansuffix__),
+.BR XkbGetKeyModifierMap (__libmansuffix__),
+.BR XkbGetKeySyms (__libmansuffix__),
+.BR XkbGetKeyTypes (__libmansuffix__),
+.BR XkbGetUpdatedMap (__libmansuffix__),
+.BR XkbGetVirtualModMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__),
+.BR XkbResizeKeyType (__libmansuffix__)
+
+
+
+
+
diff --git a/man/xkb/XkbGetNameChanges.man b/man/xkb/XkbGetNameChanges.man
new file mode 100644
index 00000000..08921a0e
--- /dev/null
+++ b/man/xkb/XkbGetNameChanges.man
@@ -0,0 +1,84 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetNameChanges \- Update the local copy of the keyboard description with the
+actual values of the results of one or more calls to
+.I XkbNoteNameChanges
+.SH SYNOPSIS
+.B Status XkbGetNameChanges
+(
+.I dpy,
+.I xkb,
+.I changes
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ XkbNameChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description to which names are copied
+.TP
+.I \- changes
+names components to be obtained from the server
+.SH DESCRIPTION
+.LP
+.I XkbGetNameChanges
+examines the
+.I changes
+parameter, retrieves the necessary information from the server, and places the
+results into the
+.I xkb
+keyboard description.
+
+.I XkbGetNamesChanges
+can generate BadAlloc, BadImplementation, and BadMatch errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbNoteNameChanges (__libmansuffix__)
diff --git a/man/xkb/XkbGetNamedGeometry.man b/man/xkb/XkbGetNamedGeometry.man
new file mode 100644
index 00000000..c142deca
--- /dev/null
+++ b/man/xkb/XkbGetNamedGeometry.man
@@ -0,0 +1,173 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetNamedGeometry 3Xkb "Release 6.1" "X Version 11" "XKBLIB FUNCTION"
+.SH NAME
+XkbGetNamedGeometry \- Loads a keyboard geometry description from this database
+by name
+.SH SYNTAX
+.B Status XkbGetNamedGeometry
+(
+.I dpy,
+.I xkb,
+.I name
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ Atom \fIname\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description into which the geometry should be loaded
+.TP
+.I \- name
+name of the geometry to be loaded
+.SH DESCRIPTION
+.LP
+It is also possible to load a keyboard geometry by name. The X server maintains
+a database
+of keyboard components (see below).
+
+.I XkbGetNamedGeometry
+can return BadName if the name cannot be found.
+
+The X server maintains a database of keyboard components, identified by
+component type.
+The database contains all the information necessary to build a complete keyboard
+description for a particular device, as well as to assemble partial
+descriptions. Table 1 identifies the component types and the type of information
+they contain.
+
+.TS
+c s s
+l l l
+l l l
+l lw(2i) lw(2i).
+Table 1 Server Database Keyboard Components
+_
+Component Component Primary Contents May also contain
+Type
+_
+Keymap T{
+Complete keyboard description
+.br
+Normally assembled using a complete component from each of the other types
+T}
+.sp
+Keycodes T{
+Symbolic name for each key
+.br
+Minimum and maximum legal keycodes
+T} T{
+Aliases for some keys
+.br
+Symbolic names for indicators
+.br
+Description of indicators physically present
+T}
+.sp
+Types Key types T{
+Real modifier bindings and symbolic names for some virtual modifiers
+T}
+.sp
+Compatibility T{
+Rules used to assign actions to keysyms
+T} T{
+Maps for some indicators
+.br
+Real modifier bindings and symbolic names for some virtual modifiers
+T}
+.sp
+Symbols T{
+Symbol mapping for keyboard keys
+.br
+Modifier mapping
+.br
+Symbolic names for groups
+T} T{
+Explicit actions and behaviors for some keys
+.br
+Real modifier bindings and symbolic names for some virtual modifiers
+T}
+.sp
+Geometry Layout of the keyboard T{
+Aliases for some keys; overrides keycodes component aliases
+.br
+Symbolic names for some indicators
+.br
+Description of indicators physically present
+T}
+.TE
+
+While a keymap is a database entry for a complete keyboard description, and
+therefore
+logically different from the individual component database entries, the rules
+for
+processing keymap entries are identical to those for the individual components.
+In the
+discussion that follows, the term component is used to refer to either
+individual
+components or a keymap.
+
+There may be multiple entries for each of the component types. An entry may be
+either
+.I complete
+or
+.I partial.
+Partial entries describe only a piece of the corresponding keyboard component
+and are
+designed to be combined with other entries of the same type to form a complete
+entry.
+
+For example, a partial symbols map might describe the differences between a
+common ASCII
+keyboard and some national layout. Such a partial map is not useful on its own
+because it
+does not include those symbols that are the same on both the ASCII and national
+layouts
+(such as function keys). On the other hand, this partial map can be used to
+configure
+.I any
+ASCII keyboard to use a national layout.
+
+When a keyboard description is built, the components are processed in the order
+in which
+they appear in Table 1; later definitions override earlier ones.
+.SH DIAGNOSTICS
+.TP 15
+.B BadName
+A font or color of the specified name does not exist.
diff --git a/man/xkb/XkbGetNamedIndicator.man b/man/xkb/XkbGetNamedIndicator.man
new file mode 100644
index 00000000..8abad9dc
--- /dev/null
+++ b/man/xkb/XkbGetNamedIndicator.man
@@ -0,0 +1,138 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetNamedIndicator \- Look up the indicator map and other information for an
+indicator by name
+.SH SYNOPSIS
+.B Bool XkbGetNamedIndicator
+(
+.I dpy,
+.I dev_spec,
+.I name,
+.I ndx_rtrn,
+.I state_rtrn,
+.I map_rtrn,
+.I real_rtrn
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ unsigned int \fIdev_spec\fP\^;
+.br
+ Atom \fIname\fP\^;
+.br
+ int *\fIndx_rtrn\fP\^;
+.br
+ Bool *\fIstate_rtrn\fP\^;
+.br
+ XkbIndicatorMapPtr \fImap_rtrn\fP\^;
+.br
+ Bool *\fIreal_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- dev_spec
+keyboard device ID, or XkbUseCoreKbd
+.TP
+.I \- name
+name of the indicator to be retrieved
+.TP
+.I \- ndx_rtrn
+backfilled with the index of the retrieved indicator
+.TP
+.I \- state_rtrn
+backfilled with the current state of the retrieved indicator
+.TP
+.I \- map_rtrn
+ backfilled with the mapping for the retrieved indicator
+.TP
+.I \- real_rtrn
+backfilled with True if the named indicator is real (physical)
+.SH DESCRIPTION
+.LP
+Xkb also allows applications to refer to indicators by name. Use
+.I XkbGetNames
+to get the indicator names. Using names eliminates the need for hard-coding
+bitmask values for particular keyboards. For example, instead of using
+vendor-specific constants such as WSKBLed_ScrollLock mask on Digital
+workstations or XLED_SCROLL_LOCK on Sun workstations, you can instead use
+.I XkbGetNamedIndicator
+to look up information on the indicator named "Scroll Lock."
+
+If the device specified by
+.I device_spec
+has an indicator named
+.I name, XkbGetNamedIndicator
+returns True and populates the rest of the parameters with information about the
+indicator. Otherwise,
+.I XkbGetNamedIndicator
+returns False.
+
+The
+.I ndx_rtrn
+field returns the zero-based index of the named indicator. This index is the bit
+position to use in any function call that requires a mask of indicator bits, as
+well as the indicator's index into the XkbIndicatorRec array of indicator maps.
+.I state_rtrn
+returns the current state of the named indicator (True = on, False = off).
+.I map_rtrn
+returns the indicator map for the named indicator. In addition, if the indicator
+is mapped to a physical LED, the
+.I real_rtrn
+parameter is set to True.
+
+Each of the "
+.I _rtrn
+" arguments is optional; you can pass NULL for any unneeded "
+.I _rtrn
+" arguments.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetNamedIndicator
+function returns True if the device specified by
+.I device_spec
+has an indicator named
+.I name.
+.TP 15
+False
+The
+.I XkbGetNamedIndicator
+function returns False if the device specified by
+.I device_spec
+does not have an indicator named
+.I name.
+.SH "SEE ALSO"
+.BR XkbGetNames (__libmansuffix__)
diff --git a/man/xkb/XkbGetNames.man b/man/xkb/XkbGetNames.man
new file mode 100644
index 00000000..6d29a4ff
--- /dev/null
+++ b/man/xkb/XkbGetNames.man
@@ -0,0 +1,149 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetNames \- Obtain symbolic names from the server
+.SH SYNOPSIS
+.B Status XkbGetNames
+(
+.I dpy,
+.I which,
+.I Xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIXkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of names or map components to be updated
+.TP
+.I \- Xkb
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+.I XkbGetNames
+retrieves symbolic names for the components of the keyboard extension from the X server. The
+.I which
+parameter specifies the name components to be updated in the
+.I xkb
+parameter, and is the bitwise inclusive OR of the valid names mask bits defined in Table 1.
+
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+If the
+.I names
+field of the keyboard description
+.I xkb
+is NULL,
+.I XkbGetNames
+allocates and initializes the
+.I names
+component of the keyboard description before obtaining the values specified by
+.I which.
+If the
+.I names field of
+.I xkb
+is not NULL,
+.I XkbGetNames
+obtains the values specified by
+.I which
+and copies them into the keyboard description
+.I Xkb.
+
+If the
+.I map
+component of the
+.I xkb
+parameter is NULL,
+.I XkbGetNames
+does not retrieve type or shift level names, even if XkbKeyTypeNamesMask or XkbKTLevelNamesMask are set in
+.I which.
+
+.I XkbGetNames
+can return Success, or BadAlloc, BadLength, BadMatch, and BadImplementation errors.
+
+To free symbolic names, use
+.I XkbFreeNames.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type and range, but
+is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbFreeNames (__libmansuffix__)
+
diff --git a/man/xkb/XkbGetSlowKeysDelay.man b/man/xkb/XkbGetSlowKeysDelay.man
new file mode 100644
index 00000000..9afec269
--- /dev/null
+++ b/man/xkb/XkbGetSlowKeysDelay.man
@@ -0,0 +1,229 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetSlowKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetSlowKeysDelay \- Gets the SlowKeys acceptance delay for a keyboard device
+.SH SYNOPSIS
+.B Bool XkbGetSlowKeysDelay
+(
+.I display,
+.I device_spec,
+.I delay_rtrn
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int *\fIdelay_rtrn \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- delay_rtrn
+backfilled with SlowKeys delay, ms
+.SH DESCRIPTION
+.LP
+Some users may accidentally bump keys while moving a hand or typing stick toward
+the key they want. Usually, the keys that are accidentally bumped are just hit
+for a very short period of time. The SlowKeys control helps filter these
+accidental bumps by telling the server to wait a specified period, called the
+.I SlowKeys acceptance delay,
+before delivering key events. If the key is released before this period elapses,
+no key events are generated. Users can then bump any number of keys on their way
+to the one they want without accidentally getting those characters. Once they
+have reached the key they want, they can then hold the desired key long enough
+for the computer to accept it. SlowKeys is a boolean control with one
+configurable attribute.
+
+When the SlowKeys control is active, the server reports the initial key press,
+subsequent acceptance or rejection, and release of any key to interested clients
+by sending an appropriate AccessXNotify event (see section 10.6.4).
+
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 AccessXNotify Events
+_
+detail Reason
+_
+XkbAXN_SKPress T{
+A key was pressed when SlowKeys was enabled.
+T}
+XkbAXN_SKAccept T{
+A key was accepted (held longer than the SlowKeys delay).
+T}
+XkbAXN_SKRelease T{
+An accepted SlowKeys key was released.
+T}
+XkbAXN_SKReject T{
+A key was rejected (released before the SlowKeys delay expired).
+T}
+XkbAXN_BKAccept T{
+A key was accepted by BounceKeys.
+T}
+XkbAXN_BKReject T{
+A key was rejected (pressed before the BounceKeys delay expired).
+T}
+XkbAXN_AXKWarning T{
+AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
+T}
+.TE
+
+
+The
+.I keycode
+field reports the keycode of the key for which the event occurred. If the action
+is related to
+.I SlowKeys,
+the
+.I slowKeysDelay
+field contains the current SlowKeys acceptance delay. If the action is related
+to BounceKeys,
+the
+.I debounceDelay
+field contains the current BounceKeys debounce delay.
+
+Selecting for AccessX Events
+
+To receive XkbAccessXNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbAccesXNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbStateNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbAccessXNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 2.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 AccessXNotify Event Details
+_
+XkbAccessXNotify Event Details Value Circumstances
+_
+XkbAXN_SKPressMask (1<<0) T{
+Slow key press notification wanted
+T}
+XkbAXN_SKAcceptMask (1<<1) T{
+Slow key accept notification wanted
+T}
+XkbAXN_SKRejectMask (1<<2) T{
+Slow key reject notification wanted
+T}
+XkbAXN_SKReleaseMask (1<<3) T{
+Slow key release notification wanted
+T}
+XkbAXN_BKAcceptMask (1<<4) T{
+Bounce key accept notification wanted
+T}
+XkbAXN_BKRejectMask (1<<5) T{
+Bounce key reject notification wanted
+T}
+XkbAXN_AXKWarningMask (1<<6) T{
+AccessX warning notification wanted
+T}
+XkbAXN_AllEventsMask (0x7f) T{
+All AccessX features notifications wanted
+T}
+.TE
+
+.I XkbGetSlowKeysDelay
+requests the attributes of the SlowKeys control from the server, waits for a
+reply and backfills
+.I delay_rtrn
+with the SlowKeys delay attribute.
+.I XkbGetSlowKeysDelay
+returns True if successful; ,
+.I XkbGetSlowKeysDelay
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetSlowKeysDelay
+function returns True if the request of the Slowkeys control from the server was
+successful.
+.I
+.TP 15
+False
+The
+.I XkbGetSlowKeysDelay
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH STRUCTURES
+.LP
+The structure for the XkbAccessXNotify event type is as follows:
+
+.nf
+typedef struct {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbAccessXNotify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int detail; /* XkbAXN_* */
+ KeyCode keycode; /* key of event */
+ int slowKeysDelay; /* current SlowKeys delay */
+ int debounceDelay; /* current debounce delay */
+} XkbAccessXNotifyEvent;
+
+.fi
+
diff --git a/man/xkb/XkbGetState.man b/man/xkb/XkbGetState.man
new file mode 100644
index 00000000..dbdcd470
--- /dev/null
+++ b/man/xkb/XkbGetState.man
@@ -0,0 +1,69 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetState \- Obtains the keyboard state
+.SH SYNOPSIS
+.B Bool XkbGetState
+(
+.I display,
+.I device_spec,
+.I state_return
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ XkbStatePtr \fIstate_return\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I state_return
+backfilled with Xkb state
+.SH DESCRIPTION
+.LP
+The
+.I XkbGetState
+function queries the server for the current keyboard state, waits
+for a reply, and then backfills
+.I state_return
+with the results.
+
+All group values are expressed as group indices in the range [0..3]. Modifiers
+and the compatibility modifier state values are expressed as the bitwise union
+of the core X11 modifier masks. The pointer button state is reported as in the
+core X11 protocol.
diff --git a/man/xkb/XkbGetStickyKeysOptions.man b/man/xkb/XkbGetStickyKeysOptions.man
new file mode 100644
index 00000000..c79c0bc8
--- /dev/null
+++ b/man/xkb/XkbGetStickyKeysOptions.man
@@ -0,0 +1,129 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetStickyKeysOptions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetStickyKeysOptions \- Queries the current StickyKeys attributes for a keyboard device
+.SH SYNOPSIS
+.B Bool XkbGetStickyKeysOptions
+(
+.I display,
+.I device_spec,
+.I options_rtrn
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int *\fIoptions_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- options_rtrn
+backfilled with StickyKeys option mask
+.SH DESCRIPTION
+.LP
+The StickyKeys control has two options that can be accessed via the
+.I ax_options
+of an XkbControlsRec structure. The first option, TwoKeys, specifies whether StickyKeys should
+automatically turn off when two keys are pressed at the same time. This feature is useful for
+shared computers so people who do not want them do not need to turn StickyKeys off if a previous
+user left StickyKeys on. The second option, LatchToLock, specifies whether or not StickyKeys
+locks a modifier when pressed twice in a row.
+
+.I XkbGetStickyKeysOptions
+requests the attributes of the StickyKeys control from the server, waits for a reply, and
+backfills
+.I options_rtrn
+with a mask indicating whether the individual StickyKeys options are on or off. Valid bits in
+.I options_rtrn
+are:
+.nf
+
+ XkbAX_TwoKeysMask
+ XkbAX_LatchToLockMask
+
+.fi
+.I XkbGetStickyKeysOptions
+returns True if successful; if a compatible version of the Xkb extension is not available in the
+server
+.I XkbGetStickyKeysOptions
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetStickyKeysOptions
+function returns True if the request for the attributes of the StickyKeys control from the
+server was successful.
+.TP 15
+False
+The
+.I XkbGetStickyKeysOptions
+function returns False if a compatible version of the Xkb extension is not available in the
+server.
+.SH STRUCTURES
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
diff --git a/man/xkb/XkbGetUpdatedMap.man b/man/xkb/XkbGetUpdatedMap.man
new file mode 100644
index 00000000..3f2baa5e
--- /dev/null
+++ b/man/xkb/XkbGetUpdatedMap.man
@@ -0,0 +1,276 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetUpdatedMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetUpdatedMap \- Update the client or server map information in an existing
+keyboard description
+.SH SYNOPSIS
+.B Status XkbGetUpdatedMap
+(
+.I display,
+.I which,
+.I xkb
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask selecting subcomponents to populate
+.TP
+.I \- xkb
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+The
+.I which
+parameter is a bitwise inclusive OR of the masks in Table 1. If the needed
+components of the
+.I xkb
+structure are not already allocated,
+.I XkbGetUpdatedMap
+allocates them.
+.I XkbGetUpdatedMap
+fetches the requested information for the device specified in the XkbDescRec
+passed in the
+.I xkb
+parameter.
+
+.TS
+c s s s s
+c s s s s
+l l l l l
+l l l l l
+lw(3i) l l lw(1i) lw(3i).
+Table 1 Xkb Mapping Component Masks
+and Convenience Functions
+_
+Mask Value Map Fields Convenience
+ Functions
+_
+T{
+XkbKeyTypesMask
+T} (1<<0) client T{
+types
+.br
+size_types
+.br
+num_types
+T} T{
+XkbGetKeyTypes
+.br
+XkbResizeKeyType
+.br
+XkbCopyKeyType
+.br
+XkbCopyKeyTypes
+T}
+T{
+XkbKeySymsMask
+T} (1<<1) client T{
+syms
+.br
+size_syms
+.br
+num_syms
+.br
+key_sym_map
+T} T{
+XkbGetKeySyms
+.br
+XkbResizeKeySyms
+.br
+XkbChangeTypesOfKey
+T}
+T{
+XkbModifierMapMask
+T} (1<<2) client modmap T{
+XkbGetKeyModifierMap
+T}
+T{
+XkbExplicitComponentsMask
+T} (1<<3) server T{
+explicit
+T} T{
+XkbGetKeyExplicitComponents
+T}
+T{
+XkbKeyActionsMask
+T} (1<<4) server T{
+key_acts
+.br
+acts
+.br
+num_acts
+.br
+size_acts
+T} T{
+XkbGetKeyActions
+.br
+XkbResizeKeyActions
+T}
+T{
+XkbKeyBehaviorsMask
+T} (1<<5) server T{
+behaviors
+T} T{
+XkbGetKeyBehaviors
+T}
+T{
+XkbVirtualModsMask
+T} (1<<6) server T{
+vmods
+T} T{
+XkbGetVirtualMods
+T}
+T{
+XkbVirtualModMapMask
+T} (1<<7) server T{
+vmodmap
+T} T{
+XkbGetVirtualModMap
+T}
+.TE
+
+.I XkbGetUpdatedMap
+is synchronous; it queries the server for the desired information, waits for a
+reply, and then returns. If successful,
+.I XkbGetUpdatedMap
+returns Success. If unsuccessful,
+.I XkbGetUpdatedMap
+returns one of the following: BadAlloc (unable to allocate a component in the
+XkbDescRec structure), BadValue (some mask bits in
+.I which
+are undefined), BadImplementation (a compatible version of the Xkb extension is
+not available in the server or the reply from the server was invalid).
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetUpdatedMap
+function returns Success if a reply is received to the server query for the desired information.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags
+field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+.bp
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbCopyKeyType (__libmansuffix__),
+.BR XkbCopyKeyTypes (__libmansuffix__),
+.BR XkbGetKeyActions (__libmansuffix__),
+.BR XkbGetKeyBehaviors (__libmansuffix__),
+.BR XkbGetKeyExplicitComponents (__libmansuffix__),
+.BR XkbGetKeyModifierMap (__libmansuffix__),
+.BR XkbGetKeySyms (__libmansuffix__),
+.BR XkbGetKeyTypes (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__),
+.BR XkbResizeKeyType (__libmansuffix__),
+.BR XkbGetVirtualModMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__)
diff --git a/man/xkb/XkbGetVirtualMods.man b/man/xkb/XkbGetVirtualMods.man
new file mode 100644
index 00000000..84ac6a14
--- /dev/null
+++ b/man/xkb/XkbGetVirtualMods.man
@@ -0,0 +1,222 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetVirtualMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetVirtualMods \- Obtain a subset of the virtual modifier bindings (the vmods
+array) in a keyboard description
+.SH SYNOPSIS
+.B Status XkbGetVirtualMods
+(
+.I dpy,
+.I which,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- which
+mask indicating virtual modifier bindings to get
+.TP
+.I \- xkb
+Xkb description where results will be placed
+.SH DESCRIPTION
+.LP
+.I XkbGetVirtualMods
+sends a request to the server to obtain the
+.I vmods
+entries for the virtual modifiers specified in the mask,
+.I which,
+and waits for a reply.
+
+Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also the index used when
+accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb, various functions have
+a parameter that is a mask representing virtual modifier choices. In each case, the i-th bit (0
+relative) of the mask represents the i-th virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+
+For each bit set in
+.I which, XkbGetVirtualMods
+updates the corresponding virtual modifier definition in the
+.I server->vmods
+array of
+.I xkb.
+The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description. If successful,
+.I XkbGetVirtualMods
+returns Success.
+
+.B Virtual Modifier Names and Masks
+
+Virtual modifiers are named by converting their string name to an X Atom and
+storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also
+the index used when accessing virtual modifier information in arrays: the name
+in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
+various functions have a parameter that is a mask representing virtual modifier
+choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
+virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+
+If the
+.I server
+map has not been allocated in the
+.I xkb
+parameter,
+.I XkbGetVirtualMods
+allocates and initializes it before obtaining the virtual modifier bindings.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetVirtualMods
+returns BadMatch. Any errors in allocation cause
+.I XkbGetVirtualMods
+to return BadAlloc.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetVirtualMods
+function returns Success when it successfully updates the corresponding virtual modifier definition
+in the
+.I server->vmods
+array of
+.I xkb.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags
+field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which
+specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetNames (__libmansuffix__),
+.BR XkbSetNames (__libmansuffix__)
diff --git a/man/xkb/XkbGetXlibControls.man b/man/xkb/XkbGetXlibControls.man
new file mode 100644
index 00000000..91860a76
--- /dev/null
+++ b/man/xkb/XkbGetXlibControls.man
@@ -0,0 +1,71 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbGetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetXlibControls \- Determines the current state of the Library Controls
+.SH SYNOPSIS
+.B unsigned int XkbGetXlibControls
+(
+.I display
+)
+.br
+ Display *\fIdisplay\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.SH DESCRIPTION
+.LP
+.I XkbGetXlibControls
+returns the current state of the Library Controls as a bit mask that is an
+inclusive OR of the control masks from Table 1 for the controls that are
+enabled. For the optional compose processing controls, the fact that a control
+is enabled does not imply that it is actually implemented.
+
+.TS
+c s
+l l
+l l.
+Table 1 Library Control Masks
+_
+Library Control Mask Value
+_
+XkbLC_ForceLatin1Lookup (1 << 0)
+XkbLC_ConsumeLookupMods (1 << 1)
+XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
+XkbLC_IgnoreNewKeyboards (1 << 3)
+XkbLC_ConsumeKeysOnComposeFail (1 << 29)
+XkbLC_ComposeLED (1 << 30)
+XkbLC_BeepOnComposeFail (1 << 31)
+XkbLC_AllControls (0xc0000007)
+.TE
+
diff --git a/man/xkb/XkbIgnoreExtension.man b/man/xkb/XkbIgnoreExtension.man
new file mode 100644
index 00000000..8b0cc4a7
--- /dev/null
+++ b/man/xkb/XkbIgnoreExtension.man
@@ -0,0 +1,89 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbIgnoreExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbIgnoreExtension \- Prevents core X library keyboard functions from using the
+X Keyboard Extension
+.SH SYNOPSIS
+.B Bool XkbIgnoreExtension
+(
+.I ignore
+)
+.br
+ Bool *\fIignore\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I ignore
+True means ignore the extension
+.SH DESCRIPTION
+.LP
+If a server supports the Xkb extension, the X library normally implements preXkb
+keyboard functions using the Xkb keyboard description and state. The server Xkb
+keyboard state may differ from the preXkb keyboard state. This difference does
+not affect most clients, but there are exceptions. To allow these clients to
+work properly, you may instruct the extension not to use Xkb functionality.
+
+Call
+.I XkbIgnoreExtension
+to prevent core X library keyboard functions from using
+the X Keyboard Extension. You must call
+.I XkbIgnoreExtension
+before you open a
+server connection; Xkb does not provide a way to enable or disable use of the
+extension once a connection is established.
+
+.I XkbIgnoreExtension
+tells the X library whether to use the X Keyboard Extension
+on any subsequently opened X display connections. If ignore is True, the library
+does not initialize the Xkb extension when it opens a new display. This forces
+the X server to use compatibility mode and communicate with the client using
+only core protocol requests and events. If ignore is False, the library treats
+subsequent calls to
+.I XOpenDisplay
+normally and uses Xkb extension requests,
+events, and state. Do not explicitly use Xkb on a connection for which it is
+disabled.
+.I XkbIgnoreExtension
+returns False if it was unable to apply the ignore
+request.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbIgnoreExtension
+returns True if
+.TP 15
+False
+The
+.I XkbIgnoreExtension
+function returns False if it was unable to apply the ignore request.
+.SH "SEE ALSO"
+.BR XOpenDisplay (3X11)
diff --git a/man/xkb/XkbInitCanonicalKeyTypes.man b/man/xkb/XkbInitCanonicalKeyTypes.man
new file mode 100644
index 00000000..13aed617
--- /dev/null
+++ b/man/xkb/XkbInitCanonicalKeyTypes.man
@@ -0,0 +1,98 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbInitCanonicalKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbInitCanonicalKeyTypes \- Set the definitions of the canonical key types in a
+client map to their default values
+.SH SYNOPSIS
+.B Status XkbInitCanonicalKeyTypes
+(
+.I xkb,
+.I which,
+.I keypadVMod
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ int \fIkeypadVMod\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing client map to initialize
+.TP
+.I \- which
+mask of types to initialize
+.TP
+.I \- keypadVMod
+index of NumLock virtual modifier
+.SH DESCRIPTION
+.LP
+.I XkbInitCanonicalKeyTypes
+initializes the first XkbNumRequiredTypes key types of the keyboard specified by
+the
+.I xkb
+parameter to their default values. The
+.I which
+parameter specifies what canonical key types to initialize and is a bitwise
+inclusive OR of the following masks: XkbOneLevelMask, XkbTwoLevelMask,
+XkbAlphabeticMask, and XkbKeypadMask. Only those canonical types specified by
+the
+.I which
+mask are initialized.
+
+If XkbKeypadMask is set in the
+.I which
+parameter,
+.I XkbInitCanonicalKeyTypes
+looks up the NumLock named virtual modifier to determine which virtual modifier
+to use when initializing the KEYPAD key type. If the NumLock virtual modifier
+does not exist,
+.I XkbInitCanonicalKeyTypes
+creates it.
+
+.I XkbInitCanonicalKeyTypes
+normally returns Success. It returns BadAccess if the Xkb extension has not been
+properly initialized, and BadAccess if the
+xkb parameter is not valid.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbInitCanonicalKeyTypes
+funtion return Success if the Xkb extension has been properly initialized and
+the xkb parameter is valid.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
diff --git a/man/xkb/XkbKeyAction.man b/man/xkb/XkbKeyAction.man
new file mode 100644
index 00000000..71a2519b
--- /dev/null
+++ b/man/xkb/XkbKeyAction.man
@@ -0,0 +1,147 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyAction __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyAction \- Returns the key action
+.SH SYNOPSIS
+.B XkbAction XkbKeyAction
+(
+.I xkb,
+.I keycode,
+.I idx
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIidx\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- idx
+index for group and shift level
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal
+state of the server. For
+example, the expected key action associated with pressing the Shift key is to
+set the Shift modifier.
+There is zero or one key action associated with each keysym bound to each key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping
+is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If
+an entry is not zero,
+the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption
+associated with a keymap.
+Because Xkb allows individual keys to have multiple shift levels and a different
+number of groups per
+key, a single two-dimensional array of KeySyms would potentially be very large
+and sparse. Instead, Xkb
+provides a small two-dimensional array of XkbActions for each key. To store all
+of these individual
+arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char.
+This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields
+are anything but bytes,
+the server has to sift through all of the actions and swap any nonbyte fields.
+Because they consist of
+nothing but bytes, it can just copy them out.
+
+.I XkbKeyAction
+returns the key action indexed by
+.I idx
+in the two-dimensional array of key actions associated with the key
+corresponding to
+.I keycode.idx
+may be computed from the group and shift level of interest as follows:
+.nf
+
+ idx = group_index * key_width + shift_level
+.fi
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for
+each group */
+ unsigned char group_info; /* # of groups and out of range group
+handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
diff --git a/man/xkb/XkbKeyActionEntry.man b/man/xkb/XkbKeyActionEntry.man
new file mode 100644
index 00000000..a3ddb948
--- /dev/null
+++ b/man/xkb/XkbKeyActionEntry.man
@@ -0,0 +1,153 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyActionEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyActionEntry \- Returns the key action corresponding to group grp and shift
+level lvl from the
+two-dimensional table of key actions associated with the key corresponding to
+keycode
+.SH SYNOPSIS
+.B XkbAction XkbKeyActionEntry macro
+(
+.I xkb,
+.I keycode,
+.I shift,
+.I grp
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIshift\fP\^;
+.br
+ int \fIgrp\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- shift
+shift level within group
+.TP
+.I \- grp
+group index for group of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal
+state of the server. For example,
+the expected key action associated with pressing the Shift key is to set the
+Shift modifier. There is zero or one
+key action associated with each keysym bound to each key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping
+is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If
+an entry is not zero, the entry
+represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption
+associated with a keymap. Because Xkb
+allows individual keys to have multiple shift levels and a different number of
+groups per key, a single
+two-dimensional array of KeySyms would potentially be very large and sparse.
+Instead, Xkb provides a small
+two-dimensional array of XkbActions for each key. To store all of these
+individual arrays, Xkb concatenates each
+array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char.
+This is done to optimize data
+transfer when the server sends bytes over the wire. If the fields are anything
+but bytes, the server has to sift
+through all of the actions and swap any nonbyte fields. Because they consist of
+nothing but bytes, it can just
+copy them out.
+
+.I XkbKeyActionEntry
+returns the key action corresponding to group
+.I grp
+and shift level
+.I lvl
+from the two-dimensional table of key actions associated with the key
+corresponding to
+.I keycode.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for
+each group */
+ unsigned char group_info; /* # of groups and out of range group
+handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
diff --git a/man/xkb/XkbKeyActionsPtr.man b/man/xkb/XkbKeyActionsPtr.man
new file mode 100644
index 00000000..296dd9e7
--- /dev/null
+++ b/man/xkb/XkbKeyActionsPtr.man
@@ -0,0 +1,146 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyActionsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyActionsPtr \- Returns a pointer to the two-dimensional array of key
+actions associated with
+the key corresponding to keycode
+.SH SYNOPSIS
+.B XkbKeyActionPtr XkbKeyActionsPtr macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal
+state of the server.
+For example, the expected key action associated with pressing the Shift key is
+to set the Shift
+modifier. There is zero or one key action associated with each keysym bound to
+each key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping
+is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If
+an entry is not
+zero, the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption
+associated with a keymap.
+Because Xkb allows individual keys to have multiple shift levels and a different
+number of groups per
+key, a single two-dimensional array of KeySyms would potentially be very large
+and sparse. Instead,
+Xkb provides a small two-dimensional array of XkbActions for each key. To store
+all of these
+individual arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char.
+This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields
+are anything but
+bytes, the server has to sift through all of the actions and swap any nonbyte
+fields. Because they
+consist of nothing but bytes, it can just copy them out.
+
+.I XkbKeyActionsPtr
+returns a pointer to the two-dimensional array of key actions associated with
+the key corresponding
+to
+.I keycode.
+Use
+.I XkbKeyActionsPtr
+only if the key actually has some actions associated with it, that is,
+.I XkbKeyNumActions
+(xkb, keycode) returns something greater than zero.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for
+each group */
+ unsigned char group_info; /* # of groups and out of range group
+handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbKeyNumActions (__libmansuffix__)
diff --git a/man/xkb/XkbKeyGroupInfo.man b/man/xkb/XkbKeyGroupInfo.man
new file mode 100644
index 00000000..515cc9bf
--- /dev/null
+++ b/man/xkb/XkbKeyGroupInfo.man
@@ -0,0 +1,210 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyGroupInfo \- Returns the number of groups of symbols bound to the key
+corresponding to
+keycode
+.SH SYNOPSIS
+.B unsigned char XkbKeyGroupInfo macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound
+to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a
+key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield
+NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user
+performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the
+range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type
+specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the
+user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as
+are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits
+set in
+the
+.I group_info
+flag, as shown in Table 1.
+.bp
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+
+.I XkbKeyGroupInfo
+returns the group_info field from the XkbSymMapRec structure associated with the
+key corresponding to
+.I keycode.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+#define XkbNumKbdGroups 4
+#define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+typedef struct { /* map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for each group */
+ unsigned char group_info; /* # of groups and out of range group handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+#define XkbMaxLegalKeyCode 255
+#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+} XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+#define XkbMaxLegalKeyCode 255
+#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+} XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo (__libmansuffix__)
diff --git a/man/xkb/XkbKeyGroupWidth.man b/man/xkb/XkbKeyGroupWidth.man
new file mode 100644
index 00000000..0a3b7fb2
--- /dev/null
+++ b/man/xkb/XkbKeyGroupWidth.man
@@ -0,0 +1,86 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyGroupWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyGroupWidth \- Computes the width of the type associated with the group
+.I grp
+for the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.B int XkbKeyGroupWidth macro
+(
+.I xkb,
+.I keycode,
+.I grp
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIgrp\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- grp
+group of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeyGroupWidth
+computes the width of the type associated with the group
+.I grp
+for the key corresponding to
+.I keycode.
diff --git a/man/xkb/XkbKeyGroupsWidth.man b/man/xkb/XkbKeyGroupsWidth.man
new file mode 100644
index 00000000..a8b59ae6
--- /dev/null
+++ b/man/xkb/XkbKeyGroupsWidth.man
@@ -0,0 +1,76 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyGroupsWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyGroupsWidth \- Computes the maximum width associated with the key
+corresponding to
+.I keycode
+.SH SYNOPSIS
+.B int XkbKeyGroupsWidth macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeyGroupsWidth
+computes the maximum width associated with the key corresponding to
+.I keycode.
diff --git a/man/xkb/XkbKeyHasActions.man b/man/xkb/XkbKeyHasActions.man
new file mode 100644
index 00000000..ce8d600c
--- /dev/null
+++ b/man/xkb/XkbKeyHasActions.man
@@ -0,0 +1,137 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyHasActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyHasActions \- Determines if the key corresponding to
+.I keycode
+has any actions associated with it
+.SH SYNOPSIS
+.B int XkbKeyHasActions macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal state of the
+server. For example, the expected key action associated with pressing the Shift key is to set
+the Shift modifier. There is zero or one key action associated with each keysym bound to each
+key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If an entry is not
+zero, the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption associated with a
+keymap. Because Xkb allows individual keys to have multiple shift levels and a different number
+of groups per key, a single two-dimensional array of KeySyms would potentially be very large and
+sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store
+all of these individual arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char. This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields are anything but
+bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because
+they consist of nothing but bytes, it can just copy them out.
+
+.I XkbKeyHasActions
+returns True if the key corresponding to
+.I keycode
+has any actions associated with it; otherwise, it returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbKeyHasActions
+function will return True if the key corresponding to
+.I keycode
+has any actions associated with it.
+.TP 15
+False
+The
+.I XkbKeyHasActions
+function will return False if the key corresponding to
+.I keycode
+does not have any actions associated with it.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for each group */
+ unsigned char group_info; /* # of groups and out of range group handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
diff --git a/man/xkb/XkbKeyNumActions.man b/man/xkb/XkbKeyNumActions.man
new file mode 100644
index 00000000..86b9ecef
--- /dev/null
+++ b/man/xkb/XkbKeyNumActions.man
@@ -0,0 +1,125 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyNumActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyNumActions \- Computes the number of actions associated with the key corresponding to
+keycode
+.SH SYNOPSIS
+.B int XkbKeyNumActions macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal state of the
+server. For example, the expected key action associated with pressing the Shift key is to set
+the Shift modifier. There is zero or one key action associated with each keysym bound to each
+key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If an entry is not
+zero, the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption associated with a
+keymap. Because Xkb allows individual keys to have multiple shift levels and a different number
+of groups per key, a single two-dimensional array of KeySyms would potentially be very large and
+sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store
+all of these individual arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char. This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields are anything but
+bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because
+they consist of nothing but bytes, it can just copy them out.
+
+.I XkbKeyNumActions
+computes the number of actions associated with the key corresponding to
+.I keycode.
+This should be the same value as the result of
+.I XkbKeyNumSyms.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for each group */
+ unsigned char group_info; /* # of groups and out of range group handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbKeyNumSyms (__libmansuffix__)
diff --git a/man/xkb/XkbKeyNumGroups.man b/man/xkb/XkbKeyNumGroups.man
new file mode 100644
index 00000000..9cc1a6e5
--- /dev/null
+++ b/man/xkb/XkbKeyNumGroups.man
@@ -0,0 +1,322 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyNumGroups __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyNumGroups \- Returns the number of groups of symbols bound to the key
+corresponding to keycode
+.SH SYNOPSIS
+.B int XkbKeyNumGroups macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits set in
+the
+.I group_info
+flag, as shown in Table 1.
+.bp
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+
+.\"--- Chapter 10
+The Xkb extension is composed of two parts: a server extension, and a
+client-side X library extension.
+This chapter discusses functions used to modify controls effecting the behavior
+of the server portion
+of the Xkb extension. X Library Controls discusses functions used to modify
+controls that affect only
+the behavior of the client portion of the extension; those controls are known as
+Library Controls.
+
+Xkb contains control features that affect the entire keyboard, known as global
+keyboard controls. Some
+of the controls may be selectively enabled and disabled; these controls are
+known as the
+.I Boolean Controls.
+Boolean Controls can be turned on or off under program control and can also be
+automatically set to an
+on or off condition when a client program exits. The remaining controls, known
+as the
+.I Non-Boolean Controls,
+are always active. The XkbControlsRec structure describes the current state of
+most of the global
+controls and the attributes effecting the behavior of each of these Xkb
+features. This chapter
+describes the Xkb controls and how to manipulate them.
+
+There are two possible components for each of the Boolean Controls: attributes
+describing how the
+control should work, and a state describing whether the behavior as a whole is
+enabled or disabled.
+The attributes and state for most of these controls are held in the
+XkbControlsRec structure.
+
+You can manipulate the Xkb controls individually, via convenience functions, or
+as a whole. To treat
+them as a group, modify an XkbControlsRec structure to describe all of the
+changes to be made, and
+then pass that structure and appropriate flags to an Xkb library function, or
+use a
+XkbControlsChangesRec to reduce network traffic. When using a convenience
+function to manipulate one
+control individually, you do not use an XkbControlsRec structure directly.
+
+The Xkb controls are grouped as shown in Table 2.
+
+.TS
+c s s
+l l l
+lw(2i) l l.
+Table 2 Xkb Keyboard Controls
+_
+Type of Control Control Name Boolean Control?
+_
+T{
+Controls for enabling and disabling other controls
+T} EnabledControls No
+ AutoReset No
+T{
+Control for bell behavior
+T} AudibleBell Boolean
+T{
+Controls for repeat key behavior
+T} PerKeyRepeat No
+ RepeatKeys Boolean
+ DetectableAutorepeat Boolean
+T{
+Controls for keyboard overlays
+T} Overlay1 Boolean
+ Overlay2 Boolean
+T{
+Controls for using the mouse from the keyboard
+T} MouseKeys Boolean
+ MouseKeysAccel Boolean
+T{
+Controls for better keyboard access by
+T} AccessXFeedback Boolean
+T{
+physically impaired persons
+T} AccessXKeys Boolean
+ AccessXTimeout Boolean
+ BounceKeys Boolean
+ SlowKeys Boolean
+ StickyKeys Boolean
+T{
+Controls for general keyboard mapping
+T} GroupsWrap No
+ IgnoreGroupLock Boolean
+ IgnoreLockMods No
+ InternalMods No
+.TE
+
+The individual categories and controls are described first, together with
+functions for manipulating
+them.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for
+each group */
+ unsigned char group_info; /* # of groups and out of range group
+handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven
+mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers
+*/
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking
+for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean
+control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to
+be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion
+event */
+ unsigned short mk_interval; /* ms delay between repeat mouse
+events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse
+move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed
+*/
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access
+X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to
+modify */
+ unsigned int axt_ctrls_values; /* values for new bits in
+enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto
+repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven
+mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers
+*/
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking
+for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean
+control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to
+be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion
+event */
+ unsigned short mk_interval; /* ms delay between repeat mouse
+events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse
+move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed
+*/
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access
+X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to
+modify */
+ unsigned int axt_ctrls_values; /* values for new bits in
+enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto
+repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo. (__libmansuffix__)
diff --git a/man/xkb/XkbKeyNumSyms.man b/man/xkb/XkbKeyNumSyms.man
new file mode 100644
index 00000000..95fa5004
--- /dev/null
+++ b/man/xkb/XkbKeyNumSyms.man
@@ -0,0 +1,77 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyNumSyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyNumSyms \- Returns the total number of keysyms for the key corresponding
+to
+.I keycode
+.SH SYNOPSIS
+.B int XkbKeyNumSyms macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeyNumSyms
+returns the total number of keysyms for the key corresponding to
+.I keycode.
diff --git a/man/xkb/XkbKeySymEntry.man b/man/xkb/XkbKeySymEntry.man
new file mode 100644
index 00000000..9fed1655
--- /dev/null
+++ b/man/xkb/XkbKeySymEntry.man
@@ -0,0 +1,95 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeySymEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeySymEntry \- Returns the keysym corresponding to shift level
+.I shift
+and group
+.I grp
+from the two-dimensional array of keysyms for the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.B KeySym XkbKeySymEntry macro
+(
+.I xkb,
+.I keycode,
+.I shift,
+.I grp
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIshift\fP\^;
+.br
+ int \fIgrp\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- shift
+shift level of interest
+.TP
+.I \- grp
+group of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeySymEntry
+returns the keysym corresponding to shift level
+.I shift
+and group
+.I grp
+from the two-dimensional array of keysyms for the key corresponding to
+.I keycode.
diff --git a/man/xkb/XkbKeySymsOffset.man b/man/xkb/XkbKeySymsOffset.man
new file mode 100644
index 00000000..4bbc12b9
--- /dev/null
+++ b/man/xkb/XkbKeySymsOffset.man
@@ -0,0 +1,78 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeySymsOffset __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeySymsOffset \- Returns the offset of the two-dimensional array of keysyms
+for the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.B int XkbKeySymsOffset macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeySymsOffset
+returns the offset of the two-dimensional array of keysyms for the key
+corresponding to
+.I keycode.
diff --git a/man/xkb/XkbKeySymsPtr.man b/man/xkb/XkbKeySymsPtr.man
new file mode 100644
index 00000000..d83199ae
--- /dev/null
+++ b/man/xkb/XkbKeySymsPtr.man
@@ -0,0 +1,78 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeySymsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeySymsPtr \- Returns the pointer to the two-dimensional array of keysyms for
+the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.B KeySym * XkbKeySymsPtr macro
+(
+.I xkb,
+.I keycode
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeySymsPtr
+returns the pointer to the two-dimensional array of keysyms for the key
+corresponding to
+.I keycode.
diff --git a/man/xkb/XkbKeyType.man b/man/xkb/XkbKeyType.man
new file mode 100644
index 00000000..d2c5a676
--- /dev/null
+++ b/man/xkb/XkbKeyType.man
@@ -0,0 +1,84 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyType \- Obtain the index of a key type or the pointer to a key type
+.SH SYNOPSIS
+.B XkbKeyTypePtr XkbKeyType
+(
+.I xkb,
+.I keycode,
+.I group
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIgroup\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- group
+group index
+.SH DESCRIPTION
+.LP
+.I XkbKeyType
+returns a pointer to the key type in the
+.I types
+vector of the client map in
+.I xkb
+corresponding to the given
+.I keycode
+and
+.I group
+index.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct { /* Key Type */
+ XkbModsRec mods; /* modifiers used to compute shift level */
+ unsigned char num_levels; /* total # shift levels, do not modify directly */
+ unsigned char map_count; /* # entries in map, preserve (if non-NULL) */
+ XkbKTMapEntryPtr map; /* vector of modifiers for each shift level */
+ XkbModsPtr preserve; /* mods to preserve for corresponding map entry */
+ Atom name; /* name of key type */
+ Atom * level_names; /* array of names of each shift level */
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+
+.fi
diff --git a/man/xkb/XkbKeyTypeIndex.man b/man/xkb/XkbKeyTypeIndex.man
new file mode 100644
index 00000000..80611654
--- /dev/null
+++ b/man/xkb/XkbKeyTypeIndex.man
@@ -0,0 +1,70 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyTypeIndex __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyTypeIndex \- Obtain the index of a key type or the pointer to a key type
+.SH SYNOPSIS
+.B int XkbKeyTypeIndex
+(
+.I xkb,
+.I keycode,
+.I group
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIgroup\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- group
+group index
+.SH DESCRIPTION
+.LP
+.I XkbKeyTypeIndex
+computes an index into the
+.I types
+vector of the client map in
+.I xkb
+from the given
+.I keycode
+and
+.I group
+index.
+
diff --git a/man/xkb/XkbKeyTypesForCoreSymbols.man b/man/xkb/XkbKeyTypesForCoreSymbols.man
new file mode 100644
index 00000000..ca35b76d
--- /dev/null
+++ b/man/xkb/XkbKeyTypesForCoreSymbols.man
@@ -0,0 +1,248 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeyTypesForCoreSymbols __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyTypesForCoreSymbols \- Determine the Xkb key types appropriate for the
+symbols bound to a key in a core keyboard mapping
+.SH SYNOPSIS
+.B int XkbKeyTypesForCoreSymbols
+(
+.I xkb,
+.I map_width,
+.I core_syms,
+.I protected,
+.I types_inout,
+.I xkb_syms_rtrn
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ int \fImap_width\fP\^;
+.br
+ KeySym * \fIcore_syms\fP\^;
+.br
+ unsigned int \fIprotected\fP\^;
+.br
+ int * \fItypes_inout\fP\^;
+.br
+ KeySym * \fIxkb_syms_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to place symbols
+.TP
+.I \- map_width
+width of core protocol keymap in xkb_syms_rtrn
+.TP
+.I \- core_syms
+core protocol format array of KeySyms
+.TP
+.I \- protected
+explicit key types
+.TP
+.I \- types_inout
+backfilled with the canonical types bound to groups one and two for the key
+.TP
+.I \- xkb_syms_rtrn
+backfilled with symbols bound to the key in the Xkb mapping
+.SH DESCRIPTION
+.LP
+.I XkbKeyTypesForCoreSymbols
+expands the symbols in
+.I core_syms
+and types in
+.I types_inout,
+then chooses canonical key types (canonical key types are
+defined The Canonical Key Types) for groups 1 and 2 using the rules specified by
+the Xkb protocol and places them in xkb_syms_rtrn, which will be non-NULL.
+
+.B The Canonical Key Types
+
+Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at
+least XkbNumRequiredTypes (4) predefined types to be in a key map. These
+predefined key types are referred to as the canonical key types and describe the
+types of keys available on most keyboards. The definitions for the canonical key
+types are held in the first XkbNumRequiredTypes entries of the
+.I types
+field of the client map and are indexed using the following constants:
+.nf
+
+ XkbOneLevelIndex
+ XkbTwoLevelIndex
+ XkbAlphabeticIndex
+ XkbKeypadIndex
+
+.fi
+
+ONE_LEVEL
+
+The ONE_LEVEL key type describes groups that have only one symbol. The default
+ONE_LEVEL key type has no map entries and does not pay attention to any
+modifiers. A symbolic representation of this key type could look like the
+following:
+.nf
+
+ type "ONE_LEVEL" {
+ modifiers = None;
+ map[None]= Level1;
+ level_name[Level1]= "Any";
+ };
+
+.fi
+The description of the ONE_LEVEL key type is stored in the
+types[XkbOneLevelIndex] entry of the client key map.
+
+TWO_LEVEL
+
+The TWO_LEVEL key type describes groups that consist of two symbols but are
+neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only
+the Shift modifier. It returns shift level two if Shift is set, and level one if
+it is not. A symbolic representation of this key type could look like the
+following:
+.nf
+
+ type "TWO_LEVEL" {
+ modifiers = Shift;
+ map[Shift]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ };
+
+.fi
+
+The description of the TWO_LEVEL key type is stored in the
+types[XkbTwoLevelIndex] entry of the client key map.
+
+ALPHABETIC
+
+The ALPHABETIC key type describes groups consisting of two symbols: the
+lowercase form of a symbol followed by the uppercase form of the same symbol.
+The default ALPHABETIC type implements locale-sensitive "Shift cancels CapsLock"
+behavior using both the Shift and Lock modifiers as follows:
+
+.IP \(bu 5
+If Shift and Lock are both set, the default ALPHABETIC type yields level one.
+.IP \(bu 5
+If Shift alone is set, it yields level two.
+.IP \(bu 5
+If Lock alone is set, it yields level one, but preserves the Lock modifier so
+Xlib notices and applies the appropriate capitalization rules. The Xlib
+functions are locale-sensitive and apply different capitalization rules for
+different locales.
+.IP \(bu 5
+If neither Shift nor Lock is set, it yields level one.
+
+A symbolic representation of this key type could look like the following:
+.nf
+
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift]= Level2;
+ preserve[Lock]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+
+.fi
+The description of the ALPHABETIC key type is stored in the
+types[XkbAlphabeticIndex] entry of the client key map.
+
+KEYPAD
+
+The KEYPAD key type describes groups that consist of two symbols, at least one
+of which is a numeric keypad symbol. The numeric keypad symbol is assumed to
+reside at level two. The default KEYPAD key type implements "Shift cancels
+NumLock" behavior using the Shift modifier and the real modifier bound to the
+virtual modifier named "NumLock," known as the NumLock modifier, as follows:
+
+.IP \(bu 5
+If Shift and NumLock are both set, the default KEYPAD type yields level one.
+.IP \(bu 5
+If Shift alone is set, it yields level two.
+.IP \(bu 5
+If NumLock alone is set, it yields level two.
+.IP \(bu 5
+If neither Shift nor NumLock is set, it yields level one.
+
+A symbolic representation of this key type could look like the following:
+.nf
+
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None]= Level1;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[Shift+NumLock]= Level1;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+
+.fi
+The description of the KEYPAD key type is stored in the types[XkbKeypadIndex]
+entry of the client key map.
+
+A core keymap is a two-dimensional array of keysyms. It has
+.I map_width
+columns and
+.I max_key_code
+rows.
+.I XkbKeyTypesForCoreSymbols
+takes a single row from a core keymap, determines the number of groups
+associated with it, the type of each group, and the symbols bound to each group.
+The return value is the number of groups,
+.I types_inout
+has the types for each group, and
+.I xkb_syms_rtrn
+has the symbols in Xkb order (that is, groups are contiguous, regardless of
+size).
+
+.I protected
+contains the explicitly protected key types. There is one explicit override
+control associated with each of the four possible groups for each Xkb key,
+ExplicitKeyType1 through ExplicitKeyType4;
+.I protected
+is an inclusive OR of these controls.
+.I map_width
+is the width of the core keymap and is not dependent on any Xkb definitions.
+.I types_inout
+is an array of four type indices. On input,
+.I types_inout
+contains the indices of any types already assigned to the key, in case they are
+explicitly protected from change.
+
+Upon return,
+.I types_inout
+contains any automatically selected (that is, canonical) types plus any
+protected types. Canonical types are assigned to all four groups if there are
+enough symbols to do so. The four entries in
+.I types_inout
+correspond to the four groups for the key in question.
diff --git a/man/xkb/XkbKeycodeToKeysym.man b/man/xkb/XkbKeycodeToKeysym.man
new file mode 100644
index 00000000..130c1ded
--- /dev/null
+++ b/man/xkb/XkbKeycodeToKeysym.man
@@ -0,0 +1,76 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeycodeToKeysym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeycodeToKeysym \- Finds the keysym bound to a particular key at a specified
+group and shift level
+.SH SYNOPSIS
+.B KeySym XkbKeycodeToKeysym
+(
+.I dpy,
+.I kc,
+.I group,
+.I level
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ KeyCode \fIkc\fP\^;
+.br
+ unsigned int \fIgroup\fP\^;
+.br
+ unsigned int \fIlevel\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- kc
+key of interest
+.TP
+.I \- group
+group of interest
+.TP
+.I \- level
+shift level of interest
+.SH DESCRIPTION
+.LP
+.I XkbKeycodeToKeysym
+returns the keysym bound to a particular group and shift level for a particular
+key on the core keyboard. If
+.I kc
+is not a legal keycode for the core keyboard, or if
+.I group
+or
+.I level
+are out of range for the specified key,
+.I XkbKeycodeToKeysym
+returns NoSymbol.
diff --git a/man/xkb/XkbKeysymToModifiers.man b/man/xkb/XkbKeysymToModifiers.man
new file mode 100644
index 00000000..ff7e7360
--- /dev/null
+++ b/man/xkb/XkbKeysymToModifiers.man
@@ -0,0 +1,64 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbKeysymToModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeysymToModifiers \- Finds the set of modifiers bound to a particular keysym
+on the core keyboard
+.SH SYNOPSIS
+.B unsigned int XkbKeysymToModifiers
+(
+.I dpy,
+.I ks
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ KeySym \fIks\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- ks
+keysym of interest
+.SH DESCRIPTION
+.LP
+.I XkbKeysymToModifiers
+finds the set of modifiers currently bound to the keysym
+.I ks
+on the core keyboard. The value returned is the mask of modifiers bound to the
+keysym
+.I ks.
+If no modifiers are bound to the keysym,
+.I XkbKeysymToModifiers
+returns zero; otherwise, it returns the inclusive OR of zero or more of the
+following: ShiftMask, ControlMask, LockMask, Mod1Mask, Mod2Mask, Mod3Mask,
+Mod4Mask, and Mod5Mask.
diff --git a/man/xkb/XkbLatchGroup.man b/man/xkb/XkbLatchGroup.man
new file mode 100644
index 00000000..8b516ba1
--- /dev/null
+++ b/man/xkb/XkbLatchGroup.man
@@ -0,0 +1,97 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLatchGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLatchGroup \- Latches the keysym group
+.SH SYNOPSIS
+.B Bool XkbLatchGroup
+(
+.I display,
+.I device_spec,
+.I group
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIgroup\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I group
+index of the keysym group to latch
+.SH DESCRIPTION
+.LP
+
+.I XkbLatchGroup
+sends a request to the server to latch the specified
+.I group
+and
+does not wait for a reply. It returns True if the request was sent and False
+otherwise.
+
+Reference the keysym group indices with these symbolic constants:
+
+.TS
+c s
+l l
+l l.
+Table 1 Symbolic Group Names
+_
+Symbolic Name Value
+_
+XkbGroup1Index 0
+XkbGroup2Index 1
+XkbGroup3Index 2
+XkbGroup4Index 3
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLatchGroup
+function returns True if a request was sent to the server to latch the specified
+.I group.
+.TP 15
+False
+The
+.I XkbLatchGroup
+function returns False if the request was not sent.
+
+
+
diff --git a/man/xkb/XkbLatchModifiers.man b/man/xkb/XkbLatchModifiers.man
new file mode 100644
index 00000000..baf70669
--- /dev/null
+++ b/man/xkb/XkbLatchModifiers.man
@@ -0,0 +1,120 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLatchModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLatchModifiers \- Latches and unlatches any of the eight real keyboard
+modifiers
+.SH SYNOPSIS
+.B Bool XkbLatchModifiers
+(
+.I display,
+.I device_spec,
+.I affect,
+.I values
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIaffect\fP\^;
+.br
+ unsigned int \fIvalues\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I affect
+mask of real modifiers whose lock state is to change
+.TP
+.I values
+1 => lock, 0 => unlock; only for modifiers selected by affect
+.SH DESCRIPTION
+.LP
+.I XkbLatchModifiers
+sends a request to the server to latch the real modifiers
+selected by both
+.I affect
+and
+.I values
+and to unlatch the real modifiers selected by
+.I affect
+, but not selected by
+.I values.
+
+.I XkbLatchModifiers
+does not wait for a reply from the server. It returns True if
+the request was sent, and False otherwise.
+
+The functions in this section that change the use of modifiers use a mask in the
+parameter affect. It is a bitwise inclusive OR of the legal modifier masks:
+
+.TS
+c
+l
+l.
+Table 1 Real Modifier Masks
+_
+Mask
+_
+ShiftMask
+LockMask
+ControlMask
+Mod1Mask
+Mod2Mask
+Mod3Mask
+Mod4Mask
+Mod5Mask
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLatchModifiers
+function returns True if a request was sent to the server to latch the real modifiers selected by both
+.I affect
+and
+.I values
+and to unlatch the real modifiers selected by
+.I affect
+, but not selected by
+.I values.
+.TP 15
+False
+The
+.I XkbLatchModifiers
+function returns False if the request was not sent.
+
diff --git a/man/xkb/XkbLibraryVersion.man b/man/xkb/XkbLibraryVersion.man
new file mode 100644
index 00000000..1165e43d
--- /dev/null
+++ b/man/xkb/XkbLibraryVersion.man
@@ -0,0 +1,104 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLibraryVersion __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLibraryVersion \- Determines the compatibility of a library at runtime.
+.SH SYNOPSIS
+.B Bool XkbLibraryVersion
+(
+.I lib_major_in_out,
+.I lib_minor_in_out
+)
+.br
+ int *\fIlib_major_in_out\fP\^;
+.br
+ int *\fIlib_minor_in_out\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I lib_major_in_out
+Specifies and returns the major Xkb library version.
+.TP
+.I lib_minor_in_out
+Specifies and returns the minor Xkb library version.
+.SH DESCRIPTION
+.LP
+If an application is dynamically linked, both the X server and the client-side X
+library must contain the Xkb extension in order for the client to use the Xkb
+extension capabilities. Therefore a dynamically linked application must check
+both the library and the server for compatibility before using Xkb function
+calls. A properly written program must check for compatibility between the
+version of the Xkb library that is dynamically loaded and the one used when the
+application was built. It must then check the server version for compatibility
+with the version of Xkb in the library.
+
+If your application is statically linked, you must still check for server
+compatibility and may check library compatibility. (It is possible to compile
+against one set of header files and link against a different, incompatible,
+version of the library, although this should not normally occur.)
+
+Pass the symbolic value XkbMajorVersion in
+.I lib_major_in_out
+and XkbMinorVersion in
+.I lib_minor_in_out.
+These arguments represent the version of the library used
+at compile time. The
+.I XkbLibraryVersion
+function backfills the major and minor version numbers of the library used at
+run time in
+.I lib_major_in_out and
+.I lib_minor_in_out.
+If the versions of the compile time and run time libraries are
+compatible,
+.I XkbLibraryVersion
+returns True, otherwise, it returns False.
+
+In addition, in order to use the Xkb extension, you must ensure that the
+extension is present in the server and that the server supports the version of
+the extension expected by the client. Use
+.I XkbQueryExtension
+to do this, as described in the next section.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLibraryVersion
+returns True if the versions of the compile time and run time libraries are
+compatible.
+.TP 15
+False
+The
+.I XkbLibraryVersion
+returns False if the versions of the compile time and run time libraries are not
+compatible.
+.SH "SEE ALSO"
+.BR XkbMajorVersion (__libmansuffix__),
+.BR XkbMinorVersion (__libmansuffix__),
+.BR XkbQueryExtension (__libmansuffix__)
diff --git a/man/xkb/XkbListComponents.man b/man/xkb/XkbListComponents.man
new file mode 100644
index 00000000..9a17e97f
--- /dev/null
+++ b/man/xkb/XkbListComponents.man
@@ -0,0 +1,181 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbListComponents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbListComponents \- List of components for one or more component types
+.SH SYNOPSIS
+.B XkbComponentListPtr XkbListComponents
+(
+.I dpy,
+.I device_spec,
+.I ptrns,
+.I max_inout
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ XkbComponentNamesPtr \fIptrnst\fP\^;
+.br
+ int * \fImax_inout\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- ptrns
+namelist for components of interest
+.TP
+.I \- max_inout
+max # returned names, # left over
+.SH DESCRIPTION
+.LP
+You may ask the server for a list of components for one or more component types. The request takes the
+form of a set of patterns, one pattern for each of the component types, including a pattern for the
+complete keyboard description. To obtain this list, use
+.I XkbListComponents.
+
+.I XkbListComponents
+queries the server for a list of component names matching the patterns specified in
+.I ptrns.
+It waits for a reply and returns the matching component names in an XkbComponentListRec structure.
+When you are done using the structure, you should free it using
+.I XkbFreeComponentList. device_spec
+indicates a particular device in which the caller is interested. A server is allowed (but not
+required) to restrict its reply to portions of the database that are relevant for that particular
+device.
+
+.I ptrns
+is a pointer to an XkbComponentNamesRec. Each of the fields in
+.I ptrns
+contains a pattern naming the components of interest. Each of the patterns is composed of characters
+from the ISO Latin1 encoding, but can contain only parentheses, the wildcard characters `?' and `*',
+and characters permitted in a component class or member name. A pattern may be NULL, in which case no
+components for that type is returned. Pattern matches with component names are case sensitive. The `?'
+wildcard matches any single character, except a left or right parenthesis; the `*' wildcard matches
+any number of characters, except a left or right parenthesis. If an implementation allows additional
+characters in a component class or member name other than those required by the Xkb extension, the
+result of comparing one of the additional characters to either of the wildcard characters is
+implementation-dependent.
+
+If a pattern contains illegal characters, the illegal characters are ignored. The matching process is
+carried out as if the illegal characters were omitted from the pattern.
+
+.I max_inout
+is used to throttle the amount of data passed to and from the server. On input, it specifies the
+maximum number of names to be returned (the total number of names in all component categories). Upon
+return from
+.I XkbListComponents,
+max_inout contains the number of names that matched the request but were not returned because of the
+limit.
+
+.B Component Names
+
+Component names have the form
+.I "class(member)"
+where
+.I class
+describes a subset of the available components for a particular type and the optional
+.I member
+identifies a specific component from that subset. For example, the name "atlantis(acme)" for a symbols
+component might specify the symbols used for the atlantis national keyboard layout by the vendor
+"acme." Each class has an optional
+.I default
+member - references that specify a class but not a member refer to the default member of the class, if
+one exists. Xkb places no constraints on the interpretation of the class and member names used in
+component names.
+
+The
+.I class
+and
+.I member
+names are both specified using characters from the Latin-1 character set. Xkb implementations must
+accept all alphanumeric characters, minus (`-') and underscore (`_') in class or member names, and
+must not accept parentheses, plus, vertical bar, percent sign, asterisk, question mark, or white
+space. The use of other characters is implementation-dependent.
+.SH STRUCTURES
+.LP
+The component name patterns used to describe the request are passed to
+.I XkbListComponents
+using an XkbComponentNamesRec structure. This structure has no special allocation constraints or
+interrelationships with other structures; allocate and free this structure using standard
+.I malloc
+and
+.I free
+calls or their equivalent:
+.nf
+
+ typedef struct _XkbComponentNames {
+ char * keymap; /* keymap names */
+ char * keycodes; /* keycode names */
+ char * types; /* type names */
+ char * compat; /* compatibility map names */
+ char * symbols; /* symbol names */
+ char * geometry; /* geometry names */
+ } XkbComponentNamesRec, *XkbComponentNamesPtr;
+
+.fi
+.I XkbListComponents
+returns a pointer to an XkbComponentListRec:
+.nf
+
+ typedef struct _XkbComponentList {
+ int num_keymaps; /* number of entries in keymap */
+ int num_keycodes; /* number of entries in keycodes */
+ int num_types; /* number of entries in types */
+ int num_compat; /* number of entries in compat */
+ int num_symbols; /* number of entries in symbols */
+ int num_geometry; /* number of entries in geometry;
+ XkbComponentNamePtr keymap; /* keymap names */
+ XkbComponentNamePtr keycodes; /* keycode names */
+ XkbComponentNamePtr types; /* type names */
+ XkbComponentNamePtr compat; /* compatibility map names */
+ XkbComponentNamePtr symbols; /* symbol names */
+ XkbComponentNamePtr geometry; /* geometry names */
+ } XkbComponentListRec, *XkbComponentListPtr;
+
+ typedef struct _XkbComponentName {
+ unsigned short flags; /* hints regarding component name */
+ char * name; /* name of component */
+ } XkbComponentNameRec, *XkbComponentNamePtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbFreeComponentList (__libmansuffix__)
+.SH NOTES
+.LP
+Note that the structure used to specify patterns on input is an XkbComponentNamesRec, and that used to
+hold the individual component names upon return is an XkbComponentNameRec (no trailing `s' in Name).
diff --git a/man/xkb/XkbLockGroup.man b/man/xkb/XkbLockGroup.man
new file mode 100644
index 00000000..87eb8e27
--- /dev/null
+++ b/man/xkb/XkbLockGroup.man
@@ -0,0 +1,95 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLockGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLockGroup \- Locks the keysym group
+.SH SYNOPSIS
+.B Bool XkbLockGroup
+(
+.I display,
+.I device_spec,
+.I group
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIgroup\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I group
+index of the keysym group to lock
+.SH DESCRIPTION
+.LP
+.I XkbLockGroup
+sends a request to the server to lock the specified
+.I group
+and does not wait for a reply. It returns True if the request was sent and
+False otherwise.
+
+Reference the keysym group indices with these symbolic constants:
+
+.TS
+c s
+l l
+l l.
+Table 1 Symbolic Group Names
+_
+Symbolic Name Value
+_
+XkbGroup1Index 0
+XkbGroup2Index 1
+XkbGroup3Index 2
+XkbGroup4Index 3
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLockGroup
+function returns True when a request was sent to the server to lock the
+specified
+.I group
+and does not wait for a reply.
+.TP 15
+False
+The
+.I XkbLockGroup
+function returns False if the request was not sent.
+
diff --git a/man/xkb/XkbLockModifiers.man b/man/xkb/XkbLockModifiers.man
new file mode 100644
index 00000000..25df6acc
--- /dev/null
+++ b/man/xkb/XkbLockModifiers.man
@@ -0,0 +1,118 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLockModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLockModifiers \- Locks and unlocks any of the eight real keyboard modifiers
+.SH SYNOPSIS
+.B Bool XkbLockModifiers
+(
+.I display,
+.I device_spec,
+.I affect,
+.I values
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIaffect\fP\^;
+.br
+ unsigned int \fIvalues\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I affect
+mask of real modifiers whose lock state is to change
+.TP
+.I values
+1 => lock, 0 => unlock; only for modifiers selected by affect
+.SH DESCRIPTION
+.LP
+.I XkbLockModifiers
+sends a request to the server to lock the real modifiers
+selected by both
+.I affect
+and
+.I values
+and to unlock the real modifiers selected by
+.I affect,
+but not selected by
+.I values. XkbLockModifiers
+does not wait for a reply from the server. It returns True if the request was
+sent, and False otherwise.
+
+The functions in this section that change the use of modifiers use a mask in the
+parameter affect. It is a bitwise inclusive OR of the legal modifier masks:
+
+.TS
+c
+l
+l.
+Table 1 Real Modifier Masks
+_
+Mask
+_
+ShiftMask
+LockMask
+ControlMask
+Mod1Mask
+Mod2Mask
+Mod3Mask
+Mod4Mask
+Mod5Mask
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLockModifiers
+function returns True if a request is sent to the server to lock the real
+modifiers
+selected by both
+.I affect
+and
+.I values
+and to unlock the real modifiers selected by
+.I affect,
+but not selected by
+.I values.
+.TP 15
+False
+The
+.I XkbLockModifiers
+function returns False if the request was not sent.
diff --git a/man/xkb/XkbLookupKeyBinding.man b/man/xkb/XkbLookupKeyBinding.man
new file mode 100644
index 00000000..6f202227
--- /dev/null
+++ b/man/xkb/XkbLookupKeyBinding.man
@@ -0,0 +1,104 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLookupKeyBinding __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLookupKeyBinding \- Find the string bound to a key by XRebindKeySym
+.SH SYNOPSIS
+.B int XkbLookupKeyBinding
+(
+.I dpy,
+.I sym,
+.I state,
+.I buf,
+.I nbytes,
+.I extra_rtrn
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ KeySym \fIsym\fP\^;
+.br
+ unsigned int \fIstate\fP\^;
+.br
+ char * \fIbuf\fP\^;
+.br
+ int \fInbytes\fP\^;
+.br
+ int * \fIextra_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- sym
+connection to server
+.TP
+.I \- state
+state for which string is to be looked up
+.TP
+.I \- buf
+buffer into which returned string is written
+.TP
+.I \- nbytes
+size of buffer in bytes
+.TP
+.I \- extra_rtrn
+backfilled with number bytes overflow
+.SH DESCRIPTION
+.LP
+.I XkbLookupKeyBinding
+is the equivalent of the core
+.I XLookupString
+function.
+
+.I XRebindKeysym
+binds an ASCII string to a specified keysym, so that the string and keysym are
+returned when the key is pressed and a specified list of modifiers are also
+being held down.
+.I XkbLookupKeyBinding
+returns in
+.I buf
+the string associated with the keysym
+.I sym
+and modifier state
+.I state. buf
+is NULL terminated unless there's an overflow. If the string returned is larger
+than
+.I nbytes,
+a count of bytes that does not fit into the buffer is returned in
+.I extra_rtrn.
+.I XkbTranslateKeySym
+returns the number of bytes that it placed into
+.I buf.
+.SH "SEE ALSO"
+.BR XkbTranslateKeySym (__libmansuffix__),
+.BR XLookupString (3X11),
+.BR XRebindKeysym (3X11)
diff --git a/man/xkb/XkbLookupKeySym.man b/man/xkb/XkbLookupKeySym.man
new file mode 100644
index 00000000..c3af29b4
--- /dev/null
+++ b/man/xkb/XkbLookupKeySym.man
@@ -0,0 +1,89 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbLookupKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLookupKeySym \- Find the symbol associated with a key for a particular state
+.SH SYNOPSIS
+.B Bool XkbLookupKeySym
+(
+.I dpy,
+.I key,
+.I state,
+.I mods_rtrn,
+.I sym_rtrn
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ KeyCode \fIkey\fP\^;
+.br
+ unsigned int \fIstate\fP\^;
+.br
+ unsigned int *\fImods_rtrn\fP\^;
+.br
+ KeySym *\fIsym_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- key
+key for which symbols are to be found
+.TP
+.I \- state
+state for which symbol should be found
+.TP
+.I \- mods_rtrn
+backfilled with unconsumed modifiers
+.TP
+.I \- sym_rtrn
+backfilled with symbol associated with key + state
+.SH DESCRIPTION
+.LP
+.I XkbLookupKeySym
+is the equivalent of the core
+.I XLookupKeySym
+function. For the core keyboard, given a keycode
+.I key
+and an Xkb state
+.I state, XkbLookupKeySym
+returns the symbol associated with the key in
+.I sym_rtrn
+and the list of modifiers that should still be applied in
+.I mods_rtrn.
+The
+.I state
+parameter is the state from a KeyPress or KeyRelease event.
+.I XkbLookupKeySym
+returns True if it succeeds.
+.SH "SEE ALSO"
+.BR XLookupKeySym (3X11)
+
diff --git a/man/xkb/XkbModActionVMods.man b/man/xkb/XkbModActionVMods.man
new file mode 100644
index 00000000..9120a657
--- /dev/null
+++ b/man/xkb/XkbModActionVMods.man
@@ -0,0 +1,58 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbModActionVMods \- Returns the vmods1 and vmods2 fields of act converted to the vmods format of an
+Xkb modifier description
+.SH SYNOPSIS
+.B unsigned short XkbModActionVMods macro
+(
+.I act
+)
+.br
+ XkbAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract virtual mods
+.SH DESCRIPTION
+.LP
+.I XkbModActionVMods
+returns the
+.I vmods1
+and
+.I vmods2
+fields of
+.I act
+converted to the
+.I vmods
+format of an Xkb modifier description.
diff --git a/man/xkb/XkbNoteControlsChanges.man b/man/xkb/XkbNoteControlsChanges.man
new file mode 100644
index 00000000..ece529e9
--- /dev/null
+++ b/man/xkb/XkbNoteControlsChanges.man
@@ -0,0 +1,214 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbNoteControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteControlsChanges \- Notes the changes in a changes structure when a client receives an XkbControlsNotify
+event
+.SH SYNOPSIS
+.B void XkbNoteControlsChanges
+(
+.I changes,
+.I new,
+.I wanted
+)
+.br
+ XkbControlsChangesPtr \fIchanges\fP\^;
+.br
+ XkbControlsNotifyEvent *\fInew\fP\^;
+.br
+ unsigned int \fIwanted\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- changes
+records changes indicated by new
+.TP
+.I \- new
+tells which things have changed
+.TP
+.I \- wanted
+tells which parts of new to record in changes
+.SH DESCRIPTION
+.LP
+Whenever a field in the controls structure changes in the server's keyboard description, the server sends an
+XkbControlsNotify event to all interested clients.To receive XkbControlsNotify events under all possible
+conditions, use
+.I XkbSelectEvents
+and pass XkbControlsNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbControlsNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbControlsNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+The
+.I changed_ctrls
+field specifies the controls components that have changed and consists of bits taken from the masks defined in
+Table 1 with "ok" in the
+.I changed_ctrls
+column.
+
+The controls currently enabled in the server are reported in the
+.I enabled_ctrls
+field. If any controls were just enabled or disabled (that is, the contents of the
+.I enabled_ctrls
+field changed), they are flagged in the
+.I enabled_ctrl_changes
+field. The valid bits for these fields are the masks listed in Table 1 with "ok" in the
+.I enabled_ctrls
+column. The
+.I num_groups
+field reports the number of groups bound to the key belonging to the most number of groups and is automatically
+updated
+when the keyboard mapping changes.
+
+If the change was caused by a request from a client, the
+.I keycode
+and
+.I event_type
+fields are set to zero and the
+.I req_major
+and
+.I req_minor
+fields identify the request. The
+.I req_major value is the same as the major extension opcode. Otherwise,
+.I event_type
+is set to the type of event that caused the change (one of KeyPress, KeyRelease, DeviceKeyPress,
+DeviceKeyRelease,
+ButtonPress or ButtonRelease), and
+.I req_major
+and
+.I req_minor
+are undefined. If
+.I event_type
+is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the
+.I keycode
+field is set to the key that caused the change. If
+.I event_type
+is ButtonPress or ButtonRelease,
+.I keycode
+contains the button number.
+
+When a client receives an XkbControlsNotify event, it can note the changes in a changes structure using
+.I XkbNoteControlsChanges.
+
+The
+.I wanted
+parameter is a bitwise inclusive OR of bits taken from the set of masks specified in Table 1 with "ok" in the
+.I changed_ctrls
+column.
+.I XkbNoteControlsChanges
+copies any changes reported in
+.I new
+and specified in
+.I wanted
+into the changes record specified by
+.I old.
+.SH STRUCTURES
+.LP
+.nf
+The structure for the XkbControlsNotify event is defined as follows:
+
+typedef struct {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbCompatMapNotify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed_ctrls; /* bits indicating which controls data have changed*/
+ unsigned int enabled_ctrls; /* controls currently enabled in server */
+ unsigned int enabled_ctrl_changes; /* bits indicating enabled/disabled controls */
+ int num_groups; /* current number of keyboard groups */
+ KeyCode keycode; /* != 0 => keycode of key causing change */
+ char event_type; /* Type of event causing change */
+ char req_major; /* major event code of event causing change */
+ char req_minor; /* minor event code of event causing change */
+} XkbControlsNotifyEvent;
+.fi
+.SH "SEE ALSO"
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/man/xkb/XkbNoteDeviceChanges.man b/man/xkb/XkbNoteDeviceChanges.man
new file mode 100644
index 00000000..1bc3c18b
--- /dev/null
+++ b/man/xkb/XkbNoteDeviceChanges.man
@@ -0,0 +1,149 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbNoteDeviceChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteDeviceChanges \- Note device changes reported in an XkbExtensionDeviceNotify event
+.SH SYNOPSIS
+.B void XkbNoteDeviceChanges
+(
+.I old,
+.I new,
+.I wanted
+)
+.br
+ XkbDeviceChangesPtr \fIold\fP\^;
+.br
+ XkbExtensionDeviceNotifyEvent * \fInew\fP\^;
+.br
+ unsigned int \fIwanted\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- old
+structure tracking state changes
+.TP
+.I \- new
+event indicating state changes
+.TP
+.I \- wanted
+mask indicating changes to note
+.SH DESCRIPTION
+.LP
+The
+.I wanted
+field specifies the changes that should be noted in
+.I old,
+and is composed of the bitwise inclusive OR of one or more of the masks from Table 1. The
+.I reason
+field of the event in
+.I new
+indicates the types of changes the event is reporting.
+.I XkbNoteDeviceChanges
+updates the XkbDeviceChangesRec specified by
+.I old
+with the changes that are both specified in
+.I wanted
+and contained in
+.I new->reason.
+
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+
+To update a local copy of the state and configuration of an X input extension device with the changes
+previously noted in an XkbDeviceChangesRec structure, use
+.I XkbGetDeviceInfoChanges.
+.SH STRUCTURES
+.LP
+Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events and
+accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may
+then be used in subsequent operations to update either a server configuration or a local copy of an
+Xkb extension device configuration. The changes structure is defined as follows:
+.nf
+
+typedef struct _XkbDeviceChanges {
+ unsigned int changed; /* bits indicating what has changed */
+ unsigned short first_btn; /* number of first button which changed, if any */
+ unsigned short num_btns; /* number of buttons that have changed */
+ XkbDeviceLedChangesRec leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbGetDeviceInfoChanges (__libmansuffix__)
diff --git a/man/xkb/XkbNoteIndicatorChanges.man b/man/xkb/XkbNoteIndicatorChanges.man
new file mode 100644
index 00000000..9876480f
--- /dev/null
+++ b/man/xkb/XkbNoteIndicatorChanges.man
@@ -0,0 +1,137 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbNoteIndicatorChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteIndicatorChanges \- Notes the changes in a changes structure
+.SH SYNOPSIS
+.B void XkbNoteIndicatorChanges
+(
+.I old,
+.I new,
+.I wanted
+)
+.br
+ XkbIndicatorChangesPtr \fIold\fP\^;
+.br
+ XkbIndicatorNotifyEvent *\fInew\fP\^;
+.br
+ unsigned int \fIwanted\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- old
+XkbIndicatorChanges structure to be updated
+.TP
+.I \- new
+event from which changes are to be copied
+.TP
+.I \- wanted
+which changes are to be noted
+.SH DESCRIPTION
+.LP
+Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all
+interested clients. Similarly, whenever an indicator's map changes, the server sends
+XkbIndicatorMapNotify events to all interested clients.
+
+To receive XkbIndicatorStateNotify events, use
+.I XkbSelectEvents
+with both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events,
+use
+.I XkbSelectEvents
+with XkbIndicatorMapNotifyMask.
+
+To receive events for only specific indicators, use
+.I XkbSelectEventDetails.
+Set the
+.I event_type
+parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
+.I bits_to_change
+and
+.I values_for_bits
+detail parameters to a mask where each bit specifies one indicator, turning on those bits that
+specify the indicators for which you want to receive events.
+
+The
+.I changed
+parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If
+the event is of type XkbIndicatorMapNotify,
+.I changed
+reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
+.I changed
+reports the indicators that have changed state.
+.I state
+is a mask that specifies the current state of all indicators, whether they have changed or
+not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
+
+When your client application receives either a XkbIndicatorStateNotify event or
+XkbIndicatorMapNotify event, you can note the changes in a changes structure by calling
+.I XkbNoteIndicatorChanges.
+
+
+The
+.I wanted
+parameter is the bitwise inclusive OR of XkbIndicatorMapMask and
+XkbIndicatorStateMask.
+.I XkbNoteIndicatorChanges
+copies any changes reported in
+.I new
+and specified in
+.I wanted
+into the changes record specified by
+.I old.
+.SH STRUCTURES
+Both types of indicator events use the same structure:
+.nf
+
+typedef struct _XkbIndicatorNotify {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* specifies state or map notify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed; /* mask of indicators with new state or map */
+ unsigned int state; /* current state of all indicators */
+} XkbIndicatorNotifyEvent;
+
+.fi
+.I xkb_type
+is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is
+a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
+.SH "SEE ALSO"
+.BR XkbIndicatorMapMask (__libmansuffix__),
+.BR XkbIndicatorStateMask (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/man/xkb/XkbNoteNameChanges.man b/man/xkb/XkbNoteNameChanges.man
new file mode 100644
index 00000000..a17a4aa2
--- /dev/null
+++ b/man/xkb/XkbNoteNameChanges.man
@@ -0,0 +1,106 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbNoteNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteNameChanges \- Note the changed names in a changes structure
+.SH SYNOPSIS
+.B void XkbNoteNameChanges
+(
+.I old,
+.I new,
+.I wanted
+)
+.br
+ XkbNameChangesPtr \fIold\fP\^;
+.br
+ XkbNamesNotifyEvent * \fInew\fP\^;
+.br
+ unsigned int \fIwanted\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- old
+XkbNameChanges structure to be updated
+.TP
+.I \- new
+event from which changes are to be copied
+.TP
+.I \- wanted
+types of names for which changes are to be noted
+.SH DESCRIPTION
+.LP
+When your application receives a XkbNamesNotify event, you can note the changed
+names in a changes structure using
+.I XkbNoteNameChanges.
+
+The
+.I wanted
+parameter is the bitwise inclusive OR of the valid names mask bits shown in
+Table 1.
+.I XkbNoteNameChanges
+copies any changes that are reported in
+.I new
+and specified in
+.I wanted
+into the changes record specified by
+.I old.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
diff --git a/man/xkb/XkbOpenDisplay.man b/man/xkb/XkbOpenDisplay.man
new file mode 100644
index 00000000..22a44c81
--- /dev/null
+++ b/man/xkb/XkbOpenDisplay.man
@@ -0,0 +1,170 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbOpenDisplay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbOpenDisplay \- Checks for a compatible version of the Xkb extension in both
+the library and the server, and initializes the extension for use.
+.SH SYNOPSIS
+.B Display XkbOpenDisplay
+(
+.I display_name,
+.I event_rtrn,
+.I error_rtrn,
+.I major_in_out,
+.I minor_in_out,
+.I reason_rtrn
+)
+.br
+ char *\fIdisplay_name\fP\^;
+.br
+ int *\fIevent_rtrn\fP\^;
+.br
+ int *\fIerror_rtrn\fP\^;
+.br
+ int *\fImajor_in_out\fP\^;
+.br
+ int *\fIminor_in_out\fP\^;
+.br
+ int *\fIreason_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display_name
+hardware display name, which determines the display and communications domain to
+be used
+.TP
+.I event_rtrn
+backfilled with the extension base event code
+.TP
+.I error_rtrn
+backfilled with the extension base error code
+.TP
+.I major_in_out
+compile time lib major version in, server major version out
+.TP
+.I minor_in_out
+compile time lib min version in, server minor version out
+.TP
+.I reason_rtrn
+backfilled with a status code
+.SH DESCRIPTION
+.LP
+As a convenience, you can use the function
+.I XkbOpenDisplay
+to perform these three
+tasks at once: open a connection to an X server, check for a compatible version
+of the Xkb extension in both the library and the server, and initialize the
+extension for use.
+
+.I XkbOpenDisplay
+is a convenience function that opens an X display connection and
+initializes the X keyboard extension. In all cases, upon return
+.I reason_rtrn
+contains a status value indicating success or the type of failure. If
+.I major_in_out
+and
+.I minor_in_out
+are not NULL,
+.I XkbOpenDisplay
+first calls
+.I XkbLibraryVersion
+to determine whether the client library is compatible, passing
+it the values pointed to by
+.I major_in_out and
+.I minor_in_out. If the library is
+incompatible,
+.I XkbOpenDisplay backfills
+.I major_in_out
+and
+.I minor_in_out
+with the
+major and minor extension versions of the library being used and returns NULL.
+If the library is compatible,
+.I XkbOpenDisplay
+next calls
+.I XOpenDisplay
+with the
+.I display_name.
+If this fails, the function returns NULL. If successful,
+.I XkbOpenDisplay
+calls
+.I XkbQueryExtension
+and backfills the major and minor Xkb
+server extension version numbers in
+.I major_in_out and
+.I minor_in_out. If the server
+extension version is not compatible with the library extension version or if the
+server extension is not present,
+.I XkbOpenDisplay
+closes the display and returns
+NULL. When successful, the function returns the display connection.
+
+The possible values for reason_rtrn are:
+
+.IP \(bu 5
+XkbOD_BadLibraryVersion indicates XkbLibraryVersion returned False.
+.IP \(bu 5
+XkbOD_ConnectionRefused indicates the display could not be opened.
+.IP \(bu 5
+XkbOD_BadServerVersion indicates the library and the server have incompatible
+extension versions.
+.IP \(bu 5
+XkbOD_NonXkbServer indicates the extension is not present in the X server.
+.IP \(bu 5
+XkbOD_Success indicates that the function succeeded.
+.SH "RETURN VALUES"
+.TP 15
+NULL
+The
+.I XkbOpenDisplay
+function returns NULL if the library is incompatible.
+.sp
+.in 20
+The
+.I XkbOpenDisplay
+function returns NULL if the call to
+.I XOpenDisplay
+with the
+.I display_name
+fails.
+.sp
+.in 20
+The
+.I XkbOpenDisplay
+function returns NULL and closes the display if the server extension version is not
+compatible with the library extension version or if the server extension is not present.
+.SH DIAGNOSTICS
+.TP 15
+.SM BadAccess
+The Xkb extension has not been properly initialized
+.SH "SEE ALSO"
+.BR XkbLibraryVersion (__libmansuffix__),
+.BR XkbQueryExtension (__libmansuffix__),
+.BR XOpenDisplay (3X11)
diff --git a/man/xkb/XkbOutOfRangeGroupInfo.man b/man/xkb/XkbOutOfRangeGroupInfo.man
new file mode 100644
index 00000000..43538b1f
--- /dev/null
+++ b/man/xkb/XkbOutOfRangeGroupInfo.man
@@ -0,0 +1,196 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbOutOfRangeGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbOutOfRangeGroupInfo \- Returns only the out-of-range processing information
+from the group_info field of an XkbSymMapRec structure
+.SH SYNOPSIS
+.B unsigned char XkbOutOfRangeGroupInfo macro
+(
+.I grp_inf
+)
+.br
+ unsigned char \fIgrp_inf\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- grp_inf
+Xkb description of interest
+.SH DESCRIPTION
+.LP
+.I XkbOutOfRangeGroupInfo
+returns only the out-of-range processing information from the
+.I group_info
+field of an XkbSymMapRec structure.
+
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits set in
+the
+.I group_info
+flag, as shown in Table 1.
+.bp
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for each group */
+ unsigned char group_info; /* # of groups and out of range group handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo. (__libmansuffix__)
diff --git a/man/xkb/XkbOutOfRangeGroupNumber.man b/man/xkb/XkbOutOfRangeGroupNumber.man
new file mode 100644
index 00000000..88f60cb7
--- /dev/null
+++ b/man/xkb/XkbOutOfRangeGroupNumber.man
@@ -0,0 +1,197 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbOutOfRangeGroupNumber __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbOutOfRangeGroupNumber \- Returns the out-of-range group number, represented
+as a group index, from the group_info field of an XkbSymMapRec structure
+.SH SYNOPSIS
+.B unsigned char XkbOutOfRangeGroupNumber macro
+(
+.I grp_inf
+)
+.br
+ unsigned char \fIgrp_inf\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- grp_inf
+Xkb description of interest
+.SH DESCRIPTION
+.LP
+.I XkbOutOfRangeGroupNumber
+returns the out-of-range group number, represented as a group index, from the
+.I group_info
+field of an XkbSymMapRec structure.
+
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits set in
+the
+.I group_info
+flag, as shown in Table 1.
+
+
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /* map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /* key type index for each group */
+ unsigned char group_info; /* # of groups and out of range group handling */
+ unsigned char width; /* max # of shift levels for key */
+ unsigned short offset; /* index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /* default button for keyboard driven mouse */
+ unsigned char num_groups; /* number of keyboard groups */
+ unsigned char groups_wrap; /* how to wrap out-of-bounds groups */
+ XkbModsRec internal; /* defines server internal modifiers */
+ XkbModsRec ignore_lock; /* modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /* 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /* ms delay until first repeat */
+ unsigned short repeat_interval; /* ms delay between repeats */
+ unsigned short slow_keys_delay; /* ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /* ms delay before key reactivated */
+ unsigned short mk_delay; /* ms delay to second mouse motion event */
+ unsigned short mk_interval; /* ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /* # intervals until constant mouse move */
+ unsigned short mk_max_speed; /* multiplier for maximum mouse speed */
+ short mk_curve; /* determines mouse move curve type */
+ unsigned short ax_options; /* 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /* seconds until Access X disabled */
+ unsigned short axt_opts_mask; /* 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /* 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /* which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /* values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /* per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo (__libmansuffix__)
diff --git a/man/xkb/XkbPtrActionX.man b/man/xkb/XkbPtrActionX.man
new file mode 100644
index 00000000..76de43c6
--- /dev/null
+++ b/man/xkb/XkbPtrActionX.man
@@ -0,0 +1,114 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbPtrActionX __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbPtrActionX \- Returns the high_XXX and low_XXX fields of act converted to a
+signed int
+.SH SYNOPSIS
+.B int XkbPtrActionX macro
+(
+.I act
+)
+.br
+ XkbPtrAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract X
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrAction structure move the pointer when keys
+are pressed and released.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction.
+
+If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr
+instructs the server to generate core pointer MotionNotify events rather than
+the usual KeyPress event, and the corresponding KeyRelease event disables any
+mouse keys timers that were created as a result of handling the XkbSA_MovePtr
+action.
+
+The
+.I type
+field of the XkbPtrAction structure is always XkbSA_MovePtr.
+
+The
+.I flags
+field is a bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Action Types
+_
+Action Type Meaning
+_
+XkbSA_NoAcceleration T{
+If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a
+mouse keys timer for this key; every time the timer expires, the cursor moves.
+T}
+XkbSA_MoveAbsoluteX T{
+If set, the X portion of the structure specifies the new pointer X coordinate.
+Otherwise, the X portion is added to the current pointer X coordinate to
+determine the new pointer X coordinate.
+T}
+XkbSA_MoveAbsoluteY T{
+If set, the Y portion of the structure specifies the new pointer Y coordinate.
+Otherwise, the Y portion is added to the current pointer Y coordinate to
+determine the new pointer Y coordinate.
+T}
+.TE
+
+Each of the X and Y coordinantes of the XkbPtrAction structure is composed of
+two signed 16-bit values, that is, the X coordinate is composed of
+.I high_XXX
+and
+.I low_XXX,
+and similarly for the Y coordinate. Xkb provides the following macros, to
+convert between a signed integer and two signed 16-bit values in XkbPtrAction
+structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrAction {
+ unsigned char type; /* XkbSA_MovePtr */
+ unsigned char flags; /* determines type of pointer motion */
+ unsigned char high_XXX; /* x coordinate, high bits*/
+ unsigned char low_XXX; /* y coordinate, low bits */
+ unsigned char high_YYY; /* x coordinate, high bits */
+ unsigned char low_YYY; /* y coordinate, low bits */
+ } XkbPtrAction;
+
+.fi
diff --git a/man/xkb/XkbPtrActionY.man b/man/xkb/XkbPtrActionY.man
new file mode 100644
index 00000000..aef08bd1
--- /dev/null
+++ b/man/xkb/XkbPtrActionY.man
@@ -0,0 +1,114 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbPtrActionY __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbPtrActionY \- Returns the high_YYY and low_YYY fields of act converted to a
+signed int
+.SH SYNOPSIS
+.B int XkbPtrActionY macro
+(
+.I act
+)
+.br
+ XkbPtrAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract Y
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrAction structure move the pointer when keys
+are pressed and released.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction.
+
+If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr
+instructs the server to generate core pointer MotionNotify events rather than
+the usual KeyPress event, and the corresponding KeyRelease event disables any
+mouse keys timers that were created as a result of handling the XkbSA_MovePtr
+action.
+
+The
+.I type
+field of the XkbPtrAction structure is always XkbSA_MovePtr.
+
+The
+.I flags
+field is a bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Action Types
+_
+Action Type Meaning
+_
+XkbSA_NoAcceleration T{
+If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a
+mouse keys timer for this key; every time the timer expires, the cursor moves.
+T}
+XkbSA_MoveAbsoluteX T{
+If set, the X portion of the structure specifies the new pointer X coordinate.
+Otherwise, the X portion is added to the current pointer X coordinate to
+determine the new pointer X coordinate.
+T}
+XkbSA_MoveAbsoluteY T{
+If set, the Y portion of the structure specifies the new pointer Y coordinate.
+Otherwise, the Y portion is added to the current pointer Y coordinate to
+determine the new pointer Y coordinate.
+T}
+.TE
+
+Each of the X and Y coordinantes of the XkbPtrAction structure is composed of
+two signed 16-bit values, that is, the X coordinate is composed of
+.I high_XXX
+and
+.I low_XXX,
+and similarly for the Y coordinate. Xkb provides the following macros, to
+convert between a signed integer and two signed 16-bit values in XkbPtrAction
+structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrAction {
+ unsigned char type; /* XkbSA_MovePtr */
+ unsigned char flags; /* determines type of pointer motion */
+ unsigned char high_XXX; /* x coordinate, high bits*/
+ unsigned char low_XXX; /* y coordinate, low bits */
+ unsigned char high_YYY; /* x coordinate, high bits */
+ unsigned char low_YYY; /* y coordinate, low bits */
+ } XkbPtrAction;
+
+.fi
diff --git a/man/xkb/XkbQueryExtension.man b/man/xkb/XkbQueryExtension.man
new file mode 100644
index 00000000..c5f2e933
--- /dev/null
+++ b/man/xkb/XkbQueryExtension.man
@@ -0,0 +1,146 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbQueryExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbQueryExtension \- Determines the compatibility of a library at runtime.
+.SH SYNOPSIS
+.B Bool XkbQueryExtension
+(
+.I dpy,
+.I opcode_rtrn,
+.I event_rtrn,
+.I error_rtrn,
+.I major_in_out,
+.I minor_in_out
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ int \fIopcode_rtrn\fP\^;
+.br
+ int \fIevent_rtrn\fP\^;
+.br
+ int *\fIerror_rtrn\fP\^;
+.br
+ int \fImajor_in_out\fP\^;
+.br
+ int \fIminor_in_out\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I dpy
+connection to the X server
+.TP
+.I opcode_rtrn
+backfilled with the major extension opcode
+.TP
+.I event_rtrn
+backfilled with the extension base event code
+.TP
+.I error_rtrn
+backfilled with the extension base error code
+.TP
+.I major_in_out
+compile time lib major version in, server major version out
+.TP
+.I minor_in_out
+compile time lib min version in, server minor version out
+.SH DESCRIPTION
+.LP
+Call
+.I XkbQueryExtension
+to check for the presence and compatibility of the
+extension in the server and to initialize the extension. Because of potential
+version mismatches, you cannot use the generic extension mechanism functions
+(
+.I XQueryExtension
+and
+.I XInitExtension
+) for checking for the presence of, and
+initializing the Xkb extension.
+
+You must call
+.I XkbQueryExtension
+or
+.I XkbOpenDisplay
+before using any other Xkb
+library interfaces, unless such usage is explicitly allowed in the interface
+description in this document. The exceptions are:
+.I XkbIgnoreExtension, XkbLibraryVersion,
+and a handful of audible-bell functions. You should not use
+any other Xkb functions if the extension is not present or is uninitialized. In
+general, calls to Xkb library functions made prior to initializing the Xkb
+extension cause BadAccess protocol errors.
+
+.I XkbQueryExtension
+both determines whether a compatible Xkb extension is present
+in the X server and initializes the extension when it is present.
+
+The
+.I XkbQueryExtension
+function determines whether a compatible version of the X
+Keyboard Extension is present in the server. If a compatible extension is
+present,
+.I XkbQueryExtension
+returns True; otherwise, it returns False.
+
+If a compatible version of Xkb is present,
+.I XkbQueryExtension
+initializes the
+extension. It backfills the major opcode for the keyboard extension in
+.I opcode_rtrn,
+the base event code in
+.I event_rtrn,
+the base error code in
+.I error_rtrn,
+and the major and minor version numbers of the extension in
+.I major_in_out
+and
+.I minor_in_out.
+The major opcode is reported in the
+.I req_major
+fields of some Xkb events. For a discussion of the base event code.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbQueryExtension
+function returns True if it determines a compatible version of the X
+Keyboard Extension is present in the server.
+.TP 15
+False
+The
+.I XkbQueryExtension
+function returns False if it determines a compatible version of the X
+Keyboard Extension is not present in the server.
+.SH "SEE ALSO"
+.BR XkbIgnoreExtension (__libmansuffix__),
+.BR XkbLibraryVersion (__libmansuffix__),
+.BR XkbOpenDisplay (__libmansuffix__)
diff --git a/man/xkb/XkbRefreshKeyboardMapping.man b/man/xkb/XkbRefreshKeyboardMapping.man
new file mode 100644
index 00000000..4e910eb1
--- /dev/null
+++ b/man/xkb/XkbRefreshKeyboardMapping.man
@@ -0,0 +1,78 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbRefreshKeyboardMapping __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbRefreshKeyboardMapping \- Update the keyboard description that is internal to the X
+library
+.SH SYNOPSIS
+.B Status XkbRefreshKeyboardMapping
+(
+.I event
+)
+.br
+ XkbMapNotifyEvent * \fIevent\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- event
+event initiating remapping
+.SH DESCRIPTION
+.LP
+.I XkbRefreshKeyboardMapping
+is the Xkb equivalent of the core
+.I XRefreshKeyboardMapping
+function. It requests that the X server send the current key mapping information to
+this client. A client usually invokes
+.I XkbRefreshKeyboardMapping
+after receiving an XkbMapNotify event.
+.I XkbRefreshKeyboardMapping
+returns Success if it succeeds and BadMatch if the event is not an Xkb event.
+
+The XkbMapNotify event can be generated when some client calls
+.I XkbSetMap, XkbChangeMap, XkbGetKeyboardByName,
+or any of the standard X library functions that change the keyboard mapping or modifier
+mapping.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbRefreshKeyboardMapping
+function returns Success when the request that the X server send the current key mapping information to
+this client is successful.
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct
+type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbChangeMap (__libmansuffix__),
+.BR XkbGetKeyboardByName (__libmansuffix__),
+.BR XkbSetMap (__libmansuffix__),
+.BR XRefreshKeyboardMapping (3X11)
diff --git a/man/xkb/XkbResizeDeviceButtonActions.man b/man/xkb/XkbResizeDeviceButtonActions.man
new file mode 100644
index 00000000..86f333b2
--- /dev/null
+++ b/man/xkb/XkbResizeDeviceButtonActions.man
@@ -0,0 +1,105 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbResizeDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeDeviceButtonActions \- Allocate additional space for button actions in an XkbDeviceInfoRec structure
+.SH SYNOPSIS
+.B Status XkbResizeDeviceButtonActions
+(
+.I device_info,
+.I new_total
+)
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.br
+ unsigned int \fInew_total\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+structure in which to allocate button actions
+.TP
+.I \- new_total
+new total number of button actions needed
+.SH DESCRIPTION
+.LP
+.I XkbResizeDeviceButtonActions
+reallocates space, if necessary, to make sure there is room for a total of
+.I new_total
+button actions in the
+.I device_info
+structure. Any new entries allocated are zeroed. If successful,
+.I XkbResizeDeviceButtonActions
+returns Success. If
+.I new_total
+is zero, all button actions are deleted,
+.I device_info->num_btns
+is set to zero, and
+.I device_info->btn_acts
+is set to NULL. If
+.I device_info
+is invalid or
+.I new_total
+is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned.
+
+To free an XkbDeviceInfoRec structure, use
+.I XkbFreeDeviceInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /* name for device */
+ Atom type; /* name for class of devices */
+ unsigned short device_spec; /* device of interest */
+ Bool has_own_state; /* True=>this device has its own state */
+ unsigned short supported; /* bits indicating supported capabilities */
+ unsigned short unsupported; /* bits indicating unsupported capabilities */
+ unsigned short num_btns; /* number of entries in btn_acts */
+ XkbAction * btn_acts; /* button actions */
+ unsigned short sz_leds; /* total number of entries in LEDs vector */
+ unsigned short num_leds; /* number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /* input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /* input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /* LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeDeviceInfo (__libmansuffix__)
diff --git a/man/xkb/XkbResizeKeyActions.man b/man/xkb/XkbResizeKeyActions.man
new file mode 100644
index 00000000..d5f88d30
--- /dev/null
+++ b/man/xkb/XkbResizeKeyActions.man
@@ -0,0 +1,114 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbResizeKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeKeyActions \- Change the number of actions bound to a key
+.SH SYNOPSIS
+.B XkbAction * XkbResizeKeyActions
+(
+.I xkb,
+.I key,
+.I needed
+)
+.br
+ XkbDescRec * \fIxkb\fP\^;
+.br
+ int \fIkey\fP\^;
+.br
+ int \fIneeded\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to change
+.TP
+.I \- key
+keycode of key to change
+.TP
+.I \- needed
+new number of actions required
+.SH DESCRIPTION
+.LP
+The
+.I xkb
+parameter points to the keyboard description containing the
+.I key
+whose number of actions is to be changed. The
+.I key
+parameter is the keycode of the key to change, and needed specifies the new
+number of actions required for the key.
+
+.I XkbResizeKeyActions
+reserves the space needed for the actions and returns a pointer to the beginning
+of the new array that holds the actions. It can change the
+.I acts, num_acts,
+and
+.I size_acts
+fields of
+.I xkb->server
+if it is necessary to reallocate the
+.I acts
+array.
+
+If
+.I needed
+is greater than the current number of keysyms for the key,
+.I XkbResizeKeyActions
+initializes all new actions in the array to NoAction.
+
+Because the number of actions needed by a key is normally computed as width *
+number of groups, and
+.I XkbResizeKeyActions
+does not modify either the width or number of groups for the key, a discrepancy
+exists on return from
+.I XkbResizeKeyActions
+between the space allocated for the actions and the number required. The unused
+entries in the list of actions returned by
+.I XkbResizeKeyActions
+are not preserved across future calls to any of the map editing functions, so
+you must update the key actions (which updates the width and number of groups
+for the key) before calling another allocator function. A call to
+.I XkbChangeTypesOfKey
+updates these.
+
+If any allocation errors occur while resizing the number of actions bound to the
+key,
+.I XkbResizeKeyActions
+returns NULL.
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__)
+.SH NOTES
+.LP
+A change to the number of actions bound to a key should be accompanied by a
+change in the number of symbols bound to a key. Refer to
+.I XkbResizeKeySyms
+for more information on changing the number of symbols bound to a key.
diff --git a/man/xkb/XkbResizeKeySyms.man b/man/xkb/XkbResizeKeySyms.man
new file mode 100644
index 00000000..bba36d91
--- /dev/null
+++ b/man/xkb/XkbResizeKeySyms.man
@@ -0,0 +1,112 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbResizeKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeKeySyms \- Change the number of symbols bound to a key
+.SH SYNOPSIS
+.B KeySym * XkbResizeKeySyms
+(
+.I xkb,
+.I key,
+.I needed
+)
+.br
+ XkbDescRec * \fIxkb\fP\^;
+.br
+ int \fIkey\fP\^;
+.br
+ int \fIneeded\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be changed
+.TP
+.I \- key
+keycode for key to modify
+.TP
+.I \- needed
+new number of keysyms required for key
+.SH DESCRIPTION
+.LP
+.I XkbResizeKeySyms
+reserves the space needed for
+.I needed
+keysyms and returns a pointer to the beginning of the new array that holds the
+keysyms. It adjusts the
+.I offset
+field of the
+.I key_sym_map
+entry for the key if necessary and can also change the
+.I syms, num_syms,
+and
+.I size_syms
+fields of
+.I xkb->map
+if it is necessary to reallocate the
+.I syms
+array.
+.I XkbResizeKeySyms
+does not modify either the width or number of groups associated with the key.
+
+If
+.I needed
+is greater than the current number of keysyms for the key,
+.I XkbResizeKeySyms
+initializes all new keysyms in the array to NoSymbol.
+
+Because the number of symbols needed by a key is normally computed as width *
+number of groups, and
+.I XkbResizeKeySyms
+does not modify either the width or number of groups for the key, a discrepancy
+exists upon return from
+.I XkbResizeKeySyms
+between the space allocated for the keysyms and the number required. The unused
+entries in the list of symbols returned by
+.I XkbResizeKeySyms
+are not preserved across future calls to any of the map editing functions, so
+you must update the key symbol mapping (which updates the width and number of
+groups for the key) before calling another allocator function. A call to
+.I XkbChangeTypesOfKey
+will update the mapping.
+
+If any allocation errors occur while resizing the number of symbols bound to the
+key,
+.I XkbResizeKeySyms
+returns NULL.
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__)
+.SH NOTES
+.LP
+A change to the number of symbols bound to a key should be accompanied by a
+change in the number of actions bound to a key. Refer to XkbResizeKeyActions for
+more information on changing the number of actions bound to a key.
diff --git a/man/xkb/XkbResizeKeyType.man b/man/xkb/XkbResizeKeyType.man
new file mode 100644
index 00000000..5ce2a816
--- /dev/null
+++ b/man/xkb/XkbResizeKeyType.man
@@ -0,0 +1,155 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbResizeKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeKeyType \- Change the number of levels in a key type
+.SH SYNOPSIS
+.B Status XkbResizeKeyType
+(
+.I xkb,
+.I type_ndx,
+.I map_count,
+.I want_preserve,
+.I new_num_lvls
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ int \fItype_ndx\fP\^;
+.br
+ int \fImap_count\fP\^;
+.br
+ Bool \fIwant_preserve\fP\^;
+.br
+ int \fInew_num_lvls\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing client map to update
+.TP
+.I \- type_ndx
+index in xkb->map->types of type to change
+.TP
+.I \- map_count
+total # of map entries needed for the type
+.TP
+.I \- want_preserve
+True => list of preserved modifiers is necessary
+.TP
+.I \- new_num_lvls
+new max # of levels for type
+.SH DESCRIPTION
+.LP
+.I XkbResizeKeyType
+changes the type specified by
+.I xkb->map->types[type_ndx],
+and reallocates the symbols and actions bound to all keys that use the type, if
+necessary.
+.I XkbResizeKeyType
+updates only the local copy of the types in
+.I xkb;
+to update the server's copy for the physical device, use
+.I XkbSetMap
+or
+.I XkbChangeMap
+after calling
+.I XkbResizeKeyType.
+
+The
+.I map_count
+parameter specifies the total number of map entries needed for the type, and can
+be zero or greater. If
+.I map_count
+is zero,
+.I XkbResizeKeyType
+frees the existing
+.I map
+and
+.I preserve
+entries for the type if they exist and sets them to NULL.
+
+The
+.I want_preserve
+parameter specifies whether a
+.I preserve
+list for the key should be created. If
+.I want_preserve
+is True, the
+.I preserve
+list with
+.I map_count
+entries is allocated or reallocated if it already exists. Otherwise, if
+.I want_preserve
+is False, the
+.I preserve
+field is freed if necessary and set to NULL.
+
+The
+.I new_num_lvls
+parameter specifies the new maximum number of shift levels for the type and is
+used to calculate and resize the symbols and actions bound to all keys that use
+the type.
+
+If
+.I type_ndx
+does not specify a legal type,
+.I new_num_lvls
+is less than 1, or the
+.I map_count
+is less than zero,
+.I XkbResizeKeyType
+returns BadValue. If
+.I XkbResizeKeyType
+encounters any problems with allocation, it returns BadAlloc. Otherwise, it
+returns Success.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbResizeKeyType
+function returns Success if
+.I type_ndx
+specifies a legal type,
+.I new_num_lvls
+is greater than zero and
+.I map_count
+is positive.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeMap (__libmansuffix__),
+.BR XkbSetMap (__libmansuffix__)
diff --git a/man/xkb/XkbSAActionSetCtrls.man b/man/xkb/XkbSAActionSetCtrls.man
new file mode 100644
index 00000000..96636bd3
--- /dev/null
+++ b/man/xkb/XkbSAActionSetCtrls.man
@@ -0,0 +1,162 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSAActionSetCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAActionSetCtrls \- Sets the
+.I ctrls0
+through
+I. ctrls3
+fields of
+.I act
+from
+.I ctrls
+.SH SYNOPSIS
+.B void XkbSAActionSetCtrls macro
+(
+.I act,
+.I ctrls
+)
+.br
+ XkbCtrlsAction \fIact\fP\^;
+.br
+ unsigned int \fIctrls\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set ctrls0-ctrls3
+.TP
+.I \- ctrls
+value to set in ctrls0-ctrls3
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbCtrlsAction structure change the state of the
+boolean controls.
+
+The
+.I type
+field can have any one of the values shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Controls Action Types
+_
+Type Effect
+_
+XkbSA_SetControls T{
+A key press enables any boolean controls specified in the ctrls fields that were
+not already enabled at
+the time of the key press.
+A key release disables any controls enabled by the key press.
+This action can cause XkbControlsNotify events.
+T}
+XkbSA_LockControls T{
+If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables
+any controls specified in
+the ctrls fields that were not already enabled at the time of the key press.
+.br
+If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release
+disables any controls
+specified in the ctrls fields that were not already disabled at the time of the
+key press.
+.br
+This action can cause XkbControlsNotify events.
+T}
+.TE
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 2.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 2 Control Action Flags
+_
+Flag Meaning
+_
+XkbSA_LockNoLock T{
+If set, and the action type is XkbSA_LockControls, the server only disables
+controls.
+T}
+XkbSA_LockNoUnlock T{
+If set, and the action type is XkbSA_LockControls, the server only enables
+controls.
+T}
+.TE
+
+The XkbSA_SetControls action implements a key that enables a boolean control
+when pressed and disables it
+when released. The XkbSA_LockControls action is used to implement a key that
+toggles the state of a
+boolean control each time it is pressed and released. The XkbSA_LockNoLock and
+XkbSA_LockNoUnlock flags
+allow modifying the toggling behavior to only unlock or only lock the boolean
+control.
+
+The
+.I ctrls0, ctrls1, ctrls2,
+and
+.I ctrls3
+fields represent the boolean controls in the
+.I enabled_ctrls
+field of the controls structure. Xkb macros, to convert between the two formats.
+
+.I XkbSAActionSetCtrls
+sets the
+.I ctrls0
+through
+.I ctrls3
+fields of
+.I act
+from
+.I ctrls.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbCtrlsAction {
+ unsigned char type; /* XkbSA_SetControls, XkbSA_LockControls */
+ unsigned char flags; /* with type, controls enabling and disabling
+of controls */
+ unsigned char ctrls3; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls2; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls1; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls0; /* ctrls0 through ctrls3 represent the boolean
+controls */
+ } XkbCtrlsAction;
+.fi
diff --git a/man/xkb/XkbSAGroup.man b/man/xkb/XkbSAGroup.man
new file mode 100644
index 00000000..3f298e98
--- /dev/null
+++ b/man/xkb/XkbSAGroup.man
@@ -0,0 +1,67 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSAGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAGroup \- Returns the group_XXX field of act converted to a signed int
+.SH SYNOPSIS
+.B int XkbSAGroup macro
+(
+.I act
+)
+.br
+ XkbAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract group
+.SH DESCRIPTION
+.LP
+.I XkbSAGroup
+returns the
+.I group_XXX
+field of
+.I act
+converted to a signed int.
+.SH STRUCTURE
+.LP
+Actions associated with the XkbGroupAction structure change the current group
+state when keys are
+pressed and released:
+.nf
+
+ typedef struct _XkbGroupAction {
+ unsigned char type; /* XkbSA_{Set|Latch|Lock}Group */
+ unsigned char flags; /* with type, controls the effect on groups
+*/
+ char group_XXX; /* represents a group index or delta */
+ } XkbGroupAction;
+ \ No newline at end of file
diff --git a/man/xkb/XkbSAPtrDfltValue.man b/man/xkb/XkbSAPtrDfltValue.man
new file mode 100644
index 00000000..77409a7d
--- /dev/null
+++ b/man/xkb/XkbSAPtrDfltValue.man
@@ -0,0 +1,117 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSAPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAPtrDfltValue \- Returns the valueXXX field of act converted to a signed int
+.SH SYNOPSIS
+.B int XkbSAPtrDfltValue macro
+(
+.I act
+)
+.br
+ XkbAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract group
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn
+attribute of the MouseKeys control.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction. Otherwise, this action changes
+the
+.I mk_dflt_btn
+attribute of the MouseKeys control.
+
+The
+.I type
+field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the values shown in Table 1
+(currently there is only one value defined).
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Default Flags
+_
+Flag Meaning
+_
+XkbSA_DfltBtnAbsolute T{
+If set, the value field represents an absolute pointer button. Otherwise, the
+value field represents the amount to be added to the current default button.
+T}
+.TE
+
+The
+.I affect
+field specifies what changes as a result of this action. The only valid value
+for the
+.I affect
+field is XkbSA_AffectDfltBtn.
+
+The
+.I valueXXX
+field is a signed character that represents the new button value for the
+.I mk_dflt_btn
+attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in
+.I flags, valueXXX
+specifies the button to be used; otherwise,
+.I valueXXX
+specifies the amount to be added to the current default button. In either case,
+illegal button choices are wrapped back around into range. Xkb provides macros,
+to convert between the integer and signed character values in XkbPtrDfltAction
+structures.
+
+.I XkbSAPtrDfltValue
+returns the
+.I valueXXX
+field of
+.I act
+converted to a signed int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrDfltAction {
+ unsigned char type; /* XkbSA_SetPtrDflt */
+ unsigned char flags; /* controls the pointer button number */
+ unsigned char affect; /* XkbSA_AffectDfltBtn */
+ char valueXXX; /* new default button member */
+ } XkbPtrDfltAction;
+
+.fi
diff --git a/man/xkb/XkbSARedirectSetVMods.man b/man/xkb/XkbSARedirectSetVMods.man
new file mode 100644
index 00000000..e987dc40
--- /dev/null
+++ b/man/xkb/XkbSARedirectSetVMods.man
@@ -0,0 +1,121 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSARedirectSetVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectSetVMods \- Sets the vmods0 and vmods1 of act from v
+.SH SYNOPSIS
+.B void XkbSARedirectSetVMods macro
+(
+.I act,
+.I v
+)
+.br
+ XkbRedirectKeyAction \fIact\fP\^;
+.br
+ unsigned int \fIv\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set vmods
+.TP
+.I \- v
+new value for virtual modifiers
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that
+caused the event, unless that device does not belong to the input extension KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+
+.I XkbSARedirectSetVModsMask
+sets the
+.I vmods0
+and
+.I vmods1
+of
+.I act
+from
+.I v.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /* XkbSA_RedirectKey */
+ unsigned char new_key; /* keycode to be put in event */
+ unsigned char mods_mask; /* mask of real mods to be reset */
+ unsigned char mods; /* mask of real mods to take values from */
+ unsigned char vmods_mask0; /* first half of mask of virtual mods to be reset */
+ unsigned char vmods_mask1; /* other half of mask of virtual mods to be reset */
+ unsigned char vmods0; /* first half of mask of virtual mods to take values from */
+ unsigned char vmods1; /* other half of mask of virtual mods to take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/man/xkb/XkbSARedirectSetVModsMask.man b/man/xkb/XkbSARedirectSetVModsMask.man
new file mode 100644
index 00000000..9f7af1a7
--- /dev/null
+++ b/man/xkb/XkbSARedirectSetVModsMask.man
@@ -0,0 +1,134 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSARedirectSetVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectSetVModsMask \- Sets the vmods_mask0 and vmods_mask1 fields of act
+from vm
+.SH SYNOPSIS
+.B void XkbSARedirectSetVModsMask macro
+(
+.I act,
+.I vm
+)
+.br
+ XkbRedirectKeyAction \fIact\fP\^;
+.br
+ unsigned int \fIvm\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set vmods
+.TP
+.I \- vm
+new value for virtual modifier mask
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
+KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the
+current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values
+for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the
+effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same
+device as the key that
+caused the event, unless that device does not belong to the input extension
+KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension
+categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are
+classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+.I XkbSARedirectSetVModsMask
+sets the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields of
+.I act
+from
+.I vm.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /* XkbSA_RedirectKey */
+ unsigned char new_key; /* keycode to be put in event */
+ unsigned char mods_mask; /* mask of real mods to be reset */
+ unsigned char mods; /* mask of real mods to take values from */
+ unsigned char vmods_mask0; /* first half of mask of virtual mods to be
+reset */
+ unsigned char vmods_mask1; /* other half of mask of virtual mods to be
+reset */
+ unsigned char vmods0; /* first half of mask of virtual mods to
+take values from */
+ unsigned char vmods1; /* other half of mask of virtual mods to
+take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/man/xkb/XkbSARedirectVMods.man b/man/xkb/XkbSARedirectVMods.man
new file mode 100644
index 00000000..6f6c329a
--- /dev/null
+++ b/man/xkb/XkbSARedirectVMods.man
@@ -0,0 +1,126 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSARedirectVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectVMods \- Returns the vmods0 and vmods1 fields of act converted to
+an unsigned int
+.SH SYNOPSIS
+.B unsigned int XkbSARedirectVMods macro
+(
+.I act
+)
+.br
+ XkbRedirectKeyAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract vmods
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
+KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the
+current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values
+for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the
+effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same
+device as the key that
+caused the event, unless that device does not belong to the input extension
+KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension
+categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are
+classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+.I XkbSARedirectVModsMask
+returns the
+.I vmods0
+and
+.I vmods1
+fields of
+.I act
+converted to an unsigned int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /* XkbSA_RedirectKey */
+ unsigned char new_key; /* keycode to be put in event */
+ unsigned char mods_mask; /* mask of real mods to be reset */
+ unsigned char mods; /* mask of real mods to take values from */
+ unsigned char vmods_mask0; /* first half of mask of virtual mods to be
+reset */
+ unsigned char vmods_mask1; /* other half of mask of virtual mods to be
+reset */
+ unsigned char vmods0; /* first half of mask of virtual mods to
+take values from */
+ unsigned char vmods1; /* other half of mask of virtual mods to
+take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/man/xkb/XkbSARedirectVModsMask.man b/man/xkb/XkbSARedirectVModsMask.man
new file mode 100644
index 00000000..d4d0ad80
--- /dev/null
+++ b/man/xkb/XkbSARedirectVModsMask.man
@@ -0,0 +1,127 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSARedirectVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectVModsMask \- Returns the vmods_mask0 and vmods_mask1 fields of act
+converted to an unsigned int
+.SH SYNOPSIS
+.B unsigned int XkbSARedirectVModsMask macro
+(
+.I act
+)
+.br
+ XkbRedirectKeyAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract vmods
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
+KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the
+current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values
+for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the
+effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same
+device as the key that
+caused the event, unless that device does not belong to the input extension
+KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension
+categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are
+classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+.I XkbSARedirectVModsMask
+returns the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields of
+.I act
+converted to an unsigned int.
+.bp
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /* XkbSA_RedirectKey */
+ unsigned char new_key; /* keycode to be put in event */
+ unsigned char mods_mask; /* mask of real mods to be reset */
+ unsigned char mods; /* mask of real mods to take values from */
+ unsigned char vmods_mask0; /* first half of mask of virtual mods to be
+reset */
+ unsigned char vmods_mask1; /* other half of mask of virtual mods to be
+reset */
+ unsigned char vmods0; /* first half of mask of virtual mods to
+take values from */
+ unsigned char vmods1; /* other half of mask of virtual mods to
+take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/man/xkb/XkbSAScreen.man b/man/xkb/XkbSAScreen.man
new file mode 100644
index 00000000..1609bb16
--- /dev/null
+++ b/man/xkb/XkbSAScreen.man
@@ -0,0 +1,112 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSAScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAScreen \- Returns the screenXXX field of act converted to a signed int
+.SH SYNOPSIS
+.B int XkbSAScreen
+(
+.I act
+)
+.br
+ XkbSwitchScreenAction \fIact\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract screen
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbSwitchScreen action structure change the active
+screen on a multiscreen display.
+
+The
+.I type
+field of the XkbSwitchScreenAction structure should always be
+XkbSA_SwitchScreen.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Switch Screen Action Flags
+_
+Flag Meaning
+_
+XkbSA_SwitchAbsolute T{
+If set, the screenXXX field represents the index of the new screen. Otherwise,
+it represents an offset from the current screen to the new screen.
+T}
+XkbSA_SwitchApplication T{
+If not set, the action should switch to another screen on the same server.
+Otherwise, it should switch to another X server or application that shares the
+same physical display.
+T}
+.TE
+
+The
+.I screenXXX
+field is a signed character value that represents either the relative or
+absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in
+the
+.I flags
+field. Xkb provides the following macros to convert between the integer and
+signed character value for screen numbers in XkbSwitchScreenAction structures.
+
+.I XkbSAScreen
+macro returns the
+.I screenXXX
+field of
+.I act
+converted to a signed int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbSwitchScreenAction {
+ unsigned char type; /* XkbSA_SwitchScreen */
+ unsigned char flags; /* controls screen switching */
+ char screenXXX; /* screen number or delta */
+ } XkbSwitchScreenAction;
+
+.fi
+
+.SH NOTES
+.LP
+The XkbSwitchScreen action is optional. Servers are free to ignore the action or
+any of its
+flags if they do not support the requested behavior. If the action is ignored,
+it behaves like XkbSA_NoAction. Otherwise, key press and key release events do
+not generate an event.
diff --git a/man/xkb/XkbSASetGroup.man b/man/xkb/XkbSASetGroup.man
new file mode 100644
index 00000000..adf6de46
--- /dev/null
+++ b/man/xkb/XkbSASetGroup.man
@@ -0,0 +1,72 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSASetGroup 3Xkb "Release 6.1" "X Version 11" "XKBLIB FUNCTION"
+.SH NAME
+XkbSASetGroup \- Sets the group_XXX field of act from the group index grp
+.SH SYNTAX
+.B void XkbSASetGroup macro
+(
+.I act,
+.I grp
+)
+.br
+ XkbAction \fIact\fP\^;
+.br
+ int \fIgrp\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to set group
+.TP
+.I \- grp
+group index to set in group_XXX
+.SH DESCRIPTION
+.LP
+.I XkbSASetGroup
+sets the
+.I group_XXX
+field of
+.I act
+from the group index
+.I grp.
+.SH STRUCTURE
+.LP
+Actions associated with the XkbGroupAction structure change the current group state when keys are
+pressed and released:
+.nf
+
+ typedef struct _XkbGroupAction {
+ unsigned char type; /* XkbSA_{Set|Latch|Lock}Group */
+ unsigned char flags; /* with type, controls the effect on groups */
+ char group_XXX; /* represents a group index or delta */
+ } XkbGroupAction;
+ \ No newline at end of file
diff --git a/man/xkb/XkbSASetPtrDfltValue.man b/man/xkb/XkbSASetPtrDfltValue.man
new file mode 100644
index 00000000..ecaebdc5
--- /dev/null
+++ b/man/xkb/XkbSASetPtrDfltValue.man
@@ -0,0 +1,116 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSASetPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSASetPtrDfltValue \- Sets the valueXXX field of act from val
+.SH SYNOPSIS
+.B void XkbSASetPtrDfltValue macro
+(
+.I act,
+.I val
+)
+.br
+ XkbAction \fIact\fP\^;
+.br
+ int \fIval\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set valueXXX
+.TP
+.I \- val
+value to set in valueXXX
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn
+attribute of the MouseKeys control.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction. Otherwise, this action changes
+the
+.I mk_dflt_btn
+attribute of the MouseKeys control.
+
+The
+.I type
+field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the values shown in Table 1
+(currently there is only one value defined).
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Default Flags
+_
+Flag Meaning
+_
+XkbSA_DfltBtnAbsolute T{
+If set, the value field represents an absolute pointer button. Otherwise, the
+value field represents the amount to be added to the current default button.
+T}
+.TE
+
+The
+.I affect
+field specifies what changes as a result of this action. The only valid value
+for the
+.I affect
+field is XkbSA_AffectDfltBtn.
+
+The
+.I valueXXX
+field is a signed character that represents the new button value for the
+.I mk_dflt_btn
+attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in
+.I flags, valueXXX
+specifies the button to be used; otherwise,
+.I valueXXX
+specifies the amount to be added to the current default button. In either case,
+illegal button choices are wrapped back around into range. Xkb provides macros,
+to convert between the integer and signed character values in XkbPtrDfltAction
+structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrDfltAction {
+ unsigned char type; /* XkbSA_SetPtrDflt */
+ unsigned char flags; /* controls the pointer button number */
+ unsigned char affect; /* XkbSA_AffectDfltBtn */
+ char valueXXX; /* new default button member */
+ } XkbPtrDfltAction;
+
+.fi
diff --git a/man/xkb/XkbSASetScreen.man b/man/xkb/XkbSASetScreen.man
new file mode 100644
index 00000000..60ef74d3
--- /dev/null
+++ b/man/xkb/XkbSASetScreen.man
@@ -0,0 +1,109 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSASetScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSASetScreen \- Sets the screenXXX field of act from s
+.SH SYNOPSIS
+.B void XkbSASetScreen macro
+(
+.I act,
+.I s
+)
+.br
+ XkbSwitchScreenAction \fIact\fP\^;
+.br
+ int \fIs\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set screenXXX
+.TP
+.I \- s
+value to set in screenXXX
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbSwitchScreen action structure change the active
+screen on a multiscreen display.
+
+The
+.I type
+field of the XkbSwitchScreenAction structure should always be
+XkbSA_SwitchScreen.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Switch Screen Action Flags
+_
+Flag Meaning
+_
+XkbSA_SwitchAbsolute T{
+If set, the screenXXX field represents the index of the new screen. Otherwise,
+it represents an offset from the current screen to the new screen.
+T}
+XkbSA_SwitchApplication T{
+If not set, the action should switch to another screen on the same server.
+Otherwise, it should switch to another X server or application that shares the
+same physical display.
+T}
+.TE
+
+The
+.I screenXXX
+field is a signed character value that represents either the relative or
+absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in
+the
+.I flags
+field. Xkb provides the following macros to convert between the integer and
+signed character value for screen numbers in XkbSwitchScreenAction structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbSwitchScreenAction {
+ unsigned char type; /* XkbSA_SwitchScreen */
+ unsigned char flags; /* controls screen switching */
+ char screenXXX; /* screen number or delta */
+ } XkbSwitchScreenAction;
+
+.fi
+.SH NOTES
+.LP
+This action is optional. Servers are free to ignore the action or any of its
+flags if they do not support the requested behavior. If the action is ignored,
+it behaves like XkbSA_NoAction. Otherwise, key press and key release events do
+not generate an event.
diff --git a/man/xkb/XkbSelectEventDetails.man b/man/xkb/XkbSelectEventDetails.man
new file mode 100644
index 00000000..85f8cf70
--- /dev/null
+++ b/man/xkb/XkbSelectEventDetails.man
@@ -0,0 +1,163 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSelectEventDetails __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSelectEventDetails \- Selects or deselects for a specific Xkb event and
+optionally places conditions on when events of that type are reported to your
+client
+.SH SYNOPSIS
+.B Bool XkbSelectEventDetails
+(
+.I display,
+.I device_spec,
+.I event_type,
+.I bits_to_change,
+.I values_for_bits
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIevent_type\fP\^;
+.br
+ unsigned long int \fIbits_to_change\fP\^;
+.br
+ unsigned long int \fIvalues_for_bits\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I event_type
+Xkb event type of interest
+.TP
+.I bits_to_change
+determines events to be selected / deselected
+.TP
+.I values_for_bits
+1=>select, 0->deselect; for events in bits_to_change
+.SH DESCRIPTION
+.LP
+Xkb events are selected using an event mask, much the same as normal core X
+events are selected. However, unlike selecting core X events, where you must
+specify the selection status (on or off) for all possible event types whenever
+you wish to change the selection criteria for any one event, Xkb allows you to
+restrict the specification to only the event types you wish to change. This
+means that you do not need to remember the event selection values for all
+possible types each time you want to change one of them.
+
+Many Xkb event types are generated under several different circumstances. When
+selecting to receive an Xkb event, you may specify either that you want it
+delivered under all circumstances, or that you want it delivered only for a
+subset of the possible circumstances.
+
+You can also deselect an event type that was previously selected for, using the
+same granularity.
+
+Xkb provides two functions to select and deselect delivery of Xkb events.
+.I XkbSelectEvents
+allows you to select or deselect delivery of more than one Xkb event type at
+once. Events selected using
+.I XkbSelectEvents
+are delivered to your program under all circumstances that generate the events.
+To restrict delivery of an event to a subset of the conditions under which it
+occurs, use
+.I XkbSelectEventDetails. XkbSelectEventDetails
+only allows you to change the selection conditions for a single event at a time,
+but it provides a means of fine-tuning the conditions under which the event is
+delivered.
+
+To select or deselect for a specific Xkb event and optionally place conditions
+on when events of that type are reported to your client, use
+.I XkbSelectEventDetails.
+This allows you to exercise a finer granularity of
+control over delivery of Xkb events with
+.I XkbSelectEvents.
+
+While
+.I XkbSelectEvents
+allows multiple events to be selected,
+.I XkbSelectEventDetails
+changes the selection criteria for a single type of Xkb
+event. The interpretation of the
+.I bits_to_change
+and
+.I values_for_bits
+masks depends on the event type in question.
+
+.I XkbSelectEventDetails
+changes the Xkb event selection mask for the keyboard
+specified by
+.I device_spec
+and the Xkb event specified by
+.I event_type.
+To turn on event selection for an event detail, set the bit for the
+detail in the
+.I bits_to_change
+parameter and set the corresponding bit in the
+.I values_for_bits
+parameter. To turn off event detail selection for a detail, set
+the bit for the detail in the
+.I bits_to_change
+parameter and do not set the corresponding bit in the
+.I values_for_bits
+parameter.
+
+If an invalid event type is specified, a BadValue protocol error results. If a
+bit is not set in the
+.I bits_to_change
+parameter, but the corresponding bit is set in the
+.I values_for_bits
+parameter, a BadMatch protocol error results. If an undefined
+bit is set in either the
+.I bits_to_change
+or the
+.I values_for_bits
+parameter, a BadValue protocol error results.
+
+For each type of Xkb event, the legal event details that you can specify in the
+.I XkbSelectEventDetails
+request are listed in the chapters that describe each event in detail.
+.SH DIAGNOSTICS
+.TP 15
+.SM BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.SM BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbSelectEvents (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
diff --git a/man/xkb/XkbSelectEvents.man b/man/xkb/XkbSelectEvents.man
new file mode 100644
index 00000000..cb302c7d
--- /dev/null
+++ b/man/xkb/XkbSelectEvents.man
@@ -0,0 +1,186 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSelectEvents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSelectEvents \- Selects and / or deselects for delivery of one or more Xkb
+events and has them delivered under all conditions
+.SH SYNOPSIS
+.B Bool XkbSelectEvents
+(
+.I display,
+.I device_spec,
+.I bits_to_change,
+.I values_for_bits
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned long int \fIbits_to_change\fP\^;
+.br
+ unsigned long int \fIvalues_for_bits\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I bits_to_change
+determines events to be selected / deselected
+.TP
+.I values_for_bits
+1=>select, 0->deselect; for events in bits_to_change
+.SH DESCRIPTION
+.LP
+Xkb events are selected using an event mask, much the same as normal core X
+events are selected. However, unlike selecting core X events, where you must
+specify the selection status (on or off) for all possible event types whenever
+you wish to change the selection criteria for any one event, Xkb allows you to
+restrict the specification to only the event types you wish to change. This
+means that you do not need to remember the event selection values for all
+possible types each time you want to change one of them.
+
+Many Xkb event types are generated under several different circumstances. When
+selecting to receive an Xkb event, you may specify either that you want it
+delivered under all circumstances, or that you want it delivered only for a
+subset of the possible circumstances.
+
+You can also deselect an event type that was previously selected for, using the
+same granularity.
+
+Xkb provides two functions to select and deselect delivery of Xkb events.
+.I XkbSelectEvents
+allows you to select or deselect delivery of more than one Xkb
+event type at once. Events selected using
+.I XkbSelectEvents
+are delivered to your program under all circumstances that generate the events.
+To restrict delivery of an event to a subset of the conditions under which it
+occurs, use
+.I XkbSelectEventDetails. XkbSelectEventDetails
+only allows you to change the selection conditions for a single event at a time,
+but it provides a means of fine-tuning the conditions under which the event is
+delivered.
+
+This request changes the Xkb event selection mask for the keyboard specified by
+.I device_spec.
+
+Each Xkb event that can be selected is represented by a bit in the
+.I bits_to_change
+and
+.I values_for_bits
+masks. Only the event selection bits specified by the
+.I bits_to_change
+parameter are affected; any unspecified bits are left unchanged. To turn on
+event selection for an event, set the bit for the event in the
+.I bits_to_change
+parameter and set the corresponding bit in the
+.I values_for_bits
+parameter. To turn off event selection for an event, set the bit for the event
+in the
+.I bits_to_change
+parameter and do not set the corresponding bit in the
+.I values_for_bits
+parameter. The valid values for both of these parameters are an inclusive
+bitwise OR of the masks shown in Table 1. There is no interface to return your
+client's current event selection mask. Clients cannot set other clients' event
+selection masks.
+
+The X server reports the events defined by Xkb to your client application only
+if you have requested them via a call to
+.I XkbSelectEvents
+or
+.I XkbSelectEventDetails.
+Specify the event types in which you are interested in a mask.
+
+Table 1 lists the event mask constants that can be specified with the
+.I XkbSelectEvents
+request and the circumstances in which the mask should be specified.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 XkbSelectEvents Mask Constants
+_
+Event Mask Value Notification Wanted
+_
+XkbNewKeyboardNotifyMask (1L<<0) Keyboard geometry change
+XkbMapNotifyMask (1L<<1) Keyboard mapping change
+XkbStateNotifyMask (1L<<2) Keyboard state change
+XkbControlsNotifyMask (1L<<3) Keyboard control change
+XkbIndicatorStateNotifyMask (1L<<4) Keyboard indicator state change
+XkbIndicatorMapNotifyMask (1L<<5) Keyboard indicator map change
+XkbNamesNotifyMask (1L<<6) Keyboard name change
+XkbCompatMapNotifyMask (1L<<7) Keyboard compat map change
+XkbBellNotifyMask (1L<<8) Bell
+XkbActionMessageMask (1L<<9) Action message
+XkbAccessXNotifyMask (1L<<10) AccessX features
+XkbExtensionDeviceNotifyMask (1L<<11) Extension device
+XkbAllEventsMask (0xFFF) All Xkb events
+.TE
+
+If a bit is not set in the
+.I bits_to_change
+parameter, but the corresponding bit is set in the
+.I values_for_bits
+parameter, a BadMatch protocol error results. If an undefined bit is set in
+either the
+.I bits_to_change
+or the
+.I values_for_bits
+parameter, a BadValue protocol error results.
+
+All event selection bits are initially zero for clients using the Xkb extension.
+Once you set some bits, they remain set for your client until you clear them via
+another call to
+.I XkbSelectEvents.
+
+.I XkbSelectEvents
+returns False if the Xkb extension has not been initilialized and True
+otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSelectEvents
+function returns True if the Xkb extension has been initilialized.
+.TP 15
+False
+The
+.I XkbSelectEvents
+function returns False if the Xkb extension has not been initilialized.
+.SH "SEE ALSO"
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
diff --git a/man/xkb/XkbSetAccessXTimeout.man b/man/xkb/XkbSetAccessXTimeout.man
new file mode 100644
index 00000000..7f498170
--- /dev/null
+++ b/man/xkb/XkbSetAccessXTimeout.man
@@ -0,0 +1,215 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetAccessXTimeout __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetAccessXTimeout \- Configures the AccessXTimeout options for a keyboard
+device
+.SH SYNOPSIS
+.B Bool XkbSetAccessXTimeout
+(
+.I display,
+.I device_spec,
+.I timeout,
+.I ctrls_mask,
+.I ctrls_values,
+.I opts_mask,
+.I opts_values
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned short \fI timeout \fP\^;
+.br
+ unsigned int \fI ctrls_mask \fP\^;
+.br
+ unsigned int \fI ctrls_values \fP\^;
+.br
+ unsigned short \fI opts_mask \fP\^;
+.br
+ unsigned short \fI opts_values \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device to configure, or XkbUseCoreKbd
+.TP
+.I \- timeout
+seconds idle until AccessXTimeout occurs
+.TP
+.I \- ctrls_mask
+boolean controls to modify
+.TP
+.I \- ctrls_values
+new bits for controls selected by ctrls_mask
+.TP
+.I \- opts_mask
+ax_options to change
+.TP
+.I \- opts_values
+new bits for ax_options selected by opts_mask
+.SH DESCRIPTION
+.LP
+In environments where computers are shared, features such as SlowKeys present a
+problem: if SlowKeys is on, the keyboard can appear to be unresponsive because
+keys are not accepted until they are held for a certain period of time. To help
+solve this problem, Xkb provides an AccessXTimeout control to automatically
+change the enabled/disabled state of any boolean controls and to change the
+value of the AccessXKeys and AccessXFeedback control attributes if the keyboard
+is idle for a specified period of time.
+
+When a timeout as specified by AccessXTimeout occurs and a control is
+consequently modified, Xkb generates an XkbControlsNotify event. For more
+information on XkbControlsNotify events.
+
+.I timeout
+specifies the number of seconds the keyboard must be idle before the controls
+are modified.
+.I ctrls_mask
+specifies what controls are to be enabled or disabled, and
+.I ctrls_values
+specifies whether those controls are to be enabled or disabled. The bit values
+correspond to those for enabling and disabling boolean controls using
+.I XkbChangeEnabledControls.
+ The
+.I opts_mask
+field specifies which attributes of the AccessXKeys and AccessXFeedback controls
+are to be changed, and
+.I opts_values
+specifies the new values for those options. The bit values correspond to those
+for the
+.I ax_options
+field of an XkbDescRec.
+
+.I XkbSetAccessXTimeout
+sends a request to configure the AccessXTimeout control to the server. It does
+not wait for a reply, and normally returns True. If a compatible version of the
+Xkb extension is not available in the server,
+.I XkbSetAccessXTimeout
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetAccessXTimeout
+function returns True when a compatible version of the Xkb extension is available in the server.
+.TP 15
+False
+The
+.I XkbSetAccessXTimeout
+function returns False when a compatible version of the Xkb extension is not available in the server.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function calls to
+indicate that the structure should be manipulated in some manner, such as allocating it
+or freeing it. These masks and their relationships to the fields in the XkbDescRec are
+shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The structure for the XkbControlsNotify event is defined as follows:
+.nf
+
+ typedef struct {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbCompatMapNotify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed_ctrls; /* bits indicating which controls data have changed*/
+ unsigned int enabled_ctrls; /* controls currently enabled in server */
+ unsigned int enabled_ctrl_changes; /* bits indicating enabled/disabled controls */
+ int num_groups; /* current number of keyboard groups */
+ KeyCode keycode; /* != 0 => keycode of key causing change */
+ char event_type; /* Type of event causing change */
+ char req_major; /* major event code of event causing change */
+ char req_minor; /* minor event code of event causing change */
+ } XkbControlsNotifyEvent;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeEnabledControls (__libmansuffix__)
diff --git a/man/xkb/XkbSetAutoRepeatRate.man b/man/xkb/XkbSetAutoRepeatRate.man
new file mode 100644
index 00000000..1334c059
--- /dev/null
+++ b/man/xkb/XkbSetAutoRepeatRate.man
@@ -0,0 +1,114 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetAutoRepeatRate \- Sets the attributes of the RepeatKeys control for a
+keyboard device
+.SH SYNOPSIS
+.B Bool XkbSetAutoRepeatRate
+(
+.I display,
+.I device_spec,
+.I timeout,
+.I interval
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ unsigned int \fI timeout \fP\^;
+.br
+ unsigned int \fI interval \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device to configure, or XkbUseCoreKbd
+.TP
+.I \- timeout
+initial delay, ms
+.TP
+.I \- interval
+delay between repeats, ms
+.SH DESCRIPTION
+.LP
+The core protocol allows only control over whether or not the entire keyboard or
+individual keys should auto-repeat when held down. RepeatKeys is a boolean
+control that extends this capability by adding control over the delay until a
+key begins to repeat and the rate at which it repeats. RepeatKeys is coupled
+with the core auto-repeat control: when RepeatKeys is enabled or disabled, the
+core auto-repeat is enabled or disabled and vice versa.
+
+Auto-repeating keys are controlled by two attributes. The first,
+.I timeout,
+is the delay after the initial press of an auto-repeating key and the first
+generated repeat event. The second,
+.I interval,
+is the delay between all subsequent generated repeat events. As with all boolean
+controls, configuring the attributes that determine how the control operates
+does not automatically enable the control as a whole.
+
+.I XkbSetAutoRepeatRate
+sends a request to the X server to configure the AutoRepeat control attributes
+to the values specified in
+.I timeout
+and
+.I interval.
+
+.I XkbSetAutoRepeatRate
+does not wait for a reply; it normally returns True. Specifying a zero value for
+either
+.I timeout
+or
+.I interval
+causes the server to generate a BadValue protocol error. If a compatible version
+of the Xkb extension is not available in the server,
+.I XkbSetAutoRepeatRate
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetAutoRepeatRate
+function returns True normally.
+.TP 15
+False
+The
+.I XkbSetAutoRepeatRate
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH DIAGNOSTICS
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbSetAutoResetControls.man b/man/xkb/XkbSetAutoResetControls.man
new file mode 100644
index 00000000..5c776517
--- /dev/null
+++ b/man/xkb/XkbSetAutoResetControls.man
@@ -0,0 +1,116 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetAutoResetControls \- Changes the current values of the AutoReset control
+attributes
+.SH SYNOPSIS
+.B Bool XkbSetAutoResetControls
+(
+.I dpy,
+.I changes,
+.I auto_ctrls,
+.I auto_values
+)
+.br
+ Display *\fI dpy \fP\^;
+.br
+ unsigned int \fI changes \fP\^;
+.br
+ unsigned int *\fI auto_ctrls \fP\^;
+.br
+ unsigned int *\fI auto_values \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- changes
+controls for which to change auto-reset values
+.TP
+.I \- auto_ctrls
+controls from changes that should auto reset
+.TP
+.I \- auto_values
+1 bit => auto-reset on
+.SH DESCRIPTION
+.LP
+.I XkbSetAutoResetControls
+changes the auto-reset status and associated auto-reset values for the controls
+selected by
+.I changes.
+For any control selected by
+.I changes,
+if the corresponding bit is set in
+.I auto_ctrls,
+the control is configured to auto-reset when the client exits. If the
+corresponding bit in
+.I auto_values
+is on, the control is turned on when the client exits; if zero, the control is
+turned off when the client exits. For any control selected by
+.I changes,
+if the corresponding bit is not set in
+.I auto_ctrls,
+the control is configured to not reset when the client exits.
+
+For example:
+
+.nf
+To leave the auto-reset controls for StickyKeys the way they are:
+
+ ok = XkbSetAutoResetControls(dpy, 0, 0, 0);
+
+To change the auto-reset controls so that StickyKeys are unaffected when the
+client exits:
+
+ ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, 0, 0);
+
+To change the auto-reset controls so that StickyKeys are turned off when the
+client exits:
+
+ ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, 0);
+
+To change the auto-reset controls so that StickyKeys are turned on when the
+client exits:
+
+ ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask,
+XkbStickyKeysMask);
+
+.fi
+.I XkbSetAutoResetControls
+backfills
+.I auto_ctrls
+and
+.I auto_values
+with the auto-reset controls for this particular client. Note that all of the
+bits are valid in the returned values, not just the ones selected in the
+.I changes
+mask.
diff --git a/man/xkb/XkbSetBounceKeysDelay.man b/man/xkb/XkbSetBounceKeysDelay.man
new file mode 100644
index 00000000..589e08e5
--- /dev/null
+++ b/man/xkb/XkbSetBounceKeysDelay.man
@@ -0,0 +1,221 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetBounceKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetBounceKeysDelay \- Sets the BounceKeys delay for a keyboard device
+.SH SYNOPSIS
+.B Bool XkbSetBounceKeysDelay
+(
+.I display,
+.I device_spec,
+.I delay
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int *\fIdelay\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- delay
+backfilled with bounce keys delay, ms
+.SH DESCRIPTION
+.LP
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 AccessXNotify Events
+_
+detail Reason
+_
+XkbAXN_SKPress T{
+A key was pressed when SlowKeys was enabled.
+T}
+XkbAXN_SKAccept T{
+A key was accepted (held longer than the SlowKeys delay).
+T}
+XkbAXN_SKRelease T{
+An accepted SlowKeys key was released.
+T}
+XkbAXN_SKReject T{
+A key was rejected (released before the SlowKeys delay expired).
+T}
+XkbAXN_BKAccept T{
+A key was accepted by BounceKeys.
+T}
+XkbAXN_BKReject T{
+A key was rejected (pressed before the BounceKeys delay expired).
+T}
+XkbAXN_AXKWarning T{
+AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
+T}
+.TE
+
+The
+.I keycode
+field reports the keycode of the key for which the event occurred. If the action
+is related to
+.I SlowKeys,
+the
+.I slowKeysDelay
+field contains the current SlowKeys acceptance delay. If the action is related
+to BounceKeys,
+the
+.I debounceDelay
+field contains the current BounceKeys debounce delay.
+
+Selecting for AccessX Events
+
+To receive XkbAccessXNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbAccesXNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbStateNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbAccessXNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 2.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 AccessXNotify Event Details
+_
+XkbAccessXNotify Event Details Value Circumstances
+_
+XkbAXN_SKPressMask (1<<0) T{
+Slow key press notification wanted
+T}
+XkbAXN_SKAcceptMask (1<<1) T{
+Slow key accept notification wanted
+T}
+XkbAXN_SKRejectMask (1<<2) T{
+Slow key reject notification wanted
+T}
+XkbAXN_SKReleaseMask (1<<3) T{
+Slow key release notification wanted
+T}
+XkbAXN_BKAcceptMask (1<<4) T{
+Bounce key accept notification wanted
+T}
+XkbAXN_BKRejectMask (1<<5) T{
+Bounce key reject notification wanted
+T}
+XkbAXN_AXKWarningMask (1<<6) T{
+AccessX warning notification wanted
+T}
+XkbAXN_AllEventsMask (0x7f) T{
+All AccessX features notifications wanted
+T}
+.TE
+
+Some users may accidentally "bounce" on a key when they release it. They press
+it once, then accidentally press it again after they release it. The BounceKeys
+control temporarily disables a key after it has been pressed, effectively
+"debouncing" the keyboard. The period of time the key is disabled after it is
+released is known as the
+.I BounceKeys delay.
+BounceKeys is a boolean control.
+
+When the BounceKeys control is active, the server reports acceptance or
+rejection of any key to interested clients by sending an appropriate
+AccessXNotify event.
+
+.I XkbSetBounceKeysDelay
+sends a request to configure the BounceKeys control to the server. It does not
+wait for a reply and normally returns True. Specifying a value of zero for the
+delay parameter causes
+.I XkbSetBounceKeysDelay
+to generate a BadValue protocol error. If a compatible version of the Xkb
+extension is not available in the server,
+.I XkbSetBounceKeysDelay
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetBounceKeysDelay
+function returns True when it sends a request to configure the BounceKeys
+control to the server.
+.TP 15
+False
+The
+.I XkbSetBounceKeysDelay
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH STRUCTURES
+.LP
+The structure for the XkbAccessXNotify event type is as follows:
+
+.nf
+typedef struct {
+ int type; /* Xkb extension base event code */
+ unsigned long serial; /* X server serial number for event */
+ Bool send_event; /* True => synthetically generated */
+ Display * display; /* server connection where event generated */
+ Time time; /* server time when event generated */
+ int xkb_type; /* XkbAccessXNotify */
+ int device; /* Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int detail; /* XkbAXN_* */
+ KeyCode keycode; /* key of event */
+ int slowKeysDelay; /* current SlowKeys delay */
+ int debounceDelay; /* current debounce delay */
+} XkbAccessXNotifyEvent;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbSetCompatMap.man b/man/xkb/XkbSetCompatMap.man
new file mode 100644
index 00000000..59be8c6b
--- /dev/null
+++ b/man/xkb/XkbSetCompatMap.man
@@ -0,0 +1,219 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetCompatMap \- Modify the server's compatibility map
+.SH SYNOPSIS
+.B Bool XkbSetCompatMap
+(
+.I display,
+.I which,
+.I xkb,
+.I update_actions
+)
+.br
+ Display * \fIdisplay\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ Bool \fIupdate_actions\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to server
+.TP
+.I \- which
+mask of compat map components to set
+.TP
+.I \- xkb
+source for compat map components
+.TP
+.I \- update_actions
+True => apply to server's keyboard map
+.SH DESCRIPTION
+.LP
+To modify the server's compatibility map, first modify a local copy of the Xkb
+compatibility map, then call
+.I XkbSetCompatMap.
+You may allocate a new compatibility map for this purpose using
+.I XkbAllocCompatMap.
+You may also use a compatibility map from another server, although you need to
+adjust the
+.I device_spec
+field in the XkbDescRec accordingly. Note that symbol interpretations in a
+compatibility map (
+.I sym_interpret,
+the vector of XkbSymInterpretRec structures) are also allocated using this same
+function.
+
+.I XkbSetCompatMap
+copies compatibility map information from the keyboard description in
+.I xkb
+to the server specified in
+.I display
+'s compatibility map for the device specified by the
+.I device_spec
+field of
+.I xkb.
+Unless you have specifically modified this field, it is the default keyboard
+device.
+.I which
+specifies the compatibility map components to be set, and is an inclusive OR of
+the bits shown in Table 1.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+After updating its compatibility map for the specified device, if
+.I update_actions
+is True, the server applies the new compatibility map to its entire keyboard for
+the device to generate a new set of key semantics, compatibility state, and a
+new core keyboard map. If
+.I update_actions
+is False, the new compatibility map is not used to generate any modifications to
+the current device semantics, state, or core keyboard map. One reason for not
+applying the compatibility map immediately would be if one server was being
+configured to match another on a piecemeal basis; the map should not be applied
+until everything is updated. To force an update at a later time, use
+.I XkbSetCompatMap
+specifying
+.I which
+as zero and
+.I update_actions
+as True.
+
+.I XkbSetCompatMap
+returns True if successful and False if unsuccessful. The server may report
+problems it encounters when processing the request subsequently via protocol
+errors.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetCompatMap
+function returns True if successful.
+.TP 15
+False
+The
+.I XkbSetCompatMap
+function returns False if unsuccessful.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The XkbSymInterpretRec structure specifies a symbol interpretation:
+.nf
+
+ typedef struct {
+ KeySym sym; /* keysym of interest or NULL */
+ unsigned char flags; /* XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /* specifies how mods is interpreted */
+ unsigned char mods; /* modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /* 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /* action to bind to symbol position on key */
+ } XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocCompatMap (__libmansuffix__)
diff --git a/man/xkb/XkbSetControls.man b/man/xkb/XkbSetControls.man
new file mode 100644
index 00000000..caf662b4
--- /dev/null
+++ b/man/xkb/XkbSetControls.man
@@ -0,0 +1,181 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetControls \- Copies changes to the X server based on a modified ctrls
+structure in a local copy of the keyboard description
+.SH SYNOPSIS
+.B Bool XkbSetControls
+(
+.I display,
+.I which,
+.I xkb
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned long \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask of controls requested
+.TP
+.I \- xkb
+keyboard description for controls information
+.SH DESCRIPTION
+.LP
+For each bit that is set in the
+.I which
+parameter,
+.I XkbSetControls
+sends the corresponding values from the
+.I xkb->ctrls
+field to the server. Valid values for
+.I which
+are any combination of the masks listed in Table 1 that have "ok" in the
+.I which
+column.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+If
+.I xkb->ctrls
+is NULL, the server does not support a compatible version of Xkb, or the Xkb
+extension has not been properly initialized,
+.I XkbSetControls
+returns False. Otherwise, it sends the request to the X server and returns True.
+
+Note that changes to attributes of controls in the XkbControlsRec structure are
+apparent only when the associated control is enabled, although the corresponding
+values are still updated in the X server. For example, the
+.I repeat_delay
+and
+.I repeat_interval
+fields are ignored unless the RepeatKeys control is enabled (that is, the X
+server's equivalent of
+.I xkb->ctrls
+has XkbRepeatKeyMask set in
+.I enabled_ctrls).
+It is permissible to modify the attributes of a control in one call to
+.I XkbSetControls
+and enable the control in a subsequent call. See
+.I XkbChangeEnabledControls
+for more information on enabling and disabling controls.
+
+Note that the
+.I enabled_ctrls
+field is itself a control - the EnabledControls control. As such, to set a
+specific configuration of enabled and disabled boolean controls, you must set
+.I enabled_ctrls
+to the appropriate bits to enable only the controls you want and disable all
+others, then specify the XkbControlsEnabledMask in a call to
+.I XkbSetControls.
+
+Because this is somewhat awkward if all you want to do is enable and disable
+controls, and not modify any of their attributes, a convenience function is also
+provided for this purpose,
+.I XkbChangeEnabledControls.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetControls
+function returns True when it sends the request to the X server.
+.TP 15
+False
+The
+.I XkbSetControls
+function returns False when
+.I xkb->ctrls
+is NULL, the server does not support a compatible version of Xkb, or the Xkb
+extension has not been properly initialized.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbFreeControls (__libmansuffix__)
+
diff --git a/man/xkb/XkbSetDebuggingFlags.man b/man/xkb/XkbSetDebuggingFlags.man
new file mode 100644
index 00000000..c877d320
--- /dev/null
+++ b/man/xkb/XkbSetDebuggingFlags.man
@@ -0,0 +1,193 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetDebuggingFlags __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetDebuggingFlags \- Change the values of any of the debug controls
+.SH SYNOPSIS
+.B Bool XkbSetDebuggingFlags
+(
+.I display,
+.I mask,
+.I flags,
+.I msg,
+.I ctrls_mask,
+.I ctrls,
+.I ret_flags,
+.I ret_ctrls
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fImask\fP\^;
+.br
+ unsigned int \fIflags\fP\^;
+.br
+ char *\fImsg\fP\^;
+.br
+ unsigned int \fIctrls_mask\fP\^;
+.br
+ unsigned int \fIctrls\fP\^;
+.br
+ unsigned int *\fIret_flags\fP\^;
+.br
+ unsigned int *\fIret_ctrls\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- mask
+mask selecting debug output flags to change
+.TP
+.I \- flags
+values for debug output flags selected by mask
+.TP
+.I \- msg
+message to print right now
+.TP
+.I \- ctrls_mask
+mask selecting debug controls to change
+.TP
+.I \- ctrls
+values for debug controls selected by ctrls_mask
+.TP
+.I \- ret_flags
+resulting state of all debug output flags
+.TP
+.I \- ret_ctrls
+resulting state of all debug controls
+.SH DESCRIPTION
+.LP
+The debugging aids are intended for use primarily by Xkb implementors and are
+optional in any implementation.
+
+There are two bitmasks that may be used to control debugging. One bitmask
+controls the output of debugging information, and the other controls behavior.
+Both bitmasks are initially all zeros.
+
+To change the values of any of the debug controls, use
+.I XkbSetDebuggingFlags.
+
+.I XkbSetDebuggingFlags
+modifies the debug output flags as specified by
+.I mask
+and
+flags,
+modifies the debug controls flags as specified by
+.I ctrls_mask
+and
+ctrls,
+prints the message
+.I msg,
+and backfills
+.I ret_flags
+and
+.I ret_ctrls
+with the resulting debug output and debug controls flags.
+
+When bits are set in the debug output masks,
+.I mask
+and
+.I flags,
+Xkb prints debug information corresponding to each bit at appropriate points
+during its processing. The device to which the output is written is
+implementation-dependent, but is normally the same device to which X server
+error messages are directed; thus the bits that can be set in
+.I mask
+and
+.I flags
+is implementation-specific. To turn on a debug output selection, set the bit for
+the output in the
+.I mask
+parameter and set the corresponding bit in the
+.I flags
+parameter. To turn off event selection for an event, set the bit for the output
+in the
+.I mask
+parameter and do not set the corresponding bit in the
+.I flags
+parameter.
+
+When bits are set in the debug controls masks,
+.I ctrls_mask
+and
+.I ctrls,
+Xkb modifies its behavior according to each controls bit.
+.I ctrls_mask
+and
+ctrls
+are related in the same way that
+.I mask
+and
+.I flags
+are. The valid controls bits are defined in Table 1.
+
+.TS
+c s s
+l l l.
+Table 1 Debug Control Masks
+_
+Debug Control Mask Value Meaning
+_
+XkbDF_DisableLocks (1 << 0) Disable actions that lock modifiers
+.TE
+
+.I XkbSetDebuggingFlags
+returns True if successful and False otherwise. The only protocol error it may
+generate is BadAlloc, if for some reason it is unable to allocate storage.
+
+.I XkbSetDebuggingFlags
+is intended for developer use and may be disabled in production X servers. If it
+is disabled,
+.I XkbSetDebuggingFlags
+has no effect and does not generate any protocol errors.
+
+The message in
+.I msg
+is written immediately. The device to which it is written is implementation
+dependent but is normally the same device where X server error messages are
+directed.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetDebuggingFlags
+function returns True when successful.
+.TP 15
+False
+The
+.I XkbSetDebuggingFlags
+function returns False when not successful.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/man/xkb/XkbSetDetectableAutorepeat.man b/man/xkb/XkbSetDetectableAutorepeat.man
new file mode 100644
index 00000000..9ba780bd
--- /dev/null
+++ b/man/xkb/XkbSetDetectableAutorepeat.man
@@ -0,0 +1,119 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetDetectableAutorepeat __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetDetectableAutorepeat \- Sets DetectableAutorepeat
+.SH SYNTAX
+.B Bool XkbSetDetectableAutorepeat
+(
+.I display,
+.I detectable,
+.I supported_rtrn
+)
+.br
+ Display *\fI display \fP\^;
+.br
+ Bool \fI detectable \fP\^;
+.br
+ Bool *\fI supported_rtrn \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- detectable
+True => set DetectableAutorepeat
+.TP
+.I \- supported_rtrn
+backfilled True if DetectableAutorepeat supported
+.SH DESCRIPTION
+.LP
+Auto-repeat is the generation of multiple key events by a keyboard when the user
+presses a key and holds it down. Keyboard hardware and device-dependent X server
+software often implement auto-repeat by generating multiple KeyPress events with
+no intervening KeyRelease event. The standard behavior of the X server is to
+generate a KeyRelease event for every KeyPress event. If the keyboard hardware
+and device-dependent software of the X server implement auto-repeat by
+generating multiple KeyPress events, the device-independent part of the X server
+by default synthetically generates a KeyRelease event after each KeyPress event.
+This provides predictable behavior for X clients, but does not allow those
+clients to detect the fact that a key is auto-repeating.
+
+Xkb allows clients to request
+.I detectable auto-repeat.
+If a client requests and the server supports DetectableAutorepeat, Xkb generates
+KeyRelease events only when the key is physically released. If
+DetectableAutorepeat is not supported or has not been requested, the server
+synthesizes a KeyRelease event for each repeating KeyPress event it generates.
+
+DetectableAutorepeat, unlike other controls, is not contained in the
+XkbControlsRec structure, nor can it be enabled or disabled via the
+EnabledControls control. Instead, query and set DetectableAutorepeat using
+.I XkbGetDetectableAutorepeat
+and
+.I XkbSetDetectableAutorepeat.
+
+DetectableAutorepeat is a condition that applies to all keyboard devices for a
+client's connection to a given X server; it cannot be selectively set for some
+devices and not for others. For this reason, none of the Xkb library functions
+involving DetectableAutorepeat involve a device specifier.
+
+This request affects all keyboard activity for the requesting client only; other
+clients still see the expected nondetectable auto-repeat behavior, unless they
+have requested otherwise.
+
+.I XkbSetDetectableAutorepeat
+sends a request to the server to set DetectableAutorepeat on for the current
+client if
+.I detectable
+is True, and off if
+.I detectable
+is False; it then waits for a reply. If
+.I supported_rtrn
+is not NULL,
+.I XkbSetDetectableAutorepeat
+backfills
+.I supported_rtrn
+with True if the server supports DetectableAutorepeat, and False if it does not.
+.I XkbSetDetectableAutorepeat
+returns the current state of DetectableAutorepeat for the requesting client:
+True if DetectableAutorepeat is set, and False otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetDetectableAutorepeat
+function returns True if DetectableAutorepeat is set.
+.TP 15
+False
+The
+.I XkbSetDetectableAutorepeat
+function returns False if DetectableAutorepeat is not set.
diff --git a/man/xkb/XkbSetDeviceButtonActions.man b/man/xkb/XkbSetDeviceButtonActions.man
new file mode 100644
index 00000000..ebfc5230
--- /dev/null
+++ b/man/xkb/XkbSetDeviceButtonActions.man
@@ -0,0 +1,112 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetDeviceButtonActions 3Xkb "Release 6.1" "X Version 11" "XKBLIB FUNCTION"
+.SH NAME
+XkbSetDeviceButtonActions \- Change only the button actions for an input extension device
+.SH SYNTAX
+.B Bool XkbSetDeviceButtonActions
+(
+.I dpy,
+.I device,
+.I first_button,
+.I num_buttons,
+.I actions
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ XkbDeviceInfoPtr \fIdevice\fP\^;
+.br
+ unsigned int \fIfirst_button\fP\^;
+.br
+ unsigned int \fInum_buttons\fP\^;
+.br
+ *** MISSING *** \fIactions\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device
+structure defining the device and modifications
+.TP
+.I \- first_button
+number of first button to update, 0 relative
+.TP
+.I \- num_buttons
+number of buttons to update
+.TP
+.I \- actions
+*** MISSING ***
+.SH DESCRIPTION
+.LP
+.I XkbSetDeviceButtonActions
+assigns actions to the buttons of the device specified in
+.I device_info->device_spec.
+Actions are assigned to
+.I num_buttons
+buttons beginning with
+.I first_button
+and are taken from the actions specified in
+.I device_info->btn_acts.
+
+If the server does not support assignment of Xkb actions to extension device buttons,
+.I XkbSetDeviceButtonActions
+has no effect and returns False. If the device has no buttons or if
+.I first_button
+or
+.I num_buttons
+specify buttons outside of the valid range as determined by
+.I device_info->num_btns,
+the function has no effect and returns False. Otherwise,
+.I XkbSetDeviceButtonActions
+sends a request to the server to change the actions for the specified buttons and returns
+True.
+
+If the actual request sent to the server involved illegal button numbers, a BadValue protocol
+error is generated. If an invalid device identifier is specified in
+.I device_info->device_spec,
+a BadKeyboard protocol error results. If the actual device specified in
+.I device_info->device_spec
+does not contain buttons and a request affecting buttons is made, a BadMatch protocol error is
+generated.
+.SH DIAGNOSTICS
+.TP 15
+.B BadKeyboard
+The device specified was not a valid core or input extension device
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type
+and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/man/xkb/XkbSetDeviceInfo.man b/man/xkb/XkbSetDeviceInfo.man
new file mode 100644
index 00000000..a9d028dd
--- /dev/null
+++ b/man/xkb/XkbSetDeviceInfo.man
@@ -0,0 +1,235 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetDeviceInfo \- Modify some or all of the characteristics of an X Input
+Extension device
+.SH SYNOPSIS
+.B Bool XkbSetDeviceInfo
+(
+.I dpy,
+.I which,
+.I device_info
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDeviceInfoPtr \fIdevice_info\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- which
+mask indicating characteristics to modify
+.TP
+.I \- device_info
+structure defining the device and modifications
+.SH DESCRIPTION
+.LP
+To change characteristics of an X Input Extension device in the server, first
+modify a local copy of the device structure and then use either
+.I XkbSetDeviceInfo,
+or, to save network traffic, use an XkbDeviceChangesRec structure and call
+.I XkbChangeDeviceInfo
+to download the changes to the server.
+
+.I XkbSetDeviceInfo
+sends a request to the server to modify the characteristics of the device
+specified in the
+.I device_info
+structure. The particular characteristics modified are identified by the bits
+set in
+.I which
+and take their values from the relevant fields in
+device_info (see Table 1). XkbSetDeviceInfo returns True if the request was
+successfully sent to the server. If the X server implementation does not allow
+interaction between the X input extension and the Xkb Extension, the function
+does nothing and returns False.
+.bp
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+
+The
+.I which
+parameter specifies which aspects of the device should be changed and is a
+bitmask composed of an inclusive OR or one or more of the following bits:
+XkbXI_ButtonActionsMask, XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask. If
+the features requested to be manipulated in
+.I which
+are valid for the device, but the server does not support assignment of one or
+more of them, that particular portion of the request is ignored.
+
+If the device specified in
+.I device_info->device_spec
+does not contain buttons and a request affecting buttons is made, or the device
+does not contain indicators and a request affecting indicators is made, a
+BadMatch protocol error results.
+
+If the XkbXI_ButtonActionsMask bit is set in the
+.I supported
+mask returned by
+.I XkbGetDeviceInfo,
+the Xkb extension allows applications to assign key actions to buttons on input
+extension devices other than the core keyboard device. If the
+XkbXI_ButtonActionsMask is set in
+.I which,
+the actions for all buttons specified in
+.I device_info
+are set to the XkbActions specified in
+.I device_info->btn_acts.
+If the number of buttons requested to be updated is not valid for the device,
+.I XkbSetDeviceInfo
+returns False and a BadValue protocol error results.
+
+If the XkbXI_IndicatorMaps and / or XkbXI_IndicatorNamesMask bit is set in the
+.I supported
+mask returned by
+.I XkbGetDeviceInfo,
+the Xkb extension allows applications to assign maps and / or names to the
+indicators of nonkeyboard extension devices. If supported, maps and / or names
+can be assigned to all extension device indicators, whether they are part of a
+keyboard feedback or part of an indicator feedback.
+
+If the XkbXI_IndicatorMapsMask and / or XkbXI_IndicatorNamesMask flag is set in
+.I which,
+the indicator maps and / or names for all
+.I device_info->num_leds
+indicator devices specified in
+.I device_info->leds
+are set to the maps and / or names specified in
+.I device_info->leds. device_info->leds->led_class
+and
+.I led_id
+specify the input extension class and device ID for each indicator device to
+modify; if they have invalid values, a BadValue protocol error results and
+.I XkbSetDeviceInfo
+returns False. If they have legal values but do not specify a keyboard or
+indicator class feedback for the device in question, a BadMatch error results.
+If any of the values in
+.I device_info->leds->names
+are not a valid Atom or None, a BadAtom protocol error results.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetDeviceInfo
+function returns True if the request was successfully sent to the server.
+.TP 15
+False
+The
+.I XkbSetDeviceInfo
+function returns False if the X server implementation does not allow interaction
+between the X input extension and the Xkb Extension.
+.SH STRUCTURES
+.LP
+Changes to an Xkb extension device may be tracked by listening to
+XkbDeviceExtensionNotify events and accumulating the changes in an
+XkbDeviceChangesRec structure. The changes noted in the structure may then be
+used in subsequent operations to update either a server configuration or a local
+copy of an Xkb extension device configuration. The changes structure is defined
+as follows:
+.nf
+
+typedef struct _XkbDeviceChanges {
+ unsigned int changed; /* bits indicating what has changed */
+ unsigned short first_btn; /* number of first button which changed, if any */
+ unsigned short num_btns; /* number of buttons that have changed */
+ XkbDeviceLedChangesRec leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeDeviceInfo (__libmansuffix__),
+.BR XkbGetDeviceInfo (__libmansuffix__)
diff --git a/man/xkb/XkbSetIgnoreLockMods.man b/man/xkb/XkbSetIgnoreLockMods.man
new file mode 100644
index 00000000..638bf0a5
--- /dev/null
+++ b/man/xkb/XkbSetIgnoreLockMods.man
@@ -0,0 +1,214 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetIgnoreLockMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetIgnoreLockMods \- Sets the modifiers that, if locked, are not to be
+reported in matching events to passive grabs
+.SH SYNOPSIS
+.B Bool XkbSetIgnoreLockMods
+(
+.I display,
+.I device_spec,
+.I affect_real,
+.I real_values,
+.I affect_virtual,
+.I virtual_values
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIaffect_real\fP\^;
+.br
+ unsigned int \fIreal_values\fP\^;
+.br
+ unsigned int \fIaffect_virtual\fP\^;
+.br
+ unsigned int \fIvirtual_values\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- affect_real
+mask of real modifiers affected by this call
+.TP
+.I \- real_values
+values for affected real modifiers (1=>set, 0=>unset)
+.TP
+.I \- affect_virtual
+mask of virtual modifiers affected by this call
+.TP
+.I \- virtual_values
+values for affected virtual modifiers (1=>set, 0=>unset)
+.SH DESCRIPTION
+.LP
+The core protocol does not provide a way to exclude specific modifiers from grab
+calculations, with the result that locking modifiers sometimes have
+unanticipated side effects.
+
+The IgnoreLockMods control specifies modifiers that should be excluded from grab
+calculations. These modifiers are also not reported in any core events except
+KeyPress and KeyRelease events that do not activate a passive grab and that do
+not occur while a grab is active.
+
+Manipulate the IgnoreLockMods control via the
+.I ignore_lock
+field in the XkbControlsRec structure, then use
+.I XkbSetControls
+and
+.I XkbGetControls
+to query and change this control. Alternatively, use
+.I XkbSetIgnoreLockMods.
+
+.I XkbSetIgnoreLockMods
+sends a request to the server to change the server's IgnoreLockMods control.
+.I affect_real
+and
+.I real_values
+are masks of real modifier bits indicating which real modifiers are to be added
+and removed from the server's IgnoreLockMods control. Modifiers selected by both
+.I affect_real
+and
+.I real_values
+are added to the server's IgnoreLockMods control; those selected by
+.I affect_real
+but not by
+.I real_values
+are removed from the server's IgnoreLockMods control. Valid values for
+.I affect_real
+and
+.I real_values
+consist of any combination of the eight core modifier bits: ShiftMask, LockMask,
+ControlMask, Mod1Mask - Mod5Mask.
+.I affect_virtual
+and
+.I virtual_values
+are masks of virtual modifier bits indicating which virtual modifiers are to be
+added and removed from the server's IgnoreLockMods control. Modifiers selected
+by both
+.I affect_virtual
+and
+.I virtual_values
+are added to the server's IgnoreLockMods control; those selected by
+.I affect_virtual
+but not by
+.I virtual_values
+are removed from the server's IgnoreLockMods control. See below for a discussion
+of virtual modifier masks to use in
+.I affect_virtual
+and
+.I virtual_values. XkbSetIgnoreLockMods
+does not wait for a reply from the server. It returns True if the request was
+sent, and False otherwise.
+
+Virtual modifiers are named by converting their string name to an X Atom and
+storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also
+the index used when accessing virtual modifier information in arrays: the name
+in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
+various functions have a parameter that is a mask representing virtual modifier
+choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
+virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component structures in the XkbDescRec represent the major Xkb components.
+.nf
+
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The display field points to an X display structure. The flags field is private
+to the library: modifying flags may yield unpredictable results. The device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The min_key_code
+and max_key_code fields specify the least and greatest keycode that can be
+returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to indicate that the structure should be manipulated in some manner, such
+as allocating it or freeing it. These masks and their relationships to the
+fields in the XkbDescRec are shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.SH "SEE ALSO"
+.BR XkbGetControls (__libmansuffix__),
+.BR XkbGetNames (__libmansuffix__),
+.BR XkbSetControls (__libmansuffix__),
+.BR XkbSetNames (__libmansuffix__)
diff --git a/man/xkb/XkbSetIndicatorMap.man b/man/xkb/XkbSetIndicatorMap.man
new file mode 100644
index 00000000..978d6d46
--- /dev/null
+++ b/man/xkb/XkbSetIndicatorMap.man
@@ -0,0 +1,194 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetIndicatorMap \- Downloads the changes to the server based on modifications
+to a local copy of the keyboard description which will update the maps for one
+or more indicators
+.SH SYNOPSIS
+.B Bool XkbSetIndicatorMap
+(
+.I dpy,
+.I which,
+.I desc
+)
+.br
+ Display *\fI dpy \fP\^;
+.br
+ unsigned int \fI which \fP\^;
+.br
+ XkbDescPtr \fI desc \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of indicators to change
+.TP
+.I \- desc
+keyboard description from which the maps are taken
+.SH DESCRIPTION
+.LP
+This section discusses the effects of explicitly changing indicators depending
+upon different settings in the indicator map. See Tables 1 and Table 2 for
+information on the effects of the indicator map fields when explicit changes are
+made.
+
+.TS
+c s s
+c s s
+l l l
+l l lw(3i).
+Table 1 XkbIndicatorMapRec which_groups and groups,
+Indicator Drives Keyboard
+_
+which_groups New State Effect on Keyboard Group State
+_
+XkbIM_UseNone On or Off No effect
+XkbIM_UseBase On or Off No effect
+XkbIM_UseLatched On T{
+The groups field is treated as a group mask. The keyboard group latch is changed
+to the lowest numbered
+group specified in groups; if groups is empty, the keyboard group latch is
+changed to zero.
+T}
+XkbIM_UseLatched Off T{
+The groups field is treated as a group mask. If the indicator is explicitly
+extinguished, keyboard group
+latch is changed to the lowest numbered group not specified in groups; if groups
+is zero, the keyboard
+group latch is set to the index of the highest legal keyboard group.
+T}
+XkbIM_UseLocked or
+.br
+XkbIM_UseEffective On T{
+If the groups mask is empty, group is not changed; otherwise, the locked
+keyboard group is changed to the
+lowest numbered group specified in groups.
+T}
+XkbIM_UseLocked or
+.br
+XkbIM_UseEffective Off T{
+Locked keyboard group is changed to the lowest numbered group that is not
+specified in the groups mask, or
+to Group1 if the groups mask contains all keyboard groups.
+T}
+
+.TE
+
+.TS
+c s s
+c s s
+l l l
+l l lw(3i).
+Table 2 XkbIidocatorMapRec which_mods and mods,
+Indicator Drives Keyboard
+_
+which_mods New State Effect on Keyboard Modifiers
+_
+XkbIM_UseNone or XkbIM_UseBase On or Off No Effect
+XkbIM_UseLatched On T{
+Any modifiers specified in the mask field of mods are added to the latched
+modifiers.
+T}
+XkbIM_UseLatched Off T{
+Any modifiers specified in the mask field of mods are removed from the latched
+modifiers.
+T}
+XkbIM_UseLocked, XkbIM_UseCompat, or XkbIM_UseEffective On T{
+Any modifiers specified in the mask field of mods are added to the locked
+modifiers.
+T}
+XkbIM_UseLocked Off T{
+Any modifiers specified in the mask field of mods are removed from the locked
+modifiers.
+T}
+XkbIM_UseCompat or XkbIM_UseEffective Off T{
+Any modifiers specified in the mask field of mods are removed from both the
+locked and latched modifiers.
+T}
+.TE
+
+If XkbIM_LEDDrivesKB is set and XkbIM_NoExplicit is not, and if you call a
+function that updates the server's image of the indicator map (such as
+.I XkbSetIndicatorMap
+or
+.I XkbSetNamedIndicator),
+ Xkb changes the keyboard state and controls to reflect the other fields of the
+indicator map. If you attempt to explicitly change the value of an indicator for
+which XkbIM_LEDDrivesKB is absent or for which XkbIM_NoExplicit is present,
+keyboard state or controls are unaffected.
+
+If neither XkbIM_NoAutomatic nor XkbIM_NoExplicit is set in an indicator map,
+Xkb honors any request to change the state of the indicator, but the new state
+might be immediately superseded by automatic changes to the indicator state if
+the keyboard state or controls change.
+
+The effects of changing an indicator that drives the keyboard are cumulative; it
+is possible for a single change to affect keyboard group, modifiers, and
+controls simultaneously.
+
+If you change an indicator for which both the XkbIM_LEDDrivesKB and
+XkbIM_NoAutomatic flags are specified, Xkb applies the keyboard changes
+specified in the other indicator map fields and changes the indicator to reflect
+the state that was explicitly requested. The indicator remains in the new state
+until it is explicitly changed again.
+
+If the XkbIM_NoAutomatic flag is not set and XkbIM_LEDDrivesKB is set, Xkb
+applies the changes specified in the other indicator map fields and sets the
+state of the indicator to the values specified by the indicator map. Note that
+it is possible in this case for the indicator to end up in a different state
+than the one that was explicitly requested. For example, Xkb does not extinguish
+an indicator with
+.I which_mods
+of XkbIM_UseBase and
+.I mods
+of Shift if, at the time Xkb processes the request to extinguish the indicator,
+one of the Shift keys is physically depressed.
+
+If you explicitly light an indicator for which XkbIM_LEDDrivesKB is set, Xkb
+enables all of the boolean controls specified in the
+.I ctrls
+field of its indicator map. Explicitly extinguishing such an indicator causes
+Xkb to disable all of the boolean controls specified in
+.I ctrls.
+
+For each bit set in the
+.I which
+parameter,
+.I XkbSetIndicatorMap
+sends the corresponding indicator map from the
+.I desc
+parameter to the server.
+.SH "SEE ALSO"
+.BR XkbSetNamedIndicator (__libmansuffix__) \ No newline at end of file
diff --git a/man/xkb/XkbSetMap.man b/man/xkb/XkbSetMap.man
new file mode 100644
index 00000000..98629918
--- /dev/null
+++ b/man/xkb/XkbSetMap.man
@@ -0,0 +1,397 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetMap \- Send a complete new set of values for entire components to the
+server.
+.SH SYNOPSIS
+.B Bool XkbSetMap
+(
+.I dpy,
+.I which,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- which
+mask selecting subcomponents to update
+.TP
+.I \- xkb
+description from which new values are taken
+.SH DESCRIPTION
+.LP
+There are two ways to make changes to map components: either change a local copy
+of the keyboard map and
+call
+.I XkbSetMap
+to send the modified map to the server, or, to reduce network traffic, use an
+XkbMapChangesRec structure
+and call
+.I XkbChangeMap.
+
+Use
+.I XkbSetMap
+to send a complete new set of values for entire components (for example, all
+symbols, all actions, and so
+on) to the server. The
+.I which
+parameter specifies the components to be sent to the server, and is a bitwise
+inclusive OR of the masks
+listed in Table 1. The
+.I xkb
+parameter is a pointer to an XkbDescRec structure and contains the information
+to be copied to the server.
+For each bit set in the
+.I which
+parameter,
+.I XkbSetMap
+takes the corresponding structure values from the
+.I xkb
+parameter and sends it to the server specified by
+.I dpy.
+
+If any components specified by
+.I which
+are not present in the
+.I xkb
+parameter,
+.I XkbSetMap
+returns False. Otherwise, it sends the update request to the server and returns
+True.
+.I XkbSetMap
+can generate BadAlloc, BadLength, and BadValue protocol errors.
+
+Key types, symbol maps, and actions are all interrelated; changes in one require
+changes in the others. Xkb
+provides functions to make it easier to edit these components and handle the
+interdependencies. Table 1
+lists these helper functions and provides a pointer to where they are defined.
+
+.TS
+c s s s s
+c s s s s
+l l l l l
+l l l l l
+lw(2i) l l lw(1i) lw(3i).
+Table 1 Xkb Mapping Component Masks
+and Convenience Functions
+_
+Mask Value Map Fields Convenience
+ Functions
+_
+T{
+XkbKeyTypesMask
+T} (1<<0) client T{
+types
+.br
+size_types
+.br
+num_types
+T} T{
+XkbGetKeyTypes
+.br
+XkbResizeKeyType
+.br
+XkbCopyKeyType
+.br
+XkbCopyKeyTypes
+T}
+T{
+XkbKeySymsMask
+T} (1<<1) client T{
+syms
+.br
+size_syms
+.br
+num_syms
+.br
+key_sym_map
+T} T{
+XkbGetKeySyms
+.br
+XkbResizeKeySyms
+.br
+XkbChangeTypesOfKey
+T}
+T{
+XkbModifierMapMask
+T} (1<<2) client modmap T{
+XkbGetKeyModifierMap
+T}
+T{
+XkbExplicitComponentsMask
+T} (1<<3) server T{
+explicit
+T} T{
+XkbGetKeyExplicitComponents
+T}
+T{
+XkbKeyActionsMask
+T} (1<<4) server T{
+key_acts
+.br
+acts
+.br
+num_acts
+.br
+size_acts
+T} T{
+XkbGetKeyActions
+.br
+XkbResizeKeyActions
+T}
+T{
+XkbKeyBehaviorsMask
+T} (1<<5) server T{
+behaviors
+T} T{
+XkbGetKeyBehaviors
+T}
+T{
+XkbVirtualModsMask
+T} (1<<6) server T{
+vmods
+T} T{
+XkbGetVirtualMods
+T}
+T{
+XkbVirtualModMapMask
+T} (1<<7) server T{
+vmodmap
+T} T{
+XkbGetVirtualModMap
+T}
+.TE
+
+The
+.I changed
+field identifies the map components that have changed in an XkbDescRec structure
+and may contain any of the
+bits in Table 1, which are also shown in Table 2. Every 1 bit in
+.I changed
+also identifies which other fields in the XkbMapChangesRec structure contain
+valid values, as indicated in
+Table 2. The
+.I min_key_code
+and
+.I max_key_code
+fields are for reference only; they are ignored on any requests sent to the
+server and are always updated
+by the server whenever it returns the data for an XkbMapChangesRec.
+.bp
+.TS
+c s s
+l l l
+l l l
+l l l
+l lw(2i) lw(3i).
+Table 2 XkbMapChangesRec Masks
+_
+ Valid
+Mask XkbMapChangesRec XkbDescRec Field Containing
+ Fields Changed Data
+_
+XkbKeyTypesMask first_type, map->type[first_type] ..
+ num_types map->type[first_type + num_types - 1]
+.sp
+XkbKeySymsMask first_key_sym, map->key_sym_map[first_key_sym] ..
+ num_key_syms map->key_sym_map[first_key_sym +
+ num_key_syms - 1]
+XkbModifierMapMask first_modmap_key, map->modmap[first_modmap_key] ..
+ num_modmap_keys map->modmap[first_modmap_key +
+ num_modmap_keys-1]
+XkbExplicitComponentsMask first_key_explicit,
+server->explicit[first_key_explicit] ..
+ num_key_explicit server->explicit[first_key_explicit +
+ num_key_explicit - 1]
+XkbKeyActionsMask first_key_act, server->key_acts[first_key_act] ..
+ num_key_acts server->key_acts[first_key_act +
+ num_key_acts - 1]
+XkbKeyBehaviorsMask first_key_behavior,
+server->behaviors[first_key_behavior] ..
+ num_key_behaviors server->behaviors[first_key_behavior +
+ num_key_behaviors - 1]
+XkbVirtualModsMask vmods server->vmods[*]
+XkbVirtualModMapMask first_vmodmap_key,
+server->vmodmap[first_vmodmap_key]
+ num_vmodmap_keys ..
+ server->vmodmap[first_vmodmap_key
+ + num_vmodmap_keys - 1]
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetMap
+function returns True all components specified by
+.I which
+are present in the
+.I xkb
+parameter.
+.TP 15
+False
+The
+.I XkbSetMap
+function returns False if any component specified by
+.I which
+is not present in the
+.I xkb
+parameter.
+.SH STRUCTURES
+.LP
+
+Use the XkbMapChangesRec structure to identify and track partial modifications
+to the mapping components
+and to reduce the amount of traffic between the server and clients.
+.nf
+
+typedef struct _XkbMapChanges {
+ unsigned short changed; /* identifies valid components in structure */
+ KeyCode min_key_code; /* lowest numbered keycode for device */
+ KeyCode max_key_code; /* highest numbered keycode for device */
+ unsigned char first_type; /* index of first key type modified */
+ unsigned char num_types; /* # types modified */
+ KeyCode first_key_sym; /* first key whose key_sym_map changed */
+ unsigned char num_key_syms; /* # key_sym_map entries changed */
+ KeyCode first_key_act; /* first key whose key_acts entry changed */
+ unsigned char num_key_acts; /* # key_acts entries changed */
+ KeyCode first_key_behavior; /* first key whose behaviors changed */
+ unsigned char num_key_behaviors; /* # behaviors entries changed */
+ KeyCode first_key_explicit; /* first key whose explicit entry changed */
+ unsigned char num_key_explicit; /* # explicit entries changed */
+ KeyCode first_modmap_key; /* first key whose modmap entry changed */
+ unsigned char num_modmap_keys; /* # modmap entries changed */
+ KeyCode first_vmodmap_key; /* first key whose vmodmap changed */
+ unsigned char num_vmodmap_keys; /* # vmodmap entries changed */
+ unsigned char pad1; /* reserved */
+ unsigned short vmods; /* mask indicating which vmods changed */
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+.fi
+
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 3.
+.bp
+.TS
+c s s
+l l l
+l l l.
+Table 3 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeMap (__libmansuffix__),
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbCopyKeyType (__libmansuffix__),
+.BR XkbCopyKeyTypes (__libmansuffix__),
+.BR XkbGetKeyActions (__libmansuffix__),
+.BR XkbGetKeyBehaviors (__libmansuffix__),
+.BR XkbGetKeyExplicitComponents (__libmansuffix__),
+.BR XkbGetKeyModifierMap (__libmansuffix__),
+.BR XkbGetKeySyms (__libmansuffix__),
+.BR XkbGetKeyTypes (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__),
+.BR XkbResizeKeyType (__libmansuffix__),
+.BR XkbGetVirtualModMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__)
diff --git a/man/xkb/XkbSetModActionVMods.man b/man/xkb/XkbSetModActionVMods.man
new file mode 100644
index 00000000..3805be60
--- /dev/null
+++ b/man/xkb/XkbSetModActionVMods.man
@@ -0,0 +1,69 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetModActionVMods \- Sets the vmods1 and vmods2 fields of act using the vmods
+format of an Xkb modifier description
+.SH SYNOPSIS
+.B void XkbSetModActionVMods macro
+(
+.I act,
+.I vmods
+)
+.br
+ XkbAction \fIact\fP\^;
+.br
+ unsigned short \fIvmods\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set vmods
+.TP
+.I \- vmods
+virtual mods to set
+.SH DESCRIPTION
+.LP
+.I XkbSetModActionVMods
+sets the
+.I vmods1
+and
+.I vmods2
+fields of
+.I act
+using the
+.I vmods
+format of an Xkb modifier description.
+.SH NOTES
+.LP
+Despite the fact that the first parameter of these two macros is of type
+XkbAction, these macros may be used only with Actions of type XkbModAction and
+XkbISOAction.
diff --git a/man/xkb/XkbSetNamedIndicator.man b/man/xkb/XkbSetNamedIndicator.man
new file mode 100644
index 00000000..d21cb164
--- /dev/null
+++ b/man/xkb/XkbSetNamedIndicator.man
@@ -0,0 +1,141 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetNamedIndicator \- Names an indicator if it is not already named; toggles
+the state of the indicator; sets the indicator to a specified state and sets the
+indicator map for the indicator
+.SH SYNOPSIS
+.B Bool XkbSetNamedIndicator
+(
+.I dpy,
+.I device_spec,
+.I name,
+.I change_state,
+.I state,
+.I create_new,
+.I map
+)
+.br
+ Display *\fI dpy \fP\^;
+.br
+ unsigned int \fI device_spec \fP\^;
+.br
+ Atom \fI name \fP\^;
+.br
+ Bool \fI change_state \fP\^;
+.br
+ Bool \fI state \fP\^;
+.br
+ Bool \fI create_new \fP\^;
+.br
+ XkbIndicatorMapPtr \fI map \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- name
+name of the indicator to change
+.TP
+.I \- change_state
+whether to change the indicator state or not
+.TP
+.I \- state
+desired new state for the indicator
+.TP
+.I \- create_new
+whether a new indicator with the specified name should be created when necessary
+.TP
+.I \- map
+new map for the indicator
+.SH DESCRIPTION
+.LP
+If a compatible version of the Xkb extension is not available in the server,
+.I XkbSetNamedIndicator
+returns False. Otherwise, it sends a request to the X server to change the
+indicator specified by
+.I name
+and returns True.
+
+If
+.I change_state
+is True, and the optional parameter,
+.I state,
+is not NULL,
+.I XkbSetNamedIndicator
+tells the server to change the state of the named indicator to the value
+specified by
+.I state.
+
+If an indicator with the name specified by
+.I name
+does not already exist, the
+.I create_new
+parameter tells the server whether it should create a new named indicator. If
+.I create_new
+is True, the server finds the first indicator that doesn't have a name and gives
+it the name specified by
+.I name.
+If the optional parameter,
+.I map, is not NULL,
+.I XkbSetNamedIndicator
+tells the server to change the indicator's map to the values specified in
+.I map.
+
+In addition, it can also generate XkbIndicatorStateNotify,
+XkbIndicatorMapNotify, and XkbNamesNotify events.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetNamedIndicator
+function returns True if a compatible version of the Xkb extension is available in the server.
+.TP 15
+False
+The
+.I XkbSetNamedIndicator
+function returns False if a compatible version of the Xkb extension is not available in the server.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.SH "SEE ALSO"
+.BR XkbIndicatorMapNotify (__libmansuffix__),
+.BR XkbIndicatorStateNotify (__libmansuffix__),
+.BR XkbNamesNotify (__libmansuffix__)
+
diff --git a/man/xkb/XkbSetNames.man b/man/xkb/XkbSetNames.man
new file mode 100644
index 00000000..7d962c73
--- /dev/null
+++ b/man/xkb/XkbSetNames.man
@@ -0,0 +1,226 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetNames \- Change the symbolic names in the server
+.SH SYNOPSIS
+.B Bool XkbSetNames
+(
+.I dpy,
+.I which,
+.I first_type,
+.I num_types ,
+.I xkb
+)
+.br
+ Display * \fIdpy\fP\^;
+.br
+ unsigned int \fIwhich\fP\^;
+.br
+ unsigned int \fIfirst_type\fP\^;
+.br
+ unsigned int \fInum_types\fP\^;
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of names or map components to be changed
+.TP
+.I \- first_type
+first type whose name is to be changed
+.TP
+.I \- num_types
+number of types for which names are to be changed
+.TP
+.I \- xkb
+keyboard description from which names are to be taken
+.SH DESCRIPTION
+.LP
+To change the symbolic names in the server, first modify a local copy of the
+keyboard description and then
+use either
+.I XkbSetNames,
+or, to save network traffic, use a XkbNameChangesRecstructure and call
+.I XkbChangeNames
+to download the changes to the server.
+.I XkbSetNames
+and
+.I XkbChangeNames
+can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation
+errors.
+
+Use
+.I XkbSetNames
+to change many names at the same time. For each bit set in
+.I which, XkbSetNames
+takes the corresponding value (or values in the case of arrays) from the
+keyboard description
+.I xkb
+and sends it to the server.
+
+The
+.I first_type
+and
+.I num_types
+arguments are used only if XkbKeyTypeNamesMask or XkbKTLevelNamesMask is set in
+.I which
+and specify a subset of the types for which the corresponding names are to be
+changed. If either or both of
+these mask bits are set but the specified types are illegal,
+.I XkbSetNames
+returns False and does not update any of the names specified in
+.I which.
+The specified types are illegal if
+.I xkb
+does not include a map component or if
+.I first_type
+and
+.I num_types
+specify types that are not defined in the keyboard description.
+.SH STRUCTURES
+.LP
+The XkbNameChangesRec allows applications to identify small modifications to the
+symbolic names and
+effectively reduces the amount of traffic sent to the server:
+.nf
+
+ typedef struct _XkbNameChanges {
+ unsigned int changed; /* name components that have changed */
+ unsigned char first_type; /* first key type with a new name */
+ unsigned char num_types; /* number of types with new names */
+ unsigned char first_lvl; /* first key type with new level names
+*/
+ unsigned char num_lvls; /* number of key types with new level
+names */
+ unsigned char num_aliases; /* if key aliases changed, total number
+of key aliases */
+ unsigned char num_rg; /* if radio groups changed, total
+number of radio groups */
+ unsigned char first_key; /* first key with a new name */
+ unsigned char num_keys; /* number of keys with new names */
+ unsigned short changed_vmods; /* mask of virtual modifiers for which
+names have changed */
+ unsigned long changed_indicators; /* mask of indicators for which names
+were changed */
+ unsigned char changed_groups; /* mask of groups for which names
+were changed */
+ } XkbNameChangesRec, *XkbNameChangesPtr
+
+.fi
+The
+.I changed
+field specifies the name components that have changed and is the bitwise
+inclusive OR of the valid names
+mask bits defined in Table 1. The rest of the fields in the structure specify
+the ranges that have changed
+for the various kinds of symbolic names, as shown in Table 2.
+
+Xkb provides several functions that work with symbolic names. Each of these
+functions uses a mask to
+specify individual fields of the structures described above. These masks and
+their relationships to the
+fields in a keyboard description are shown in Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+.TS
+c s s s
+l l l l.
+Table 2 XkbNameChanges Fields
+_
+Mask Fields Component Field
+_
+XkbKeyTypeNamesMask first_type, Xkb->map type[*].name
+ num_types
+XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*]
+ num_lvls
+XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*]
+XkbRGNamesMask num_rg Xkb->names radio_groups[*]
+XkbKeyNamesMask first_key, Xkb->names keys[*]
+ num_keys
+XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*]
+XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*]
+XkbGroupNamesMask changed_groups Xkb->names groups[*]
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbChangeNames (__libmansuffix__)
diff --git a/man/xkb/XkbSetPtrActionX.man b/man/xkb/XkbSetPtrActionX.man
new file mode 100644
index 00000000..73e57801
--- /dev/null
+++ b/man/xkb/XkbSetPtrActionX.man
@@ -0,0 +1,120 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetPtrActionX __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetPtrActionX \- Sets the high_XXX and low_XXX fields of act from the signed
+integer value x
+.SH SYNOPSIS
+.B void XkbSetPtrActionX macro
+(
+.I act,
+.I x
+)
+.br
+ XkbPtrAction \fIact\fP\^;
+.br
+ int \fIx\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set X
+.TP
+.I \- x
+new value to set
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrAction structure move the pointer when keys
+are pressed and released.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction.
+
+If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr
+instructs the server to generate core pointer MotionNotify events rather than
+the usual KeyPress event, and the corresponding KeyRelease event disables any
+mouse keys timers that were created as a result of handling the XkbSA_MovePtr
+action.
+
+The
+.I type
+field of the XkbPtrAction structure is always XkbSA_MovePtr.
+
+The
+.I flags
+field is a bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Action Types
+_
+Action Type Meaning
+_
+XkbSA_NoAcceleration T{
+If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a
+mouse keys timer for this key; every time the timer expires, the cursor moves.
+T}
+XkbSA_MoveAbsoluteX T{
+If set, the X portion of the structure specifies the new pointer X coordinate.
+Otherwise, the X portion is added to the current pointer X coordinate to
+determine the new pointer X coordinate.
+T}
+XkbSA_MoveAbsoluteY T{
+If set, the Y portion of the structure specifies the new pointer Y coordinate.
+Otherwise, the Y portion is added to the current pointer Y coordinate to
+determine the new pointer Y coordinate.
+T}
+.TE
+
+Each of the X and Y coordinantes of the XkbPtrAction structure is composed of
+two signed 16-bit values, that is, the X coordinate is composed of
+.I high_XXX
+and
+.I low_XXX,
+and similarly for the Y coordinate. Xkb provides the following macros, to
+convert between a signed integer and two signed 16-bit values in XkbPtrAction
+structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrAction {
+ unsigned char type; /* XkbSA_MovePtr */
+ unsigned char flags; /* determines type of pointer motion */
+ unsigned char high_XXX; /* x coordinate, high bits*/
+ unsigned char low_XXX; /* y coordinate, low bits */
+ unsigned char high_YYY; /* x coordinate, high bits */
+ unsigned char low_YYY; /* y coordinate, low bits */
+ } XkbPtrAction;
+
+.fi
diff --git a/man/xkb/XkbSetPtrActionY.man b/man/xkb/XkbSetPtrActionY.man
new file mode 100644
index 00000000..4a6ee449
--- /dev/null
+++ b/man/xkb/XkbSetPtrActionY.man
@@ -0,0 +1,120 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetPtrActionY __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetPtrActionY \- Sets the high_YYY and low_YYY fields of act from the signed
+integer value y
+.SH SYNOPSIS
+.B void XkbSetPtrActionY macro
+(
+.I act,
+.I y
+)
+.br
+ XkbPtrAction \fIact\fP\^;
+.br
+ int \fIy\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set Y
+.TP
+.I \- y
+new value to set
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrAction structure move the pointer when keys
+are pressed and released.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction.
+
+If the MouseKeys control is enabled, a server action of type XkbSA_MovePtr
+instructs the server to generate core pointer MotionNotify events rather than
+the usual KeyPress event, and the corresponding KeyRelease event disables any
+mouse keys timers that were created as a result of handling the XkbSA_MovePtr
+action.
+
+The
+.I type
+field of the XkbPtrAction structure is always XkbSA_MovePtr.
+
+The
+.I flags
+field is a bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Action Types
+_
+Action Type Meaning
+_
+XkbSA_NoAcceleration T{
+If not set, and the MouseKeysAccel control is enabled, the KeyPress initiates a
+mouse keys timer for this key; every time the timer expires, the cursor moves.
+T}
+XkbSA_MoveAbsoluteX T{
+If set, the X portion of the structure specifies the new pointer X coordinate.
+Otherwise, the X portion is added to the current pointer X coordinate to
+determine the new pointer X coordinate.
+T}
+XkbSA_MoveAbsoluteY T{
+If set, the Y portion of the structure specifies the new pointer Y coordinate.
+Otherwise, the Y portion is added to the current pointer Y coordinate to
+determine the new pointer Y coordinate.
+T}
+.TE
+
+Each of the X and Y coordinantes of the XkbPtrAction structure is composed of
+two signed 16-bit values, that is, the X coordinate is composed of
+.I high_XXX
+and
+.I low_XXX,
+and similarly for the Y coordinate. Xkb provides the following macros, to
+convert between a signed integer and two signed 16-bit values in XkbPtrAction
+structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrAction {
+ unsigned char type; /* XkbSA_MovePtr */
+ unsigned char flags; /* determines type of pointer motion */
+ unsigned char high_XXX; /* x coordinate, high bits*/
+ unsigned char low_XXX; /* y coordinate, low bits */
+ unsigned char high_YYY; /* x coordinate, high bits */
+ unsigned char low_YYY; /* y coordinate, low bits */
+ } XkbPtrAction;
+
+.fi
diff --git a/man/xkb/XkbSetServerInternalMods.man b/man/xkb/XkbSetServerInternalMods.man
new file mode 100644
index 00000000..2104c6de
--- /dev/null
+++ b/man/xkb/XkbSetServerInternalMods.man
@@ -0,0 +1,218 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetServerInternalMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetServerInternalMods \- Sets the modifiers that are consumed by the server
+before events are delivered to the client
+.SH SYNOPSIS
+.B Bool XkbSetServerInternalMods
+(
+.I display,
+.I device_spec,
+.I affect_real,
+.I real_values,
+.I affect_virtual,
+.I virtual_values
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIdevice_spec\fP\^;
+.br
+ unsigned int \fIaffect_real\fP\^;
+.br
+ unsigned int \fIreal_values\fP\^;
+.br
+ unsigned int \fIaffect_virtual\fP\^;
+.br
+ unsigned int \fIvirtual_values\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- affect_real
+mask of real modifiers affected by this call
+.TP
+.I \- real_values
+values for affected real modifiers (1=>set, 0=>unset)
+.TP
+.I \- affect_virtual
+mask of virtual modifiers affected by this call
+.TP
+.I \- virtual_values
+values for affected virtual modifiers (1=>set, 0=>unset)
+.SH DESCRIPTION
+.LP
+The core protocol does not provide any means to prevent a modifier from being
+reported in events sent to clients; Xkb, however makes this possible via the
+InternalMods control. It specifies modifiers that should be consumed by the
+server and not reported to clients. When a key is pressed and a modifier that
+has its bit set in the InternalMods control is reported to the server, the
+server uses the modifier when determining the actions to apply for the key. The
+server then clears the bit, so it is not actually reported to the client. In
+addition, modifiers specified in the InternalMods control are not used to
+determine grabs and are not used to calculate core protocol compatibility state.
+
+Manipulate the InternalMods control via the
+.I internal
+field in the XkbControlsRec structure, using
+.I XkbSetControls
+and
+.I XkbGetControls.
+Alternatively, use
+.I XkbSetServerInternalMods.
+
+.I XkbSetServerInternalMods
+sends a request to the server to change the internal modifiers consumed by the
+server.
+.I affect_real
+and
+.I real_values
+are masks of real modifier bits indicating which real modifiers are to be added
+and removed from the server's internal modifiers control. Modifiers selected by
+both
+.I affect_real
+and
+.I real_values
+are added to the server's internal modifiers control; those selected by
+.I affect_real
+but not by
+.I real_values
+are removed from the server's internal modifiers mask. Valid values for
+.I affect_real
+and
+.I real_values
+consist of any combination of the eight core modifier bits: ShiftMask, LockMask,
+ControlMask, Mod1Mask - Mod5Mask.
+.I affect_virtual
+and
+.I virtual_values
+are masks of virtual modifier bits indicating which virtual modifiers are to be
+added and removed from the server's internal modifiers control. Modifiers
+selected by both
+.I affect_virtual
+and
+.I virtual_values
+are added to the server's internal modifiers control; those selected by
+.I affect_virtual
+but not by
+.I virtual_values
+are removed from the server's internal modifiers control. See below for a
+discussion of virtual modifier masks to use in
+.I affect_virtual
+and
+.I virtual_values. XkbSetServerInternalMods
+does not wait for a reply from the server. It returns True if the request was
+sent and False otherwise.
+
+Virtual modifiers are named by converting their string name to an X Atom and
+storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also
+the index used when accessing virtual modifier information in arrays: the name
+in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
+various functions have a parameter that is a mask representing virtual modifier
+choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
+virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component structures in the XkbDescRec represent the major Xkb components
+outlined in Figure 1.1.
+.nf
+
+typedef struct {
+ struct _XDisplay * display; /* connection to X server */
+ unsigned short flags; /* private to Xkb, do not modify */
+ unsigned short device_spec; /* device of interest */
+ KeyCode min_key_code; /* minimum keycode for device */
+ KeyCode max_key_code; /* maximum keycode for device */
+ XkbControlsPtr ctrls; /* controls */
+ XkbServerMapPtr server; /* server keymap */
+ XkbClientMapPtr map; /* client keymap */
+ XkbIndicatorPtr indicators; /* indicator map */
+ XkbNamesPtr names; /* names for all components */
+ XkbCompatMapPtr compat; /* compatibility map */
+ XkbGeometryPtr geom; /* physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The display field points to an X display structure. The flags field is private
+to the library: modifying flags may yield unpredictable results. The device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The min_key_code
+and max_key_code fields specify the least and greatest keycode that can be
+returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to indicate that the structure should be manipulated in some manner, such
+as allocating it or freeing it. These masks and their relationships to the
+fields in the XkbDescRec are shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.SH "SEE ALSO"
+.BR XkbGetControls (__libmansuffix__),
+.BR XkbGetNames (__libmansuffix__),
+.BR XkbSetControls (__libmansuffix__),
+.BR XkbSetNames (__libmansuffix__)
diff --git a/man/xkb/XkbSetXlibControls.man b/man/xkb/XkbSetXlibControls.man
new file mode 100644
index 00000000..35cd43a9
--- /dev/null
+++ b/man/xkb/XkbSetXlibControls.man
@@ -0,0 +1,119 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbSetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetXlibControls \- Changes the state of the Library Controls
+.SH SYNOPSIS
+.B unsigned int XkbSetXlibControls
+(
+.I display,
+.I bits_to_change,
+.I values_for_bits
+)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned long \fIbits_to_change\fP\^;
+.br
+ unsigned long \fIvalues_for_bits\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- bits_to_change
+selects controls to be modified
+.TP
+.I \- values_for_bits
+turns selected controls on (1) or off (0)
+.SH DESCRIPTION
+.LP
+.I XkbSetXlibControls
+modifies the state of the controls selected by
+.I bits_to_change;
+only the controls selected by
+.I bits_to_change
+are modified. If the bit corresponding to a control is on in
+.I bits_to_change
+and also on in
+.I values_for_bits,
+the control is enabled. If the bit corresponding to a control is on in
+.I bits_to_change
+but off in
+.I values_for_bits,
+the control is disabled.
+.I bits_to_change
+should be an inclusive OR of bits from Table 1.
+
+.TS
+c s
+l l
+l l.
+Table 1 Library Control Masks
+_
+Library Control Mask Value
+_
+XkbLC_ForceLatin1Lookup (1 << 0)
+XkbLC_ConsumeLookupMods (1 << 1)
+XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
+XkbLC_IgnoreNewKeyboards (1 << 3)
+XkbLC_ConsumeKeysOnComposeFail (1 << 29)
+XkbLC_ComposeLED (1 << 30)
+XkbLC_BeepOnComposeFail (1 << 31)
+XkbLC_AllControls (0xc0000007)
+.TE
+.SH "RETURN VALUES"
+.TP 15
+(1 << 0)
+XkbLC_ForceLatin1Lookup
+.TP 15
+(1 << 1)
+XkbLC_ConsumeLookupMods
+.TP 15
+(1 << 2)
+XkbLC_AlwaysConsumeShiftAndLock
+.TP 15
+(1 << 3)
+XkbLC_IgnoreNewKeyboards
+.TP 15
+(1 << 29)
+XkbLC_ConsumeKeysOnComposeFail
+.TP 15
+(1 << 30)
+XkbLC_ComposeLED
+.TP 15
+(1 << 31)
+XkbLC_BeepOnComposeFail
+.TP 15
+(0xc0000007)
+XkbLC_AllControls
+
diff --git a/man/xkb/XkbTranslateKeyCode.man b/man/xkb/XkbTranslateKeyCode.man
new file mode 100644
index 00000000..4e4455be
--- /dev/null
+++ b/man/xkb/XkbTranslateKeyCode.man
@@ -0,0 +1,89 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbTranslateKeyCode __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbTranslateKeyCode \- Translate a keycode to a key symbol and modifiers
+.SH SYNOPSIS
+.B Bool XkbTranslateKeyCode
+(
+.I xkb,
+.I key,
+.I mods,
+.I mods_rtrn,
+.I keysym_rtrn
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIkey\fP\^;
+.br
+ unsigned int \fImods\fP\^;
+.br
+ unsigned int * \fImods_rtrn\fP\^;
+.br
+ KeySym * \fIkeysym_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to use for translation
+.TP
+.I \- key
+keycode to translate
+.TP
+.I \- mods
+modifiers to apply when translating key
+.TP
+.I \- mods_rtrn
+backfilled with unconsumed modifiers
+.TP
+.I \- keysym_rtrn
+keysym resulting from translation
+.SH DESCRIPTION
+.LP
+.I mods_rtrn
+is backfilled with the modifiers consumed by the translation process.
+.I mods
+is a bitwise inclusive OR of the legal modifier masks: ShiftMask, LockMask,
+ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask.The
+AlwaysConsumeShiftAndLock library control (see below), if enabled, causes
+.I XkbTranslateKeyCode
+to consume shift and lock.
+.I XkbTranslateKeyCode
+returns True if the translation resulted in a keysym, and False if it resulted
+in NoSymbol.
+
+The AlwaysConsumeShiftAndLock control, if enabled, forces
+.I XLookupString
+to consume the Shift and Lock modifiers when processing all keys, even if the
+definition for the key type does not specify these modifiers. The
+AlwaysConsumeShiftAndLock control is unset by default.
+.SH "SEE ALSO"
+.BR XLookupString (3X11)
diff --git a/man/xkb/XkbTranslateKeySym.man b/man/xkb/XkbTranslateKeySym.man
new file mode 100644
index 00000000..526a012e
--- /dev/null
+++ b/man/xkb/XkbTranslateKeySym.man
@@ -0,0 +1,101 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbTranslateKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbTranslateKeySym \- Find the string and symbol associated with a keysym for a
+given keyboard state
+.SH SYNOPSIS
+.B int XkbTranslateKeySym
+(
+.I dpy ,
+.I sym_inout ,
+.I mods ,
+.I buf ,
+.I nbytes ,
+.I extra_rtrn
+)
+.br
+ Display *\fIdpy\fP\^;
+.br
+ KeySym *\fIsym_inout\fP\^;
+.br
+ unsigned int \fImods\fP\^;
+.br
+ char *\fIbuf\fP\^;
+.br
+ int \fInbytes\fP\^;
+.br
+ int *\fIextra_rtrn\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- sym_inout
+symbol to be translated; result of translation
+.TP
+.I \- mods
+modifiers to apply to sym_inout
+.TP
+.I \- buf
+buffer into which returned string is written
+.TP
+.I \- nbytes
+size of buffer in bytes
+.TP
+.I \- extra_rtrn
+number of bytes overflow
+.SH DESCRIPTION
+.LP
+.I XkbTranslateKeySym
+applies the transformations specified in
+.I mods
+to the symbol specified by
+.I sym_inout.
+It returns in
+.I buf
+the string, if any, associated with the keysym for the current locale. If the
+transformations in
+.I mods
+changes the keysym,
+.I sym_inout
+is updated accordingly. If the string returned is larger than
+.I nbytes,
+a count of bytes that does not fit into the buffer is returned in
+.I extra_rtrn. XkbTranslateKeySym
+returns the number of bytes it placed into
+.I buf.
+.SH "RETURN VALUES"
+.TP 15
+buf
+Returns the string, if any, associated with the keysym for the current locale.
+
+
diff --git a/man/xkb/XkbUpdateMapFromCore.man b/man/xkb/XkbUpdateMapFromCore.man
new file mode 100644
index 00000000..6f04d8c4
--- /dev/null
+++ b/man/xkb/XkbUpdateMapFromCore.man
@@ -0,0 +1,130 @@
+'\" t
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbUpdateMapFromCore __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbUpdateMapFromCore \- Update a local Xkb keyboard map to reflect the mapping
+expressed by a core format mapping
+.SH SYNOPSIS
+.B Bool XkbUpdateMapFromCore
+(
+.I xkb,
+.I first_key,
+.I num_keys,
+.I map_width,
+.I core_keysyms,
+.I changes
+)
+.br
+ XkbDescPtr \fIxkb\fP\^;
+.br
+ KeyCode \fIfirst_key\fP\^;
+.br
+ int \fInum_keys\fP\^;
+.br
+ int \fImap_width\fP\^;
+.br
+ KeySym * \fIcore_keysyms\fP\^;
+.br
+ XkbChangesPtr \fIchanges\fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to update
+.TP
+.I \- first_key
+keycode of first key description to update
+.TP
+.I \- num_keys
+number of key descriptions to update
+.TP
+.I \- map_width
+width of core protocol keymap
+.TP
+.I \- core_keysyms
+symbols in core protocol keymap
+.TP
+.I \- changes
+backfilled with changes made to Xkb
+.SH DESCRIPTION
+.LP
+Xkb provides several functions that make it easier to apply the compatibility
+map to configure a client-side Xkb keyboard mapping, given a core protocol
+representation of part or all of a keyboard mapping. Obtain a core protocol
+representation of a keyboard mapping from an actual server (by using
+.I XGetKeyboardMapping,
+for example), a data file, or some other source.
+
+.I XkbUpdateMapFromCore
+interprets input argument information representing a keyboard map in core format
+to update the Xkb keyboard description passed in
+.I xkb.
+Only a portion of the Xkb map is updated - the portion corresponding to keys
+with keycodes in the range
+.I first_key
+through
+.I first_key + num_keys - 1.
+If
+.I XkbUpdateMapFromCore
+is being called in response to a MappingNotify event,
+.I first_key
+and
+.I num_keys
+are reported in the MappingNotify event.
+.I core_keysyms
+contains the keysyms corresponding to the keycode range being updated, in core
+keyboard description order.
+.I map_width
+is the number of keysyms per key in
+.I core_keysyms.
+Thus, the first
+.I map_width
+entries in
+.I core_keysyms
+are for the key with keycode
+.I first_key,
+the next
+.I map_width
+entries are for key
+.I first_key + 1,
+and so on.
+
+In addition to modifying the Xkb keyboard mapping in
+.I xkb, XkbUpdateMapFromCore
+backfills the changes structure whose address is passed in
+.I changes
+to indicate the modifications that were made. You may then use
+.I changes
+in subsequent calls such as
+.I XkbSetMap,
+to propagate the local modifications to a server.
+.SH "SEE ALSO"
+.BR XkbSetMap (__libmansuffix__)
diff --git a/man/xkb/XkbVirtualModsToReal.man b/man/xkb/XkbVirtualModsToReal.man
new file mode 100644
index 00000000..17785e36
--- /dev/null
+++ b/man/xkb/XkbVirtualModsToReal.man
@@ -0,0 +1,144 @@
+.\" Copyright (c) 1999 - Sun Microsystems, Inc.
+.\" All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, and/or sell copies of the Software, and to permit persons
+.\" to whom the Software is furnished to do so, provided that the above
+.\" copyright notice(s) and this permission notice appear in all copies of
+.\" the Software and that both the above copyright notice(s) and this
+.\" permission notice appear in supporting documentation.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+.\" OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+.\" HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+.\" INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+.\" FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+.\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+.\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of a copyright holder
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" of the copyright holder.
+.\"
+.TH XkbVirtualModsToReal __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbVirtualModsToReal \- Determines the mapping of virtual modifiers to core X
+protocol modifiers
+.SH SYNOPSIS
+.B Bool XkbVirtualModsToReal
+(
+.I xkb,
+.I virtual_mask,
+.I mask_rtrn
+)
+.br
+ XkbDescPtr \fI xkb \fP\^;
+.br
+ unsigned int \fI virtual_mask \fP\^;
+.br
+ unsigned int *\fI mask_rtrn \fP\^;
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for input device
+.TP
+.I \- virtual_mask
+virtual modifier mask to translate
+.TP
+.I \- mask_rtrn
+backfilled with real modifiers
+.SH DESCRIPTION
+.LP
+Xkb maintains a
+.I virtual modifier mapping,
+which lists the virtual modifiers associated with, or bound to, each key. The
+real modifiers bound to a virtual modifier always include all of the modifiers
+bound to any of the keys that specify that virtual modifier in their virtual
+modifier mapping. The
+.I server.vmodmap
+array indicates which virtual modifiers are bound to each key; each entry is a
+bitmask for the virtual modifier bits. The
+.I server.vmodmap
+array is indexed by keycode.
+
+The
+.I vmodmap
+and
+.I vmods
+members of the server map are the "master" virtual modifier definitions. Xkb
+automatically propagates any changes to these fields to all other fields that
+use virtual modifier mappings.
+
+For example, if Mod3 is bound to the Num_Lock key by the core protocol modifier
+mapping, and the NumLock virtual modifier is bound to they Num_Lock key by the
+virtual modifier mapping, Mod3 is added to the set of modifiers associated with
+NumLock.
+
+The virtual modifier mapping is normally updated whenever actions are
+automatically applied to symbols and few applications should need to change the
+virtual modifier mapping explicitly.
+
+Use
+.I XkbGetMap
+to get the virtual modifiers from the server or use
+.I XkbGetVirtualMods
+to update a local copy of the virtual modifiers bindings from the server. To set
+the binding of a virtual modifier to a real modifier, use
+.I XkbGetVirtualMods
+
+If the keyboard description defined by
+.I xkb
+includes bindings for virtual modifiers,
+.I XkbVirtualModsToReal
+uses those bindings to determine the set of real modifiers that correspond to
+the set of virtual modifiers specified in
+.I virtual_mask.
+The
+.I virtual_mask
+parameter is a mask specifying the virtual modifiers to translate; the i-th bit
+(0 relative) of the mask represents the i-th virtual modifier. If
+.I mask_rtrn
+is non-NULL,
+.I XkbVirtualModsToReal
+backfills it with the resulting real modifier mask. If the keyboard description
+in
+.I xkb
+does not include virtual modifier bindings,
+.I XkbVirtualModsToReal
+returns False; otherwise, it returns True.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbVirtualModsToReal
+function returns True if the keyboard description
+in
+.I xkb
+does include virtual modifier bindings.
+.TP 15
+False
+The
+.I XkbVirtualModsToReal
+function returns False if the keyboard description
+in
+.I xkb
+does not include virtual modifier bindings.
+.SH "SEE ALSO"
+.BR XkbGetMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__)
+.SH NOTES
+.LP
+It is possible for a local (client-side) keyboard description (the
+.I xkb
+parameter) to not contain any virtual modifier information (simply because the
+client has not requested it) while the server's corresponding definition may
+contain virtual modifier information.
+