diff -r 000000000000 -r a41df078684a kernel/eka/include/k32keys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/include/k32keys.h Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,472 @@ +// Copyright (c) 1997-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: +// e32\include\k32keys.h +// +// WARNING: This file contains some APIs which are internal and are subject +// to change without notice. Such APIs should therefore not be used +// outside the Kernel and Hardware Services package. +// + +#ifndef __KEYSTD_H__ +#define __KEYSTD_H__ + + +//////////////////////////////////////////////////////// +// +// Bits required for keyboard translation software +// +//////////////////////////////////////////////////////// + +#include + +/** +@internalComponent +@released +*/ +const TUint KConvTableSettableModifiers=EModifierAutorepeatable| + EModifierKeypad| + EModifierPureKeycode; + +/** +@internalComponent +@released +*/ +const TUint KPersistentModifiers=EModifierLeftAlt| + EModifierRightAlt| + EModifierAlt| + EModifierLeftCtrl| + EModifierRightCtrl| + EModifierCtrl| + EModifierLeftShift| + EModifierRightShift| + EModifierShift| + EModifierLeftFunc| + EModifierRightFunc| + EModifierFunc| + EModifierCapsLock| + EModifierNumLock| + EModifierScrollLock| + EModifierKeyboardExtend; + + +/** +@internalComponent +@released +*/ +const TUint KRotationModifiers=EModifierRotateBy90| + EModifierRotateBy180| + EModifierRotateBy270; + + +/** +@publishedPartner +@released +*/ +struct SScanCodeBlock + { + TUint16 firstScanCode; + TUint16 lastScanCode; + }; + +/** +@publishedPartner +@released +*/ +struct SScanCodeBlockList + { + TUint numBlocks; + const SScanCodeBlock *pblocks; + }; + +/** +@publishedPartner +@released +*/ +struct SConvSubTable + { + const TUint16 *pkeyCode; + SScanCodeBlockList scanCodes; + }; + +/** +@publishedPartner +@released +*/ +struct SConvTableNode + { + TMaskedModifiers maskedModifiers; + TUint numSubTables; + const SConvSubTable * const *ppsubTables; + }; + +/** +@publishedPartner +@released +*/ +struct SConvTable + { + TUint numNodes; + const SConvTableNode *pnodes; + }; + +/** +@publishedPartner +@released +*/ +struct SKeyCodeList + { + TUint numKeyCodes; + const TUint16 *pkeyCodes; + }; + +/** +@publishedPartner +@released +*/ +struct SFunc + { + TInt32 funcParam; + TUint8 func; + TUint8 filler; + }; + +/** +@publishedPartner +@released +*/ +struct SFuncAndState + { + TUint8 state; + TUint8 func; + TInt32 funcParam; + }; + +/** +@publishedPartner +@released +*/ +struct SFuncTableEntry + { + TMaskedModifiers maskedModifiers; + TKeyCodePattern keyCodePattern; + SFuncAndState funcAndNewState; + }; + +/** +@publishedPartner +@released +*/ +struct SFuncTable + { + TUint numEntries; + const SFuncTableEntry *pentries; + }; + +/** +@publishedPartner +@released +*/ +struct SFuncTables + { + SFuncTable defaultTable; + SFuncTable modifierTable; + TUint numGenFuncTables; + const SFuncTable *pgenFuncTables; + }; + +/** +@internalComponent +@released +*/ +class TCharExtended: public TChar + { +public: + inline TCharExtended(); + inline TCharExtended(TUint aChar); + TCharExtended &operator=(TUint aChar); + TBool IsDigitGivenRadix(TRadix aRadix) const; + TBool IsModifier() const; + TInt DigitValue() const; + TBool MatchesPattern(const TKeyCodePattern &aKeyCodePattern, TRadix aRadix=EDecimal) const; + }; + +/** +@internalComponent +@released +*/ +class TFuncTable + { +public: + TFuncTable(); + void Update(RLibrary aLibrary); + SFunc GetModifierFunc(const TCharExtended &aChar, const TInt &aModifiers) const; + SFuncAndState GetGeneralFuncAndState(const TCharExtended &aChar, const TInt &aModifiers, + TUint aCurState, TRadix aRadix) const; +private: + SFuncTables iFuncTables; + SFuncTableEntry getDefault(const TCharExtended &aChar, const TInt &aModifiers) const; + }; + +/** +@internalComponent +@released +*/ +struct SConvKeyData + { + TInt modifiers; + TUint16 keyCode; + TUint16 filler; + }; + +/** +@publishedPartner +@released +*/ +enum TCtrlDigitsTermination + { + ETerminationByCount, + ETerminationByCtrlUp + }; + +/** +@internalComponent +@released +*/ +class TConvTable + { +public: + TConvTable(); + void Update(RLibrary aLibrary); + SConvKeyData Convert(TUint aScanCode, const TInt &aModifiers) const; + SConvKeyData ConvertBaseCase(TUint aScanCode, const TInt &aModifiers) const; + inline TUint FirstScanCode() const; + inline TUint LastScanCode() const; +private: + SConvTable iConvTable; + TUint iFirstScanCode; + TUint iLastScanCode; + SScanCodeBlockList iKeypadScanCodes; + SKeyCodeList iNonAutorepKeyCodes; + TBool onKeypad(TUint aScanCode) const; + TBool autorepeatable(TUint aKeyCode) const; + }; + +/** +@internalComponent +@released +*/ +class TCtrlDigits + { +public: + TCtrlDigits(); + void Update(RLibrary aLibrary); + void Reset(); + void AppendDigit(TUint aKeyCode, TUint aModifiers); + inline void SetRadix(TRadix aRadix); + inline void SetMaxCount(TInt aMaxCount); + inline TRadix GetRadix() const; + TBool Terminated(TInt aModifiers) const; + TUint SetStateToCtrlDigits() const; + inline TBool WithinLimits() const; + inline TUint GetDigits() const; + inline TBool Error() const; +private: + TInt iCount; + TInt iMaxCount; + TInt iMaximumCtrlDigitsMaxCount; + TUint32 iDigits; + TRadix iRadix; + TBool iErrorFlag; + TCtrlDigitsTermination iTermination; + }; + +/** +@internalComponent +@released +*/ +enum TState + { +// values used as an index to a table + EStateNormal =0x0a, + EStateCtrlDigitsUntilCount =0x0b, + EStateCtrlDigitsUntilCtrlUp =0x0c, +// values used as "rules" to be processed in a switch statement + EStateUnchanged =0x40, + EStateDerivedFromDigitEntered, + EStateCtrlDigits + }; + +/** +@internalComponent +@released +*/ +enum TFuncGeneral + { + EDoNothing =0x00, + EPassKeyThru, + EPassSpecialKeyThru, + EPassCtrlDigitsThru, + EAddOnCtrlDigit, + }; + +/** +@internalComponent +@released +*/ +NONSHARABLE_CLASS(CKeyTranslatorX) : public CKeyTranslator + { + friend class CKeyTranslator; +public: + CKeyTranslatorX(); + virtual TInt GetModifierState(); + virtual void SetModifierState(TEventModifier aModifier,TModifierState aState); + virtual TBool TranslateKey(TUint aScanCode, TBool aKeyUp, + const CCaptureKeys &aCaptureKeys, TKeyData &aKeyData); + virtual void UpdateModifiers(TInt aModifiers); + virtual TInt ChangeKeyData(const TDesC& aLibraryName); + TBool currentlyUpperCase(void); + TUint executeFunctionsAndSetState(TCharExtended aChar); + TInt Initialise(); +private: + TInt iCurModifiers; + TMaskedModifiers iTogglingModifiers; + TCtrlDigits iCurCtrlDigits; + TConvTable iConvTable; + TFuncTable iFuncTable; + TUint iCurState; + TBool iIsdefaultKeyData; + RLibrary iKeyDataLib; + RLibrary iDefaultKeyDataLib; + }; + +/** +@internalComponent +@released +*/ +enum TCP850Char + { + ECP850LogicNot=0x00aa, + ECP850LcAe=0x0091, + ECP850LcCcedilla=0x0087, + ECP850EsTset=0x00e1, + ECP850LcOslash=0x009b, + ECP850LcThorn=0x00d0, + ECP850LcSoftTh=0x00e7, + ECP850LeftChevron=0x00ae, + ECP850RightChevron=0x00af, + ECP850InvExclam=0x00ad, + ECP850InvQuest=0x00a8, + ECP850LcAo=0x0086, + ECP850Pound=0x009c, + ECP850LcAumlaut=0x0084, + ECP850LcEumlaut=0x0089, + ECP850LcIumlaut=0x008b, + ECP850LcOumlaut=0x0094, + ECP850LcUumlaut=0x009a, + ECP850LcYumlaut=0x0098, + ECP850SpaceUmlaut=0x00f9, + ECP850LcAgrave=0x0085, + ECP850LcEgrave=0x008a, + ECP850LcIgrave=0x008d, + ECP850LcOgrave=0x0095, + ECP850LcUgrave=0x0097, + ECP850SpaceGrave=0x0060, + ECP850LcAacute=0x00a0, + ECP850LcEacute=0x0082, + ECP850LcIacute=0x00a1, + ECP850LcOacute=0x00a2, + ECP850LcUacute=0x00a3, + ECP850LcYacute=0x00ec, + ECP850LcSpaceAcute=0x0027, + ECP850LcAtilde=0x00c6, + ECP850LcNtilde=0x00a4, + ECP850LcOtilde=0x00e4, + ECP850LcSpaceTilde=0x007e, + ECP850LcAcirc=0x0083, + ECP850LcEcirc=0x0088, + ECP850LcIcirc=0x008c, + ECP850LcOcirc=0x0093, + ECP850LcUcirc=0x0096, + ECP850LcSpaceCirc=0x005e + }; + +/** +@internalComponent +@released +*/ +enum TLatin1Char + { + ELatin1LogicNot=0x0090, + ELatin1LcAe=0x00e6, + ELatin1UcAe=0x00c6, + ELatin1LcCcedilla=0x00e7, + ELatin1EsTset=0x00df, + ELatin1LcOslash=0x00f8, + ELatin1UcOslash=0x00d8, + ELatin1LcThorn=0x00fe, + ELatin1LcSoftTh=0x00f0, + ELatin1LeftChevron=0x00ab, + ELatin1RightChevron=0x00bb, + ELatin1InvExclam=0x00a1, + ELatin1InvQuest=0x00bf, + ELatin1LcAo=0x00e5, + ELatin1Pound=0x00a3, + ELatin1LcAumlaut=0x00e4, + ELatin1LcEumlaut=0x00eb, + ELatin1LcIumlaut=0x00ef, + ELatin1LcOumlaut=0x00f6, + ELatin1LcUumlaut=0x00fc, + ELatin1LcYumlaut=0x00ff, + ELatin1SpaceUmlaut=0x00a8, + ELatin1LcAgrave=0x00e0, + ELatin1LcEgrave=0x00e8, + ELatin1LcIgrave=0x00ec, + ELatin1LcOgrave=0x00f2, + ELatin1LcUgrave=0x00f9, + ELatin1SpaceGrave=0x0060, + ELatin1LcAacute=0x00e1, + ELatin1LcEacute=0x00e9, + ELatin1LcIacute=0x00ed, + ELatin1LcOacute=0x00f3, + ELatin1LcUacute=0x00fa, + ELatin1LcYacute=0x00fd, + ELatin1LcSpaceAcute=0x00b4, + ELatin1LcAtilde=0x00e3, + ELatin1LcNtilde=0x00f1, + ELatin1LcOtilde=0x00f5, + ELatin1LcSpaceTilde=0x0098, + ELatin1LcAcirc=0x00e2, + ELatin1LcEcirc=0x00ea, + ELatin1LcIcirc=0x00ee, + ELatin1LcOcirc=0x00f4, + ELatin1LcUcirc=0x00fb, + ELatin1LcSpaceCirc=0x0088, + ELatin1UcEacute=0x00c9, + ELatin1Diaresis=0x00a8, + ELatin1MicroSign=0x00b5, + ELatin1UcAumlaut=0x00c4, + ELatin1UcOumlaut=0x00d6, + ELatin1UcUumlaut=0x00dc, + ELatin1SectionSign=0x00a7, + ELatin1MultiplicationSign=0x00d7, + ELatin1DivisionSign=0x00f7, + ELatin1DegreeSign=0x00b0, + ELatin1UcUgrave=0x00d9, + ELatin1MasculineOrdinalSign=0x00ba + }; +// +#include +// +#endif +