mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-30 21:21:10 +00:00 
			
		
		
		
	
		
			
	
	
		
			787 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			787 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | /************************************************************
 | ||
|  | Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. | ||
|  | 
 | ||
|  | Permission to use, copy, modify, and distribute this | ||
|  | software and its documentation for any purpose and without | ||
|  | fee is hereby granted, provided that the above copyright | ||
|  | notice appear in all copies and that both that copyright | ||
|  | notice and this permission notice appear in supporting | ||
|  | documentation, and that the name of Silicon Graphics not be | ||
|  | used in advertising or publicity pertaining to distribution | ||
|  | of the software without specific prior written permission. | ||
|  | Silicon Graphics makes no representation about the suitability | ||
|  | of this software for any purpose. It is provided "as is" | ||
|  | without any express or implied warranty. | ||
|  | 
 | ||
|  | SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS | ||
|  | SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | ||
|  | AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON | ||
|  | GRAPHICS BE LIABLE FOR 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. | ||
|  | 
 | ||
|  | ********************************************************/ | ||
|  | 
 | ||
|  | #ifndef _XKB_H_
 | ||
|  | #define	_XKB_H_
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * XKB request codes, used in: | ||
|  |      *  -  xkbReqType field of all requests | ||
|  |      *  -  requestMinor field of some events | ||
|  |      */ | ||
|  | #define	X_kbUseExtension		 0
 | ||
|  | #define	X_kbSelectEvents	 	 1
 | ||
|  | #define	X_kbBell			 3
 | ||
|  | #define	X_kbGetState			 4
 | ||
|  | #define	X_kbLatchLockState		 5
 | ||
|  | #define	X_kbGetControls			 6
 | ||
|  | #define	X_kbSetControls			 7
 | ||
|  | #define	X_kbGetMap			 8
 | ||
|  | #define	X_kbSetMap			 9
 | ||
|  | #define	X_kbGetCompatMap		10
 | ||
|  | #define	X_kbSetCompatMap		11
 | ||
|  | #define	X_kbGetIndicatorState		12
 | ||
|  | #define	X_kbGetIndicatorMap		13
 | ||
|  | #define	X_kbSetIndicatorMap		14
 | ||
|  | #define	X_kbGetNamedIndicator		15
 | ||
|  | #define	X_kbSetNamedIndicator		16
 | ||
|  | #define	X_kbGetNames			17
 | ||
|  | #define	X_kbSetNames			18
 | ||
|  | #define	X_kbGetGeometry			19
 | ||
|  | #define	X_kbSetGeometry			20
 | ||
|  | #define	X_kbPerClientFlags		21
 | ||
|  | #define	X_kbListComponents		22
 | ||
|  | #define	X_kbGetKbdByName		23
 | ||
|  | #define	X_kbGetDeviceInfo		24
 | ||
|  | #define	X_kbSetDeviceInfo		25
 | ||
|  | #define	X_kbSetDebuggingFlags		101
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * In the X sense, XKB reports only one event. | ||
|  |      * The type field of all XKB events is XkbEventCode | ||
|  |      */ | ||
|  | #define	XkbEventCode			0
 | ||
|  | #define	XkbNumberEvents			(XkbEventCode+1)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * XKB has a minor event code so it can use one X event code for | ||
|  |      * multiple purposes. | ||
|  |      *  - reported in the xkbType field of all XKB events. | ||
|  |      *  - XkbSelectEventDetails: Indicates the event for which event details | ||
|  |      *    are being changed | ||
|  |      */ | ||
|  | #define	XkbNewKeyboardNotify		0
 | ||
|  | #define XkbMapNotify			1
 | ||
|  | #define	XkbStateNotify			2
 | ||
|  | #define XkbControlsNotify		3
 | ||
|  | #define	XkbIndicatorStateNotify		4
 | ||
|  | #define	XkbIndicatorMapNotify		5
 | ||
|  | #define	XkbNamesNotify			6
 | ||
|  | #define XkbCompatMapNotify		7
 | ||
|  | #define	XkbBellNotify			8
 | ||
|  | #define	XkbActionMessage		9
 | ||
|  | #define	XkbAccessXNotify		10
 | ||
|  | #define	XkbExtensionDeviceNotify	11
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Event Mask: | ||
|  |      *  - XkbSelectEvents:  Specifies event interest. | ||
|  |      */ | ||
|  | #define	XkbNewKeyboardNotifyMask	(1L << 0)
 | ||
|  | #define XkbMapNotifyMask		(1L << 1)
 | ||
|  | #define	XkbStateNotifyMask		(1L << 2)
 | ||
|  | #define XkbControlsNotifyMask		(1L << 3)
 | ||
|  | #define	XkbIndicatorStateNotifyMask	(1L << 4)
 | ||
|  | #define	XkbIndicatorMapNotifyMask	(1L << 5)
 | ||
|  | #define	XkbNamesNotifyMask		(1L << 6)
 | ||
|  | #define XkbCompatMapNotifyMask		(1L << 7)
 | ||
|  | #define	XkbBellNotifyMask		(1L << 8)
 | ||
|  | #define	XkbActionMessageMask		(1L << 9)
 | ||
|  | #define	XkbAccessXNotifyMask		(1L << 10)
 | ||
|  | #define	XkbExtensionDeviceNotifyMask	(1L << 11)
 | ||
|  | #define	XkbAllEventsMask		(0xFFF)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * NewKeyboardNotify event details: | ||
|  |      */ | ||
|  | #define	XkbNKN_KeycodesMask		(1L << 0)
 | ||
|  | #define	XkbNKN_GeometryMask		(1L << 1)
 | ||
|  | #define	XkbNKN_DeviceIDMask		(1L << 2)
 | ||
|  | #define	XkbAllNewKeyboardEventsMask	(0x7)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * AccessXNotify event types: | ||
|  |      *  - The 'what' field of AccessXNotify events reports the | ||
|  |      *    reason that the event was generated. | ||
|  |      */ | ||
|  | #define	XkbAXN_SKPress			0
 | ||
|  | #define	XkbAXN_SKAccept			1
 | ||
|  | #define	XkbAXN_SKReject			2
 | ||
|  | #define	XkbAXN_SKRelease		3
 | ||
|  | #define	XkbAXN_BKAccept			4
 | ||
|  | #define	XkbAXN_BKReject			5
 | ||
|  | #define	XkbAXN_AXKWarning		6
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * AccessXNotify details: | ||
|  |      * - Used as an event detail mask to limit the conditions under which | ||
|  |      *   AccessXNotify events are reported | ||
|  |      */ | ||
|  | #define	XkbAXN_SKPressMask		(1L << 0)
 | ||
|  | #define	XkbAXN_SKAcceptMask		(1L << 1)
 | ||
|  | #define	XkbAXN_SKRejectMask		(1L << 2)
 | ||
|  | #define	XkbAXN_SKReleaseMask		(1L << 3)
 | ||
|  | #define	XkbAXN_BKAcceptMask		(1L << 4)
 | ||
|  | #define	XkbAXN_BKRejectMask		(1L << 5)
 | ||
|  | #define	XkbAXN_AXKWarningMask		(1L << 6)
 | ||
|  | #define	XkbAllAccessXEventsMask		(0x7f)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Miscellaneous event details: | ||
|  |      * - event detail masks for assorted events that don't really | ||
|  |      *   have any details. | ||
|  |      */ | ||
|  | #define	XkbAllStateEventsMask		XkbAllStateComponentsMask
 | ||
|  | #define	XkbAllMapEventsMask		XkbAllMapComponentsMask
 | ||
|  | #define	XkbAllControlEventsMask		XkbAllControlsMask
 | ||
|  | #define	XkbAllIndicatorEventsMask	XkbAllIndicatorsMask
 | ||
|  | #define	XkbAllNameEventsMask		XkbAllNamesMask
 | ||
|  | #define	XkbAllCompatMapEventsMask	XkbAllCompatMask
 | ||
|  | #define	XkbAllBellEventsMask		(1L << 0)
 | ||
|  | #define	XkbAllActionMessagesMask	(1L << 0)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * XKB reports one error:  BadKeyboard | ||
|  |      * A further reason for the error is encoded into to most significant | ||
|  |      * byte of the resourceID for the error: | ||
|  |      *    XkbErr_BadDevice - the device in question was not found | ||
|  |      *    XkbErr_BadClass  - the device was found but it doesn't belong to | ||
|  |      *                       the appropriate class. | ||
|  |      *    XkbErr_BadId     - the device was found and belongs to the right | ||
|  |      *                       class, but not feedback with a matching id was | ||
|  |      *                       found. | ||
|  |      * The low byte of the resourceID for this error contains the device | ||
|  |      * id, class specifier or feedback id that failed. | ||
|  |      */ | ||
|  | #define	XkbKeyboard			0
 | ||
|  | #define	XkbNumberErrors			1
 | ||
|  | 
 | ||
|  | #define	XkbErr_BadDevice	0xff
 | ||
|  | #define	XkbErr_BadClass		0xfe
 | ||
|  | #define	XkbErr_BadId		0xfd
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Keyboard Components Mask: | ||
|  |      * - Specifies the components that follow a GetKeyboardByNameReply | ||
|  |      */ | ||
|  | #define	XkbClientMapMask		(1L << 0)
 | ||
|  | #define	XkbServerMapMask		(1L << 1)
 | ||
|  | #define	XkbCompatMapMask		(1L << 2)
 | ||
|  | #define	XkbIndicatorMapMask		(1L << 3)
 | ||
|  | #define	XkbNamesMask			(1L << 4)
 | ||
|  | #define	XkbGeometryMask			(1L << 5)
 | ||
|  | #define	XkbControlsMask			(1L << 6)
 | ||
|  | #define	XkbAllComponentsMask		(0x7f)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * State detail mask: | ||
|  |      *  - The 'changed' field of StateNotify events reports which of | ||
|  |      *    the keyboard state components have changed. | ||
|  |      *  - Used as an event detail mask to limit the conditions under | ||
|  |      *    which StateNotify events are reported. | ||
|  |      */ | ||
|  | #define	XkbModifierStateMask		(1L << 0)
 | ||
|  | #define	XkbModifierBaseMask		(1L << 1)
 | ||
|  | #define	XkbModifierLatchMask		(1L << 2)
 | ||
|  | #define	XkbModifierLockMask		(1L << 3)
 | ||
|  | #define	XkbGroupStateMask		(1L << 4)
 | ||
|  | #define	XkbGroupBaseMask		(1L << 5)
 | ||
|  | #define	XkbGroupLatchMask		(1L << 6)
 | ||
|  | #define XkbGroupLockMask		(1L << 7)
 | ||
|  | #define	XkbCompatStateMask		(1L << 8)
 | ||
|  | #define	XkbGrabModsMask			(1L << 9)
 | ||
|  | #define	XkbCompatGrabModsMask		(1L << 10)
 | ||
|  | #define	XkbLookupModsMask		(1L << 11)
 | ||
|  | #define	XkbCompatLookupModsMask		(1L << 12)
 | ||
|  | #define	XkbPointerButtonMask		(1L << 13)
 | ||
|  | #define	XkbAllStateComponentsMask	(0x3fff)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Controls detail masks: | ||
|  |      *  The controls specified in XkbAllControlsMask: | ||
|  |      *  - The 'changed' field of ControlsNotify events reports which of | ||
|  |      *    the keyboard controls have changed. | ||
|  |      *  - The 'changeControls' field of the SetControls request specifies | ||
|  |      *    the controls for which values are to be changed. | ||
|  |      *  - Used as an event detail mask to limit the conditions under | ||
|  |      *    which ControlsNotify events are reported. | ||
|  |      * | ||
|  |      *  The controls specified in the XkbAllBooleanCtrlsMask: | ||
|  |      *  - The 'enabledControls' field of ControlsNotify events reports the | ||
|  |      *    current status of the boolean controls. | ||
|  |      *  - The 'enabledControlsChanges' field of ControlsNotify events reports | ||
|  |      *    any boolean controls that have been turned on or off. | ||
|  |      *  - The 'affectEnabledControls' and 'enabledControls' fields of the | ||
|  |      *    kbSetControls request change the set of enabled controls. | ||
|  |      *  - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of | ||
|  |      *    an XkbControlsRec specify the controls to be changed if the keyboard | ||
|  |      *    times out and the values to which they should be changed. | ||
|  |      *  - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags | ||
|  |      *    request specifies the specify the controls to be reset when the | ||
|  |      *    client exits and the values to which they should be reset. | ||
|  |      *  - The 'ctrls' field of an indicator map specifies the controls | ||
|  |      *    that drive the indicator. | ||
|  |      *  - Specifies the boolean controls affected by the SetControls and | ||
|  |      *    LockControls key actions. | ||
|  |      */ | ||
|  | #define	XkbRepeatKeysMask	 (1L << 0)
 | ||
|  | #define	XkbSlowKeysMask		 (1L << 1)
 | ||
|  | #define	XkbBounceKeysMask	 (1L << 2)
 | ||
|  | #define	XkbStickyKeysMask	 (1L << 3)
 | ||
|  | #define	XkbMouseKeysMask	 (1L << 4)
 | ||
|  | #define	XkbMouseKeysAccelMask	 (1L << 5)
 | ||
|  | #define	XkbAccessXKeysMask	 (1L << 6)
 | ||
|  | #define	XkbAccessXTimeoutMask	 (1L << 7)
 | ||
|  | #define	XkbAccessXFeedbackMask	 (1L << 8)
 | ||
|  | #define	XkbAudibleBellMask	 (1L << 9)
 | ||
|  | #define	XkbOverlay1Mask		 (1L << 10)
 | ||
|  | #define	XkbOverlay2Mask		 (1L << 11)
 | ||
|  | #define	XkbIgnoreGroupLockMask	 (1L << 12)
 | ||
|  | #define	XkbGroupsWrapMask	 (1L << 27)
 | ||
|  | #define	XkbInternalModsMask	 (1L << 28)
 | ||
|  | #define	XkbIgnoreLockModsMask	 (1L << 29)
 | ||
|  | #define	XkbPerKeyRepeatMask	 (1L << 30)
 | ||
|  | #define	XkbControlsEnabledMask	 (1L << 31)
 | ||
|  | 
 | ||
|  | #define	XkbAccessXOptionsMask    (XkbStickyKeysMask|XkbAccessXFeedbackMask)
 | ||
|  | 
 | ||
|  | #define	XkbAllBooleanCtrlsMask	 (0x00001FFF)
 | ||
|  | #define	XkbAllControlsMask	 (0xF8001FFF)
 | ||
|  | #define	XkbAllControlEventsMask	 XkbAllControlsMask
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * AccessX Options Mask | ||
|  |      *  - The 'accessXOptions' field of an XkbControlsRec specifies the | ||
|  |      *    AccessX options that are currently in effect. | ||
|  |      *  - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues' | ||
|  |      *    fields of an XkbControlsRec specify the Access X options to be | ||
|  |      *    changed if the keyboard times out and the values to which they | ||
|  |      *    should be changed. | ||
|  |      */ | ||
|  | #define	XkbAX_SKPressFBMask	(1L << 0)
 | ||
|  | #define	XkbAX_SKAcceptFBMask	(1L << 1)
 | ||
|  | #define	XkbAX_FeatureFBMask	(1L << 2)
 | ||
|  | #define	XkbAX_SlowWarnFBMask	(1L << 3)
 | ||
|  | #define	XkbAX_IndicatorFBMask	(1L << 4)
 | ||
|  | #define	XkbAX_StickyKeysFBMask	(1L << 5)
 | ||
|  | #define	XkbAX_TwoKeysMask	(1L << 6)
 | ||
|  | #define	XkbAX_LatchToLockMask	(1L << 7)
 | ||
|  | #define	XkbAX_SKReleaseFBMask	(1L << 8)
 | ||
|  | #define	XkbAX_SKRejectFBMask	(1L << 9)
 | ||
|  | #define	XkbAX_BKRejectFBMask	(1L << 10)
 | ||
|  | #define	XkbAX_DumbBellFBMask	(1L << 11)
 | ||
|  | #define	XkbAX_FBOptionsMask	(0xF3F)
 | ||
|  | #define	XkbAX_SKOptionsMask	(0x0C0)
 | ||
|  | #define	XkbAX_AllOptionsMask	(0xFFF)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * XkbUseCoreKbd is used to specify the core keyboard without having | ||
|  |      * 			to look up its X input extension identifier. | ||
|  |      * XkbUseCorePtr is used to specify the core pointer without having | ||
|  |      *			to look up its X input extension identifier. | ||
|  |      * XkbDfltXIClass is used to specify "don't care" any place that the | ||
|  |      *			XKB protocol is looking for an X Input Extension | ||
|  |      *			device class. | ||
|  |      * XkbDfltXIId is used to specify "don't care" any place that the | ||
|  |      *			XKB protocol is looking for an X Input Extension | ||
|  |      *			feedback identifier. | ||
|  |      * XkbAllXIClasses is used to get information about all device indicators, | ||
|  |      *			whether they're part of the indicator feedback class | ||
|  |      *			or the keyboard feedback class. | ||
|  |      * XkbAllXIIds is used to get information about all device indicator | ||
|  |      *			feedbacks without having to list them. | ||
|  |      * XkbXINone is used to indicate that no class or id has been specified. | ||
|  |      * XkbLegalXILedClass(c)  True if 'c' specifies a legal class with LEDs | ||
|  |      * XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells | ||
|  |      * XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device | ||
|  |      * XkbExplicitXIClass(c)  True if 'c' explicitly specifies a device class | ||
|  |      * XkbExplicitXIId(c)     True if 'i' explicitly specifies a device id | ||
|  |      * XkbSingleXIClass(c)    True if 'c' specifies exactly one device class, | ||
|  |      *                        including the default. | ||
|  |      * XkbSingleXIId(i)       True if 'i' specifies exactly one device | ||
|  |      *	                      identifier, including the default. | ||
|  |      */ | ||
|  | #define	XkbUseCoreKbd		0x0100
 | ||
