spiegel-keyman/windows/src/engine/keyman32/VKScanCodes.cpp
Marc Durdin 738e1946a6 [Windows] Debug logging and proof of concept tests for keyboarding support within metro-style apps
[Windows] More tidyup and robustness for metro app support - debug cleanup and serialization of input (not quite finished)

[windows] Refactor serialized input code when used with key event thread model

[windows] Add consistent precompiled headers for other projects

[windows] Merge console window test into metro support

[Windows] Tidy up work and identify additional TODOs for metro-style app support

[Windows] Ensure error case falls through to default hook processing for console windows

[Windows] Refactor shared memory into memory mapped file so we can cross 32-64 bit boundary

[Windows] Tweaks to C++ security calls and parameters

[Windows] Start refactor of SerialKeyEvent* classes

[Windows] Rename to SerialKeyEventServer (refactoring)

[Windows] Complete refactoring of SerialKeyEventClient class

[Windows] Further encapsulation and cleanup with 'interfaces' to reduce header pollution

[Windows] Complete serialization fix with move of modifier state management from client thread to server thread to guarantee consistency

[Windows] Replace atom-based keyboard switching with memory mapped file indexed to avoid security constraints

[Windows] Fixup Left Alt+Shift interaction with serializer

[Windows] Use Windows 8.1 SDK for test
2018-10-18 20:00:49 +11:00

566 lines
16 KiB
C++

/*
Name: VKScanCodes
Copyright: Copyright (C) SIL International.
Documentation:
Description:
Create Date: 11 Dec 2009
Modified Date: 17 Dec 2013
Authors: mcdurdin
Related Files:
Dependencies:
Bugs:
Todo:
Notes:
History: 11 Dec 2009 - mcdurdin - I934 - x64 - Initial version
17 Dec 2013 - mcdurdin - I4006 - V9.0 - Remove old aiDefault code
*/
#include "pch.h" // I4006
UINT USVirtualKeyToScanCode[256] =
{
0x00, // L"K_?00", // &H0
0x00, // L"K_LBUTTON", // &H1
0x00, // L"K_RBUTTON", // &H2
0x46, // L"K_CANCE0x00, // L", // &H3
0x00, // L"K_MBUTTON", // &H4
0x00, // L"K_?05", // &H5
0x00, // L"K_?06", // &H6
0x00, // L"K_?07", // &H7
0x0E, // L"K_BKSP", // &H8
0x0F, // L"K_TAB", // &H9
0x00, // L"K_?0A", // &HA
0x00, // L"K_?0B", // &HB
0x4C, // L"K_KP5", // &HC
0x1C, // L"K_ENTER", // &HD
0x00, // L"K_?0E", // &HE
0x00, // L"K_?0F", // &HF
0x2A, // L"K_SHIFT", // &H10
0x1D, // L"K_CONTRO0x00, // L", // &H11
0x38, // L"K_ALT", // &H12
0x00, // L"K_PAUSE", // &H13
0x3A, // L"K_CAPS", // &H14
0x00, // L"K_KANJI?15", // &H15
0x00, // L"K_KANJI?16", // &H16
0x00, // L"K_KANJI?17", // &H17
0x00, // L"K_KANJI?18", // &H18
0x00, // L"K_KANJI?19", // &H19
0x00, // L"K_?1A", // &H1A
0x01, // L"K_ESC", // &H1B
0x00, // L"K_KANJI?1C", // &H1C
0x00, // L"K_KANJI?1D", // &H1D
0x00, // L"K_KANJI?1E", // &H1E
0x00, // L"K_KANJI?1F", // &H1F
0x39, // L"K_SPACE", // &H20
0x49, // L"K_PGUP", // &H21
0x51, // L"K_PGDN", // &H22
0x4F, // L"K_END", // &H23
0x47, // L"K_HOME", // &H24
0x4B, // L"K_LEFT", // &H25
0x48, // L"K_UP", // &H26
0x4D, // L"K_RIGHT", // &H27
0x50, // L"K_DOWN", // &H28
0x00, // L"K_SEL", // &H29
0x00, // L"K_PRINT", // &H2A
0x00, // L"K_EXEC", // &H2B
0x54, // L"K_PRTSCN", // &H2C
0x52, // L"K_INS", // &H2D
0x53, // L"K_DEL", // &H2E
0x63, // L"K_HELP", // &H2F
0x0B, // L"K_0", // &H30
0x02, // L"K_1", // &H31
0x03, // L"K_2", // &H32
0x04, // L"K_3", // &H33
0x05, // L"K_4", // &H34
0x06, // L"K_5", // &H35
0x07, // L"K_6", // &H36
0x08, // L"K_7", // &H37
0x09, // L"K_8", // &H38
0x0A, // L"K_9", // &H39
0x00, // L"K_?3A", // &H3A
0x00, // L"K_?3B", // &H3B
0x00, // L"K_?3C", // &H3C
0x00, // L"K_?3D", // &H3D
0x00, // L"K_?3E", // &H3E
0x00, // L"K_?3F", // &H3F
0x00, // L"K_?40", // &H40
0x1E, // L"K_A", // &H41
0x30, // L"K_B", // &H42
0x2E, // L"K_C", // &H43
0x20, // L"K_D", // &H44
0x12, // L"K_E", // &H45
0x21, // L"K_F", // &H46
0x22, // L"K_G", // &H47
0x23, // L"K_H", // &H48
0x17, // L"K_I", // &H49
0x24, // L"K_J", // &H4A
0x25, // L"K_K", // &H4B
0x26, // L"K_L", // &H4C
0x32, // L"K_M", // &H4D
0x31, // L"K_N", // &H4E
0x18, // L"K_O", // &H4F
0x19, // L"K_P", // &H50
0x10, // L"K_Q", // &H51
0x13, // L"K_R", // &H52
0x1F, // L"K_S", // &H53
0x14, // L"K_T", // &H54
0x16, // L"K_U", // &H55
0x2F, // L"K_V", // &H56
0x11, // L"K_W", // &H57
0x2D, // L"K_X", // &H58
0x15, // L"K_Y", // &H59
0x2C, // L"K_Z", // &H5A
0x5B, // L"K_?5B", // &H5B
0x5C, // L"K_?5C", // &H5C
0x5D, // L"K_?5D", // &H5D
0x00, // L"K_?5E", // &H5E
0x5F, // L"K_?5F", // &H5F
0x52, // L"K_NP0", // &H60
0x4F, // L"K_NP1", // &H61
0x50, // L"K_NP2", // &H62
0x51, // L"K_NP3", // &H63
0x4B, // L"K_NP4", // &H64
0x4C, // L"K_NP5", // &H65
0x4D, // L"K_NP6", // &H66
0x47, // L"K_NP7", // &H67
0x48, // L"K_NP8", // &H68
0x49, // L"K_NP9", // &H69
0x37, // L"K_NPSTAR", // &H6A
0x4E, // L"K_NPPLUS", // &H6B
0x7E, // L"K_SEPARATOR", // &H6C // MCD 01-11-02: Brazilian Fix, 00 -> 7E
0x4A, // L"K_NPMINUS", // &H6D
0x53, // L"K_NPDOT", // &H6E
0x135, // L"K_NPSLASH", // &H6F
0x3B, // L"K_F1", // &H70
0x3C, // L"K_F2", // &H71
0x3D, // L"K_F3", // &H72
0x3E, // L"K_F4", // &H73
0x3F, // L"K_F5", // &H74
0x40, // L"K_F6", // &H75
0x41, // L"K_F7", // &H76
0x42, // L"K_F8", // &H77
0x43, // L"K_F9", // &H78
0x44, // L"K_F10", // &H79
0x57, // L"K_F11", // &H7A
0x58, // L"K_F12", // &H7B
0x64, // L"K_F13", // &H7C
0x65, // L"K_F14", // &H7D
0x66, // L"K_F15", // &H7E
0x67, // L"K_F16", // &H7F
0x68, // L"K_F17", // &H80
0x69, // L"K_F18", // &H81
0x6A, // L"K_F19", // &H82
0x6B, // L"K_F20", // &H83
0x6C, // L"K_F21", // &H84
0x6D, // L"K_F22", // &H85
0x6E, // L"K_F23", // &H86
0x76, // L"K_F24", // &H87
0x00, // L"K_?88", // &H88
0x00, // L"K_?89", // &H89
0x00, // L"K_?8A", // &H8A
0x00, // L"K_?8B", // &H8B
0x00, // L"K_?8C", // &H8C
0x00, // L"K_?8D", // &H8D
0x00, // L"K_?8E", // &H8E
0x00, // L"K_?8F", // &H8F
0x45, // L"K_NUMLOCK", // &H90
0x46, // L"K_SCROL0x00, // L", // &H91
0x00, // L"K_?92", // &H92
0x00, // L"K_?93", // &H93
0x00, // L"K_?94", // &H94
0x00, // L"K_?95", // &H95
0x00, // L"K_?96", // &H96
0x00, // L"K_?97", // &H97
0x00, // L"K_?98", // &H98
0x00, // L"K_?99", // &H99
0x00, // L"K_?9A", // &H9A
0x00, // L"K_?9B", // &H9B
0x00, // L"K_?9C", // &H9C
0x00, // L"K_?9D", // &H9D
0x00, // L"K_?9E", // &H9E
0x00, // L"K_?9F", // &H9F
0x2A, // L"K_?A0", // &HA0
0x36, // L"K_?A1", // &HA1
0x1D, // L"K_?A2", // &HA2
0x1D, // L"K_?A3", // &HA3
0x38, // L"K_?A4", // &HA4
0x38, // L"K_?A5", // &HA5
0x6A, // L"K_?A6", // &HA6
0x69, // L"K_?A7", // &HA7
0x67, // L"K_?A8", // &HA8
0x68, // L"K_?A9", // &HA9
0x65, // L"K_?AA", // &HAA
0x66, // L"K_?AB", // &HAB
0x32, // L"K_?AC", // &HAC
0x20, // L"K_?AD", // &HAD
0x2E, // L"K_?AE", // &HAE
0x30, // L"K_?AF", // &HAF
0x19, // L"K_?B0", // &HB0
0x10, // L"K_?B1", // &HB1
0x24, // L"K_?B2", // &HB2
0x22, // L"K_?B3", // &HB3
0x6C, // L"K_?B4", // &HB4
0x6D, // L"K_?B5", // &HB5
0x6B, // L"K_?B6", // &HB6
0x21, // L"K_?B7", // &HB7
0x00, // L"K_?B8", // &HB8
0x00, // L"K_?B9", // &HB9
0x27, // L"K_COLON", // &HBA
0x0D, // L"K_EQUA0x00, // L", // &HBB
0x33, // L"K_COMMA", // &HBC
0x0C, // L"K_HYPHEN", // &HBD
0x34, // L"K_PERIOD", // &HBE
0x35, // L"K_SLASH", // &HBF
0x29, // L"K_BKQUOTE", // &HC0
0x73, // L"K_?C1", // &HC1
0x7E, // L"K_?C2", // &HC2
0x00, // L"K_?C3", // &HC3
0x00, // L"K_?C4", // &HC4
0x00, // L"K_?C5", // &HC5
0x00, // L"K_?C6", // &HC6
0x00, // L"K_?C7", // &HC7
0x00, // L"K_?C8", // &HC8
0x00, // L"K_?C9", // &HC9
0x00, // L"K_?CA", // &HCA
0x00, // L"K_?CB", // &HCB
0x00, // L"K_?CC", // &HCC
0x00, // L"K_?CD", // &HCD
0x00, // L"K_?CE", // &HCE
0x00, // L"K_?CF", // &HCF
0x00, // L"K_?D0", // &HD0
0x00, // L"K_?D1", // &HD1
0x00, // L"K_?D2", // &HD2
0x00, // L"K_?D3", // &HD3
0x00, // L"K_?D4", // &HD4
0x00, // L"K_?D5", // &HD5
0x00, // L"K_?D6", // &HD6
0x00, // L"K_?D7", // &HD7
0x00, // L"K_?D8", // &HD8
0x00, // L"K_?D9", // &HD9
0x00, // L"K_?DA", // &HDA
0x1A, // L"K_LBRKT", // &HDB
0x2B, // L"K_BKSLASH", // &HDC
0x1B, // L"K_RBRKT", // &HDD
0x28, // L"K_QUOTE", // &HDE
0x73, // L"K_oDF", // &HDF // MCD 01-11-02: Brazilian fix: 00 -> 73
0x00, // L"K_oE0", // &HE0
0x00, // L"K_oE1", // &HE1
0x56, // L"K_oE2", // &HE2
0x00, // L"K_oE3", // &HE3
0x00, // L"K_oE4", // &HE4
0x00, // L"K_?E5", // &HE5
0x00, // L"K_oE6", // &HE6
0x00, // L"K_?E7", // &HE7
0x00, // L"K_?E8", // &HE8
0x71, // L"K_oE9", // &HE9
0x5C, // L"K_oEA", // &HEA
0x7B, // L"K_oEB", // &HEB
0x00, // L"K_oEC", // &HEC
0x6F, // L"K_oED", // &HED
0x5A, // L"K_oEE", // &HEE
0x00, // L"K_oEF", // &HEF
0x00, // L"K_oF0", // &HF0
0x5B, // L"K_oF1", // &HF1
0x00, // L"K_oF2", // &HF2
0x5F, // L"K_oF3", // &HF3
0x00, // L"K_oF4", // &HF4
0x5E, // L"K_oF5", // &HF5
0x00, // L"K_?F6", // &HF6
0x00, // L"K_?F7", // &HF7
0x00, // L"K_?F8", // &HF8
0x5D, // L"K_?F9", // &HF9
0x00, // L"K_?FA", // &HFA
0x62, // L"K_?FB", // &HFB
0x00, // L"K_?FC", // &HFC
0x00, // L"K_?FD", // &HFD
0x00, // L"K_?FE", // &HFE
0x00 // L"K_?FF" // &HFF
};
/* Queue and sending functions */
extern const int VKContextReset[256];
const int VKContextReset[256] = {
1, //L"K_?00", // &H0
1, //L"K_LBUTTON", // &H1
1, //L"K_RBUTTON", // &H2
1, //L"K_CANCEL", // &H3
1, //L"K_MBUTTON", // &H4
1, //L"K_?05", // &H5
1, //L"K_?06", // &H6
1, //L"K_?07", // &H7
1, //L"K_BKSP", // &H8
1, //L"K_TAB", // &H9
1, //L"K_?0A", // &HA
1, //L"K_?0B", // &HB
1, //L"K_KP5", // &HC
1, //L"K_ENTER", // &HD
1, //L"K_?0E", // &HE
1, //L"K_?0F", // &HF
0, //L"K_SHIFT", // &H10
0, //L"K_CONTROL", // &H11
0, //L"K_ALT", // &H12
1, //L"K_PAUSE", // &H13
0, //L"K_CAPS", // &H14
1, //L"K_KANJI?15", // &H15
1, //L"K_KANJI?16", // &H16
1, //L"K_KANJI?17", // &H17
1, //L"K_KANJI?18", // &H18
1, //L"K_KANJI?19", // &H19
1, //L"K_?1A", // &H1A
1, //L"K_ESC", // &H1B
1, //L"K_KANJI?1C", // &H1C
1, //L"K_KANJI?1D", // &H1D
1, //L"K_KANJI?1E", // &H1E
1, //L"K_KANJI?1F", // &H1F
0, //L"K_SPACE", // &H20
1, //L"K_PGUP", // &H21
1, //L"K_PGDN", // &H22
1, //L"K_END", // &H23
1, //L"K_HOME", // &H24
1, //L"K_LEFT", // &H25
1, //L"K_UP", // &H26
1, //L"K_RIGHT", // &H27
1, //L"K_DOWN", // &H28
1, //L"K_SEL", // &H29
1, //L"K_PRINT", // &H2A
1, //L"K_EXEC", // &H2B
1, //L"K_PRTSCN", // &H2C
0, //L"K_INS", // &H2D
1, //L"K_DEL", // &H2E
1, //L"K_HELP", // &H2F
0, //L"K_0", // &H30
0, //L"K_1", // &H31
0, //L"K_2", // &H32
0, //L"K_3", // &H33
0, //L"K_4", // &H34
0, //L"K_5", // &H35
0, //L"K_6", // &H36
0, //L"K_7", // &H37
0, //L"K_8", // &H38
0, //L"K_9", // &H39
0, //L"K_?3A", // &H3A
0, //L"K_?3B", // &H3B
0, //L"K_?3C", // &H3C
0, //L"K_?3D", // &H3D
0, //L"K_?3E", // &H3E
0, //L"K_?3F", // &H3F
0, //L"K_?40", // &H40
0, //L"K_A", // &H41
0, //L"K_B", // &H42
0, //L"K_C", // &H43
0, //L"K_D", // &H44
0, //L"K_E", // &H45
0, //L"K_F", // &H46
0, //L"K_G", // &H47
0, //L"K_H", // &H48
0, //L"K_I", // &H49
0, //L"K_J", // &H4A
0, //L"K_K", // &H4B
0, //L"K_L", // &H4C
0, //L"K_M", // &H4D
0, //L"K_N", // &H4E
0, //L"K_O", // &H4F
0, //L"K_P", // &H50
0, //L"K_Q", // &H51
0, //L"K_R", // &H52
0, //L"K_S", // &H53
0, //L"K_T", // &H54
0, //L"K_U", // &H55
0, //L"K_V", // &H56
0, //L"K_W", // &H57
0, //L"K_X", // &H58
0, //L"K_Y", // &H59
0, //L"K_Z", // &H5A
0, //L"K_?5B", // &H5B
0, //L"K_?5C", // &H5C
0, //L"K_?5D", // &H5D
0, //L"K_?5E", // &H5E
0, //L"K_?5F", // &H5F
0, //L"K_NP0", // &H60
0, //L"K_NP1", // &H61
0, //L"K_NP2", // &H62
0, //L"K_NP3", // &H63
0, //L"K_NP4", // &H64
0, //L"K_NP5", // &H65
0, //L"K_NP6", // &H66
0, //L"K_NP7", // &H67
0, //L"K_NP8", // &H68
0, //L"K_NP9", // &H69
0, //L"K_NPSTAR", // &H6A
0, //L"K_NPPLUS", // &H6B
0, //L"K_SEPARATOR", // &H6C
0, //L"K_NPMINUS", // &H6D
0, //L"K_NPDOT", // &H6E
0, //L"K_NPSLASH", // &H6F
1, //L"K_F1", // &H70
1, //L"K_F2", // &H71
1, //L"K_F3", // &H72
1, //L"K_F4", // &H73
1, //L"K_F5", // &H74
1, //L"K_F6", // &H75
1, //L"K_F7", // &H76
1, //L"K_F8", // &H77
1, //L"K_F9", // &H78
1, //L"K_F10", // &H79
1, //L"K_F11", // &H7A
1, //L"K_F12", // &H7B
1, //L"K_F13", // &H7C
1, //L"K_F14", // &H7D
1, //L"K_F15", // &H7E
1, //L"K_F16", // &H7F
1, //L"K_F17", // &H80
1, //L"K_F18", // &H81
1, //L"K_F19", // &H82
1, //L"K_F20", // &H83
1, //L"K_F21", // &H84
1, //L"K_F22", // &H85
1, //L"K_F23", // &H86
1, //L"K_F24", // &H87
0, //L"K_?88", // &H88
0, //L"K_?89", // &H89
0, //L"K_?8A", // &H8A
0, //L"K_?8B", // &H8B
0, //L"K_?8C", // &H8C
0, //L"K_?8D", // &H8D
0, //L"K_?8E", // &H8E
0, //L"K_?8F", // &H8F
0, //L"K_NUMLOCK", // &H90
0, //L"K_SCROLL", // &H91
0, //L"K_?92", // &H92
0, //L"K_?93", // &H93
0, //L"K_?94", // &H94
0, //L"K_?95", // &H95
0, //L"K_?96", // &H96
0, //L"K_?97", // &H97
0, //L"K_?98", // &H98
0, //L"K_?99", // &H99
0, //L"K_?9A", // &H9A
0, //L"K_?9B", // &H9B
0, //L"K_?9C", // &H9C
0, //L"K_?9D", // &H9D
0, //L"K_?9E", // &H9E
0, //L"K_?9F", // &H9F
0, //L"K_?A0", // &HA0
0, //L"K_?A1", // &HA1
0, //L"K_?A2", // &HA2
0, //L"K_?A3", // &HA3
0, //L"K_?A4", // &HA4
0, //L"K_?A5", // &HA5
0, //L"K_?A6", // &HA6
0, //L"K_?A7", // &HA7
0, //L"K_?A8", // &HA8
0, //L"K_?A9", // &HA9
0, //L"K_?AA", // &HAA
0, //L"K_?AB", // &HAB
0, //L"K_?AC", // &HAC
0, //L"K_?AD", // &HAD
0, //L"K_?AE", // &HAE
0, //L"K_?AF", // &HAF
0, //L"K_?B0", // &HB0
0, //L"K_?B1", // &HB1
0, //L"K_?B2", // &HB2
0, //L"K_?B3", // &HB3
0, //L"K_?B4", // &HB4
0, //L"K_?B5", // &HB5
0, //L"K_?B6", // &HB6
0, //L"K_?B7", // &HB7
0, //L"K_?B8", // &HB8
0, //L"K_?B9", // &HB9
0, //L"K_COLON", // &HBA
0, //L"K_EQUAL", // &HBB
0, //L"K_COMMA", // &HBC
0, //L"K_HYPHEN", // &HBD
0, //L"K_PERIOD", // &HBE
0, //L"K_SLASH", // &HBF
0, //L"K_BKQUOTE", // &HC0
0, //L"K_?C1", // &HC1
0, //L"K_?C2", // &HC2
0, //L"K_?C3", // &HC3
0, //L"K_?C4", // &HC4
0, //L"K_?C5", // &HC5
0, //L"K_?C6", // &HC6
0, //L"K_?C7", // &HC7
0, //L"K_?C8", // &HC8
0, //L"K_?C9", // &HC9
0, //L"K_?CA", // &HCA
0, //L"K_?CB", // &HCB
0, //L"K_?CC", // &HCC
0, //L"K_?CD", // &HCD
0, //L"K_?CE", // &HCE
0, //L"K_?CF", // &HCF
0, //L"K_?D0", // &HD0
0, //L"K_?D1", // &HD1
0, //L"K_?D2", // &HD2
0, //L"K_?D3", // &HD3
0, //L"K_?D4", // &HD4
0, //L"K_?D5", // &HD5
0, //L"K_?D6", // &HD6
0, //L"K_?D7", // &HD7
0, //L"K_?D8", // &HD8
0, //L"K_?D9", // &HD9
0, //L"K_?DA", // &HDA
0, //L"K_LBRKT", // &HDB
0, //L"K_BKSLASH", // &HDC
0, //L"K_RBRKT", // &HDD
0, //L"K_QUOTE", // &HDE
0, //L"K_oDF", // &HDF
0, //L"K_oE0", // &HE0
0, //L"K_oE1", // &HE1
0, //L"K_oE2", // &HE2
0, //L"K_oE3", // &HE3
0, //L"K_oE4", // &HE4
0, //L"K_?E5", // &HE5
0, //L"K_oE6", // &HE6
0, //L"K_?E7", // &HE7
0, //L"K_?E8", // &HE8
0, //L"K_oE9", // &HE9
0, //L"K_oEA", // &HEA
0, //L"K_oEB", // &HEB
0, //L"K_oEC", // &HEC
0, //L"K_oED", // &HED
0, //L"K_oEE", // &HEE
0, //L"K_oEF", // &HEF
0, //L"K_oF0", // &HF0
0, //L"K_oF1", // &HF1
0, //L"K_oF2", // &HF2
0, //L"K_oF3", // &HF3
0, //L"K_oF4", // &HF4
0, //L"K_oF5", // &HF5
0, //L"K_?F6", // &HF6
0, //L"K_?F7", // &HF7
0, //L"K_?F8", // &HF8
0, //L"K_?F9", // &HF9
0, //L"K_?FA", // &HFA
0, //L"K_?FB", // &HFB
0, //L"K_?FC", // &HFC
0, //L"K_?FD", // &HFD
0, //L"K_?FE", // &HFE
0, //L"K_?FF" // &HFF
};