epoc32/include/mw/ptikeymappings.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
/*
williamr@2
     2
* Copyright (c) 2003-2006 Nokia Corporation and/or its subsidiary(-ies). 
williamr@2
     3
* All rights reserved.
williamr@2
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0""
williamr@2
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     8
*
williamr@2
     9
* Initial Contributors:
williamr@2
    10
* Nokia Corporation - initial contribution.
williamr@2
    11
*
williamr@2
    12
* Contributors:
williamr@2
    13
*
williamr@2
    14
* Description:               PtiLanguage class definitions.
williamr@2
    15
*
williamr@2
    16
*/
williamr@2
    17
williamr@2
    18
williamr@2
    19
williamr@2
    20
williamr@2
    21
williamr@2
    22
williamr@2
    23
williamr@2
    24
williamr@2
    25
williamr@2
    26
williamr@2
    27
williamr@2
    28
williamr@2
    29
williamr@2
    30
williamr@2
    31
#ifndef _PTI_KEY_MAPPINGS_H
williamr@2
    32
#define _PTI_KEY_MAPPINGS_H
williamr@2
    33
williamr@2
    34
#include <e32base.h>
williamr@2
    35
#include "PtiDefs.h"
williamr@2
    36
williamr@2
    37
williamr@2
    38
const TInt KPtiKeyDataDeadKeySeparator = 0xffff;
williamr@2
    39
const TInt KPtiPinyinMarker = 0x2460;
williamr@2
    40
const TInt KPtiStrokeMarker = 0x2461;
williamr@2
    41
const TInt KPtiZhuyinMarker = 0x2462;
williamr@2
    42
const TInt KPtiCangjieMarker = 0x2463;
williamr@2
    43
const TInt KPtiGetAllMarker = 0x2464;
williamr@2
    44
williamr@2
    45
// FORWARD DECLARATIONS
williamr@2
    46
class CPtiKeyMapData;
williamr@2
    47
williamr@2
    48
// 
williamr@2
    49
// CPtiQwertyKeymappingsExtension
williamr@2
    50
//
williamr@2
    51
williamr@2
    52
NONSHARABLE_CLASS(CPtiQwertyKeymappingsExtension) : public CBase
williamr@2
    53
	{
williamr@2
    54
	public:
williamr@2
    55
		static CPtiQwertyKeymappingsExtension* NewL();
williamr@2
    56
		~CPtiQwertyKeymappingsExtension();		
williamr@2
    57
	
williamr@2
    58
	private:
williamr@2
    59
		CPtiQwertyKeymappingsExtension();
williamr@2
    60
	
williamr@2
    61
	public:
williamr@2
    62
		TUint16 iLastChar;	       // for Vietnamese 			
williamr@2
    63
		TInt16 iLastTone;          // for Vietnamese
williamr@2
    64
		TUint16 iReplaced;	       // for Vietnamese
williamr@2
    65
		TPtiTextCase iVowelCase;   // for Vietnamese
williamr@2
    66
		TPtiKey iLastToneKey;      // for Vietnamese			
williamr@2
    67
	};
williamr@2
    68
williamr@2
    69
williamr@2
    70
//
williamr@2
    71
// TPtiKeyMapping
williamr@2
    72
//
williamr@2
    73
williamr@2
    74
class TPtiKeyMapping  
williamr@2
    75
	{
williamr@2
    76
	public:	
williamr@2
    77
		TInt iIndex;
williamr@2
    78
		TInt iNumChars;
williamr@2
    79
	};
williamr@2
    80
	
williamr@2
    81
williamr@2
    82
//
williamr@2
    83
// TPtiReplacedMapping
williamr@2
    84
//
williamr@2
    85
	
williamr@2
    86
const TInt KMaxReplacedMappingCharacters = 5;		
williamr@2
    87
class TPtiReplacedMapping
williamr@2
    88
	{
williamr@2
    89
	public:
williamr@2
    90
		TPtiKey iKey;
williamr@2
    91
		TPtiTextCase iCase;	
williamr@2
    92
		TPtiEngineInputMode iMode;
williamr@2
    93
		TPtiKeyboardType iKeyboardType;
williamr@2
    94
		TInt iNumChars;
williamr@2
    95
		TUint16 iChrs[KMaxReplacedMappingCharacters];
williamr@2
    96
	};	
williamr@2
    97
williamr@2
    98
williamr@2
    99
/**
williamr@2
   100
* MPtiKeyMappings
williamr@2
   101
*
williamr@2
   102
* Interface class for PtiEngine keymapping functionality.
williamr@2
   103
*/
williamr@2
   104
