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

📄 evtque.h

📁 T-kernel 的extension源代码
💻 H
字号:
/* *---------------------------------------------------------------------- *    T-Kernel / Standard Extension * *    Copyright (C) 2006 by Ken Sakamura. All rights reserved. *    T-Kernel / Standard Extension is distributed  *      under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * *    Version:   1.00.00 *    Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* *	evtque.h (event) * *	Event management *	Define the event queue. */#ifndef _EM_EVTQUE_H_#define _EM_EVTQUE_H_#include <sys/queue.h>/* * Event stored in the queue. */typedef struct EmEvt {	QUEUE	q;			/* For queue connection */	EVENT	evt;			/* Event */} EmEvt;/* * Event queue management information */typedef struct EvtQue {	QUEUE	que;			/* Events connected in order of occurrence time. */	W	cnt[15];		/* The number of event occurrences by type */	SYSTIME	last[15];		/* Time of the last event occurrence by type */	UH	keytop;			/* Key top number of the key being pressed */	TC	code;			/* Character code of the key being pressed */	PNT	pos;			/* PD position */	UW	stat;			/* Metakey and PD button state */	unsigned int	pressKey:1;	/* TRUE when the key is being pressed. */	unsigned int	chgPos:1;	/* TRUE when the PD position has moved. */	unsigned int	chgPdStat:1;	/* TRUE when the PD state has changed. */	unsigned int	chgMeta:1;	/* TRUE when the metakey state has changed. */	H	wheel;			/* The amount of wheel rotation */	SYSTIME	lastWheel;		/* Time of the last wheel event occurrence */	struct {			/* Key repeat management information */		ID	cycid;		/* Cyclic start handler number */		W	interval;	/* Current repeat interval (0: Stop) */		BOOL	timing;		/* Event occurrence timing */	} keyRpt;	UW	sysEvtMsk;		/* System event mask */	QUEUE	free;			/* Free list of the event storing area */	EmEvt	*buf;			/* Pointer to the event storing area */} EvtQue;#define	evtque	emInfo.evtQue#define	toEvtMsk(type)		(0x00000001U  <<  ((type) - 1))#define	isMatchEvtMsk(type)	( (evtque.sysEvtMsk & toEvtMsk(type)) != 0 )/* * Fetch from and Return to the event free list. */#define	newEmEvt()		( (EmEvt*)QueRemoveNext(&evtque.free) )#define	freeEmEvt(emEvt)	QueInsert(&(emEvt)->q, &evtque.free)/* * Add *evt to the event queue. */#define	putEmEvt(emEvt)				\{						\	QueInsert(&(emEvt)->q, &evtque.que);	\	++evtque.cnt[(emEvt)->evt.type - 1];	\}/* * Delete *evt from the event queue. */#define	rmvEmEvt(emEvt)				\{						\	QueRemove(&(emEvt)->q);			\	--evtque.cnt[(emEvt)->evt.type - 1];	\}/* * Register the time of the last event occurrence. */#define	setLastEvt(type, time)			\{						\	evtque.last[(type) - 1] = time;		\}IMPORT ER	emInitEvtQue( void );IMPORT ER	emDeleteEvtQue( void );IMPORT ER	emSetKeyRepeat( W offset, W interval, BOOL force );IMPORT WER	_tkse_get_evt( W t_mask, EVENT *evt, W opt );IMPORT ER	_tkse_put_evt( EVENT *evt, W opt );IMPORT ER	_tkse_clr_evt( W t_mask, W last_mask );IMPORT WER	_tkse_chg_emk( W mask );IMPORT WER	_tkse_get_pdp( PNT *pos );IMPORT WER	_tkse_las_evt( W t_mask );#endif

⌨️ 快捷键说明

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