|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of the License "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Minimalistic keyboard driver |
|
15 * |
|
16 */ |
|
17 |
|
18 #ifndef _SYBORG_KEYBOARD_H |
|
19 #define _SYBORG_KEYBOARD_H |
|
20 |
|
21 #include <kpower.h> |
|
22 #include <e32keys.h> |
|
23 #include <system.h> |
|
24 |
|
25 #ifdef DEBUG |
|
26 #define __DEBUG_PRINT(format...) Kern::Printf(format) |
|
27 #else |
|
28 #define __DEBUG_PRINT(format...) __KTRACE_OPT(KBOOT,Kern::Printf(format)) |
|
29 #endif |
|
30 |
|
31 #define FIFO_SIZE 16 |
|
32 |
|
33 _LIT(KLitKeyboard,"Syborg Keyboard"); |
|
34 const TKeyboard KConfigKeyboardType = EKeyboard_Full; |
|
35 const TInt KConfigKeyboardDeviceKeys = 0; |
|
36 const TInt KConfigKeyboardAppsKeys = 0; |
|
37 |
|
38 class DKeyboardPs2Soc : public DPowerHandler |
|
39 { |
|
40 public: |
|
41 DKeyboardPs2Soc(); |
|
42 TInt Create(); |
|
43 TInt HalFunction(TInt aFunction, TAny* a1, TAny* a2); |
|
44 void KeyboardInfo(TKeyboardInfoV01& aInfo); |
|
45 void KeyboardOn(); |
|
46 void KeyboardOff(); |
|
47 void PowerUp(); |
|
48 void PowerDown(TPowerState); |
|
49 void HandleMsg(TMessageBase* aMsg); |
|
50 |
|
51 private: |
|
52 static void Isr(TAny* aPtr); |
|
53 static void RxDfc(TAny* aPtr); |
|
54 |
|
55 private: |
|
56 TInt FifoPop(void); |
|
57 void FifoPush(TInt val); |
|
58 |
|
59 TInt iKeyFifo[FIFO_SIZE]; |
|
60 TInt iFifoPos; |
|
61 TInt iFifoCount; |
|
62 |
|
63 private: |
|
64 TDfc iRxDfc; |
|
65 TBool iKeyboardOn; |
|
66 |
|
67 public: |
|
68 TDfcQue* iDfcQ; |
|
69 TMessageQue iMsgQ; |
|
70 |
|
71 enum { |
|
72 KBD_ID = 0, |
|
73 KBD_DATA = 1, |
|
74 KBD_FIFO_COUNT = 2, |
|
75 KBD_INT_ENABLE = 3 |
|
76 }; |
|
77 }; |
|
78 |
|
79 const TUint8 KConvertCode[] = |
|
80 { |
|
81 /*00*/ EStdKeyNull, |
|
82 /*01*/ EStdKeyEscape, |
|
83 /*02*/ '1', |
|
84 /*03*/ '2', |
|
85 /*04*/ '3', |
|
86 /*05*/ '4', |
|
87 /*06*/ '5', |
|
88 /*07*/ '6', |
|
89 /*08*/ '7', |
|
90 /*09*/ '8', |
|
91 /*0a*/ '9', |
|
92 /*0b*/ '0', |
|
93 /*0c*/ EStdKeyMinus, |
|
94 /*0d*/ EStdKeyEquals, |
|
95 /*0e*/ EStdKeyBackspace, |
|
96 /*0f*/ EStdKeyTab, |
|
97 |
|
98 /*10*/ 'Q', |
|
99 /*11*/ 'W', |
|
100 /*12*/ 'E', |
|
101 /*13*/ 'R', |
|
102 /*14*/ 'T', |
|
103 /*15*/ 'Y', |
|
104 /*16*/ 'U', |
|
105 /*17*/ 'I', |
|
106 /*18*/ 'O', |
|
107 /*19*/ 'P', |
|
108 /*1a*/ EStdKeySquareBracketLeft, |
|
109 /*1b*/ EStdKeySquareBracketRight, |
|
110 /*1c*/ EStdKeyEnter, |
|
111 /*1d*/ EStdKeyLeftCtrl, |
|
112 /*1e*/ 'A', |
|
113 /*1f*/ 'S', |
|
114 |
|
115 /*20*/ 'D', |
|
116 /*21*/ 'F', |
|
117 /*22*/ 'G', |
|
118 /*23*/ 'H', |
|
119 /*24*/ 'J', |
|
120 /*25*/ 'K', |
|
121 /*26*/ 'L', |
|
122 /*27*/ EStdKeySemiColon, |
|
123 /*28*/ EStdKeySingleQuote, |
|
124 /*29*/ EStdKeyNull, |
|
125 /*2a*/ EStdKeyLeftShift, |
|
126 /*2b*/ EStdKeyHash, |
|
127 /*2c*/ 'Z', |
|
128 /*2d*/ 'X', |
|
129 /*2e*/ 'C', |
|
130 /*2f*/ 'V', |
|
131 |
|
132 /*30*/ 'B', |
|
133 /*31*/ 'N', |
|
134 /*32*/ 'M', |
|
135 /*33*/ EStdKeyComma, |
|
136 /*34*/ EStdKeyFullStop, |
|
137 /*35*/ EStdKeyForwardSlash, |
|
138 /*36*/ EStdKeyRightShift, |
|
139 /*37*/ EStdKeyPrintScreen, |
|
140 /*38*/ EStdKeyLeftAlt, |
|
141 /*39*/ EStdKeySpace, |
|
142 /*3a*/ EStdKeyCapsLock, |
|
143 /*3b*/ EStdKeyMenu, // EStdKeyF1, |
|
144 /*3c*/ EStdKeyF2, |
|
145 /*3d*/ EStdKeyF3, |
|
146 /*3e*/ EStdKeyF4, |
|
147 /*3f*/ EStdKeyF5, |
|
148 |
|
149 /*40*/ EStdKeyF6, |
|
150 /*41*/ EStdKeyF7, |
|
151 /*42*/ EStdKeyF8, |
|
152 /*43*/ EStdKeyF9, |
|
153 /*44*/ EStdKeyF10, |
|
154 /*45*/ EStdKeyNull, |
|
155 /*46*/ EStdKeyScrollLock, |
|
156 /*47*/ EStdKeyHome, |
|
157 /*48*/ EStdKeyUpArrow, |
|
158 /*49*/ EStdKeyPageUp, |
|
159 /*4a*/ EStdKeyNull, |
|
160 /*4b*/ EStdKeyLeftArrow, |
|
161 /*4c*/ EStdKeyNull, |
|
162 /*4d*/ EStdKeyRightArrow, |
|
163 /*4e*/ EStdKeyNull, |
|
164 /*4f*/ EStdKeyNull, |
|
165 |
|
166 /*50*/ EStdKeyDownArrow, |
|
167 /*51*/ EStdKeyPageDown, |
|
168 /*52*/ EStdKeyInsert, |
|
169 /*53*/ EStdKeyDelete, |
|
170 /*54*/ EStdKeyNull, |
|
171 /*55*/ EStdKeyNull, |
|
172 /*56*/ EStdKeyBackSlash, |
|
173 /*57*/ EStdKeyF11, |
|
174 /*58*/ EStdKeyF12, |
|
175 /*59*/ EStdKeyNull, |
|
176 /*5a*/ EStdKeyNull, |
|
177 /*5b*/ EStdKeyNull, |
|
178 /*5c*/ EStdKeyNull, |
|
179 /*5d*/ EStdKeyNull, |
|
180 /*5e*/ EStdKeyNull, |
|
181 /*5f*/ EStdKeyNull, |
|
182 |
|
183 /*60*/ EStdKeyNull, |
|
184 /*61*/ EStdKeyNull, |
|
185 /*62*/ EStdKeyNull, |
|
186 /*63*/ EStdKeyNull, |
|
187 /*64*/ EStdKeyNull, |
|
188 /*65*/ EStdKeyNull, |
|
189 /*66*/ EStdKeyNull, |
|
190 /*67*/ EStdKeyNull, |
|
191 /*68*/ EStdKeyNull, |
|
192 /*69*/ EStdKeyNull, |
|
193 /*6a*/ EStdKeyNull, |
|
194 /*6b*/ EStdKeyNull, |
|
195 /*6c*/ EStdKeyNull, |
|
196 /*6d*/ EStdKeyNull, |
|
197 /*6e*/ EStdKeyNull, |
|
198 /*6f*/ EStdKeyNull, |
|
199 |
|
200 /*70*/ EStdKeyNull, |
|
201 /*71*/ EStdKeyNull, |
|
202 /*72*/ EStdKeyNull, |
|
203 /*73*/ EStdKeyNull, |
|
204 /*74*/ EStdKeyNull, |
|
205 /*75*/ EStdKeyNull, |
|
206 /*76*/ EStdKeyNull, |
|
207 /*77*/ EStdKeyNull, |
|
208 /*78*/ EStdKeyNull, |
|
209 /*79*/ EStdKeyNull, |
|
210 /*7a*/ EStdKeyNull, |
|
211 /*7b*/ EStdKeyNull, |
|
212 /*7c*/ EStdKeyNull, |
|
213 /*7d*/ EStdKeyNull, |
|
214 /*7e*/ EStdKeyNull, |
|
215 /*7f*/ EStdKeyNull, |
|
216 |
|
217 /*80*/ EStdKeyNull, |
|
218 /*81*/ EStdKeyNull, |
|
219 /*82*/ EStdKeyNull, |
|
220 /*83*/ EStdKeyNull, |
|
221 /*84*/ EStdKeyNull, |
|
222 /*85*/ EStdKeyNull, |
|
223 /*86*/ EStdKeyNull, |
|
224 /*87*/ EStdKeyNull, |
|
225 /*88*/ EStdKeyNull, |
|
226 /*89*/ EStdKeyNull, |
|
227 /*8a*/ EStdKeyNull, |
|
228 /*8b*/ EStdKeyNull, |
|
229 /*8c*/ EStdKeyNull, |
|
230 /*8d*/ EStdKeyNull, |
|
231 /*8e*/ EStdKeyNull, |
|
232 /*8f*/ EStdKeyNull, |
|
233 |
|
234 /*90*/ EStdKeyNull, |
|
235 /*91*/ EStdKeyNull, |
|
236 /*92*/ EStdKeyNull, |
|
237 /*93*/ EStdKeyNull, |
|
238 /*94*/ EStdKeyNull, |
|
239 /*95*/ EStdKeyNull, |
|
240 /*96*/ EStdKeyNull, |
|
241 /*97*/ EStdKeyNull, |
|
242 /*98*/ EStdKeyNull, |
|
243 /*99*/ EStdKeyNull, |
|
244 /*9a*/ EStdKeyNull, |
|
245 /*9b*/ EStdKeyNull, |
|
246 /*9c*/ EStdKeyNull, |
|
247 /*9d*/ EStdKeyNull, |
|
248 /*9e*/ EStdKeyNull, |
|
249 /*9f*/ EStdKeyNull, |
|
250 |
|
251 /*a0*/ EStdKeyNull, |
|
252 /*a1*/ EStdKeyNull, |
|
253 /*a2*/ EStdKeyNull, |
|
254 /*a3*/ EStdKeyNull, |
|
255 /*a4*/ EStdKeyNull, |
|
256 /*a5*/ EStdKeyNull, |
|
257 /*a6*/ EStdKeyNull, |
|
258 /*a7*/ EStdKeyNull, |
|
259 /*a8*/ EStdKeyNull, |
|
260 /*a9*/ EStdKeyNull, |
|
261 /*aa*/ EStdKeyNull, |
|
262 /*ab*/ EStdKeyNull, |
|
263 /*ac*/ EStdKeyNull, |
|
264 /*ad*/ EStdKeyNull, |
|
265 /*ae*/ EStdKeyNull, |
|
266 /*af*/ EStdKeyNull, |
|
267 |
|
268 /*b0*/ EStdKeyNull, |
|
269 /*b1*/ EStdKeyNull, |
|
270 /*b2*/ EStdKeyNull, |
|
271 /*b3*/ EStdKeyNull, |
|
272 /*b4*/ EStdKeyNull, |
|
273 /*b5*/ EStdKeyNull, |
|
274 /*b6*/ EStdKeyNull, |
|
275 /*b7*/ EStdKeyNull, |
|
276 /*b8*/ EStdKeyNull, |
|
277 /*b9*/ EStdKeyNull, |
|
278 /*ba*/ EStdKeyNull, |
|
279 /*bb*/ EStdKeyNull, |
|
280 /*bc*/ EStdKeyNull, |
|
281 /*bd*/ EStdKeyNull, |
|
282 /*be*/ EStdKeyNull, |
|
283 /*bf*/ EStdKeyNull, |
|
284 |
|
285 /*c0*/ EStdKeyNull, |
|
286 /*c1*/ EStdKeyNull, |
|
287 /*c2*/ EStdKeyNull, |
|
288 /*c3*/ EStdKeyNull, |
|
289 /*c4*/ EStdKeyNull, |
|
290 /*c5*/ EStdKeyNull, |
|
291 /*c6*/ EStdKeyNull, |
|
292 /*c7*/ EStdKeyNull, |
|
293 /*c8*/ EStdKeyNull, |
|
294 /*c9*/ EStdKeyNull, |
|
295 /*ca*/ EStdKeyNull, |
|
296 /*cb*/ EStdKeyNull, |
|
297 /*cc*/ EStdKeyNull, |
|
298 /*cd*/ EStdKeyNull, |
|
299 /*ce*/ EStdKeyNull, |
|
300 /*cf*/ EStdKeyNull, |
|
301 |
|
302 /*d0*/ EStdKeyNull, |
|
303 /*d1*/ EStdKeyNull, |
|
304 /*d2*/ EStdKeyNull, |
|
305 /*d3*/ EStdKeyNull, |
|
306 /*d4*/ EStdKeyNull, |
|
307 /*d5*/ EStdKeyNull, |
|
308 /*d6*/ EStdKeyNull, |
|
309 /*d7*/ EStdKeyNull, |
|
310 /*d8*/ EStdKeyNull, |
|
311 /*d9*/ EStdKeyNull, |
|
312 /*da*/ EStdKeyNull, |
|
313 /*db*/ EStdKeyNull, |
|
314 /*dc*/ EStdKeyNull, |
|
315 /*dd*/ EStdKeyNull, |
|
316 /*de*/ EStdKeyNull, |
|
317 /*df*/ EStdKeyNull, |
|
318 |
|
319 /*e0*/ EStdKeyNull, |
|
320 /*e1*/ EStdKeyNull, |
|
321 /*e2*/ EStdKeyNull, |
|
322 /*e3*/ EStdKeyNull, |
|
323 /*e4*/ EStdKeyNull, |
|
324 /*e5*/ EStdKeyNull, |
|
325 /*e6*/ EStdKeyNull, |
|
326 /*e7*/ EStdKeyNull, |
|
327 /*e8*/ EStdKeyNull, |
|
328 /*e9*/ EStdKeyNull, |
|
329 /*ea*/ EStdKeyNull, |
|
330 /*eb*/ EStdKeyNull, |
|
331 /*ec*/ EStdKeyNull, |
|
332 /*ed*/ EStdKeyNull, |
|
333 /*ee*/ EStdKeyNull, |
|
334 /*ef*/ EStdKeyNull, |
|
335 }; |
|
336 |
|
337 #endif |