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

📄 scvkxtmsengus1.cpp

📁 三星2410的BSP开发包
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//
// 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 sctovk.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>

#define PROFILE 1
#ifdef PROFILE
#include <profiler.h>
#endif

#define	ScanCodeTableLast	0x7f
const UINT8  ScanCodeToVKeyTable[ScanCodeTableLast+1] =
{
	0,				// Scan Code 0x0
	VK_ESCAPE,		// Scan Code 0x1
	'1',			// Scan Code 0x2
	'2',			// Scan Code 0x3
	'3',			// Scan Code 0x4
	'4',			// Scan Code 0x5
	'5',			// Scan Code 0x6
	'6',			// Scan Code 0x7
	'7',			// Scan Code 0x8
	'8',			// Scan Code 0x9
	'9',			// Scan Code 0xA
	'0',			// Scan Code 0xB
	VK_HYPHEN,		// Scan Code 0xC
	VK_EQUAL,		// Scan Code 0xD
	VK_BACK,		// Scan Code 0xE
	VK_TAB,			// Scan Code 0xF


	'Q',			// Scan Code 0x10
	'W',			// Scan Code 0x11
	'E',			// Scan Code 0x12
	'R',			// Scan Code 0x13
	'T',			// Scan Code 0x14
	'Y',			// Scan Code 0x15
	'U',			// Scan Code 0x16
	'I',			// Scan Code 0x17
	'O',			// Scan Code 0x18
	'P',			// Scan Code 0x19
	VK_LBRACKET,	// Scan Code 0x1A
	VK_RBRACKET,	// Scan Code 0x1B
	VK_RETURN,		// Scan Code 0x1C
	VK_LCONTROL,	// Scan Code 0x1D
	'A',			// Scan Code 0x1E
	'S',			// Scan Code 0x1F


	'D',			// Scan Code 0x20
	'F',			// Scan Code 0x21
	'G',			// Scan Code 0x22
	'H',			// Scan Code 0x23
	'J',			// Scan Code 0x24
	'K',			// Scan Code 0x25
	'L',			// Scan Code 0x26
	VK_SEMICOLON,	// Scan Code 0x27
	VK_APOSTROPHE,	// Scan Code 0x28
	VK_BACKQUOTE,	// Scan Code 0x29
	VK_LSHIFT,		// Scan Code 0x2A
	VK_BACKSLASH,	// Scan Code 0x2B
	'Z',			// Scan Code 0x2C
	'X',			// Scan Code 0x2D
	'C',			// Scan Code 0x2E
	'V',			// Scan Code 0x2F


	'B',			// Scan Code 0x30
	'N',			// Scan Code 0x31
	'M',			// Scan Code 0x32
	VK_COMMA,		// Scan Code 0x33
	VK_PERIOD,		// Scan Code 0x34
	VK_SLASH,		// Scan Code 0x35
	VK_RSHIFT,		// Scan Code 0x36
	VK_MULTIPLY,	// Scan Code 0x37
	VK_LMENU,		// Scan Code 0x38
	VK_SPACE,		// Scan Code 0x39
	VK_CAPITAL,		// Scan Code 0x3A
	VK_F1,			// Scan Code 0x3B
	VK_F2,			// Scan Code 0x3C
	VK_F3,			// Scan Code 0x3D
	VK_F4,			// Scan Code 0x3E
	VK_F5,			// Scan Code 0x3F


	VK_F6,			// Scan Code 0x40
	VK_F7,			// Scan Code 0x41
	VK_F8,			// Scan Code 0x42
	VK_F9,			// Scan Code 0x43										
	VK_F10,			// Scan Code 0x44
	VK_NUMLOCK,		// Scan Code 0x45
	VK_SCROLL,		// Scan Code 0x46
	VK_NUMPAD7,		// Scan Code 0x47
	VK_NUMPAD8,		// Scan Code 0x48
	VK_NUMPAD9,		// Scan Code 0x49
 	VK_SUBTRACT,	// Scan Code 0x4A
	VK_NUMPAD4,		// Scan Code 0x4B
	VK_NUMPAD5,		// Scan Code 0x4C
	VK_NUMPAD6,		// Scan Code 0x4D
	VK_ADD,			// Scan Code 0x4E
	VK_NUMPAD1,		// Scan Code 0x4F


	VK_NUMPAD2,		// Scan Code 0x50
	VK_NUMPAD3,		// Scan Code 0x51
	VK_NUMPAD0,		// Scan Code 0x52
	VK_DECIMAL,		// Scan Code 0x53
	VK_SNAPSHOT,	// Scan Code 0x54
	0,				// Scan Code 0x55
	0,				// Scan Code 0x56
	VK_F11,			// Scan Code 0x57
	VK_F12,			// Scan Code 0x58
	0,				// Scan Code 0x59
	0,				// Scan Code 0x5A
	VK_LWIN,		// Scan Code 0x5B
	VK_RWIN,		// Scan Code 0x5C
	VK_APPS,		// Scan Code 0x5D
	0,				// Scan Code 0x5E
	0,				// Scan Code 0x5F

	0,				// Scan Code 0x60
	0,				// Scan Code 0x61
	0,				// Scan Code 0x62
	VK_HELP,		// Scan Code 0x63
	VK_F13,			// Scan Code 0x64
	VK_F14,			// Scan Code 0x65
	VK_F15,			// Scan Code 0x66
	VK_F16,			// Scan Code 0x67
	VK_F17,			// Scan Code 0x68
	VK_F18,			// Scan Code 0x69
	VK_F19,			// Scan Code 0x6A
	VK_F20,			// Scan Code 0x6B
	VK_F21,			// Scan Code 0x6C
	VK_F22,			// Scan Code 0x6D
	VK_F23,			// Scan Code 0x6E
	0,				// Scan Code 0x6F

	0,				// Scan Code 0x70
	0,				// Scan Code 0x71
	0,				// Scan Code 0x72
	0,				// Scan Code 0x73
	0,				// Scan Code 0x74
	0,				// Scan Code 0x75
	VK_F24,			// Scan Code 0x76
	0,				// Scan Code 0x77
	0,				// Scan Code 0x78
	0,				// Scan Code 0x79
	0,				// Scan Code 0x7A
	0,				// Scan Code 0x7B
	0,				// Scan Code 0x7C
	0,				// Scan Code 0x7D
	0,				// Scan Code 0x7E
	0,				// Scan Code 0x7F



};


