⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scvkengus1.cpp

📁 Windows CE 6.0 BSP for VOIP sample phone. Intel PXA270 platform.
💻 CPP
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995-1998  Microsoft Corporation

@doc    EXTERNAL

@module scvkengus1.cpp |

Sample implementation of the keyboard platform dependent scan code to
Virtual Key mapping for keyboard driver.

Exports ScanCodeToVKey for the PDD to use to map scan codes to virtual
keys.  A version of this will be needed for every physical/virtual key
configuration.

*/

#include <windows.h>
#include <keybddr.h>
#include <winuserm.h>

//
// Plato Keypad scan codes
//
#define ScanCodeTableLast   0x46
const UINT8  ScanCodeToVKeyTable[ScanCodeTableLast+1] =
{
    0,              // Scan Code 0x0
    VK_TVOLUMEUP,   // Scan Code 0x1
    VK_TVOLUMEDOWN, // Scan Code 0x2
    VK_TSOFT2,      // Scan Code 0x3
    VK_TRIGHT,      // Scan Code 0x4        
    VK_TUP,         // Scan Code 0x5
    0,              // Scan Code 0x6        
    0,              // Scan Code 0x7
    0,              // Scan Code 0x8        
    0,              // Scan Code 0x9
    0,              // Scan Code 0xA
    0,              // Scan Code 0xB
    0,              // Scan Code 0xC
    0,              // Scan Code 0xD
    0,              // Scan Code 0xE        
    0,              // Scan Code 0xF

    0,              // Scan Code 0x10
    VK_T3,          // Scan Code 0x11
    0,              // Scan Code 0x12
    VK_TBACK,       // Scan Code 0x13
    VK_TDOWN,       // Scan Code 0x14
    VK_TACTION,     // Scan Code 0x15
    0,              // Scan Code 0x16
    0,              // Scan Code 0x17
    0,              // Scan Code 0x18
    0,              // Scan Code 0x19
    0,              // Scan Code 0x1A
    0,              // Scan Code 0x1B
    0,              // Scan Code 0x1C
    0,              // Scan Code 0x1D
    0,              // Scan Code 0x1E
    0,              // Scan Code 0x1F

    0,              // Scan Code 0x20
    VK_T9,          // Scan Code 0x21
    VK_T6,          // Scan Code 0x22
    VK_T5,          // Scan Code 0x23
    VK_T2,          // Scan Code 0x24       
    VK_TLEFT,       // Scan Code 0x25
    0,              // Scan Code 0x26       
    0,              // Scan Code 0x27
    0,              // Scan Code 0x28       
    0,              // Scan Code 0x29
    0,              // Scan Code 0x2A       
    0,              // Scan Code 0x2B
    0,              // Scan Code 0x2C       
    0,              // Scan Code 0x2D
    0,              // Scan Code 0x2E       
    0,              // Scan Code 0x2F

    0,              // Scan Code 0x30
    VK_TPOUND,      // Scan Code 0x31
    VK_T0,          // Scan Code 0x32
    VK_T8,          // Scan Code 0x33
    VK_THOME,       // Scan Code 0x34
    VK_TSOFT1,      // Scan Code 0x35
    0,              // Scan Code 0x36
    0,              // Scan Code 0x37
    0,              // Scan Code 0x38
    0,              // Scan Code 0x39
    0,              // Scan Code 0x3A
    0,              // Scan Code 0x3B
    0,              // Scan Code 0x3C
    0,              // Scan Code 0x3D
    0,              // Scan Code 0x3E
    0,              // Scan Code 0x3F


    0,              // Scan Code 0x40
    VK_TSTAR,       // Scan Code 0x41
    VK_T7,          // Scan Code 0x42
    VK_T4,          // Scan Code 0x43                                       
    VK_T1,          // Scan Code 0x44       
    VK_TTALK,       // Scan Code 0x45
    VK_TEND,        // Scan Code 0x46     
    // Scan code 46 is an actual scan code, but kept here for completeness.
    // VK_TEND will come from the PCF50606 PMIC driver since the "End" key
    // doubles up as the Power key and is hardwired to the PMIC chip.
}; 



/*++

ScanCodeToVKeyEx:

Map a scan code to virtual key(s).

--*/
UINT32
ScanCodeToVKeyEx(
    UINT32          ScanCode,
    KEY_STATE_FLAGS KeyStateFlags,
    UINT32          VKeyBuf[16],
    UINT32          ScanCodeBuf[16],
    KEY_STATE_FLAGS KeyStateFlagsBuf[16]
    )
{
    int cVKeys = 0;

    if ( ScanCode <= ScanCodeTableLast )
    {
        VKeyBuf[cVKeys] = ScanCodeToVKeyTable[ScanCode];
        if ( VKeyBuf[cVKeys] )
        {
            ScanCodeBuf[cVKeys] = ScanCode;
            KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
            cVKeys++;
        }
    }

    return cVKeys;

}



static const UINT16  VKeyToScanCodeTable[COUNT_VKEYS] =
    {
/* 00 */                0,
/* 01 VK_LBUTTON    */  0,
/* 02 VK_RBUTTON    */  0,
/* 03 VK_CANCEL     */  0,
/* 04 VK_MBUTTON    */  0,
/* 05 */                0,
/* 06 */                0,
/* 07 */                0,
/* 08 VK_BACK       */  0,
/* 09 VK_TAB        */  0,
/* 0A */                0,
/* 0B */                0,
/* 0C VK_CLEAR      */  0,
/* 0D VK_RETURN     */  0x15,   // VK_TACTION
/* 0E */                0,
/* 0F */                0,


/* 10 VK_SHIFT      */  0,
/* 11 VK_CONTROL    */  0,
/* 12 VK_MENU       */  0,
/* 13 VK_PAUSE      */  0,
/* 14 VK_CAPITAL    */  0,
/* 15 */                0,
/* 16 */                0,
/* 17 */                0,
/* 18 */                0,
/* 19 */                0,
/* 1A */                0,
/* 1B VK_ESCAPE     */  0x13,   // VK_TBACK
/* 1C */                0,
/* 1D */                0,
/* 1E */                0,
/* 1F */                0,


/* 20 VK_SPACE      */  0,
/* 21 VK_PRIOR      */  0,
/* 22 VK_NEXT       */  0,
/* 23 VK_END        */  0,
/* 24 VK_HOME       */  0,
/* 25 VK_LEFT       */  0x25,   // VK_TLEFT
/* 26 VK_UP         */  0x05,   // VK_TUP
/* 27 VK_RIGHT      */  0x04,   // VK_TRIGHT
/* 28 VK_DOWN       */  0x14,   // VK_TDOWN
/* 29 VK_SELECT     */  0,
/* 2A VK_PRINT      */  0,
/* 2B VK_EXECUTE    */  0,
/* 2C VK_SNAPSHOT   */  0,
/* 2D VK_INSERT     */  0,
/* 2E VK_DELETE     */  0,
/* 2F VK_HELP       */  0,




/* 30 */                0x32,   // '0'
/* 31 */                0x44,   // '1'
/* 32 */                0x24,   // '2'
/* 33 */                0x11,   // '3'
/* 34 */                0x43,   // '4'
/* 35 */                0x23,   // '5'
/* 36 */                0x22,   // '6'
/* 37 */                0x42,   // '7'
/* 38 */                0x33,   // '8'
/* 39 */                0x21,   // '9'
/* 3A */                0,
/* 3B */                0,
/* 3C */                0,
/* 3D */                0,
/* 3E */                0,
/* 3F */                0,


/* 40 */                0,
/* 41 */                0,
/* 42 */                0,
/* 43 */                0,
/* 44 */                0,
/* 45 */                0,
/* 46 */                0,
/* 47 */                0,
/* 48 */                0,
/* 49 */                0,
/* 4A */                0,
/* 4B */                0,
/* 4C */                0,
/* 4D */                0,
/* 4E */                0,
/* 4F */                0,


/* 50 */                0,
/* 51 */                0,
/* 52 */                0,
/* 53 */                0,
/* 54 */                0,
/* 55 */                0,
/* 56 */                0,
/* 57 */                0,
/* 58 */                0,
/* 59 */                0,
/* 5A */                0,
/* 5B VK_LWIN       */  0x34,   // VK_THOME
/* 5C VK_RWIN       */  0,
/* 5D VK_APPS       */  0,
/* 5E */                0,
/* 5F */                0,


/* 60 VK_NUMPAD0    */  0,
/* 61 VK_NUMPAD1    */  0,
/* 62 VK_NUMPAD2    */  0,
/* 63 VK_NUMPAD3    */  0,
/* 64 VK_NUMPAD4    */  0,
/* 65 VK_NUMPAD5    */  0,
/* 66 VK_NUMPAD6    */  0,
/* 67 VK_NUMPAD7    */  0,
/* 68 VK_NUMPAD8    */  0,
/* 69 VK_NUMPAD9    */  0,
/* 6A VK_MULTIPLY   */  0,
/* 6B VK_ADD        */  0,
/* 6C VK_SEPARATOR  */  0,
/* 6D VK_SUBTRACT   */  0,
/* 6E VK_DECIMAL    */  0,
/* 6F VK_DIVIDE     */  0,


/* 70 VK_F1         */  0x35,   // VK_TSOFT1
/* 71 VK_F2         */  0x03,   // VK_TSOFT2
/* 72 VK_F3         */  0x45,   // VK_TTALK
/* 73 VK_F4         */  0x46,   // VK_TEND
/* 74 VK_F5         */  0,
/* 75 VK_F6         */  0x01,   // VK_TVOLUMEUP
/* 76 VK_F7         */  0x02,   // VK_TVOLUMEDOWN
/* 77 VK_F8         */  0x41,   // VK_TSTAR ( '*' )
/* 78 VK_F9         */  0x31,   // VK_TPOUND ( '#' )
/* 79 VK_F10        */  0,
/* 7A VK_F11        */  0,
/* 7B VK_F12        */  0,
/* 7C VK_F13        */  0,
/* 7D VK_F14        */  0,
/* 7E VK_F15        */  0,
/* 7F VK_F16        */  0,


/* 80 VK_F17        */  0,
/* 81 VK_F18        */  0,
/* 82 VK_F19        */  0,
/* 83 VK_F20        */  0,
/* 84 VK_F21        */  0,
/* 85 VK_F22        */  0,
/* 86 VK_F23        */  0,
/* 87 VK_F24        */  0,
/* 88 */                0,
/* 89 */                0,
/* 8A */                0,
/* 8B */                0,
/* 8C */                0,
/* 8D */                0,
/* 8E */                0,
/* 8F */                0,


/* 90 VK_NUMLOCK    */  0,
/* 91 VK_SCROLL     */  0,
/* 92 */                0,
/* 93 */                0,
/* 94 */                0,
/* 95 */                0,
/* 96 */                0,
/* 97 */                0,
/* 98 */                0,
/* 99 */                0,
/* 9A */                0,
/* 9B */                0,
/* 9C */                0,
/* 9D */                0,
/* 9E */                0,
/* 9F */                0,


/* A0 VK_LSHIFT     */  0,
/* A1 VK_RSHIFT     */  0,
/* A2 VK_LCONTROL   */  0,
/* A3 VK_RCONTROL   */  0,
/* A4 VK_LMENU      */  0,
/* A5 VK_RMENU      */  0,
/* A6 */                0,
/* A7 */                0,
/* A8 */                0,
/* A9 */                0,
/* AA */                0,
/* AB */                0,
/* AC */                0,
/* AD */                0,
/* AE */                0,
/* AF */                0,

/* B0 */                0,
/* B1 */                0,
/* B2 */                0,
/* B3 */                0,
/* B4 */                0,
/* B5 */                0,
/* B6 */                0,
/* B7 */                0,
/* B8 */                0,
/* B9 */                0,
/* BA VK_SEMICOLON  */  0,
/* BB VK_EQUAL      */  0,
/* BC VK_COMMA      */  0,
/* BD VK_HYPHEN     */  0,
/* BE VK_PERIOD     */  0,
/* BF VK_SLASH      */  0,


/* C0 VK_BACKQUOTE  */  0,
/* C1 */                0,
/* C2 */                0,
/* C3 */                0,
/* C4 */                0,
/* C5 */                0,
/* C6 */                0,
/* C7 */                0,
/* C8 */                0,
/* C9 */                0,
/* CA */                0,
/* CB */                0,
/* CC */                0,
/* CD */                0,
/* CE */                0,
/* CF */                0,


/* D0 */                0,
/* D1 */                0,
/* D2 */                0,
/* D3 */                0,
/* D4 */                0,
/* D5 */                0,
/* D6 */                0,
/* D7 */                0,
/* D8 */                0,
/* D9 */                0,
/* DA */                0,
/* DB VK_LBRACKET   */  0,
/* DC VK_BACKSLASH  */  0,
/* DD VK_RBRACKET   */  0,
/* DE VK_APOSTROPHE */  0,
/* DF VK_OFF        */  0,


/* E0 */                0,
/* E1 */                0,
/* E2 */                0,
/* E3 */                0,
/* E4 */                0,
/* E5 */                0,
/* E6 */                0,
/* E7 */                0,
/* E8 */                0,
/* E9 */                0,
/* EA */                0,
/* EB */                0,
/* EC */                0,
/* ED */                0,
/* EE */                0,
/* EF */                0,


/* F0 */                0,
/* F1 */                0,
/* F2 */                0,
/* F3 */                0,
/* F4 */                0,
/* F5 */                0,
/* F6 */                0,
/* F7 */                0,
/* F8 */                0,
/* F9 */                0,
/* FA */                0,
/* FB */                0,
/* FC */                0,
/* FD */                0,
/* FE */                0,
/* FF */                0

};



/*++

Maps a virtual key to a scan code.  The LR specific virtual keys are mapped to LR specific scan
codes.

--*/
UINT32
VKeyToScanCode(
    UINT32  vkey
    )
{
    if ( vkey >= COUNT_VKEYS )
    {
        return 0;
    }

    return VKeyToScanCodeTable[vkey];
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -