s3c6410_layout.cpp

来自「SAMSUNG S3C6410 CPU BSP for winmobile6」· C++ 代码 · 共 867 行 · 第 1/2 页

CPP
867
字号
//
// 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>
#include	<laymgr.h>
#include	<devicelayout.h>

#include	"winuserm.h"

#include	"KeyMatrix.hpp"

#define	VK_MATRIX_FN	0xC1

#if		(CPU_NAME == S3C6410)
#if (MATRIX_LAYOUT == LAYOUT0)
#define	ScanCodeTableFirst	0x00
#define	ScanCodeTableLast	0x3F

UINT8 ScanCodeToVKeyTable[] =
{
	VK_ESCAPE,			// scan code 0, 	ESC
	'A', 				// scan code 1, 	
	'B', 				// scan code 2,
	'C',				// scan code 3
	'D',				// scan code 4
	VK_T1,				// scan code 5
	VK_T2,				// scan code 6
	VK_T3,				// scan code 7

	VK_RETURN,			// scan code 8,		Enter
	'E',				// scan code 9
	'F',				// scan code 10
	'G',				// scan code 11
	'H',				// scan code 12
	VK_T4,				// scan code 13
	VK_T5,				// scan code 14
	VK_T6,				// scan code 15

	VK_TAB,				// scan code 16,	TAB
	'I',				// scan code 17,
	'J',				// scan code 18,
	'K',				// scan code 19,
	'L',				// scan code 20,
	VK_T7, 				// scan code 21,
	VK_T8,				// scan code 22,
	VK_T9,				// scan code 23,

	VK_SHIFT,			// scan code 24,	Shift 
	'M',				// scan code 25,
	'N',				// scan code 26,
	'O',				// scan code 27,
	'P',				// scan code 28,
	VK_MULTIPLY,		// scan code 29,
	VK_T0,				// scan code 30,	
	VK_PERIOD,			// scan code 31,

	VK_CONTROL,			// scan code 32,	CTRL
	'Q', 				// scan code 33,	
	'R',				// scan code 34,	
	'S',				// scan code 35,	
	'T',				// scan code 36,	
	VK_HYPHEN,			// scan code 37,
	VK_APOSTROPHE,		// scan code 38,	
	VK_COMMA,			// scan code 39,	

	VK_MENU,			// scan code 40,	ALT
	'U',				// scan code 41,	
	'V',				// scan code 42,
	'W',				// scan code 43,
	'X',				// scan code 44,
	VK_SLASH,			// scan code 45, 	
	VK_SEMICOLON,		// scan code 46,		
	VK_CAPITAL,			// scan code 47,		

	VK_HANGUL,			// scan code 48,	Korean/English
	'Y',				// scan code 49,	
	'Z',				// scan code 50,
	VK_SUBTRACT,		// scan code 51,	-
	VK_EQUAL,			// scan code 52,	=
	VK_LBRACKET,		// scan code 53,	[		
	VK_UP,				// scan code 54,	
	VK_RBRACKET,		// scan code 55, 	]
	
	VK_LWIN,			// scan code 56, 	Windows launcher
	VK_DELETE,			// scan code 57, 	
	VK_SPACE,			// scan code 58,	
	VK_BACK,			// scan code 59,	
	VK_BACKSLASH,		// scan code 60,
	VK_LEFT,			// scan code 61,
	VK_DOWN,			// scan code 62,
	VK_RIGHT,			// scan code 63,
};
#elif (MATRIX_LAYOUT == LAYOUT1)
#define ScanCodeTableFirst  0x00
#define ScanCodeTableLast   0x0F

UINT8 ScanCodeToVKeyTable[] =
{ 
	VK_UP,				// scan code 0
	VK_LWIN,			// scan code 1 
	VK_RETURN, 			// scan code 2
	VK_TSOFT1,			// scan code 3
	VK_DOWN,			// scan code 4
	VK_TSOFT2,			// scan code 5
	VK_RIGHT,			// scan code 6
	VK_ESCAPE,			// scan code 7

	VK_LEFT,			// scan code 8
	VK_RETURN,			// scan code 9
};
#elif (MATRIX_LAYOUT == LAYOUT2)
#define	ScanCodeTableFirst	0x00
#define	ScanCodeTableLast	0x3F

