1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
unit Keymap;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, fgl, Constants, LCLType, LCLProc, Grids;
type
TKeybindings = specialize TFPGmap<Word, Integer>;
procedure LoadDefaultKeybindings;
procedure LoadCustomKeybindings(Grid: TStringGrid);
var
Keybindings: TKeybindings;
implementation
procedure LoadDefaultKeybindings;
begin
Keybindings.Clear;
Keybindings.Add(VK_Q, C_3);
Keybindings.Add(VK_W, CS3);
Keybindings.Add(VK_E, D_3);
Keybindings.Add(VK_R, DS3);
Keybindings.Add(VK_T, E_3);
Keybindings.Add(VK_Y, F_3);
Keybindings.Add(VK_U, FS3);
Keybindings.Add(VK_I, G_3);
Keybindings.Add(VK_O, GS3);
Keybindings.Add(VK_P, A_3);
Keybindings.Add(VK_OEM_4, AS3);
Keybindings.Add(VK_OEM_6, B_3);
Keybindings.Add(VK_OEM_5, B_4);
Keybindings.Add(VK_A, C_4);
Keybindings.Add(VK_S, CS4);
Keybindings.Add(VK_D, D_4);
Keybindings.Add(VK_F, DS4);
Keybindings.Add(VK_G, E_4);
Keybindings.Add(VK_H, F_4);
Keybindings.Add(VK_J, FS4);
Keybindings.Add(VK_K, G_4);
Keybindings.Add(VK_L, GS4);
Keybindings.Add(VK_OEM_1, A_4);
Keybindings.Add(VK_OEM_7, AS4);
Keybindings.Add(VK_Z, C_5);
Keybindings.Add(VK_X, CS5);
Keybindings.Add(VK_C, D_5);
Keybindings.Add(VK_V, DS5);
Keybindings.Add(VK_B, E_5);
Keybindings.Add(VK_N, F_5);
Keybindings.Add(VK_M, FS5);
Keybindings.Add(VK_OEM_COMMA, G_5);
Keybindings.Add(VK_OEM_PERIOD, GS5);
Keybindings.Add(VK_OEM_2, A_5);
end;
procedure LoadCustomKeybindings(Grid: TStringGrid);
var
I: Integer;
SC: TShortCut;
begin
Keybindings.Clear;
for I := 1 to Grid.RowCount-1 do begin
SC := TextToShortCut(Grid.Cells[0, I]);
if SC = 0 then Continue;
if NoteToCodeMap.IndexOf(Grid.Cells[1, I]) = -1 then Continue;
Keybindings.Add(SC, NoteToCodeMap.KeyData[Grid.Cells[1, I]]);
end;
end;
begin
Keybindings := TKeybindings.Create;
end.
|