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

📄 builtinkeypad_0409.cpp

📁 Windows CE 6.0 BSP for VOIPAC Board (PXA270) Version 2b.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//
// 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.
//
/*++
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.

@doc    EXTERNAL

@module BuiltInKeypad.cpp |

Sample implementation of the platform dependent scan code to
Virtual Key mapping for a built-in keypad driver.

*/
/******************************************************************************
**
** Copyright 2000-2004 Intel Corporation All Rights Reserved.
**
** Portions of the source code contained or described herein and all documents
** related to such source code (Material) are owned by Intel Corporation
** or its suppliers or licensors and is licensed by Microsoft Corporation for distribution.  
** Title to the Material remains with Intel Corporation or its suppliers and licensors. 
** Use of the Materials is subject to the terms of the Microsoft license agreement which accompanied the Materials.  
** No other license under any patent, copyright, trade secret or other intellectual
** property right is granted to or conferred upon you by disclosure or
** delivery of the Materials, either expressly, by implication, inducement,
** estoppel or otherwise 
** Some portion of the Materials may be copyrighted by Microsoft Corporation.
**
/*****************************************************************************/


#include <windows.h>
#include <keybddr.h>
#include <laymgr.h>
#include <devicelayout.h>
#include <NumPadRmp.h>
#include "winuserm.h"
#include "xllp_defs.h"
#include "xllp_keypad.h"
#include "keypad.hpp"


// This is how we get most of the Mainstone II's non-
//  alphanumeric characters translated properly to
//  Unicode.
typedef struct tagMARKER_VK_TRANSFORM
{
    UINT32       outputVK;
    XLLP_BOOL_T  reportStateAsShifted;
} MARKER_VK_TRANSFORM, *PMARKER_VK_TRANSFORM;

typedef struct tagMARKER_VK_MAP
{
    UINT32                 markerVK;
    MARKER_VK_TRANSFORM    unShiftedInputTransform;
    MARKER_VK_TRANSFORM    shiftedInputTransform;

} MARKER_VK_MAP, *PMARKER_VK_MAP;


// fast tap key pad scan codes
// PPC and CE.NET 5.0
// Need to do this to get non-AT keyboard key mappings through the system.
// Unique keys' scan codes need to be moved outside of range of standard
// keys, so that they can get special handling.
// Unpopulated slots get 0xFF as a flag
// Unique chars get 0x80+ and their own table
// Numbers get 0x00-0x0F; Alphas get 0x10-0x2F; other standards get
// 0x30-0x7F, as far as needed.
const UINT8  XllpScanCodeToWinCeScanCodeTable[XLLP_SCAN_CODE_MAX+1] =
{
    0x10, //  'A',            // Scan Code 0x0        //  Bulverde KeyPad '1'
    0x16, //  'G',            // Scan Code 0x1        //  Bulverde KeyPad '2'
    0x1C, //  'M',            // Scan Code 0x2        //  Bulverde KeyPad '3' 
    0x22, //  'S',            // Scan Code 0x3
    0x80, //  VK_PERIOD,      // Scan Code 0x4        
    0x3A, //  VK_HOME,        // Scan Code 0x5
    0x41, //  VK_UP,          // Scan Code 0x6        
    0xFF, //  0,              // Scan Code 0x7
    0xFF, //  0,              // Scan Code 0x8        
    0xFF, //  0,              // Scan Code 0x9
    0x43, //  VK_UP,          // Scan Code 0xA        //  Bulverde Keypad Rotary key scroll up        
    0x42, //  VK_DOWN,        // Scan Code 0xB        //  Bulverde keypad Rotary key scroll down
    0x36, //  VK_RETURN,      // Scan Code 0xC        //  Bulverde keypad Rotary key Action.
    0xFF, //  0,              // Scan Code 0xD
    0xFF, //  0,              // Scan Code 0xE        
    0xFF, // 0,               // Scan Code 0xF

    0x11, //  'B',            // Scan Code 0x10       //  Bulverde KeyPad '4'     
    0x17, //  'H',            // Scan Code 0x11       //  Bulverde KeyPad '5'
    0x1D, //  'N',            // Scan Code 0x12       //  Bulverde KeyPad '6'     
    0x23, //  'T',            // Scan Code 0x13
    0x81, //  VK_NUMPAD2,     // Scan Code 0x14
    0x32, //  VK_CAPITAL,     // Scan Code 0x15
    0x38, //  VK_DOWN,        // Scan Code 0x16
    0xFF, //  0,              // Scan Code 0x17
    0xFF, //  0,              // Scan Code 0x18
    0xFF, //  0,              // Scan Code 0x19
    0xFF, //  0,              // Scan Code 0x1A
    0xFF, //  0,              // Scan Code 0x1B
    0xFF, //  0,              // Scan Code 0x1C
    0xFF, //  0,              // Scan Code 0x1D
    0xFF, //  0,              // Scan Code 0x1E
    0xFF, //  0,              // Scan Code 0x1F

    0x12, //    'C',            // Scan Code 0x20       //  Bulverde KeyPad '7'     
    0x18, //    'I',            // Scan Code 0x21       //  Bulverde KeyPad '8'
    0x1E, //    'O',            // Scan Code 0x22       //  Bulverde KeyPad '9'
    0x24, //    'U',            // Scan Code 0x23
    0x28, //    'Y',            // Scan Code 0x24       
    0x35, //    VK_SPACE,       // Scan Code 0x25
    0x3B, //    VK_LEFT,        // Scan Code 0x26       
    0xFF, //    0,              // Scan Code 0x27
    0xFF, //    0,              // Scan Code 0x28       
    0xFF, //    0,              // Scan Code 0x29
    0xFF, //    0,              // Scan Code 0x2A       
    0xFF, //    0,              // Scan Code 0x2B
    0xFF, //    0,              // Scan Code 0x2C       
    0xFF, //    0,              // Scan Code 0x2D
    0xFF, //    0,              // Scan Code 0x2E       
    0xFF, //    0,              // Scan Code 0x2F

    0x13, //    'D',            // Scan Code 0x30       // Bulverde KeyPad '*'      
    0x19, //    'J',            // Scan Code 0x31       // Bulverde KeyPad '0'
    0x1F, //    'P',            // Scan Code 0x32       // Bulverde KeyPad '#'
    0x25, //    'V',            // Scan Code 0x33
    0x29, //    'Z',            // Scan Code 0x34
    0x35, //    VK_SPACE,       // Scan Code 0x35
    0x34, //    VK_RIGHT,       // Scan Code 0x36
    0xFF, //    0,              // Scan Code 0x37
    0xFF, //    0,              // Scan Code 0x38
    0xFF, //    0,              // Scan Code 0x39
    0xFF, //    0,              // Scan Code 0x3A
    0xFF, //    0,              // Scan Code 0x3B
    0xFF, //    0,              // Scan Code 0x3C
    0xFF, //    0,              // Scan Code 0x3D
    0xFF, //    0,              // Scan Code 0x3E
    0xFF, //    0,              // Scan Code 0x3F

    0x14, //    'E',            // Scan Code 0x40       // Bvd Keypad '1' remapped to F1            
    0x1A, //    'K',            // Scan Code 0x41       // Bvd Keypad '2' remapped to up arrow          
    0x20, //    'Q',            // Scan Code 0x42       // Bvd Keypad '3' remapped to F2            
    0x26, //    'W',            // Scan Code 0x43                                       
    0x82, //    VK_SLASH,       // Scan Code 0x44       
    0x33, //    VK_CONTROL,     // Scan Code 0x45
    0x36, //    VK_EXECUTE,     // Scan Code 0x46       
    0xFF, //    0,              // Scan Code 0x47
    0xFF, //    0,              // Scan Code 0x48       
    0xFF, //    0,              // Scan Code 0x49
    0xFF, //    0,              // Scan Code 0x4A       // Bvd Keypad SCROLL UP remapped to VOLUME UP           
    0xFF, //    0,              // Scan Code 0x4B       // Bvd Keypad SCROLL DOWN remapped to VOLUME DOWN           
    0xFF, //    0,              // Scan Code 0x4C       // Bvd Keypad ACTION remapped to ACTION for now , change to POWER later         
    0xFF, //    0,              // Scan Code 0x4D
    0xFF, //    0,              // Scan Code 0x4E
    0xFF, //    0,              // Scan Code 0x4F

    0x15, //  'F',            // Scan Code 0x50       // Bvd Keypad '4' remapped to left arrow            
    0x1B, //  'L',            // Scan Code 0x51       // Bvd Keypad '5' remapped to action            
    0x21, //  'R',            // Scan Code 0x52       // Bvd Keypad '6' remapped to right arrow       
    0x27, //  'X',            // Scan Code 0x53
    0x83, //  VK_BACKSLASH,   // Scan Code 0x54
    0x37, //  VK_BACK,        // Scan Code 0x55
    0xFF, //  0,              // Scan Code 0x56
    0xFF, //  0,              // Scan Code 0x57
    0xFF, //  0,              // Scan Code 0x58
    0xFF, //  0,              // Scan Code 0x59
    0xFF, //  0,              // Scan Code 0x5A
    0xFF, //  0,              // Scan Code 0x5B
    0xFF, //  0,              // Scan Code 0x5C
    0xFF, //  0,              // Scan Code 0x5D
    0xFF, //  0,              // Scan Code 0x5E
    0xFF, //  0,              // Scan Code 0x5F

    0x40, //  VK_EXECUTE,     // Scan Code 0x60       // Bvd Keypad '7' remapped to HOME      
    0x39, //  VK_END,         // Scan Code 0x61       // Bvd Keypad '8' remapped to DOWN      
    0x3D, //  VK_LWIN,        // Scan Code 0x62       // Bvd Keypad '9' remapped to BACK      
    0x3E, //  VK_RWIN,        // Scan Code 0x63
    0x36, //  VK_EXECUTE,     // Scan Code 0x64
    0xFF, //  0,              // Scan Code 0x65
    0xFF, //  0,              // Scan Code 0x66
    0xFF, //  0,              // Scan Code 0x67
    0xFF, //  0,              // Scan Code 0x68
    0xFF, //  0,              // Scan Code 0x69
    0xFF, //  0,              // Scan Code 0x6A
    0xFF, //  0,              // Scan Code 0x6B
    0xFF, //  0,              // Scan Code 0x6C
    0xFF, //  0,              // Scan Code 0x6D
    0xFF, //  0,              // Scan Code 0x6E
    0xFF, //  0,              // Scan Code 0x6F

    0x01, //  '1',            // Scan Code 0x70       // Bvd FTKeypad '1' 
    0x84, //  VK_NUMPAD1,
    0x02, //  '2',            // Scan Code 0x72       // Bvd FTKeypad '2'     
    0x85, //  VK_NUMPAD3,         // Scan Code 0x73
    0x03, //  '3',            // Scan Code 0x74       // Bvd FTKeypad '3'
    0xFF, //  0,              // Scan Code 0x75
    0xFF, //  0,              // Scan Code 0x76
    0xFF, //  0,              // Scan Code 0x77
    0xFF, //  0,              // Scan Code 0x78
    0xFF, //  0,              // Scan Code 0x79
    0xFF, //  0,              // Scan Code 0x7A
    0xFF, //  0,              // Scan Code 0x7B
    0xFF, //  0,              // Scan Code 0x7C
    0xFF, //  0,              // Scan Code 0x7D
    0xFF, //  0,              // Scan Code 0x7E
    0xFF, //  0,              // Scan Code 0x7F

    0x04, //  '4',            // Scan Code 0x80       // Bvd Keypad '7' remapped to HOME      
    0x86, //  VK_NUMPAD4,         // Scan Code 0x81       // Bvd Keypad '8' remapped to DOWN      
    0x05, //  '5',            // Scan Code 0x82       // Bvd Keypad '9' remapped to BACK      
    0x87, //  VK_NUMPAD7,         // Scan Code 0x83
    0x06, //  '6',            // Scan Code 0x84
    0xFF, //  0,              // Scan Code 0x85
    0xFF, //  0,              // Scan Code 0x86
    0xFF, //  0,              // Scan Code 0x87
    0xFF, //  0,              // Scan Code 0x88
    0xFF, //  0,              // Scan Code 0x89
    0xFF, //  0,              // Scan Code 0x8A
    0xFF, //  0,              // Scan Code 0x8B
    0xFF, //  0,              // Scan Code 0x8C
    0xFF, //  0,              // Scan Code 0x8D
    0xFF, //  0,              // Scan Code 0x8E
    0xFF, //  0,              // Scan Code 0x8F

    0x07, //  '7',            // Scan Code 0x90       // Bvd Keypad '*' remapped to TALK      
    0x88, //  VK_ADD,         // Scan Code 0x91       // Bvd Keypad '0' remapped to HOME      
    0x08, //  '8',            // Scan Code 0x92       // Bvd Keypad '#' remapped to END       
    0x89, //  VK_SEMICOLON,   // Scan Code 0x93
    0x09, //  '9',            // Scan Code 0x94
    0xFF, //  0,              // Scan Code 0x95
    0xFF, //  0,              // Scan Code 0x96
    0xFF, //  0,              // Scan Code 0x97
    0xFF, //  0,              // Scan Code 0x98
    0xFF, //  0,              // Scan Code 0x99
    0xFF, //  0,              // Scan Code 0x9A
    0xFF, //  0,              // Scan Code 0x9B
    0xFF, //  0,              // Scan Code 0x9C
    0xFF, //  0,              // Scan Code 0x9D
    0xFF, //  0,              // Scan Code 0x9E
    0xFF, //  0,              // Scan Code 0x9F

    0x3F, //  VK_MULTIPLY,    // Scan Code 0xA0       // Bvd Keypad '7' remapped to HOME      
    0x8E, //  VK_APOSTROPHE,  // Scan Code 0xA1       // Bvd Keypad '8' remapped to DOWN      
    0x00, //  VK_NUMPAD0,     // Scan Code 0xA2       // Bvd Keypad '9' remapped to BACK      
    0x8A, //  VK_COMMA,       // Scan Code 0xA3
    0x8F, //  VK_NUMPAD6,     // Scan Code 0xA4
    0xFF, //  0,              // Scan Code 0xA5
    0xFF, //  0,              // Scan Code 0xA6
    0xFF, //  0,              // Scan Code 0xA7
    0xFF, //  0,              // Scan Code 0xA8
    0xFF, //  0,              // Scan Code 0xA9
    0xFF, //  0,              // Scan Code 0xAA
    0xFF, //  0,              // Scan Code 0xAB
    0xFF, //  0,              // Scan Code 0xAC
    0xFF, //  0,              // Scan Code 0xAD
    0xFF, //  0,              // Scan Code 0xAE
    0xFF, //  0,              // Scan Code 0xAF

    0x8B, //  VK_TAB,         // Scan Code 0xB0       // Bvd Keypad '*' remapped to TALK      
    0x8C, //  VK_LBRACKET,    // Scan Code 0xB1       // Bvd Keypad '0' remapped to HOME      
    0x31, //  VK_BACK,        // Scan Code 0xB2       // Bvd Keypad '#' remapped to END       
    0x8D, //  VK_RBRACKET,    // Scan Code 0xB3
    0x36, //  VK_RETURN,      // Scan Code 0xB4
    0xFF, //  0,              // Scan Code 0xB5
    0xFF, //  0,              // Scan Code 0xB6
    0xFF, //  0,              // Scan Code 0xB7
    0xFF, //  0,              // Scan Code 0xB8
    0xFF, //  0,              // Scan Code 0xB9
    0xFF, //  0,              // Scan Code 0xBA
    0xFF, //  0,              // Scan Code 0xBB
    0xFF, //  0,              // Scan Code 0xBC
    0xFF, //  0,              // Scan Code 0xBD
    0xFF, //  0,              // Scan Code 0xBE
    0xFF, //  0,              // Scan Code 0xBF
};  //XllpScanCodeToWinCeScanCodeTable[]


