mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2026-05-09 03:38:05 +02:00
R6.6 is the Xorg base-line
This commit is contained in:
commit
209ae2d4c9
5 changed files with 4707 additions and 0 deletions
781
XKB.h
Normal file
781
XKB.h
Normal file
|
|
@ -0,0 +1,781 @@
|
|||
/* $Xorg: XKB.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
|
||||
/************************************************************
|
||||
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 (0xf)
|
||||
|
||||
/*
|
||||
* Miscellaneous event details:
|
||||
* - event detail masks for assorted events that don't reall
|
||||
* 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 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)
|
||||
|
||||
/*
|
||||
* 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)
|
||||
#define XkbIsLegalKeycode(k) (((k)>=XkbMinLegalKeyCode)&&((k)<=XkbMaxLegalKeyCode))
|
||||
|
||||
/*
|
||||
* 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_UseLatched|XkbIM_UseLocked|XkbIM_UseEffective)
|
||||
#define XkbIM_UseAnyMods (XkbIM_UseAnyGroup|XkbIM_UseCompat|XkbIM_UseBase)
|
||||
|
||||
/*
|
||||
* Compatibility Map Compontents:
|
||||
* - 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_ */
|
||||
745
XKBgeom.h
Normal file
745
XKBgeom.h
Normal file
|
|
@ -0,0 +1,745 @@
|
|||
/* $Xorg: XKBgeom.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
|
||||
/************************************************************
|
||||
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 _XKBGEOM_H_
|
||||
#define _XKBGEOM_H_
|
||||
|
||||
#ifdef XKB_IN_SERVER
|
||||
#define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias
|
||||
#define XkbAddGeomColor SrvXkbAddGeomColor
|
||||
#define XkbAddGeomDoodad SrvXkbAddGeomDoodad
|
||||
#define XkbAddGeomKey SrvXkbAddGeomKey
|
||||
#define XkbAddGeomOutline SrvXkbAddGeomOutline
|
||||
#define XkbAddGeomOverlay SrvXkbAddGeomOverlay
|
||||
#define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow
|
||||
#define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey
|
||||
#define XkbAddGeomProperty SrvXkbAddGeomProperty
|
||||
#define XkbAddGeomRow SrvXkbAddGeomRow
|
||||
#define XkbAddGeomSection SrvXkbAddGeomSection
|
||||
#define XkbAddGeomShape SrvXkbAddGeomShape
|
||||
#define XkbAllocGeomKeyAliases SrvXkbAllocGeomKeyAliases
|
||||
#define XkbAllocGeomColors SrvXkbAllocGeomColors
|
||||
#define XkbAllocGeomDoodads SrvXkbAllocGeomDoodads
|
||||
#define XkbAllocGeomKeys SrvXkbAllocGeomKeys
|
||||
#define XkbAllocGeomOutlines SrvXkbAllocGeomOutlines
|
||||
#define XkbAllocGeomPoints SrvXkbAllocGeomPoints
|
||||
#define XkbAllocGeomProps SrvXkbAllocGeomProps
|
||||
#define XkbAllocGeomRows SrvXkbAllocGeomRows
|
||||
#define XkbAllocGeomSectionDoodads SrvXkbAllocGeomSectionDoodads
|
||||
#define XkbAllocGeomSections SrvXkbAllocGeomSections
|
||||
#define XkbAllocGeomOverlays SrvXkbAllocGeomOverlays
|
||||
#define XkbAllocGeomOverlayRows SrvXkbAllocGeomOverlayRows
|
||||
#define XkbAllocGeomOverlayKeys SrvXkbAllocGeomOverlayKeys
|
||||
#define XkbAllocGeomShapes SrvXkbAllocGeomShapes
|
||||
#define XkbAllocGeometry SrvXkbAllocGeometry
|
||||
#define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases
|
||||
#define XkbFreeGeomColors SrvXkbFreeGeomColors
|
||||
#define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads
|
||||
#define XkbFreeGeomProperties SrvXkbFreeGeomProperties
|
||||
#define XkbFreeGeomOverlayKeys SrvXkbFreeGeomOverlayKeys
|
||||
#define XkbFreeGeomOverlayRows SrvXkbFreeGeomOverlayRows
|
||||
#define XkbFreeGeomOverlays SrvXkbFreeGeomOverlays
|
||||
#define XkbFreeGeomKeys SrvXKbFreeGeomKeys
|
||||
#define XkbFreeGeomRows SrvXKbFreeGeomRows
|
||||
#define XkbFreeGeomSections SrvXkbFreeGeomSections
|
||||
#define XkbFreeGeomPoints SrvXkbFreeGeomPoints
|
||||
#define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines
|
||||
#define XkbFreeGeomShapes SrvXkbFreeGeomShapes
|
||||
#define XkbFreeGeometry SrvXkbFreeGeometry
|
||||
#endif
|
||||
|
||||
typedef struct _XkbProperty {
|
||||
char *name;
|
||||
char *value;
|
||||
} XkbPropertyRec,*XkbPropertyPtr;
|
||||
|
||||
typedef struct _XkbColor {
|
||||
unsigned int pixel;
|
||||
char * spec;
|
||||
} XkbColorRec,*XkbColorPtr;
|
||||
|
||||
typedef struct _XkbPoint {
|
||||
short x;
|
||||
short y;
|
||||
} XkbPointRec, *XkbPointPtr;
|
||||
|
||||
typedef struct _XkbBounds {
|
||||
short x1,y1;
|
||||
short x2,y2;
|
||||
} XkbBoundsRec, *XkbBoundsPtr;
|
||||
#define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
|
||||
#define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
|
||||
|
||||
typedef struct _XkbOutline {
|
||||
unsigned short num_points;
|
||||
unsigned short sz_points;
|
||||
unsigned short corner_radius;
|
||||
XkbPointPtr points;
|
||||
} XkbOutlineRec, *XkbOutlinePtr;
|
||||
|
||||
typedef struct _XkbShape {
|
||||
Atom name;
|
||||
unsigned short num_outlines;
|
||||
unsigned short sz_outlines;
|
||||
XkbOutlinePtr outlines;
|
||||
XkbOutlinePtr approx;
|
||||
XkbOutlinePtr primary;
|
||||
XkbBoundsRec bounds;
|
||||
} XkbShapeRec, *XkbShapePtr;
|
||||
#define XkbOutlineIndex(s,o) ((o)-&(s)->outlines[0])
|
||||
|
||||
typedef struct _XkbShapeDoodad {
|
||||
Atom name;
|
||||
unsigned char type;
|
||||
unsigned char priority;
|
||||
short top;
|
||||
short left;
|
||||
short angle;
|
||||
unsigned short color_ndx;
|
||||
unsigned short shape_ndx;
|
||||
} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
|
||||
#define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
|
||||
#define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
|
||||
#define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
|
||||
#define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
|
||||
|
||||
typedef struct _XkbTextDoodad {
|
||||
Atom name;
|
||||
unsigned char type;
|
||||
unsigned char priority;
|
||||
short top;
|
||||
short left;
|
||||
short angle;
|
||||
short width;
|
||||
short height;
|
||||
unsigned short color_ndx;
|
||||
char * text;
|
||||
char * font;
|
||||
} XkbTextDoodadRec, *XkbTextDoodadPtr;
|
||||
#define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
|
||||
#define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
|
||||
|
||||
typedef struct _XkbIndicatorDoodad {
|
||||
Atom name;
|
||||
unsigned char type;
|
||||
unsigned char priority;
|
||||
short top;
|
||||
short left;
|
||||
short angle;
|
||||
unsigned short shape_ndx;
|
||||
unsigned short on_color_ndx;
|
||||
unsigned short off_color_ndx;
|
||||
} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
|
||||
#define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
|
||||
#define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
|
||||
#define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
|
||||
#define XkbSetIndicatorDoodadOnColor(g,d,c) \
|
||||
((d)->on_color_ndx= (c)-&(g)->colors[0])
|
||||
#define XkbSetIndicatorDoodadOffColor(g,d,c) \
|
||||
((d)->off_color_ndx= (c)-&(g)->colors[0])
|
||||
#define XkbSetIndicatorDoodadShape(g,d,s) \
|
||||
((d)->shape_ndx= (s)-&(g)->shapes[0])
|
||||
|
||||
typedef struct _XkbLogoDoodad {
|
||||
Atom name;
|
||||
unsigned char type;
|
||||
unsigned char priority;
|
||||
short top;
|
||||
short left;
|
||||
short angle;
|
||||
unsigned short color_ndx;
|
||||
unsigned short shape_ndx;
|
||||
char * logo_name;
|
||||
} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
|
||||
#define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
|
||||
#define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
|
||||
#define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
|
||||
#define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
|
||||
|
||||
typedef struct _XkbAnyDoodad {
|
||||
Atom name;
|
||||
unsigned char type;
|
||||
unsigned char priority;
|
||||
short top;
|
||||
short left;
|
||||
short angle;
|
||||
} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
|
||||
|
||||
typedef union _XkbDoodad {
|
||||
XkbAnyDoodadRec any;
|
||||
XkbShapeDoodadRec shape;
|
||||
XkbTextDoodadRec text;
|
||||
XkbIndicatorDoodadRec indicator;
|
||||
XkbLogoDoodadRec logo;
|
||||
} XkbDoodadRec, *XkbDoodadPtr;
|
||||
|
||||
#define XkbUnknownDoodad 0
|
||||
#define XkbOutlineDoodad 1
|
||||
#define XkbSolidDoodad 2
|
||||
#define XkbTextDoodad 3
|
||||
#define XkbIndicatorDoodad 4
|
||||
#define XkbLogoDoodad 5
|
||||
|
||||
typedef struct _XkbKey {
|
||||
XkbKeyNameRec name;
|
||||
short gap;
|
||||
unsigned char shape_ndx;
|
||||
unsigned char color_ndx;
|
||||
} XkbKeyRec, *XkbKeyPtr;
|
||||
#define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
|
||||
#define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
|
||||
#define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
|
||||
#define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
|
||||
|
||||
typedef struct _XkbRow {
|
||||
short top;
|
||||
short left;
|
||||
unsigned short num_keys;
|
||||
unsigned short sz_keys;
|
||||
int vertical;
|
||||
XkbKeyPtr keys;
|
||||
XkbBoundsRec bounds;
|
||||
} XkbRowRec, *XkbRowPtr;
|
||||
|
||||
typedef struct _XkbSection {
|
||||
Atom name;
|
||||
unsigned char priority;
|
||||
short top;
|
||||
short left;
|
||||
unsigned short width;
|
||||
unsigned short height;
|
||||
short angle;
|
||||
unsigned short num_rows;
|
||||
unsigned short num_doodads;
|
||||
unsigned short num_overlays;
|
||||
unsigned short sz_rows;
|
||||
unsigned short sz_doodads;
|
||||
unsigned short sz_overlays;
|
||||
XkbRowPtr rows;
|
||||
XkbDoodadPtr doodads;
|
||||
XkbBoundsRec bounds;
|
||||
struct _XkbOverlay *overlays;
|
||||
} XkbSectionRec, *XkbSectionPtr;
|
||||
|
||||
typedef struct _XkbOverlayKey {
|
||||
XkbKeyNameRec over;
|
||||
XkbKeyNameRec under;
|
||||
} XkbOverlayKeyRec,*XkbOverlayKeyPtr;
|
||||
|
||||
typedef struct _XkbOverlayRow {
|
||||
unsigned short row_under;
|
||||
unsigned short num_keys;
|
||||
unsigned short sz_keys;
|
||||
XkbOverlayKeyPtr keys;
|
||||
} XkbOverlayRowRec,*XkbOverlayRowPtr;
|
||||
|
||||
typedef struct _XkbOverlay {
|
||||
Atom name;
|
||||
XkbSectionPtr section_under;
|
||||
unsigned short num_rows;
|
||||
unsigned short sz_rows;
|
||||
XkbOverlayRowPtr rows;
|
||||
XkbBoundsPtr bounds;
|
||||
} XkbOverlayRec,*XkbOverlayPtr;
|
||||
|
||||
typedef struct _XkbGeometry {
|
||||
Atom name;
|
||||
unsigned short width_mm;
|
||||
unsigned short height_mm;
|
||||
char * label_font;
|
||||
XkbColorPtr label_color;
|
||||
XkbColorPtr base_color;
|
||||
unsigned short sz_properties;
|
||||
unsigned short sz_colors;
|
||||
unsigned short sz_shapes;
|
||||
unsigned short sz_sections;
|
||||
unsigned short sz_doodads;
|
||||
unsigned short sz_key_aliases;
|
||||
unsigned short num_properties;
|
||||
unsigned short num_colors;
|
||||
unsigned short num_shapes;
|
||||
unsigned short num_sections;
|
||||
unsigned short num_doodads;
|
||||
unsigned short num_key_aliases;
|
||||
XkbPropertyPtr properties;
|
||||
XkbColorPtr colors;
|
||||
XkbShapePtr shapes;
|
||||
XkbSectionPtr sections;
|
||||
XkbDoodadPtr doodads;
|
||||
XkbKeyAliasPtr key_aliases;
|
||||
} XkbGeometryRec;
|
||||
#define XkbGeomColorIndex(g,c) ((c)-&(g)->colors[0])
|
||||
|
||||
#define XkbGeomPropertiesMask (1<<0)
|
||||
#define XkbGeomColorsMask (1<<1)
|
||||
#define XkbGeomShapesMask (1<<2)
|
||||
#define XkbGeomSectionsMask (1<<3)
|
||||
#define XkbGeomDoodadsMask (1<<4)
|
||||
#define XkbGeomKeyAliasesMask (1<<5)
|
||||
#define XkbGeomAllMask (0x3f)
|
||||
|
||||
typedef struct _XkbGeometrySizes {
|
||||
unsigned int which;
|
||||
unsigned short num_properties;
|
||||
unsigned short num_colors;
|
||||
unsigned short num_shapes;
|
||||
unsigned short num_sections;
|
||||
unsigned short num_doodads;
|
||||
unsigned short num_key_aliases;
|
||||
} XkbGeometrySizesRec,*XkbGeometrySizesPtr;
|
||||
|
||||
_XFUNCPROTOBEGIN
|
||||
|
||||
extern XkbPropertyPtr
|
||||
XkbAddGeomProperty(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
char * /* name */,
|
||||
char * /* value */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbKeyAliasPtr
|
||||
XkbAddGeomKeyAlias(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
char * /* alias */,
|
||||
char * /* real */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbColorPtr
|
||||
XkbAddGeomColor(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
char * /* spec */,
|
||||
unsigned int /* pixel */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbOutlinePtr
|
||||
XkbAddGeomOutline(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbShapePtr /* shape */,
|
||||
int /* sz_points */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbShapePtr
|
||||
XkbAddGeomShape(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
Atom /* name */,
|
||||
int /* sz_outlines */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbKeyPtr
|
||||
XkbAddGeomKey(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbRowPtr /* row */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbRowPtr
|
||||
XkbAddGeomRow(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
int /* sz_keys */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbSectionPtr
|
||||
XkbAddGeomSection(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
Atom /* name */,
|
||||
int /* sz_rows */,
|
||||
int /* sz_doodads */,
|
||||
int /* sz_overlays */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbOverlayPtr
|
||||
XkbAddGeomOverlay(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
Atom /* name */,
|
||||
int /* sz_rows */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbOverlayRowPtr
|
||||
XkbAddGeomOverlayRow(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOverlayPtr /* overlay */,
|
||||
int /* row_under */,
|
||||
int /* sz_keys */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbOverlayKeyPtr
|
||||
XkbAddGeomOverlayKey(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOverlayPtr /* overlay */,
|
||||
XkbOverlayRowPtr /* row */,
|
||||
char * /* over */,
|
||||
char * /* under */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern XkbDoodadPtr
|
||||
XkbAddGeomDoodad(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
XkbSectionPtr /* section */,
|
||||
Atom /* name */
|
||||
#endif
|
||||
);
|
||||
|
||||
|
||||
extern void
|
||||
XkbFreeGeomKeyAliases(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomColors(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomDoodads(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbDoodadPtr /* doodads */,
|
||||
int /* nDoodads */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
|
||||
extern void
|
||||
XkbFreeGeomProperties(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomOverlayKeys(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOverlayRowPtr /* row */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomOverlayRows(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOverlayPtr /* overlay */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomOverlays(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomKeys(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbRowPtr /* row */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomRows(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomSections(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
|
||||
extern void
|
||||
XkbFreeGeomPoints(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOutlinePtr /* outline */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomOutlines(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbShapePtr /* shape */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeomShapes(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* first */,
|
||||
int /* count */,
|
||||
Bool /* freeAll */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern void
|
||||
XkbFreeGeometry(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
unsigned int /* which */,
|
||||
Bool /* freeMap */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomProps(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* nProps */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomKeyAliases(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* nAliases */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomColors(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* nColors */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomShapes(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* nShapes */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomSections(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* nSections */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomOverlays(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
int /* num_needed */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomOverlayRows(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOverlayPtr /* overlay */,
|
||||
int /* num_needed */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomOverlayKeys(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOverlayRowPtr /* row */,
|
||||
int /* num_needed */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomDoodads(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
int /* nDoodads */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomSectionDoodads(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
int /* nDoodads */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomOutlines(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbShapePtr /* shape */,
|
||||
int /* nOL */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomRows(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbSectionPtr /* section */,
|
||||
int /* nRows */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomPoints(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbOutlinePtr /* ol */,
|
||||
int /* nPts */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeomKeys(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbRowPtr /* row */,
|
||||
int /* nKeys */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbAllocGeometry(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbDescPtr /* xkb */,
|
||||
XkbGeometrySizesPtr /* sizes */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Bool
|
||||
XkbComputeShapeTop(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbShapePtr /* shape */,
|
||||
XkbBoundsPtr /* bounds */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Bool
|
||||
XkbComputeShapeBounds(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbShapePtr /* shape */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Bool
|
||||
XkbComputeRowBounds(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
XkbSectionPtr /* section */,
|
||||
XkbRowPtr /* row */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Bool
|
||||
XkbComputeSectionBounds(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
XkbSectionPtr /* section */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern char *
|
||||
XkbFindOverlayForKey(
|
||||
#if NeedFunctionPrototypes
|
||||
XkbGeometryPtr /* geom */,
|
||||
XkbSectionPtr /* wanted */,
|
||||
char * /* under */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbGetGeometry(
|
||||
#if NeedFunctionPrototypes
|
||||
Display * /* dpy */,
|
||||
XkbDescPtr /* xkb */
|
||||
#endif
|
||||
);
|
||||
|
||||
extern Status
|
||||
XkbGetNamedGeometry(
|
||||
#if NeedFunctionPrototypes
|
||||
Display * /* dpy */,
|
||||
XkbDescPtr /* xkb */,
|
||||
Atom /* name */
|
||||
#endif
|
||||
);
|
||||
|
||||
_XFUNCPROTOEND
|
||||
|
||||
#endif /* _XKBSTR_H_ */
|
||||
1282
XKBproto.h
Normal file
1282
XKBproto.h
Normal file
File diff suppressed because it is too large
Load diff
614
XKBstr.h
Normal file
614
XKBstr.h
Normal file
|
|
@ -0,0 +1,614 @@
|
|||
/* $Xorg: XKBstr.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
|
||||
/************************************************************
|
||||
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 _XKBSTR_H_
|
||||
#define _XKBSTR_H_
|
||||
|
||||
#include <X11/extensions/XKB.h>
|
||||
|
||||
#define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
|
||||
#define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
|
||||
|
||||
#if defined(WORD64) && defined(UNSIGNEDBITFIELDS)
|
||||
#define Xkb2CharsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)):\
|
||||
(int)(((h)<<8)|(l)&0x7fff))
|
||||
#else
|
||||
#define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l)))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Common data structures and access macros
|
||||
*/
|
||||
|
||||
typedef struct _XkbStateRec {
|
||||
unsigned char group;
|
||||
unsigned char locked_group;
|
||||
unsigned short base_group;
|
||||
unsigned short latched_group;
|
||||
unsigned char mods;
|
||||
unsigned char base_mods;
|
||||
unsigned char latched_mods;
|
||||
unsigned char locked_mods;
|
||||
unsigned char compat_state;
|
||||
unsigned char grab_mods;
|
||||
unsigned char compat_grab_mods;
|
||||
unsigned char lookup_mods;
|
||||
unsigned char compat_lookup_mods;
|
||||
unsigned short ptr_buttons;
|
||||
} XkbStateRec,*XkbStatePtr;
|
||||
#define XkbModLocks(s) ((s)->locked_mods)
|
||||
#define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))
|
||||
#define XkbGroupLock(s) ((s)->locked_group)
|
||||
#define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))
|
||||
#define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)
|
||||
#define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)
|
||||
|
||||
typedef struct _XkbMods {
|
||||
unsigned char mask; /* effective mods */
|
||||
unsigned char real_mods;
|
||||
unsigned short vmods;
|
||||
} XkbModsRec,*XkbModsPtr;
|
||||
|
||||
typedef struct _XkbKTMapEntry {
|
||||
Bool active;
|
||||
unsigned char level;
|
||||
XkbModsRec mods;
|
||||
} XkbKTMapEntryRec,*XkbKTMapEntryPtr;
|
||||
|
||||
typedef struct _XkbKeyType {
|
||||
XkbModsRec mods;
|
||||
unsigned char num_levels;
|
||||
unsigned char map_count;
|
||||
XkbKTMapEntryPtr map;
|
||||
XkbModsPtr preserve;
|
||||
Atom name;
|
||||
Atom * level_names;
|
||||
} XkbKeyTypeRec, *XkbKeyTypePtr;
|
||||
|
||||
#define XkbNumGroups(g) ((g)&0x0f)
|
||||
#define XkbOutOfRangeGroupInfo(g) ((g)&0xf0)
|
||||
#define XkbOutOfRangeGroupAction(g) ((g)&0xc0)
|
||||
#define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4)
|
||||
#define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
|
||||
#define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))
|
||||
|
||||
/*
|
||||
* Structures and access macros used primarily by the server
|
||||
*/
|
||||
|
||||
typedef struct _XkbBehavior {
|
||||
unsigned char type;
|
||||
unsigned char data;
|
||||
} XkbBehavior;
|
||||
|
||||
#define XkbAnyActionDataSize 7
|
||||
typedef struct _XkbAnyAction {
|
||||
unsigned char type;
|
||||
unsigned char data[XkbAnyActionDataSize];
|
||||
} XkbAnyAction;
|
||||
|
||||
typedef struct _XkbModAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char mask;
|
||||
unsigned char real_mods;
|
||||
unsigned char vmods1;
|
||||
unsigned char vmods2;
|
||||
} XkbModAction;
|
||||
#define XkbModActionVMods(a) \
|
||||
((short)(((a)->vmods1<<8)|((a)->vmods2)))
|
||||
#define XkbSetModActionVMods(a,v) \
|
||||
(((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))
|
||||
|
||||
typedef struct _XkbGroupAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
char group_XXX;
|
||||
} XkbGroupAction;
|
||||
#define XkbSAGroup(a) (XkbCharToInt((a)->group_XXX))
|
||||
#define XkbSASetGroup(a,g) ((a)->group_XXX=(g))
|
||||
|
||||
typedef struct _XkbISOAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char mask;
|
||||
unsigned char real_mods;
|
||||
char group_XXX;
|
||||
unsigned char affect;
|
||||
unsigned char vmods1;
|
||||
unsigned char vmods2;
|
||||
} XkbISOAction;
|
||||
|
||||
typedef struct _XkbPtrAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char high_XXX;
|
||||
unsigned char low_XXX;
|
||||
unsigned char high_YYY;
|
||||
unsigned char low_YYY;
|
||||
} XkbPtrAction;
|
||||
#define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))
|
||||
#define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))
|
||||
#define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))
|
||||
#define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))
|
||||
|
||||
typedef struct _XkbPtrBtnAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char count;
|
||||
unsigned char button;
|
||||
} XkbPtrBtnAction;
|
||||
|
||||
typedef struct _XkbPtrDfltAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char affect;
|
||||
char valueXXX;
|
||||
} XkbPtrDfltAction;
|
||||
#define XkbSAPtrDfltValue(a) (XkbCharToInt((a)->valueXXX))
|
||||
#define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff))
|
||||
|
||||
typedef struct _XkbSwitchScreenAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
char screenXXX;
|
||||
} XkbSwitchScreenAction;
|
||||
#define XkbSAScreen(a) (XkbCharToInt((a)->screenXXX))
|
||||
#define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff))
|
||||
|
||||
typedef struct _XkbCtrlsAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char ctrls3;
|
||||
unsigned char ctrls2;
|
||||
unsigned char ctrls1;
|
||||
unsigned char ctrls0;
|
||||
} XkbCtrlsAction;
|
||||
#define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),\
|
||||
((a)->ctrls2=(((c)>>16)&0xff)),\
|
||||
((a)->ctrls1=(((c)>>8)&0xff)),\
|
||||
((a)->ctrls0=((c)&0xff)))
|
||||
#define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|\
|
||||
(((unsigned int)(a)->ctrls2)<<16)|\
|
||||
(((unsigned int)(a)->ctrls1)<<8)|\
|
||||
((unsigned int)((a)->ctrls0)))
|
||||
|
||||
typedef struct _XkbMessageAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char message[6];
|
||||
} XkbMessageAction;
|
||||
|
||||
typedef struct _XkbRedirectKeyAction {
|
||||
unsigned char type;
|
||||
unsigned char new_key;
|
||||
unsigned char mods_mask;
|
||||
unsigned char mods;
|
||||
unsigned char vmods_mask0;
|
||||
unsigned char vmods_mask1;
|
||||
unsigned char vmods0;
|
||||
unsigned char vmods1;
|
||||
} XkbRedirectKeyAction;
|
||||
|
||||
#define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|\
|
||||
((unsigned int)(a)->vmods0))
|
||||
#define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
|
||||
((a)->vmods_mask0=((m)&0xff)))
|
||||
#define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|\
|
||||
((unsigned int)(a)->vmods_mask0))
|
||||
#define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),\
|
||||
((a)->vmods_mask0=((m)&0xff)))
|
||||
|
||||
typedef struct _XkbDeviceBtnAction {
|
||||
unsigned char type;
|
||||
unsigned char flags;
|
||||
unsigned char count;
|
||||
unsigned char button;
|
||||
unsigned char device;
|
||||
} XkbDeviceBtnAction;
|
||||
|
||||
typedef struct _XkbDeviceValuatorAction {
|
||||
unsigned char type;
|
||||
unsigned char device;
|
||||
unsigned char v1_what;
|
||||
unsigned char v1_ndx;
|
||||
unsigned char v1_value;
|
||||
unsigned char v2_what;
|
||||
unsigned char v2_ndx;
|
||||
unsigned char v2_value;
|
||||
} XkbDeviceValuatorAction;
|
||||
|
||||
typedef union _XkbAction {
|
||||
XkbAnyAction any;
|
||||
XkbModAction mods;
|
||||
XkbGroupAction group;
|
||||
XkbISOAction iso;
|
||||
XkbPtrAction ptr;
|
||||
XkbPtrBtnAction btn;
|
||||
XkbPtrDfltAction dflt;
|
||||
XkbSwitchScreenAction screen;
|
||||
XkbCtrlsAction ctrls;
|
||||
XkbMessageAction msg;
|
||||
XkbRedirectKeyAction redirect;
|
||||
XkbDeviceBtnAction devbtn;
|
||||
XkbDeviceValuatorAction devval;
|
||||
unsigned char type;
|
||||
} XkbAction;
|
||||
|
||||
typedef struct _XkbControls {
|
||||
unsigned char mk_dflt_btn;
|
||||
unsigned char num_groups;
|
||||
unsigned char groups_wrap;
|
||||
XkbModsRec internal;
|
||||
XkbModsRec ignore_lock;
|
||||
unsigned int enabled_ctrls;
|
||||
unsigned short repeat_delay;
|
||||
unsigned short repeat_interval;
|
||||
unsigned short slow_keys_delay;
|
||||
unsigned short debounce_delay;
|
||||
unsigned short mk_delay;
|
||||
unsigned short mk_interval;
|
||||
unsigned short mk_time_to_max;
|
||||
unsigned short mk_max_speed;
|
||||
short mk_curve;
|
||||
unsigned short ax_options;
|
||||
unsigned short ax_timeout;
|
||||
unsigned short axt_opts_mask;
|
||||
unsigned short axt_opts_values;
|
||||
unsigned int axt_ctrls_mask;
|
||||
unsigned int axt_ctrls_values;
|
||||
unsigned char per_key_repeat[XkbPerKeyBitArraySize];
|
||||
} XkbControlsRec, *XkbControlsPtr;
|
||||
|
||||
#define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask)
|
||||
#define XkbAX_NeedOption(c,w) ((c)->ax_options&(w))
|
||||
#define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))
|
||||
|
||||
typedef struct _XkbServerMapRec {
|
||||
unsigned short num_acts;
|
||||
unsigned short size_acts;
|
||||
XkbAction *acts;
|
||||
|
||||
XkbBehavior *behaviors;
|
||||
unsigned short *key_acts;
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
/* explicit is a C++ reserved word */
|
||||
unsigned char *c_explicit;
|
||||
#else
|
||||
unsigned char *explicit;
|
||||
#endif
|
||||
unsigned char vmods[XkbNumVirtualMods];
|
||||
unsigned short *vmodmap;
|
||||
} XkbServerMapRec, *XkbServerMapPtr;
|
||||
|
||||
#define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])
|
||||
|
||||
/*
|
||||
* Structures and access macros used primarily by clients
|
||||
*/
|
||||
|
||||
typedef struct _XkbSymMapRec {
|
||||
unsigned char kt_index[XkbNumKbdGroups];
|
||||
unsigned char group_info;
|
||||
unsigned char width;
|
||||
unsigned short offset;
|
||||
} XkbSymMapRec, *XkbSymMapPtr;
|
||||
|
||||
typedef struct _XkbClientMapRec {
|
||||
unsigned char size_types;
|
||||
unsigned char num_types;
|
||||
XkbKeyTypePtr types;
|
||||
|
||||
unsigned short size_syms;
|
||||
unsigned short num_syms;
|
||||
KeySym *syms;
|
||||
XkbSymMapPtr key_sym_map;
|
||||
|
||||
unsigned char *modmap;
|
||||
} XkbClientMapRec, *XkbClientMapPtr;
|
||||
|
||||
#define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info)
|
||||
#define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info))
|
||||
#define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)
|
||||
#define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)
|
||||
#define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])
|
||||
#define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])
|
||||
#define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))
|
||||
#define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset)
|
||||
#define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)])
|
||||
|
||||
/*
|
||||
* Compatibility structures and access macros
|
||||
*/
|
||||
|
||||
typedef struct _XkbSymInterpretRec {
|
||||
KeySym sym;
|
||||
unsigned char flags;
|
||||
unsigned char match;
|
||||
unsigned char mods;
|
||||
unsigned char virtual_mod;
|
||||
XkbAnyAction act;
|
||||
} XkbSymInterpretRec,*XkbSymInterpretPtr;
|
||||
|
||||
typedef struct _XkbCompatMapRec {
|
||||
XkbSymInterpretPtr sym_interpret;
|
||||
XkbModsRec groups[XkbNumKbdGroups];
|
||||
unsigned short num_si;
|
||||
unsigned short size_si;
|
||||
} XkbCompatMapRec, *XkbCompatMapPtr;
|
||||
|
||||
typedef struct _XkbIndicatorMapRec {
|
||||
unsigned char flags;
|
||||
unsigned char which_groups;
|
||||
unsigned char groups;
|
||||
unsigned char which_mods;
|
||||
XkbModsRec mods;
|
||||
unsigned int ctrls;
|
||||
} XkbIndicatorMapRec, *XkbIndicatorMapPtr;
|
||||
|
||||
#define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&\
|
||||
(((i)->which_groups&&(i)->groups)||\
|
||||
((i)->which_mods&&(i)->mods.mask)||\
|
||||
((i)->ctrls)))
|
||||
#define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||\
|
||||
((i)->which_mods)||((i)->ctrls))
|
||||
|
||||
|
||||
typedef struct _XkbIndicatorRec {
|
||||
unsigned long phys_indicators;
|
||||
XkbIndicatorMapRec maps[XkbNumIndicators];
|
||||
} XkbIndicatorRec,*XkbIndicatorPtr;
|
||||
|
||||
typedef struct _XkbKeyNameRec {
|
||||
char name[XkbKeyNameLength];
|
||||
} XkbKeyNameRec,*XkbKeyNamePtr;
|
||||
|
||||
typedef struct _XkbKeyAliasRec {
|
||||
char real[XkbKeyNameLength];
|
||||
char alias[XkbKeyNameLength];
|
||||
} XkbKeyAliasRec,*XkbKeyAliasPtr;
|
||||
|
||||
/*
|
||||
* Names for everything
|
||||
*/
|
||||
typedef struct _XkbNamesRec {
|
||||
Atom keycodes;
|
||||
Atom geometry;
|
||||
Atom symbols;
|
||||
Atom types;
|
||||
Atom compat;
|
||||
Atom vmods[XkbNumVirtualMods];
|
||||
Atom indicators[XkbNumIndicators];
|
||||
Atom groups[XkbNumKbdGroups];
|
||||
XkbKeyNamePtr keys;
|
||||
XkbKeyAliasPtr key_aliases;
|
||||
Atom *radio_groups;
|
||||
Atom phys_symbols;
|
||||
|
||||
unsigned char num_keys;
|
||||
unsigned char num_key_aliases;
|
||||
unsigned short num_rg;
|
||||
} XkbNamesRec,*XkbNamesPtr;
|
||||
|
||||
typedef struct _XkbGeometry *XkbGeometryPtr;
|
||||
/*
|
||||
* Tie it all together into one big keyboard description
|
||||
*/
|
||||
typedef struct _XkbDesc {
|
||||
struct _XDisplay * dpy;
|
||||
unsigned short flags;
|
||||
unsigned short device_spec;
|
||||
KeyCode min_key_code;
|
||||
KeyCode max_key_code;
|
||||
|
||||
XkbControlsPtr ctrls;
|
||||
XkbServerMapPtr server;
|
||||
XkbClientMapPtr map;
|
||||
XkbIndicatorPtr indicators;
|
||||
XkbNamesPtr names;
|
||||
XkbCompatMapPtr compat;
|
||||
XkbGeometryPtr geom;
|
||||
} XkbDescRec, *XkbDescPtr;
|
||||
#define XkbKeyKeyTypeIndex(d,k,g) (XkbCMKeyTypeIndex((d)->map,k,g))
|
||||
#define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g))
|
||||
#define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g))
|
||||
#define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k))
|
||||
#define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k)))
|
||||
#define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k)))
|
||||
#define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k)))
|
||||
#define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k)))
|
||||
#define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])
|
||||
#define XkbKeySymEntry(d,k,sl,g) \
|
||||
(XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
|
||||
#define XkbKeyAction(d,k,n) \
|
||||
(XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)
|
||||
#define XkbKeyActionEntry(d,k,sl,g) \
|
||||
(XkbKeyHasActions(d,k)?\
|
||||
XkbKeyAction(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))):NULL)
|
||||
|
||||
#define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0)
|
||||
#define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
|
||||
#define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))
|
||||
#define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&&\
|
||||
((k)<=(d)->max_key_code))
|
||||
#define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1)
|
||||
|
||||
|
||||
/*
|
||||
* The following structures can be used to track changes
|
||||
* to a keyboard device
|
||||
*/
|
||||
typedef struct _XkbMapChanges {
|
||||
unsigned short changed;
|
||||
KeyCode min_key_code;
|
||||
KeyCode max_key_code;
|
||||
unsigned char first_type;
|
||||
unsigned char num_types;
|
||||
KeyCode first_key_sym;
|
||||
unsigned char num_key_syms;
|
||||
KeyCode first_key_act;
|
||||
unsigned char num_key_acts;
|
||||
KeyCode first_key_behavior;
|
||||
unsigned char num_key_behaviors;
|
||||
KeyCode first_key_explicit;
|
||||
unsigned char num_key_explicit;
|
||||
KeyCode first_modmap_key;
|
||||
unsigned char num_modmap_keys;
|
||||
KeyCode first_vmodmap_key;
|
||||
unsigned char num_vmodmap_keys;
|
||||
unsigned char pad;
|
||||
unsigned short vmods;
|
||||
} XkbMapChangesRec,*XkbMapChangesPtr;
|
||||
|
||||
typedef struct _XkbControlsChanges {
|
||||
unsigned int changed_ctrls;
|
||||
unsigned int enabled_ctrls_changes;
|
||||
Bool num_groups_changed;
|
||||
} XkbControlsChangesRec,*XkbControlsChangesPtr;
|
||||
|
||||
typedef struct _XkbIndicatorChanges {
|
||||
unsigned int state_changes;
|
||||
unsigned int map_changes;
|
||||
} XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
|
||||
|
||||
typedef struct _XkbNameChanges {
|
||||
unsigned int changed;
|
||||
unsigned char first_type;
|
||||
unsigned char num_types;
|
||||
unsigned char first_lvl;
|
||||
unsigned char num_lvls;
|
||||
unsigned char num_aliases;
|
||||
unsigned char num_rg;
|
||||
unsigned char first_key;
|
||||
unsigned char num_keys;
|
||||
unsigned short changed_vmods;
|
||||
unsigned long changed_indicators;
|
||||
unsigned char changed_groups;
|
||||
} XkbNameChangesRec,*XkbNameChangesPtr;
|
||||
|
||||
typedef struct _XkbCompatChanges {
|
||||
unsigned char changed_groups;
|
||||
unsigned short first_si;
|
||||
unsigned short num_si;
|
||||
} XkbCompatChangesRec,*XkbCompatChangesPtr;
|
||||
|
||||
typedef struct _XkbChanges {
|
||||
unsigned short device_spec;
|
||||
unsigned short state_changes;
|
||||
XkbMapChangesRec map;
|
||||
XkbControlsChangesRec ctrls;
|
||||
XkbIndicatorChangesRec indicators;
|
||||
XkbNameChangesRec names;
|
||||
XkbCompatChangesRec compat;
|
||||
} XkbChangesRec, *XkbChangesPtr;
|
||||
|
||||
/*
|
||||
* These data structures are used to construct a keymap from
|
||||
* a set of components or to list components in the server
|
||||
* database.
|
||||
*/
|
||||
typedef struct _XkbComponentNames {
|
||||
char * keymap;
|
||||
char * keycodes;
|
||||
char * types;
|
||||
char * compat;
|
||||
char * symbols;
|
||||
char * geometry;
|
||||
} XkbComponentNamesRec, *XkbComponentNamesPtr;
|
||||
|
||||
typedef struct _XkbComponentName {
|
||||
unsigned short flags;
|
||||
char * name;
|
||||
} XkbComponentNameRec,*XkbComponentNamePtr;
|
||||
|
||||
typedef struct _XkbComponentList {
|
||||
int num_keymaps;
|
||||
int num_keycodes;
|
||||
int num_types;
|
||||
int num_compat;
|
||||
int num_symbols;
|
||||
int num_geometry;
|
||||
XkbComponentNamePtr keymaps;
|
||||
XkbComponentNamePtr keycodes;
|
||||
XkbComponentNamePtr types;
|
||||
XkbComponentNamePtr compat;
|
||||
XkbComponentNamePtr symbols;
|
||||
XkbComponentNamePtr geometry;
|
||||
} XkbComponentListRec, *XkbComponentListPtr;
|
||||
|
||||
/*
|
||||
* The following data structures describe and track changes to a
|
||||
* non-keyboard extension device
|
||||
*/
|
||||
typedef struct _XkbDeviceLedInfo {
|
||||
unsigned short led_class;
|
||||
unsigned short led_id;
|
||||
unsigned int phys_indicators;
|
||||
unsigned int maps_present;
|
||||
unsigned int names_present;
|
||||
unsigned int state;
|
||||
Atom names[XkbNumIndicators];
|
||||
XkbIndicatorMapRec maps[XkbNumIndicators];
|
||||
} XkbDeviceLedInfoRec,*XkbDeviceLedInfoPtr;
|
||||
|
||||
typedef struct _XkbDeviceInfo {
|
||||
char * name;
|
||||
Atom type;
|
||||
unsigned short device_spec;
|
||||
Bool has_own_state;
|
||||
unsigned short supported;
|
||||
unsigned short unsupported;
|
||||
|
||||
unsigned short num_btns;
|
||||
XkbAction * btn_acts;
|
||||
|
||||
unsigned short sz_leds;
|
||||
unsigned short num_leds;
|
||||
unsigned short dflt_kbd_fb;
|
||||
unsigned short dflt_led_fb;
|
||||
XkbDeviceLedInfoPtr leds;
|
||||
} XkbDeviceInfoRec,*XkbDeviceInfoPtr;
|
||||
|
||||
#define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL))
|
||||
#define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))
|
||||
#define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL))
|
||||
|
||||
typedef struct _XkbDeviceLedChanges {
|
||||
unsigned short led_class;
|
||||
unsigned short led_id;
|
||||
unsigned int defined; /* names or maps changed */
|
||||
struct _XkbDeviceLedChanges *next;
|
||||
} XkbDeviceLedChangesRec,*XkbDeviceLedChangesPtr;
|
||||
|
||||
typedef struct _XkbDeviceChanges {
|
||||
unsigned int changed;
|
||||
unsigned short first_btn;
|
||||
unsigned short num_btns;
|
||||
XkbDeviceLedChangesRec leds;
|
||||
} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
|
||||
|
||||
#endif /* _XKBSTR_H_ */
|
||||
Loading…
Add table
Reference in a new issue