os/boardsupport/emulator/emulatorbsp/specific/keymap.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// wins\specific\keymap.cpp
sl@0
    15
// The lookup tables giving the function to be carried out
sl@0
    16
// and the new state of the keyboard
sl@0
    17
// 
sl@0
    18
//
sl@0
    19
sl@0
    20
sl@0
    21
#include <k32keys.h>
sl@0
    22
sl@0
    23
// the "array" parameter must be a true array and not a pointer
sl@0
    24
#define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0]))
sl@0
    25
sl@0
    26
#define TABLE_ENTRY_ANOTHER_CTRL_DIGIT					\
sl@0
    27
	{  													\
sl@0
    28
		{												\
sl@0
    29
		EModifierKeyUp|EModifierFunc,	                \
sl@0
    30
		0												\
sl@0
    31
		},												\
sl@0
    32
		{												\
sl@0
    33
		EKeyNull,										\
sl@0
    34
		EAnyDigitGivenRadix								\
sl@0
    35
		},												\
sl@0
    36
		{												\
sl@0
    37
		EStateCtrlDigits,								\
sl@0
    38
		EAddOnCtrlDigit,								\
sl@0
    39
		0												\
sl@0
    40
		}												\
sl@0
    41
	}
sl@0
    42
sl@0
    43
// This table is searched for a match if a match has not been
sl@0
    44
// found in the current state's table
sl@0
    45
sl@0
    46
LOCAL_D const SFuncTableEntry defaultTable[]=
sl@0
    47
	{
sl@0
    48
		{ // prevent key up events generating keycodes
sl@0
    49
			{
sl@0
    50
			EModifierKeyUp,
sl@0
    51
			EModifierKeyUp
sl@0
    52
			},
sl@0
    53
			{
sl@0
    54
			EKeyNull,
sl@0
    55
			EAnyKey
sl@0
    56
			},
sl@0
    57
			{
sl@0
    58
			EStateUnchanged,
sl@0
    59
			EDoNothing,
sl@0
    60
			0
sl@0
    61
			}
sl@0
    62
		},
sl@0
    63
		{ // prevent any modifer key from changing state
sl@0
    64
			{
sl@0
    65
			0,
sl@0
    66
			0
sl@0
    67
			},
sl@0
    68
			{
sl@0
    69
			EKeyNull,
sl@0
    70
			EAnyModifierKey
sl@0
    71
			},
sl@0
    72
			{
sl@0
    73
			EStateUnchanged,
sl@0
    74
			EDoNothing,
sl@0
    75
			0
sl@0
    76
			}
sl@0
    77
		},
sl@0
    78
		{ // filter out any unprocessed codes???
sl@0
    79
			{
sl@0
    80
			0,
sl@0
    81
			0
sl@0
    82
			},
sl@0
    83
			{
sl@0
    84
			EKeyNull,
sl@0
    85
			EAnyKey
sl@0
    86
			},
sl@0
    87
			{
sl@0
    88
			EStateNormal,
sl@0
    89
			EDoNothing,
sl@0
    90
			0
sl@0
    91
			}
sl@0
    92
		}
sl@0
    93
	};
sl@0
    94
sl@0
    95
// The table indicating which keys change which modifiers;
sl@0
    96
// the state field in this table is ignored
sl@0
    97
LOCAL_D const SFuncTableEntry modifierTable[]=
sl@0
    98
	{
sl@0
    99
        {
sl@0
   100
			{
sl@0
   101
			EModifierKeyUp,
sl@0
   102
			0
sl@0
   103
			},
sl@0
   104
			{
sl@0
   105
			EKeyCapsLock,
sl@0
   106
			EMatchKey
sl@0
   107
			},
sl@0
   108
			{
sl@0
   109
			EStateUnchanged,
sl@0
   110
			EToggleModifier,
sl@0
   111
			EModifierCapsLock
sl@0
   112
			}
sl@0
   113
		},
sl@0
   114
		{
sl@0
   115
			{
sl@0
   116
			EModifierKeyUp,
sl@0
   117
			0
sl@0
   118
			},
sl@0
   119
			{
sl@0
   120
			EKeyNumLock,
sl@0
   121
			EMatchKey
sl@0
   122
			},
sl@0
   123
			{
sl@0
   124
			EStateUnchanged,
sl@0
   125
			EToggleModifier,
sl@0
   126
			EModifierNumLock
sl@0
   127
			}
sl@0
   128
		},
sl@0
   129
		{
sl@0
   130
			{
sl@0
   131
			EModifierKeyUp,
sl@0
   132
			0
sl@0
   133
			},
sl@0
   134
			{
sl@0
   135
			EKeyScrollLock,
sl@0
   136
			EMatchKey
sl@0
   137
			},
sl@0
   138
			{
sl@0
   139
			EStateUnchanged,
sl@0
   140
			EToggleModifier,
sl@0
   141
			EModifierScrollLock
sl@0
   142
			}
sl@0
   143
		},
sl@0
   144
		{
sl@0
   145
			{
sl@0
   146
			EModifierKeyUp,
sl@0
   147
			0
sl@0
   148
			},
sl@0
   149
			{
sl@0
   150
			EKeyLeftAlt,
sl@0
   151
			EMatchKey
sl@0
   152
			},
sl@0
   153
			{
sl@0
   154
			EStateUnchanged,
sl@0
   155
			ETurnOnModifier,
sl@0
   156
			EModifierAlt|EModifierLeftAlt
sl@0
   157
			}
sl@0
   158
		},
sl@0
   159
		{
sl@0
   160
			{
sl@0
   161
			EModifierKeyUp,
sl@0
   162
			EModifierKeyUp
sl@0
   163
			},
sl@0
   164
			{
sl@0
   165
			EKeyLeftAlt,
sl@0
   166
			EMatchKey
sl@0
   167
			},
sl@0
   168
			{
sl@0
   169
			EStateUnchanged,
sl@0
   170
			ETurnOffModifier,
sl@0
   171
			EModifierLeftAlt
sl@0
   172
			}
sl@0
   173
		},
sl@0
   174
		{
sl@0
   175
			{
sl@0
   176
			EModifierKeyUp,
sl@0
   177
			0
sl@0
   178
			},
sl@0
   179
			{
sl@0
   180
			EKeyLeftFunc,
sl@0
   181
			EMatchKey
sl@0
   182
			},
sl@0
   183
			{
sl@0
   184
			EStateUnchanged,
sl@0
   185
			ETurnOnModifier,
sl@0
   186
			EModifierFunc|EModifierLeftFunc
sl@0
   187
			}
sl@0
   188
		},
sl@0
   189
		{
sl@0
   190
			{
sl@0
   191
			EModifierKeyUp,
sl@0
   192
			EModifierKeyUp
sl@0
   193
			},
sl@0
   194
			{
sl@0
   195
			EKeyLeftFunc,
sl@0
   196
			EMatchKey
sl@0
   197
			},
sl@0
   198
			{
sl@0
   199
			EStateUnchanged,
sl@0
   200
			ETurnOffModifier,
sl@0
   201
			EModifierLeftFunc
sl@0
   202
			}
sl@0
   203
		},
sl@0
   204
		{
sl@0
   205
			{
sl@0
   206
			EModifierKeyUp,
sl@0
   207
			0
sl@0
   208
			},
sl@0
   209
			{
sl@0
   210
			EKeyLeftShift,
sl@0
   211
			EMatchKey
sl@0
   212
			},
sl@0
   213
			{
sl@0
   214
			EStateUnchanged,
sl@0
   215
			ETurnOnModifier,
sl@0
   216
			EModifierShift|EModifierLeftShift
sl@0
   217
			}
sl@0
   218
		},
sl@0
   219
		{
sl@0
   220
			{
sl@0
   221
			EModifierKeyUp,
sl@0
   222
			EModifierKeyUp
sl@0
   223
			},
sl@0
   224
			{
sl@0
   225
			EKeyLeftShift,
sl@0
   226
			EMatchKey
sl@0
   227
			},
sl@0
   228
			{
sl@0
   229
			EStateUnchanged,
sl@0
   230
			ETurnOffModifier,
sl@0
   231
			EModifierLeftShift
sl@0
   232
			}
sl@0
   233
		},
sl@0
   234
		{
sl@0
   235
			{
sl@0
   236
			EModifierKeyUp,
sl@0
   237
			0
sl@0
   238
			},
sl@0
   239
			{
sl@0
   240
			EKeyLeftCtrl,
sl@0
   241
			EMatchKey
sl@0
   242
			},
sl@0
   243
			{
sl@0
   244
			EStateUnchanged,
sl@0
   245
			ETurnOnModifier,
sl@0
   246
			EModifierCtrl|EModifierLeftCtrl
sl@0
   247
			}
sl@0
   248
		},
sl@0
   249
		{
sl@0
   250
			{
sl@0
   251
			EModifierKeyUp,
sl@0
   252
			EModifierKeyUp
sl@0
   253
			},
sl@0
   254
			{
sl@0
   255
			EKeyLeftCtrl,
sl@0
   256
			EMatchKey
sl@0
   257
			},
sl@0
   258
			{
sl@0
   259
			EStateUnchanged,
sl@0
   260
			ETurnOffModifier,
sl@0
   261
			EModifierLeftCtrl
sl@0
   262
			}
sl@0
   263
        },
sl@0
   264
		{
sl@0
   265
			{
sl@0
   266
			EModifierKeyUp,
sl@0
   267
			0
sl@0
   268
			},
sl@0
   269
			{
sl@0
   270
			EKeyRightAlt,
sl@0
   271
			EMatchKey
sl@0
   272
			},
sl@0
   273
			{
sl@0
   274
			EStateUnchanged,
sl@0
   275
			ETurnOnModifier,
sl@0
   276
			EModifierAlt|EModifierRightAlt
sl@0
   277
			}
sl@0
   278
		},
sl@0
   279
		{
sl@0
   280
			{
sl@0
   281
			EModifierKeyUp,
sl@0
   282
			EModifierKeyUp
sl@0
   283
			},
sl@0
   284
			{
sl@0
   285
			EKeyRightAlt,
sl@0
   286
			EMatchKey
sl@0
   287
			},
sl@0
   288
			{
sl@0
   289
			EStateUnchanged,
sl@0
   290
			ETurnOffModifier,
sl@0
   291
			EModifierRightAlt
sl@0
   292
			}
sl@0
   293
		},
sl@0
   294
		{
sl@0
   295
			{
sl@0
   296
			EModifierKeyUp,
sl@0
   297
			0
sl@0
   298
			},
sl@0
   299
			{
sl@0
   300
			EKeyRightFunc,
sl@0
   301
			EMatchKey
sl@0
   302
			},
sl@0
   303
			{
sl@0
   304
			EStateUnchanged,
sl@0
   305
			ETurnOnModifier,
sl@0
   306
			EModifierFunc|EModifierRightFunc
sl@0
   307
			}
sl@0
   308
		},
sl@0
   309
		{
sl@0
   310
			{
sl@0
   311
			EModifierKeyUp,
sl@0
   312
			EModifierKeyUp
sl@0
   313
			},
sl@0
   314
			{
sl@0
   315
			EKeyRightFunc,
sl@0
   316
			EMatchKey
sl@0
   317
			},
sl@0
   318
			{
sl@0
   319
			EStateUnchanged,
sl@0
   320
			ETurnOffModifier,
sl@0
   321
			EModifierRightFunc
sl@0
   322
			}
sl@0
   323
		},
sl@0
   324
		{
sl@0
   325
			{
sl@0
   326
			EModifierKeyUp,
sl@0
   327
			0
sl@0
   328
			},
sl@0
   329
			{
sl@0
   330
			EKeyRightShift,
sl@0
   331
			EMatchKey
sl@0
   332
			},
sl@0
   333
			{
sl@0
   334
			EStateUnchanged,
sl@0
   335
			ETurnOnModifier,
sl@0
   336
			EModifierShift|EModifierRightShift
sl@0
   337
			}
sl@0
   338
		},
sl@0
   339
		{
sl@0
   340
			{
sl@0
   341
			EModifierKeyUp,
sl@0
   342
			EModifierKeyUp
sl@0
   343
			},
sl@0
   344
			{
sl@0
   345
			EKeyRightShift,
sl@0
   346
			EMatchKey
sl@0
   347
			},
sl@0
   348
			{
sl@0
   349
			EStateUnchanged,
sl@0
   350
			ETurnOffModifier,
sl@0
   351
			EModifierRightShift
sl@0
   352
			}
sl@0
   353
		},
sl@0
   354
		{
sl@0
   355
			{
sl@0
   356
			EModifierKeyUp,
sl@0
   357
			0
sl@0
   358
			},
sl@0
   359
			{
sl@0
   360
			EKeyRightCtrl,
sl@0
   361
			EMatchKey
sl@0
   362
			},
sl@0
   363
			{
sl@0
   364
			EStateUnchanged,
sl@0
   365
			ETurnOnModifier,
sl@0
   366
			EModifierCtrl|EModifierRightCtrl
sl@0
   367
			}
sl@0
   368
		},
sl@0
   369
		{
sl@0
   370
			{
sl@0
   371
			EModifierKeyUp,
sl@0
   372
			EModifierKeyUp
sl@0
   373
			},
sl@0
   374
			{
sl@0
   375
			EKeyRightCtrl,
sl@0
   376
			EMatchKey
sl@0
   377
			},
sl@0
   378
			{
sl@0
   379
			EStateUnchanged,
sl@0
   380
			ETurnOffModifier,
sl@0
   381
			EModifierRightCtrl
sl@0
   382
			}
sl@0
   383
		}
sl@0
   384
	};
