--- /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 <e32svr.h>
+
+/**
+@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 <k32keys.inl>
+//
+#endif
+