class MPtiKeyMappings
williamr@2
   105
	{
williamr@2
   106
	public:
williamr@2
   107
		virtual ~MPtiKeyMappings() {}
williamr@2
   108
		
williamr@2
   109
		/**
williamr@2
   110
		* Starts mapping new key. Will return first character bound to given
williamr@2
   111
		* key in given text case. 		
williamr@2
   112
		*
williamr@2
   113
		* @param aKey   A key to be mapped.
williamr@2
   114
		* @param aCase  Text case for mapping operation.
williamr@2
   115
		* @param aMode  Input mode for mapping. This is needed if keymapping data contains
williamr@2
   116
		*               characters for several input modes (used mainly with Chinese
williamr@2
   117
		*               modes). This value will be matched to possible input mode control
williamr@2
   118
		*               characters in keymapping data.
williamr@2
   119
		* @return       First character bound to requested key.
williamr@2
   120
		*/
williamr@2
   121
		virtual TUint16 StartMapping(TPtiKey aKey,
williamr@2
   122
			                         TPtiTextCase aCase,
williamr@2
   123
									 TPtiEngineInputMode aMode = EPtiEngineInputModeNone) = 0;
williamr@2
   124
							 
williamr@2
   125
		/**
williamr@2
   126
		* Continues keymapping sequence. This method should be called when key event
williamr@2
   127
		* comes in while multitapping timer is active. Takes care of cycling through
williamr@2
   128
		* multitapping candidates associated for given key. 
williamr@2
   129
		*
williamr@2
   130
		* @since 2.6
williamr@2
   131
		* @param aKey A key to be mapped.
williamr@2
   132
		* @param aAppend Refernce to boolen variable. This will be set to ETrue if current character in
williamr@2
   133
		*                editor should be replaced (new multitapping candidate was found) and
williamr@2
   134
		*                to EFalse if new character should inserted instead.
williamr@2
   135
		* @param aCase Text case for mapping operation.
williamr@2
   136
		* @return Next character assosiated to given key or the first character if aKey
williamr@2
   137
		*              was different key than previous key press.
williamr@2
   138
		*/									 
williamr@2
   139
		virtual TUint16 NextKey(TPtiKey aKey, TBool &aAppend, TPtiTextCase aCase) = 0;
williamr@2
   140
		
williamr@2
   141
		/**
williamr@2
   142
		* Returns PtiEngine key code for last StartMapping() call.		
williamr@2
   143
		*
williamr@2
   144
		* @since 2.6
williamr@2
   145
		* @return PtiEngine key code for last StartMapping() call.
williamr@2
   146
		*/
williamr@2
   147
		virtual TPtiKey CurrentKey() = 0;
williamr@2
   148
		
williamr@2
   149
		/**
williamr@2
   150
		* Replaces keymapping data for given key and case. 
williamr@2
   151
		*
williamr@2
   152
		* @since 2.6
williamr@2
   153
		* @param aKey A key to be replaced.
williamr@2
   154
		* @param aMap New keymapping data for aKey,
williamr@2
   155
		* @param aCase Text case for replaced data.
williamr@2
   156
		* @return KErrNone or system wide error code.
williamr@2
   157
		*/
williamr@2
   158
		virtual TInt ReplaceKeyMapL(TPtiKey aKey, TDesC& aMap, TPtiTextCase aCase) = 0;
williamr@2
   159
		
williamr@2
   160
		/**
williamr@2
   161
		* Returns key code for key which produces given unicode character (if found).
williamr@2
   162
		*
williamr@2
   163
		* @since 2.6
williamr@2
   164
		* @param aChar A character to be queried.
williamr@2
   165
		* @return Key code for aChar. EPtiKeyNone, if not found.
williamr@2
   166
		*/				
williamr@2
   167
		virtual TPtiKey KeyForCharacter(TUint16 aChar) = 0;
williamr@2
   168
		
williamr@2
   169
		/**
williamr@2
   170
		* Returns all keymapping data for current key, excluding first character
williamr@2
   171
		* (which is expected to be "get all"-control character).
williamr@2
   172
		* 
williamr@2
   173
		* @param aCase  Text case for which data will be returned.
williamr@2
   174
		* @return Constant descriptor pointing to keymap data.
williamr@2
   175
		* @since 3.0
williamr@2
   176
		*/		
williamr@2
   177
		virtual TPtrC GetAll(TPtiTextCase aCase) = 0;					
williamr@2
   178
	};
williamr@2
   179
williamr@2
   180
williamr@2
   181
/**
williamr@2
   182
* CPtiMappings
williamr@2
   183
*
williamr@2
   184
* Base class for keymapping implementation classes.
williamr@2
   185
* Handles locally replaced keymappings.
williamr@2
   186
*/
williamr@2
   187
class CPtiMappings : public CBase
williamr@2
   188
	{
williamr@2
   189
	public:
williamr@2
   190
		CPtiMappings();
williamr@2
   191
		CPtiMappings(CPtiKeyMapData* aData);
williamr@2
   192
		~CPtiMappings();
williamr@2
   193
		inline CPtiKeyMapData* KeyMapData() const;
williamr@2
   194
		
williamr@2
   195
		// DEPRECATED
williamr@2
   196
		virtual TInt WriteData(TInt16*);   
williamr@2
   197
		// DEPRECATED		     
williamr@2
   198
		virtual TInt ChunkDataSize() const;
williamr@2
   199
		
williamr@2
   200
		IMPORT_C TPtiKeyboardType KeyboardType() const;				
williamr@2
   201
		
williamr@2
   202
	protected:	
williamr@2
   203
		TInt FindReplacedMapping(TPtiKey aKey, TPtiTextCase aCase, TPtiEngineInputMode aMode) const;
williamr@2
   204
		void ReplaceKeyMapLocalL(TPtiKey aKey, TDesC& aMap, TPtiTextCase aCase, TPtiEngineInputMode aMode);
williamr@2
   205
		
williamr@2
   206
    public:		
williamr@2
   207
		TPtrC DataForKeyLocal(TPtiKey aKey, TPtiTextCase aCase, TPtiEngineInputMode aMode) const;	
williamr@2
   208
						
williamr@2
   209
	protected:
williamr@2
   210
		TPtiKey iCurrentKey;	
williamr@2
   211
		TPtiEngineInputMode iCurrentMode;
williamr@2
   212
		TInt iCurrentChar;
williamr@2
   213
		RArray<TPtiReplacedMapping> iReplacedMappings;
williamr@2
   214
		CPtiKeyMapData* iKeyMapData;          // Not owned
williamr@2
   215
		TPtiKeyboardType iKeyboardType;
williamr@2
   216
	};
williamr@2
   217
williamr@2
   218
williamr@2
   219
/**
williamr@2
   220
* CPtiKeyMappings
williamr@2
   221
* 
williamr@2
   222
* Keymappings implementation class for itu-t keyboard 
williamr@2
   223
*/
williamr@2
   224