#define E0ScanCodeTableFirst	0xe010
#define E0ScanCodeTableLast		0xe06d

const UINT8 ScanCodeE0ToVKeyTable[] =
{
	VK_MEDIA_PREV_TRACK,		// Scan Code 0xE010
	0,				// Scan Code 0xE011
	0,				// Scan Code 0xE012
	0,				// Scan Code 0xE013
	0,				// Scan Code 0xE014
	0,				// Scan Code 0xE015
	0,				// Scan Code 0xE016
	0,				// Scan Code 0xE017
	0,				// Scan Code 0xE018
	VK_MEDIA_NEXT_TRACK,		// Scan Code 0xE019
	0,				// Scan Code 0xE01A
	0,				// Scan Code 0xE01B
	0,				// Scan Code 0xE01C
	0,				// Scan Code 0xE01D
	0,				// Scan Code 0xE01E
	0,				// Scan Code 0xE01F
	VK_VOLUME_MUTE,			// Scan Code 0xE020
	VK_LAUNCH_APP2,			// Scan Code 0xE021
	VK_MEDIA_PLAY_PAUSE,		// Scan Code 0xE022
	0,				// Scan Code 0xE023
	VK_MEDIA_STOP,			// Scan Code 0xE024
	0,				// Scan Code 0xE025
	0,				// Scan Code 0xE026
	0,				// Scan Code 0xE027
	0,				// Scan Code 0xE028
	0,				// Scan Code 0xE029
	0,				// Scan Code 0xE02A
	0,				// Scan Code 0xE02B
	0,				// Scan Code 0xE02C
	0,				// Scan Code 0xE02D
	VK_VOLUME_DOWN,			// Scan Code 0xE02E
	0,				// Scan Code 0xE02F
	VK_VOLUME_UP,			// Scan Code 0xE030
	0,				// Scan Code 0xE031
	VK_BROWSER_HOME,		// Scan Code 0xE032
	0,				// Scan Code 0xE033
	0,				// Scan Code 0xE034
	VK_DIVIDE,		// Scan Code 0xE035
	0,				// Scan Code 0xE036
	VK_SNAPSHOT,	// Scan Code 0xE037	
	VK_RMENU,		// Scan Code 0xE038
	0,				// Scan Code 0xE039	
	0,				// Scan Code 0xE03A	
	0,				// Scan Code 0xE03B	
	0,				// Scan Code 0xE03C	
	0,				// Scan Code 0xE03D	
	0,				// Scan Code 0xE03E
	0,				// Scan Code 0xE03F	
	0,				// Scan Code 0xE040
	0,				// Scan Code 0xE041
	0,				// Scan Code 0xE042
	0,				// Scan Code 0xE043
	0,				// Scan Code 0xE044
	0,				// Scan Code 0xE045
	0,				// Scan Code 0xE046
	VK_HOME,		// Scan Code 0xE047
	VK_UP,			// Scan Code 0xE048
	VK_PRIOR,		// Scan Code 0xE049
	0,				// Scan Code 0xE04A
	VK_LEFT,		// Scan Code 0xE04B
	0,				// Scan Code 0xE04C
	VK_RIGHT,		// Scan Code 0xE04D
	0,				// Scan Code 0xE04E
	VK_END,			// Scan Code 0xE04F
	VK_DOWN,		// Scan Code 0xE050
	VK_NEXT,		// Scan Code 0xE051
	VK_INSERT,		// Scan Code 0xE052
	VK_DELETE,		// Scan Code 0xE053
	0,				// Scan Code 0xE054
	0,				// Scan Code 0xE055
	0,				// Scan Code 0xE056
	0,				// Scan Code 0xE057
	0,				// Scan Code 0xE058
	0,				// Scan Code 0xE059
	0,				// Scan Code 0xE05A
	VK_LWIN,		// Scan Code 0xE05B
	VK_RWIN,		// Scan Code 0xE05C
	VK_APPS,		// Scan Code 0xE05D
	0,				// Scan Code 0xE05E
	VK_SLEEP,			// Scan Code 0xE05F
	0,				// Scan Code 0xE060
	0,				// Scan Code 0xE061
	0,				// Scan Code 0xE062
	0,				// Scan Code 0xE063
	0,				// Scan Code 0xE064
	VK_BROWSER_SEARCH,		// Scan Code 0xE065
	VK_BROWSER_FAVORITES,		// Scan Code 0xE066
	VK_BROWSER_REFRESH,		// Scan Code 0xE067
	VK_BROWSER_STOP,		// Scan Code 0xE068
	VK_BROWSER_FORWARD,		// Scan Code 0xE069
	VK_BROWSER_BACK,		// Scan Code 0xE06A
	VK_LAUNCH_APP1,			// Scan Code 0xE06B
	VK_LAUNCH_MAIL,			// Scan Code 0xE06C
	VK_LAUNCH_MEDIA_SELECT,		// Scan Code 0xE06D
};


