1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
14:
15: 16: 17: 18:
19: #include <tk/tkernel.h>
20: #include <tk/util.h>
21: #include <sys/util.h>
22: #include <device/lowkbpd.h>
23: #include <device/kbpd.h>
24: #include <device/sdrvif.h>
25: #include <libstr.h>
26:
27: #ifdef DEBUG
28: #define DP(exp) printf exp
29: #else
30: #define DP(exp)
31: #endif
32:
33: 34: 35:
36: typedef union {
37: PdInput p;
38: PdInput2 p2;
39: KeyInput k;
40: FlgInput f;
41: } RawEvt;
42:
43: 44: 45:
46: typedef struct {
47: W id;
48: UB dt[8];
49: } hwMsg;
50:
51: typedef union {
52: hwMsg hw;
53: } InMsg;
54:
55: #define HWKB (-100)
56: #define HWPD (-101)
57:
58: #define MAX_INMSG 128
59:
60: 61: 62:
63: IMPORT ID CmdTsk;
64: IMPORT ID CmdFlg;
65: IMPORT ID EvtMbx;
66: IMPORT ID InpMbf;
67:
68: IMPORT BOOL Suspended;
69:
70: IMPORT UW InpMode;
71: IMPORT UW KbdId;
72: IMPORT W PdSense;
73:
74: IMPORT PRI TaskPri;
75:
76: #define NumLockON 0x10
77:
78: 79: 80:
81: #define DEF_PRIORITY 25
82: #ifdef DEBUG
83: #define TASK_STKSZ 3072
84: #else
85: #define TASK_STKSZ 2048
86: #endif
87:
88: 89: 90:
91: #define DC_OPEN 1
92: #define DC_SUSPEND 2
93: #define DC_RESUME 3
94:
95: 96: 97:
98: #define PD_WHEEL 0x4000
99: #define PD_QPRESS 0x2000
100: #define PD_REV 0x1000
101: #define PD_ACMSK 0x0e00
102: #define PD_ABS 0x0100
103: #define PD_REL 0x0000
104: #define PD_SCMSK 0x00f0
105: #define PD_SNMSK 0x000f
106:
107: 108: 109:
110:
111: IMPORT INT kpCreTask(W name, FP entry);
112: IMPORT ER main(INT ac, UB *av[]);
113:
114:
115: IMPORT void* MemAlloc(W size);
116: IMPORT void MemFree(void *ptr);
117: IMPORT ER kpSendMsg(RawEvt *msg);
118: IMPORT void kpScalingPos(RawEvt *evt, W x, W y, PNT *fract, W x_max);
119: IMPORT void kpSendPdEvt(RawEvt *evt, UW *lsts, RawEvt *last);
120: IMPORT void kpSendWheelEvt(W z);
121: IMPORT void kpSendMouseEvt(W but, W x, W y, W z, UW *lsts);
122: IMPORT void kpSendKeyEvt(W sts, W keycode);
123: IMPORT ER kpSendDrvCmd(UW cmd);
124: IMPORT void kpDataTask(void);
125: IMPORT void kpCmdTask(void);
126:
127:
128: IMPORT ER hwInit(W cmd);
129: IMPORT void hwImode(W inpmd);
130: IMPORT void hwProc(InMsg *msg);