⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xkbstr.h

📁 远程桌面连接工具
💻 H
📖 第 1 页 / 共 2 页
字号:
	/*	 * 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_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -