117ca54c3Smrg/************************************************************
217ca54c3SmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
317ca54c3Smrg
417ca54c3SmrgPermission to use, copy, modify, and distribute this
517ca54c3Smrgsoftware and its documentation for any purpose and without
617ca54c3Smrgfee is hereby granted, provided that the above copyright
717ca54c3Smrgnotice appear in all copies and that both that copyright
817ca54c3Smrgnotice and this permission notice appear in supporting
9ea1d6981Smrgdocumentation, and that the name of Silicon Graphics not be
10ea1d6981Smrgused in advertising or publicity pertaining to distribution
1117ca54c3Smrgof the software without specific prior written permission.
12ea1d6981SmrgSilicon Graphics makes no representation about the suitability
1317ca54c3Smrgof this software for any purpose. It is provided "as is"
1417ca54c3Smrgwithout any express or implied warranty.
1517ca54c3Smrg
16ea1d6981SmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17ea1d6981SmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1817ca54c3SmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19ea1d6981SmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20ea1d6981SmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21ea1d6981SmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
2217ca54c3SmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
2317ca54c3SmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE.
2417ca54c3Smrg
2517ca54c3Smrg********************************************************/
2617ca54c3Smrg
2717ca54c3Smrg#ifndef _XKB_H_
2817ca54c3Smrg#define	_XKB_H_
2917ca54c3Smrg
3017ca54c3Smrg    /*
3117ca54c3Smrg     * XKB request codes, used in:
3217ca54c3Smrg     *  -  xkbReqType field of all requests
3317ca54c3Smrg     *  -  requestMinor field of some events
3417ca54c3Smrg     */
3517ca54c3Smrg#define	X_kbUseExtension		 0
3617ca54c3Smrg#define	X_kbSelectEvents	 	 1
3717ca54c3Smrg#define	X_kbBell			 3
3817ca54c3Smrg#define	X_kbGetState			 4
3917ca54c3Smrg#define	X_kbLatchLockState		 5
4017ca54c3Smrg#define	X_kbGetControls			 6
4117ca54c3Smrg#define	X_kbSetControls			 7
4217ca54c3Smrg#define	X_kbGetMap			 8
4317ca54c3Smrg#define	X_kbSetMap			 9
4417ca54c3Smrg#define	X_kbGetCompatMap		10
4517ca54c3Smrg#define	X_kbSetCompatMap		11
4617ca54c3Smrg#define	X_kbGetIndicatorState		12
4717ca54c3Smrg#define	X_kbGetIndicatorMap		13
4817ca54c3Smrg#define	X_kbSetIndicatorMap		14
4917ca54c3Smrg#define	X_kbGetNamedIndicator		15
5017ca54c3Smrg#define	X_kbSetNamedIndicator		16
5117ca54c3Smrg#define	X_kbGetNames			17
5217ca54c3Smrg#define	X_kbSetNames			18
5317ca54c3Smrg#define	X_kbGetGeometry			19
5417ca54c3Smrg#define	X_kbSetGeometry			20
5517ca54c3Smrg#define	X_kbPerClientFlags		21
5617ca54c3Smrg#define	X_kbListComponents		22
5717ca54c3Smrg#define	X_kbGetKbdByName		23
5817ca54c3Smrg#define	X_kbGetDeviceInfo		24
5917ca54c3Smrg#define	X_kbSetDeviceInfo		25
6017ca54c3Smrg#define	X_kbSetDebuggingFlags		101
6117ca54c3Smrg
6217ca54c3Smrg    /*
6317ca54c3Smrg     * In the X sense, XKB reports only one event.
6417ca54c3Smrg     * The type field of all XKB events is XkbEventCode
6517ca54c3Smrg     */
6617ca54c3Smrg#define	XkbEventCode			0
6717ca54c3Smrg#define	XkbNumberEvents			(XkbEventCode+1)
6817ca54c3Smrg
6917ca54c3Smrg    /*
70ea1d6981Smrg     * XKB has a minor event code so it can use one X event code for
71ea1d6981Smrg     * multiple purposes.
7217ca54c3Smrg     *  - reported in the xkbType field of all XKB events.
73ea1d6981Smrg     *  - XkbSelectEventDetails: Indicates the event for which event details
7417ca54c3Smrg     *    are being changed
7517ca54c3Smrg     */
7617ca54c3Smrg#define	XkbNewKeyboardNotify		0
7717ca54c3Smrg#define XkbMapNotify			1
7817ca54c3Smrg#define	XkbStateNotify			2
7917ca54c3Smrg#define XkbControlsNotify		3
8017ca54c3Smrg#define	XkbIndicatorStateNotify		4
8117ca54c3Smrg#define	XkbIndicatorMapNotify		5
8217ca54c3Smrg#define	XkbNamesNotify			6
8317ca54c3Smrg#define XkbCompatMapNotify		7
8417ca54c3Smrg#define	XkbBellNotify			8
8517ca54c3Smrg#define	XkbActionMessage		9
8617ca54c3Smrg#define	XkbAccessXNotify		10
8717ca54c3Smrg#define	XkbExtensionDeviceNotify	11
8817ca54c3Smrg
8917ca54c3Smrg    /*
9017ca54c3Smrg     * Event Mask:
9117ca54c3Smrg     *  - XkbSelectEvents:  Specifies event interest.
9217ca54c3Smrg     */
9317ca54c3Smrg#define	XkbNewKeyboardNotifyMask	(1L << 0)
9417ca54c3Smrg#define XkbMapNotifyMask		(1L << 1)
9517ca54c3Smrg#define	XkbStateNotifyMask		(1L << 2)
9617ca54c3Smrg#define XkbControlsNotifyMask		(1L << 3)
9717ca54c3Smrg#define	XkbIndicatorStateNotifyMask	(1L << 4)
9817ca54c3Smrg#define	XkbIndicatorMapNotifyMask	(1L << 5)
9917ca54c3Smrg#define	XkbNamesNotifyMask		(1L << 6)
10017ca54c3Smrg#define XkbCompatMapNotifyMask		(1L << 7)
10117ca54c3Smrg#define	XkbBellNotifyMask		(1L << 8)
10217ca54c3Smrg#define	XkbActionMessageMask		(1L << 9)
10317ca54c3Smrg#define	XkbAccessXNotifyMask		(1L << 10)
10417ca54c3Smrg#define	XkbExtensionDeviceNotifyMask	(1L << 11)
10517ca54c3Smrg#define	XkbAllEventsMask		(0xFFF)
10617ca54c3Smrg
10717ca54c3Smrg    /*
10817ca54c3Smrg     * NewKeyboardNotify event details:
10917ca54c3Smrg     */
11017ca54c3Smrg#define	XkbNKN_KeycodesMask		(1L << 0)
11117ca54c3Smrg#define	XkbNKN_GeometryMask		(1L << 1)
11217ca54c3Smrg#define	XkbNKN_DeviceIDMask		(1L << 2)
11317ca54c3Smrg#define	XkbAllNewKeyboardEventsMask	(0x7)
11417ca54c3Smrg
11517ca54c3Smrg    /*
11617ca54c3Smrg     * AccessXNotify event types:
11717ca54c3Smrg     *  - The 'what' field of AccessXNotify events reports the
11817ca54c3Smrg     *    reason that the event was generated.
11917ca54c3Smrg     */
12017ca54c3Smrg#define	XkbAXN_SKPress			0
12117ca54c3Smrg#define	XkbAXN_SKAccept			1
12217ca54c3Smrg#define	XkbAXN_SKReject			2
12317ca54c3Smrg#define	XkbAXN_SKRelease		3
12417ca54c3Smrg#define	XkbAXN_BKAccept			4
12517ca54c3Smrg#define	XkbAXN_BKReject			5
12617ca54c3Smrg#define	XkbAXN_AXKWarning		6
12717ca54c3Smrg
12817ca54c3Smrg    /*
12917ca54c3Smrg     * AccessXNotify details:
13017ca54c3Smrg     * - Used as an event detail mask to limit the conditions under which
13117ca54c3Smrg     *   AccessXNotify events are reported
13217ca54c3Smrg     */
13317ca54c3Smrg#define	XkbAXN_SKPressMask		(1L << 0)
13417ca54c3Smrg#define	XkbAXN_SKAcceptMask		(1L << 1)
13517ca54c3Smrg#define	XkbAXN_SKRejectMask		(1L << 2)
13617ca54c3Smrg#define	XkbAXN_SKReleaseMask		(1L << 3)
13717ca54c3Smrg#define	XkbAXN_BKAcceptMask		(1L << 4)
13817ca54c3Smrg#define	XkbAXN_BKRejectMask		(1L << 5)
13917ca54c3Smrg#define	XkbAXN_AXKWarningMask		(1L << 6)
14017ca54c3Smrg#define	XkbAllAccessXEventsMask		(0x7f)
14117ca54c3Smrg
14217ca54c3Smrg    /*
14317ca54c3Smrg     * Miscellaneous event details:
144d63b911fSmrg     * - event detail masks for assorted events that don't really
14517ca54c3Smrg     *   have any details.
14617ca54c3Smrg     */
14717ca54c3Smrg#define	XkbAllStateEventsMask		XkbAllStateComponentsMask
14817ca54c3Smrg#define	XkbAllMapEventsMask		XkbAllMapComponentsMask
14917ca54c3Smrg#define	XkbAllControlEventsMask		XkbAllControlsMask
15017ca54c3Smrg#define	XkbAllIndicatorEventsMask	XkbAllIndicatorsMask
15117ca54c3Smrg#define	XkbAllNameEventsMask		XkbAllNamesMask
15217ca54c3Smrg#define	XkbAllCompatMapEventsMask	XkbAllCompatMask
15317ca54c3Smrg#define	XkbAllBellEventsMask		(1L << 0)
15417ca54c3Smrg#define	XkbAllActionMessagesMask	(1L << 0)
15517ca54c3Smrg
15617ca54c3Smrg    /*
15717ca54c3Smrg     * XKB reports one error:  BadKeyboard
15817ca54c3Smrg     * A further reason for the error is encoded into to most significant
15917ca54c3Smrg     * byte of the resourceID for the error:
16017ca54c3Smrg     *    XkbErr_BadDevice - the device in question was not found
161ea1d6981Smrg     *    XkbErr_BadClass  - the device was found but it doesn't belong to
16217ca54c3Smrg     *                       the appropriate class.
16317ca54c3Smrg     *    XkbErr_BadId     - the device was found and belongs to the right
16417ca54c3Smrg     *                       class, but not feedback with a matching id was
16517ca54c3Smrg     *                       found.
16617ca54c3Smrg     * The low byte of the resourceID for this error contains the device
16717ca54c3Smrg     * id, class specifier or feedback id that failed.
16817ca54c3Smrg     */
16917ca54c3Smrg#define	XkbKeyboard			0
17017ca54c3Smrg#define	XkbNumberErrors			1
17117ca54c3Smrg
17217ca54c3Smrg#define	XkbErr_BadDevice	0xff
17317ca54c3Smrg#define	XkbErr_BadClass		0xfe
17417ca54c3Smrg#define	XkbErr_BadId		0xfd
17517ca54c3Smrg
17617ca54c3Smrg    /*
17717ca54c3Smrg     * Keyboard Components Mask:
17817ca54c3Smrg     * - Specifies the components that follow a GetKeyboardByNameReply
17917ca54c3Smrg     */
18017ca54c3Smrg#define	XkbClientMapMask		(1L << 0)
18117ca54c3Smrg#define	XkbServerMapMask		(1L << 1)
18217ca54c3Smrg#define	XkbCompatMapMask		(1L << 2)
18317ca54c3Smrg#define	XkbIndicatorMapMask		(1L << 3)
18417ca54c3Smrg#define	XkbNamesMask			(1L << 4)
18517ca54c3Smrg#define	XkbGeometryMask			(1L << 5)
18617ca54c3Smrg#define	XkbControlsMask			(1L << 6)
18717ca54c3Smrg#define	XkbAllComponentsMask		(0x7f)
18817ca54c3Smrg
18917ca54c3Smrg    /*
19017ca54c3Smrg     * State detail mask:
19117ca54c3Smrg     *  - The 'changed' field of StateNotify events reports which of
19217ca54c3Smrg     *    the keyboard state components have changed.
19317ca54c3Smrg     *  - Used as an event detail mask to limit the conditions under
19417ca54c3Smrg     *    which StateNotify events are reported.
19517ca54c3Smrg     */
19617ca54c3Smrg#define	XkbModifierStateMask		(1L << 0)
19717ca54c3Smrg#define	XkbModifierBaseMask		(1L << 1)
19817ca54c3Smrg#define	XkbModifierLatchMask		(1L << 2)
19917ca54c3Smrg#define	XkbModifierLockMask		(1L << 3)
20017ca54c3Smrg#define	XkbGroupStateMask		(1L << 4)
20117ca54c3Smrg#define	XkbGroupBaseMask		(1L << 5)
20217ca54c3Smrg#define	XkbGroupLatchMask		(1L << 6)
20317ca54c3Smrg#define XkbGroupLockMask		(1L << 7)
20417ca54c3Smrg#define	XkbCompatStateMask		(1L << 8)
20517ca54c3Smrg#define	XkbGrabModsMask			(1L << 9)
20617ca54c3Smrg#define	XkbCompatGrabModsMask		(1L << 10)
20717ca54c3Smrg#define	XkbLookupModsMask		(1L << 11)
20817ca54c3Smrg#define	XkbCompatLookupModsMask		(1L << 12)
20917ca54c3Smrg#define	XkbPointerButtonMask		(1L << 13)
21017ca54c3Smrg#define	XkbAllStateComponentsMask	(0x3fff)
21117ca54c3Smrg
21217ca54c3Smrg    /*
21317ca54c3Smrg     * Controls detail masks:
21417ca54c3Smrg     *  The controls specified in XkbAllControlsMask:
215ea1d6981Smrg     *  - The 'changed' field of ControlsNotify events reports which of
21617ca54c3Smrg     *    the keyboard controls have changed.
21717ca54c3Smrg     *  - The 'changeControls' field of the SetControls request specifies
21817ca54c3Smrg     *    the controls for which values are to be changed.
219ea1d6981Smrg     *  - Used as an event detail mask to limit the conditions under
22017ca54c3Smrg     *    which ControlsNotify events are reported.
22117ca54c3Smrg     *
22217ca54c3Smrg     *  The controls specified in the XkbAllBooleanCtrlsMask:
22317ca54c3Smrg     *  - The 'enabledControls' field of ControlsNotify events reports the
22417ca54c3Smrg     *    current status of the boolean controls.
22517ca54c3Smrg     *  - The 'enabledControlsChanges' field of ControlsNotify events reports
22617ca54c3Smrg     *    any boolean controls that have been turned on or off.
22717ca54c3Smrg     *  - The 'affectEnabledControls' and 'enabledControls' fields of the
22817ca54c3Smrg     *    kbSetControls request change the set of enabled controls.
22917ca54c3Smrg     *  - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of
23017ca54c3Smrg     *    an XkbControlsRec specify the controls to be changed if the keyboard
23117ca54c3Smrg     *    times out and the values to which they should be changed.
232ea1d6981Smrg     *  - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags
23317ca54c3Smrg     *    request specifies the specify the controls to be reset when the
23417ca54c3Smrg     *    client exits and the values to which they should be reset.
23517ca54c3Smrg     *  - The 'ctrls' field of an indicator map specifies the controls
23617ca54c3Smrg     *    that drive the indicator.
23717ca54c3Smrg     *  - Specifies the boolean controls affected by the SetControls and
23817ca54c3Smrg     *    LockControls key actions.
23917ca54c3Smrg     */
24017ca54c3Smrg#define	XkbRepeatKeysMask	 (1L << 0)
24117ca54c3Smrg#define	XkbSlowKeysMask		 (1L << 1)
24217ca54c3Smrg#define	XkbBounceKeysMask	 (1L << 2)
24317ca54c3Smrg#define	XkbStickyKeysMask	 (1L << 3)
24417ca54c3Smrg#define	XkbMouseKeysMask	 (1L << 4)
24517ca54c3Smrg#define	XkbMouseKeysAccelMask	 (1L << 5)
24617ca54c3Smrg#define	XkbAccessXKeysMask	 (1L << 6)
24717ca54c3Smrg#define	XkbAccessXTimeoutMask	 (1L << 7)
24817ca54c3Smrg#define	XkbAccessXFeedbackMask	 (1L << 8)
24917ca54c3Smrg#define	XkbAudibleBellMask	 (1L << 9)
25017ca54c3Smrg#define	XkbOverlay1Mask		 (1L << 10)
25117ca54c3Smrg#define	XkbOverlay2Mask		 (1L << 11)
25217ca54c3Smrg#define	XkbIgnoreGroupLockMask	 (1L << 12)
25317ca54c3Smrg#define	XkbGroupsWrapMask	 (1L << 27)
25417ca54c3Smrg#define	XkbInternalModsMask	 (1L << 28)
25517ca54c3Smrg#define	XkbIgnoreLockModsMask	 (1L << 29)
25617ca54c3Smrg#define	XkbPerKeyRepeatMask	 (1L << 30)
25717ca54c3Smrg#define	XkbControlsEnabledMask	 (1L << 31)
25817ca54c3Smrg
25917ca54c3Smrg#define	XkbAccessXOptionsMask    (XkbStickyKeysMask|XkbAccessXFeedbackMask)
26017ca54c3Smrg
26117ca54c3Smrg#define	XkbAllBooleanCtrlsMask	 (0x00001FFF)
26217ca54c3Smrg#define	XkbAllControlsMask	 (0xF8001FFF)
26317ca54c3Smrg#define	XkbAllControlEventsMask	 XkbAllControlsMask
26417ca54c3Smrg
26517ca54c3Smrg    /*
26617ca54c3Smrg     * AccessX Options Mask
26717ca54c3Smrg     *  - The 'accessXOptions' field of an XkbControlsRec specifies the
26817ca54c3Smrg     *    AccessX options that are currently in effect.
26917ca54c3Smrg     *  - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues'
270ea1d6981Smrg     *    fields of an XkbControlsRec specify the Access X options to be
271ea1d6981Smrg     *    changed if the keyboard times out and the values to which they
27217ca54c3Smrg     *    should be changed.
27317ca54c3Smrg     */
27417ca54c3Smrg#define	XkbAX_SKPressFBMask	(1L << 0)
27517ca54c3Smrg#define	XkbAX_SKAcceptFBMask	(1L << 1)
27617ca54c3Smrg#define	XkbAX_FeatureFBMask	(1L << 2)
27717ca54c3Smrg#define	XkbAX_SlowWarnFBMask	(1L << 3)
27817ca54c3Smrg#define	XkbAX_IndicatorFBMask	(1L << 4)
27917ca54c3Smrg#define	XkbAX_StickyKeysFBMask	(1L << 5)
28017ca54c3Smrg#define	XkbAX_TwoKeysMask	(1L << 6)
28117ca54c3Smrg#define	XkbAX_LatchToLockMask	(1L << 7)
28217ca54c3Smrg#define	XkbAX_SKReleaseFBMask	(1L << 8)
28317ca54c3Smrg#define	XkbAX_SKRejectFBMask	(1L << 9)
28417ca54c3Smrg#define	XkbAX_BKRejectFBMask	(1L << 10)
28517ca54c3Smrg#define	XkbAX_DumbBellFBMask	(1L << 11)
28617ca54c3Smrg#define	XkbAX_FBOptionsMask	(0xF3F)
28717ca54c3Smrg#define	XkbAX_SKOptionsMask	(0x0C0)
28817ca54c3Smrg#define	XkbAX_AllOptionsMask	(0xFFF)
28917ca54c3Smrg
29017ca54c3Smrg    /*
29117ca54c3Smrg     * XkbUseCoreKbd is used to specify the core keyboard without having
29217ca54c3Smrg     * 			to look up its X input extension identifier.
29317ca54c3Smrg     * XkbUseCorePtr is used to specify the core pointer without having
29417ca54c3Smrg     *			to look up its X input extension identifier.
29517ca54c3Smrg     * XkbDfltXIClass is used to specify "don't care" any place that the
296ea1d6981Smrg     *			XKB protocol is looking for an X Input Extension
29717ca54c3Smrg     *			device class.
29817ca54c3Smrg     * XkbDfltXIId is used to specify "don't care" any place that the
29917ca54c3Smrg     *			XKB protocol is looking for an X Input Extension
30017ca54c3Smrg     *			feedback identifier.
30117ca54c3Smrg     * XkbAllXIClasses is used to get information about all device indicators,
30217ca54c3Smrg     *			whether they're part of the indicator feedback class
30317ca54c3Smrg     *			or the keyboard feedback class.
30417ca54c3Smrg     * XkbAllXIIds is used to get information about all device indicator
30517ca54c3Smrg     *			feedbacks without having to list them.
30617ca54c3Smrg     * XkbXINone is used to indicate that no class or id has been specified.
30717ca54c3Smrg     * XkbLegalXILedClass(c)  True if 'c' specifies a legal class with LEDs
30817ca54c3Smrg     * XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells
30917ca54c3Smrg     * XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device
31017ca54c3Smrg     * XkbExplicitXIClass(c)  True if 'c' explicitly specifies a device class
31117ca54c3Smrg     * XkbExplicitXIId(c)     True if 'i' explicitly specifies a device id
312ea1d6981Smrg     * XkbSingleXIClass(c)    True if 'c' specifies exactly one device class,
31317ca54c3Smrg     *                        including the default.
314ea1d6981Smrg     * XkbSingleXIId(i)       True if 'i' specifies exactly one device
31517ca54c3Smrg     *	                      identifier, including the default.
31617ca54c3Smrg     */
31717ca54c3Smrg#define	XkbUseCoreKbd		0x0100
31817ca54c3Smrg#define	XkbUseCorePtr		0x0200
31917ca54c3Smrg#define	XkbDfltXIClass		0x0300
32017ca54c3Smrg#define	XkbDfltXIId		0x0400
32117ca54c3Smrg#define	XkbAllXIClasses		0x0500
32217ca54c3Smrg#define	XkbAllXIIds		0x0600
32317ca54c3Smrg#define	XkbXINone		0xff00
32417ca54c3Smrg
32517ca54c3Smrg#define	XkbLegalXILedClass(c)	(((c)==KbdFeedbackClass)||\
32617ca54c3Smrg					((c)==LedFeedbackClass)||\
32717ca54c3Smrg					((c)==XkbDfltXIClass)||\
32817ca54c3Smrg					((c)==XkbAllXIClasses))
32917ca54c3Smrg#define	XkbLegalXIBellClass(c)	(((c)==KbdFeedbackClass)||\
33017ca54c3Smrg					((c)==BellFeedbackClass)||\
33117ca54c3Smrg					((c)==XkbDfltXIClass)||\
33217ca54c3Smrg					((c)==XkbAllXIClasses))
33317ca54c3Smrg#define	XkbExplicitXIDevice(c)	(((c)&(~0xff))==0)
33417ca54c3Smrg#define	XkbExplicitXIClass(c)	(((c)&(~0xff))==0)
33517ca54c3Smrg#define	XkbExplicitXIId(c)	(((c)&(~0xff))==0)
33617ca54c3Smrg#define	XkbSingleXIClass(c)	((((c)&(~0xff))==0)||((c)==XkbDfltXIClass))
33717ca54c3Smrg#define	XkbSingleXIId(c)	((((c)&(~0xff))==0)||((c)==XkbDfltXIId))
33817ca54c3Smrg
33917ca54c3Smrg#define	XkbNoModifier		0xff
34017ca54c3Smrg#define	XkbNoShiftLevel		0xff
34117ca54c3Smrg#define	XkbNoShape		0xff
34217ca54c3Smrg#define	XkbNoIndicator		0xff
34317ca54c3Smrg
34417ca54c3Smrg#define	XkbNoModifierMask	0
34517ca54c3Smrg#define	XkbAllModifiersMask	0xff
34617ca54c3Smrg#define	XkbAllVirtualModsMask	0xffff
34717ca54c3Smrg
34817ca54c3Smrg#define	XkbNumKbdGroups		4
34917ca54c3Smrg#define	XkbMaxKbdGroup		(XkbNumKbdGroups-1)
35017ca54c3Smrg
35117ca54c3Smrg#define	XkbMaxMouseKeysBtn	4
35217ca54c3Smrg
35317ca54c3Smrg    /*
35417ca54c3Smrg     * Group Index and Mask:
35517ca54c3Smrg     *  - Indices into the kt_index array of a key type.
35617ca54c3Smrg     *  - Mask specifies types to be changed for XkbChangeTypesOfKey
35717ca54c3Smrg     */
35817ca54c3Smrg#define	XkbGroup1Index		0
35917ca54c3Smrg#define	XkbGroup2Index		1
36017ca54c3Smrg#define	XkbGroup3Index		2
36117ca54c3Smrg#define	XkbGroup4Index		3
36217ca54c3Smrg#define	XkbAnyGroup		254
36317ca54c3Smrg#define	XkbAllGroups		255
36417ca54c3Smrg
36517ca54c3Smrg#define	XkbGroup1Mask		(1<<0)
36617ca54c3Smrg#define	XkbGroup2Mask		(1<<1)
36717ca54c3Smrg#define	XkbGroup3Mask		(1<<2)
36817ca54c3Smrg#define	XkbGroup4Mask		(1<<3)
36917ca54c3Smrg#define	XkbAnyGroupMask		(1<<7)
37017ca54c3Smrg#define	XkbAllGroupsMask	(0xf)
37117ca54c3Smrg
37217ca54c3Smrg    /*
37317ca54c3Smrg     * BuildCoreState: Given a keyboard group and a modifier state,
37417ca54c3Smrg     *                 construct the value to be reported an event.
37517ca54c3Smrg     * GroupForCoreState:  Given the state reported in an event,
37617ca54c3Smrg     *                 determine the keyboard group.
37717ca54c3Smrg     * IsLegalGroup:   Returns TRUE if 'g' is a valid group index.
37817ca54c3Smrg     */
37917ca54c3Smrg#define	XkbBuildCoreState(m,g)	((((g)&0x3)<<13)|((m)&0xff))
38017ca54c3Smrg#define XkbGroupForCoreState(s)	(((s)>>13)&0x3)
38117ca54c3Smrg#define	XkbIsLegalGroup(g)	(((g)>=0)&&((g)<XkbNumKbdGroups))
38217ca54c3Smrg
38317ca54c3Smrg    /*
38417ca54c3Smrg     * GroupsWrap values:
38517ca54c3Smrg     *  - The 'groupsWrap' field of an XkbControlsRec specifies the
38617ca54c3Smrg     *    treatment of out of range groups.
38717ca54c3Smrg     *  - Bits 6 and 7 of the group info field of a key symbol map
38817ca54c3Smrg     *    specify the interpretation of out of range groups for the
38917ca54c3Smrg     *    corresponding key.
39017ca54c3Smrg     */
39117ca54c3Smrg#define	XkbWrapIntoRange	(0x00)
39217ca54c3Smrg#define	XkbClampIntoRange	(0x40)
39317ca54c3Smrg#define	XkbRedirectIntoRange	(0x80)
39417ca54c3Smrg
39517ca54c3Smrg    /*
39617ca54c3Smrg     * Action flags:  Reported in the 'flags' field of most key actions.
39717ca54c3Smrg     * Interpretation depends on the type of the action; not all actions
39817ca54c3Smrg     * accept all flags.
39917ca54c3Smrg     *
40017ca54c3Smrg     * Option			Used for Actions
40117ca54c3Smrg     * ------			----------------
40217ca54c3Smrg     * ClearLocks		SetMods, LatchMods, SetGroup, LatchGroup
40317ca54c3Smrg     * LatchToLock		SetMods, LatchMods, SetGroup, LatchGroup
40417ca54c3Smrg     * LockNoLock		LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
40517ca54c3Smrg     * LockNoUnlock		LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
40617ca54c3Smrg     * UseModMapMods		SetMods, LatchMods, LockMods, ISOLock
40717ca54c3Smrg     * GroupAbsolute		SetGroup, LatchGroup, LockGroup, ISOLock
40817ca54c3Smrg     * UseDfltButton		PtrBtn, LockPtrBtn
40917ca54c3Smrg     * NoAcceleration		MovePtr
41017ca54c3Smrg     * MoveAbsoluteX		MovePtr
41117ca54c3Smrg     * MoveAbsoluteY		MovePtr
41217ca54c3Smrg     * ISODfltIsGroup		ISOLock
41317ca54c3Smrg     * ISONoAffectMods		ISOLock
41417ca54c3Smrg     * ISONoAffectGroup		ISOLock
41517ca54c3Smrg     * ISONoAffectPtr		ISOLock
41617ca54c3Smrg     * ISONoAffectCtrls		ISOLock
41717ca54c3Smrg     * MessageOnPress		ActionMessage
41817ca54c3Smrg     * MessageOnRelease		ActionMessage
41917ca54c3Smrg     * MessageGenKeyEvent	ActionMessage
42017ca54c3Smrg     * AffectDfltBtn		SetPtrDflt
42117ca54c3Smrg     * DfltBtnAbsolute		SetPtrDflt
42217ca54c3Smrg     * SwitchApplication	SwitchScreen
42317ca54c3Smrg     * SwitchAbsolute		SwitchScreen
42417ca54c3Smrg     */
42517ca54c3Smrg
42617ca54c3Smrg#define	XkbSA_ClearLocks	(1L << 0)
42717ca54c3Smrg#define	XkbSA_LatchToLock	(1L << 1)
42817ca54c3Smrg
42917ca54c3Smrg#define	XkbSA_LockNoLock	(1L << 0)
43017ca54c3Smrg#define	XkbSA_LockNoUnlock	(1L << 1)
43117ca54c3Smrg
43217ca54c3Smrg#define	XkbSA_UseModMapMods	(1L << 2)
43317ca54c3Smrg
43417ca54c3Smrg#define	XkbSA_GroupAbsolute	(1L << 2)
43517ca54c3Smrg#define	XkbSA_UseDfltButton	0
43617ca54c3Smrg
43717ca54c3Smrg#define	XkbSA_NoAcceleration	(1L << 0)
43817ca54c3Smrg#define	XkbSA_MoveAbsoluteX	(1L << 1)
43917ca54c3Smrg#define	XkbSA_MoveAbsoluteY	(1L << 2)
44017ca54c3Smrg
44117ca54c3Smrg#define	XkbSA_ISODfltIsGroup 	 (1L << 7)
44217ca54c3Smrg#define	XkbSA_ISONoAffectMods	 (1L << 6)
44317ca54c3Smrg#define	XkbSA_ISONoAffectGroup	 (1L << 5)
44417ca54c3Smrg#define	XkbSA_ISONoAffectPtr	 (1L << 4)
44517ca54c3Smrg#define	XkbSA_ISONoAffectCtrls	 (1L << 3)
44617ca54c3Smrg#define	XkbSA_ISOAffectMask	 (0x78)
44717ca54c3Smrg
44817ca54c3Smrg#define	XkbSA_MessageOnPress	 (1L << 0)
44917ca54c3Smrg#define	XkbSA_MessageOnRelease	 (1L << 1)
45017ca54c3Smrg#define	XkbSA_MessageGenKeyEvent (1L << 2)
45117ca54c3Smrg
45217ca54c3Smrg#define	XkbSA_AffectDfltBtn	1
45317ca54c3Smrg#define	XkbSA_DfltBtnAbsolute	(1L << 2)
45417ca54c3Smrg
45517ca54c3Smrg#define	XkbSA_SwitchApplication	(1L << 0)
45617ca54c3Smrg#define	XkbSA_SwitchAbsolute	(1L << 2)
45717ca54c3Smrg
45817ca54c3Smrg    /*
459ea1d6981Smrg     * The following values apply to the SA_DeviceValuator
460ea1d6981Smrg     * action only.  Valuator operations specify the action
461ea1d6981Smrg     * to be taken.   Values specified in the action are
46217ca54c3Smrg     * multiplied by 2^scale before they are applied.
46317ca54c3Smrg     */
46417ca54c3Smrg#define	XkbSA_IgnoreVal		(0x00)
46517ca54c3Smrg#define	XkbSA_SetValMin		(0x10)
46617ca54c3Smrg#define	XkbSA_SetValCenter	(0x20)
46717ca54c3Smrg#define	XkbSA_SetValMax		(0x30)
46817ca54c3Smrg#define	XkbSA_SetValRelative	(0x40)
46917ca54c3Smrg#define	XkbSA_SetValAbsolute	(0x50)
47017ca54c3Smrg#define	XkbSA_ValOpMask		(0x70)
47117ca54c3Smrg#define	XkbSA_ValScaleMask	(0x07)
47217ca54c3Smrg#define	XkbSA_ValOp(a)		((a)&XkbSA_ValOpMask)
47317ca54c3Smrg#define	XkbSA_ValScale(a)	((a)&XkbSA_ValScaleMask)
47417ca54c3Smrg
47517ca54c3Smrg    /*
47617ca54c3Smrg     * Action types: specifies the type of a key action.  Reported in the
47717ca54c3Smrg     * type field of all key actions.
47817ca54c3Smrg     */
47917ca54c3Smrg#define	XkbSA_NoAction		0x00
48017ca54c3Smrg#define	XkbSA_SetMods		0x01
48117ca54c3Smrg#define	XkbSA_LatchMods		0x02
48217ca54c3Smrg#define	XkbSA_LockMods		0x03
48317ca54c3Smrg#define	XkbSA_SetGroup		0x04
48417ca54c3Smrg#define	XkbSA_LatchGroup	0x05
48517ca54c3Smrg#define	XkbSA_LockGroup		0x06
48617ca54c3Smrg#define	XkbSA_MovePtr		0x07
48717ca54c3Smrg#define	XkbSA_PtrBtn		0x08
48817ca54c3Smrg#define	XkbSA_LockPtrBtn	0x09
48917ca54c3Smrg#define	XkbSA_SetPtrDflt	0x0a
49017ca54c3Smrg#define	XkbSA_ISOLock		0x0b
49117ca54c3Smrg#define	XkbSA_Terminate		0x0c
49217ca54c3Smrg#define	XkbSA_SwitchScreen	0x0d
49317ca54c3Smrg#define	XkbSA_SetControls	0x0e
49417ca54c3Smrg#define	XkbSA_LockControls	0x0f
49517ca54c3Smrg#define	XkbSA_ActionMessage	0x10
49617ca54c3Smrg#define	XkbSA_RedirectKey	0x11
49717ca54c3Smrg#define	XkbSA_DeviceBtn		0x12
49817ca54c3Smrg#define	XkbSA_LockDeviceBtn	0x13
49917ca54c3Smrg#define	XkbSA_DeviceValuator	0x14
50017ca54c3Smrg#define	XkbSA_LastAction	XkbSA_DeviceValuator
50117ca54c3Smrg#define	XkbSA_NumActions	(XkbSA_LastAction+1)
50217ca54c3Smrg
50317ca54c3Smrg#define	XkbSA_XFree86Private	0x86
50417ca54c3Smrg
50517ca54c3Smrg    /*
50617ca54c3Smrg     * Specifies the key actions that clear latched groups or modifiers.
50717ca54c3Smrg     */
50817ca54c3Smrg#define	XkbSA_BreakLatch \
50917ca54c3Smrg	((1<<XkbSA_NoAction)|(1<<XkbSA_PtrBtn)|(1<<XkbSA_LockPtrBtn)|\
51017ca54c3Smrg	(1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\
51117ca54c3Smrg	(1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\
51217ca54c3Smrg	(1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn))
513ea1d6981Smrg
51417ca54c3Smrg    /*
51517ca54c3Smrg     * Macros to classify key actions
51617ca54c3Smrg     */
51717ca54c3Smrg#define	XkbIsModAction(a)	(((a)->type>=Xkb_SASetMods)&&((a)->type<=XkbSA_LockMods))
51817ca54c3Smrg#define	XkbIsGroupAction(a)	(((a)->type>=XkbSA_SetGroup)&&((a)->type<=XkbSA_LockGroup))
51917ca54c3Smrg#define	XkbIsPtrAction(a)	(((a)->type>=XkbSA_MovePtr)&&((a)->type<=XkbSA_SetPtrDflt))
52017ca54c3Smrg
52117ca54c3Smrg
52217ca54c3Smrg    /*
52317ca54c3Smrg     * Key Behavior Qualifier:
52417ca54c3Smrg     *    KB_Permanent indicates that the behavior describes an unalterable
52517ca54c3Smrg     *    characteristic of the keyboard, not an XKB software-simulation of
52617ca54c3Smrg     *    the listed behavior.
527ea1d6981Smrg     * Key Behavior Types:
52817ca54c3Smrg     *    Specifies the behavior of the underlying key.
52917ca54c3Smrg     */
53017ca54c3Smrg#define	XkbKB_Permanent		0x80
53117ca54c3Smrg#define	XkbKB_OpMask		0x7f
53217ca54c3Smrg
53317ca54c3Smrg#define	XkbKB_Default		0x00
53417ca54c3Smrg#define	XkbKB_Lock		0x01
53517ca54c3Smrg#define	XkbKB_RadioGroup	0x02
53617ca54c3Smrg#define	XkbKB_Overlay1		0x03
53717ca54c3Smrg#define	XkbKB_Overlay2		0x04
53817ca54c3Smrg
53917ca54c3Smrg#define	XkbKB_RGAllowNone	0x80
54017ca54c3Smrg
54117ca54c3Smrg    /*
54217ca54c3Smrg     * Various macros which describe the range of legal keycodes.
54317ca54c3Smrg     */
54417ca54c3Smrg#define	XkbMinLegalKeyCode	8
54517ca54c3Smrg#define	XkbMaxLegalKeyCode	255
54617ca54c3Smrg#define	XkbMaxKeyCount		(XkbMaxLegalKeyCode-XkbMinLegalKeyCode+1)
54717ca54c3Smrg#define	XkbPerKeyBitArraySize	((XkbMaxLegalKeyCode+1)/8)
54817ca54c3Smrg/* Seems kinda silly to check that an unsigned char is <= 255... */
54917ca54c3Smrg#define	XkbIsLegalKeycode(k)	((k)>=XkbMinLegalKeyCode)
55017ca54c3Smrg
55117ca54c3Smrg    /*
55217ca54c3Smrg     * Assorted constants and limits.
55317ca54c3Smrg     */
55417ca54c3Smrg#define	XkbNumModifiers		8
55517ca54c3Smrg#define	XkbNumVirtualMods	16
55617ca54c3Smrg#define	XkbNumIndicators	32
55717ca54c3Smrg#define	XkbAllIndicatorsMask	(0xffffffff)
55817ca54c3Smrg#define	XkbMaxRadioGroups	32
55917ca54c3Smrg#define	XkbAllRadioGroupsMask	(0xffffffff)
56017ca54c3Smrg#define	XkbMaxShiftLevel	63
56117ca54c3Smrg#define	XkbMaxSymsPerKey	(XkbMaxShiftLevel*XkbNumKbdGroups)
56217ca54c3Smrg#define	XkbRGMaxMembers		12
56317ca54c3Smrg#define	XkbActionMessageLength	6
56417ca54c3Smrg#define	XkbKeyNameLength	4
56517ca54c3Smrg#define	XkbMaxRedirectCount	8
56617ca54c3Smrg
56717ca54c3Smrg#define	XkbGeomPtsPerMM		10
56817ca54c3Smrg#define	XkbGeomMaxColors	32
56917ca54c3Smrg#define	XkbGeomMaxLabelColors	3
57017ca54c3Smrg#define	XkbGeomMaxPriority	255
57117ca54c3Smrg
57217ca54c3Smrg    /*
57317ca54c3Smrg     * Key Type index and mask for the four standard key types.
57417ca54c3Smrg     */
57517ca54c3Smrg#define	XkbOneLevelIndex	0
57617ca54c3Smrg#define	XkbTwoLevelIndex	1
57717ca54c3Smrg#define	XkbAlphabeticIndex	2
57817ca54c3Smrg#define	XkbKeypadIndex		3
57917ca54c3Smrg#define	XkbLastRequiredType	XkbKeypadIndex
58017ca54c3Smrg#define	XkbNumRequiredTypes	(XkbLastRequiredType+1)
58117ca54c3Smrg#define	XkbMaxKeyTypes		255
58217ca54c3Smrg
58317ca54c3Smrg#define	XkbOneLevelMask		(1<<0)
58417ca54c3Smrg#define	XkbTwoLevelMask		(1<<1)
58517ca54c3Smrg#define	XkbAlphabeticMask	(1<<2)
58617ca54c3Smrg#define	XkbKeypadMask		(1<<3)
58717ca54c3Smrg#define	XkbAllRequiredTypes	(0xf)
58817ca54c3Smrg
58917ca54c3Smrg#define	XkbShiftLevel(n)	((n)-1)
59017ca54c3Smrg#define	XkbShiftLevelMask(n)	(1<<((n)-1))
59117ca54c3Smrg
59217ca54c3Smrg    /*
59317ca54c3Smrg     * Extension name and version information
59417ca54c3Smrg     */
59517ca54c3Smrg#define	XkbName "XKEYBOARD"
59617ca54c3Smrg#define	XkbMajorVersion	1
59717ca54c3Smrg#define	XkbMinorVersion	0
59817ca54c3Smrg
59917ca54c3Smrg    /*
60017ca54c3Smrg     * Explicit map components:
60117ca54c3Smrg     *  - Used in the 'explicit' field of an XkbServerMap.  Specifies
60217ca54c3Smrg     *    the keyboard components that should _not_ be updated automatically
60317ca54c3Smrg     *    in response to core protocol keyboard mapping requests.
60417ca54c3Smrg     */
60517ca54c3Smrg#define	XkbExplicitKeyTypesMask	  (0x0f)
60617ca54c3Smrg#define	XkbExplicitKeyType1Mask	  (1<<0)
60717ca54c3Smrg#define	XkbExplicitKeyType2Mask	  (1<<1)
60817ca54c3Smrg#define	XkbExplicitKeyType3Mask	  (1<<2)
60917ca54c3Smrg#define	XkbExplicitKeyType4Mask	  (1<<3)
61017ca54c3Smrg#define	XkbExplicitInterpretMask  (1<<4)
61117ca54c3Smrg#define	XkbExplicitAutoRepeatMask (1<<5)
61217ca54c3Smrg#define	XkbExplicitBehaviorMask	  (1<<6)
61317ca54c3Smrg#define	XkbExplicitVModMapMask	  (1<<7)
61417ca54c3Smrg#define	XkbAllExplicitMask	  (0xff)
61517ca54c3Smrg
61617ca54c3Smrg    /*
61717ca54c3Smrg     * Map components masks:
61817ca54c3Smrg     * Those in AllMapComponentsMask:
61917ca54c3Smrg     *  - Specifies the individual fields to be loaded or changed for the
62017ca54c3Smrg     *    GetMap and SetMap requests.
62117ca54c3Smrg     * Those in ClientInfoMask:
62217ca54c3Smrg     *  - Specifies the components to be allocated by XkbAllocClientMap.
62317ca54c3Smrg     * Those in ServerInfoMask:
62417ca54c3Smrg     *  - Specifies the components to be allocated by XkbAllocServerMap.
62517ca54c3Smrg     */
62617ca54c3Smrg#define	XkbKeyTypesMask		(1<<0)
62717ca54c3Smrg#define	XkbKeySymsMask		(1<<1)
62817ca54c3Smrg#define	XkbModifierMapMask	(1<<2)
62917ca54c3Smrg#define	XkbExplicitComponentsMask (1<<3)
63017ca54c3Smrg#define XkbKeyActionsMask	(1<<4)
63117ca54c3Smrg#define	XkbKeyBehaviorsMask	(1<<5)
63217ca54c3Smrg#define	XkbVirtualModsMask	(1<<6)
63317ca54c3Smrg#define	XkbVirtualModMapMask	(1<<7)
63417ca54c3Smrg
63517ca54c3Smrg#define	XkbAllClientInfoMask	(XkbKeyTypesMask|XkbKeySymsMask|XkbModifierMapMask)
63617ca54c3Smrg#define	XkbAllServerInfoMask	(XkbExplicitComponentsMask|XkbKeyActionsMask|XkbKeyBehaviorsMask|XkbVirtualModsMask|XkbVirtualModMapMask)
63717ca54c3Smrg#define	XkbAllMapComponentsMask	(XkbAllClientInfoMask|XkbAllServerInfoMask)
63817ca54c3Smrg
63917ca54c3Smrg    /*
64017ca54c3Smrg     * Symbol interpretations flags:
64117ca54c3Smrg     *  - Used in the flags field of a symbol interpretation
64217ca54c3Smrg     */
64317ca54c3Smrg#define	XkbSI_AutoRepeat	(1<<0)
64417ca54c3Smrg#define	XkbSI_LockingKey	(1<<1)
64517ca54c3Smrg
64617ca54c3Smrg    /*
64717ca54c3Smrg     * Symbol interpretations match specification:
648ea1d6981Smrg     *  - Used in the match field of a symbol interpretation to specify
64917ca54c3Smrg     *    the conditions under which an interpretation is used.
65017ca54c3Smrg     */
65117ca54c3Smrg#define	XkbSI_LevelOneOnly	(0x80)
65217ca54c3Smrg#define	XkbSI_OpMask		(0x7f)
65317ca54c3Smrg#define	XkbSI_NoneOf		(0)
65417ca54c3Smrg#define	XkbSI_AnyOfOrNone	(1)
65517ca54c3Smrg#define	XkbSI_AnyOf		(2)
65617ca54c3Smrg#define	XkbSI_AllOf		(3)
65717ca54c3Smrg#define	XkbSI_Exactly		(4)
65817ca54c3Smrg
65917ca54c3Smrg    /*
66017ca54c3Smrg     * Indicator map flags:
66117ca54c3Smrg     *  - Used in the flags field of an indicator map to indicate the
66217ca54c3Smrg     *    conditions under which and indicator can be changed and the
66317ca54c3Smrg     *    effects of changing the indicator.
66417ca54c3Smrg     */
66517ca54c3Smrg#define	XkbIM_NoExplicit	(1L << 7)
66617ca54c3Smrg#define	XkbIM_NoAutomatic	(1L << 6)
66717ca54c3Smrg#define	XkbIM_LEDDrivesKB	(1L << 5)
66817ca54c3Smrg
66917ca54c3Smrg    /*
67017ca54c3Smrg     * Indicator map component specifications:
67117ca54c3Smrg     *  - Used by the 'which_groups' and 'which_mods' fields of an indicator
67217ca54c3Smrg     *    map to specify which keyboard components should be used to drive
67317ca54c3Smrg     *    the indicator.
67417ca54c3Smrg     */
67517ca54c3Smrg#define	XkbIM_UseBase		(1L << 0)
67617ca54c3Smrg#define	XkbIM_UseLatched	(1L << 1)
67717ca54c3Smrg#define	XkbIM_UseLocked		(1L << 2)
67817ca54c3Smrg#define	XkbIM_UseEffective	(1L << 3)
67917ca54c3Smrg#define	XkbIM_UseCompat		(1L << 4)
68017ca54c3Smrg
68117ca54c3Smrg#define	XkbIM_UseNone	  0
68217ca54c3Smrg#define	XkbIM_UseAnyGroup (XkbIM_UseBase|XkbIM_UseLatched|XkbIM_UseLocked\
68317ca54c3Smrg                           |XkbIM_UseEffective)
68417ca54c3Smrg#define	XkbIM_UseAnyMods  (XkbIM_UseAnyGroup|XkbIM_UseCompat)
68517ca54c3Smrg
68617ca54c3Smrg    /*
687ea1d6981Smrg     * Compatibility Map Components:
68817ca54c3Smrg     *  - Specifies the components to be allocated in XkbAllocCompatMap.
68917ca54c3Smrg     */
69017ca54c3Smrg#define	XkbSymInterpMask	(1<<0)
69117ca54c3Smrg#define	XkbGroupCompatMask	(1<<1)
69217ca54c3Smrg#define	XkbAllCompatMask	(0x3)
69317ca54c3Smrg
69417ca54c3Smrg    /*
69517ca54c3Smrg     * Names component mask:
69617ca54c3Smrg     *  - Specifies the names to be loaded or changed for the GetNames and
69717ca54c3Smrg     *    SetNames requests.
69817ca54c3Smrg     *  - Specifies the names that have changed in a NamesNotify event.
69917ca54c3Smrg     *  - Specifies the names components to be allocated by XkbAllocNames.
70017ca54c3Smrg     */
70117ca54c3Smrg#define	XkbKeycodesNameMask	(1<<0)
70217ca54c3Smrg#define	XkbGeometryNameMask	(1<<1)
70317ca54c3Smrg#define	XkbSymbolsNameMask	(1<<2)
70417ca54c3Smrg#define	XkbPhysSymbolsNameMask	(1<<3)
70517ca54c3Smrg#define	XkbTypesNameMask	(1<<4)
70617ca54c3Smrg#define	XkbCompatNameMask 	(1<<5)
70717ca54c3Smrg#define	XkbKeyTypeNamesMask	(1<<6)
70817ca54c3Smrg#define	XkbKTLevelNamesMask	(1<<7)
70917ca54c3Smrg#define	XkbIndicatorNamesMask	(1<<8)
71017ca54c3Smrg#define	XkbKeyNamesMask		(1<<9)
71117ca54c3Smrg#define	XkbKeyAliasesMask	(1<<10)
71217ca54c3Smrg#define	XkbVirtualModNamesMask	(1<<11)
71317ca54c3Smrg#define	XkbGroupNamesMask	(1<<12)
71417ca54c3Smrg#define	XkbRGNamesMask		(1<<13)
71517ca54c3Smrg#define	XkbComponentNamesMask	(0x3f)
71617ca54c3Smrg#define	XkbAllNamesMask		(0x3fff)
71717ca54c3Smrg
71817ca54c3Smrg    /*
71917ca54c3Smrg     * GetByName components:
72017ca54c3Smrg     *  - Specifies desired or necessary components to GetKbdByName request.
72117ca54c3Smrg     *  - Reports the components that were found in a GetKbdByNameReply
72217ca54c3Smrg     */
72317ca54c3Smrg#define	XkbGBN_TypesMask		(1L << 0)
72417ca54c3Smrg#define	XkbGBN_CompatMapMask		(1L << 1)
72517ca54c3Smrg#define	XkbGBN_ClientSymbolsMask	(1L << 2)
72617ca54c3Smrg#define	XkbGBN_ServerSymbolsMask	(1L << 3)
72717ca54c3Smrg#define	XkbGBN_SymbolsMask (XkbGBN_ClientSymbolsMask|XkbGBN_ServerSymbolsMask)
72817ca54c3Smrg#define	XkbGBN_IndicatorMapMask		(1L << 4)
72917ca54c3Smrg#define	XkbGBN_KeyNamesMask		(1L << 5)
73017ca54c3Smrg#define	XkbGBN_GeometryMask		(1L << 6)
73117ca54c3Smrg#define	XkbGBN_OtherNamesMask		(1L << 7)
73217ca54c3Smrg#define	XkbGBN_AllComponentsMask	(0xff)
73317ca54c3Smrg
73417ca54c3Smrg     /*
73517ca54c3Smrg      * ListComponents flags
73617ca54c3Smrg      */
73717ca54c3Smrg#define	XkbLC_Hidden			(1L <<  0)
73817ca54c3Smrg#define	XkbLC_Default			(1L <<  1)
73917ca54c3Smrg#define	XkbLC_Partial			(1L <<  2)
74017ca54c3Smrg
74117ca54c3Smrg#define	XkbLC_AlphanumericKeys		(1L <<  8)
74217ca54c3Smrg#define	XkbLC_ModifierKeys		(1L <<  9)
74317ca54c3Smrg#define	XkbLC_KeypadKeys		(1L << 10)
74417ca54c3Smrg#define	XkbLC_FunctionKeys		(1L << 11)
74517ca54c3Smrg#define	XkbLC_AlternateGroup		(1L << 12)
74617ca54c3Smrg
74717ca54c3Smrg    /*
74817ca54c3Smrg     * X Input Extension Interactions
74917ca54c3Smrg     * - Specifies the possible interactions between XKB and the X input
75017ca54c3Smrg     *   extension
75117ca54c3Smrg     * - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo)
75217ca54c3Smrg     *   XKB information about an extension device.
75317ca54c3Smrg     * - Reports the list of supported optional features in the reply to
75417ca54c3Smrg     *   XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event.
75517ca54c3Smrg     * XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify
75617ca54c3Smrg     * events to indicate an attempt to use an unsupported feature.
75717ca54c3Smrg     */
75817ca54c3Smrg#define	XkbXI_KeyboardsMask		(1L << 0)
75917ca54c3Smrg#define	XkbXI_ButtonActionsMask		(1L << 1)
76017ca54c3Smrg#define	XkbXI_IndicatorNamesMask	(1L << 2)
76117ca54c3Smrg#define	XkbXI_IndicatorMapsMask		(1L << 3)
76217ca54c3Smrg#define	XkbXI_IndicatorStateMask	(1L << 4)
76317ca54c3Smrg#define	XkbXI_UnsupportedFeatureMask	(1L << 15)
76417ca54c3Smrg#define	XkbXI_AllFeaturesMask		(0x001f)
76517ca54c3Smrg#define	XkbXI_AllDeviceFeaturesMask	(0x001e)
76617ca54c3Smrg
76717ca54c3Smrg#define	XkbXI_IndicatorsMask		(0x001c)
76817ca54c3Smrg#define	XkbAllExtensionDeviceEventsMask (0x801f)
76917ca54c3Smrg
77017ca54c3Smrg    /*
77117ca54c3Smrg     * Per-Client Flags:
77217ca54c3Smrg     *  - Specifies flags to be changed by the PerClientFlags request.
77317ca54c3Smrg     */
77417ca54c3Smrg#define	XkbPCF_DetectableAutoRepeatMask	(1L << 0)
77517ca54c3Smrg#define	XkbPCF_GrabsUseXKBStateMask	(1L << 1)
77617ca54c3Smrg#define	XkbPCF_AutoResetControlsMask	(1L << 2)
77717ca54c3Smrg#define	XkbPCF_LookupStateWhenGrabbed	(1L << 3)
77817ca54c3Smrg#define	XkbPCF_SendEventUsesXKBState	(1L << 4)
77917ca54c3Smrg#define	XkbPCF_AllFlagsMask		(0x1F)
78017ca54c3Smrg
78117ca54c3Smrg    /*
78217ca54c3Smrg     * Debugging flags and controls
78317ca54c3Smrg     */
78417ca54c3Smrg#define	XkbDF_DisableLocks	(1<<0)
78517ca54c3Smrg
78617ca54c3Smrg#endif /* _XKB_H_ */
787