NONSHARABLE_CLASS(CPtiKeyMappings) : public CPtiMappings, public MPtiKeyMappings
williamr@2
   225
	{
williamr@2
   226
	public:	
williamr@2
   227
		/**
williamr@2
   228
		* DEPRECATED. Leaves with KErrNotSupported.
williamr@2
   229
		*/
williamr@2
   230
		IMPORT_C static CPtiKeyMappings* NewL(TDesC& aData);
williamr@2
   231
		
williamr@2
   232
		/**
williamr@2
   233
		* DEPRECATED. Leaves with KErrNotSupported.
williamr@2
   234
		*/
williamr@2
   235
		IMPORT_C static CPtiKeyMappings* NewL(TInt16* aData);		
williamr@2
   236
		
williamr@2
   237
		/**
williamr@2
   238
		* Constructor.
williamr@2
   239
		*/
williamr@2
   240
		IMPORT_C static CPtiKeyMappings* NewL(CPtiKeyMapData* aData);
williamr@2
   241
		
williamr@2
   242
		IMPORT_C ~CPtiKeyMappings();
williamr@2
   243
		
williamr@2
   244
		/**
williamr@2
   245
		* Start mapping for given key.
williamr@2
   246
		*
williamr@2
   247
		* @param aKey  Key code for key.
williamr@2
   248
		* @param aCase Cuurrent text case.
williamr@2
   249
		* @param aMode Current input mode. Default value works for most cases.
williamr@2
   250
		* @return First character for given key. 
williamr@2
   251
		*/
williamr@2
   252
		IMPORT_C virtual TUint16 StartMapping(TPtiKey aKey,
williamr@2
   253
			                         TPtiTextCase aCase,
williamr@2
   254
									 TPtiEngineInputMode aMode = EPtiEngineInputModeNone);										 
williamr@2
   255
									 
williamr@2
   256
		/**
williamr@2
   257
		* Continues keymapping sequence. This method should be called when key event
williamr@2
   258
		* comes in while multitapping timer is active. Takes care of cycling through
williamr@2
   259
		* multitapping candidates associated for given key. 
williamr@2
   260
		*
williamr@2
   261
		* @since S60 V2.6
williamr@2
   262
		* @param aKey A key to be mapped.
williamr@2
   263
		* @param Refernce to boolen variable. This will be set to ETrue if current character in
williamr@2
   264
		*        editor should be replaced (new multitapping candidate was found) and
williamr@2
   265
		*        to EFalse if new character should inserted instead.
williamr@2
   266
		* @param aCase Text case for mapping operation.
williamr@2
   267
		* @return Next character assosiated to given key or the first character if aKey
williamr@2
   268
		*              was different key than previous key press.
williamr@2
   269
		*/									 								 
williamr@2
   270
		IMPORT_C TUint16 NextKey(TPtiKey aKey, TBool &aAppend, TPtiTextCase aCase);
williamr@2
   271
		
williamr@2
   272
		/**
williamr@2
   273
		* Returns key code for key currently being mapped (relates to StartMapping and NextKey).
williamr@2
   274
		*
williamr@2
   275
		* @return Key code for key currently being mapped.
williamr@2
   276
		*/
williamr@2
   277
		inline TPtiKey CurrentKey();
williamr@2
   278
		
williamr@2
   279
		/**
williamr@2
   280
		* Replaces keymapping data for given key.
williamr@2
   281
		*		
williamr@2
   282
		* @param  aKey  Key code for key to be replaced.
williamr@2
   283
		* @param  aMap  New keymapping data for aKey.
williamr@2
   284
		* @param  aCase Text case.
williamr@2
   285
		* @return KErrNone if succesfull
williamr@2
   286
		*         Otherwise system wide error code.
williamr@2
   287
		*/
williamr@2
   288
		IMPORT_C TInt ReplaceKeyMapL(TPtiKey aKey, TDesC& aMap, TPtiTextCase aCase);
williamr@2
   289
		
williamr@2
   290
		/**
williamr@2
   291
		* Scans through keymapping data and returns key code for given character.
williamr@2
   292
		*
williamr@2
   293
		* @param  aChar A character to be queried.
williamr@2
   294
		* @return Key code for mtaching key.
williamr@2
   295
		*         EPtiKeyNone if no matching keys found.
williamr@2
   296
		*/
williamr@2
   297
		IMPORT_C TPtiKey KeyForCharacter(TUint16 aChar);
williamr@2
   298
		
williamr@2
   299
		/**
williamr@2
   300
		* Returns keymapping data for given key.
williamr@2
   301
		*
williamr@2
   302
		* @param aKey    A key to be queried.
williamr@2
   303
		* @param aResult Descritor where resulting data is stored.
williamr@2
   304
		* @param aCase   Text case		 
williamr@2
   305
		*/
williamr@2
   306
		IMPORT_C void GetDataForKey(TPtiKey aKey, TDes& aResult, TPtiTextCase aCase);
williamr@2
   307
								
williamr@2
   308
		/**
williamr@2
   309
		* Returns all keymapping data for current key, excluding first character
williamr@2
   310
		* (which is expected to be "get all"-control character).
williamr@2
   311
		* 
williamr@2
   312
		* @param aCase  Text case for which data will be returned.
williamr@2
   313
		* @return Constant descriptor pointing to keymap data.
williamr@2
   314
		* @since S60 V3.0
williamr@2
   315
		*/		
williamr@2
   316
		TPtrC GetAll(TPtiTextCase aCase);							
williamr@2
   317
williamr@2
   318
	protected:		
williamr@2
   319
		CPtiKeyMappings();
williamr@2
   320
		CPtiKeyMappings(CPtiKeyMapData* aData);
williamr@2
   321
		TUint16 NextChar(TPtiTextCase aCase);
williamr@2
   322
		inline void KeyCodeToInternal(TPtiKey aKey);
williamr@2
   323
		inline void DeQwertyfyCaseValue(TPtiTextCase& aCase);		
williamr@2
   324
	};
williamr@2
   325
williamr@2
   326
williamr@2
   327
/**
williamr@2
   328
* CPtiQwertyKeyMappings
williamr@2
   329
* 
williamr@2
   330
* Keymappings implementation class for qwerty keyboard.
williamr@2
   331
*/
williamr@2
   332