sl@0
   385
sl@0
   386
// table0 to table12 are the tables corresponding to states
sl@0
   387
// 0 to 12 respectively
sl@0
   388
sl@0
   389
LOCAL_D const SFuncTableEntry table0[]=
sl@0
   390
	{
sl@0
   391
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
   392
	};
sl@0
   393
sl@0
   394
LOCAL_D const SFuncTableEntry table1[]=
sl@0
   395
	{
sl@0
   396
		{
sl@0
   397
			{
sl@0
   398
			EModifierFunc|EModifierKeyUp,
sl@0
   399
			0
sl@0
   400
			},
sl@0
   401
			{
sl@0
   402
			'e',
sl@0
   403
			EMatchKeyCaseInsens
sl@0
   404
			},
sl@0
   405
			{
sl@0
   406
			EStateNormal,
sl@0
   407
			EPassSpecialKeyThru,
sl@0
   408
			ELatin1LcAe
sl@0
   409
			}
sl@0
   410
		},
sl@0
   411
		{
sl@0
   412
			{
sl@0
   413
			EModifierFunc|EModifierKeyUp,
sl@0
   414
			0
sl@0
   415
			},
sl@0
   416
			{
sl@0
   417
			'c',
sl@0
   418
			EMatchKeyCaseInsens
sl@0
   419
			},
sl@0
   420
			{
sl@0
   421
			EStateNormal,
sl@0
   422
			EPassSpecialKeyThru,
sl@0
   423
			ELatin1LcCcedilla
sl@0
   424
			}
sl@0
   425
		},
sl@0
   426
		{
sl@0
   427
			{
sl@0
   428
			EModifierFunc|EModifierKeyUp,
sl@0
   429
			0
sl@0
   430
			},
sl@0
   431
			{
sl@0
   432
			's',
sl@0
   433
			EMatchKeyCaseInsens
sl@0
   434
			},
sl@0
   435
			{
sl@0
   436
			EStateNormal,
sl@0
   437
			EPassSpecialKeyThru,
sl@0
   438
			ELatin1EsTset
sl@0
   439
			}
sl@0
   440
		},
sl@0
   441
		{
sl@0
   442
			{
sl@0
   443
			EModifierFunc|EModifierKeyUp,
sl@0
   444
			0
sl@0
   445
			},
sl@0
   446
			{
sl@0
   447
			'o',
sl@0
   448
			EMatchKeyCaseInsens
sl@0
   449
			},
sl@0
   450
			{
sl@0
   451
			EStateNormal,
sl@0
   452
			EPassSpecialKeyThru,
sl@0
   453
			ELatin1LcOslash
sl@0
   454
			}
sl@0
   455
		},
sl@0
   456
		{
sl@0
   457
			{
sl@0
   458
			EModifierFunc|EModifierKeyUp,
sl@0
   459
			0
sl@0
   460
			},
sl@0
   461
			{
sl@0
   462
			'd',
sl@0
   463
			EMatchKeyCaseInsens
sl@0
   464
			},
sl@0
   465
			{
sl@0
   466
			EStateNormal,
sl@0
   467
			EPassSpecialKeyThru,
sl@0
   468
			ELatin1LcThorn
sl@0
   469
			}
sl@0
   470
		},
sl@0
   471
		{
sl@0
   472
			{
sl@0
   473
			EModifierFunc|EModifierKeyUp,
sl@0
   474
			0
sl@0
   475
			},
sl@0
   476
			{
sl@0
   477
			't',
sl@0
   478
			EMatchKeyCaseInsens
sl@0
   479
			},
sl@0
   480
			{
sl@0
   481
			EStateNormal,
sl@0
   482
			EPassSpecialKeyThru,
sl@0
   483
			ELatin1LcSoftTh
sl@0
   484
			}
sl@0
   485
		},
sl@0
   486
		{
sl@0
   487
			{
sl@0
   488
			EModifierFunc|EModifierKeyUp,
sl@0
   489
			0
sl@0
   490
			},
sl@0
   491
			{
sl@0
   492
			'l',
sl@0
   493
			EMatchKeyCaseInsens
sl@0
   494
			},
sl@0
   495
			{
sl@0
   496
			EStateNormal,
sl@0
   497
			EPassSpecialKeyThru,
sl@0
   498
			ELatin1LeftChevron
sl@0
   499
			}
sl@0
   500
		},
sl@0
   501
		{
sl@0
   502
			{
sl@0
   503
			EModifierFunc|EModifierKeyUp,
sl@0
   504
			0
sl@0
   505
			},
sl@0
   506
			{
sl@0
   507
			'r',
sl@0
   508
			EMatchKeyCaseInsens
sl@0
   509
			},
sl@0
   510
			{
sl@0
   511
			EStateNormal,
sl@0
   512
			EPassSpecialKeyThru,
sl@0
   513
			ELatin1RightChevron
sl@0
   514
			}
sl@0
   515
		},
sl@0
   516
		{
sl@0
   517
			{
sl@0
   518
			EModifierFunc|EModifierKeyUp,
sl@0
   519
			0
sl@0
   520
			},
sl@0
   521
			{
sl@0
   522
			'x',
sl@0
   523
			EMatchKeyCaseInsens
sl@0
   524
			},
sl@0
   525
			{
sl@0
   526
			EStateNormal,
sl@0
   527
			EPassSpecialKeyThru,
sl@0
   528
			ELatin1InvExclam
sl@0
   529
			}
sl@0
   530
		},
sl@0
   531
		{
sl@0
   532
			{
sl@0
   533
			EModifierFunc|EModifierKeyUp,
sl@0
   534
			0
sl@0
   535
			},
sl@0
   536
			{
sl@0
   537
			'q',
sl@0
   538
			EMatchKeyCaseInsens
sl@0
   539
			},
sl@0
   540
			{
sl@0
   541
			EStateNormal,
sl@0
   542
			EPassSpecialKeyThru,
sl@0
   543
			ELatin1InvQuest
sl@0
   544
			}
sl@0
   545
		},
sl@0
   546
		{
sl@0
   547
			{
sl@0
   548
			EModifierFunc|EModifierKeyUp,
sl@0
   549
			0
sl@0
   550
			},
sl@0
   551
			{
sl@0
   552
			'a',
sl@0
   553
			EMatchKeyCaseInsens
sl@0
   554
			},
sl@0
   555
			{
sl@0
   556
			EStateNormal,
sl@0
   557
			EPassSpecialKeyThru,
sl@0
   558
			ELatin1LcAo
sl@0
   559
			}
sl@0
   560
		},
sl@0
   561
		{
sl@0
   562
			{
sl@0
   563
			EModifierFunc|EModifierKeyUp,
sl@0
   564
			0
sl@0
   565
			},
sl@0
   566
			{
sl@0
   567
			'p',
sl@0
   568
			EMatchKeyCaseInsens
sl@0
   569
			},
sl@0
   570
			{
sl@0
   571
			EStateNormal,
sl@0
   572
			EPassSpecialKeyThru,
sl@0
   573
			ELatin1Pound
sl@0
   574
			}
sl@0
   575
		},
sl@0
   576
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
   577
	};
sl@0
   578
sl@0
   579
LOCAL_D const SFuncTableEntry table2[]=
sl@0
   580
	{
sl@0
   581
		{
sl@0
   582
			{
sl@0
   583
			EModifierFunc|EModifierKeyUp,
sl@0
   584
			0
sl@0
   585
			},
sl@0
   586
			{
sl@0
   587
			'a',
sl@0
   588
			EMatchKeyCaseInsens
sl@0
   589
			},
sl@0
   590
			{
sl@0
   591
			EStateNormal,
sl@0
   592
			EPassSpecialKeyThru,
sl@0
   593
			ELatin1LcAumlaut
sl@0
   594
			}
sl@0
   595
		},
sl@0
   596
		{
sl@0
   597
			{
sl@0
   598
			EModifierFunc|EModifierKeyUp,
sl@0
   599
			0
sl@0
   600
			},
sl@0
   601
			{
sl@0
   602
			'e',
sl@0
   603
			EMatchKeyCaseInsens
sl@0
   604
			},
sl@0
   605
			{
sl@0
   606
			EStateNormal,
sl@0
   607
			EPassSpecialKeyThru,
sl@0
   608
			ELatin1LcEumlaut
sl@0
   609
			}
sl@0
   610
		},
sl@0
   611
		{
sl@0
   612
			{
sl@0
   613
			EModifierFunc|EModifierKeyUp,
sl@0
   614
			0
sl@0
   615
			},
sl@0
   616
			{
sl@0
   617
			'i',
sl@0
   618
			EMatchKeyCaseInsens
sl@0
   619
			},
sl@0
   620
			{
sl@0
   621
			EStateNormal,
sl@0
   622
			EPassSpecialKeyThru,
sl@0
   623
			ELatin1LcIumlaut
sl@0
   624
			}
sl@0
   625
		},
sl@0
   626
		{
sl@0
   627
			{
sl@0
   628
			EModifierFunc|EModifierKeyUp,
sl@0
   629
			0
sl@0
   630
			},
sl@0
   631
			{
sl@0
   632
			'o',
sl@0
   633
			EMatchKeyCaseInsens
sl@0
   634
			},
sl@0
   635
			{
sl@0
   636
			EStateNormal,
sl@0
   637
			EPassSpecialKeyThru,
sl@0
   638
			ELatin1LcOumlaut
sl@0
   639
			}
sl@0
   640
		},
sl@0
   641
		{
sl@0
   642
			{
sl@0
   643
			EModifierFunc|EModifierKeyUp,
sl@0
   644
			0
sl@0
   645
			},
sl@0
   646
			{
sl@0
   647
			'u',
sl@0
   648
			EMatchKeyCaseInsens
sl@0
   649
			},
sl@0
   650
			{
sl@0
   651
			EStateNormal,
sl@0
   652
			EPassSpecialKeyThru,
sl@0
   653
			ELatin1LcUumlaut
sl@0
   654
			}
sl@0
   655
		},
sl@0
   656
		{
sl@0
   657
			{
sl@0
   658
			EModifierFunc|EModifierKeyUp,
sl@0
   659
			0
sl@0
   660
			},
sl@0
   661
			{
sl@0
   662
			'y',
sl@0
   663
			EMatchKeyCaseInsens
sl@0
   664
			},
sl@0
   665
			{
sl@0
   666
			EStateNormal,
sl@0
   667
			EPassSpecialKeyThru,
sl@0
   668
			ELatin1LcYumlaut
sl@0
   669
			}
sl@0
   670
		},
sl@0
   671
		{
sl@0
   672
			{
sl@0
   673
			EModifierFunc|EModifierKeyUp,
sl@0
   674
			0
sl@0
   675
			},
sl@0
   676
			{
sl@0
   677
			' ',
sl@0
   678
			EMatchKey
sl@0
   679
			},
sl@0
   680
			{
sl@0
   681
			EStateNormal,
sl@0
   682
			EPassSpecialKeyThru,
sl@0
   683
			ELatin1SpaceUmlaut
sl@0
   684
			}
sl@0
   685
		},
sl@0
   686
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
   687
	};
sl@0
   688
sl@0
   689
LOCAL_D const SFuncTableEntry table3[]=
sl@0
   690
	{
sl@0
   691
		{
sl@0
   692
			{
sl@0
   693
			EModifierFunc|EModifierKeyUp,
sl@0
   694
			0
sl@0
   695
			},
sl@0
   696
			{
sl@0
   697
			'a',
sl@0
   698
			EMatchKeyCaseInsens
sl@0
   699
			},
sl@0
   700
			{
sl@0
   701
			EStateNormal,
sl@0
   702
			EPassSpecialKeyThru,
sl@0
   703
			ELatin1LcAgrave
sl@0
   704
			}
sl@0
   705
		},
sl@0
   706
		{
sl@0
   707
			{
sl@0
   708
			EModifierFunc|EModifierKeyUp,
sl@0
   709
			0
sl@0
   710
			},
sl@0
   711
			{
sl@0
   712
			'e',
sl@0
   713
			EMatchKeyCaseInsens
sl@0
   714
			},
sl@0
   715
			{
sl@0
   716
			EStateNormal,
sl@0
   717
			EPassSpecialKeyThru,
sl@0
   718
			ELatin1LcEgrave
sl@0
   719
			}
sl@0
   720
		},
sl@0
   721
		{
sl@0
   722
			{
sl@0
   723
			EModifierFunc|EModifierKeyUp,
sl@0
   724
			0
sl@0
   725
			},
sl@0
   726
			{
sl@0
   727
			'i',
sl@0
   728
			EMatchKeyCaseInsens
sl@0
   729
			},
sl@0
   730
			{
sl@0
   731
			EStateNormal,
sl@0
   732
			EPassSpecialKeyThru,
sl@0
   733
			ELatin1LcIgrave
sl@0
   734
			}
sl@0
   735
		},
sl@0
   736
		{
sl@0
   737
			{
sl@0
   738
			EModifierFunc|EModifierKeyUp,
sl@0
   739
			0
sl@0
   740
			},
sl@0
   741
			{
sl@0
   742
			'o',
sl@0
   743
			EMatchKeyCaseInsens
sl@0
   744
			},
sl@0
   745
			{
sl@0
   746
			EStateNormal,
sl@0
   747
			EPassSpecialKeyThru,
sl@0
   748
			ELatin1LcOgrave
sl@0
   749
			}
sl@0
   750
		},
sl@0
   751
		{
sl@0
   752
			{
sl@0
   753
			EModifierFunc|EModifierKeyUp,
sl@0
   754
			0
sl@0
   755
			},
sl@0
   756
			{
sl@0
   757
			'u',
sl@0
   758
			EMatchKeyCaseInsens
sl@0
   759
			},
sl@0
   760
			{
sl@0
   761
			EStateNormal,
sl@0
   762
			EPassSpecialKeyThru,
sl@0
   763
			ELatin1LcUgrave
sl@0
   764
			}
sl@0
   765
		},
sl@0
   766
		{
sl@0
   767
			{
sl@0
   768
			EModifierFunc|EModifierKeyUp,
sl@0
   769
			0
sl@0
   770
			},
sl@0
   771
			{
sl@0
   772
			' ',
sl@0
   773
			EMatchKey
sl@0
   774
			},
sl@0
   775
			{
sl@0
   776
			EStateNormal,
sl@0
   777
			EPassSpecialKeyThru,
sl@0
   778
			ELatin1SpaceGrave
sl@0
   779
			}
sl@0
   780
		},
sl@0
   781
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
   782
	};
sl@0
   783
sl@0
   784
LOCAL_D const SFuncTableEntry table4[]=
sl@0
   785
	{
sl@0
   786
		{
sl@0
   787
			{
sl@0
   788
			EModifierFunc|EModifierKeyUp,
sl@0
   789
			0
sl@0
   790
			},
sl@0
   791
			{
sl@0
   792
			'a',
sl@0
   793
			EMatchKeyCaseInsens
sl@0
   794
			},
sl@0
   795
			{
sl@0
   796
			EStateNormal,
sl@0
   797
			EPassSpecialKeyThru,
sl@0
   798
			ELatin1LcAacute
sl@0
   799
			}
sl@0
   800
		},
sl@0
   801
		{
sl@0
   802
			{
sl@0
   803
			EModifierFunc|EModifierKeyUp,
sl@0
   804
			0
sl@0
   805
			},
sl@0
   806
			{
sl@0
   807
			'e',
sl@0
   808
			EMatchKeyCaseInsens
sl@0
   809
			},
sl@0
   810
			{
sl@0
   811
			EStateNormal,
sl@0
   812
			EPassSpecialKeyThru,
sl@0
   813
			ELatin1LcEacute
sl@0
   814
			}
sl@0
   815
		},
sl@0
   816
		{
sl@0
   817
			{
sl@0
   818
			EModifierFunc|EModifierKeyUp,
sl@0
   819
			0
sl@0
   820
			},
sl@0
   821
			{
sl@0
   822
			'i',
sl@0
   823
			EMatchKeyCaseInsens
sl@0
   824
			},
sl@0
   825
			{
sl@0
   826
			EStateNormal,
sl@0
   827
			EPassSpecialKeyThru,
sl@0
   828
			ELatin1LcIacute
sl@0
   829
			}
sl@0
   830
		},
sl@0
   831
		{
sl@0
   832
			{
sl@0
   833
			EModifierFunc|EModifierKeyUp,
sl@0
   834
			0
sl@0
   835
			},
sl@0
   836
			{
sl@0
   837
			'o',
sl@0
   838
			EMatchKeyCaseInsens
sl@0
   839
			},
sl@0
   840
			{
sl@0
   841
			EStateNormal,
sl@0
   842
			EPassSpecialKeyThru,
sl@0
   843
			ELatin1LcOacute
sl@0
   844
			}
sl@0
   845
		},
sl@0
   846
		{
sl@0
   847
			{
sl@0
   848
			EModifierFunc|EModifierKeyUp,
sl@0
   849
			0
sl@0
   850
			},
sl@0
   851
			{
sl@0
   852
			'u',
sl@0
   853
			EMatchKeyCaseInsens
sl@0
   854
			},
sl@0
   855
			{
sl@0
   856
			EStateNormal,
sl@0
   857
			EPassSpecialKeyThru,
sl@0
   858
			ELatin1LcUacute
sl@0
   859
			}
sl@0
   860
		},
sl@0
   861
		{
sl@0
   862
			{
sl@0
   863
			EModifierFunc|EModifierKeyUp,
sl@0
   864
			0
sl@0
   865
			},
sl@0
   866
			{
sl@0
   867
			'y',
sl@0
   868
			EMatchKeyCaseInsens
sl@0
   869
			},
sl@0
   870
			{
sl@0
   871
			EStateNormal,
sl@0
   872
			EPassSpecialKeyThru,
sl@0
   873
			ELatin1LcYacute
sl@0
   874
			}
sl@0
   875
		},
sl@0
   876
		{
sl@0
   877
			{
sl@0
   878
			EModifierFunc|EModifierKeyUp,
sl@0
   879
			0
sl@0
   880
			},
sl@0
   881
			{
sl@0
   882
			' ',
sl@0
   883
			EMatchKey
sl@0
   884
			},
sl@0
   885
			{
sl@0
   886
			EStateNormal,
sl@0
   887
			EPassSpecialKeyThru,
sl@0
   888
			ELatin1LcSpaceAcute
sl@0
   889
			}
sl@0
   890
		},
sl@0
   891
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
   892
	};
sl@0
   893
sl@0
   894
LOCAL_D const SFuncTableEntry table5[]=
sl@0
   895
	{
sl@0
   896
		{
sl@0
   897
			{
sl@0
   898
			EModifierFunc|EModifierKeyUp,
sl@0
   899
			0
sl@0
   900
			},
sl@0
   901
			{
sl@0
   902
			'a',
sl@0
   903
			EMatchKeyCaseInsens
sl@0
   904
			},
sl@0
   905
			{
sl@0
   906
			EStateNormal,
sl@0
   907
			EPassSpecialKeyThru,
sl@0
   908
			ELatin1LcAtilde
sl@0
   909
			}
sl@0
   910
		},
sl@0
   911
		{
sl@0
   912
			{
sl@0
   913
			EModifierFunc|EModifierKeyUp,
sl@0
   914
			0
sl@0
   915
			},
sl@0
   916
			{
sl@0
   917
			'n',
sl@0
   918
			EMatchKeyCaseInsens
sl@0
   919
			},
sl@0
   920
			{
sl@0
   921
			EStateNormal,
sl@0
   922
			EPassSpecialKeyThru,
sl@0
   923
			ELatin1LcNtilde
sl@0
   924
			}
sl@0
   925
		},
sl@0
   926
		{
sl@0
   927
			{
sl@0
   928
			EModifierFunc|EModifierKeyUp,
sl@0
   929
			0
sl@0
   930
			},
sl@0
   931
			{
sl@0
   932
			'o',
sl@0
   933
			EMatchKeyCaseInsens
sl@0
   934
			},
sl@0
   935
			{
sl@0
   936
			EStateNormal,
sl@0
   937
			EPassSpecialKeyThru,
sl@0
   938
			ELatin1LcOtilde
sl@0
   939
			}
sl@0
   940
		},
sl@0
   941
		{
sl@0
   942
			{
sl@0
   943
			EModifierFunc|EModifierKeyUp,
sl@0
   944
			0
sl@0
   945
			},
sl@0
   946
			{
sl@0
   947
			' ',
sl@0
   948
			EMatchKey
sl@0
   949
			},
sl@0
   950
			{
sl@0
   951
			EStateNormal,
sl@0
   952
			EPassSpecialKeyThru,
sl@0
   953
			ELatin1LcSpaceTilde
sl@0
   954
			}
sl@0
   955
		},
sl@0
   956
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
   957
	};
sl@0
   958
sl@0
   959
LOCAL_D const SFuncTableEntry table6[]=
sl@0
   960
	{
sl@0
   961
		{
sl@0
   962
			{
sl@0
   963
			EModifierFunc|EModifierKeyUp,
sl@0
   964
			0
sl@0
   965
			},
sl@0
   966
			{
sl@0
   967
			'a',
sl@0
   968
			EMatchKeyCaseInsens
sl@0
   969
			},
sl@0
   970
			{
sl@0
   971
			EStateNormal,
sl@0
   972
			EPassSpecialKeyThru,
sl@0
   973
			ELatin1LcAcirc
sl@0
   974
			}
sl@0
   975
		},
sl@0
   976
		{
sl@0
   977
			{
sl@0
   978
			EModifierFunc|EModifierKeyUp,
sl@0
   979
			0
sl@0
   980
			},
sl@0
   981
			{
sl@0
   982
			'e',
sl@0
   983
			EMatchKeyCaseInsens
sl@0
   984
			},
sl@0
   985
			{
sl@0
   986
			EStateNormal,
sl@0
   987
			EPassSpecialKeyThru,
sl@0
   988
			ELatin1LcEcirc
sl@0
   989
			}
sl@0
   990
		},
sl@0
   991
		{
sl@0
   992
			{
sl@0
   993
			EModifierFunc|EModifierKeyUp,
sl@0
   994
			0
sl@0
   995
			},
sl@0
   996
			{
sl@0
   997
			'i',
sl@0
   998
			EMatchKeyCaseInsens
sl@0
   999
			},
sl@0
  1000
			{
sl@0
  1001
			EStateNormal,
sl@0
  1002
			EPassSpecialKeyThru,
sl@0
  1003
			ELatin1LcIcirc
sl@0
  1004
			}
sl@0
  1005
		},
sl@0
  1006
		{
sl@0
  1007
			{
sl@0
  1008
			EModifierFunc|EModifierKeyUp,
sl@0
  1009
			0
sl@0
  1010
			},
sl@0
  1011
			{
sl@0
  1012
			'o',
sl@0
  1013
			EMatchKeyCaseInsens
sl@0
  1014
			},
sl@0
  1015
			{
sl@0
  1016
			EStateNormal,
sl@0
  1017
			EPassSpecialKeyThru,
sl@0
  1018
			ELatin1LcOcirc
sl@0
  1019
			}
sl@0
  1020
		},
sl@0
  1021
		{
sl@0
  1022
			{
sl@0
  1023
			EModifierFunc|EModifierKeyUp,
sl@0
  1024
			0
sl@0
  1025
			},
sl@0
  1026
			{
sl@0
  1027
			'u',
sl@0
  1028
			EMatchKeyCaseInsens
sl@0
  1029
			},
sl@0
  1030
			{
sl@0
  1031
			EStateNormal,
sl@0
  1032
			EPassSpecialKeyThru,
sl@0
  1033
			ELatin1LcUcirc
sl@0
  1034
			}
sl@0
  1035
		},
sl@0
  1036
		{
sl@0
  1037
			{
sl@0
  1038
			EModifierFunc|EModifierKeyUp,
sl@0
  1039
			0
sl@0
  1040
			},
sl@0
  1041
			{
sl@0
  1042
			' ',
sl@0
  1043
			EMatchKey
sl@0
  1044
			},
sl@0
  1045
			{
sl@0
  1046
			EStateNormal,
sl@0
  1047
			EPassSpecialKeyThru,
sl@0
  1048
			ELatin1LcSpaceCirc
sl@0
  1049
			}
sl@0
  1050
		},
sl@0
  1051
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
  1052
	};
sl@0
  1053
sl@0
  1054
LOCAL_D const SFuncTableEntry table7[]=
sl@0
  1055
	{
sl@0
  1056
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
  1057
	};
sl@0
  1058
sl@0
  1059
LOCAL_D const SFuncTableEntry table8[]=
sl@0
  1060
	{
sl@0
  1061
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
  1062
	};
sl@0
  1063
sl@0
  1064
LOCAL_D const SFuncTableEntry table9[]=
sl@0
  1065
	{
sl@0
  1066
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
  1067
	};
sl@0
  1068
sl@0
  1069
