--- /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 <kpower.h>
+#include <e32keys.h>
+#include <system.h>
+
+#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