📄 builtinkeypad_0409.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.
//
/*++
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 + -