📄 xkbstr.h
字号:
/* $TOG: XKBstr.h /main/16 1997/06/10 06:53:12 kaleb $ *//************************************************************Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.Permission to use, copy, modify, and distribute thissoftware and its documentation for any purpose and withoutfee is hereby granted, provided that the above copyrightnotice appear in all copies and that both that copyrightnotice and this permission notice appear in supportingdocumentation, 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 SILICONGRAPHICS 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 WITHTHE 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 7typedef 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]])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -