builtinkeypad_0409.cpp
来自「该BSP是基于PXA270+WINCE的BSP」· C++ 代码 · 共 1,028 行 · 第 1/3 页
CPP
1,028 行
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
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
#ifdef BSP_SMARTPHONE
// 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', // Xllp Scan Code 0x0
0x16,//'G', // Xllp Scan Code 0x1
0x1C,//'M', // Xllp Scan Code 0x2
0x22,//'S', // Xllp Scan Code 0x3
0x80, // Xllp Scan Code 0x4
0x3A,//VK_THOME, // Xllp Scan Code 0x5
0x41,//VK_TUP, // Xllp Scan Code 0x6
0xFF, // Xllp Scan Code 0x7
0xFF, // Xllp Scan Code 0x8
0xFF, // Xllp Scan Code 0x9
0x43,//VK_TVOLUMEUP, // Xllp Scan Code 0xA
0x42,//VK_TVOLUMEDOWN, // Xllp Scan Code 0xB
0x36,//VK_TACTION, // Xllp Scan Code 0xC
0xFF, // Xllp Scan Code 0xD
0xFF, // Xllp Scan Code 0xE
0xFF, // Xllp Scan Code 0xF
0x11,//'B', // Xllp Scan Code 0x10
0x17,//'H', // Xllp Scan Code 0x11
0x1D,//'N', // Xllp Scan Code 0x12
0x23,//'T', // Xllp Scan Code 0x13
0x81, // Xllp Scan Code 0x14
0x32,//VK_CAPITAL, // Xllp Scan Code 0x15
0x38,//VK_TDOWN, // Xllp Scan Code 0x16
0xFF, // Xllp Scan Code 0x17
0xFF, // Xllp Scan Code 0x18
0xFF, // Xllp Scan Code 0x19
0xFF, // Xllp Scan Code 0x1A
0xFF, // Xllp Scan Code 0x1B
0xFF, // Xllp Scan Code 0x1C
0xFF, // Xllp Scan Code 0x1D
0xFF, // Xllp Scan Code 0x1E
0xFF, // Xllp Scan Code 0x1F
0x12,//'C', // Xllp Scan Code 0x20
0x18,//'I', // Xllp Scan Code 0x21
0x1E,//'O', // Xllp Scan Code 0x22
0x24,//'U', // Xllp Scan Code 0x23
0x28,//'Y', // Xllp Scan Code 0x24
0x35,//VK_SPACE, // Xllp Scan Code 0x25
0x3B,//VK_TLEFT, // Xllp Scan Code 0x26
0xFF, // Xllp Scan Code 0x27
0xFF, // Xllp Scan Code 0x28
0xFF, // Xllp Scan Code 0x29
0xFF, // Xllp Scan Code 0x2A
0xFF, // Xllp Scan Code 0x2B
0xFF, // Xllp Scan Code 0x2C
0xFF, // Xllp Scan Code 0x2D
0xFF, // Xllp Scan Code 0x2E
0xFF, // Xllp Scan Code 0x2F
0x13,//'D', // Xllp Scan Code 0x30
0x19,//'J', // Xllp Scan Code 0x31
0x1F,//'P', // Xllp Scan Code 0x32
0x25,//'V', // Xllp Scan Code 0x33
0x29,//'Z', // Xllp Scan Code 0x34
0x35,//VK_SPACE, // Xllp Scan Code 0x35
0x34,//VK_TRIGHT, // Xllp Scan Code 0x36
0xFF, // Xllp Scan Code 0x37
0xFF, // Xllp Scan Code 0x38
0xFF, // Xllp Scan Code 0x39
0xFF, // Xllp Scan Code 0x3A
0xFF, // Xllp Scan Code 0x3B
0xFF, // Xllp Scan Code 0x3C
0xFF, // Xllp Scan Code 0x3D
0xFF, // Xllp Scan Code 0x3E
0xFF, // Xllp Scan Code 0x3F
0x14,//'E', // Xllp Scan Code 0x40
0x1A,//'K', // Xllp Scan Code 0x41
0x20,//'Q', // Xllp Scan Code 0x42
0x26,//'W', // Xllp Scan Code 0x43
0x82, // Xllp Scan Code 0x44
0x33,//VK_CONTROL, // Xllp Scan Code 0x45
0x36,//VK_TACTION, // Xllp Scan Code 0x46
0xFF, // Xllp Scan Code 0x47
0xFF, // Xllp Scan Code 0x48
0xFF, // Xllp Scan Code 0x49
0xFF, // Xllp Scan Code 0x4A
0xFF, // Xllp Scan Code 0x4B
0xFF, // Xllp Scan Code 0x4C
0xFF, // Xllp Scan Code 0x4D
0xFF, // Xllp Scan Code 0x4E
0xFF, // Xllp Scan Code 0x4F
0x15,//'F', // Xllp Scan Code 0x50
0x1B,//'L', // Xllp Scan Code 0x51
0x21,//'R', // Xllp Scan Code 0x52
0x27,//'X', // Xllp Scan Code 0x53
0x83, // Xllp Scan Code 0x54
0x37,//VK_TBACK, // Xllp Scan Code 0x55
0xFF, // Xllp Scan Code 0x56
0xFF, // Xllp Scan Code 0x57
0xFF, // Xllp Scan Code 0x58
0xFF, // Xllp Scan Code 0x59
0xFF, // Xllp Scan Code 0x5A
0xFF, // Xllp Scan Code 0x5B
0xFF, // Xllp Scan Code 0x5C
0xFF, // Xllp Scan Code 0x5D
0xFF, // Xllp Scan Code 0x5E
0xFF, // Xllp Scan Code 0x5F
0x40,//VK_TTALK, // Xllp Scan Code 0x60
0x39,//VK_TEND, // Xllp Scan Code 0x61
0x3D,//VK_TSOFT1, // Xllp Scan Code 0x62
0x3E,//VK_TSOFT2, // Xllp Scan Code 0x63
0x36,//VK_TACTION, // Xllp Scan Code 0x64
0xFF, // Xllp Scan Code 0x65
0xFF, // Xllp Scan Code 0x66
0xFF, // Xllp Scan Code 0x67
0xFF, // Xllp Scan Code 0x68
0xFF, // Xllp Scan Code 0x69
0xFF, // Xllp Scan Code 0x6A
0xFF, // Xllp Scan Code 0x6B
0xFF, // Xllp Scan Code 0x6C
0xFF, // Xllp Scan Code 0x6D
0xFF, // Xllp Scan Code 0x6E
0xFF, // Xllp Scan Code 0x6F
0x01,//VK_T1, // Xllp Scan Code 0x70
0x84, // Xllp Scan Code 0x71
0x02,//VK_T2, // Xllp Scan Code 0x72
0x85, // Xllp Scan Code 0x73
0x03,//VK_T3, // Xllp Scan Code 0x74
0xFF, // Xllp Scan Code 0x75
0xFF, // Xllp Scan Code 0x76
0xFF, // Xllp Scan Code 0x77
0xFF, // Xllp Scan Code 0x78
0xFF, // Xllp Scan Code 0x79
0xFF, // Xllp Scan Code 0x7A
0xFF, // Xllp Scan Code 0x7B
0xFF, // Xllp Scan Code 0x7C
0xFF, // Xllp Scan Code 0x7D
0xFF, // Xllp Scan Code 0x7E
0xFF, // Xllp Scan Code 0x7F
0x04,//VK_T4, // Xllp Scan Code 0x80
0x86, // Xllp Scan Code 0x81
0x05,//VK_T5, // Xllp Scan Code 0x82
0x87, // Xllp Scan Code 0x83
0x06,//VK_T6, // Xllp Scan Code 0x84
0xFF, // Xllp Scan Code 0x85
0xFF, // Xllp Scan Code 0x86
0xFF, // Xllp Scan Code 0x87
0xFF, // Xllp Scan Code 0x88
0xFF, // Xllp Scan Code 0x89
0xFF, // Xllp Scan Code 0x8A
0xFF, // Xllp Scan Code 0x8B
0xFF, // Xllp Scan Code 0x8C
0xFF, // Xllp Scan Code 0x8D
0xFF, // Xllp Scan Code 0x8E
0xFF, // Xllp Scan Code 0x8F
0x07,//VK_T7, // Xllp Scan Code 0x90
0x88, // Xllp Scan Code 0x91
0x08,//VK_T8, // Xllp Scan Code 0x92
0x89, // Xllp Scan Code 0x93
0x09,//VK_T9, // Xllp Scan Code 0x94
0xFF, // Xllp Scan Code 0x95
0xFF, // Xllp Scan Code 0x96
0xFF, // Xllp Scan Code 0x97
0xFF, // Xllp Scan Code 0x98
0xFF, // Xllp Scan Code 0x99
0xFF, // Xllp Scan Code 0x9A
0xFF, // Xllp Scan Code 0x9B
0xFF, // Xllp Scan Code 0x9C
0xFF, // Xllp Scan Code 0x9D
0xFF, // Xllp Scan Code 0x9E
0xFF, // Xllp Scan Code 0x9F
0x3F,//VK_TSTAR, // Xllp Scan Code 0xA0
0x8E,//VK_APOSTROPHE, // Xllp Scan Code 0xA1
0x00,//VK_T0, // Xllp Scan Code 0xA2
0x8A, // Xllp Scan Code 0xA3
0x3C,//VK_TPOUND, // Xllp Scan Code 0xA4
0xFF, // Xllp Scan Code 0xA5
0xFF, // Xllp Scan Code 0xA6
0xFF, // Xllp Scan Code 0xA7
0xFF, // Xllp Scan Code 0xA8
0xFF, // Xllp Scan Code 0xA9
0xFF, // Xllp Scan Code 0xAA
0xFF, // Xllp Scan Code 0xAB
0xFF, // Xllp Scan Code 0xAC
0xFF, // Xllp Scan Code 0xAD
0xFF, // Xllp Scan Code 0xAE
0xFF, // Xllp Scan Code 0xAF
0x8B, // Xllp Scan Code 0xB0
0x8C, // Xllp Scan Code 0xB1
0x31,//VK_BACK, // Xllp Scan Code 0xB2
0x8D, // Xllp Scan Code 0xB3
0x36,//VK_TACTION, // Xllp Scan Code 0xB4
0xFF, // Xllp Scan Code 0xB5
0xFF, // Xllp Scan Code 0xB6
0xFF, // Xllp Scan Code 0xB7
0xFF, // Xllp Scan Code 0xB8
0xFF, // Xllp Scan Code 0xB9
0xFF, // Xllp Scan Code 0xBA
0xFF, // Xllp Scan Code 0xBB
0xFF, // Xllp Scan Code 0xBC
0xFF, // Xllp Scan Code 0xBD
0xFF, // Xllp Scan Code 0xBE
0xFF, // Xllp 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] =
{
VK_T0 , // 0x00
VK_T1 , // 0x01
VK_T2 , // 0x02
VK_T3 , // 0x03
VK_T4 , // 0x04
VK_T5 , // 0x05
VK_T6 , // 0x06
VK_T7 , // 0x07
VK_T8 , // 0x08
VK_T9 , // 0x09
0 , // 0x0A
0 , // 0x0B
0 , // 0x0C
0 , // 0x0D
0 , // 0x0E
0 , // 0x0F
'A' , // 0x10
'B' , // 0x11
'C' , // 0x12
'D' , // 0x13
'E' , // 0x14
'F' , // 0x15
'G' , // 0x16
'H' , // 0x17
'I' , // 0x18
'J' , // 0x19
'K' , // 0x1A
'L' , // 0x1B
'M' , // 0x1C
'N' , // 0x1D
'O' , // 0x1E
'P' , // 0x1F
'Q' , // 0x20
'R' , // 0x21
'S' , // 0x22
'T' , // 0x23
'U' , // 0x24
'V' , // 0x25
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?