spiegel-keyman/common/windows/delphi/general/VKeyChars.pas

617 lines
18 KiB
ObjectPascal

(*
Name: VKeyChars
Copyright: Copyright (C) SIL International.
Documentation:
Description:
Create Date: 6 Apr 2010
Modified Date: 6 Apr 2010
Authors: mcdurdin
Related Files:
Dependencies:
Bugs:
Todo:
Notes:
History: 06 Apr 2010 - mcdurdin - I2200 - Mnemonic layouts and OSK
*)
unit VKeyChars;
interface
const SUSVkeyChars: array[0..1,0..255] of Char = (
(
#$0, //'??00', // &H0
#$0, //'?Left Mouse Button', // &H1
#$0, //'?Right Mouse Button', // &H2
#$0, //'?Ctrl+Break', // &H3
#$0, //'?Middle Mouse Button', // &H4
#$0, //'?05', // &H5
#$0, //'?06', // &H6
#$0, //'?07', // &H7
#$8, //'Backspace', // &H8
#$9, //'Tab', // &H9
#$0, //'?0A', // &HA
#$0, //'?0B', // &HB
#$0, //'Key Pad 5', // &HC
#$D, //'Enter', // &HD
#$0, //'??0E', // &HE
#$0, //'??0F', // &HF
#$0, //'??Shift', // &H10
#$0, //'??Control', // &H11
#$0, //'??Alt', // &H12
#$0, //'?Pause', // &H13
#$0, //'??Caps Lock', // &H14
#$0, //'??KANJI?15', // &H15
#$0, //'??KANJI?16', // &H16
#$0, //'??KANJI?17', // &H17
#$0, //'??KANJI?18', // &H18
#$0, //'??KANJI?19', // &H19
#$0, //'??1A', // &H1A
#$1B, //'Escape', // &H1B
#$0, //'??KANJI?1C', // &H1C
#$0, //'??KANJI?1D', // &H1D
#$0, //'??KANJI?1E', // &H1E
#$0, //'??KANJI?1F', // &H1F
' ', //'Spacebar', // &H20
#$0, //'?Page Up', // &H21
#$0, //'?Page Down', // &H22
#$0, //'?End', // &H23
#$0, //'?Home', // &H24
#$0, //'?Left Arrow', // &H25
#$0, //'?Up Arrow', // &H26
#$0, //'?Right Arrow', // &H27
#$0, //'?Down Arrow', // &H28
#$0, //'??Select', // &H29
#$0, //'??PRINT', // &H2A
#$0, //'??Execute', // &H2B
#$0, //'?Print Screen', // &H2C
#$0, //'?Insert', // &H2D
#$0, //'?Delete', // &H2E
#$0, //'??Help', // &H2F
'0', // &H30
'1', // &H31
'2', // &H32
'3', // &H33
'4', // &H34
'5', // &H35
'6', // &H36
'7', // &H37
'8', // &H38
'9', // &H39
#$0, //'??3A', // &H3A
#$0, //'??3B', // &H3B
#$0, //'??3C', // &H3C
#$0, //'??3D', // &H3D
#$0, //'??3E', // &H3E
#$0, //'??3F', // &H3F
#$0, //'??40', // &H40
'a', // &H41
'b', // &H42
'c', // &H43
'd', // &H44
'e', // &H45
'f', // &H46
'g', // &H47
'h', // &H48
'i', // &H49
'j', // &H4A
'k', // &H4B
'l', // &H4C
'm', // &H4D
'n', // &H4E
'o', // &H4F
'p', // &H50
'q', // &H51
'r', // &H52
's', // &H53
't', // &H54
'u', // &H55
'v', // &H56
'w', // &h57
'x', // &H58
'y', // &H59
'z', // &H5A
#$0, //'??5B', // &H5B
#$0, //'??5C', // &H5C
#$0, //'??5D', // &H5D
#$0, //'??5E', // &H5E
#$0, //'??5F', // &H5F
#$0, //'?Number Pad 0', // &H60
#$0, //'?Number Pad 1', // &H61
#$0, //'?Number Pad 2', // &H62
#$0, //'?Number Pad 3', // &H63
#$0, //'?Number Pad 4', // &H64
#$0, //'?Number Pad 5', // &H65
#$0, //'?Number Pad 6', // &H66
#$0, //'?Number Pad 7', // &H67
#$0, //'?Number Pad 8', // &H68
#$0, //'?Number Pad 9', // &H69
#$0, //'?Number Pad *', // &H6A
#$0, //'?Number Pad +', // &H6B
#$0, //'??Separator', // &H6C
#$0, //'?Number Pad -', // &H6D
#$0, //'?Number Pad .', // &H6E
#$0, //'?Number Pad /', // &H6F
#$0, //'?F1', // &H70
#$0, //'?F2', // &H71
#$0, //'?F3', // &H72
#$0, //'?F4', // &H73
#$0, //'?F5', // &H74
#$0, //'?F6', // &H75
#$0, //'?F7', // &H76
#$0, //'?F8', // &H77
#$0, //'?F9', // &H78
#$0, //'?F10', // &H79
#$0, //'?F11', // &H7A
#$0, //'?F12', // &H7B
#$0, //'??F13', // &H7C
#$0, //'??F14', // &H7D
#$0, //'??F15', // &H7E
#$0, //'??F16', // &H7F
#$0, //'??F17', // &H80
#$0, //'??F18', // &H81
#$0, //'??F19', // &H82
#$0, //'??F20', // &H83
#$0, //'??F21', // &H84
#$0, //'??F22', // &H85
#$0, //'??F23', // &H86
#$0, //'??F24', // &H87
#$0, //'??88', // &H88
#$0, //'??89', // &H89
#$0, //'??8A', // &H8A
#$0, //'??8B', // &H8B
#$0, //'??8C', // &H8C
#$0, //'??8D', // &H8D
#$0, //'??8E', // &H8E
#$0, //'??8F', // &H8F
#$0, //'??Num Lock', // &H90
#$0, //'??Scroll Lock', // &H91
#$0, //'?92', // &H92
#$0, //'?93', // &H93
#$0, //'?94', // &H94
#$0, //'?95', // &H95
#$0, //'?96', // &H96
#$0, //'?97', // &H97
#$0, //'?98', // &H98
#$0, //'?99', // &H99
#$0, //'?9A', // &H9A
#$0, //'?9B', // &H9B
#$0, //'?9C', // &H9C
#$0, //'?9D', // &H9D
#$0, //'?9E', // &H9E
#$0, //'?9F', // &H9F
#$0, //'?A0', // &HA0
#$0, //'?A1', // &HA1
#$0, //'?A2', // &HA2
#$0, //'?A3', // &HA3
#$0, //'?A4', // &HA4
#$0, //'?A5', // &HA5
#$0, //'?A6', // &HA6
#$0, //'?A7', // &HA7
#$0, //'?A8', // &HA8
#$0, //'?A9', // &HA9
#$0, //'?AA', // &HAA
#$0, //'?AB', // &HAB
#$0, //'?AC', // &HAC
#$0, //'?AD', // &HAD
#$0, //'?AE', // &HAE
#$0, //'?AF', // &HAF
#$0, //'?B0', // &HB0
#$0, //'?B1', // &HB1
#$0, //'?B2', // &HB2
#$0, //'?B3', // &HB3
#$0, //'?B4', // &HB4
#$0, //'?B5', // &HB5
#$0, //'?B6', // &HB6
#$0, //'?B7', // &HB7
#$0, //'?B8', // &HB8
#$0, //'?B9', // &HB9
';', // &HBA
'=', // &HBB
',', // &HBC
'-', // &HBD
'.', // &HBE
'/', // &HBF
'`', // &HC0
#$0, //'??C1', // &HC1
#$0, //'??C2', // &HC2
#$0, //'??C3', // &HC3
#$0, //'??C4', // &HC4
#$0, //'??C5', // &HC5
#$0, //'??C6', // &HC6
#$0, //'??C7', // &HC7
#$0, //'??C8', // &HC8
#$0, //'??C9', // &HC9
#$0, //'??CA', // &HCA
#$0, //'??CB', // &HCB
#$0, //'??CC', // &HCC
#$0, //'??CD', // &HCD
#$0, //'??CE', // &HCE
#$0, //'??CF', // &HCF
#$0, //'??D0', // &HD0
#$0, //'??D1', // &HD1
#$0, //'??D2', // &HD2
#$0, //'??D3', // &HD3
#$0, //'??D4', // &HD4
#$0, //'??D5', // &HD5
#$0, //'??D6', // &HD6
#$0, //'??D7', // &HD7
#$0, //'??D8', // &HD8
#$0, //'??D9', // &HD9
#$0, //'??DA', // &HDA
'[', // &HDB
'\', // &HDC
']', // &HDD
'''', // &HDE
#$0, //'??DF', // &HDF
#$0, //'??E0', // &HE0
#$0, //'??E1', // &HE1
#$0, //'??E2', // &HE2 102nd key
#$0, //'??E3', // &HE3
#$0, //'??E4', // &HE4
#$0, //'??E5', // &HE5
#$0, //'??E6', // &HE6
#$0, //'??E7', // &HE7
#$0, //'??E8', // &HE8
#$0, //'??E9', // &HE9
#$0, //'??EA', // &HEA
#$0, //'??EB', // &HEB
#$0, //'??EC', // &HEC
#$0, //'??ED', // &HED
#$0, //'??EE', // &HEE
#$0, //'??EF', // &HEF
#$0, //'??F0', // &HF0
#$0, //'??F1', // &HF1
#$0, //'??F2', // &HF2
#$0, //'??F3', // &HF3
#$0, //'??F4', // &HF4
#$0, //'??F5', // &HF5
#$0, //'??F6', // &HF6
#$0, //'??F7', // &HF7
#$0, //'??F8', // &HF8
#$0, //'??F9', // &HF9
#$0, //'??FA', // &HFA
#$0, //'??FB', // &HFB
#$0, //'??FC', // &HFC
#$0, //'??FD', // &HFD
#$0, //'??FE', // &HFE
#$0 //'??FF' // &HFF
),
(
#$0, //'??00', // &H0
#$0, //'?Left Mouse Button', // &H1
#$0, //'?Right Mouse Button', // &H2
#$0, //'?Ctrl+Break', // &H3
#$0, //'?Middle Mouse Button', // &H4
#$0, //'?05', // &H5
#$0, //'?06', // &H6
#$0, //'?07', // &H7
#$8, //'Backspace', // &H8
#$9, //'Tab', // &H9
#$0, //'?0A', // &HA
#$0, //'?0B', // &HB
#$0, //'Key Pad 5', // &HC
#$D, //'Enter', // &HD
#$0, //'??0E', // &HE
#$0, //'??0F', // &HF
#$0, //'??Shift', // &H10
#$0, //'??Control', // &H11
#$0, //'??Alt', // &H12
#$0, //'?Pause', // &H13
#$0, //'??Caps Lock', // &H14
#$0, //'??KANJI?15', // &H15
#$0, //'??KANJI?16', // &H16
#$0, //'??KANJI?17', // &H17
#$0, //'??KANJI?18', // &H18
#$0, //'??KANJI?19', // &H19
#$0, //'??1A', // &H1A
#$1B, //'Escape', // &H1B
#$0, //'??KANJI?1C', // &H1C
#$0, //'??KANJI?1D', // &H1D
#$0, //'??KANJI?1E', // &H1E
#$0, //'??KANJI?1F', // &H1F
' ', //'Spacebar', // &H20
#$0, //'?Page Up', // &H21
#$0, //'?Page Down', // &H22
#$0, //'?End', // &H23
#$0, //'?Home', // &H24
#$0, //'?Left Arrow', // &H25
#$0, //'?Up Arrow', // &H26
#$0, //'?Right Arrow', // &H27
#$0, //'?Down Arrow', // &H28
#$0, //'??Select', // &H29
#$0, //'??PRINT', // &H2A
#$0, //'??Execute', // &H2B
#$0, //'?Print Screen', // &H2C
#$0, //'?Insert', // &H2D
#$0, //'?Delete', // &H2E
#$0, //'??Help', // &H2F
')', // &H30
'!', // &H31
'@', // &H32
'#', // &H33
'$', // &H34
'%', // &H35
'^', // &H36
'&', // &H37
'*', // &H38
'(', // &H39
#$0, //'??3A', // &H3A
#$0, //'??3B', // &H3B
#$0, //'??3C', // &H3C
#$0, //'??3D', // &H3D
#$0, //'??3E', // &H3E
#$0, //'??3F', // &H3F
#$0, //'??40', // &H40
'A', // &H41
'B', // &H42
'C', // &H43
'D', // &H44
'E', // &H45
'F', // &H46
'G', // &H47
'H', // &H48
'I', // &H49
'J', // &H4A
'K', // &H4B
'L', // &H4C
'M', // &H4D
'N', // &H4E
'O', // &H4F
'P', // &H50
'Q', // &H51
'R', // &H52
'S', // &H53
'T', // &H54
'U', // &H55
'V', // &H56
'W', // &h57
'X', // &H58
'Y', // &H59
'Z', // &H5A
#$0, //'??5B', // &H5B
#$0, //'??5C', // &H5C
#$0, //'??5D', // &H5D
#$0, //'??5E', // &H5E
#$0, //'??5F', // &H5F
#$0, //'?Number Pad 0', // &H60
#$0, //'?Number Pad 1', // &H61
#$0, //'?Number Pad 2', // &H62
#$0, //'?Number Pad 3', // &H63
#$0, //'?Number Pad 4', // &H64
#$0, //'?Number Pad 5', // &H65
#$0, //'?Number Pad 6', // &H66
#$0, //'?Number Pad 7', // &H67
#$0, //'?Number Pad 8', // &H68
#$0, //'?Number Pad 9', // &H69
#$0, //'?Number Pad *', // &H6A
#$0, //'?Number Pad +', // &H6B
#$0, //'??Separator', // &H6C
#$0, //'?Number Pad -', // &H6D
#$0, //'?Number Pad .', // &H6E
#$0, //'?Number Pad /', // &H6F
#$0, //'?F1', // &H70
#$0, //'?F2', // &H71
#$0, //'?F3', // &H72
#$0, //'?F4', // &H73
#$0, //'?F5', // &H74
#$0, //'?F6', // &H75
#$0, //'?F7', // &H76
#$0, //'?F8', // &H77
#$0, //'?F9', // &H78
#$0, //'?F10', // &H79
#$0, //'?F11', // &H7A
#$0, //'?F12', // &H7B
#$0, //'??F13', // &H7C
#$0, //'??F14', // &H7D
#$0, //'??F15', // &H7E
#$0, //'??F16', // &H7F
#$0, //'??F17', // &H80
#$0, //'??F18', // &H81
#$0, //'??F19', // &H82
#$0, //'??F20', // &H83
#$0, //'??F21', // &H84
#$0, //'??F22', // &H85
#$0, //'??F23', // &H86
#$0, //'??F24', // &H87
#$0, //'??88', // &H88
#$0, //'??89', // &H89
#$0, //'??8A', // &H8A
#$0, //'??8B', // &H8B
#$0, //'??8C', // &H8C
#$0, //'??8D', // &H8D
#$0, //'??8E', // &H8E
#$0, //'??8F', // &H8F
#$0, //'??Num Lock', // &H90
#$0, //'??Scroll Lock', // &H91
#$0, //'?92', // &H92
#$0, //'?93', // &H93
#$0, //'?94', // &H94
#$0, //'?95', // &H95
#$0, //'?96', // &H96
#$0, //'?97', // &H97
#$0, //'?98', // &H98
#$0, //'?99', // &H99
#$0, //'?9A', // &H9A
#$0, //'?9B', // &H9B
#$0, //'?9C', // &H9C
#$0, //'?9D', // &H9D
#$0, //'?9E', // &H9E
#$0, //'?9F', // &H9F
#$0, //'?A0', // &HA0
#$0, //'?A1', // &HA1
#$0, //'?A2', // &HA2
#$0, //'?A3', // &HA3
#$0, //'?A4', // &HA4
#$0, //'?A5', // &HA5
#$0, //'?A6', // &HA6
#$0, //'?A7', // &HA7
#$0, //'?A8', // &HA8
#$0, //'?A9', // &HA9
#$0, //'?AA', // &HAA
#$0, //'?AB', // &HAB
#$0, //'?AC', // &HAC
#$0, //'?AD', // &HAD
#$0, //'?AE', // &HAE
#$0, //'?AF', // &HAF
#$0, //'?B0', // &HB0
#$0, //'?B1', // &HB1
#$0, //'?B2', // &HB2
#$0, //'?B3', // &HB3
#$0, //'?B4', // &HB4
#$0, //'?B5', // &HB5
#$0, //'?B6', // &HB6
#$0, //'?B7', // &HB7
#$0, //'?B8', // &HB8
#$0, //'?B9', // &HB9
':', // &HBA
'+', // &HBB
'<', // &HBC
'_', // &HBD
'>', // &HBE
'?', // &HBF
'~', // &HC0
#$0, //'??C1', // &HC1
#$0, //'??C2', // &HC2
#$0, //'??C3', // &HC3
#$0, //'??C4', // &HC4
#$0, //'??C5', // &HC5
#$0, //'??C6', // &HC6
#$0, //'??C7', // &HC7
#$0, //'??C8', // &HC8
#$0, //'??C9', // &HC9
#$0, //'??CA', // &HCA
#$0, //'??CB', // &HCB
#$0, //'??CC', // &HCC
#$0, //'??CD', // &HCD
#$0, //'??CE', // &HCE
#$0, //'??CF', // &HCF
#$0, //'??D0', // &HD0
#$0, //'??D1', // &HD1
#$0, //'??D2', // &HD2
#$0, //'??D3', // &HD3
#$0, //'??D4', // &HD4
#$0, //'??D5', // &HD5
#$0, //'??D6', // &HD6
#$0, //'??D7', // &HD7
#$0, //'??D8', // &HD8
#$0, //'??D9', // &HD9
#$0, //'??DA', // &HDA
'{', // &HDB
'|', // &HDC
'}', // &HDD
'"', // &HDE
#$0, //'??DF', // &HDF
#$0, //'??E0', // &HE0
#$0, //'??E1', // &HE1
#$0, //'??E2', // &HE2
#$0, //'??E3', // &HE3
#$0, //'??E4', // &HE4
#$0, //'??E5', // &HE5
#$0, //'??E6', // &HE6
#$0, //'??E7', // &HE7
#$0, //'??E8', // &HE8
#$0, //'??E9', // &HE9
#$0, //'??EA', // &HEA
#$0, //'??EB', // &HEB
#$0, //'??EC', // &HEC
#$0, //'??ED', // &HED
#$0, //'??EE', // &HEE
#$0, //'??EF', // &HEF
#$0, //'??F0', // &HF0
#$0, //'??F1', // &HF1
#$0, //'??F2', // &HF2
#$0, //'??F3', // &HF3
#$0, //'??F4', // &HF4
#$0, //'??F5', // &HF5
#$0, //'??F6', // &HF6
#$0, //'??F7', // &HF7
#$0, //'??F8', // &HF8
#$0, //'??F9', // &HF9
#$0, //'??FA', // &HFA
#$0, //'??FB', // &HFB
#$0, //'??FC', // &HFC
#$0, //'??FD', // &HFD
#$0, //'??FE', // &HFE
#$0 //'??FF' // &HFF
));
type
TUSVKey = record
IsShift: Boolean;
VKey: Word;
end;
function CharToUSVKey(ch: AnsiChar): TUSVKey;
implementation
var
_CharToUSVKey: array[0..127] of TUSVKey;
_Initialized: Boolean = False;
procedure Init; forward;
function CharToUSVKey(ch: AnsiChar): TUSVKey;
begin
if Ord(ch) > 127 then
begin
Result.VKey := 0;
Result.IsShift := False;
Exit;
end;
if not _Initialized then
Init;
Result := _CharToUSVKey[Ord(ch)];
end;
procedure Init;
var
shift, vk: Integer;
ch: Char;
begin
_Initialized := True;
for shift := 0 to 1 do
begin
for vk := 0 to 255 do
begin
ch := SUSVkeyChars[shift, vk];
if ch <> #0 then
begin
_CharToUSVKey[Ord(ch)].IsShift := shift = 1;
_CharToUSVKey[Ord(ch)].VKey := vk;
end;
end;
end;
end;
end.