UINT8 ScanCodeToVKeyTable[] =
{
	0,					// scan code 0,
	0, 					// scan code 1,
	VK_T1, 				// scan code 2,
	'Q',				// scan code 3
	'A',				// scan code 4
	VK_CONTROL,			// scan code 5
	VK_TACTION,			// scan code 6
	VK_LEFT,			// scan code 7

	0,					// scan code 8,
	0,					// scan code 9
	VK_T2,				// scan code 10
	'W',				// scan code 11
	'S',				// scan code 12
	'Z',				// scan code 13
	VK_RIGHT,			// scan code 14
	VK_TSOFT2,				// scan code 15

	0,					// scan code 16,
	0,					// scan code 17,
	VK_T3,				// scan code 18,
	'E',				// scan code 19,
	'D',				// scan code 20,
	'X', 				// scan code 21,
	VK_DELETE,			// scan code 22,
	VK_UP,				// scan code 23,

	0,					// scan code 24,
	0,					// scan code 25,
	VK_T4,				// scan code 26,
	'R',				// scan code 27,
	'F',				// scan code 28,
	'C',				// scan code 29,
	VK_CAPITAL,			// scan code 30,	
	VK_TSOFT1,				// scan code 31,

	0,					// scan code 32,
	'O', 				// scan code 33,	
	VK_T5,				// scan code 34,	
	'T',				// scan code 35,	
	'G',				// scan code 36,	
	'V',				// scan code 37,
	VK_DOWN,			// scan code 38,	
	VK_BACK,			// scan code 39,	

	'P',				// scan code 40,
	VK_T0,				// scan code 41,
	VK_T6,				// scan code 42,
	'Y',				// scan code 43,
	'H',				// scan code 44,
	VK_SPACE,			// scan code 45,
	VK_LWIN,			// scan code 46,
	VK_MULTIPLY,		// scan code 47,

	'M',				// scan code 48,
	'L',				// scan code 49,
	VK_T7,				// scan code 50,
	'U',				// scan code 51,
	'J',				// scan code 52,
	'N',				// scan code 53,		
	VK_ESCAPE,			// scan code 54,
	VK_RETURN,			// scan code 55,
	
	VK_SHIFT,			// scan code 56,
	VK_T9,				// scan code 57,
	VK_T8,				// scan code 58,
	'I',				// scan code 59,
	'K',				// scan code 60,
	'B',				// scan code 61,
	VK_TAB,				// scan code 62,
	VK_MENU,			// scan code 63,
};
#endif
#elif	(CPU_NAME == S3C6400)
#if (MATRIX_LAYOUT == LAYOUT0)
#define	ScanCodeTableFirst	0x00
#define	ScanCodeTableLast	0x3F

