Updated the README.txt - includes instructions on downloading ready-to-use QEMU binaries
/*
* 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