#define MainScanCodeTableFirst      0x00
#define MainScanCodeTableLast       0x4F
#define MAIN_SCAN_CODE_TABLE_SIZE    ((MainScanCodeTableLast-MainScanCodeTableFirst)+1)

// No need to pad this table with 0x80 empty entries in the beginning.
// KeyPadPdd_GetEventEx2() knows about this and has adjusted the marker VKs ORred with
// the UNIQUE_KEY_SC_PREPEND_MSK
#define UNIQUE_KEY_SCAN_CODE_TABLE_SIZE  ((UNIQUE_KEY_SC_RAW_MAX-UNIQUE_KEY_SC_RAW_MIN)+1)
#define UniqueKeyScanCodeTableFirst  (UNIQUE_KEY_SC_PREPEND_MSK)
#define UniqueKeyScanCodeTableLast   (UNIQUE_KEY_SC_PREPEND_MSK|UNIQUE_KEY_SCAN_CODE_TABLE_SIZE)

const UINT8  MainScanCodeToVKeyTable[MAIN_SCAN_CODE_TABLE_SIZE] = 
{
    '0'          , //     0x00
    '1'          , //     0x01
    '2'          , //     0x02
    '3'          , //     0x03
    '4'          , //     0x04
    '5'          , //     0x05
    '6'          , //     0x06
    '7'          , //     0x07
    '8'          , //     0x08
    '9'          , //     0x09
    0              , //     0x0A
    0              , //     0x0B
    0              , //     0x0C

⌨️ 快捷键说明

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