LOCAL_D const SFuncTableEntry table10[]=
sl@0
  1070
	{
sl@0
  1071
		{ // check for ctrl-number presses
sl@0
  1072
			{
sl@0
  1073
			EModifierCtrl|EModifierFunc|EModifierKeyUp,
sl@0
  1074
			EModifierCtrl
sl@0
  1075
			},
sl@0
  1076
			{
sl@0
  1077
			EKeyNull,
sl@0
  1078
			EAnyDecimalDigit
sl@0
  1079
			},
sl@0
  1080
			{
sl@0
  1081
			EStateDerivedFromDigitEntered,
sl@0
  1082
			EAddOnCtrlDigit,
sl@0
  1083
			0
sl@0
  1084
			}
sl@0
  1085
		},
sl@0
  1086
		{ // filter out up key strokes
sl@0
  1087
			{
sl@0
  1088
			EModifierKeyUp,
sl@0
  1089
			EModifierKeyUp
sl@0
  1090
			},
sl@0
  1091
			{
sl@0
  1092
			EKeyNull,
sl@0
  1093
			EAnyKey
sl@0
  1094
			},
sl@0
  1095
			{
sl@0
  1096
			EStateUnchanged,
sl@0
  1097
			EDoNothing,
sl@0
  1098
			0
sl@0
  1099
			}
sl@0
  1100
		},
sl@0
  1101
		{ // pass thru any non-processed keys
sl@0
  1102
			{
sl@0
  1103
			0,
sl@0
  1104
			0
sl@0
  1105
			},
sl@0
  1106
			{
sl@0
  1107
			EKeyNull,
sl@0
  1108
			EAnyKey
sl@0
  1109
			},
sl@0
  1110
			{
sl@0
  1111
			EStateUnchanged,
sl@0
  1112
			EPassKeyThru,
sl@0
  1113
			0
sl@0
  1114
			}
sl@0
  1115
		}
sl@0
  1116
	};
sl@0
  1117
sl@0
  1118
//LOCAL_D const SFuncTableEntry table11[]=
sl@0
  1119
//	{
sl@0
  1120
//	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
  1121
//	};
sl@0
  1122
sl@0
  1123
LOCAL_D const SFuncTableEntry table12[]=
sl@0
  1124
	{  
sl@0
  1125
		{
sl@0
  1126
			{
sl@0
  1127
			EModifierKeyUp,
sl@0
  1128
			EModifierKeyUp
sl@0
  1129
			},
sl@0
  1130
			{
sl@0
  1131
			EKeyLeftCtrl,
sl@0
  1132
			EMatchLeftOrRight
sl@0
  1133
			},
sl@0
  1134
			{
sl@0
  1135
			EStateNormal,
sl@0
  1136
			EPassCtrlDigitsThru,
sl@0
  1137
			0
sl@0
  1138
			}
sl@0
  1139
		},
sl@0
  1140
	TABLE_ENTRY_ANOTHER_CTRL_DIGIT
sl@0
  1141
	};
sl@0
  1142
sl@0
  1143
LOCAL_D const SFuncTable genFuncTables[]=
sl@0
  1144
	{
sl@0
  1145
		{
sl@0
  1146
		ARRAY_LENGTH(table0),
sl@0
  1147
		&table0[0]
sl@0
  1148
		},
sl@0
  1149
		{
sl@0
  1150
		ARRAY_LENGTH(table1),
sl@0
  1151
		&table1[0]
sl@0
  1152
		},
sl@0
  1153
		{
sl@0
  1154
		ARRAY_LENGTH(table2),
sl@0
  1155
		&table2[0]
sl@0
  1156
		},
sl@0
  1157
		{
sl@0
  1158
		ARRAY_LENGTH(table3),
sl@0
  1159
		&table3[0]
sl@0
  1160
		},
sl@0
  1161
		{
sl@0
  1162
		ARRAY_LENGTH(table4),
sl@0
  1163
		&table4[0]
sl@0
  1164
		},
sl@0
  1165
		{
sl@0
  1166
		ARRAY_LENGTH(table5),
sl@0
  1167
		&table5[0]
sl@0
  1168
		},
sl@0
  1169
		{
sl@0
  1170
		ARRAY_LENGTH(table6),
sl@0
  1171
		&table6[0]
sl@0
  1172
		},
sl@0
  1173
		{
sl@0
  1174
		ARRAY_LENGTH(table7),
sl@0
  1175
		&table7[0]
sl@0
  1176
		},
sl@0
  1177
		{
sl@0
  1178
		ARRAY_LENGTH(table8),
sl@0
  1179
		&table8[0]
sl@0
  1180
		},
sl@0
  1181
		{
sl@0
  1182
		ARRAY_LENGTH(table9),
sl@0
  1183
		&table9[0]
sl@0
  1184
		},
sl@0
  1185
		{
sl@0
  1186
		ARRAY_LENGTH(table10),
sl@0
  1187
		&table10[0]
sl@0
  1188
		},
sl@0
  1189
		{
sl@0
  1190
		0,
sl@0
  1191
		NULL
sl@0
  1192
		},
sl@0
  1193
		{
sl@0
  1194
		ARRAY_LENGTH(table12),
sl@0
  1195
		&table12[0]
sl@0
  1196
		}
sl@0
  1197
	};
sl@0
  1198
sl@0
  1199
LOCAL_D const SFuncTables FuncTables=
sl@0
  1200
	{
sl@0
  1201
		{
sl@0
  1202
		ARRAY_LENGTH(defaultTable),
sl@0
  1203
		&defaultTable[0]
sl@0
  1204
		},
sl@0
  1205
		{
sl@0
  1206
		ARRAY_LENGTH(modifierTable),
sl@0
  1207
		&modifierTable[0]
sl@0
  1208
		},
sl@0
  1209
	ARRAY_LENGTH(genFuncTables),
sl@0
  1210
	&genFuncTables[0]
sl@0
  1211
	};
sl@0
  1212
sl@0
  1213
LOCAL_D const SScanCodeBlock scanCodeBlock_unmodifiable[]=
sl@0
  1214
	{
sl@0
  1215
	{EStdKeyLeftShift, EStdKeyScrollLock}
sl@0
  1216
	};
sl@0
  1217
sl@0
  1218
LOCAL_D const TUint16 convKeyCodes_unmodifiable[]=
sl@0
  1219
	{
sl@0
  1220
	EKeyLeftShift,
sl@0
  1221
	EKeyRightShift,
sl@0
  1222
	EKeyLeftAlt,
sl@0
  1223
	EKeyRightAlt,
sl@0
  1224
	EKeyLeftCtrl,
sl@0
  1225
	EKeyRightCtrl,
sl@0
  1226
	EKeyLeftFunc,
sl@0
  1227
	EKeyRightFunc,
sl@0
  1228
	EKeyCapsLock,
sl@0
  1229
	EKeyNumLock,
sl@0
  1230
	EKeyScrollLock
sl@0
  1231
	};
sl@0
  1232
sl@0
  1233
// base: this table traps all of the keyboard's scanCodes except those in convKeyCodes_unmodifiable
sl@0
  1234
LOCAL_D const SScanCodeBlock scanCodeBlock_base[]=
sl@0
  1235
	{
sl@0
  1236
	{EStdKeyNull, EStdKeyDownArrow},
sl@0
  1237
	{'0', '9'},
sl@0
  1238
	{'A', 'Z'},
sl@0
  1239
	{EStdKeyF1, EStdKeyDial},
sl@0
  1240
	{EStdKeyIncVolume, EStdKeyDecVolume},
sl@0
  1241
	{EStdKeyDevice0,EStdKeyDeviceF},
sl@0
  1242
	{EStdKeyApplication0, EStdKeyApplicationF},
sl@0
  1243
	{EStdKeyYes, EStdKeyDecBrightness},
sl@0
  1244
	{EStdKeyDevice10,EStdKeyDevice1F},
sl@0
  1245
	{EStdKeyApplication10, EStdKeyApplication1F},
sl@0
  1246
	{EStdKeyDevice20,EStdKeyDevice27},
sl@0
  1247
	{EStdKeyApplication20, EStdKeyApplication27}
sl@0
  1248
	};
sl@0
  1249
sl@0
  1250
//
sl@0
  1251
//	This table is internatioalizable
sl@0
  1252
//
sl@0
  1253