NONSHARABLE_CLASS(CPtiQwertyKeyMappings) : public CPtiMappings, public MPtiKeyMappings
williamr@2
   333
	{
williamr@2
   334
	public:	 
williamr@2
   335
		/**
williamr@2
   336
		* DEPRECATED. Will leave with KErrNotSupported.
williamr@2
   337
		*/
williamr@2
   338
		IMPORT_C static CPtiQwertyKeyMappings* NewL(TDesC& aData);
williamr@2
   339
		
williamr@2
   340
		/**
williamr@2
   341
		* DEPRECATED. Will leave with KErrNotSupported.
williamr@2
   342
		*/
williamr@2
   343
		IMPORT_C static CPtiQwertyKeyMappings* NewL(TInt16* aData);
williamr@2
   344
		
williamr@2
   345
		/**
williamr@2
   346
		* Constructor.
williamr@2
   347
		*/
williamr@2
   348
		IMPORT_C static CPtiQwertyKeyMappings* NewL(CPtiKeyMapData* aData);				
williamr@2
   349
		
williamr@2
   350
		IMPORT_C ~CPtiQwertyKeyMappings();
williamr@2
   351
		
williamr@2
   352
		/**
williamr@2
   353
		* Start mapping for given key.
williamr@2
   354
		*
williamr@2
   355
		* @param aKey  Key code for key.
williamr@2
   356
		* @param aCase Cuurrent text case.
williamr@2
   357
		* @param aMode Current input mode. Default value works for most cases.
williamr@2
   358
		* @return First character for given key. 
williamr@2
   359
		*/		
williamr@2
   360
		IMPORT_C TUint16 StartMapping(TPtiKey aKey,
williamr@2
   361
			                          TPtiTextCase aCase,
williamr@2
   362
									  TPtiEngineInputMode aMode = EPtiEngineInputModeNone);
williamr@2
   363
									  
williamr@2
   364
		/**
williamr@2
   365
		* Continues keymapping sequence. This method should be called when key event
williamr@2
   366
		* comes in while multitapping timer is active. Takes care of cycling through
williamr@2
   367
		* multitapping candidates associated for given key. 
williamr@2
   368
		*
williamr@2
   369
		* @since S60 V2.6
williamr@2
   370
		* @param aKey A key to be mapped.
williamr@2
   371
		* @param aAppend Refernce to boolen variable. This will be set to ETrue if current character in
williamr@2
   372
		*                editor should be replaced (new chr-case character was found) and
williamr@2
   373
		*                to EFalse if new character should inserted instead.
williamr@2
   374
		* @param aCase Text case for mapping operation.
williamr@2
   375
		* @return Next character assosiated to given key or the first character if aKey
williamr@2
   376
		*              was different key than previous key press.
williamr@2
   377
		*/									 					  
williamr@2
   378
		IMPORT_C TUint16 NextKey(TPtiKey aKey, TBool &aAppend, TPtiTextCase aCase);
williamr@2
   379
		
williamr@2
   380
		/**
williamr@2
   381
		* Returns key code for key currently being mapped (relates to StartMapping and NextKey).
williamr@2
   382
		*
williamr@2
   383
		* @return Key code for key currently being mapped.
williamr@2
   384
		*/		
williamr@2
   385
		inline TPtiKey CurrentKey();
williamr@2
   386
		
williamr@2
   387
		/**
williamr@2
   388
		* Replaces keymapping data for given key.
williamr@2
   389
		*		
williamr@2
   390
		* @param  aKey  Key code for key to be replaced.
williamr@2
   391
		* @param  aMap  New keymapping data for aKey.
williamr@2
   392
		* @param  aCase Text case.
williamr@2
   393
		* @return KErrNone if succesfull
williamr@2
   394
		*         Otherwise system wide error code.
williamr@2
   395
		*/		
williamr@2
   396
		IMPORT_C TInt ReplaceKeyMapL(TPtiKey aKey, TDesC& aMap, TPtiTextCase aCase);
williamr@2
   397
		
williamr@2
   398
		/**
williamr@2
   399
		* Scans through keymapping data and returns key code for given character.
williamr@2
   400
		*
williamr@2
   401
		* @param  aChar A character to be queried.
williamr@2
   402
		* @return Key code for mtaching key.
williamr@2
   403
		*         EPtiKeyNone if no matching keys found.
williamr@2
   404
		*/		
williamr@2
   405
		IMPORT_C TPtiKey KeyForCharacter(TUint16 aChar);
williamr@2
   406
		
williamr@2
   407
		/**
williamr@2
   408
		* Returns keymapping data for given key.
williamr@2
   409
		*
williamr@2
   410
		* @param aKey    A key to be queried.
williamr@2
   411
		* @param aResult Descritor where resulting data is stored.
williamr@2
   412
		* @param aCase   Text case		 
williamr@2
   413
		*/		
williamr@2
   414
		IMPORT_C void GetDataForKey(TPtiKey aKey, TDes& aResult, TPtiTextCase aCase);
williamr@2
   415
		
williamr@2
   416
		/** DEPRECATED */
williamr@2
   417
		TInt WriteData(TInt16* aDest);
williamr@2
   418
		
williamr@2
   419
		/** DEPRECATED */
williamr@2
   420
		TInt ChunkDataSize() const;
williamr@2
   421
		
williamr@2
   422
		/** Internal */		
williamr@2
   423
		inline TBool DeadKeyRootFlag() const;
williamr@2
   424
		
williamr@2
   425
		/** Internal */				
williamr@2
   426
		inline TUint16 DeadKeyRootChar() const;
williamr@2
   427
		
williamr@2
   428
		/** Internal */				
williamr@2
   429
		inline TBool VowelSequenceFlag() const;
williamr@2
   430
		
williamr@2
   431
		/** Internal */				
williamr@2
   432
		inline TUint16 VowelSequenceResult() const;
williamr@2
   433
		
williamr@2
   434
		/** Internal */				
williamr@2
   435
		inline void ClearVowelSequence();
williamr@2
   436
		
williamr@2
   437
		/** Internal */				
williamr@2
   438
		inline TInt16 DeadKey() const;
williamr@2
   439
		
williamr@2
   440
		/** Internal */				
williamr@2
   441
		inline void ClearDeadKey();
williamr@2
   442
		
williamr@2
   443
		/** Internal */				
williamr@2
   444
		inline void ClearLastChar();
williamr@2
   445
		
williamr@2
   446
		/** Internal */					
williamr@2
   447
		inline void SetLastChar(TInt aLastChar);
williamr@2
   448
		
williamr@2
   449
		/** Internal */				
williamr@2
   450
		inline TInt GetLastChar() const;
williamr@2
   451
		
williamr@2
   452
		/** Internal */				
williamr@2
   453
		inline TUint16 ReplacedCharacter();
williamr@2
   454
		
williamr@2
   455
		/** Internal */				
williamr@2
   456
		inline void SetLastKey(TPtiKey aKey);
williamr@2
   457
		
williamr@2
   458
		/** Internal */				
williamr@2
   459
		inline TPtiTextCase VowelCase() const;
williamr@2
   460
		
williamr@2
   461
		/** Internal */				
williamr@2
   462
		inline void ResetVietnameseVowelSequenceAndToneMarks();
williamr@2
   463
		
williamr@2
   464
		/** Internal */				
williamr@2
   465
		inline TPtiKey LastKey() const;
williamr@2
   466
williamr@2
   467
		/**
williamr@2
   468
		* Returns all keymapping data for current key, excluding first character
williamr@2
   469
		* (which is expected to be "get all"-control character).
williamr@2
   470
		* 
williamr@2
   471
		* @param aCase  Text case for which data will be returned.
williamr@2
   472
		* @return Constant descriptor pointing to keymap data.
williamr@2
   473
		* @since S60 V3.0
williamr@2
   474
		*/		
williamr@2
   475
		TPtrC GetAll(TPtiTextCase aCase);							
williamr@2
   476
		
williamr@2
   477
		/** Internal */	
williamr@2
   478
		inline void SetFlag(TInt aFlag);
williamr@2
   479
		
williamr@2
   480
		/** Internal */			
williamr@2
   481
		inline void ResetFlag(TInt aFlag);	
williamr@2
   482
		
williamr@2
   483
		/**
williamr@2
   484
		* Fills given array with numeric mode mappings defined in keymap data file.
williamr@2
   485
		* Resultin array contains those mappings that are given with "numeric_mode_key"
williamr@2
   486
		* tag in keymap data file.
williamr@2
   487
		*
williamr@2
   488
		* @since S60 V3.2
williamr@2
   489
		* @param aResult An array to be filled with numeric mode mappings.
williamr@2
   490
		*/
williamr@2
   491
		void GetNumericModeKeysFromDataL(RArray<TPtiNumericKeyBinding>& aResult);
williamr@2
   492
		
williamr@2
   493
		/**
williamr@2
   494
		* Set keyboard type to be used with qwerty keymappings. Default
williamr@2
   495
		* type is EPtiKeyboardStandard4x12 (Nokia E70 style).
williamr@2
   496
		*
williamr@2
   497
		* @param aKeyboardType Keyboard type to be set.
williamr@2
   498
		* @return KErrNone if keyboard type was set.
williamr@2
   499
		*         EErrNotSupported if mapping data does not have block for given keyboard type.
williamr@2
   500
		*/				
williamr@2
   501
		IMPORT_C TInt SetKeyboardType(TPtiKeyboardType aKeyboardType);	
williamr@2
   502
		
williamr@2
   503
		/**
williamr@2
   504
		* Returns a boolean value indicating whether there is data block available for
williamr@2
   505
		* given keyboard type.
williamr@2
   506
		*
williamr@2
   507
		* @param  aKeyboardType Keyboard type.
williamr@2
   508
		* @return ETrue if there is data block for given keyboard type.
williamr@2
   509
		*         EFalse otherwise
williamr@2
   510
		*/
williamr@2
   511
		IMPORT_C TBool HasDataBlockForKeyboardType(TPtiKeyboardType aKeyboardType) const;			
williamr@2
   512
williamr@2
   513
	public:
williamr@2
   514
		enum
williamr@2
   515
			{
williamr@2
   516
			EDeadKeyRootFlag = 0x01,
williamr@2
   517
			EVowelSeqFlag    = 0x02,
williamr@2
   518
			EPrevKeyInUpperCase = 0x04,
williamr@2
   519
			ETrackVietnameseToneMarksAndVowels = 0x08
williamr@2
   520
			};
williamr@2
   521
						
williamr@2
   522
	private:			
williamr@2
   523
		CPtiQwertyKeyMappings();	
williamr@2
   524
		CPtiQwertyKeyMappings(CPtiKeyMapData* aData);
williamr@2
   525
		void ConstructL();
williamr@2
   526
	
williamr@2
   527
		TUint16 NextChar(TPtiTextCase aCase);
williamr@2
   528
		void KeyCodeToInternal(TPtiKey aKey);
williamr@2
   529
		TUint16 GetDeadKeyChar(TPtiKey aKey, TPtiTextCase aCase);
williamr@2
   530
		inline TInt DeadKeyIndex(TUint16 aDeadKeyUnicode);
williamr@2
   531
		inline TBool IsDeadKeyCode(TUint16 aChar) const;
williamr@2
   532
		inline TBool IsModeControlChar(TUint16 aChar) const;
williamr@2
   533
        TUint16 GetCharForMode(TPtiEngineInputMode aMode, TPtrC aChars, TBool aSkipFirst);
williamr@2
   534
		TBool DoesModeCharMatchToInputMode(TUint16 aChar, TPtiEngineInputMode aMode) const;
williamr@2
   535
		TUint16 VowelSequence(TPtiKey aKey1, TPtiKey aKey2, TPtiTextCase aCase) const;	
williamr@2
   536
		TUint16 VietnameseToneMark(TUint16 aPrevChar, TPtiKey aKey);
williamr@2
   537
		TUint16 RepeatingVowelSequence(TPtiKey aKey);
williamr@2
   538
		TPtiKey VowelSeqRootKey(TUint16 aChar);
williamr@2
   539
		inline TBool ChineseChrModeConversionNeeded(TPtiTextCase aCase, TPtiEngineInputMode aMode) const;
williamr@2
   540
		inline TBool IsChnSpecialCharKey(TPtiKey aKey) const;
williamr@2
   541
williamr@2
   542
	private:
williamr@2
   543
		RArray<TPtiKeyMapping> iReservedArray;  		
williamr@2
   544
		TAny* iReservedPtr;
williamr@2
   545
		TUint16 iDeadKey;
williamr@2
   546
		TUint16 iDeadKeyRootChar;
williamr@2
   547
		TUint16 iVowelSeqResult;
williamr@2
   548
		TPtiKey iLastKey;
williamr@2
   549
		TInt iFlags;
williamr@2
   550
		CPtiQwertyKeymappingsExtension* iExtension;
williamr@2
   551
	};