|  | #define	XkbUseCorePtr		0x0200
 | ||
|  | #define	XkbDfltXIClass		0x0300
 | ||
|  | #define	XkbDfltXIId		0x0400
 | ||
|  | #define	XkbAllXIClasses		0x0500
 | ||
|  | #define	XkbAllXIIds		0x0600
 | ||
|  | #define	XkbXINone		0xff00
 | ||
|  | 
 | ||
|  | #define	XkbLegalXILedClass(c)	(((c)==KbdFeedbackClass)||\
 | ||
|  | 					((c)==LedFeedbackClass)||\ | ||
|  | 					((c)==XkbDfltXIClass)||\ | ||
|  | 					((c)==XkbAllXIClasses)) | ||
|  | #define	XkbLegalXIBellClass(c)	(((c)==KbdFeedbackClass)||\
 | ||
|  | 					((c)==BellFeedbackClass)||\ | ||
|  | 					((c)==XkbDfltXIClass)||\ | ||
|  | 					((c)==XkbAllXIClasses)) | ||
|  | #define	XkbExplicitXIDevice(c)	(((c)&(~0xff))==0)
 | ||
|  | #define	XkbExplicitXIClass(c)	(((c)&(~0xff))==0)
 | ||
|  | #define	XkbExplicitXIId(c)	(((c)&(~0xff))==0)
 | ||
|  | #define	XkbSingleXIClass(c)	((((c)&(~0xff))==0)||((c)==XkbDfltXIClass))
 | ||
|  | #define	XkbSingleXIId(c)	((((c)&(~0xff))==0)||((c)==XkbDfltXIId))
 | ||
|  | 
 | ||
|  | #define	XkbNoModifier		0xff
 | ||
|  | #define	XkbNoShiftLevel		0xff
 | ||
|  | #define	XkbNoShape		0xff
 | ||
|  | #define	XkbNoIndicator		0xff
 | ||
|  | 
 | ||
|  | #define	XkbNoModifierMask	0
 | ||
|  | #define	XkbAllModifiersMask	0xff
 | ||
|  | #define	XkbAllVirtualModsMask	0xffff
 | ||
|  | 
 | ||
|  | #define	XkbNumKbdGroups		4
 | ||
|  | #define	XkbMaxKbdGroup		(XkbNumKbdGroups-1)
 | ||
|  | 
 | ||
|  | #define	XkbMaxMouseKeysBtn	4
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Group Index and Mask: | ||
|  |      *  - Indices into the kt_index array of a key type. | ||
|  |      *  - Mask specifies types to be changed for XkbChangeTypesOfKey | ||
|  |      */ | ||
|  | #define	XkbGroup1Index		0
 | ||
|  | #define	XkbGroup2Index		1
 | ||
|  | #define	XkbGroup3Index		2
 | ||
|  | #define	XkbGroup4Index		3
 | ||
|  | #define	XkbAnyGroup		254
 | ||
|  | #define	XkbAllGroups		255
 | ||
|  | 
 | ||
|  | #define	XkbGroup1Mask		(1<<0)
 | ||
|  | #define	XkbGroup2Mask		(1<<1)
 | ||
|  | #define	XkbGroup3Mask		(1<<2)
 | ||
|  | #define	XkbGroup4Mask		(1<<3)
 | ||
|  | #define	XkbAnyGroupMask		(1<<7)
 | ||
|  | #define	XkbAllGroupsMask	(0xf)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * BuildCoreState: Given a keyboard group and a modifier state, | ||
|  |      *                 construct the value to be reported an event. | ||
|  |      * GroupForCoreState:  Given the state reported in an event, | ||
|  |      *                 determine the keyboard group. | ||
|  |      * IsLegalGroup:   Returns TRUE if 'g' is a valid group index. | ||
|  |      */ | ||
|  | #define	XkbBuildCoreState(m,g)	((((g)&0x3)<<13)|((m)&0xff))
 | ||
|  | #define XkbGroupForCoreState(s)	(((s)>>13)&0x3)
 | ||
|  | #define	XkbIsLegalGroup(g)	(((g)>=0)&&((g)<XkbNumKbdGroups))
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * GroupsWrap values: | ||
|  |      *  - The 'groupsWrap' field of an XkbControlsRec specifies the | ||
|  |      *    treatment of out of range groups. | ||
|  |      *  - Bits 6 and 7 of the group info field of a key symbol map | ||
|  |      *    specify the interpretation of out of range groups for the | ||
|  |      *    corresponding key. | ||
|  |      */ | ||
|  | #define	XkbWrapIntoRange	(0x00)
 | ||
|  | #define	XkbClampIntoRange	(0x40)
 | ||