LOCAL_D const TUint16 convKeyCodes_base[]=
sl@0
  1254
	{
sl@0
  1255
	EKeyNull,
sl@0
  1256
	EKeyBackspace,
sl@0
  1257
	EKeyTab,
sl@0
  1258
	EKeyEnter,
sl@0
  1259
	EKeyEscape,
sl@0
  1260
	' ',
sl@0
  1261
	EKeyPrintScreen,
sl@0
  1262
	EKeyPause,
sl@0
  1263
	EKeyHome,
sl@0
  1264
	EKeyEnd,
sl@0
  1265
	EKeyPageUp,
sl@0
  1266
	EKeyPageDown,
sl@0
  1267
	EKeyInsert,
sl@0
  1268
	EKeyDelete,
sl@0
  1269
	EKeyLeftArrow,
sl@0
  1270
	EKeyRightArrow,
sl@0
  1271
	EKeyUpArrow,
sl@0
  1272
	EKeyDownArrow,
sl@0
  1273
	'0',
sl@0
  1274
	'1',
sl@0
  1275
	'2',
sl@0
  1276
	'3',
sl@0
  1277
	'4',
sl@0
  1278
	'5',
sl@0
  1279
	'6',
sl@0
  1280
	'7',
sl@0
  1281
	'8',
sl@0
  1282
	'9',
sl@0
  1283
	'a',
sl@0
  1284
	'b',
sl@0
  1285
	'c',
sl@0
  1286
	'd',
sl@0
  1287
	'e',
sl@0
  1288
	'f',
sl@0
  1289
	'g',
sl@0
  1290
	'h',
sl@0
  1291
	'i',
sl@0
  1292
	'j',
sl@0
  1293
	'k',
sl@0
  1294
	'l',
sl@0
  1295
	'm',
sl@0
  1296
	'n',
sl@0
  1297
	'o',
sl@0
  1298
	'p',
sl@0
  1299
	'q',
sl@0
  1300
	'r',
sl@0
  1301
	's',
sl@0
  1302
	't',
sl@0
  1303
	'u',
sl@0
  1304
	'v',
sl@0
  1305
	'w',
sl@0
  1306
	'x',
sl@0
  1307
	'y',
sl@0
  1308
	'z',
sl@0
  1309
	EKeyF1,
sl@0
  1310
	EKeyF2,
sl@0
  1311
	EKeyF3,
sl@0
  1312
	EKeyF4,
sl@0
  1313
	EKeyF5,                 // Media change emulation
sl@0
  1314
    EKeyF6,
sl@0
  1315
    EKeyF7,
sl@0
  1316
    EKeyF8,					// Case close
sl@0
  1317
	EKeyF9,					// KeyOff
sl@0
  1318
    EKeyF10,                // SwitchOff
sl@0
  1319
    EKeyF11,                // Case open
sl@0
  1320
	EKeyF12,
sl@0
  1321
	EKeyF13,
sl@0
  1322
	EKeyF14,
sl@0
  1323
	EKeyF15,
sl@0
  1324
	EKeyF16,
sl@0
  1325
	EKeyF17,
sl@0
  1326
	EKeyF18,
sl@0
  1327
	EKeyF19,
sl@0
  1328
	EKeyF20,
sl@0
  1329
	EKeyF21,
sl@0
  1330
	EKeyF22,
sl@0
  1331
	EKeyF23,
sl@0
  1332
	EKeyF24,
sl@0
  1333
	'`',
sl@0
  1334
	',',
sl@0
  1335
	'.',
sl@0
  1336
	'/',
sl@0
  1337
	'\\',
sl@0
  1338
	';',
sl@0
  1339
	'\'',
sl@0
  1340
	'#',
sl@0
  1341
	'[',
sl@0
  1342
	']',
sl@0
  1343
	'-',
sl@0
  1344
	'=',
sl@0
  1345
	'/',
sl@0
  1346
	'*',
sl@0
  1347
	'-',
sl@0
  1348
	'+',
sl@0
  1349
	EKeyEnter,
sl@0
  1350
	EKeyEnd,
sl@0
  1351
	EKeyDownArrow,
sl@0
  1352
	EKeyPageDown,
sl@0
  1353
	EKeyLeftArrow,
sl@0
  1354
	EKeyNull, // numeric keypad '5'
sl@0
  1355
	EKeyRightArrow,
sl@0
  1356
	EKeyHome,
sl@0
  1357
	EKeyUpArrow,
sl@0
  1358
	EKeyPageUp,
sl@0
  1359
	EKeyInsert,
sl@0
  1360
	EKeyDelete,
sl@0
  1361
    EKeyMenu,
sl@0
  1362
    EKeyBacklightOn,
sl@0
  1363
    EKeyBacklightOff,
sl@0
  1364
    EKeyBacklightToggle,
sl@0
  1365
    EKeyIncContrast,
sl@0
  1366
    EKeyDecContrast,
sl@0
  1367
    EKeySliderDown,
sl@0
  1368
    EKeySliderUp,
sl@0
  1369
    EKeyDictaphonePlay,
sl@0
  1370
    EKeyDictaphoneStop,
sl@0
  1371
    EKeyDictaphoneRecord,
sl@0
  1372
    EKeyHelp,
sl@0
  1373
    EKeyOff,
sl@0
  1374
    EKeyDial,
sl@0
  1375
	EKeyIncVolume,
sl@0
  1376
	EKeyDecVolume,
sl@0
  1377
	EKeyDevice0,
sl@0
  1378
	EKeyDevice1,
sl@0
  1379
	EKeyDevice2,
sl@0
  1380
	EKeyDevice3,
sl@0
  1381
	EKeyDevice4,
sl@0
  1382
	EKeyDevice5,
sl@0
  1383
	EKeyDevice6,
sl@0
  1384
	EKeyDevice7,
sl@0
  1385
	EKeyDevice8,
sl@0
  1386
	EKeyDevice9,
sl@0
  1387
	EKeyDeviceA,
sl@0
  1388
	EKeyDeviceB,
sl@0
  1389
	EKeyDeviceC,
sl@0
  1390
	EKeyDeviceD,
sl@0
  1391
	EKeyDeviceE,
sl@0
  1392
	EKeyDeviceF,
sl@0
  1393
	EKeyApplication0,
sl@0
  1394
	EKeyApplication1,
sl@0
  1395
	EKeyApplication2,
sl@0
  1396
	EKeyApplication3,
sl@0
  1397
	EKeyApplication4,
sl@0
  1398
	EKeyApplication5,
sl@0
  1399
	EKeyApplication6,
sl@0
  1400
	EKeyApplication7,
sl@0
  1401
	EKeyApplication8,
sl@0
  1402
	EKeyApplication9,
sl@0
  1403
	EKeyApplicationA,
sl@0
  1404
	EKeyApplicationB,
sl@0
  1405
	EKeyApplicationC,
sl@0
  1406
	EKeyApplicationD,
sl@0
  1407
	EKeyApplicationE,
sl@0
  1408
	EKeyApplicationF,
sl@0
  1409
	EKeyYes,
sl@0
  1410
	EKeyNo,
sl@0
  1411
	EKeyIncBrightness,
sl@0
  1412
	EKeyDecBrightness,
sl@0
  1413
	EKeyDevice10,
sl@0
  1414
	EKeyDevice11,
sl@0
  1415
	EKeyDevice12,
sl@0
  1416
	EKeyDevice13,
sl@0
  1417
	EKeyDevice14,
sl@0
  1418
	EKeyDevice15,
sl@0
  1419
	EKeyDevice16,
sl@0
  1420
	EKeyDevice17,
sl@0
  1421
	EKeyDevice18,
sl@0
  1422
	EKeyDevice19,
sl@0
  1423
	EKeyDevice1A,
sl@0
  1424
	EKeyDevice1B,
sl@0
  1425
	EKeyDevice1C,
sl@0
  1426
	EKeyDevice1D,
sl@0
  1427
	EKeyDevice1E,
sl@0
  1428
	EKeyDevice1F,
sl@0
  1429
	EKeyApplication10,
sl@0
  1430
	EKeyApplication11,
sl@0
  1431
	EKeyApplication12,
sl@0
  1432
	EKeyApplication13,
sl@0
  1433
	EKeyApplication14,
sl@0
  1434
	EKeyApplication15,
sl@0
  1435
	EKeyApplication16,
sl@0
  1436
	EKeyApplication17,
sl@0
  1437
	EKeyApplication18,
sl@0
  1438
	EKeyApplication19,
sl@0
  1439
	EKeyApplication1A,
sl@0
  1440
	EKeyApplication1B,
sl@0
  1441
	EKeyApplication1C,
sl@0
  1442
	EKeyApplication1D,
sl@0
  1443
	EKeyApplication1E,
sl@0
  1444
	EKeyApplication1F,
sl@0
  1445
	EKeyDevice20,
sl@0
  1446
	EKeyDevice21,
sl@0
  1447
	EKeyDevice22,
sl@0
  1448
	EKeyDevice23,
sl@0
  1449
	EKeyDevice24,
sl@0
  1450
	EKeyDevice25,
sl@0
  1451
	EKeyDevice26,
sl@0
  1452
	EKeyDevice27,
sl@0
  1453
	EKeyApplication20,
sl@0
  1454
	EKeyApplication21,
sl@0
  1455
	EKeyApplication22,
sl@0
  1456
	EKeyApplication23,
sl@0
  1457
	EKeyApplication24,
sl@0
  1458
	EKeyApplication25,
sl@0
  1459
	EKeyApplication26,
sl@0
  1460
	EKeyApplication27
sl@0
  1461
	};
sl@0
  1462
sl@0
  1463
// caps-lock: this table traps those scanCodes which are affected by caps-lock
sl@0
  1464
LOCAL_D const SScanCodeBlock scanCodeBlock_capsLock[]=
sl@0
  1465
	{
sl@0
  1466
	{'A', 'Z'}
sl@0
  1467
	};
sl@0
  1468
sl@0
  1469
LOCAL_D const TUint16 convKeyCodes_capsLock[]=
sl@0
  1470
	{
sl@0
  1471
	'A',
sl@0
  1472
	'B',
sl@0
  1473
	'C',
sl@0
  1474
	'D',
sl@0
  1475
	'E',
sl@0
  1476
	'F',
sl@0
  1477
	'G',
sl@0
  1478
	'H',
sl@0
  1479
	'I',
sl@0
  1480
	'J',
sl@0
  1481
	'K',
sl@0
  1482
	'L',
sl@0
  1483
	'M',
sl@0
  1484
	'N',
sl@0
  1485
	'O',
sl@0
  1486
	'P',
sl@0
  1487
	'Q',
sl@0
  1488
	'R',
sl@0
  1489
	'S',
sl@0
  1490
	'T',
sl@0
  1491
	'U',
sl@0
  1492
	'V',
sl@0
  1493
	'W',
sl@0
  1494
	'X',
sl@0
  1495
	'Y',
sl@0
  1496
	'Z'
sl@0
  1497
	};
sl@0
  1498
sl@0
  1499
// shift: this table traps those scanCodes which are affected
sl@0
  1500
// by shift EXCEPT for those scanCodes affected by caps-lock
sl@0
  1501
LOCAL_D const SScanCodeBlock scanCodeBlock_shift[]=
sl@0
  1502
	{
sl@0
  1503
	{'0', '9'},
sl@0
  1504
	{EStdKeyXXX, EStdKeyEquals},
sl@0
  1505
	};
sl@0
  1506
sl@0
  1507
//
sl@0
  1508
//	This table is internatioalizable
sl@0
  1509
//
sl@0
  1510