williamr@2
   552
williamr@2
   553
williamr@2
   554
/**
williamr@2
   555
* CPtiHalfQwertyKeyMappings
williamr@2
   556
* 
williamr@2
   557
* Keymappings implementation class for half qwerty keyboard 
williamr@2
   558
*/
williamr@2
   559
williamr@2
   560
NONSHARABLE_CLASS(CPtiHalfQwertyKeyMappings) : public CPtiKeyMappings
williamr@2
   561
    {
williamr@2
   562
    public:
williamr@2
   563
	    IMPORT_C static CPtiHalfQwertyKeyMappings* NewL(CPtiKeyMapData* aData);
williamr@2
   564
        IMPORT_C ~CPtiHalfQwertyKeyMappings();	    
williamr@2
   565
        
williamr@2
   566
    public: // From MPtiKeyMappings
williamr@2
   567
		IMPORT_C TInt ReplaceKeyMapL(TPtiKey aKey, TDesC& aMap, TPtiTextCase aCase);
williamr@2
   568
		IMPORT_C TPtiKey KeyForCharacter(TUint16 aChar);
williamr@2
   569
		IMPORT_C TPtrC GetAll(TPtiTextCase aCase);	  
williamr@2
   570
		
williamr@2
   571
        /**
williamr@2
   572
		* Fills given array with numeric mode mappings defined in keymap data file.
williamr@2
   573
		* Resultin array contains those mappings that are given with "numeric_mode_key"
williamr@2
   574
		* tag in keymap data file.
williamr@2
   575
		*
williamr@2
   576
		* @since S60 V5.0
williamr@2
   577
		* @param aResult An array to be filled with numeric mode mappings.
williamr@2
   578
		*/
williamr@2
   579
		void GetNumericModeKeysFromDataL(RArray<TPtiNumericKeyBinding>& aResult);
williamr@2
   580
		
williamr@2
   581
	    /**
williamr@2
   582
		* Returns keymapping data for given key.
williamr@2
   583
		*
williamr@2
   584
		* @since S60 V5.0		
williamr@2
   585
		* @param aKey    A key to be queried.
williamr@2
   586
		* @param aResult Descritor where resulting data is stored.
williamr@2
   587
		* @param aCase   Text case		 
williamr@2
   588
		*/		
williamr@2
   589
		IMPORT_C void GetDataForKey(TPtiKey aKey, TDes& aResult, TPtiTextCase aCase);				
williamr@2
   590
		/**
williamr@2
   591
		* Starts mapping new key. Will return first character bound to given
williamr@2
   592
		* key in given text case. 		
williamr@2
   593
		*
williamr@2
   594
		* @param aKey   A key to be mapped.
williamr@2
   595
		* @param aCase  Text case for mapping operation.
williamr@2
   596
		* @param aMode  Input mode for mapping. This is needed if keymapping data contains
williamr@2
   597
		*               characters for several input modes (used mainly with Chinese
williamr@2
   598
		*               modes). This value will be matched to possible input mode control
williamr@2
   599
		*               characters in keymapping data.
williamr@2
   600
		* @return       First character bound to requested key.
williamr@2
   601
		*/
williamr@2
   602
		IMPORT_C TUint16 StartMapping(TPtiKey aKey, TPtiTextCase aCase,
williamr@2
   603
                                               TPtiEngineInputMode aMode = EPtiEngineInputModeNone);
williamr@2
   604
williamr@2
   605
        /**
williamr@2
   606
		* Continues keymapping sequence. This method should be called when key event
williamr@2
   607
		* comes in while multitapping timer is active. Takes care of cycling through
williamr@2
   608
		* multitapping candidates associated for given key. 
williamr@2
   609
		*
williamr@2
   610
		* @since S60 V5.0
williamr@2
   611
		* @param aKey A key to be mapped.
williamr@2
   612
		* @param aAppend Refernce to boolen variable. This will be set to ETrue if current character in
williamr@2
   613
		*                editor should be replaced (new chr-case character was found) and
williamr@2
   614
		*                to EFalse if new character should inserted instead.
williamr@2
   615
		* @param aCase Text case for mapping operation.
williamr@2
   616
		* @return Next character assosiated to given key or the first character if aKey
williamr@2
   617
		*              was different key than previous key press.
williamr@2
   618
		*/									 					  
williamr@2
   619
		IMPORT_C TUint16 NextKey(TPtiKey aKey, TBool &aAppend, TPtiTextCase aCase);
williamr@2
   620
	protected:	
williamr@2
   621
		TUint16 NextChar(TPtiTextCase aCase);
williamr@2
   622
williamr@2
   623
    private:
williamr@2
   624
        CPtiHalfQwertyKeyMappings(CPtiKeyMapData* aData);		  
williamr@2
   625
    };