/*++

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;

#ifdef PROFILE
	if (ScanCode == /* 77 VK_F8 */ 0x42 && KeyStateFlags == KeyStateDownFlag)
		ProfileStart(200, PROFILE_OBJCALL);
	if (ScanCode == /* 78 VK_F9 */ 0x43 && KeyStateFlags == KeyStateDownFlag)
		ProfileStart(200, PROFILE_BUFFER);
	if (ScanCode == /* 79 VK_F10 */ 0x44 && KeyStateFlags == KeyStateDownFlag)
		ProfileStart(200, PROFILE_KCALL);
	if (ScanCode == /* 7A VK_F11 */ 0x57 && KeyStateFlags == KeyStateDownFlag)
		ProfileStart(1000, 0);
	if (ScanCode == /* 7B VK_F12 */ 0x58 && KeyStateFlags == KeyStateDownFlag)
		ProfileStop();
#endif

	if ( ScanCode == 0x45 )
		{
		//	The desktop shows that this is an extended
		//	scan code.  To make it look the same, we
		//	pass back the scan code with a e0 tacked
		//	on to it.
		VKeyBuf[cVKeys] = VK_NUMLOCK;
		ScanCodeBuf[cVKeys] = 0xe045;
		KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
		cVKeys++;
		}
	else if ( ScanCode == 0xe01c )
		{
		VKeyBuf[cVKeys] = VK_RETURN;
		ScanCodeBuf[cVKeys] = ScanCode;
		KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
		cVKeys++;
		}
	else if ( ScanCode == 0xe01d )
		{
		VKeyBuf[cVKeys] = VK_RCONTROL;
		ScanCodeBuf[cVKeys] = ScanCode;
		KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
		cVKeys++;
		}
#if USE_ALT_GR
	//	Turn this on if you need AltGr on a keyboard.
	else if ( ScanCode == 0xe038 )
		{
		VKeyBuf[cVKeys] = VK_RMENU;
		ScanCodeBuf[cVKeys] = ScanCode;
		KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
		cVKeys++;
		VKeyBuf[cVKeys] = VK_RCONTROL;
		ScanCodeBuf[cVKeys] = ScanCode;
		KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
		cVKeys++;
		}
#endif
	else if ( ScanCode == 0xe11d45 )
		{

⌨️ 快捷键说明

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