LOCAL_D const TUint16 convKeyCodes_shift[]=
sl@0
  1511
	{
sl@0
  1512
	')',
sl@0
  1513
	'!',
sl@0
  1514
	'"',
sl@0
  1515
	ELatin1Pound,
sl@0
  1516
	'$',
sl@0
  1517
	'%',
sl@0
  1518
	'^',
sl@0
  1519
	'&',
sl@0
  1520
	'*',
sl@0
  1521
	'(',
sl@0
  1522
	ELatin1LogicNot,
sl@0
  1523
	'<',
sl@0
  1524
	'>',
sl@0
  1525
	'?',
sl@0
  1526
	'|',
sl@0
  1527
	':',
sl@0
  1528
	'@',
sl@0
  1529
	'~',
sl@0
  1530
	'{',
sl@0
  1531
	'}',
sl@0
  1532
	'_',
sl@0
  1533
	'+'
sl@0
  1534
	};
sl@0
  1535
sl@0
  1536
// numlock: this table traps those scanCodes which are affected by numlock
sl@0
  1537
LOCAL_D const SScanCodeBlock scanCodeBlock_numLock[]=
sl@0
  1538
	{
sl@0
  1539
	{EStdKeyNkpForwardSlash, EStdKeyNkpFullStop}
sl@0
  1540
	};
sl@0
  1541
sl@0
  1542
LOCAL_D const TUint16 convKeyCodes_numLock[]=
sl@0
  1543
	{
sl@0
  1544
	'/',
sl@0
  1545
	'*',
sl@0
  1546
	'-',
sl@0
  1547
	'+',
sl@0
  1548
	EKeyEnter,
sl@0
  1549
	'1',
sl@0
  1550
	'2',
sl@0
  1551
	'3',
sl@0
  1552
	'4',
sl@0
  1553
	'5',
sl@0
  1554
	'6',
sl@0
  1555
	'7',
sl@0
  1556
	'8',
sl@0
  1557
	'9',
sl@0
  1558
	'0',
sl@0
  1559
	'.'
sl@0
  1560
	};
sl@0
  1561
sl@0
  1562
// ctrl: this table traps those scanCodes which are affected by ctrl
sl@0
  1563
LOCAL_D const SScanCodeBlock scanCodeBlock_ctrl[]=
sl@0
  1564
	{
sl@0
  1565
// The space key gets handled else where, otherwise it gets
sl@0
  1566
// thrown away as a NULL key
sl@0
  1567
//	{EStdKeySpace, EStdKeySpace},
sl@0
  1568
sl@0
  1569
	{'A', 'Z'}
sl@0
  1570
	};
sl@0
  1571
sl@0
  1572
LOCAL_D const TUint16 convKeyCodes_ctrl[]=
sl@0
  1573
	{
sl@0
  1574
//	0,
sl@0
  1575
	1,
sl@0
  1576
	2,
sl@0
  1577
	3,
sl@0
  1578
	4,
sl@0
  1579
	5,
sl@0
  1580
	6,
sl@0
  1581
	7,
sl@0
  1582
	8,
sl@0
  1583
	9,
sl@0
  1584
	10,
sl@0
  1585
	11,
sl@0
  1586
	12,
sl@0
  1587
	13,
sl@0
  1588
	14,
sl@0
  1589
	15,
sl@0
  1590
	16,
sl@0
  1591
	17,
sl@0
  1592
	18,
sl@0
  1593
	19,
sl@0
  1594
	20,
sl@0
  1595
	21,
sl@0
  1596
	22,
sl@0
  1597
	23,
sl@0
  1598
	24,
sl@0
  1599
	25,
sl@0
  1600
	26
sl@0
  1601
	};
sl@0
  1602
sl@0
  1603
// Rotate by 90: this table traps those scancodes which are affected by the RotateBy90 modifier
sl@0
  1604
LOCAL_D const SScanCodeBlock scanCodeBlock_rotate[]=
sl@0
  1605
	{
sl@0
  1606
	{'Q', 'Q'},
sl@0
  1607
	{'W', 'W'},
sl@0
  1608
	{'E', 'E'},
sl@0
  1609
	{'A', 'A'},
sl@0
  1610
	{'S', 'S'},
sl@0
  1611
	{'D', 'D'},
sl@0
  1612
	{'Z', 'Z'},
sl@0
  1613
	{'X', 'X'},
sl@0
  1614
	{'C', 'C'},
sl@0
  1615
	};
sl@0
  1616
sl@0
  1617
//rotate this 3x3 block of keys 90 degrees clockwise
sl@0
  1618
LOCAL_D const TUint16 convKeyCodes_rot90[]=
sl@0
  1619
	{
sl@0
  1620
	'z',
sl@0
  1621
	'a',
sl@0
  1622
	'q',
sl@0
  1623
	'x',
sl@0
  1624
	's',
sl@0
  1625
	'w',
sl@0
  1626
	'c',
sl@0
  1627
	'd',
sl@0
  1628
	'e',
sl@0
  1629
	};
sl@0
  1630
sl@0
  1631
//rotate this 3x3 block of keys 180 degrees clockwise
sl@0
  1632
LOCAL_D const TUint16 convKeyCodes_rot180[]=
sl@0
  1633
	{
sl@0
  1634
	'c',
sl@0
  1635
	'x',
sl@0
  1636
	'z',
sl@0
  1637
	'd',
sl@0
  1638
	's',
sl@0
  1639
	'a',
sl@0
  1640
	'e',
sl@0
  1641
	'w',
sl@0
  1642
	'q',
sl@0
  1643
	};
sl@0
  1644
sl@0
  1645
//rotate this 3x3 block of keys 90 degrees clockwise
sl@0
  1646
LOCAL_D const TUint16 convKeyCodes_rot270[]=
sl@0
  1647
	{
sl@0
  1648
	'e',
sl@0
  1649
	'd',
sl@0
  1650
	'c',
sl@0
  1651
	'w',
sl@0
  1652
	's',
sl@0
  1653
	'x',
sl@0
  1654
	'q',
sl@0
  1655
	'a',
sl@0
  1656
	'z',
sl@0
  1657
	};
sl@0
  1658
sl@0
  1659
LOCAL_D const SConvSubTable
sl@0
  1660
	convSubTable_unmodifiable=
sl@0
  1661
		{
sl@0
  1662
		&convKeyCodes_unmodifiable[0],
sl@0
  1663
			{
sl@0
  1664
			ARRAY_LENGTH(scanCodeBlock_unmodifiable),
sl@0
  1665
			&scanCodeBlock_unmodifiable[0]
sl@0
  1666
			}
sl@0
  1667
		},
sl@0
  1668
    convSubTable_base=
sl@0
  1669
		{
sl@0
  1670
		&convKeyCodes_base[0],
sl@0
  1671
			{
sl@0
  1672
			ARRAY_LENGTH(scanCodeBlock_base),
sl@0
  1673
			&scanCodeBlock_base[0]
sl@0
  1674
			}
sl@0
  1675
		},
sl@0
  1676
	convSubTable_capsLock=
sl@0
  1677
		{
sl@0
  1678
		&convKeyCodes_capsLock[0],
sl@0
  1679
			{
sl@0
  1680
			ARRAY_LENGTH(scanCodeBlock_capsLock),
sl@0
  1681
			&scanCodeBlock_capsLock[0]
sl@0
  1682
			}
sl@0
  1683
		},
sl@0
  1684
	convSubTable_shift=
sl@0
  1685
		{
sl@0
  1686
		&convKeyCodes_shift[0],
sl@0
  1687
			{
sl@0
  1688
			ARRAY_LENGTH(scanCodeBlock_shift),
sl@0
  1689
			&scanCodeBlock_shift[0]
sl@0
  1690
			}
sl@0
  1691
		},
sl@0
  1692
	convSubTable_numLock=
sl@0
  1693
		{
sl@0
  1694
		&convKeyCodes_numLock[0],
sl@0
  1695
			{
sl@0
  1696
			ARRAY_LENGTH(scanCodeBlock_numLock),
sl@0
  1697
			&scanCodeBlock_numLock[0]
sl@0
  1698
			}
sl@0
  1699
        },
sl@0
  1700
	convSubTable_ctrl=
sl@0
  1701
		{
sl@0
  1702
		&convKeyCodes_ctrl[0],
sl@0
  1703
			{
sl@0
  1704
			ARRAY_LENGTH(scanCodeBlock_ctrl),
sl@0
  1705
			&scanCodeBlock_ctrl[0]
sl@0
  1706
			}
sl@0
  1707
		},
sl@0
  1708
	convSubTable_rot90=
sl@0
  1709
		{
sl@0
  1710
		&convKeyCodes_rot90[0],
sl@0
  1711
			{
sl@0
  1712
			ARRAY_LENGTH(scanCodeBlock_rotate),
sl@0
  1713
			&scanCodeBlock_rotate[0]
sl@0
  1714
			}
sl@0
  1715
		},	
sl@0
  1716
	convSubTable_rot180=
sl@0
  1717
		{
sl@0
  1718
		&convKeyCodes_rot180[0],
sl@0
  1719
			{
sl@0
  1720
			ARRAY_LENGTH(scanCodeBlock_rotate),
sl@0
  1721
			&scanCodeBlock_rotate[0]
sl@0
  1722
			}
sl@0
  1723
		},
sl@0
  1724
	convSubTable_rot270=
sl@0
  1725
		{
sl@0
  1726
		&convKeyCodes_rot270[0],
sl@0
  1727
			{
sl@0
  1728
			ARRAY_LENGTH(scanCodeBlock_rotate),
sl@0
  1729
			&scanCodeBlock_rotate[0]
sl@0
  1730
			}
sl@0
  1731
		};
sl@0
  1732
sl@0
  1733
// Some modifiers, e.g. shift, may required more than one table (other than "base")
sl@0
  1734