|  | #define	XkbRedirectIntoRange	(0x80)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Action flags:  Reported in the 'flags' field of most key actions. | ||
|  |      * Interpretation depends on the type of the action; not all actions | ||
|  |      * accept all flags. | ||
|  |      * | ||
|  |      * Option			Used for Actions | ||
|  |      * ------			---------------- | ||
|  |      * ClearLocks		SetMods, LatchMods, SetGroup, LatchGroup | ||
|  |      * LatchToLock		SetMods, LatchMods, SetGroup, LatchGroup | ||
|  |      * LockNoLock		LockMods, ISOLock, LockPtrBtn, LockDeviceBtn | ||
|  |      * LockNoUnlock		LockMods, ISOLock, LockPtrBtn, LockDeviceBtn | ||
|  |      * UseModMapMods		SetMods, LatchMods, LockMods, ISOLock | ||
|  |      * GroupAbsolute		SetGroup, LatchGroup, LockGroup, ISOLock | ||
|  |      * UseDfltButton		PtrBtn, LockPtrBtn | ||
|  |      * NoAcceleration		MovePtr | ||
|  |      * MoveAbsoluteX		MovePtr | ||
|  |      * MoveAbsoluteY		MovePtr | ||
|  |      * ISODfltIsGroup		ISOLock | ||
|  |      * ISONoAffectMods		ISOLock | ||
|  |      * ISONoAffectGroup		ISOLock | ||
|  |      * ISONoAffectPtr		ISOLock | ||
|  |      * ISONoAffectCtrls		ISOLock | ||
|  |      * MessageOnPress		ActionMessage | ||
|  |      * MessageOnRelease		ActionMessage | ||
|  |      * MessageGenKeyEvent	ActionMessage | ||
|  |      * AffectDfltBtn		SetPtrDflt | ||
|  |      * DfltBtnAbsolute		SetPtrDflt | ||
|  |      * SwitchApplication	SwitchScreen | ||
|  |      * SwitchAbsolute		SwitchScreen | ||
|  |      */ | ||
|  | 
 | ||
|  | #define	XkbSA_ClearLocks	(1L << 0)
 | ||
|  | #define	XkbSA_LatchToLock	(1L << 1)
 | ||
|  | 
 | ||
|  | #define	XkbSA_LockNoLock	(1L << 0)
 | ||
|  | #define	XkbSA_LockNoUnlock	(1L << 1)
 | ||
|  | 
 | ||
|  | #define	XkbSA_UseModMapMods	(1L << 2)
 | ||
|  | 
 | ||
|  | #define	XkbSA_GroupAbsolute	(1L << 2)
 | ||
|  | #define	XkbSA_UseDfltButton	0
 | ||
|  | 
 | ||
|  | #define	XkbSA_NoAcceleration	(1L << 0)
 | ||
|  | #define	XkbSA_MoveAbsoluteX	(1L << 1)
 | ||
|  | #define	XkbSA_MoveAbsoluteY	(1L << 2)
 | ||
|  | 
 | ||
|  | #define	XkbSA_ISODfltIsGroup 	 (1L << 7)
 | ||
|  | #define	XkbSA_ISONoAffectMods	 (1L << 6)
 | ||
|  | #define	XkbSA_ISONoAffectGroup	 (1L << 5)
 | ||
|  | #define	XkbSA_ISONoAffectPtr	 (1L << 4)
 | ||
|  | #define	XkbSA_ISONoAffectCtrls	 (1L << 3)
 | ||
|  | #define	XkbSA_ISOAffectMask	 (0x78)
 | ||
|  | 
 | ||
|  | #define	XkbSA_MessageOnPress	 (1L << 0)
 | ||
|  | #define	XkbSA_MessageOnRelease	 (1L << 1)
 | ||
|  | #define	XkbSA_MessageGenKeyEvent (1L << 2)
 | ||
|  | 
 | ||
|  | #define	XkbSA_AffectDfltBtn	1
 | ||
|  | #define	XkbSA_DfltBtnAbsolute	(1L << 2)
 | ||
|  | 
 | ||
|  | #define	XkbSA_SwitchApplication	(1L << 0)
 | ||
|  | #define	XkbSA_SwitchAbsolute	(1L << 2)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * The following values apply to the SA_DeviceValuator | ||
|  |      * action only.  Valuator operations specify the action | ||
|  |      * to be taken.   Values specified in the action are | ||
|  |      * multiplied by 2^scale before they are applied. | ||
|  |      */ | ||
|  | #define	XkbSA_IgnoreVal		(0x00)
 | ||
|  | #define	XkbSA_SetValMin		(0x10)
 | ||
|  | #define	XkbSA_SetValCenter	(0x20)
 | ||
|  | #define	XkbSA_SetValMax		(0x30)
 | ||
|  | #define	XkbSA_SetValRelative	(0x40)
 | ||
|  | #define	XkbSA_SetValAbsolute	(0x50)
 | ||
|  | #define	XkbSA_ValOpMask		(0x70)
 | ||
|  | #define	XkbSA_ValScaleMask	(0x07)
 | ||
|  | #define	XkbSA_ValOp(a)		((a)&XkbSA_ValOpMask)
 | ||
|  | #define	XkbSA_ValScale(a)	((a)&XkbSA_ValScaleMask)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Action types: specifies the type of a key action.  Reported in the | ||
|  |      * type field of all key actions. | ||
|  |      */ | ||
|  | #define	XkbSA_NoAction		0x00
 | ||
|  | #define	XkbSA_SetMods		0x01
 | ||
|  | #define	XkbSA_LatchMods		0x02
 | ||
|  | #define	XkbSA_LockMods		0x03
 | ||
|  | #define	XkbSA_SetGroup		0x04
 | ||
|  | #define	XkbSA_LatchGroup	0x05
 | ||
|  | #define	XkbSA_LockGroup		0x06
 | ||
|  | #define	XkbSA_MovePtr		0x07
 | ||
|  | #define	XkbSA_PtrBtn		0x08
 | ||
|  | #define	XkbSA_LockPtrBtn	0x09
 | ||
|  | #define	XkbSA_SetPtrDflt	0x0a
 | ||
