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

📄 scvks3c2400msengus1.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_MENU, // Scan Code 0x1
	0, // Scan Code 0x2
	0, // Scan Code 0x3
	0, // Scan Code 0x4
	0, // Scan Code 0x5
	0, // Scan Code 0x6
	0, // Scan Code 0x7
	0, // Scan Code 0x8
	VK_BACKQUOTE, // Scan Code 0x9 
	VK_BACKSLASH, // Scan Code 0xA
	VK_TAB, // Scan Code 0xB
	'Z', // Scan Code 0xC
	'A', // Scan Code 0xD
	'X', // Scan Code 0xE
	0, // Scan Code 0xF
	0, // Scan Code 0x10
	0, // Scan Code 0x11
	VK_SHIFT, // Scan Code 0x12
	0, // Scan Code 0x13
	0, // Scan Code 0x14
	0, // Scan Code 0x15
	0, // Scan Code 0x16
	0, // Scan Code 0x17
	0, // Scan Code 0x18
	VK_CONTROL, // 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
	0, // Scan Code 0x21, Fn
	0, // Scan Code 0x22
	0, // Scan Code 0x23
	0, // Scan Code 0x24
	0, // Scan Code 0x25
	0, // Scan Code 0x26
	0, // Scan Code 0x27
	0, // Scan Code 0x28
	VK_ESCAPE, // Scan Code 0x29
	VK_DELETE, // Scan Code 0x2A
	'Q', // Scan Code 0x2B
	VK_CAPITAL, // Scan Code 0x2C
	'S', // Scan Code 0x2D
	'C', // Scan Code 0x2E
	'3', // Scan Code 0x2F
	0, // Scan Code 0x30
	'1', // Scan Code 0x31
	0, // Scan Code 0x32
	'W', // Scan Code 0x33
	0, // Scan Code 0x34
	'D', // Scan Code 0x35
	'V', // Scan Code 0x36
	'4', // Scan Code 0x37
	0, // Scan Code 0x38
	'2', // Scan Code 0x39
	'T', // Scan Code 0x3A
	'E', // Scan Code 0x3B
	0, // Scan Code 0x3C
	'F', // Scan Code 0x3D
	'B', // Scan Code 0x3E
	'5', // Scan Code 0x3F
	0, // Scan Code 0x40
	'9', // Scan Code 0x41
	'Y', // Scan Code 0x42
	'R', // Scan Code 0x43
	'K', // Scan Code 0x44
	'G', // Scan Code 0x45
	'N', // Scan Code 0x46
	'6', // Scan Code 0x47
	0, // Scan Code 0x48
	'0', // Scan Code 0x49
	'U', // Scan Code 0x4A
	'O', // Scan Code 0x4B
	'L', // Scan Code 0x4C
	'H', // Scan Code 0x4D
	'M', // Scan Code 0x4E
	'7', // Scan Code 0x4F
	0, // Scan Code 0x50
	VK_HYPHEN, // Scan Code 0x51
	'I', // Scan Code 0x52
	'P', // Scan Code 0x53
	VK_SEMICOLON, // Scan Code 0x54
	'J', // Scan Code 0x55
	VK_COMMA, // Scan Code 0x56
	'8', // Scan Code 0x57
	0, // Scan Code 0x58
	VK_EQUAL, // Scan Code 0x59
	VK_RETURN, // Scan Code 0x5A
	VK_LBRACKET, // Scan Code 0x5B
	VK_APOSTROPHE, // Scan Code 0x5C
	VK_SLASH, // Scan Code 0x5D
	VK_PERIOD, // Scan Code 0x5E
	VK_RWIN, // Scan Code 0x5F, Prog
	0, // Scan Code 0x60
	0, // Scan Code 0x61
	VK_SHIFT, // Scan Code 0x62
	0, // Scan Code 0x63
	0, // Scan Code 0x64
	0, // Scan Code 0x65
	0, // Scan Code 0x66
	0, // Scan Code 0x67
	0, // Scan Code 0x68
	VK_BACK, // Scan Code 0x69
	VK_DOWN, // Scan Code 0x6A
	VK_RBRACKET, // Scan Code 0x6B
	VK_UP, // Scan Code 0x6C
	VK_LEFT, // Scan Code 0x6D
	VK_SPACE, // Scan Code 0x6E
	VK_RIGHT, // 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
	0, // 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 )
		{
		VKeyBuf[cVKeys] = VK_PAUSE;
		ScanCodeBuf[cVKeys] = 0x45;
		KeyStateFlagsBuf[cVKeys] = KeyStateFlags;
		cVKeys++;
		}
	else if ( ( ScanCode >= E0ScanCodeTableFirst ) &&
			  ( ScanCode <= E0ScanCodeTableLast ) )
		{

⌨️ 快捷键说明

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