📄 evtque.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 + -