|  | #define	XkbSA_ISOLock		0x0b
 | ||
|  | #define	XkbSA_Terminate		0x0c
 | ||
|  | #define	XkbSA_SwitchScreen	0x0d
 | ||
|  | #define	XkbSA_SetControls	0x0e
 | ||
|  | #define	XkbSA_LockControls	0x0f
 | ||
|  | #define	XkbSA_ActionMessage	0x10
 | ||
|  | #define	XkbSA_RedirectKey	0x11
 | ||
|  | #define	XkbSA_DeviceBtn		0x12
 | ||
|  | #define	XkbSA_LockDeviceBtn	0x13
 | ||
|  | #define	XkbSA_DeviceValuator	0x14
 | ||
|  | #define	XkbSA_LastAction	XkbSA_DeviceValuator
 | ||
|  | #define	XkbSA_NumActions	(XkbSA_LastAction+1)
 | ||
|  | 
 | ||
|  | #define	XkbSA_XFree86Private	0x86
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Specifies the key actions that clear latched groups or modifiers. | ||
|  |      */ | ||
|  | #define	XkbSA_BreakLatch \
 | ||
|  | 	((1<<XkbSA_NoAction)|(1<<XkbSA_PtrBtn)|(1<<XkbSA_LockPtrBtn)|\ | ||
|  | 	(1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\ | ||
|  | 	(1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\ | ||
|  | 	(1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn)) | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Macros to classify key actions | ||
|  |      */ | ||
|  | #define	XkbIsModAction(a)	(((a)->type>=Xkb_SASetMods)&&((a)->type<=XkbSA_LockMods))
 | ||
|  | #define	XkbIsGroupAction(a)	(((a)->type>=XkbSA_SetGroup)&&((a)->type<=XkbSA_LockGroup))
 | ||
|  | #define	XkbIsPtrAction(a)	(((a)->type>=XkbSA_MovePtr)&&((a)->type<=XkbSA_SetPtrDflt))
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Key Behavior Qualifier: | ||
|  |      *    KB_Permanent indicates that the behavior describes an unalterable | ||
|  |      *    characteristic of the keyboard, not an XKB software-simulation of | ||
|  |      *    the listed behavior. | ||
|  |      * Key Behavior Types: | ||
|  |      *    Specifies the behavior of the underlying key. | ||
|  |      */ | ||
|  | #define	XkbKB_Permanent		0x80
 | ||
|  | #define	XkbKB_OpMask		0x7f
 | ||
|  | 
 | ||
|  | #define	XkbKB_Default		0x00
 | ||
|  | #define	XkbKB_Lock		0x01
 | ||
|  | #define	XkbKB_RadioGroup	0x02
 | ||
|  | #define	XkbKB_Overlay1		0x03
 | ||
|  | #define	XkbKB_Overlay2		0x04
 | ||
|  | 
 | ||
|  | #define	XkbKB_RGAllowNone	0x80
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Various macros which describe the range of legal keycodes. | ||
|  |      */ | ||
|  | #define	XkbMinLegalKeyCode	8
 | ||
|  | #define	XkbMaxLegalKeyCode	255
 | ||
|  | #define	XkbMaxKeyCount		(XkbMaxLegalKeyCode-XkbMinLegalKeyCode+1)
 | ||
|  | #define	XkbPerKeyBitArraySize	((XkbMaxLegalKeyCode+1)/8)
 | ||
|  | /* Seems kinda silly to check that an unsigned char is <= 255... */ | ||
|  | #define	XkbIsLegalKeycode(k)	((k)>=XkbMinLegalKeyCode)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Assorted constants and limits. | ||
|  |      */ | ||
|  | #define	XkbNumModifiers		8
 | ||
|  | #define	XkbNumVirtualMods	16
 | ||
|  | #define	XkbNumIndicators	32
 | ||
|  | #define	XkbAllIndicatorsMask	(0xffffffff)
 | ||
|  | #define	XkbMaxRadioGroups	32
 | ||
|  | #define	XkbAllRadioGroupsMask	(0xffffffff)
 | ||
|  | #define	XkbMaxShiftLevel	63
 | ||
|  | #define	XkbMaxSymsPerKey	(XkbMaxShiftLevel*XkbNumKbdGroups)
 | ||
|  | #define	XkbRGMaxMembers		12
 | ||
|  | #define	XkbActionMessageLength	6
 | ||
|  | #define	XkbKeyNameLength	4
 | ||
|  | #define	XkbMaxRedirectCount	8
 | ||
|  | 
 | ||
|  | #define	XkbGeomPtsPerMM		10
 | ||
|  | #define	XkbGeomMaxColors	32
 | ||
|  | #define	XkbGeomMaxLabelColors	3
 | ||
|  | #define	XkbGeomMaxPriority	255
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Key Type index and mask for the four standard key types. | ||
|  |      */ | ||
|  | #define	XkbOneLevelIndex	0
 | ||
|  | #define	XkbTwoLevelIndex	1
 | ||
|  | #define	XkbAlphabeticIndex	2
 | ||
|  | #define	XkbKeypadIndex		3
 | ||
|  | #define	XkbLastRequiredType	XkbKeypadIndex
 | ||
|  | #define	XkbNumRequiredTypes	(XkbLastRequiredType+1)
 | ||
|  | #define	XkbMaxKeyTypes		255
 | ||
|  | 
 | ||
|  | #define	XkbOneLevelMask		(1<<0)
 | ||
|  | #define	XkbTwoLevelMask		(1<<1)
 | ||
|  | #define	XkbAlphabeticMask	(1<<2)
 | ||
|  | #define	XkbKeypadMask		(1<<3)
 | ||
|  | #define	XkbAllRequiredTypes	(0xf)
 | ||
|  | 
 | ||
|  | #define	XkbShiftLevel(n)	((n)-1)
 | ||
|  | #define	XkbShiftLevelMask(n)	(1<<((n)-1))
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Extension name and version information | ||
|  |      */ | ||
|  | #define	XkbName "XKEYBOARD"
 | ||
|  | #define	XkbMajorVersion	1
 | ||
|  | #define	XkbMinorVersion	0
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Explicit map components: | ||
|  |      *  - Used in the 'explicit' field of an XkbServerMap.  Specifies | ||
|  |      *    the keyboard components that should _not_ be updated automatically | ||
|  |      *    in response to core protocol keyboard mapping requests. | ||
|  |      */ | ||
|  | #define	XkbExplicitKeyTypesMask	  (0x0f)
 | ||
|  | #define	XkbExplicitKeyType1Mask	  (1<<0)
 | ||
|  | #define	XkbExplicitKeyType2Mask	  (1<<1)
 | ||
|  | #define	XkbExplicitKeyType3Mask	  (1<<2)
 | ||
|  | #define	XkbExplicitKeyType4Mask	  (1<<3)
 | ||
|  | #define	XkbExplicitInterpretMask  (1<<4)
 | ||
|  | #define	XkbExplicitAutoRepeatMask (1<<5)
 | ||
|  | #define	XkbExplicitBehaviorMask	  (1<<6)
 | ||
|  | #define	XkbExplicitVModMapMask	  (1<<7)
 | ||
|  | #define	XkbAllExplicitMask	  (0xff)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Map components masks: | ||
|  |      * Those in AllMapComponentsMask: | ||
|  |      *  - Specifies the individual fields to be loaded or changed for the | ||
|  |      *    GetMap and SetMap requests. | ||
|  |      * Those in ClientInfoMask: | ||
|  |      *  - Specifies the components to be allocated by XkbAllocClientMap. | ||
|  |      * Those in ServerInfoMask: | ||
|  |      *  - Specifies the components to be allocated by XkbAllocServerMap. | ||
|  |      */ | ||
|  | #define	XkbKeyTypesMask		(1<<0)
 | ||
|  | #define	XkbKeySymsMask		(1<<1)
 | ||
|  | #define	XkbModifierMapMask	(1<<2)
 | ||
|  | #define	XkbExplicitComponentsMask (1<<3)
 | ||
|  | #define XkbKeyActionsMask	(1<<4)
 | ||
|  | #define	XkbKeyBehaviorsMask	(1<<5)
 | ||
|  | #define	XkbVirtualModsMask	(1<<6)
 | ||
|  | #define	XkbVirtualModMapMask	(1<<7)
 | ||
|  | 
 | ||
|  | #define	XkbAllClientInfoMask	(XkbKeyTypesMask|XkbKeySymsMask|XkbModifierMapMask)
 | ||
|  | #define	XkbAllServerInfoMask	(XkbExplicitComponentsMask|XkbKeyActionsMask|XkbKeyBehaviorsMask|XkbVirtualModsMask|XkbVirtualModMapMask)
 | ||
|  | #define	XkbAllMapComponentsMask	(XkbAllClientInfoMask|XkbAllServerInfoMask)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Symbol interpretations flags: | ||
|  |      *  - Used in the flags field of a symbol interpretation | ||
|  |      */ | ||
|  | #define	XkbSI_AutoRepeat	(1<<0)
 | ||
|  | #define	XkbSI_LockingKey	(1<<1)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Symbol interpretations match specification: | ||
|  |      *  - Used in the match field of a symbol interpretation to specify | ||
|  |      *    the conditions under which an interpretation is used. | ||
|  |      */ | ||
|  | #define	XkbSI_LevelOneOnly	(0x80)
 | ||
|  | #define	XkbSI_OpMask		(0x7f)
 | ||
|  | #define	XkbSI_NoneOf		(0)
 | ||
|  | #define	XkbSI_AnyOfOrNone	(1)
 | ||
|  | #define	XkbSI_AnyOf		(2)
 | ||
|  | #define	XkbSI_AllOf		(3)
 | ||
|  | #define	XkbSI_Exactly		(4)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Indicator map flags: | ||
|  |      *  - Used in the flags field of an indicator map to indicate the | ||
|  |      *    conditions under which and indicator can be changed and the | ||
|  |      *    effects of changing the indicator. | ||
|  |      */ | ||
|  | #define	XkbIM_NoExplicit	(1L << 7)
 | ||
|  | #define	XkbIM_NoAutomatic	(1L << 6)
 | ||
|  | #define	XkbIM_LEDDrivesKB	(1L << 5)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Indicator map component specifications: | ||
|  |      *  - Used by the 'which_groups' and 'which_mods' fields of an indicator | ||
|  |      *    map to specify which keyboard components should be used to drive | ||
|  |      *    the indicator. | ||
|  |      */ | ||
|  | #define	XkbIM_UseBase		(1L << 0)
 | ||
|  | #define	XkbIM_UseLatched	(1L << 1)
 | ||
|  | #define	XkbIM_UseLocked		(1L << 2)
 | ||
|  | #define	XkbIM_UseEffective	(1L << 3)
 | ||
|  | #define	XkbIM_UseCompat		(1L << 4)
 | ||
|  | 
 | ||
|  | #define	XkbIM_UseNone	  0
 | ||
|  | #define	XkbIM_UseAnyGroup (XkbIM_UseBase|XkbIM_UseLatched|XkbIM_UseLocked\
 | ||
|  |                            |XkbIM_UseEffective) | ||
|  | #define	XkbIM_UseAnyMods  (XkbIM_UseAnyGroup|XkbIM_UseCompat)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Compatibility Map Components: | ||
|  |      *  - Specifies the components to be allocated in XkbAllocCompatMap. | ||
|  |      */ | ||
|  | #define	XkbSymInterpMask	(1<<0)
 | ||
|  | #define	XkbGroupCompatMask	(1<<1)
 | ||
|  | #define	XkbAllCompatMask	(0x3)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Names component mask: | ||
|  |      *  - Specifies the names to be loaded or changed for the GetNames and | ||
|  |      *    SetNames requests. | ||
|  |      *  - Specifies the names that have changed in a NamesNotify event. | ||
|  |      *  - Specifies the names components to be allocated by XkbAllocNames. | ||
|  |      */ | ||
|  | #define	XkbKeycodesNameMask	(1<<0)
 | ||
|  | #define	XkbGeometryNameMask	(1<<1)
 | ||
|  | #define	XkbSymbolsNameMask	(1<<2)
 | ||
|  | #define	XkbPhysSymbolsNameMask	(1<<3)
 | ||
|  | #define	XkbTypesNameMask	(1<<4)
 | ||
|  | #define	XkbCompatNameMask 	(1<<5)
 | ||
|  | #define	XkbKeyTypeNamesMask	(1<<6)
 | ||
|  | #define	XkbKTLevelNamesMask	(1<<7)
 | ||
|  | #define	XkbIndicatorNamesMask	(1<<8)
 | ||
|  | #define	XkbKeyNamesMask		(1<<9)
 | ||
|  | #define	XkbKeyAliasesMask	(1<<10)
 | ||
|  | #define	XkbVirtualModNamesMask	(1<<11)
 | ||
|  | #define	XkbGroupNamesMask	(1<<12)
 | ||
|  | #define	XkbRGNamesMask		(1<<13)
 | ||
|  | #define	XkbComponentNamesMask	(0x3f)
 | ||
|  | #define	XkbAllNamesMask		(0x3fff)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * GetByName components: | ||
|  |      *  - Specifies desired or necessary components to GetKbdByName request. | ||
|  |      *  - Reports the components that were found in a GetKbdByNameReply | ||
|  |      */ | ||
|  | #define	XkbGBN_TypesMask		(1L << 0)
 | ||
|  | #define	XkbGBN_CompatMapMask		(1L << 1)
 | ||
|  | #define	XkbGBN_ClientSymbolsMask	(1L << 2)
 | ||
|  | #define	XkbGBN_ServerSymbolsMask	(1L << 3)
 | ||
|  | #define	XkbGBN_SymbolsMask (XkbGBN_ClientSymbolsMask|XkbGBN_ServerSymbolsMask)
 | ||
|  | #define	XkbGBN_IndicatorMapMask		(1L << 4)
 | ||
|  | #define	XkbGBN_KeyNamesMask		(1L << 5)
 | ||
|  | #define	XkbGBN_GeometryMask		(1L << 6)
 | ||
|  | #define	XkbGBN_OtherNamesMask		(1L << 7)
 | ||
|  | #define	XkbGBN_AllComponentsMask	(0xff)
 | ||
|  | 
 | ||
|  |      /*
 | ||
|  |       * ListComponents flags | ||
|  |       */ | ||
|  | #define	XkbLC_Hidden			(1L <<  0)
 | ||
|  | #define	XkbLC_Default			(1L <<  1)
 | ||
|  | #define	XkbLC_Partial			(1L <<  2)
 | ||
|  | 
 | ||
|  | #define	XkbLC_AlphanumericKeys		(1L <<  8)
 | ||
|  | #define	XkbLC_ModifierKeys		(1L <<  9)
 | ||
|  | #define	XkbLC_KeypadKeys		(1L << 10)
 | ||
|  | #define	XkbLC_FunctionKeys		(1L << 11)
 | ||
|  | #define	XkbLC_AlternateGroup		(1L << 12)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * X Input Extension Interactions | ||
|  |      * - Specifies the possible interactions between XKB and the X input | ||
|  |      *   extension | ||
|  |      * - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo) | ||
|  |      *   XKB information about an extension device. | ||
|  |      * - Reports the list of supported optional features in the reply to | ||
|  |      *   XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event. | ||
|  |      * XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify | ||
|  |      * events to indicate an attempt to use an unsupported feature. | ||
|  |      */ | ||
|  | #define	XkbXI_KeyboardsMask		(1L << 0)
 | ||
|  | #define	XkbXI_ButtonActionsMask		(1L << 1)
 | ||
|  | #define	XkbXI_IndicatorNamesMask	(1L << 2)
 | ||
|  | #define	XkbXI_IndicatorMapsMask		(1L << 3)
 | ||
|  | #define	XkbXI_IndicatorStateMask	(1L << 4)
 | ||
|  | #define	XkbXI_UnsupportedFeatureMask	(1L << 15)
 | ||
|  | #define	XkbXI_AllFeaturesMask		(0x001f)
 | ||
|  | #define	XkbXI_AllDeviceFeaturesMask	(0x001e)
 | ||
|  | 
 | ||
|  | #define	XkbXI_IndicatorsMask		(0x001c)
 | ||
|  | #define	XkbAllExtensionDeviceEventsMask (0x801f)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Per-Client Flags: | ||
|  |      *  - Specifies flags to be changed by the PerClientFlags request. | ||
|  |      */ | ||
|  | #define	XkbPCF_DetectableAutoRepeatMask	(1L << 0)
 | ||
|  | #define	XkbPCF_GrabsUseXKBStateMask	(1L << 1)
 | ||
|  | #define	XkbPCF_AutoResetControlsMask	(1L << 2)
 | ||
|  | #define	XkbPCF_LookupStateWhenGrabbed	(1L << 3)
 | ||
|  | #define	XkbPCF_SendEventUsesXKBState	(1L << 4)
 | ||
|  | #define	XkbPCF_AllFlagsMask		(0x1F)
 | ||
|  | 
 | ||
|  |     /*
 | ||
|  |      * Debugging flags and controls | ||
|  |      */ | ||
|  | #define	XkbDF_DisableLocks	(1<<0)
 | ||
|  | 
 | ||
|  | #endif /* _XKB_H_ */
 |