williamr@2
   626
williamr@2
   627
// ---------------------------------------------------------------------------
williamr@2
   628
// CPtiKeyMappings::CurrentKey
williamr@2
   629
// 
williamr@2
   630
// ---------------------------------------------------------------------------
williamr@2
   631
// 
williamr@2
   632
inline TPtiKey CPtiKeyMappings::CurrentKey()
williamr@2
   633
	{
williamr@2
   634
	return iCurrentKey;
williamr@2
   635
	}
williamr@2
   636
williamr@2
   637
// ---------------------------------------------------------------------------
williamr@2
   638
// CPtiQwertyKeyMappings::CurrentKey
williamr@2
   639
// 
williamr@2
   640
// ---------------------------------------------------------------------------
williamr@2
   641
// 
williamr@2
   642
inline TPtiKey CPtiQwertyKeyMappings::CurrentKey()
williamr@2
   643
	{
williamr@2
   644
	return iCurrentKey;
williamr@2
   645
	}
williamr@2
   646
williamr@2
   647
// ---------------------------------------------------------------------------
williamr@2
   648
// CPtiQwertyKeyMappings::DeadKeyIndex
williamr@2
   649
// 
williamr@2
   650
// ---------------------------------------------------------------------------
williamr@2
   651
// 
williamr@2
   652
inline TInt CPtiQwertyKeyMappings::DeadKeyIndex(TUint16 aDeadKeyUnicode)
williamr@2
   653
	{
williamr@2
   654
	return (aDeadKeyUnicode & 0x00ff);
williamr@2
   655
	}
williamr@2
   656
williamr@2
   657
// ---------------------------------------------------------------------------
williamr@2
   658
// CPtiQwertyKeyMappings::IsDeadKeyCode
williamr@2
   659
// 
williamr@2
   660
// ---------------------------------------------------------------------------
williamr@2
   661
// 
williamr@2
   662
inline TBool CPtiQwertyKeyMappings::IsDeadKeyCode(TUint16 aChar) const
williamr@2
   663
	{
williamr@2
   664
	if (((aChar & 0xff00) == 0xf000) &&
williamr@2
   665
	    ((aChar & 0xff) <= 5))
williamr@2
   666
		{
williamr@2
   667
		return ETrue;	
williamr@2
   668
		}
williamr@2
   669
		
williamr@2
   670
	return EFalse;	
williamr@2
   671
	}
williamr@2
   672
williamr@2
   673
// ---------------------------------------------------------------------------
williamr@2
   674
// CPtiQwertyKeyMappings::DeadKeyRootFlag
williamr@2
   675
// 
williamr@2
   676
// ---------------------------------------------------------------------------
williamr@2
   677
// 
williamr@2
   678
inline TBool CPtiQwertyKeyMappings::DeadKeyRootFlag() const
williamr@2
   679
	{
williamr@2
   680
	return (iFlags & EDeadKeyRootFlag) != 0;		
williamr@2
   681
	}
williamr@2
   682
williamr@2
   683
// ---------------------------------------------------------------------------
williamr@2
   684
// CPtiQwertyKeyMappings::IsModeControlChar
williamr@2
   685
// 
williamr@2
   686
// ---------------------------------------------------------------------------
williamr@2
   687
// 
williamr@2
   688
inline TBool CPtiQwertyKeyMappings::IsModeControlChar(TUint16 aChar) const
williamr@2
   689
	{
williamr@2
   690
	if ((aChar == KPtiPinyinMarker) ||
williamr@2
   691
		(aChar == KPtiStrokeMarker) ||
williamr@2
   692
		(aChar == KPtiZhuyinMarker) ||
williamr@2
   693
		(aChar == KPtiCangjieMarker))
williamr@2
   694
		{	
williamr@2
   695
		return ETrue;
williamr@2
   696
		}
williamr@2
   697
williamr@2
   698
	return EFalse;
williamr@2
   699
	}
williamr@2
   700
williamr@2
   701
// ---------------------------------------------------------------------------
williamr@2
   702
// CPtiQwertyKeyMappings::VowelSequenceFlag
williamr@2
   703
