os/kernelhwsrv/kernel/eka/include/k32keys.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // e32\include\k32keys.h
    15 // 
    16 // WARNING: This file contains some APIs which are internal and are subject
    17 //          to change without notice. Such APIs should therefore not be used
    18 //          outside the Kernel and Hardware Services package.
    19 //
    20 
    21 #ifndef __KEYSTD_H__
    22 #define __KEYSTD_H__
    23 
    24 
    25 ////////////////////////////////////////////////////////
    26 //
    27 // Bits required for keyboard translation software
    28 //
    29 ////////////////////////////////////////////////////////
    30 
    31 #include <e32svr.h>
    32 
    33 /**
    34 @internalComponent
    35 @released
    36 */
    37 const TUint KConvTableSettableModifiers=EModifierAutorepeatable|
    38                                   EModifierKeypad|
    39                                   EModifierPureKeycode;
    40 
    41 /**
    42 @internalComponent
    43 @released
    44 */
    45 const TUint KPersistentModifiers=EModifierLeftAlt|
    46                            EModifierRightAlt|
    47 						   EModifierAlt|
    48                            EModifierLeftCtrl|
    49 						   EModifierRightCtrl|
    50                            EModifierCtrl|
    51 						   EModifierLeftShift|
    52                            EModifierRightShift|
    53 						   EModifierShift|
    54                            EModifierLeftFunc|
    55 						   EModifierRightFunc|
    56                            EModifierFunc|
    57 						   EModifierCapsLock|
    58                            EModifierNumLock|
    59 						   EModifierScrollLock|
    60 						   EModifierKeyboardExtend;
    61 
    62 
    63 /**
    64 @internalComponent
    65 @released
    66 */
    67 const TUint KRotationModifiers=EModifierRotateBy90|
    68 						   EModifierRotateBy180|
    69 						   EModifierRotateBy270;
    70 
    71 
    72 /**
    73 @publishedPartner
    74 @released
    75 */
    76 struct SScanCodeBlock
    77 	{
    78 	TUint16 firstScanCode;
    79 	TUint16 lastScanCode;
    80 	};
    81 
    82 /**
    83 @publishedPartner
    84 @released
    85 */
    86 struct SScanCodeBlockList
    87 	{
    88 	TUint numBlocks;
    89 	const SScanCodeBlock *pblocks;
    90 	};
    91 
    92 /**
    93 @publishedPartner
    94 @released
    95 */
    96 struct SConvSubTable
    97 	{
    98 	const TUint16 *pkeyCode;
    99 	SScanCodeBlockList scanCodes;
   100 	};
   101 
   102 /**
   103 @publishedPartner
   104 @released
   105 */
   106 struct SConvTableNode
   107 	{
   108    TMaskedModifiers maskedModifiers;
   109 	TUint numSubTables;
   110 	const SConvSubTable * const *ppsubTables;
   111 	};
   112 
   113 /**
   114 @publishedPartner
   115 @released
   116 */
   117 struct SConvTable
   118 	{
   119 	TUint numNodes;
   120 	const SConvTableNode *pnodes;
   121 	};
   122 
   123 /**
   124 @publishedPartner
   125 @released
   126 */
   127 struct SKeyCodeList
   128 	{
   129 	TUint numKeyCodes;
   130 	const TUint16 *pkeyCodes;
   131 	};
   132 
   133 /**
   134 @publishedPartner
   135 @released
   136 */
   137 struct SFunc
   138 	{
   139 	TInt32 funcParam;
   140 	TUint8 func;
   141 	TUint8 filler;
   142 	};
   143 
   144 /**
   145 @publishedPartner
   146 @released
   147 */
   148 struct SFuncAndState
   149 	{
   150 	TUint8 state;
   151 	TUint8 func;
   152 	TInt32 funcParam;
   153 	};
   154 
   155 /**
   156 @publishedPartner
   157 @released
   158 */
   159 struct SFuncTableEntry
   160 	{
   161 	TMaskedModifiers maskedModifiers;
   162 	TKeyCodePattern keyCodePattern;
   163 	SFuncAndState funcAndNewState;
   164 	};
   165 
   166 /**
   167 @publishedPartner
   168 @released
   169 */
   170 struct SFuncTable
   171 	{
   172 	TUint numEntries;
   173 	const SFuncTableEntry *pentries;
   174 	};
   175 
   176 /**
   177 @publishedPartner
   178 @released
   179 */
   180 struct SFuncTables
   181 	{
   182 	SFuncTable defaultTable;
   183 	SFuncTable modifierTable;
   184 	TUint numGenFuncTables;
   185 	const SFuncTable *pgenFuncTables;
   186 	};
   187 
   188 /**
   189 @internalComponent
   190 @released
   191 */
   192 class TCharExtended: public TChar
   193 	{
   194 public:
   195 	inline TCharExtended();
   196 	inline TCharExtended(TUint aChar);
   197 	TCharExtended &operator=(TUint aChar);
   198 	TBool IsDigitGivenRadix(TRadix aRadix) const;
   199 	TBool IsModifier() const;
   200 	TInt DigitValue() const;
   201 	TBool MatchesPattern(const TKeyCodePattern &aKeyCodePattern, TRadix aRadix=EDecimal) const;
   202 	};
   203 
   204 /**
   205 @internalComponent
   206 @released
   207 */
   208 class TFuncTable
   209 	{
   210 public:
   211 	TFuncTable();
   212 	void Update(RLibrary aLibrary);
   213 	SFunc GetModifierFunc(const TCharExtended &aChar, const TInt &aModifiers) const;
   214 	SFuncAndState GetGeneralFuncAndState(const TCharExtended &aChar, const TInt &aModifiers,
   215 															TUint aCurState, TRadix aRadix) const;
   216 private:
   217 	SFuncTables iFuncTables;
   218 	SFuncTableEntry getDefault(const TCharExtended &aChar, const TInt &aModifiers) const;
   219 	};
   220 
   221 /**
   222 @internalComponent
   223 @released
   224 */
   225 struct SConvKeyData
   226 	{
   227 	TInt modifiers;
   228 	TUint16 keyCode;
   229 	TUint16 filler;
   230 	};
   231 
   232 /**
   233 @publishedPartner
   234 @released
   235 */
   236 enum TCtrlDigitsTermination
   237 	{
   238 	ETerminationByCount,
   239 	ETerminationByCtrlUp
   240 	};
   241 
   242 /**
   243 @internalComponent
   244 @released
   245 */
   246 class TConvTable
   247 	{
   248 public:
   249 	TConvTable();
   250 	void Update(RLibrary aLibrary);
   251 	SConvKeyData Convert(TUint aScanCode, const TInt &aModifiers) const;
   252 	SConvKeyData ConvertBaseCase(TUint aScanCode, const TInt &aModifiers) const;
   253 	inline TUint FirstScanCode() const;
   254 	inline TUint LastScanCode() const;
   255 private:
   256 	SConvTable iConvTable;
   257 	TUint iFirstScanCode;
   258 	TUint iLastScanCode;
   259 	SScanCodeBlockList iKeypadScanCodes;
   260 	SKeyCodeList iNonAutorepKeyCodes;
   261 	TBool onKeypad(TUint aScanCode) const;
   262 	TBool autorepeatable(TUint aKeyCode) const;
   263 	};
   264 
   265 /**
   266 @internalComponent
   267 @released
   268 */
   269 class TCtrlDigits
   270 	{
   271 public:
   272 	TCtrlDigits();
   273 	void Update(RLibrary aLibrary);
   274 	void Reset();
   275 	void AppendDigit(TUint aKeyCode, TUint aModifiers);
   276 	inline void SetRadix(TRadix aRadix);
   277 	inline void SetMaxCount(TInt aMaxCount);
   278 	inline TRadix GetRadix() const;
   279 	TBool Terminated(TInt aModifiers) const;
   280 	TUint SetStateToCtrlDigits() const;
   281 	inline TBool WithinLimits() const;
   282 	inline TUint GetDigits() const;
   283 	inline TBool Error() const;
   284 private:
   285 	TInt iCount;
   286 	TInt iMaxCount;
   287 	TInt iMaximumCtrlDigitsMaxCount;
   288 	TUint32 iDigits;
   289 	TRadix iRadix;
   290 	TBool iErrorFlag;
   291 	TCtrlDigitsTermination iTermination;
   292 	};
   293 
   294 /**
   295 @internalComponent
   296 @released
   297 */
   298 enum TState
   299 	{
   300 // values used as an index to a table
   301 	EStateNormal						=0x0a,
   302 	EStateCtrlDigitsUntilCount			=0x0b,
   303 	EStateCtrlDigitsUntilCtrlUp			=0x0c,
   304 // values used as "rules" to be processed in a switch statement
   305 	EStateUnchanged						=0x40,
   306 	EStateDerivedFromDigitEntered,
   307 	EStateCtrlDigits
   308 	};
   309 
   310 /**
   311 @internalComponent
   312 @released
   313 */
   314 enum TFuncGeneral
   315 	{
   316 	EDoNothing							=0x00,
   317 	EPassKeyThru,
   318 	EPassSpecialKeyThru,
   319 	EPassCtrlDigitsThru,
   320 	EAddOnCtrlDigit,
   321 	};
   322 
   323 /**
   324 @internalComponent
   325 @released
   326 */
   327 NONSHARABLE_CLASS(CKeyTranslatorX) : public CKeyTranslator
   328 	{
   329     friend class CKeyTranslator;
   330 public:
   331 	CKeyTranslatorX();
   332     virtual TInt GetModifierState();
   333     virtual void SetModifierState(TEventModifier aModifier,TModifierState aState);
   334 	virtual TBool TranslateKey(TUint aScanCode, TBool aKeyUp,
   335 								const CCaptureKeys &aCaptureKeys, TKeyData &aKeyData);
   336     virtual void UpdateModifiers(TInt aModifiers);
   337     virtual TInt ChangeKeyData(const TDesC& aLibraryName);
   338     TBool currentlyUpperCase(void);
   339     TUint executeFunctionsAndSetState(TCharExtended aChar);
   340 	TInt Initialise();
   341 private:
   342     TInt iCurModifiers;
   343 	TMaskedModifiers iTogglingModifiers;
   344 	TCtrlDigits iCurCtrlDigits;
   345 	TConvTable iConvTable;
   346 	TFuncTable iFuncTable;
   347 	TUint iCurState;
   348 	TBool iIsdefaultKeyData;
   349 	RLibrary iKeyDataLib;
   350 	RLibrary iDefaultKeyDataLib;
   351 	};
   352 
   353 /**
   354 @internalComponent
   355 @released
   356 */
   357 enum TCP850Char
   358 	{
   359 	ECP850LogicNot=0x00aa,
   360 	ECP850LcAe=0x0091,
   361 	ECP850LcCcedilla=0x0087,
   362 	ECP850EsTset=0x00e1,
   363 	ECP850LcOslash=0x009b,
   364 	ECP850LcThorn=0x00d0,
   365 	ECP850LcSoftTh=0x00e7,
   366 	ECP850LeftChevron=0x00ae,
   367 	ECP850RightChevron=0x00af,
   368 	ECP850InvExclam=0x00ad,
   369 	ECP850InvQuest=0x00a8,
   370 	ECP850LcAo=0x0086,
   371 	ECP850Pound=0x009c,
   372 	ECP850LcAumlaut=0x0084,
   373 	ECP850LcEumlaut=0x0089,
   374 	ECP850LcIumlaut=0x008b,
   375 	ECP850LcOumlaut=0x0094,
   376 	ECP850LcUumlaut=0x009a,
   377 	ECP850LcYumlaut=0x0098,
   378 	ECP850SpaceUmlaut=0x00f9,
   379 	ECP850LcAgrave=0x0085,
   380 	ECP850LcEgrave=0x008a,
   381 	ECP850LcIgrave=0x008d,
   382 	ECP850LcOgrave=0x0095,
   383 	ECP850LcUgrave=0x0097,
   384 	ECP850SpaceGrave=0x0060,
   385 	ECP850LcAacute=0x00a0,
   386 	ECP850LcEacute=0x0082,
   387 	ECP850LcIacute=0x00a1,
   388 	ECP850LcOacute=0x00a2,
   389 	ECP850LcUacute=0x00a3,
   390 	ECP850LcYacute=0x00ec,
   391 	ECP850LcSpaceAcute=0x0027,
   392 	ECP850LcAtilde=0x00c6,
   393 	ECP850LcNtilde=0x00a4,
   394 	ECP850LcOtilde=0x00e4,
   395 	ECP850LcSpaceTilde=0x007e,
   396 	ECP850LcAcirc=0x0083,
   397 	ECP850LcEcirc=0x0088,
   398 	ECP850LcIcirc=0x008c,
   399 	ECP850LcOcirc=0x0093,
   400 	ECP850LcUcirc=0x0096,
   401 	ECP850LcSpaceCirc=0x005e
   402 	};
   403 
   404 /**
   405 @internalComponent
   406 @released
   407 */
   408 enum TLatin1Char
   409 	{
   410 	ELatin1LogicNot=0x0090,
   411 	ELatin1LcAe=0x00e6,
   412 	ELatin1UcAe=0x00c6,
   413 	ELatin1LcCcedilla=0x00e7,
   414 	ELatin1EsTset=0x00df,
   415 	ELatin1LcOslash=0x00f8,
   416 	ELatin1UcOslash=0x00d8,
   417 	ELatin1LcThorn=0x00fe,
   418 	ELatin1LcSoftTh=0x00f0,
   419 	ELatin1LeftChevron=0x00ab,
   420 	ELatin1RightChevron=0x00bb,
   421 	ELatin1InvExclam=0x00a1,
   422 	ELatin1InvQuest=0x00bf,
   423 	ELatin1LcAo=0x00e5,
   424 	ELatin1Pound=0x00a3,
   425 	ELatin1LcAumlaut=0x00e4,
   426 	ELatin1LcEumlaut=0x00eb,
   427 	ELatin1LcIumlaut=0x00ef,
   428 	ELatin1LcOumlaut=0x00f6,
   429 	ELatin1LcUumlaut=0x00fc,
   430 	ELatin1LcYumlaut=0x00ff,
   431 	ELatin1SpaceUmlaut=0x00a8,
   432 	ELatin1LcAgrave=0x00e0,
   433 	ELatin1LcEgrave=0x00e8,
   434 	ELatin1LcIgrave=0x00ec,
   435 	ELatin1LcOgrave=0x00f2,
   436 	ELatin1LcUgrave=0x00f9,
   437 	ELatin1SpaceGrave=0x0060,
   438 	ELatin1LcAacute=0x00e1,
   439 	ELatin1LcEacute=0x00e9,
   440 	ELatin1LcIacute=0x00ed,
   441 	ELatin1LcOacute=0x00f3,
   442 	ELatin1LcUacute=0x00fa,
   443 	ELatin1LcYacute=0x00fd,
   444 	ELatin1LcSpaceAcute=0x00b4,
   445 	ELatin1LcAtilde=0x00e3,
   446 	ELatin1LcNtilde=0x00f1,
   447 	ELatin1LcOtilde=0x00f5,
   448 	ELatin1LcSpaceTilde=0x0098,
   449 	ELatin1LcAcirc=0x00e2,
   450 	ELatin1LcEcirc=0x00ea,
   451 	ELatin1LcIcirc=0x00ee,
   452 	ELatin1LcOcirc=0x00f4,
   453 	ELatin1LcUcirc=0x00fb,
   454 	ELatin1LcSpaceCirc=0x0088,
   455     ELatin1UcEacute=0x00c9,
   456     ELatin1Diaresis=0x00a8,
   457     ELatin1MicroSign=0x00b5,
   458     ELatin1UcAumlaut=0x00c4,
   459     ELatin1UcOumlaut=0x00d6,
   460     ELatin1UcUumlaut=0x00dc,
   461     ELatin1SectionSign=0x00a7,
   462     ELatin1MultiplicationSign=0x00d7,
   463     ELatin1DivisionSign=0x00f7,
   464     ELatin1DegreeSign=0x00b0,
   465     ELatin1UcUgrave=0x00d9,
   466     ELatin1MasculineOrdinalSign=0x00ba
   467 	};
   468 //
   469 #include <k32keys.inl>
   470 //
   471 #endif
   472