bluetoothengine/bthid/layouts/src/su8usenglish.cpp
changeset 0 f63038272f30
equal deleted inserted replaced
-1:000000000000 0:f63038272f30
       
     1 /*
       
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  This is the implementation of application class
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "su8usenglish.h"
       
    20 #include "hiddebug.h"
       
    21 #include "hidlayoutids.h"
       
    22 
       
    23 // CONSTANTS
       
    24 
       
    25 // Look-up tables to translate HID keyboard usage codes (usage page 7)
       
    26 // to the corresponding Symbian "TKeyCode" (Unicode) values:
       
    27 
       
    28 const TInt CUSInternationalLayout::KColumnMap[] =
       
    29     {
       
    30     THidModifier::EUnmodified,  // ----
       
    31     THidModifier::EShift,       // ---S
       
    32     THidModifier::EAltCtrl,     // -AC-
       
    33     THidModifier::EAltCtrlShift // -ACS
       
    34     };
       
    35 
       
    36 const TUint16 CUSInternationalLayout::KKeyCodes[] = 
       
    37     {
       
    38     //----    ---S    -AC-    -ACS   // Hex  Dec  Usage name (UK)
       
    39          0,      0,      0,      0,  // 0x00   0  Reserved (no event)
       
    40          0,      0,      0,      0,  // 0x01   1  Rollover error
       
    41          0,      0,      0,      0,  // 0x02   2  POST Fail
       
    42          0,      0,      0,      0,  // 0x03   3  Undefined error
       
    43        'a',    'A', 0x00e1, 0x00c1,  // 0x04   4  a A
       
    44        'b',    'B',      0,      0,  // 0x05   5  b B
       
    45        'c',    'C', 0x00a9, 0x00a2,  // 0x06   6  c C
       
    46        'd',    'D', 0x00f0, 0x00d0,  // 0x07   7  d D
       
    47        'e',    'E', 0x00e9, 0x00c9,  // 0x08   8  e E
       
    48        'f',    'F',      0,      0,  // 0x09   9  f F
       
    49        'g',    'G',      0,      0,  // 0x0a  10  g G
       
    50        'h',    'H',      0,      0,  // 0x0b  11  h H
       
    51        'i',    'I', 0x00ed, 0x00cd,  // 0x0c  12  i I
       
    52        'j',    'J',      0,      0,  // 0x0d  13  j J
       
    53        'k',    'K',      0,      0,  // 0x0e  14  k K
       
    54        'l',    'L', 0x00f8, 0x00d8,  // 0x0f  15  l L
       
    55        'm',    'M', 0x00b5,      0,  // 0x10  16  m M
       
    56        'n',    'N', 0x00f1, 0x00d1,  // 0x11  17  n N
       
    57        'o',    'O', 0x00f3, 0x00d3,  // 0x12  18  o O
       
    58        'p',    'P', 0x00f6, 0x00d6,  // 0x13  19  p P
       
    59        'q',    'Q', 0x00e4, 0x00c4,  // 0x14  20  q Q
       
    60        'r',    'R', 0x00ae,      0,  // 0x15  21  r R
       
    61        's',    'S', 0x00df, 0x00a7,  // 0x16  22  s S
       
    62        't',    'T', 0x00fe, 0x00de,  // 0x17  23  t T
       
    63        'u',    'U', 0x00fa, 0x00da,  // 0x18  24  u U
       
    64        'v',    'V',      0,      0,  // 0x19  25  v V
       
    65        'w',    'W', 0x00e5, 0x00c5,  // 0x1a  26  w W
       
    66        'x',    'X',      0,      0,  // 0x1b  27  x X
       
    67        'y',    'Y', 0x00fc, 0x00dc,  // 0x1c  28  y Y
       
    68        'z',    'Z', 0x00e6, 0x00c6,  // 0x1d  29  z Z
       
    69        '1',    '!', 0x00a1, 0x00b9,  // 0x1e  30  1 !
       
    70        '2',    '@', 0x00b2,      0,  // 0x1f  31  2 "
       
    71        '3',    '#', 0x00b3,      0,  // 0x20  32  3 £
       
    72        '4',    '$', 0x00a4, 0x00a3,  // 0x21  33  4 $
       
    73        '5',    '%', 0x20ac,      0,  // 0x22  34  5 %
       
    74        '6',    '^', 0x00bc,      0,  // 0x23  35  6 ^
       
    75        '7',    '&', 0x00bd,      0,  // 0x24  36  7 &
       
    76        '8',    '*', 0x00be,      0,  // 0x25  37  8 *
       
    77        '9',    '(', 0x2018,      0,  // 0x26  38  9 (
       
    78        '0',    ')', 0x2019,      0,  // 0x27  39  0 )
       
    79     0x000d, 0xf845,      0,      0,  // 0x28  40  Enter (Return)
       
    80     0x001b, 0x001b,      0,      0,  // 0x29  41  Escape
       
    81     0x0008, 0x0008,      0,      0,  // 0x2a  42  Backspace (Delete)
       
    82     0x0009, 0x0009,      0,      0,  // 0x2b  43  Tab
       
    83        ' ',    ' ',      0,      0,  // 0x2c  44  Spacebar
       
    84        '-',    '_', 0x00a5,      0,  // 0x2d  45  - _
       
    85        '=',    '+', 0x00d7, 0x00f7,  // 0x2e  46  = +
       
    86        '[',    '{', 0x00ab,      0,  // 0x2f  47  [ {
       
    87        ']',    '}', 0x00bb,      0,  // 0x30  48  ] }
       
    88       '\\',    '|', 0x00ac, 0x00a6,  // 0x31  49  US \ bar
       
    89       '\\',    '|', 0x00ac, 0x00a6,  // 0x32  50  # ~
       
    90        ';',    ':', 0x00b6, 0x00b0,  // 0x33  51  ; :
       
    91       '\'',    '"', 0x00b4, 0x00a8,  // 0x34  52  ' @
       
    92        '`',    '~',      0,      0,  // 0x35  53  Grave/not/bar
       
    93        ',',    '<', 0x00e7, 0x00c7,  // 0x36  54  , <
       
    94        '.',    '>',      0,      0,  // 0x37  55  . >
       
    95        '/',    '?', 0x00bf,      0,  // 0x38  56  / ?
       
    96       
       
    97     };
       
    98     
       
    99 /* OLD AND ORIGINAL SU-8W ENGLISH LAYOUT
       
   100 const TInt CSu8UnitedStatesLayout::KColumnMap[] =
       
   101     {
       
   102     THidModifier::EUnmodified,  // ----
       
   103     THidModifier::EShift        // ---S
       
   104     };
       
   105 
       
   106 const TUint16 CSu8UnitedStatesLayout::KKeyCodes[] = 
       
   107     {
       
   108     //----    ---S   // Hex  Dec  Usage name (UK)
       
   109          0,      0,  // 0x00   0  Reserved (no event)
       
   110          0,      0,  // 0x01   1  Rollover error
       
   111          0,      0,  // 0x02   2  POST Fail
       
   112          0,      0,  // 0x03   3  Undefined error
       
   113        'a',    'A',  // 0x04   4  a
       
   114        'b',    'B',  // 0x05   5  b
       
   115        'c',    'C',  // 0x06   6  c
       
   116        'd',    'D',  // 0x07   7  d
       
   117        'e',    'E',  // 0x08   8  e
       
   118        'f',    'F',  // 0x09   9  f
       
   119        'g',    'G',  // 0x0a  10  g
       
   120        'h',    'H',  // 0x0b  11  h
       
   121        'i',    'I',  // 0x0c  12  i
       
   122        'j',    'J',  // 0x0d  13  j
       
   123        'k',    'K',  // 0x0e  14  k
       
   124        'l',    'L',  // 0x0f  15  l
       
   125        'm',    'M',  // 0x10  16  m
       
   126        'n',    'N',  // 0x11  17  n
       
   127        'o',    'O',  // 0x12  18  o
       
   128        'p',    'P',  // 0x13  19  p
       
   129        'q',    'Q',  // 0x14  20  q
       
   130        'r',    'R',  // 0x15  21  r
       
   131        's',    'S',  // 0x16  22  s
       
   132        't',    'T',  // 0x17  23  t
       
   133        'u',    'U',  // 0x18  24  u
       
   134        'v',    'V',  // 0x19  25  v
       
   135        'w',    'W',  // 0x1a  26  w
       
   136        'x',    'X',  // 0x1b  27  x
       
   137        'y',    'Y',  // 0x1c  28  y
       
   138        'z',    'Z',  // 0x1d  29  z
       
   139        '1',    '!',  // 0x1e  30  1
       
   140        '2',    '@',  // 0x1f  31  2
       
   141        '3',    '#',  // 0x20  32  3
       
   142        '4',    '$',  // 0x21  33  4
       
   143        '5',    '%',  // 0x22  34  5
       
   144        '6',    '^',  // 0x23  35  6
       
   145        '7',    '&',  // 0x24  36  7
       
   146        '8',    '*',  // 0x25  37  8
       
   147        '9',    '(',  // 0x26  38  9
       
   148        '0',    ')',  // 0x27  39  0
       
   149     0x000d, 0xf845,  // 0x28  40  Enter
       
   150     0x001b, 0x001b,  // 0x29  41  Escape
       
   151     0x0008, 0x0008,  // 0x2a  42  Backspace
       
   152     0x0009, 0x0009,  // 0x2b  43  Tab
       
   153        ' ',    ' ',  // 0x2c  44  Space
       
   154        '-',    '_',  // 0x2d  45
       
   155        '=',    '+',  // 0x2e  46
       
   156        '[',    '{',  // 0x2f  47
       
   157        ']',    '}',  // 0x30  48
       
   158       '\\',    '|',  // 0x31  49
       
   159          0,      0,  // 0x32  50
       
   160        ';',    ':',  // 0x33  51
       
   161       '\'',    '"',  // 0x34  52
       
   162        '`',    '~',  // 0x35  53
       
   163        ',',    '<',  // 0x36  54
       
   164        '.',    '>',  // 0x37  55
       
   165        '/',    '?'   // 0x38  56
       
   166     };
       
   167 */
       
   168 // ----------------------------------------------------------------------
       
   169 
       
   170 const CStandardKeyboardLayout::TSpecialKey 
       
   171     CSu8UnitedStatesLayout::KSpecialCases[] =
       
   172     {
       
   173     // HID usage, modifiers, Unicode
       
   174     { 0x28, THidModifier::ECtrl,       0xf845 }, // Ctrl-enter (Return)
       
   175     { 0x2c, THidModifier::ECtrl,       0x0020 }, // Ctrl-spacebar
       
   176     { 0x2b, THidModifier::EAlt,        0xf852 }, // Alt-tab
       
   177     { 0x4c, THidModifier::EUnmodified, 0x007f }, // Delete
       
   178     { 0x4c, THidModifier::EShift,      0x007f }, // Shift-Delete
       
   179     { 0x4c, THidModifier::EAltCtrl,    0xf844 }, // Alt-ctrl-delete
       
   180     { 0x4f, THidModifier::EUnmodified, 0xf808 }, // Right arrow
       
   181     { 0x4f, THidModifier::EShift,      0xf808 }, // Shift-right arrow
       
   182     { 0x50, THidModifier::EUnmodified, 0xf807 }, // Left arrow
       
   183     { 0x50, THidModifier::EShift,      0xf807 }, // Shift-left arrow
       
   184     { 0x51, THidModifier::EUnmodified, 0xf80a }, // Down arrow
       
   185     { 0x51, THidModifier::EShift,      0xf80a }, // Shift-down arrow
       
   186     { 0x52, THidModifier::EUnmodified, 0xf809 }, // Up arrow
       
   187     { 0x52, THidModifier::EShift,      0xf809 }, // Shift-up arrow
       
   188     { 0xe3, THidModifier::EFunc,       0xf842 }, // Left GUI key
       
   189     { 0xe7, THidModifier::EFunc,       0xf843 }, // Right GUI key
       
   190     { 0xe3, THidModifier::EFuncShift,  0xf862 }, // Shift-left GUI key
       
   191     { 0xe7, THidModifier::EFuncShift,  0xf863 }, // Shift-right GUI key
       
   192     { 0x76, THidModifier::EUnmodified, 0xf852 }, // App switch
       
   193     { 0x76, THidModifier::EShift,      0xf852 }, // Shift-app switch
       
   194     { 0x77, THidModifier::EUnmodified, 0xf845 }, // MSK to OK
       
   195     { 0x77, THidModifier::EShift,      0xf845 }, // Shift-MSK to OK
       
   196     //
       
   197     { 0x00 } // end of table
       
   198     };
       
   199 
       
   200 // ----------------------------------------------------------------------
       
   201 
       
   202 CSu8UnitedStatesLayout::CSu8UnitedStatesLayout()
       
   203     : CStandardKeyboardLayout(KColumnMap, sizeof (KColumnMap),
       
   204         KKeyCodes, sizeof (KKeyCodes), KSpecialCases)
       
   205     {
       
   206     // nothing else to do
       
   207     }
       
   208 
       
   209 
       
   210 TInt CSu8UnitedStatesLayout::RawScanCode(TInt aHidKey, 
       
   211     TInt aUsagePage, THidModifier aModifiers) const
       
   212     {
       
   213     TInt result = EStdKeyNull;
       
   214 
       
   215     const TInt KKeyboardUsagePage = 0x07;
       
   216     if (aUsagePage == KKeyboardUsagePage)
       
   217         {
       
   218         // Application switch key is HID "Keyboard Menu" usage:
       
   219         //
       
   220         const TInt KHidKeyboardMenu = 0x76;
       
   221         if (aHidKey == KHidKeyboardMenu)
       
   222             {
       
   223             result = EStdKeyApplication0;
       
   224             }
       
   225         
       
   226         // Middle soft key is HID "Keyboard Select" usage:
       
   227         //
       
   228         const TInt KHidKeyboardSelect = 0x77;
       
   229         if (aHidKey == KHidKeyboardSelect)
       
   230             {
       
   231             result = EStdKeyDevice3;
       
   232             }
       
   233         }
       
   234     
       
   235     if (result == EStdKeyNull)
       
   236         {
       
   237         result = CStandardKeyboardLayout::RawScanCode(aHidKey,
       
   238             aUsagePage, aModifiers);
       
   239         }
       
   240     
       
   241     return result;
       
   242     }
       
   243 
       
   244 TInt CSu8UnitedStatesLayout::LayoutId() const
       
   245     {
       
   246     DBG(RDebug::Print(_L("[HID]\tCSu8UnitedStatesLayout::LayoutId()")));
       
   247     return ESu8IntRussian;
       
   248     }
       
   249 
       
   250 CKeyboardLayout* CSu8UnitedStatesLayout::NewL()
       
   251     {
       
   252     DBG(RDebug::Print(_L("[HID]\tCSu8UnitedStatesLayout::NewL()")));
       
   253     CKeyboardLayout* layout = new (ELeave) CSu8UnitedStatesLayout;
       
   254     return layout;
       
   255     }
       
   256 
       
   257 // End of file
       
   258