// 
williamr@2
   704
// ---------------------------------------------------------------------------
williamr@2
   705
// 
williamr@2
   706
inline TBool CPtiQwertyKeyMappings::VowelSequenceFlag() const
williamr@2
   707
	{
williamr@2
   708
	return (iFlags & EVowelSeqFlag) != 0;
williamr@2
   709
	}
williamr@2
   710
williamr@2
   711
// ---------------------------------------------------------------------------
williamr@2
   712
// CPtiQwertyKeyMappings::SetFlag
williamr@2
   713
// 
williamr@2
   714
// ---------------------------------------------------------------------------
williamr@2
   715
// 
williamr@2
   716
inline void CPtiQwertyKeyMappings::SetFlag(TInt aFlag)
williamr@2
   717
	{
williamr@2
   718
	iFlags |= aFlag;	
williamr@2
   719
	}
williamr@2
   720
williamr@2
   721
// ---------------------------------------------------------------------------
williamr@2
   722
// CPtiQwertyKeyMappings::ResertFlag
williamr@2
   723
// 
williamr@2
   724
// ---------------------------------------------------------------------------
williamr@2
   725
// 
williamr@2
   726
inline void CPtiQwertyKeyMappings::ResetFlag(TInt aFlag)
williamr@2
   727
	{	
williamr@2
   728
	iFlags &= ~aFlag;	
williamr@2
   729
	}
williamr@2
   730
williamr@2
   731
// ---------------------------------------------------------------------------
williamr@2
   732
// CPtiQwertyKeyMappings::VowelSequenceResult
williamr@2
   733
// 
williamr@2
   734
// ---------------------------------------------------------------------------
williamr@2
   735
// 
williamr@2
   736
inline TUint16 CPtiQwertyKeyMappings::VowelSequenceResult() const
williamr@2
   737
	{
williamr@2
   738
	return iVowelSeqResult;
williamr@2
   739
	}
williamr@2
   740
williamr@2
   741
// ---------------------------------------------------------------------------
williamr@2
   742
// CPtiQwertyKeyMappings::ClearVowelSequence
williamr@2
   743
// 
williamr@2
   744
// ---------------------------------------------------------------------------
williamr@2
   745
// 
williamr@2
   746
inline void CPtiQwertyKeyMappings::ClearVowelSequence()
williamr@2
   747
	{
williamr@2
   748
	iLastKey = EPtiKeyNone;
williamr@2
   749
	}
williamr@2
   750
	
williamr@2
   751
// ---------------------------------------------------------------------------
williamr@2
   752
// CPtiQwertyKeyMappings::DeadKeyRootChar
williamr@2
   753
// 
williamr@2
   754
// ---------------------------------------------------------------------------
williamr@2
   755
// 		
williamr@2
   756
inline TUint16 CPtiQwertyKeyMappings::DeadKeyRootChar() const
williamr@2
   757
	{
williamr@2
   758
	return iDeadKeyRootChar;	
williamr@2
   759
	}
williamr@2
   760
		
williamr@2
   761
// ---------------------------------------------------------------------------
williamr@2
   762
// CPtiQwertyKeyMappings::DeadKey
williamr@2
   763
// 
williamr@2
   764
// ---------------------------------------------------------------------------
williamr@2
   765
// 	
williamr@2
   766
inline TInt16 CPtiQwertyKeyMappings::DeadKey() const
williamr@2
   767
	{
williamr@2
   768
	return iDeadKey;	
williamr@2
   769
	}	
williamr@2
   770
williamr@2
   771
// ---------------------------------------------------------------------------
williamr@2
   772
// CPtiQwertyKeyMappings::ClearDeadKey
williamr@2
   773
// 
williamr@2
   774
// ---------------------------------------------------------------------------
williamr@2
   775
// 
williamr@2
   776
inline void CPtiQwertyKeyMappings::ClearDeadKey()
williamr@2
   777
	{
williamr@2
   778
	iDeadKey = 0;
williamr@2
   779
	}
williamr@2
   780
		
williamr@2
   781
// ---------------------------------------------------------------------------
williamr@2
   782
// CPtiQwertyKeyMappings::ClearLastChar
williamr@2
   783
// 
williamr@2
   784
// ---------------------------------------------------------------------------
williamr@2
   785
// 	
williamr@2
   786
inline void CPtiQwertyKeyMappings::ClearLastChar()
williamr@2
   787
	{
williamr@2
   788
	iExtension->iLastChar = 0;
williamr@2
   789
	}
williamr@2
   790
williamr@2
   791
// ---------------------------------------------------------------------------
williamr@2
   792
// CPtiQwertyKeyMappings::SetLastChar
williamr@2
   793
// 
williamr@2
   794
// ---------------------------------------------------------------------------
williamr@2
   795
// 	
williamr@2
   796
inline void CPtiQwertyKeyMappings::SetLastChar(TInt aLastChar)
williamr@2
   797
	{
williamr@2
   798
	iExtension->iLastChar = (TUint16)aLastChar;
williamr@2
   799
	}
williamr@2
   800
	
williamr@2
   801
// ---------------------------------------------------------------------------
williamr@2
   802
// CPtiQwertyKeyMappings::GetLastChar
williamr@2
   803
// 
williamr@2
   804
// ---------------------------------------------------------------------------
williamr@2
   805
// 	
williamr@2
   806
inline TInt CPtiQwertyKeyMappings::GetLastChar() const
williamr@2
   807
	{
williamr@2
   808
	return iExtension->iLastChar;
williamr@2
   809
	}
williamr@2
   810
		
williamr@2
   811
// ---------------------------------------------------------------------------
williamr@2
   812
// CPtiQwertyKeyMappings::ReplacedCharacter
williamr@2
   813
// 
williamr@2
   814
// ---------------------------------------------------------------------------
williamr@2
   815
// 	
williamr@2
   816
inline TUint16 CPtiQwertyKeyMappings::ReplacedCharacter()
williamr@2
   817
	{	
williamr@2
   818
	return iExtension->iReplaced;
williamr@2
   819
	}
williamr@2
   820
williamr@2
   821
// ---------------------------------------------------------------------------
williamr@2
   822
// CPtiQwertyKeyMappings::SetLastKey
williamr@2
   823
// 
williamr@2
   824
// ---------------------------------------------------------------------------
williamr@2
   825
// 		
williamr@2
   826
inline void CPtiQwertyKeyMappings::SetLastKey(TPtiKey aKey)
williamr@2
   827
	{
williamr@2
   828
	iLastKey = aKey;	
williamr@2
   829
	}
williamr@2
   830
		
williamr@2
   831
