baseport/syborg/keyboard/syborg_keyboard.h
changeset 2 d55eb581a87c
parent 0 ffa851df0825
child 15 5fca9e46c6fa
--- /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