UINT8 ScanCodeToVKeyTable[] =
{
	VK_ESCAPE,			// scan code 0, 	ESC
	'A', 				// scan code 1, 	
	'B', 				// scan code 2,
	'C',				// scan code 3
	'D',				// scan code 4
	VK_T1,				// scan code 5
	VK_T2,				// scan code 6
	VK_T3,				// scan code 7

	VK_RETURN,			// scan code 8,		Enter
	'E',				// scan code 9
	'F',				// scan code 10
	'G',				// scan code 11
	'H',				// scan code 12
	VK_T4,				// scan code 13
	VK_T5,				// scan code 14
	VK_T6,				// scan code 15

	VK_TAB,				// scan code 16,	TAB
	'I',				// scan code 17,
	'J',				// scan code 18,
	'K',				// scan code 19,
	'L',				// scan code 20,
	VK_T7, 				// scan code 21,
	VK_T8,				// scan code 22,
	VK_T9,				// scan code 23,

	VK_SHIFT,			// scan code 24,	Shift 
	'M',				// scan code 25,
	'N',				// scan code 26,
	'O',				// scan code 27,
	'P',				// scan code 28,
	VK_MULTIPLY,		// scan code 29,
	VK_T0,				// scan code 30,	
	VK_PERIOD,			// scan code 31,

	VK_CONTROL,			// scan code 32,	CTRL
	'Q', 				// scan code 33,	
	'R',				// scan code 34,	
	'S',				// scan code 35,	
	'T',				// scan code 36,	
	VK_HYPHEN,			// scan code 37,
	VK_APOSTROPHE,		// scan code 38,	
	VK_COMMA,			// scan code 39,	

	VK_MENU,			// scan code 40,	ALT
	'U',				// scan code 41,	
	'V',				// scan code 42,
	'W',				// scan code 43,
	'X',				// scan code 44,
	VK_SLASH,			// scan code 45, 	
	VK_SEMICOLON,		// scan code 46,		
	VK_CAPITAL,			// scan code 47,		

	VK_HANGUL,			// scan code 48,	Korean/English
	'Y',				// scan code 49,	
	'Z',				// scan code 50,
	VK_SUBTRACT,		// scan code 51,	-
	VK_EQUAL,			// scan code 52,	=
	VK_LBRACKET,		// scan code 53,	[		
	VK_UP,				// scan code 54,	
	VK_RBRACKET,		// scan code 55, 	]
	
	VK_LWIN,			// scan code 56, 	Windows launcher
	VK_DELETE,			// scan code 57, 	
	VK_SPACE,			// scan code 58,	
	VK_BACK,			// scan code 59,	
	VK_BACKSLASH,		// scan code 60,
	VK_LEFT,			// scan code 61,
	VK_DOWN,			// scan code 62,
	VK_RIGHT,			// scan code 63,
};
#else
#define ScanCodeTableFirst  0x00
#define ScanCodeTableLast   0x0F
UINT8 ScanCodeToVKeyTable[] =
{ 
	VK_ESCAPE,			// scan code 0
	VK_RETURN,			// scan code 1 
	VK_TAB, 			// scan code 2
	VK_CAPITAL,			// scan code 3
	VK_PRIOR,			// scan code 4
	VK_CONTROL,			// scan code 5
	VK_UP,				// scan code 6
	VK_MENU,			// scan code 7

	VK_LWIN,			// scan code 8
	VK_SPACE,			// scan code 9
	VK_SHIFT,				// scan code 10
	VK_BACK,			// scan code 11
	VK_NEXT,			// scan code 12
	VK_LEFT,			// scan code 13
	VK_DOWN,			// scan code 14
	VK_RIGHT,			// scan code 15
};
#endif
#endif

static ScanCodeToVKeyData scvkEngUS = 
{
	0,
	ScanCodeTableFirst,
	ScanCodeTableLast,
	ScanCodeToVKeyTable
};

#if		(CPU_NAME == S3C6410)
#if (MATRIX_LAYOUT == LAYOUT0)
#define ScanCodeTableExtFirst  0xE000
#define ScanCodeTableExtLast   0xE03F

UINT8 ScanCodeToVKeyExtTable[] =
{
   	0,
	VK_T1,
   	VK_T2,
	VK_T3,
	0,
	0,
	0,
	0,

	0,
	VK_T4,
	VK_T5,
	VK_T6,
	0,
	0,
	0,
	0,

	0,
	VK_T7,
	VK_T8,
	VK_T9,
	0,
	0,
	0,
	0,

	0,
	VK_TTALK,
	0,
	0,
	0,
	0,
	0,
	0,

	0,
	VK_TEND,
	0,
	0,
	0,
	0,
	0,
	0,

	0,
	VK_TVOLUMEUP,
	VK_TVOLUMEDOWN,
	0,
	0,
	0,
	0,
	0,

	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,

	0,
	0,
	0,
	0,
	0,
	0,
	0,
	0,
};
#elif (MATRIX_LAYOUT == LAYOUT1)
#define ScanCodeTableExtFirst  0xE000
#define ScanCodeTableExtLast   0xE00F

UINT8 ScanCodeToVKeyExtTable[] =
{ 
   	0,
	VK_T1,
   	VK_T2,
	VK_T3,
	0,
	0,
	0,
	0,

	0,
	VK_T4,
	VK_T5,
	VK_T6,
	0,
	0,
	VK_TVOLUMEUP,
	VK_TVOLUMEDOWN,
};

#elif (MATRIX_LAYOUT == LAYOUT2)
#define ScanCodeTableExtFirst  0xE000

⌨️ 快捷键说明

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