mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 08:55:34 +00:00
907 lines
18 KiB
ObjectPascal
907 lines
18 KiB
ObjectPascal
(*
|
|
Name: VKeys
|
|
Copyright: Copyright (C) SIL International.
|
|
Documentation:
|
|
Description:
|
|
Create Date: 19 Mar 2007
|
|
|
|
Modified Date: 19 Mar 2014
|
|
Authors: mcdurdin
|
|
Related Files:
|
|
Dependencies:
|
|
|
|
Bugs:
|
|
Todo:
|
|
Notes:
|
|
History: 19 Mar 2007 - mcdurdin - I698 - Fix non matching of K_oE2 (due to case mismatch)
|
|
19 Mar 2014 - mcdurdin - I4141 - V9.0 - Warn when unusable key ids are used
|
|
19 Mar 2014 - mcdurdin - I4142 - V9.0 - Validate key ids are in an acceptable format
|
|
|
|
*)
|
|
unit VKeys;
|
|
|
|
interface
|
|
|
|
function FindVKeyName(const txt: string): Word;
|
|
|
|
const VKeyNames: array[0..255] of string = (
|
|
'K_?00', // &H0
|
|
'K_LBUTTON', // &H1
|
|
'K_RBUTTON', // &H2
|
|
'K_CANCEL', // &H3
|
|
'K_MBUTTON', // &H4
|
|
'K_?05', // &H5
|
|
'K_?06', // &H6
|
|
'K_?07', // &H7
|
|
'K_BKSP', // &H8
|
|
'K_TAB', // &H9
|
|
'K_?0A', // &HA
|
|
'K_?0B', // &HB
|
|
'K_KP5', // &HC
|
|
'K_ENTER', // &HD
|
|
'K_?0E', // &HE
|
|
'K_?0F', // &HF
|
|
'K_SHIFT', // &H10
|
|
'K_CONTROL', // &H11
|
|
'K_ALT', // &H12
|
|
'K_PAUSE', // &H13
|
|
'K_CAPS', // &H14
|
|
'K_KANJI?15', // &H15
|
|
'K_KANJI?16', // &H16
|
|
'K_KANJI?17', // &H17
|
|
'K_KANJI?18', // &H18
|
|
'K_KANJI?19', // &H19
|
|
'K_?1A', // &H1A
|
|
'K_ESC', // &H1B
|
|
'K_KANJI?1C', // &H1C
|
|
'K_KANJI?1D', // &H1D
|
|
'K_KANJI?1E', // &H1E
|
|
'K_KANJI?1F', // &H1F
|
|
'K_SPACE', // &H20
|
|
'K_PGUP', // &H21
|
|
'K_PGDN', // &H22
|
|
'K_END', // &H23
|
|
'K_HOME', // &H24
|
|
'K_LEFT', // &H25
|
|
'K_UP', // &H26
|
|
'K_RIGHT', // &H27
|
|
'K_DOWN', // &H28
|
|
'K_SEL', // &H29
|
|
'K_PRINT', // &H2A
|
|
'K_EXEC', // &H2B
|
|
'K_PRTSCN', // &H2C
|
|
'K_INS', // &H2D
|
|
'K_DEL', // &H2E
|
|
'K_HELP', // &H2F
|
|
'K_0', // &H30
|
|
'K_1', // &H31
|
|
'K_2', // &H32
|
|
'K_3', // &H33
|
|
'K_4', // &H34
|
|
'K_5', // &H35
|
|
'K_6', // &H36
|
|
'K_7', // &H37
|
|
'K_8', // &H38
|
|
'K_9', // &H39
|
|
'K_?3A', // &H3A
|
|
'K_?3B', // &H3B
|
|
'K_?3C', // &H3C
|
|
'K_?3D', // &H3D
|
|
'K_?3E', // &H3E
|
|
'K_?3F', // &H3F
|
|
'K_?40', // &H40
|
|
|
|
'K_A', // &H41
|
|
'K_B', // &H42
|
|
'K_C', // &H43
|
|
'K_D', // &H44
|
|
'K_E', // &H45
|
|
'K_F', // &H46
|
|
'K_G', // &H47
|
|
'K_H', // &H48
|
|
'K_I', // &H49
|
|
'K_J', // &H4A
|
|
'K_K', // &H4B
|
|
'K_L', // &H4C
|
|
'K_M', // &H4D
|
|
'K_N', // &H4E
|
|
'K_O', // &H4F
|
|
'K_P', // &H50
|
|
'K_Q', // &H51
|
|
'K_R', // &H52
|
|
'K_S', // &H53
|
|
'K_T', // &H54
|
|
'K_U', // &H55
|
|
'K_V', // &H56
|
|
'K_W', // &H57
|
|
'K_X', // &H58
|
|
'K_Y', // &H59
|
|
'K_Z', // &H5A
|
|
'K_?5B', // &H5B
|
|
'K_?5C', // &H5C
|
|
'K_?5D', // &H5D
|
|
'K_?5E', // &H5E
|
|
'K_?5F', // &H5F
|
|
'K_NP0', // &H60
|
|
'K_NP1', // &H61
|
|
'K_NP2', // &H62
|
|
'K_NP3', // &H63
|
|
'K_NP4', // &H64
|
|
'K_NP5', // &H65
|
|
'K_NP6', // &H66
|
|
'K_NP7', // &H67
|
|
'K_NP8', // &H68
|
|
'K_NP9', // &H69
|
|
'K_NPSTAR', // &H6A
|
|
'K_NPPLUS', // &H6B
|
|
'K_SEPARATOR', // &H6C
|
|
'K_NPMINUS', // &H6D
|
|
'K_NPDOT', // &H6E
|
|
'K_NPSLASH', // &H6F
|
|
'K_F1', // &H70
|
|
'K_F2', // &H71
|
|
'K_F3', // &H72
|
|
'K_F4', // &H73
|
|
'K_F5', // &H74
|
|
'K_F6', // &H75
|
|
'K_F7', // &H76
|
|
'K_F8', // &H77
|
|
'K_F9', // &H78
|
|
'K_F10', // &H79
|
|
'K_F11', // &H7A
|
|
'K_F12', // &H7B
|
|
'K_F13', // &H7C
|
|
'K_F14', // &H7D
|
|
'K_F15', // &H7E
|
|
'K_F16', // &H7F
|
|
'K_F17', // &H80
|
|
'K_F18', // &H81
|
|
'K_F19', // &H82
|
|
'K_F20', // &H83
|
|
'K_F21', // &H84
|
|
'K_F22', // &H85
|
|
'K_F23', // &H86
|
|
'K_F24', // &H87
|
|
|
|
'K_?88', // &H88
|
|
'K_?89', // &H89
|
|
'K_?8A', // &H8A
|
|
'K_?8B', // &H8B
|
|
'K_?8C', // &H8C
|
|
'K_?8D', // &H8D
|
|
'K_?8E', // &H8E
|
|
'K_?8F', // &H8F
|
|
|
|
'K_NUMLOCK', // &H90
|
|
'K_SCROLL', // &H91
|
|
|
|
'K_?92', // &H92
|
|
'K_?93', // &H93
|
|
'K_?94', // &H94
|
|
'K_?95', // &H95
|
|
'K_?96', // &H96
|
|
'K_?97', // &H97
|
|
'K_?98', // &H98
|
|
'K_?99', // &H99
|
|
'K_?9A', // &H9A
|
|
'K_?9B', // &H9B
|
|
'K_?9C', // &H9C
|
|
'K_?9D', // &H9D
|
|
'K_?9E', // &H9E
|
|
'K_?9F', // &H9F
|
|
'K_?A0', // &HA0
|
|
'K_?A1', // &HA1
|
|
'K_?A2', // &HA2
|
|
'K_?A3', // &HA3
|
|
'K_?A4', // &HA4
|
|
'K_?A5', // &HA5
|
|
'K_?A6', // &HA6
|
|
'K_?A7', // &HA7
|
|
'K_?A8', // &HA8
|
|
'K_?A9', // &HA9
|
|
'K_?AA', // &HAA
|
|
'K_?AB', // &HAB
|
|
'K_?AC', // &HAC
|
|
'K_?AD', // &HAD
|
|
'K_?AE', // &HAE
|
|
'K_?AF', // &HAF
|
|
'K_?B0', // &HB0
|
|
'K_?B1', // &HB1
|
|
'K_?B2', // &HB2
|
|
'K_?B3', // &HB3
|
|
'K_?B4', // &HB4
|
|
'K_?B5', // &HB5
|
|
'K_?B6', // &HB6
|
|
'K_?B7', // &HB7
|
|
'K_?B8', // &HB8
|
|
'K_?B9', // &HB9
|
|
|
|
'K_COLON', // &HBA
|
|
'K_EQUAL', // &HBB
|
|
'K_COMMA', // &HBC
|
|
'K_HYPHEN', // &HBD
|
|
'K_PERIOD', // &HBE
|
|
'K_SLASH', // &HBF
|
|
'K_BKQUOTE', // &HC0
|
|
|
|
'K_?C1', // &HC1
|
|
'K_?C2', // &HC2
|
|
'K_?C3', // &HC3
|
|
'K_?C4', // &HC4
|
|
'K_?C5', // &HC5
|
|
'K_?C6', // &HC6
|
|
'K_?C7', // &HC7
|
|
'K_?C8', // &HC8
|
|
'K_?C9', // &HC9
|
|
'K_?CA', // &HCA
|
|
'K_?CB', // &HCB
|
|
'K_?CC', // &HCC
|
|
'K_?CD', // &HCD
|
|
'K_?CE', // &HCE
|
|
'K_?CF', // &HCF
|
|
'K_?D0', // &HD0
|
|
'K_?D1', // &HD1
|
|
'K_?D2', // &HD2
|
|
'K_?D3', // &HD3
|
|
'K_?D4', // &HD4
|
|
'K_?D5', // &HD5
|
|
'K_?D6', // &HD6
|
|
'K_?D7', // &HD7
|
|
'K_?D8', // &HD8
|
|
'K_?D9', // &HD9
|
|
'K_?DA', // &HDA
|
|
|
|
'K_LBRKT', // &HDB
|
|
'K_BKSLASH', // &HDC
|
|
'K_RBRKT', // &HDD
|
|
'K_QUOTE', // &HDE
|
|
'K_oDF', // &HDF
|
|
'K_oE0', // &HE0
|
|
'K_oE1', // &HE1
|
|
'K_oE2', // &HE2
|
|
'K_oE3', // &HE3
|
|
'K_oE4', // &HE4
|
|
|
|
'K_?E5', // &HE5
|
|
|
|
'K_oE6', // &HE6
|
|
|
|
'K_?E7', // &HE7
|
|
'K_?E8', // &HE8
|
|
|
|
'K_oE9', // &HE9
|
|
'K_oEA', // &HEA
|
|
'K_oEB', // &HEB
|
|
'K_oEC', // &HEC
|
|
'K_oED', // &HED
|
|
'K_oEE', // &HEE
|
|
'K_oEF', // &HEF
|
|
'K_oF0', // &HF0
|
|
'K_oF1', // &HF1
|
|
'K_oF2', // &HF2
|
|
'K_oF3', // &HF3
|
|
'K_oF4', // &HF4
|
|
'K_oF5', // &HF5
|
|
|
|
'K_?F6', // &HF6
|
|
'K_?F7', // &HF7
|
|
'K_?F8', // &HF8
|
|
'K_?F9', // &HF9
|
|
'K_?FA', // &HFA
|
|
'K_?FB', // &HFB
|
|
'K_?FC', // &HFC
|
|
'K_?FD', // &HFD
|
|
'K_?FE', // &HFE
|
|
'K_?FF'); // &HFF
|
|
|
|
///
|
|
/// Virtual key names used in KeymanWeb. Blanks indicate a
|
|
/// virtual key that is not recognised by KeymanWeb.
|
|
///
|
|
const KMWVKeyNames: array[0..255] of string = (
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_BKSP',
|
|
'K_TAB',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_ENTER',
|
|
'',
|
|
'',
|
|
'K_SHIFT',
|
|
'K_CONTROL',
|
|
'K_ALT',
|
|
'K_PAUSE',
|
|
'K_CAPS',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_ESC',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_SPACE',
|
|
'K_PGUP',
|
|
'K_PGDN',
|
|
'K_END',
|
|
'K_HOME',
|
|
'K_LEFT',
|
|
'K_UP',
|
|
'K_RIGHT',
|
|
'K_DOWN',
|
|
'K_SEL',
|
|
'K_PRINT',
|
|
'K_EXEC',
|
|
'',
|
|
'K_INS',
|
|
'K_DEL',
|
|
'K_HELP',
|
|
'K_0',
|
|
'K_1',
|
|
'K_2',
|
|
'K_3',
|
|
'K_4',
|
|
'K_5',
|
|
'K_6',
|
|
'K_7',
|
|
'K_8',
|
|
'K_9',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_A',
|
|
'K_B',
|
|
'K_C',
|
|
'K_D',
|
|
'K_E',
|
|
'K_F',
|
|
'K_G',
|
|
'K_H',
|
|
'K_I',
|
|
'K_J',
|
|
'K_K',
|
|
'K_L',
|
|
'K_M',
|
|
'K_N',
|
|
'K_O',
|
|
'K_P',
|
|
'K_Q',
|
|
'K_R',
|
|
'K_S',
|
|
'K_T',
|
|
'K_U',
|
|
'K_V',
|
|
'K_W',
|
|
'K_X',
|
|
'K_Y',
|
|
'K_Z',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_NP0',
|
|
'K_NP1',
|
|
'K_NP2',
|
|
'K_NP3',
|
|
'K_NP4',
|
|
'K_NP5',
|
|
'K_NP6',
|
|
'K_NP7',
|
|
'K_NP8',
|
|
'K_NP9',
|
|
'K_NPSTAR',
|
|
'K_NPPLUS',
|
|
'K_SEPARATOR',
|
|
'K_NPMINUS',
|
|
'K_NPDOT',
|
|
'K_NPSLASH',
|
|
'K_F1',
|
|
'K_F2',
|
|
'K_F3',
|
|
'K_F4',
|
|
'K_F5',
|
|
'K_F6',
|
|
'K_F7',
|
|
'K_F8',
|
|
'K_F9',
|
|
'K_F10',
|
|
'K_F11',
|
|
'K_F12',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_NUMLOCK',
|
|
'K_SCROLL',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_LSHIFT',
|
|
'K_RSHIFT',
|
|
'K_LCONTROL',
|
|
'K_RCONTROL',
|
|
'K_LALT',
|
|
'K_RALT',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_COLON',
|
|
'K_EQUAL',
|
|
'K_COMMA',
|
|
'K_HYPHEN',
|
|
'K_PERIOD',
|
|
'K_SLASH',
|
|
'K_BKQUOTE',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_LBRKT',
|
|
'K_BKSLASH',
|
|
'K_RBRKT',
|
|
'K_QUOTE',
|
|
'',
|
|
'',
|
|
'',
|
|
'K_oE2',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
''
|
|
);
|
|
|
|
const VKeyISO9995Names: array[0..255] of string = (
|
|
// Key Codes
|
|
'', // 'K_?00', // &H0
|
|
'', // 'K_LBUTTON', // &H1
|
|
'', // 'K_RBUTTON', // &H2
|
|
'', // 'K_CANCEL', // &H3
|
|
'', // 'K_MBUTTON', // &H4
|
|
'', // 'K_?05', // &H5
|
|
'', // 'K_?06', // &H6
|
|
'', // 'K_?07', // &H7
|
|
'E14', // 'K_BKSP', // &H8
|
|
'D00', // 'K_TAB', // &H9
|
|
'', // 'K_?0A', // &HA
|
|
'', // 'K_?0B', // &HB
|
|
'', // 'K_KP5', // &HC
|
|
'C13', // 'K_ENTER', // &HD
|
|
'', // 'K_?0E', // &HE
|
|
'', // 'K_?0F', // &HF
|
|
'B99', // 'K_SHIFT', // &H10
|
|
'A99', // 'K_CONTROL', // &H11
|
|
'A02', // 'K_ALT', // &H12
|
|
'', // 'K_PAUSE', // &H13
|
|
'C00', // 'K_CAPS', // &H14
|
|
'', // 'K_KANJI?15', // &H15
|
|
'', // 'K_KANJI?16', // &H16
|
|
'', // 'K_KANJI?17', // &H17
|
|
'', // 'K_KANJI?18', // &H18
|
|
'', // 'K_KANJI?19', // &H19
|
|
'', // 'K_?1A', // &H1A
|
|
'', // 'K_ESC', // &H1B
|
|
'', // 'K_KANJI?1C', // &H1C
|
|
'', // 'K_KANJI?1D', // &H1D
|
|
'', // 'K_KANJI?1E', // &H1E
|
|
'', // 'K_KANJI?1F', // &H1F
|
|
'A03', // 'K_SPACE', // &H20
|
|
'', // 'K_PGUP', // &H21
|
|
'', // 'K_PGDN', // &H22
|
|
'', // 'K_END', // &H23
|
|
'', // 'K_HOME', // &H24
|
|
'', // 'K_LEFT', // &H25
|
|
'', // 'K_UP', // &H26
|
|
'', // 'K_RIGHT', // &H27
|
|
'', // 'K_DOWN', // &H28
|
|
'', // 'K_SEL', // &H29
|
|
'', // 'K_PRINT', // &H2A
|
|
'', // 'K_EXEC', // &H2B
|
|
'', // 'K_PRTSCN', // &H2C
|
|
'', // 'K_INS', // &H2D
|
|
'', // 'K_DEL', // &H2E
|
|
'', // 'K_HELP', // &H2F
|
|
'E10', // 'K_0', // &H30
|
|
'E01', // 'K_1', // &H31
|
|
'E02', // 'K_2', // &H32
|
|
'E03', // 'K_3', // &H33
|
|
'E04', // 'K_4', // &H34
|
|
'E05', // 'K_5', // &H35
|
|
'E06', // 'K_6', // &H36
|
|
'E07', // 'K_7', // &H37
|
|
'E08', // 'K_8', // &H38
|
|
'E09', // 'K_9', // &H39
|
|
'', // 'K_?3A', // &H3A
|
|
'', // 'K_?3B', // &H3B
|
|
'', // 'K_?3C', // &H3C
|
|
'', // 'K_?3D', // &H3D
|
|
'', // 'K_?3E', // &H3E
|
|
'', // 'K_?3F', // &H3F
|
|
'', // 'K_?40', // &H40
|
|
|
|
'C01', // 'K_A', // &H41
|
|
'B05', // 'K_B', // &H42
|
|
'B03', // 'K_C', // &H43
|
|
'C03', // 'K_D', // &H44
|
|
'D03', // 'K_E', // &H45
|
|
'C04', // 'K_F', // &H46
|
|
'C05', // 'K_G', // &H47
|
|
'C06', // 'K_H', // &H48
|
|
'D08', // 'K_I', // &H49
|
|
'C07', // 'K_J', // &H4A
|
|
'C08', // 'K_K', // &H4B
|
|
'C09', // 'K_L', // &H4C
|
|
'B07', // 'K_M', // &H4D
|
|
'B06', // 'K_N', // &H4E
|
|
'D09', // 'K_O', // &H4F
|
|
'D10', // 'K_P', // &H50
|
|
'D01', // 'K_Q', // &H51
|
|
'D04', // 'K_R', // &H52
|
|
'C02', // 'K_S', // &H53
|
|
'D05', // 'K_T', // &H54
|
|
'D07', // 'K_U', // &H55
|
|
'B04', // 'K_V', // &H56
|
|
'D02', // 'K_W', // &H57
|
|
'B02', // 'K_X', // &H58
|
|
'D06', // 'K_Y', // &H59
|
|
'B01', // 'K_Z', // &H5A
|
|
'', // 'K_?5B', // &H5B
|
|
'', // 'K_?5C', // &H5C
|
|
'', // 'K_?5D', // &H5D
|
|
'', // 'K_?5E', // &H5E
|
|
'', // 'K_?5F', // &H5F
|
|
'', // 'K_NP0', // &H60
|
|
'', // 'K_NP1', // &H61
|
|
'', // 'K_NP2', // &H62
|
|
'', // 'K_NP3', // &H63
|
|
'', // 'K_NP4', // &H64
|
|
'', // 'K_NP5', // &H65
|
|
'', // 'K_NP6', // &H66
|
|
'', // 'K_NP7', // &H67
|
|
'', // 'K_NP8', // &H68
|
|
'', // 'K_NP9', // &H69
|
|
'', // 'K_NPSTAR', // &H6A
|
|
'', // 'K_NPPLUS', // &H6B
|
|
'', // 'K_SEPARATOR', // &H6C
|
|
'', // 'K_NPMINUS', // &H6D
|
|
'', // 'K_NPDOT', // &H6E
|
|
'', // 'K_NPSLASH', // &H6F
|
|
'', // 'K_F1', // &H70
|
|
'', // 'K_F2', // &H71
|
|
'', // 'K_F3', // &H72
|
|
'', // 'K_F4', // &H73
|
|
'', // 'K_F5', // &H74
|
|
'', // 'K_F6', // &H75
|
|
'', // 'K_F7', // &H76
|
|
'', // 'K_F8', // &H77
|
|
'', // 'K_F9', // &H78
|
|
'', // 'K_F10', // &H79
|
|
'', // 'K_F11', // &H7A
|
|
'', // 'K_F12', // &H7B
|
|
'', // 'K_F13', // &H7C
|
|
'', // 'K_F14', // &H7D
|
|
'', // 'K_F15', // &H7E
|
|
'', // 'K_F16', // &H7F
|
|
'', // 'K_F17', // &H80
|
|
'', // 'K_F18', // &H81
|
|
'', // 'K_F19', // &H82
|
|
'', // 'K_F20', // &H83
|
|
'', // 'K_F21', // &H84
|
|
'', // 'K_F22', // &H85
|
|
'', // 'K_F23', // &H86
|
|
'', // 'K_F24', // &H87
|
|
|
|
'', // 'K_?88', // &H88
|
|
'', // 'K_?89', // &H89
|
|
'', // 'K_?8A', // &H8A
|
|
'', // 'K_?8B', // &H8B
|
|
'', // 'K_?8C', // &H8C
|
|
'', // 'K_?8D', // &H8D
|
|
'', // 'K_?8E', // &H8E
|
|
'', // 'K_?8F', // &H8F
|
|
|
|
'', // 'K_NUMLOCK', // &H90
|
|
'', // 'K_SCROLL', // &H91
|
|
|
|
'', // 'K_?92', // &H92
|
|
'', // 'K_?93', // &H93
|
|
'', // 'K_?94', // &H94
|
|
'', // 'K_?95', // &H95
|
|
'', // 'K_?96', // &H96
|
|
'', // 'K_?97', // &H97
|
|
'', // 'K_?98', // &H98
|
|
'', // 'K_?99', // &H99
|
|
'', // 'K_?9A', // &H9A
|
|
'', // 'K_?9B', // &H9B
|
|
'', // 'K_?9C', // &H9C
|
|
'', // 'K_?9D', // &H9D
|
|
'', // 'K_?9E', // &H9E
|
|
'', // 'K_?9F', // &H9F
|
|
'', // 'K_?A0', // &HA0
|
|
'', // 'K_?A1', // &HA1
|
|
'', // 'K_?A2', // &HA2
|
|
'', // 'K_?A3', // &HA3
|
|
'', // 'K_?A4', // &HA4
|
|
'', // 'K_?A5', // &HA5
|
|
'', // 'K_?A6', // &HA6
|
|
'', // 'K_?A7', // &HA7
|
|
'', // 'K_?A8', // &HA8
|
|
'', // 'K_?A9', // &HA9
|
|
'', // 'K_?AA', // &HAA
|
|
'', // 'K_?AB', // &HAB
|
|
'', // 'K_?AC', // &HAC
|
|
'', // 'K_?AD', // &HAD
|
|
'', // 'K_?AE', // &HAE
|
|
'', // 'K_?AF', // &HAF
|
|
'', // 'K_?B0', // &HB0
|
|
'', // 'K_?B1', // &HB1
|
|
'', // 'K_?B2', // &HB2
|
|
'', // 'K_?B3', // &HB3
|
|
'', // 'K_?B4', // &HB4
|
|
'', // 'K_?B5', // &HB5
|
|
'', // 'K_?B6', // &HB6
|
|
'', // 'K_?B7', // &HB7
|
|
'', // 'K_?B8', // &HB8
|
|
'', // 'K_?B9', // &HB9
|
|
|
|
'C10', // 'K_COLON', // &HBA
|
|
'E12', // 'K_EQUAL', // &HBB
|
|
'B08', // 'K_COMMA', // &HBC
|
|
'E11', // 'K_HYPHEN', // &HBD
|
|
'B09', // 'K_PERIOD', // &HBE
|
|
'B10', // 'K_SLASH', // &HBF
|
|
'E00', // 'K_BKQUOTE', // &HC0
|
|
|
|
'', // 'K_?C1', // &HC1
|
|
'', // 'K_?C2', // &HC2
|
|
'', // 'K_?C3', // &HC3
|
|
'', // 'K_?C4', // &HC4
|
|
'', // 'K_?C5', // &HC5
|
|
'', // 'K_?C6', // &HC6
|
|
'', // 'K_?C7', // &HC7
|
|
'', // 'K_?C8', // &HC8
|
|
'', // 'K_?C9', // &HC9
|
|
'', // 'K_?CA', // &HCA
|
|
'', // 'K_?CB', // &HCB
|
|
'', // 'K_?CC', // &HCC
|
|
'', // 'K_?CD', // &HCD
|
|
'', // 'K_?CE', // &HCE
|
|
'', // 'K_?CF', // &HCF
|
|
'', // 'K_?D0', // &HD0
|
|
'', // 'K_?D1', // &HD1
|
|
'', // 'K_?D2', // &HD2
|
|
'', // 'K_?D3', // &HD3
|
|
'', // 'K_?D4', // &HD4
|
|
'', // 'K_?D5', // &HD5
|
|
'', // 'K_?D6', // &HD6
|
|
'', // 'K_?D7', // &HD7
|
|
'', // 'K_?D8', // &HD8
|
|
'', // 'K_?D9', // &HD9
|
|
'', // 'K_?DA', // &HDA
|
|
|
|
'D11', // 'K_LBRKT', // &HDB
|
|
'D13', // 'K_BKSLASH', // &HDC
|
|
'D12', // 'K_RBRKT', // &HDD
|
|
'C11', // 'K_QUOTE', // &HDE
|
|
'', // 'K_oDF', // &HDF
|
|
'', // 'K_oE0', // &HE0
|
|
'', // 'K_oE1', // &HE1
|
|
'B00', // 'K_oE2', // &HE2
|
|
'', // 'K_oE3', // &HE3
|
|
'', // 'K_oE4', // &HE4
|
|
|
|
'', // 'K_?E5', // &HE5
|
|
|
|
'', // 'K_oE6', // &HE6
|
|
|
|
'', // 'K_?E7', // &HE7
|
|
'', // 'K_?E8', // &HE8
|
|
|
|
'', // 'K_oE9', // &HE9
|
|
'', // 'K_oEA', // &HEA
|
|
'', // 'K_oEB', // &HEB
|
|
'', // 'K_oEC', // &HEC
|
|
'', // 'K_oED', // &HED
|
|
'', // 'K_oEE', // &HEE
|
|
'', // 'K_oEF', // &HEF
|
|
'', // 'K_oF0', // &HF0
|
|
'', // 'K_oF1', // &HF1
|
|
'', // 'K_oF2', // &HF2
|
|
'', // 'K_oF3', // &HF3
|
|
'', // 'K_oF4', // &HF4
|
|
'', // 'K_oF5', // &HF5
|
|
|
|
'', // 'K_?F6', // &HF6
|
|
'', // 'K_?F7', // &HF7
|
|
'', // 'K_?F8', // &HF8
|
|
'', // 'K_?F9', // &HF9
|
|
'', // 'K_?FA', // &HFA
|
|
'', // 'K_?FB', // &HFB
|
|
'', // 'K_?FC', // &HFC
|
|
'', // 'K_?FD', // &HFD
|
|
'', // 'K_?FE', // &HFE
|
|
'' // 'K_?FF' // &HFF
|
|
);
|
|
|
|
|
|
type
|
|
TKeyNameRecord = record // I4141 // I4142
|
|
Name: string;
|
|
Code: Integer;
|
|
end;
|
|
|
|
const
|
|
{ Used only by KMW }
|
|
AdditionalKeyNames: array[0..3] of TKeyNameRecord = (
|
|
(Name: 'K_LCONTROL'; Code: $A2),
|
|
(Name: 'K_RCONTROL'; Code: $A3),
|
|
(Name: 'K_LALT'; Code: $A4),
|
|
(Name: 'K_RALT'; Code: $A5)
|
|
);
|
|
|
|
type
|
|
TKeymanWebTouchStandardKey = (
|
|
K_LOPT = 50001,
|
|
K_ROPT = 50002,
|
|
K_NUMERALS = 50003,
|
|
K_SYMBOLS = 50004,
|
|
K_CURRENCIES = 50005,
|
|
K_UPPER = 50006,
|
|
K_LOWER = 50007,
|
|
K_ALPHA = 50008,
|
|
K_SHIFTED = 50009,
|
|
K_ALTGR = 50010,
|
|
K_TABBACK = 50011,
|
|
K_TABFWD = 50012);
|
|
|
|
const
|
|
KeymanWebTouchStandardKeys: array[TKeymanWebTouchStandardKey] of string = (
|
|
'K_LOPT',
|
|
'K_ROPT',
|
|
'K_NUMERALS',
|
|
'K_SYMBOLS',
|
|
'K_CURRENCIES',
|
|
'K_UPPER',
|
|
'K_LOWER',
|
|
'K_ALPHA',
|
|
'K_SHIFTED',
|
|
'K_ALTGR',
|
|
'K_TABBACK',
|
|
'K_TABFWD');
|
|
|
|
implementation
|
|
|
|
uses
|
|
System.SysUtils,
|
|
System.TypInfo;
|
|
|
|
function FindVKeyName(const txt: string): Word;
|
|
var
|
|
i: Integer;
|
|
t: TKeymanWebTouchStandardKey;
|
|
begin
|
|
if txt = '' then
|
|
Exit($FFFF);
|
|
|
|
for i := Low(VKeyNames) to High(VKeyNames) do
|
|
if SameText(txt, VKeyNames[i]) or SameText(txt, VKeyISO9995Names[i]) then
|
|
Exit(i);
|
|
|
|
for t := Low(TKeymanWebTouchStandardKey) to High(TKeymanWebTouchStandardKey) do
|
|
if SameText(txt, KeymanWebTouchStandardKeys[t]) then
|
|
Exit(Ord(t));
|
|
|
|
for i := 0 to High(AdditionalKeyNames) do
|
|
if SameText(txt, AdditionalKeyNames[i].Name) then
|
|
Exit(AdditionalKeyNames[i].Code);
|
|
|
|
Result := $FFFF;
|
|
end;
|
|
|
|
end.
|