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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // e32\include\k32keys.h
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.
25 ////////////////////////////////////////////////////////
27 // Bits required for keyboard translation software
29 ////////////////////////////////////////////////////////
37 const TUint KConvTableSettableModifiers=EModifierAutorepeatable|
45 const TUint KPersistentModifiers=EModifierLeftAlt|
60 EModifierKeyboardExtend;
67 const TUint KRotationModifiers=EModifierRotateBy90|
78 TUint16 firstScanCode;
86 struct SScanCodeBlockList
89 const SScanCodeBlock *pblocks;
98 const TUint16 *pkeyCode;
99 SScanCodeBlockList scanCodes;
106 struct SConvTableNode
108 TMaskedModifiers maskedModifiers;
110 const SConvSubTable * const *ppsubTables;
120 const SConvTableNode *pnodes;
130 const TUint16 *pkeyCodes;
159 struct SFuncTableEntry
161 TMaskedModifiers maskedModifiers;
162 TKeyCodePattern keyCodePattern;
163 SFuncAndState funcAndNewState;
173 const SFuncTableEntry *pentries;
182 SFuncTable defaultTable;
183 SFuncTable modifierTable;
184 TUint numGenFuncTables;
185 const SFuncTable *pgenFuncTables;
192 class TCharExtended: public TChar
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;
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;
217 SFuncTables iFuncTables;
218 SFuncTableEntry getDefault(const TCharExtended &aChar, const TInt &aModifiers) const;
236 enum TCtrlDigitsTermination
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;
256 SConvTable iConvTable;
257 TUint iFirstScanCode;
259 SScanCodeBlockList iKeypadScanCodes;
260 SKeyCodeList iNonAutorepKeyCodes;
261 TBool onKeypad(TUint aScanCode) const;
262 TBool autorepeatable(TUint aKeyCode) const;
273 void Update(RLibrary aLibrary);
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;
287 TInt iMaximumCtrlDigitsMaxCount;
291 TCtrlDigitsTermination iTermination;
300 // values used as an index to a table
302 EStateCtrlDigitsUntilCount =0x0b,
303 EStateCtrlDigitsUntilCtrlUp =0x0c,
304 // values used as "rules" to be processed in a switch statement
305 EStateUnchanged =0x40,
306 EStateDerivedFromDigitEntered,
327 NONSHARABLE_CLASS(CKeyTranslatorX) : public CKeyTranslator
329 friend class CKeyTranslator;
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);
343 TMaskedModifiers iTogglingModifiers;
344 TCtrlDigits iCurCtrlDigits;
345 TConvTable iConvTable;
346 TFuncTable iFuncTable;
348 TBool iIsdefaultKeyData;
349 RLibrary iKeyDataLib;
350 RLibrary iDefaultKeyDataLib;
359 ECP850LogicNot=0x00aa,
361 ECP850LcCcedilla=0x0087,
363 ECP850LcOslash=0x009b,
364 ECP850LcThorn=0x00d0,
365 ECP850LcSoftTh=0x00e7,
366 ECP850LeftChevron=0x00ae,
367 ECP850RightChevron=0x00af,
368 ECP850InvExclam=0x00ad,
369 ECP850InvQuest=0x00a8,
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
410 ELatin1LogicNot=0x0090,
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,
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
469 #include <k32keys.inl>