diff -r 2fb8b9db1c86 -r d55eb581a87c baseport/syborg/keyboard/syborg_keyboard.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/baseport/syborg/keyboard/syborg_keyboard.h Tue Aug 04 10:28:23 2009 +0100 @@ -0,0 +1,337 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Minimalistic keyboard driver +* +*/ + +#ifndef _SYBORG_KEYBOARD_H +#define _SYBORG_KEYBOARD_H + +#include +#include +#include + +#ifdef DEBUG +#define __DEBUG_PRINT(format...) Kern::Printf(format) +#else +#define __DEBUG_PRINT(format...) __KTRACE_OPT(KBOOT,Kern::Printf(format)) +#endif + +#define FIFO_SIZE 16 + +_LIT(KLitKeyboard,"Syborg Keyboard"); +const TKeyboard KConfigKeyboardType = EKeyboard_Full; +const TInt KConfigKeyboardDeviceKeys = 0; +const TInt KConfigKeyboardAppsKeys = 0; + +class DKeyboardPs2Soc : public DPowerHandler +{ +public: + DKeyboardPs2Soc(); + TInt Create(); + TInt HalFunction(TInt aFunction, TAny* a1, TAny* a2); + void KeyboardInfo(TKeyboardInfoV01& aInfo); + void KeyboardOn(); + void KeyboardOff(); + void PowerUp(); + void PowerDown(TPowerState); + void HandleMsg(TMessageBase* aMsg); + +private: + static void Isr(TAny* aPtr); + static void RxDfc(TAny* aPtr); + + private: + TInt FifoPop(void); + void FifoPush(TInt val); + + TInt iKeyFifo[FIFO_SIZE]; + TInt iFifoPos; + TInt iFifoCount; + +private: + TDfc iRxDfc; + TBool iKeyboardOn; + +public: + TDfcQue* iDfcQ; + TMessageQue iMsgQ; + + enum { + KBD_ID = 0, + KBD_DATA = 1, + KBD_FIFO_COUNT = 2, + KBD_INT_ENABLE = 3 + }; +}; + +const TUint8 KConvertCode[] = + { + /*00*/ EStdKeyNull, + /*01*/ EStdKeyEscape, + /*02*/ '1', + /*03*/ '2', + /*04*/ '3', + /*05*/ '4', + /*06*/ '5', + /*07*/ '6', + /*08*/ '7', + /*09*/ '8', + /*0a*/ '9', + /*0b*/ '0', + /*0c*/ EStdKeyMinus, + /*0d*/ EStdKeyEquals, + /*0e*/ EStdKeyBackspace, + /*0f*/ EStdKeyTab, + + /*10*/ 'Q', + /*11*/ 'W', + /*12*/ 'E', + /*13*/ 'R', + /*14*/ 'T', + /*15*/ 'Y', + /*16*/ 'U', + /*17*/ 'I', + /*18*/ 'O', + /*19*/ 'P', + /*1a*/ EStdKeySquareBracketLeft, + /*1b*/ EStdKeySquareBracketRight, + /*1c*/ EStdKeyEnter, + /*1d*/ EStdKeyLeftCtrl, + /*1e*/ 'A', + /*1f*/ 'S', + + /*20*/ 'D', + /*21*/ 'F', + /*22*/ 'G', + /*23*/ 'H', + /*24*/ 'J', + /*25*/ 'K', + /*26*/ 'L', + /*27*/ EStdKeySemiColon, + /*28*/ EStdKeySingleQuote, + /*29*/ EStdKeyNull, + /*2a*/ EStdKeyLeftShift, + /*2b*/ EStdKeyHash, + /*2c*/ 'Z', + /*2d*/ 'X', + /*2e*/ 'C', + /*2f*/ 'V', + + /*30*/ 'B', + /*31*/ 'N', + /*32*/ 'M', + /*33*/ EStdKeyComma, + /*34*/ EStdKeyFullStop, + /*35*/ EStdKeyForwardSlash, + /*36*/ EStdKeyRightShift, + /*37*/ EStdKeyPrintScreen, + /*38*/ EStdKeyLeftAlt, + /*39*/ EStdKeySpace, + /*3a*/ EStdKeyCapsLock, + /*3b*/ EStdKeyMenu, // EStdKeyF1, + /*3c*/ EStdKeyF2, + /*3d*/ EStdKeyF3, + /*3e*/ EStdKeyF4, + /*3f*/ EStdKeyF5, + + /*40*/ EStdKeyF6, + /*41*/ EStdKeyF7, + /*42*/ EStdKeyF8, + /*43*/ EStdKeyF9, + /*44*/ EStdKeyF10, + /*45*/ EStdKeyNull, + /*46*/ EStdKeyScrollLock, + /*47*/ EStdKeyHome, + /*48*/ EStdKeyUpArrow, + /*49*/ EStdKeyPageUp, + /*4a*/ EStdKeyNull, + /*4b*/ EStdKeyLeftArrow, + /*4c*/ EStdKeyNull, + /*4d*/ EStdKeyRightArrow, + /*4e*/ EStdKeyNull, + /*4f*/ EStdKeyNull, + + /*50*/ EStdKeyDownArrow, + /*51*/ EStdKeyPageDown, + /*52*/ EStdKeyInsert, + /*53*/ EStdKeyDelete, + /*54*/ EStdKeyNull, + /*55*/ EStdKeyNull, + /*56*/ EStdKeyBackSlash, + /*57*/ EStdKeyF11, + /*58*/ EStdKeyF12, + /*59*/ EStdKeyNull, + /*5a*/ EStdKeyNull, + /*5b*/ EStdKeyNull, + /*5c*/ EStdKeyNull, + /*5d*/ EStdKeyNull, + /*5e*/ EStdKeyNull, + /*5f*/ EStdKeyNull, + + /*60*/ EStdKeyNull, + /*61*/ EStdKeyNull, + /*62*/ EStdKeyNull, + /*63*/ EStdKeyNull, + /*64*/ EStdKeyNull, + /*65*/ EStdKeyNull, + /*66*/ EStdKeyNull, + /*67*/ EStdKeyNull, + /*68*/ EStdKeyNull, + /*69*/ EStdKeyNull, + /*6a*/ EStdKeyNull, + /*6b*/ EStdKeyNull, + /*6c*/ EStdKeyNull, + /*6d*/ EStdKeyNull, + /*6e*/ EStdKeyNull, + /*6f*/ EStdKeyNull, + + /*70*/ EStdKeyNull, + /*71*/ EStdKeyNull, + /*72*/ EStdKeyNull, + /*73*/ EStdKeyNull, + /*74*/ EStdKeyNull, + /*75*/ EStdKeyNull, + /*76*/ EStdKeyNull, + /*77*/ EStdKeyNull, + /*78*/ EStdKeyNull, + /*79*/ EStdKeyNull, + /*7a*/ EStdKeyNull, + /*7b*/ EStdKeyNull, + /*7c*/ EStdKeyNull, + /*7d*/ EStdKeyNull, + /*7e*/ EStdKeyNull, + /*7f*/ EStdKeyNull, + + /*80*/ EStdKeyNull, + /*81*/ EStdKeyNull, + /*82*/ EStdKeyNull, + /*83*/ EStdKeyNull, + /*84*/ EStdKeyNull, + /*85*/ EStdKeyNull, + /*86*/ EStdKeyNull, + /*87*/ EStdKeyNull, + /*88*/ EStdKeyNull, + /*89*/ EStdKeyNull, + /*8a*/ EStdKeyNull, + /*8b*/ EStdKeyNull, + /*8c*/ EStdKeyNull, + /*8d*/ EStdKeyNull, + /*8e*/ EStdKeyNull, + /*8f*/ EStdKeyNull, + + /*90*/ EStdKeyNull, + /*91*/ EStdKeyNull, + /*92*/ EStdKeyNull, + /*93*/ EStdKeyNull, + /*94*/ EStdKeyNull, + /*95*/ EStdKeyNull, + /*96*/ EStdKeyNull, + /*97*/ EStdKeyNull, + /*98*/ EStdKeyNull, + /*99*/ EStdKeyNull, + /*9a*/ EStdKeyNull, + /*9b*/ EStdKeyNull, + /*9c*/ EStdKeyNull, + /*9d*/ EStdKeyNull, + /*9e*/ EStdKeyNull, + /*9f*/ EStdKeyNull, + + /*a0*/ EStdKeyNull, + /*a1*/ EStdKeyNull, + /*a2*/ EStdKeyNull, + /*a3*/ EStdKeyNull, + /*a4*/ EStdKeyNull, + /*a5*/ EStdKeyNull, + /*a6*/ EStdKeyNull, + /*a7*/ EStdKeyNull, + /*a8*/ EStdKeyNull, + /*a9*/ EStdKeyNull, + /*aa*/ EStdKeyNull, + /*ab*/ EStdKeyNull, + /*ac*/ EStdKeyNull, + /*ad*/ EStdKeyNull, + /*ae*/ EStdKeyNull, + /*af*/ EStdKeyNull, + + /*b0*/ EStdKeyNull, + /*b1*/ EStdKeyNull, + /*b2*/ EStdKeyNull, + /*b3*/ EStdKeyNull, + /*b4*/ EStdKeyNull, + /*b5*/ EStdKeyNull, + /*b6*/ EStdKeyNull, + /*b7*/ EStdKeyNull, + /*b8*/ EStdKeyNull, + /*b9*/ EStdKeyNull, + /*ba*/ EStdKeyNull, + /*bb*/ EStdKeyNull, + /*bc*/ EStdKeyNull, + /*bd*/ EStdKeyNull, + /*be*/ EStdKeyNull, + /*bf*/ EStdKeyNull, + + /*c0*/ EStdKeyNull, + /*c1*/ EStdKeyNull, + /*c2*/ EStdKeyNull, + /*c3*/ EStdKeyNull, + /*c4*/ EStdKeyNull, + /*c5*/ EStdKeyNull, + /*c6*/ EStdKeyNull, + /*c7*/ EStdKeyNull, + /*c8*/ EStdKeyNull, + /*c9*/ EStdKeyNull, + /*ca*/ EStdKeyNull, + /*cb*/ EStdKeyNull, + /*cc*/ EStdKeyNull, + /*cd*/ EStdKeyNull, + /*ce*/ EStdKeyNull, + /*cf*/ EStdKeyNull, + + /*d0*/ EStdKeyNull, + /*d1*/ EStdKeyNull, + /*d2*/ EStdKeyNull, + /*d3*/ EStdKeyNull, + /*d4*/ EStdKeyNull, + /*d5*/ EStdKeyNull, + /*d6*/ EStdKeyNull, + /*d7*/ EStdKeyNull, + /*d8*/ EStdKeyNull, + /*d9*/ EStdKeyNull, + /*da*/ EStdKeyNull, + /*db*/ EStdKeyNull, + /*dc*/ EStdKeyNull, + /*dd*/ EStdKeyNull, + /*de*/ EStdKeyNull, + /*df*/ EStdKeyNull, + + /*e0*/ EStdKeyNull, + /*e1*/ EStdKeyNull, + /*e2*/ EStdKeyNull, + /*e3*/ EStdKeyNull, + /*e4*/ EStdKeyNull, + /*e5*/ EStdKeyNull, + /*e6*/ EStdKeyNull, + /*e7*/ EStdKeyNull, + /*e8*/ EStdKeyNull, + /*e9*/ EStdKeyNull, + /*ea*/ EStdKeyNull, + /*eb*/ EStdKeyNull, + /*ec*/ EStdKeyNull, + /*ed*/ EStdKeyNull, + /*ee*/ EStdKeyNull, + /*ef*/ EStdKeyNull, +}; + +#endif