// ---------------------------------------------------------------------------
williamr@2
   832
// CPtiQwertyKeyMappings::KeyCodeToInternal
williamr@2
   833
// 
williamr@2
   834
// ---------------------------------------------------------------------------
williamr@2
   835
// 				
williamr@2
   836
inline void CPtiKeyMappings::KeyCodeToInternal(TPtiKey aKey)
williamr@2
   837
	{
williamr@2
   838
	iCurrentKey = aKey;
williamr@2
   839
	}
williamr@2
   840
williamr@2
   841
// ---------------------------------------------------------------------------
williamr@2
   842
// CPtiQwertyKeyMappings::VowelCase
williamr@2
   843
// 
williamr@2
   844
// ---------------------------------------------------------------------------
williamr@2
   845
// 
williamr@2
   846
inline TPtiTextCase CPtiQwertyKeyMappings::VowelCase() const
williamr@2
   847
	{
williamr@2
   848
	return iExtension->iVowelCase;
williamr@2
   849
	}
williamr@2
   850
williamr@2
   851
// ---------------------------------------------------------------------------
williamr@2
   852
// CPtiQwertyKeyMappings::ResetVietnameseVowelSequenceAndToneMarks
williamr@2
   853
// 
williamr@2
   854
// ---------------------------------------------------------------------------
williamr@2
   855
// 
williamr@2
   856
inline void CPtiQwertyKeyMappings::ResetVietnameseVowelSequenceAndToneMarks()
williamr@2
   857
	{
williamr@2
   858
	iExtension->iLastChar = 0;
williamr@2
   859
	iExtension->iReplaced = 0;
williamr@2
   860
	iExtension->iLastTone = 0;
williamr@2
   861
	iVowelSeqResult = 0;
williamr@2
   862
	iLastKey = EPtiKeyNone;
williamr@2
   863
	ResetFlag(EVowelSeqFlag);
williamr@2
   864
	}
williamr@2
   865
	
williamr@2
   866
// ---------------------------------------------------------------------------
williamr@2
   867
// CPtiQwertyKeyMappings::LastKey
williamr@2
   868
// 
williamr@2
   869
// ---------------------------------------------------------------------------
williamr@2
   870
// 
williamr@2
   871
inline TPtiKey CPtiQwertyKeyMappings::LastKey() const
williamr@2
   872
	{
williamr@2
   873
	return iLastKey;
williamr@2
   874
	}
williamr@2
   875
	
williamr@2
   876
// ---------------------------------------------------------------------------
williamr@2
   877
// CPtiQwertyKeyMappings::ChineseChrModeConversionNeeded
williamr@2
   878
// 
williamr@2
   879
// ---------------------------------------------------------------------------
williamr@2
   880
// 
williamr@2
   881
inline TBool CPtiQwertyKeyMappings::ChineseChrModeConversionNeeded(TPtiTextCase aCase, 
williamr@2
   882
                                                         TPtiEngineInputMode aMode) const
williamr@2
   883
	{
williamr@2
   884
	if (aCase == EPtiCaseChrLower &&
williamr@2
   885
       (aMode == EPtiEnginePinyinQwerty  || aMode ==  EPtiEnginePinyinPhraseQwerty ||
williamr@2
   886
        aMode == EPtiEngineStrokeQwerty  || aMode ==EPtiEngineNormalCangjieQwerty  ||
williamr@2
   887
        aMode == EPtiEngineZhuyinQwerty  || aMode == EPtiEngineZhuyinPhraseQwerty  ||
williamr@2
   888
        aMode == EPtiEngineStrokePhraseQwerty))
williamr@2
   889
		{
williamr@2
   890
		return ETrue;
williamr@2
   891
		}
williamr@2
   892
	
williamr@2
   893
	return EFalse;
williamr@2
   894
	}
williamr@2
   895
	
williamr@2
   896
// ---------------------------------------------------------------------------
williamr@2
   897
// CPtiKeyMappings::DeQwertyfyCaseValue
williamr@2
   898
// 
williamr@2
   899
// ---------------------------------------------------------------------------
williamr@2
   900
// 	
williamr@2
   901
inline void CPtiKeyMappings::DeQwertyfyCaseValue(TPtiTextCase& aCase)
williamr@2
   902
	{
williamr@2
   903
	if (aCase == EPtiCaseChrLower)
williamr@2
   904
		{
williamr@2
   905
		aCase = EPtiCaseLower;
williamr@2
   906
		}
williamr@2
   907
	else if (aCase == EPtiCaseChrUpper)
williamr@2
   908
		{
williamr@2
   909
		aCase = EPtiCaseUpper;
williamr@2
   910
		}		
williamr@2
   911
	}
williamr@2
   912
	
williamr@2
   913
// ---------------------------------------------------------------------------
williamr@2
   914
// CPtiKeyMappings::KeyMapData
williamr@2
   915
// 
williamr@2
   916
// ---------------------------------------------------------------------------
williamr@2
   917
// 		
williamr@2
   918
inline CPtiKeyMapData* CPtiMappings::KeyMapData() const
williamr@2
   919
	{
williamr@2
   920
	return iKeyMapData;
williamr@2
   921
	}
williamr@2
   922
	
williamr@2
   923
// ---------------------------------------------------------------------------
williamr@2
   924
// CPtiKeyMappings::IsChnSpecialCharKey
williamr@2
   925
// 
williamr@2
   926
// ---------------------------------------------------------------------------
williamr@2
   927
// 		
williamr@2
   928
inline TBool CPtiQwertyKeyMappings::IsChnSpecialCharKey(TPtiKey aKey) const
williamr@2
   929
	{
williamr@2
   930
	if (aKey == EPtiKeyQwertyPlus  ||
williamr@2
   931
    	aKey == EPtiKeyQwertyMinus ||
williamr@2
   932
        aKey == EPtiKeyQwertyComma ||
williamr@2
   933
        aKey == EPtiKeyQwertySemicolon ||
williamr@2
   934
    	aKey == EPtiKeyQwertyFullstop ||
williamr@2
   935
    	aKey == EPtiKeyQwertyHash     ||
williamr@2
   936
    	aKey == EPtiKeyQwertySlash    ||
williamr@2
   937
        aKey == EPtiKeyQwertyApostrophe)
williamr@2
   938
		{
williamr@2
   939
		return ETrue;
williamr@2
   940
		}
williamr@2
   941
		
williamr@2
   942
	return EFalse;	
williamr@2
   943
	}
williamr@2
   944
			
williamr@2
   945
#endif // _PTI_KEY_MAPPINGS_H
williamr@2
   946
williamr@2
   947
// End of file