// to be searched; therefore arrays of tables are required
sl@0
  1735
LOCAL_D const SConvSubTable
sl@0
  1736
	* const convSubTableArray_unmodifiable[]={&convSubTable_unmodifiable},
sl@0
  1737
	* const convSubTableArray_base[]={&convSubTable_base},
sl@0
  1738
	* const convSubTableArray_capsLock[]={&convSubTable_capsLock},
sl@0
  1739
	* const convSubTableArray_shift[]={&convSubTable_capsLock, &convSubTable_shift},
sl@0
  1740
	* const convSubTableArray_capsLockShift[]={&convSubTable_shift},
sl@0
  1741
	* const convSubTableArray_numLock[]={&convSubTable_numLock},
sl@0
  1742
	* const convSubTableArray_ctrl[]={&convSubTable_ctrl},
sl@0
  1743
	* const convSubTableArray_rot90[]={&convSubTable_rot90},
sl@0
  1744
	* const convSubTableArray_rot180[]={&convSubTable_rot180},
sl@0
  1745
	* const convSubTableArray_rot270[]={&convSubTable_rot270};
sl@0
  1746
sl@0
  1747
// The order of these nodes is VITAL, as the scanCode/modifiers are
sl@0
  1748
// searched for a match in this order
sl@0
  1749
LOCAL_D const SConvTableNode convTableNodes[]=
sl@0
  1750
	{
sl@0
  1751
		{
sl@0
  1752
			{
sl@0
  1753
			0, /* iMask */
sl@0
  1754
			0  /* iValue */
sl@0
  1755
			}, /* maskedModifiers */
sl@0
  1756
		ARRAY_LENGTH(convSubTableArray_unmodifiable), /* numSubTables */
sl@0
  1757
		&convSubTableArray_unmodifiable[0]
sl@0
  1758
		}, /* pnodes[i] */
sl@0
  1759
		{
sl@0
  1760
			{
sl@0
  1761
			EModifierCtrl,
sl@0
  1762
			EModifierCtrl
sl@0
  1763
			},
sl@0
  1764
		ARRAY_LENGTH(convSubTableArray_ctrl),
sl@0
  1765
		&convSubTableArray_ctrl[0]
sl@0
  1766
		},
sl@0
  1767
		{
sl@0
  1768
			{
sl@0
  1769
			EModifierNumLock,
sl@0
  1770
			EModifierNumLock
sl@0
  1771
			},
sl@0
  1772
		ARRAY_LENGTH(convSubTableArray_numLock),
sl@0
  1773
		&convSubTableArray_numLock[0]
sl@0
  1774
		},
sl@0
  1775
		{
sl@0
  1776
			{
sl@0
  1777
			EModifierCapsLock|EModifierShift,
sl@0
  1778
			EModifierCapsLock
sl@0
  1779
			},
sl@0
  1780
		ARRAY_LENGTH(convSubTableArray_capsLock),
sl@0
  1781
		&convSubTableArray_capsLock[0]
sl@0
  1782
		},
sl@0
  1783
		{
sl@0
  1784
			{
sl@0
  1785
			EModifierShift|EModifierCapsLock,
sl@0
  1786
			EModifierShift
sl@0
  1787
			},
sl@0
  1788
		ARRAY_LENGTH(convSubTableArray_shift),
sl@0
  1789
		&convSubTableArray_shift[0]
sl@0
  1790
		},
sl@0
  1791
		{
sl@0
  1792
			{
sl@0
  1793
			EModifierCapsLock|EModifierShift,
sl@0
  1794
			EModifierCapsLock|EModifierShift
sl@0
  1795
			},
sl@0
  1796
		ARRAY_LENGTH(convSubTableArray_capsLockShift),
sl@0
  1797
		&convSubTableArray_capsLockShift[0]
sl@0
  1798
		},
sl@0
  1799
		{
sl@0
  1800
			{
sl@0
  1801
			EModifierRotateBy90,
sl@0
  1802
			EModifierRotateBy90
sl@0
  1803
			},
sl@0
  1804
		ARRAY_LENGTH(convSubTableArray_rot90),
sl@0
  1805
		&convSubTableArray_rot90[0]
sl@0
  1806
		},
sl@0
  1807
		{
sl@0
  1808
			{
sl@0
  1809
			EModifierRotateBy180,
sl@0
  1810
			EModifierRotateBy180
sl@0
  1811
			},
sl@0
  1812
		ARRAY_LENGTH(convSubTableArray_rot180),
sl@0
  1813
		&convSubTableArray_rot180[0]
sl@0
  1814
		},
sl@0
  1815
		{
sl@0
  1816
			{
sl@0
  1817
			EModifierRotateBy270,
sl@0
  1818
			EModifierRotateBy270
sl@0
  1819
			},
sl@0
  1820
		ARRAY_LENGTH(convSubTableArray_rot270),
sl@0
  1821
		&convSubTableArray_rot270[0]
sl@0
  1822
		},
sl@0
  1823
		{
sl@0
  1824
			{
sl@0
  1825
			0,
sl@0
  1826
			0
sl@0
  1827
			},
sl@0
  1828
		ARRAY_LENGTH(convSubTableArray_base),
sl@0
  1829
		&convSubTableArray_base[0]
sl@0
  1830
		}
sl@0
  1831
	};
sl@0
  1832
sl@0
  1833
// The top-level exported data structure of all the conversion tables
sl@0
  1834
LOCAL_D const SConvTable ConvTable=
sl@0
  1835
	{
sl@0
  1836
	ARRAY_LENGTH(convTableNodes),
sl@0
  1837
	&convTableNodes[0]
sl@0
  1838
	};
sl@0
  1839
sl@0
  1840
// The list of scan-codes on the numeric keypad
sl@0
  1841
LOCAL_D const SScanCodeBlock keypadScanCodeBlockArray[]=
sl@0
  1842
	{
sl@0
  1843
	{EStdKeyNumLock, EStdKeyNumLock},
sl@0
  1844
	{EStdKeyNkpForwardSlash, EStdKeyNkpFullStop}
sl@0
  1845
	};
sl@0
  1846
sl@0
  1847
LOCAL_D const SScanCodeBlockList ConvTableKeypadScanCodes=
sl@0
  1848
	{
sl@0
  1849
	ARRAY_LENGTH(keypadScanCodeBlockArray),
sl@0
  1850
	&keypadScanCodeBlockArray[0]
sl@0
  1851
	};
sl@0
  1852
sl@0
  1853
// The list of non-autorepeating key-codes
sl@0
  1854
LOCAL_D const TUint16 nonAutorepKeyCodeArray[]=
sl@0
  1855
	{
sl@0
  1856
	EKeyEscape,
sl@0
  1857
	EKeyPrintScreen,
sl@0
  1858
	EKeyPause,
sl@0
  1859
	EKeyInsert,
sl@0
  1860
	EKeyLeftShift,
sl@0
  1861
	EKeyRightShift,
sl@0
  1862
	EKeyLeftAlt,
sl@0
  1863
	EKeyRightAlt,
sl@0
  1864
	EKeyLeftCtrl,
sl@0
  1865
	EKeyRightCtrl,
sl@0
  1866
	EKeyLeftFunc,
sl@0
  1867
	EKeyRightFunc,
sl@0
  1868
	EKeyCapsLock,
sl@0
  1869
	EKeyNumLock,
sl@0
  1870
	EKeyScrollLock,
sl@0
  1871
    EKeyMenu,
sl@0
  1872
    EKeyDictaphonePlay,
sl@0
  1873
    EKeyDictaphoneStop,
sl@0
  1874
    EKeyDictaphoneRecord
sl@0
  1875
	};
sl@0
  1876
sl@0
  1877
LOCAL_D const SKeyCodeList ConvTableNonAutorepKeyCodes=
sl@0
  1878
	{
sl@0
  1879
	ARRAY_LENGTH(nonAutorepKeyCodeArray),
sl@0
  1880
	&nonAutorepKeyCodeArray[0]
sl@0
  1881
	};
sl@0
  1882
sl@0
  1883
EXPORT_C void KeyDataSettings(TRadix &aRadix,TCtrlDigitsTermination &aCtrlDigitsTermination,TInt &aDefaultCtrlDigitsMaxCount,
sl@0
  1884
							  TInt &aMaximumCtrlDigitsMaxCount)
sl@0
  1885
	{
sl@0
  1886
	aRadix=EDecimal;
sl@0
  1887
	aCtrlDigitsTermination=ETerminationByCtrlUp;
sl@0
  1888
	aDefaultCtrlDigitsMaxCount=3;
sl@0
  1889
	aMaximumCtrlDigitsMaxCount=10;
sl@0
  1890
	}
sl@0
  1891
sl@0
  1892
EXPORT_C void KeyDataFuncTable(SFuncTables &aFuncTables)
sl@0
  1893
	{
sl@0
  1894
	aFuncTables=FuncTables;
sl@0
  1895
	}
sl@0
  1896
sl@0
  1897
EXPORT_C void KeyDataConvTable(SConvTable &aConvTable, TUint &aConvTableFirstScanCode,TUint &aConvTableLastScanCode,
sl@0
  1898
							 SScanCodeBlockList &aKeypadScanCode,SKeyCodeList &aNonAutorepKeyCodes)
sl@0
  1899
	{
sl@0
  1900
	aConvTable=ConvTable;
sl@0
  1901
	aConvTableFirstScanCode=scanCodeBlock_base[0].firstScanCode;
sl@0
  1902
	aConvTableLastScanCode=scanCodeBlock_base[ARRAY_LENGTH(scanCodeBlock_base)-1].lastScanCode;
sl@0
  1903
	aKeypadScanCode=ConvTableKeypadScanCodes;
sl@0
  1904
	aNonAutorepKeyCodes=ConvTableNonAutorepKeyCodes;
sl@0
  1905
	}