~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to ide/keymapping.pp

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
interface
33
33
 
34
34
uses
35
 
  LCLIntf, LCLType, LCLProc, AvgLvlTree,
 
35
  LCLIntf, LCLType, LCLProc, AvgLvlTree, Laz2_XMLCfg,
36
36
  Forms, Classes, SysUtils, Buttons, LResources, Controls,
37
37
  Dialogs, StringHashList, ExtCtrls,
38
 
  SynEditKeyCmds, SynPluginTemplateEdit, SynPluginSyncroEdit, Laz_XMLCfg,
39
 
  PropEdits, IDECommands, LazarusIDEStrConsts;
 
38
  SynEditKeyCmds, SynPluginTemplateEdit, SynPluginSyncroEdit,
 
39
  PropEdits, IDECommands, LazarusIDEStrConsts, Debugger;
40
40
 
41
41
type
42
42
  TKeyMapScheme = (
56
56
    'Custom'
57
57
    );
58
58
 
 
59
  (* SynEdit Plugins
 
60
     Offsets for the fixed ec... commands, defined in IDECommands
 
61
     Used in EditorOptions
 
62
  *)
 
63
  ecIdePTmplOffset      = ecSynPTmplEdNextCell - ecIdePTmplEdNextCell;
 
64
  ecIdePTmplOutOffset   = ecSynPTmplEdNextCell - ecIdePTmplEdOutNextCell;
 
65
  ecIdePSyncroOffset    = ecSynPSyncroEdNextCell - ecIdePSyncroEdNextCell;
 
66
  ecIdePSyncroOutOffset = ecSynPSyncroEdNextCell - ecIdePSyncroEdOutNextCell;
 
67
  ecIdePSyncroSelOffset = ecSynPSyncroEdStart    - ecIdePSyncroEdSelStart;
 
68
 
59
69
type
60
70
  //---------------------------------------------------------------------------
61
71
  // TKeyCommandCategory is used to divide the key commands in handy packets
73
83
  { TKeyCommandRelation }
74
84
 
75
85
  TKeyCommandRelation = class(TIDECommand)
 
86
  private
 
87
    procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState;
 
88
                        NewKeyB: word; NewShiftB: TShiftState);
 
89
    procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState);
 
90
    procedure SetCombo(NewKey1A: word; NewShift1A: TShiftState;
 
91
                       NewKey1B: word; NewShift1B: TShiftState;
 
92
                       NewKey2A: word; NewShift2A: TShiftState;
 
93
                       NewKey2B: word; NewShift2B: TShiftState);
 
94
    procedure SetCombo(NewKey1A: word; NewShift1A: TShiftState;
 
95
                       NewKey1B: word; NewShift1B: TShiftState);
 
96
    procedure MapShortcut(AScheme: TKeyMapScheme);
 
97
    procedure GetDefaultKeyForCommand;
 
98
    procedure GetDefaultKeyForWindowsScheme;
 
99
    procedure GetDefaultKeyForClassicScheme;
 
100
    procedure GetDefaultKeyForMacOSXScheme;
 
101
    procedure GetDefaultKeyForMacOSXLazScheme;
76
102
  protected
77
 
    procedure SetShortcutA(const AValue: TIDEShortCut); override;
78
 
    procedure SetShortcutB(const AValue: TIDEShortCut); override;
79
103
  public
80
104
    function GetLocalizedName: string; override;
81
105
  end;
82
106
 
83
107
  { TLoadedKeyCommand
84
 
    used for  }
 
108
    Used to keep shortcuts for unknown commands.
 
109
    A command can be unknown, if it is currently not registered, e.g.
 
110
    because the user started an IDE without the package that registered the command.
 
111
    When an IDE with the package is started the shortcut is restored. }
85
112
 
86
113
  TLoadedKeyCommand = class
87
114
  public
111
138
    function GetRelationCount: integer;
112
139
    function AddCategory(const Name, Description: string;
113
140
                         TheScope: TIDECommandScope): integer;
114
 
    function Add(Category: TIDECommandCategory; Command: TIDECommand):integer;
115
 
    function Add(Category: TIDECommandCategory;
116
 
                 const Name, LocalizedName: string;
117
 
                 Command: word; TheKeyA, TheKeyB: TIDEShortCut;
118
 
                 const OnExecuteMethod: TNotifyEvent = nil;
119
 
                 const OnExecuteProc: TNotifyProcedure = nil):integer;
 
141
    function SetKeyCommandToLoadedValues(Cmd: TKeyCommandRelation): TLoadedKeyCommand;
120
142
    function AddDefault(Category: TIDECommandCategory;
121
 
                        const Name, LocalizedName: string;
122
 
                        Command: word):integer;
 
143
                        const Name, LocalizedName: string; Command: word):integer;
123
144
    procedure SetExtToolCount(NewCount: integer);
124
145
  protected
125
146
    function GetCategory(Index: integer): TIDECommandCategory; override;
126
147
  public
127
148
    constructor Create;
128
149
    destructor Destroy; override;
129
 
    procedure CreateDefaultMapping;
 
150
    procedure DefineCommandCategories;
130
151
    procedure Clear;
131
152
    function Count: integer;
132
153
    function CategoryCount: integer; override;
133
 
    function Find(Key: TIDEShortCut; IDEWindowClass: TCustomFormClass
134
 
                  ): TKeyCommandRelation;
 
154
    function Find(Key: TIDEShortCut; IDEWindowClass: TCustomFormClass): TKeyCommandRelation;
135
155
    function FindIDECommand(ACommand:word): TIDECommand; override;
136
156
    function FindByCommand(ACommand:word): TKeyCommandRelation;
137
157
    function FindCategoryByName(const CategoryName: string): TIDECommandCategory; override;
138
158
    function FindCommandByName(const CommandName: string): TIDECommand; override;
 
159
    function FindCommandsByShortCut(const ShortCutMask: TIDEShortCut;
 
160
      IDEWindowClass: TCustomFormClass = nil): TFPList; override;
139
161
    function TranslateKey(Key: word; Shift: TShiftState;
140
162
      IDEWindowClass: TCustomFormClass; UseLastKey: boolean = true): word;
141
163
    function IndexOf(ARelation: TKeyCommandRelation): integer;
143
165
    function LoadFromXMLConfig(XMLConfig:TXMLConfig; const Path: String):boolean;
144
166
    function SaveToXMLConfig(XMLConfig:TXMLConfig; const Path: String):boolean;
145
167
    procedure AssignTo(ASynEditKeyStrokes:TSynEditKeyStrokes;
146
 
                       IDEWindowClass: TCustomFormClass);
 
168
                       IDEWindowClass: TCustomFormClass;
 
169
                       ACommandOffsetOffset: Integer = 0);
147
170
    procedure Assign(List: TKeyCommandRelationList);
148
171
    procedure LoadScheme(const SchemeName: string);
149
172
    function CreateUniqueCategoryName(const AName: string): string;
150
173
    function CreateUniqueCommandName(const AName: string): string;
151
174
    function CreateNewCommandID: word;
152
 
    function CreateCategory(Parent: TIDECommandCategory;
 
175
    function CreateCategory({%H-}Parent: TIDECommandCategory;
153
176
                            const AName, Description: string;
154
177
                            Scope: TIDECommandScope = nil): TIDECommandCategory; override;
155
178
    function CreateCommand(Category: TIDECommandCategory;
169
192
function FindKeymapConflicts(Keymap: TKeyCommandRelationList;
170
193
                      Protocol: TStrings; out Index1, Index2: integer): integer;
171
194
function EditorCommandToDescriptionString(cmd: word): String;
172
 
function EditorCommandLocalizedName(cmd: word;
173
 
                                    const DefaultName: string): string;
174
195
 
175
 
procedure GetDefaultKeyForCommand(Command: word;
176
 
                                  out TheKeyA, TheKeyB: TIDEShortCut);
177
 
procedure GetDefaultKeyForWindowsScheme(Command: word;
178
 
                                  out TheKeyA, TheKeyB: TIDEShortCut);
179
 
procedure GetDefaultKeyForClassicScheme(Command: word;
180
 
                                        var TheKeyA, TheKeyB: TIDEShortCut);
181
 
procedure GetDefaultKeyForMacOSXScheme(Command: word;
182
 
                                       var TheKeyA, TheKeyB: TIDEShortCut);
183
 
procedure GetDefaultKeyForMacOSXLazScheme(Command: word;
184
 
                                       var TheKeyA, TheKeyB: TIDEShortCut);
185
196
function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme;
186
197
 
187
198
function ShiftStateToCfgStr(Shift: TShiftState): string;
194
205
 
195
206
implementation
196
207
 
197
 
 
198
208
const
199
209
  KeyMappingFormatVersion = 6;
200
210
 
201
 
function EditorCommandLocalizedName(cmd: word;
202
 
  const DefaultName: string): string;
203
 
begin
204
 
  Result:=EditorCommandToDescriptionString(cmd);
205
 
  if Result=srkmecunknown then
206
 
    Result:=DefaultName;
207
 
end;
208
 
 
209
 
procedure GetDefaultKeyForCommand(Command: word; out TheKeyA,
210
 
  TheKeyB: TIDEShortCut);
211
 
begin
212
 
  {$IFDEF LCLCarbon}
213
 
  GetDefaultKeyForMacOSXScheme(Command,TheKeyA,TheKeyB);
214
 
  {$ELSE}
215
 
  GetDefaultKeyForWindowsScheme(Command,TheKeyA,TheKeyB);
216
 
  {$ENDIF}
217
 
end;
218
 
 
219
 
procedure GetDefaultKeyForWindowsScheme(Command: word;
220
 
  out TheKeyA, TheKeyB: TIDEShortCut);
221
 
 
222
 
  procedure SetResult(NewKeyA: word; NewShiftA: TShiftState;
223
 
    NewKeyB: word; NewShiftB: TShiftState);
224
 
  begin
225
 
    TheKeyA:=IDEShortCut(NewKeyA,NewShiftA,VK_UNKNOWN,[]);
226
 
    TheKeyB:=IDEShortCut(NewKeyB,NewShiftB,VK_UNKNOWN,[]);
227
 
  end;
228
 
 
229
 
  procedure SetResult2(
230
 
    NewKey1A: word; NewShift1A: TShiftState;
231
 
    NewKey1B: word; NewShift1B: TShiftState;
232
 
    NewKey2A: word; NewShift2A: TShiftState;
233
 
    NewKey2B: word; NewShift2B: TShiftState);
234
 
  begin
235
 
    TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B);
236
 
    TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B);
237
 
  end;
238
 
 
239
 
 
240
 
//  procedure SetResult(NewKeyA: word; NewShiftA: TShiftState);
241
 
//  begin
242
 
//    SetResult(NewKeyA,NewShiftA,VK_UNKNOWN,[]);
243
 
//  end;
244
 
 
245
 
begin
246
 
  case Command of
247
 
  // moving
248
 
  ecWordLeft: SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
249
 
  ecWordRight: SetResult(VK_RIGHT, [ssCtrl],VK_UNKNOWN,[]); // WS c
250
 
  ecLineStart: SetResult(VK_HOME, [],VK_UNKNOWN,[]);
251
 
  ecLineEnd: SetResult(VK_END, [],VK_UNKNOWN,[]);
252
 
  ecPageUp: SetResult(VK_PRIOR, [],VK_UNKNOWN,[]); // ,VK_R,[SSCtrl],VK_UNKNOWN,[]);
253
 
  ecPageDown: SetResult(VK_NEXT, [],VK_UNKNOWN,[]); // ,VK_W,[SSCtrl],VK_UNKNOWN,[]);
254
 
  ecPageLeft: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
255
 
  ecPageRight: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
256
 
  ecPageTop: SetResult(VK_PRIOR, [ssCtrl],VK_UNKNOWN,[]);
257
 
  ecPageBottom: SetResult(VK_NEXT, [ssCtrl],VK_UNKNOWN,[]);
258
 
  ecEditorTop: SetResult(VK_HOME,[ssCtrl],VK_UNKNOWN,[]);
259
 
  ecEditorBottom: SetResult(VK_END,[ssCtrl],VK_UNKNOWN,[]);
260
 
  ecScrollUp: SetResult(VK_UP, [ssCtrl],VK_UNKNOWN,[]);
261
 
  ecScrollDown: SetResult(VK_DOWN, [ssCtrl],VK_UNKNOWN,[]);
262
 
  ecScrollLeft: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
263
 
  ecScrollRight: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
264
 
 
265
 
  // selection
266
 
  ecCopy: SetResult(VK_C,[ssCtrl],VK_Insert,[ssCtrl]);
267
 
  ecCut: SetResult(VK_X,[ssCtrl],VK_Delete,[ssShift]);
268
 
  ecPaste: SetResult(VK_V,[ssCtrl],VK_Insert,[ssShift]);
269
 
  ecNormalSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
270
 
  ecColumnSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
271
 
  ecLineSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
272
 
  ecSelWordLeft: SetResult(VK_LEFT,[ssCtrl,ssShift],VK_UNKNOWN,[]);
273
 
  ecSelWordRight: SetResult(VK_RIGHT,[ssCtrl,ssShift],VK_UNKNOWN,[]);
274
 
  ecSelLineStart: SetResult(VK_HOME,[ssShift],VK_UNKNOWN,[]);
275
 
  ecSelLineEnd: SetResult(VK_END,[ssShift],VK_UNKNOWN,[]);
276
 
  ecSelPageTop: SetResult(VK_PRIOR, [ssShift,ssCtrl],VK_UNKNOWN,[]);
277
 
  ecSelPageBottom: SetResult(VK_NEXT, [ssShift,ssCtrl],VK_UNKNOWN,[]);
278
 
  ecSelEditorTop: SetResult(VK_HOME, [ssShift,ssCtrl],VK_UNKNOWN,[]);
279
 
  ecSelEditorBottom: SetResult(VK_END, [ssShift,ssCtrl],VK_UNKNOWN,[]);
280
 
  ecSelectAll: SetResult(VK_A,[ssCtrl],VK_UNKNOWN,[]);
281
 
  ecSelectToBrace: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
282
 
  ecSelectCodeBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
283
 
  ecSelectWord: SetResult2(VK_K,[SSCtrl],VK_T,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
284
 
  ecSelectLine: SetResult2(VK_K,[SSCtrl],VK_L,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
285
 
  ecSelectParagraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
286
 
  ecSelectionUpperCase: SetResult2(VK_K,[SSCtrl],VK_N,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
287
 
  ecSelectionLowerCase: SetResult2(VK_K,[SSCtrl],VK_O,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
288
 
  ecSelectionTabs2Spaces: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
289
 
  ecSelectionEnclose: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
290
 
  ecSelectionComment: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
291
 
  ecSelectionUncomment: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
292
 
  ecToggleComment: SetResult(VK_OEM_2, [ssCtrl], VK_UNKNOWN, []);
293
 
  ecSelectionConditional: SetResult(VK_D, [ssShift,ssCtrl],VK_UNKNOWN,[]);
294
 
  ecSelectionSort: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
295
 
  ecSelectionBreakLines: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
296
 
 
297
 
  ecBlockSetBegin   : SetResult2(VK_K,[ssCtrl],VK_B,[],  VK_K,[ssCtrl],VK_B,[ssCtrl]);
298
 
  ecBlockSetEnd     : SetResult2(VK_K,[ssCtrl],VK_K,[],  VK_K,[ssCtrl],VK_K,[ssCtrl]);
299
 
  ecBlockToggleHide : SetResult2(VK_K,[ssCtrl],VK_H,[],  VK_K,[ssCtrl],VK_H,[ssCtrl]);
300
 
  ecBlockHide       : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
301
 
  ecBlockShow       : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
302
 
  ecBlockMove       : SetResult2(VK_K,[ssCtrl],VK_V,[],  VK_K,[ssCtrl],VK_V,[ssCtrl]);
303
 
  ecBlockCopy       : SetResult2(VK_K,[ssCtrl],VK_C,[],  VK_K,[ssCtrl],VK_C,[ssCtrl]);
304
 
  ecBlockDelete     : SetResult2(VK_K,[ssCtrl],VK_Y,[],  VK_K,[ssCtrl],VK_Y,[ssCtrl]);
305
 
  ecBlockGotoBegin  : SetResult2(VK_Q,[ssCtrl],VK_B,[ssCtrl],  VK_UNKNOWN,[],VK_UNKNOWN,[]);
306
 
  ecBlockGotoEnd    : SetResult2(VK_Q,[ssCtrl],VK_K,[ssCtrl],  VK_UNKNOWN,[],VK_UNKNOWN,[]);
307
 
 
308
 
  // column mode selection
309
 
  ecColSelUp: SetResult(VK_UP, [ssAlt, ssShift], VK_UNKNOWN,[]);
310
 
  ecColSelDown: SetResult(VK_DOWN, [ssAlt, ssShift], VK_UNKNOWN,[]);
311
 
  ecColSelLeft: SetResult(VK_LEFT, [ssAlt, ssShift], VK_UNKNOWN,[]);
312
 
  ecColSelRight: SetResult(VK_RIGHT, [ssAlt, ssShift], VK_UNKNOWN,[]);
313
 
  ecColSelPageDown: SetResult(VK_NEXT, [ssAlt, ssShift], VK_UNKNOWN,[]);
314
 
  ecColSelPageBottom: SetResult(VK_NEXT, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
315
 
  ecColSelPageUp: SetResult(VK_PRIOR, [ssAlt, ssShift], VK_UNKNOWN,[]);
316
 
  ecColSelPageTop: SetResult(VK_PRIOR, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
317
 
  ecColSelLineStart: SetResult(VK_HOME, [ssAlt, ssShift], VK_UNKNOWN,[]);
318
 
  ecColSelLineEnd: SetResult(VK_END, [ssAlt, ssShift], VK_UNKNOWN,[]);
319
 
  ecColSelEditorTop: SetResult(VK_HOME, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
320
 
  ecColSelEditorBottom: SetResult(VK_END, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
321
 
 
322
 
  // editing
323
 
  ecBlockIndent: SetResult2(VK_I,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_I,[]);
324
 
  ecBlockUnindent: SetResult2(VK_U,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_U,[]);
325
 
  ecDeleteLastChar: SetResult(VK_BACK, [],VK_BACK, [ssShift]);  // ctrl H used for scroll window.
326
 
  ecDeleteChar: SetResult(VK_DELETE,[],VK_UNKNOWN,[]); // ctrl G conflicts with GO
327
 
  ecDeleteWord: SetResult(VK_T,[ssCtrl],VK_UNKNOWN,[]);
328
 
  ecDeleteLastWord: SetResult(VK_BACK,[ssCtrl],VK_UNKNOWN,[]);
329
 
  ecDeleteBOL: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
330
 
  ecDeleteEOL: SetResult2(VK_Y,[ssCtrl,ssShift],VK_UNKNOWN,[],VK_Q,[ssCtrl],VK_Y,[]);
331
 
  ecDeleteLine: SetResult(VK_Y,[ssCtrl],VK_UNKNOWN,[]);
332
 
  ecClearAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
333
 
  ecLineBreak: SetResult(VK_RETURN,[],VK_UNKNOWN,[]);
334
 
  ecInsertLine: SetResult(VK_N,[ssCtrl],VK_UNKNOWN,[]);
335
 
  ecInsertCharacter: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
336
 
  ecInsertGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
337
 
  ecInsertLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
338
 
  ecInsertModifiedLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
339
 
  ecInsertUserName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
340
 
  ecInsertDateTime: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
341
 
  ecInsertChangeLogEntry: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
342
 
  ecInsertCVSAuthor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
343
 
  ecInsertCVSDate: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
344
 
  ecInsertCVSHeader: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
345
 
  ecInsertCVSID: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
346
 
  ecInsertCVSLog: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
347
 
  ecInsertCVSName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
348
 
  ecInsertCVSRevision: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
349
 
  ecInsertCVSSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
350
 
  ecInsertGUID: SetResult(VK_G, [ssCtrl,ssShift],VK_UNKNOWN,[]);
351
 
 
352
 
  // command commands
353
 
  ecUndo: SetResult(VK_Z,[ssCtrl],VK_UNKNOWN,[]);
354
 
  ecRedo: SetResult(VK_Z,[ssCtrl,ssShift],VK_UNKNOWN,[]);
355
 
 
356
 
  // search & replace
357
 
  ecMatchBracket: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
358
 
  ecFind: SetResult2(VK_Q,[SSCtrl],VK_F,[],VK_F,[SSCtrl],VK_UNKNOWN,[]);
359
 
  ecFindNext: SetResult2(VK_F3,[],VK_UNKNOWN,[],VK_L,[SSCtrl],VK_UNKNOWN,[]);
360
 
  ecFindPrevious: SetResult(VK_F3,[ssShift],VK_UNKNOWN,[]);
361
 
  ecFindInFiles: SetResult(VK_F,[ssCtrl,ssShift],VK_UNKNOWN,[]);
362
 
  ecReplace: SetResult2(VK_R,[SSCtrl],VK_UNKNOWN,[],  VK_Q,[SSCtrl],VK_A,[]);
363
 
  ecIncrementalFind: SetResult(VK_E,[SSCtrl],VK_UNKNOWN,[]);
364
 
  ecGotoLineNumber: SetResult2(VK_G,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_G,[]);
365
 
  ecFindNextWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
366
 
  ecFindPrevWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
367
 
  ecJumpBack: SetResult(VK_H,[ssCtrl],VK_UNKNOWN,[]);
368
 
  ecJumpForward: SetResult(VK_H,[ssCtrl,ssShift],VK_UNKNOWN,[]);
369
 
  ecAddJumpPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
370
 
  ecViewJumpHistory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
371
 
  ecJumpToPrevError: SetResult(VK_F8,[ssCtrl, ssShift],VK_UNKNOWN,[]);
372
 
  ecJumpToNextError: SetResult(VK_F8,[ssCtrl],VK_UNKNOWN,[]);
373
 
  ecOpenFileAtCursor: SetResult2(VK_RETURN,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
374
 
  ecProcedureList: SetResult(VK_G, [ssAlt],VK_UNKNOWN,[]);
375
 
 
376
 
 
377
 
  // marker
378
 
  ecSetFreeBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
379
 
  ecPrevBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
380
 
  ecNextBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
381
 
  ecGotoMarker0: SetResult2(VK_0,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_0,[]);
382
 
  ecGotoMarker1: SetResult2(VK_1,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_1,[]);
383
 
  ecGotoMarker2: SetResult2(VK_2,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_2,[]);
384
 
  ecGotoMarker3: SetResult2(VK_3,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_3,[]);
385
 
  ecGotoMarker4: SetResult2(VK_4,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_4,[]);
386
 
  ecGotoMarker5: SetResult2(VK_5,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_5,[]);
387
 
  ecGotoMarker6: SetResult2(VK_6,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_6,[]);
388
 
  ecGotoMarker7: SetResult2(VK_7,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_7,[]);
389
 
  ecGotoMarker8: SetResult2(VK_8,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_8,[]);
390
 
  ecGotoMarker9: SetResult2(VK_9,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_9,[]);
391
 
  ecToggleMarker0: SetResult2(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_0,[]);
392
 
  ecToggleMarker1: SetResult2(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_1,[]);
393
 
  ecToggleMarker2: SetResult2(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_2,[]);
394
 
  ecToggleMarker3: SetResult2(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_3,[]);
395
 
  ecToggleMarker4: SetResult2(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_4,[]);
396
 
  ecToggleMarker5: SetResult2(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_5,[]);
397
 
  ecToggleMarker6: SetResult2(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_6,[]);
398
 
  ecToggleMarker7: SetResult2(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_7,[]);
399
 
  ecToggleMarker8: SetResult2(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_8,[]);
400
 
  ecToggleMarker9: SetResult2(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_9,[]);
401
 
  ecSetMarker0: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
402
 
  ecSetMarker1: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
403
 
  ecSetMarker2: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
404
 
  ecSetMarker3: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
405
 
  ecSetMarker4: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
406
 
  ecSetMarker5: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
407
 
  ecSetMarker6: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
408
 
  ecSetMarker7: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
409
 
  ecSetMarker8: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
410
 
  ecSetMarker9: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
411
 
 
412
 
  // codetools
413
 
  ecAutoCompletion: SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[]);
414
 
  ecWordCompletion: SetResult(VK_W,[ssCtrl],VK_UNKNOWN,[]);
415
 
  ecCompleteCode: SetResult(VK_C,[ssCtrl,ssShift],VK_UNKNOWN,[]);
416
 
  ecIdentCompletion: SetResult(VK_SPACE,[ssCtrl],VK_UNKNOWN,[]);
417
 
  ecShowCodeContext: SetResult(VK_SPACE,[ssCtrl,ssShift],VK_UNKNOWN,[]);
418
 
  ecExtractProc: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
419
 
  ecFindIdentifierRefs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
420
 
  ecRenameIdentifier: SetResult(VK_E,[ssShift,ssCtrl],VK_UNKNOWN,[]);
421
 
  ecInvertAssignment: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
422
 
  ecSyntaxCheck: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
423
 
  ecGuessUnclosedBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
424
 
  ecGuessMisplacedIFDEF: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
425
 
  ecConvertDFM2LFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
426
 
  ecCheckLFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
427
 
  ecConvertDelphiUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
428
 
  ecConvertDelphiProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
429
 
  ecConvertDelphiPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
430
 
  ecConvertEncoding: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
431
 
  ecFindProcedureDefinition: SetResult(VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[]);
432
 
  ecFindProcedureMethod: SetResult(VK_DOWN,[ssShift,SSCtrl],VK_UNKNOWN,[]);
433
 
  ecFindDeclaration: SetResult(VK_UP,[ssAlt],VK_UNKNOWN,[]);
434
 
  ecFindBlockOtherEnd: SetResult2(VK_Q,[ssCtrl],VK_K,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
435
 
  ecFindBlockStart: SetResult2(VK_Q,[ssCtrl],VK_B,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
436
 
  ecGotoIncludeDirective: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
437
 
  ecShowAbstractMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
438
 
  ecRemoveEmptyMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
439
 
  ecRemoveUnusedUnits: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
440
 
  ecFindOverloads: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
441
 
 
442
 
  // source notebook
443
 
  ecNextEditor: SetResult(VK_TAB, [ssCtrl], VK_UNKNOWN, []);
444
 
  ecPrevEditor: SetResult(VK_TAB, [ssShift,ssCtrl], VK_UNKNOWN, []);
445
 
  ecResetDebugger: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
446
 
  ecToggleBreakPoint: SetResult(VK_F5,[],VK_UNKNOWN,[]);
447
 
  ecMoveEditorLeft: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
448
 
  ecMoveEditorRight: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
449
 
  ecMoveEditorLeftmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
450
 
  ecMoveEditorRightmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
451
 
 
452
 
  ecNextSharedEditor:        SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
453
 
  ecPrevSharedEditor:        SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
454
 
  ecNextWindow:              SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
455
 
  ecPrevWindow:              SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
456
 
  ecMoveEditorNextWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
457
 
  ecMoveEditorPrevWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
458
 
  ecMoveEditorNewWindow:     SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
459
 
  ecCopyEditorNextWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
460
 
  ecCopyEditorPrevWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
461
 
  ecCopyEditorNewWindow:     SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
462
 
 
463
 
  ecGotoEditor1: SetResult(VK_1,[ssAlt],VK_UNKNOWN,[]);
464
 
  ecGotoEditor2: SetResult(VK_2,[ssAlt],VK_UNKNOWN,[]);
465
 
  ecGotoEditor3: SetResult(VK_3,[ssAlt],VK_UNKNOWN,[]);
466
 
  ecGotoEditor4: SetResult(VK_4,[ssAlt],VK_UNKNOWN,[]);
467
 
  ecGotoEditor5: SetResult(VK_5,[ssAlt],VK_UNKNOWN,[]);
468
 
  ecGotoEditor6: SetResult(VK_6,[ssAlt],VK_UNKNOWN,[]);
469
 
  ecGotoEditor7: SetResult(VK_7,[ssAlt],VK_UNKNOWN,[]);
470
 
  ecGotoEditor8: SetResult(VK_8,[ssAlt],VK_UNKNOWN,[]);
471
 
  ecGotoEditor9: SetResult(VK_9,[ssAlt],VK_UNKNOWN,[]);
472
 
  ecGotoEditor0: SetResult(VK_0,[ssAlt],VK_UNKNOWN,[]);
473
 
 
474
 
  ecLockEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
475
 
 
476
 
  EcFoldLevel1: SetResult(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[]);
477
 
  EcFoldLevel2: SetResult(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[]);
478
 
  EcFoldLevel3: SetResult(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[]);
479
 
  EcFoldLevel4: SetResult(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[]);
480
 
  EcFoldLevel5: SetResult(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[]);
481
 
  EcFoldLevel6: SetResult(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[]);
482
 
  EcFoldLevel7: SetResult(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[]);
483
 
  EcFoldLevel8: SetResult(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[]);
484
 
  EcFoldLevel9: SetResult(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[]);
485
 
  EcFoldLevel0: SetResult(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[]);
486
 
  EcFoldCurrent: SetResult(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[]);
487
 
  EcUnFoldCurrent: SetResult(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[]);
488
 
  EcToggleMarkupWord: SetResult(VK_M,[ssAlt],VK_UNKNOWN,[]);
489
 
 
490
 
  // file menu
491
 
  ecNew: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
492
 
  ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
493
 
  ecNewForm: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
494
 
  ecOpen: SetResult(VK_O,[ssCtrl],VK_UNKNOWN,[]);
495
 
  ecRevert: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
496
 
  ecSave: SetResult(VK_S,[ssCtrl],VK_UNKNOWN,[]);
497
 
  ecSaveAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
498
 
  ecSaveAll: SetResult(VK_S,[ssCtrl,ssShift],VK_UNKNOWN,[]);
499
 
  ecClose: SetResult(VK_F4,[ssCtrl],VK_UNKNOWN,[]);
500
 
  ecCloseAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
501
 
  ecCleanDirectory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
502
 
  ecRestart: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
503
 
  ecQuit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
504
 
 
505
 
  // view menu
506
 
  ecToggleObjectInsp: SetResult(VK_F11,[],VK_UNKNOWN,[]);
507
 
  ecToggleSourceEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
508
 
  ecToggleCodeExpl: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
509
 
  ecToggleFPDocEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
510
 
  ecToggleMessages: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
511
 
  ecToggleSearchResults: SetResult(VK_F,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
512
 
  ecToggleWatches: SetResult(VK_W,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
513
 
  ecToggleBreakPoints: SetResult(VK_B,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
514
 
  ecToggleLocals: SetResult(VK_L,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
515
 
  ecToggleCallStack: SetResult(VK_S,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
516
 
  ecToggleRegisters: SetResult(VK_R,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
517
 
  ecToggleAssembler: SetResult(VK_D,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
518
 
  ecToggleDebugEvents: SetResult(VK_V,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
519
 
  ecToggleDebuggerOut: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
520
 
  ecViewUnits: SetResult(VK_F12,[ssCtrl],VK_UNKNOWN,[]);
521
 
  ecViewForms: SetResult(VK_F12,[ssShift],VK_UNKNOWN,[]);
522
 
  ecViewUnitDependencies: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
523
 
  ecViewUnitInfo: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
524
 
  ecToggleFormUnit: SetResult(VK_F12,[],VK_UNKNOWN,[]);
525
 
  ecViewAnchorEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
526
 
  ecToggleCodeBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
527
 
  ecToggleRestrictionBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
528
 
  ecToggleCompPalette: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
529
 
  ecToggleIDESpeedBtns: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
530
 
 
531
 
  // project menu
532
 
  ecNewProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
533
 
  ecNewProjectFromFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
534
 
  ecOpenProject: SetResult(VK_F11,[ssCtrl],VK_UNKNOWN,[]);
535
 
  ecCloseProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
536
 
  ecSaveProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
537
 
  ecSaveProjectAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
538
 
  ecPublishProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
539
 
  ecProjectInspector: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
540
 
  ecAddCurUnitToProj: SetResult(VK_F11,[ssShift],VK_UNKNOWN,[]);
541
 
  ecRemoveFromProj: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
542
 
  ecViewProjectSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
543
 
  ecProjectOptions: SetResult(VK_F11,[ssShift,ssCtrl],VK_UNKNOWN,[]);
544
 
 
545
 
  // run menu
546
 
  ecBuild: SetResult(VK_F9,[ssCtrl],VK_UNKNOWN,[]);
547
 
  ecBuildAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
548
 
  ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
549
 
  ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
550
 
  ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[]);
551
 
  ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
552
 
  ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
553
 
  ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]);
554
 
  ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]);
555
 
  ecStepIntoInstr: SetResult(VK_F7,[ssAlt],VK_UNKNOWN,[]);
556
 
  ecStepOverInstr: SetResult(VK_F8,[ssAlt],VK_UNKNOWN,[]);
557
 
  ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[]);
558
 
  ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]);
559
 
  ecStopProgram: SetResult(VK_F2,[SSCtrl],VK_UNKNOWN,[]);
560
 
  ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
561
 
  ecRunParameters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
562
 
  ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
563
 
  ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
564
 
  ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
565
 
  ecInspect: SetResult(VK_F5,[ssAlt],VK_UNKNOWN,[]);
566
 
  ecEvaluate: SetResult(VK_F7,[ssCtrl],VK_UNKNOWN,[]);
567
 
  ecAddWatch: SetResult(VK_F5,[ssCtrl],VK_UNKNOWN,[]);
568
 
 
569
 
  // components menu
570
 
  ecNewPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
571
 
  ecOpenPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
572
 
  ecOpenPackageFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
573
 
  ecOpenPackageOfCurUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
574
 
  ecAddCurUnitToPkg: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
575
 
  ecPackageGraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
576
 
  ecEditInstallPkgs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
577
 
  ecConfigCustomComps: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
578
 
 
579
 
  // tools menu
580
 
  ecExtToolSettings: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
581
 
  ecBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
582
 
  ecConfigBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
583
 
  ecMakeResourceString: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
584
 
  ecDiff: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
585
 
 
586
 
  // environment menu
587
 
  ecEnvironmentOptions: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
588
 
  ecEditCodeTemplates: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
589
 
  ecCodeToolsDefinesEd: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
590
 
  ecRescanFPCSrcDir: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
591
 
 
592
 
  // help menu
593
 
  ecAboutLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
594
 
  ecOnlineHelp: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
595
 
  ecContextHelp: SetResult(VK_F1,[],VK_UNKNOWN,[]);
596
 
  ecEditContextHelp: SetResult(VK_F1,[ssShift,ssCtrl],VK_UNKNOWN,[]);
597
 
  ecReportingBug: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
598
 
 
599
 
  // designer
600
 
  ecDesignerCopy        : SetResult(VK_C,[ssCtrl],VK_Insert,[ssCtrl]);
601
 
  ecDesignerCut         : SetResult(VK_X,[ssCtrl],VK_Delete,[ssShift]);
602
 
  ecDesignerPaste       : SetResult(VK_V,[ssCtrl],VK_Insert,[ssShift]);
603
 
  ecDesignerSelectParent: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
604
 
  ecDesignerMoveToFront : SetResult(VK_PRIOR,[ssShift],VK_UNKNOWN,[]);
605
 
  ecDesignerMoveToBack  : SetResult(VK_NEXT,[ssShift],VK_UNKNOWN,[]);
606
 
  ecDesignerForwardOne  : SetResult(VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]);
607
 
  ecDesignerBackOne     : SetResult(VK_NEXT,[ssCtrl],VK_UNKNOWN,[]);
608
 
 
609
 
  else
610
 
    begin
611
 
      SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
612
 
      case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of
613
 
        // Edit template
614
 
        ecSynPTmplEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
615
 
        ecSynPTmplEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
616
 
        ecSynPTmplEdNextCellRotate:      SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
617
 
        ecSynPTmplEdNextCellSelRotate:   SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
618
 
        ecSynPTmplEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
619
 
        ecSynPTmplEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
620
 
        ecSynPTmplEdCellHome:            SetResult(VK_HOME, [],VK_UNKNOWN,[]);
621
 
        ecSynPTmplEdCellEnd:             SetResult(VK_END,  [],VK_UNKNOWN,[]);
622
 
        ecSynPTmplEdCellSelect:          SetResult(VK_A,    [ssCtrl],VK_UNKNOWN,[]);
623
 
        ecSynPTmplEdFinish:              SetResult(VK_RETURN,[],VK_UNKNOWN,[]);
624
 
        ecSynPTmplEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
625
 
      end;
626
 
      case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of
627
 
        // Edit template
628
 
        ecSynPTmplEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
629
 
        ecSynPTmplEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
630
 
        ecSynPTmplEdNextCellRotate:      SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
631
 
        ecSynPTmplEdNextCellSelRotate:   SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
632
 
        ecSynPTmplEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
633
 
        ecSynPTmplEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
634
 
        ecSynPTmplEdCellHome:            SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
635
 
        ecSynPTmplEdCellEnd:             SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
636
 
        ecSynPTmplEdCellSelect:          SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
637
 
        ecSynPTmplEdFinish:              SetResult(VK_RETURN,[],VK_UNKNOWN,[]);
638
 
        ecSynPTmplEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
639
 
      end;
640
 
      case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of
641
 
        // SyncroEdit
642
 
        ecSynPSyncroEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
643
 
        ecSynPSyncroEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
644
 
        ecSynPSyncroEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
645
 
        ecSynPSyncroEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
646
 
        ecSynPSyncroEdCellHome:            SetResult(VK_HOME, [],VK_UNKNOWN,[]);
647
 
        ecSynPSyncroEdCellEnd:             SetResult(VK_END,  [],VK_UNKNOWN,[]);
648
 
        ecSynPSyncroEdCellSelect:          SetResult(VK_A,    [ssCtrl],VK_UNKNOWN,[]);
649
 
        ecSynPSyncroEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
650
 
      end;
651
 
      case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of
652
 
        // SyncroEdit
653
 
        ecSynPSyncroEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
654
 
        ecSynPSyncroEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
655
 
        ecSynPSyncroEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
656
 
        ecSynPSyncroEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
657
 
        ecSynPSyncroEdCellHome:            SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
658
 
        ecSynPSyncroEdCellEnd:             SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
659
 
        ecSynPSyncroEdCellSelect:          SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
660
 
        ecSynPSyncroEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
661
 
      end;
662
 
      case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of
663
 
        // SyncroEdit, during selection
664
 
        ecSynPSyncroEdStart:               SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[]);
665
 
      end;
666
 
    end;
667
 
  end;
668
 
end;
669
 
 
670
 
procedure GetDefaultKeyForClassicScheme(Command: word;
671
 
  var TheKeyA, TheKeyB: TIDEShortCut);
672
 
 
673
 
  procedure SetResult(
674
 
    NewKey1A: word; NewShift1A: TShiftState;
675
 
    NewKey1B: word; NewShift1B: TShiftState;
676
 
    NewKey2A: word; NewShift2A: TShiftState;
677
 
    NewKey2B: word; NewShift2B: TShiftState);
678
 
  begin
679
 
    TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B);
680
 
    TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B);
681
 
  end;
682
 
 
683
 
  procedure SetResult(NewKeyA: word; NewShiftA: TShiftState;
684
 
    NewKeyB: word; NewShiftB: TShiftState);
685
 
  begin
686
 
    TheKeyA:=IDEShortCut(NewKeyA,NewShiftA,VK_UNKNOWN,[]);
687
 
    TheKeyB:=IDEShortCut(NewKeyB,NewShiftB,VK_UNKNOWN,[]);
688
 
  end;
689
 
 
690
 
  procedure SetResult(NewKeyA: word; NewShiftA: TShiftState);
691
 
  begin
692
 
    SetResult(NewKeyA,NewShiftA,VK_UNKNOWN,[]);
693
 
  end;
694
 
 
695
 
begin
696
 
  GetDefaultKeyForWindowsScheme(Command,TheKeyA,TheKeyB);
697
 
 
698
 
  case Command of
699
 
  // moving
700
 
  ecWordLeft:SetResult(VK_A, [ssCtrl], VK_UNKNOWN, [], VK_LEFT, [ssCtrl], VK_UNKNOWN,[]);
701
 
  ecWordRight: SetResult(VK_D, [ssCtrl], VK_UNKNOWN, [], VK_RIGHT, [ssCtrl],VK_UNKNOWN,[]);
702
 
  ecLineStart: SetResult(VK_Q, [ssCtrl], VK_S, [], VK_HOME, [],VK_UNKNOWN,[]);
703
 
  ecLineEnd: SetResult(VK_Q, [ssCtrl], VK_D, [], VK_END, [],VK_UNKNOWN,[]);
704
 
  ecPageUp: SetResult(VK_R, [ssCtrl], VK_UNKNOWN, [], VK_PRIOR, [],VK_UNKNOWN,[]);
705
 
  ecPageDown: SetResult(VK_C, [ssCtrl], VK_UNKNOWN, [], VK_NEXT, [],VK_UNKNOWN,[]);
706
 
  ecPageLeft: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
707
 
  ecPageRight: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
708
 
  ecPageTop: SetResult(VK_Q, [ssCtrl], VK_E, [], VK_HOME, [ssCtrl],VK_UNKNOWN,[]);
709
 
  ecPageBottom: SetResult(VK_Q, [ssCtrl], VK_X, [], VK_END, [ssCtrl],VK_UNKNOWN,[]);
710
 
  ecEditorTop: SetResult(VK_Q, [ssCtrl], VK_R, [], VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]);
711
 
  ecEditorBottom: SetResult(VK_Q, [ssCtrl], VK_C, [], VK_NEXT,[ssCtrl],VK_UNKNOWN,[]);
712
 
  ecScrollUp: SetResult(VK_W, [ssCtrl], VK_UNKNOWN, [], VK_UP, [ssCtrl],VK_UNKNOWN,[]);
713
 
  ecScrollDown: SetResult(VK_Z, [ssCtrl], VK_UNKNOWN, [], VK_DOWN, [ssCtrl],VK_UNKNOWN,[]);
714
 
  ecScrollLeft: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
715
 
  ecScrollRight: SetResult(VK_UNKNOWN, [], VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
716
 
 
717
 
  // selection
718
 
  ecCopy: SetResult(VK_Insert,[ssCtrl],VK_UNKNOWN, [],VK_UNKNOWN, [],VK_UNKNOWN, []);
719
 
  ecCut: SetResult(VK_Delete,[ssShift],VK_UNKNOWN, [],VK_UNKNOWN, [],VK_UNKNOWN, []);
720
 
  ecPaste: SetResult(VK_Insert,[ssShift],VK_UNKNOWN, [],VK_UNKNOWN, [],VK_UNKNOWN, []);
721
 
  ecNormalSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN, [],VK_UNKNOWN, []);
722
 
  ecColumnSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN, [],VK_UNKNOWN, []);
723
 
  ecLineSelect: SetResult(VK_K,[ssCtrl],VK_L,[], VK_UNKNOWN, [],VK_UNKNOWN, []);
724
 
  ecSelWordLeft: SetResult(VK_LEFT,[ssCtrl,ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
725
 
  ecSelWordRight: SetResult(VK_RIGHT,[ssCtrl,ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
726
 
  ecSelLineStart: SetResult(VK_HOME,[ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
727
 
  ecSelLineEnd: SetResult(VK_END,[ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
728
 
  ecSelPageTop: SetResult(VK_HOME, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
729
 
  ecSelPageBottom: SetResult(VK_END, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
730
 
  ecSelEditorTop: SetResult(VK_PRIOR, [ssShift,ssCtrl],VK_UNKNOWN,[]);
731
 
  ecSelEditorBottom: SetResult(VK_NEXT, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
732
 
  ecSelectAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
733
 
  ecSelectToBrace: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
734
 
  ecSelectCodeBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
735
 
  ecSelectWord: SetResult(VK_K,[ssCtrl],VK_T,[], VK_UNKNOWN,[],VK_UNKNOWN,[]);
736
 
  ecSelectLine: SetResult(VK_O,[ssCtrl],VK_L,[], VK_UNKNOWN,[],VK_UNKNOWN,[]);
737
 
  ecSelectParagraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
738
 
  ecSelectionUpperCase: SetResult(VK_K,[ssCtrl],VK_N,[], VK_UNKNOWN, [],VK_UNKNOWN,[]);
739
 
  ecSelectionLowerCase: SetResult(VK_K,[ssCtrl],VK_O,[], VK_UNKNOWN, [],VK_UNKNOWN,[]);
740
 
  ecSelectionTabs2Spaces: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
741
 
  ecSelectionEnclose: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
742
 
  ecSelectionComment: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
743
 
  ecSelectionUncomment: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
744
 
  ecToggleComment: SetResult(VK_OEM_2, [ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
745
 
  ecSelectionConditional: SetResult(VK_D, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
746
 
  ecSelectionSort: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
747
 
  ecSelectionBreakLines: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []);
748
 
 
749
 
  ecBlockSetBegin   : SetResult(VK_K,[ssCtrl],VK_B,[],  VK_K,[ssCtrl],VK_B,[ssCtrl]);
750
 
  ecBlockSetEnd     : SetResult(VK_K,[ssCtrl],VK_K,[],  VK_K,[ssCtrl],VK_K,[ssCtrl]);
751
 
  ecBlockToggleHide : SetResult(VK_K,[ssCtrl],VK_H,[],  VK_K,[ssCtrl],VK_H,[ssCtrl]);
752
 
  ecBlockHide       : SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
753
 
  ecBlockShow       : SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
754
 
  ecBlockMove       : SetResult(VK_K,[ssCtrl],VK_V,[],  VK_K,[ssCtrl],VK_V,[ssCtrl]);
755
 
  ecBlockCopy       : SetResult(VK_K,[ssCtrl],VK_C,[],  VK_K,[ssCtrl],VK_C,[ssCtrl]);
756
 
  ecBlockDelete     : SetResult(VK_K,[ssCtrl],VK_Y,[ssCtrl],  VK_UNKNOWN,[],VK_UNKNOWN,[]);
757
 
  ecBlockGotoBegin  : SetResult(VK_Q,[ssCtrl],VK_B,[ssCtrl],  VK_UNKNOWN,[],VK_UNKNOWN,[]);
758
 
  ecBlockGotoEnd    : SetResult(VK_Q,[ssCtrl],VK_K,[ssCtrl],  VK_UNKNOWN,[],VK_UNKNOWN,[]);
759
 
 
760
 
  // column mode selection
761
 
  ecColSelUp: SetResult(VK_UP, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
762
 
  ecColSelDown: SetResult(VK_DOWN, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
763
 
  ecColSelLeft: SetResult(VK_LEFT, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
764
 
  ecColSelRight: SetResult(VK_RIGHT, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
765
 
  ecColSelPageDown: SetResult(VK_NEXT, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
766
 
  ecColSelPageBottom: SetResult(VK_NEXT, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
767
 
  ecColSelPageUp: SetResult(VK_PRIOR, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
768
 
  ecColSelPageTop: SetResult(VK_PRIOR, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
769
 
  ecColSelLineStart: SetResult(VK_HOME, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
770
 
  ecColSelLineEnd: SetResult(VK_END, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
771
 
  ecColSelEditorTop: SetResult(VK_HOME, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
772
 
  ecColSelEditorBottom: SetResult(VK_END, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]);
773
 
 
774
 
  // editing
775
 
  ecBlockIndent: SetResult(VK_K,[ssCtrl],VK_I,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
776
 
  ecBlockUnindent: SetResult(VK_K,[ssCtrl],VK_U,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
777
 
  ecDeleteLastChar: SetResult(VK_H,[ssCtrl],VK_UNKNOWN,[],VK_BACK, [],VK_UNKNOWN,[]);
778
 
  ecDeleteChar: SetResult(VK_DELETE,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
779
 
  ecDeleteWord: SetResult(VK_T,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
780
 
  ecDeleteLastWord: SetResult(VK_BACK,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
781
 
  ecDeleteBOL: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
782
 
  ecDeleteEOL: SetResult(VK_K,[ssCtrl],VK_Y,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
783
 
  ecDeleteLine: SetResult(VK_Y,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
784
 
  ecClearAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
785
 
  ecLineBreak: SetResult(VK_RETURN,[],VK_UNKNOWN,[],VK_M,[ssCtrl],VK_UNKNOWN,[]);
786
 
  ecInsertLine: SetResult(VK_N,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
787
 
  ecInsertCharacter: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
788
 
  ecInsertGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
789
 
  ecInsertLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
790
 
  ecInsertModifiedLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
791
 
  ecInsertUserName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
792
 
  ecInsertDateTime: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
793
 
  ecInsertChangeLogEntry: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
794
 
  ecInsertCVSAuthor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
795
 
  ecInsertCVSDate: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
796
 
  ecInsertCVSHeader: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
797
 
  ecInsertCVSID: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
798
 
  ecInsertCVSLog: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
799
 
  ecInsertCVSName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
800
 
  ecInsertCVSRevision: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
801
 
  ecInsertCVSSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
802
 
 
803
 
  // command commands
804
 
  ecUndo: SetResult(VK_BACK,[ssALT],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
805
 
  ecRedo: SetResult(VK_BACK,[ssALT,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
806
 
 
807
 
  // search & replace
808
 
  ecMatchBracket: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
809
 
  ecFind: SetResult(VK_Q,[SSCtrl],VK_F,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
810
 
  ecFindNext: SetResult(VK_L,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
811
 
  ecFindPrevious: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
812
 
  ecFindInFiles: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
813
 
  ecReplace: SetResult(VK_Q,[SSCtrl],VK_A,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
814
 
  ecIncrementalFind: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
815
 
  ecGotoLineNumber: SetResult(VK_G,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
816
 
  ecFindNextWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
817
 
  ecFindPrevWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
818
 
  ecJumpBack: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
819
 
  ecJumpForward: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
820
 
  ecAddJumpPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
821
 
  ecViewJumpHistory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
822
 
  ecJumpToPrevError: SetResult(VK_F7,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
823
 
  ecJumpToNextError: SetResult(VK_F8,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
824
 
  ecOpenFileAtCursor: SetResult(VK_RETURN,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
825
 
 
826
 
  // marker
827
 
  ecSetFreeBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
828
 
  ecPrevBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
829
 
  ecNextBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
830
 
  ecGotoMarker0: SetResult(VK_Q,[ssCtrl],VK_0,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
831
 
  ecGotoMarker1: SetResult(VK_Q,[ssCtrl],VK_1,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
832
 
  ecGotoMarker2: SetResult(VK_Q,[ssCtrl],VK_2,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
833
 
  ecGotoMarker3: SetResult(VK_Q,[ssCtrl],VK_3,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
834
 
  ecGotoMarker4: SetResult(VK_Q,[ssCtrl],VK_4,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
835
 
  ecGotoMarker5: SetResult(VK_Q,[ssCtrl],VK_5,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
836
 
  ecGotoMarker6: SetResult(VK_Q,[ssCtrl],VK_6,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
837
 
  ecGotoMarker7: SetResult(VK_Q,[ssCtrl],VK_7,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
838
 
  ecGotoMarker8: SetResult(VK_Q,[ssCtrl],VK_8,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
839
 
  ecGotoMarker9: SetResult(VK_Q,[ssCtrl],VK_9,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
840
 
  ecSetMarker0..ecSetMarker9: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
841
 
  ecToggleMarker0: SetResult(VK_K,[ssCtrl],VK_0,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
842
 
  ecToggleMarker1: SetResult(VK_K,[ssCtrl],VK_1,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
843
 
  ecToggleMarker2: SetResult(VK_K,[ssCtrl],VK_2,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
844
 
  ecToggleMarker3: SetResult(VK_K,[ssCtrl],VK_3,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
845
 
  ecToggleMarker4: SetResult(VK_K,[ssCtrl],VK_4,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
846
 
  ecToggleMarker5: SetResult(VK_K,[ssCtrl],VK_5,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
847
 
  ecToggleMarker6: SetResult(VK_K,[ssCtrl],VK_6,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
848
 
  ecToggleMarker7: SetResult(VK_K,[ssCtrl],VK_7,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
849
 
  ecToggleMarker8: SetResult(VK_K,[ssCtrl],VK_8,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
850
 
  ecToggleMarker9: SetResult(VK_K,[ssCtrl],VK_9,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
851
 
 
852
 
  // codetools
853
 
  ecAutoCompletion: SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
854
 
  ecWordCompletion: SetResult(VK_W,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
855
 
  ecCompleteCode: SetResult(VK_C,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
856
 
  ecIdentCompletion: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
857
 
  ecShowCodeContext: SetResult(VK_SPACE,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
858
 
  ecExtractProc: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
859
 
  ecFindIdentifierRefs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
860
 
  ecRenameIdentifier: SetResult(VK_E,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
861
 
  ecInvertAssignment: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
862
 
  ecSyntaxCheck: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
863
 
  ecGuessUnclosedBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
864
 
  ecGuessMisplacedIFDEF: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
865
 
  ecConvertDFM2LFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
866
 
  ecCheckLFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
867
 
  ecConvertDelphiUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
868
 
  ecConvertDelphiProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
869
 
  ecConvertDelphiPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
870
 
  ecConvertEncoding: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
871
 
  ecFindProcedureDefinition: SetResult(VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
872
 
  ecFindProcedureMethod: SetResult(VK_DOWN,[ssShift,SSCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
873
 
  ecFindDeclaration: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
874
 
  ecFindBlockOtherEnd: SetResult(VK_Q,[ssCtrl],VK_K,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
875
 
  ecFindBlockStart: SetResult(VK_Q,[ssCtrl],VK_B,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
876
 
  ecGotoIncludeDirective: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
877
 
  ecShowAbstractMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
878
 
  ecRemoveEmptyMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
879
 
 
880
 
  // source notebook
881
 
  ecNextEditor: SetResult(VK_F6,[],VK_UNKNOWN,[],VK_TAB, [ssCtrl], VK_UNKNOWN, []);
882
 
  ecPrevEditor: SetResult(VK_F6,[ssShift],VK_UNKNOWN,[],VK_TAB, [ssShift,ssCtrl], VK_UNKNOWN, []);
883
 
  ecResetDebugger: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
884
 
  ecToggleBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
885
 
  ecMoveEditorLeft: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[]);
886
 
  ecMoveEditorRight: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[]);
887
 
  ecMoveEditorLeftmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[]);
888
 
  ecMoveEditorRightmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[]);
889
 
 
890
 
  ecNextSharedEditor:        SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
891
 
  ecPrevSharedEditor:        SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
892
 
  ecNextWindow:              SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
893
 
  ecPrevWindow:              SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
894
 
  ecMoveEditorNextWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
895
 
  ecMoveEditorPrevWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
896
 
  ecMoveEditorNewWindow:     SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
897
 
  ecCopyEditorNextWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
898
 
  ecCopyEditorPrevWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
899
 
  ecCopyEditorNewWindow:     SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
900
 
 
901
 
  ecGotoEditor1: SetResult(VK_1,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
902
 
  ecGotoEditor2: SetResult(VK_2,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
903
 
  ecGotoEditor3: SetResult(VK_3,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
904
 
  ecGotoEditor4: SetResult(VK_4,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
905
 
  ecGotoEditor5: SetResult(VK_5,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
906
 
  ecGotoEditor6: SetResult(VK_6,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
907
 
  ecGotoEditor7: SetResult(VK_7,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
908
 
  ecGotoEditor8: SetResult(VK_8,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
909
 
  ecGotoEditor9: SetResult(VK_9,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
910
 
  ecGotoEditor0: SetResult(VK_0,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
911
 
 
912
 
  ecLockEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
913
 
 
914
 
  EcFoldLevel1: SetResult(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
915
 
  EcFoldLevel2: SetResult(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
916
 
  EcFoldLevel3: SetResult(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
917
 
  EcFoldLevel4: SetResult(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
918
 
  EcFoldLevel5: SetResult(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
919
 
  EcFoldLevel6: SetResult(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
920
 
  EcFoldLevel7: SetResult(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
921
 
  EcFoldLevel8: SetResult(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
922
 
  EcFoldLevel9: SetResult(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
923
 
  EcFoldLevel0: SetResult(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
924
 
  EcFoldCurrent: SetResult(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
925
 
  EcUnFoldCurrent: SetResult(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
926
 
  EcToggleMarkupWord: SetResult(VK_M,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
927
 
 
928
 
  // file menu
929
 
  ecNew: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
930
 
  ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
931
 
  ecNewForm: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
932
 
  ecOpen: SetResult(VK_F3,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
933
 
  ecRevert: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
934
 
  ecSave: SetResult(VK_F2,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
935
 
  ecSaveAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
936
 
  ecSaveAll: SetResult(VK_F2,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
937
 
  ecClose: SetResult(VK_F3,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
938
 
  ecCloseAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
939
 
  ecCleanDirectory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
940
 
  ecRestart: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
941
 
  ecQuit: SetResult(VK_X,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
942
 
 
943
 
  // view menu
944
 
  ecToggleObjectInsp: SetResult(VK_F11,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
945
 
  ecToggleSourceEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
946
 
  ecToggleCodeExpl: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
947
 
  ecToggleFPDocEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
948
 
  ecToggleMessages: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
949
 
  ecToggleSearchResults: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
950
 
  ecToggleWatches: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
951
 
  ecToggleBreakPoints: SetResult(VK_F8,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
952
 
  ecToggleLocals: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
953
 
  ecToggleCallStack: SetResult(VK_F3,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
954
 
  ecToggleRegisters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
955
 
  ecToggleAssembler: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
956
 
  ecToggleDebugEvents: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
957
 
  ecToggleDebuggerOut: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
958
 
  ecViewUnits: SetResult(VK_F12,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
959
 
  ecViewForms: SetResult(VK_F12,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
960
 
  ecViewUnitDependencies: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
961
 
  ecViewUnitInfo: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
962
 
  ecToggleFormUnit: SetResult(VK_F12,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
963
 
  ecViewAnchorEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
964
 
  ecToggleCodeBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
965
 
  ecToggleRestrictionBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
966
 
  ecToggleCompPalette: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
967
 
  ecToggleIDESpeedBtns: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
968
 
 
969
 
  // project menu
970
 
  ecNewProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
971
 
  ecNewProjectFromFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
972
 
  ecOpenProject: SetResult(VK_F11,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
973
 
  ecCloseProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
974
 
  ecSaveProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
975
 
  ecSaveProjectAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
976
 
  ecPublishProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
977
 
  ecProjectInspector: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
978
 
  ecAddCurUnitToProj: SetResult(VK_F11,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
979
 
  ecRemoveFromProj: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
980
 
  ecViewProjectSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
981
 
  ecProjectOptions: SetResult(VK_F11,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
982
 
 
983
 
  // run menu
984
 
  ecBuild: SetResult(VK_F9,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
985
 
  ecBuildAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
986
 
  ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
987
 
  ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
988
 
  ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
989
 
  ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
990
 
  ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
991
 
  ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
992
 
  ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
993
 
  ecStepIntoInstr: SetResult(VK_F7,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
994
 
  ecStepOverInstr: SetResult(VK_F8,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
995
 
  ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
996
 
  ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
997
 
  ecStopProgram: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
998
 
  ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
999
 
  ecRunParameters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1000
 
  ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1001
 
  ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1002
 
  ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1003
 
  ecInspect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1004
 
  ecEvaluate: SetResult(VK_F4,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1005
 
  ecAddWatch: SetResult(VK_F7,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1006
 
 
1007
 
  // components menu
1008
 
  ecNewPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1009
 
  ecOpenPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1010
 
  ecOpenPackageFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1011
 
  ecOpenPackageOfCurUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1012
 
  ecAddCurUnitToPkg: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1013
 
  ecPackageGraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1014
 
  ecEditInstallPkgs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1015
 
  ecConfigCustomComps: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1016
 
 
1017
 
  // tools menu
1018
 
  ecExtToolSettings: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1019
 
  ecBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1020
 
  ecConfigBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1021
 
  ecMakeResourceString: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1022
 
  ecDiff: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1023
 
 
1024
 
  // environment menu
1025
 
  ecEnvironmentOptions: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1026
 
  ecEditCodeTemplates: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1027
 
  ecCodeToolsDefinesEd: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1028
 
  ecRescanFPCSrcDir: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1029
 
 
1030
 
  // help menu
1031
 
  ecAboutLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1032
 
  ecOnlineHelp: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1033
 
  ecContextHelp: SetResult(VK_F1,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1034
 
  ecEditContextHelp: SetResult(VK_F1,[ssCtrl,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1035
 
  ecReportingBug: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1036
 
 
1037
 
  // designer
1038
 
  ecDesignerCopy        : SetResult(VK_C,[ssCtrl],VK_UNKNOWN,[],VK_Insert,[ssCtrl],VK_UNKNOWN,[]);
1039
 
  ecDesignerCut         : SetResult(VK_X,[ssCtrl],VK_UNKNOWN,[],VK_Delete,[ssShift],VK_UNKNOWN,[]);
1040
 
  ecDesignerPaste       : SetResult(VK_V,[ssCtrl],VK_UNKNOWN,[],VK_Insert,[ssShift],VK_UNKNOWN,[]);
1041
 
  ecDesignerSelectParent: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1042
 
  ecDesignerMoveToFront : SetResult(VK_PRIOR,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1043
 
  ecDesignerMoveToBack  : SetResult(VK_NEXT,[ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1044
 
  ecDesignerForwardOne  : SetResult(VK_PRIOR,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1045
 
  ecDesignerBackOne     : SetResult(VK_NEXT,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1046
 
 
1047
 
  else
1048
 
    begin
1049
 
      SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1050
 
      SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1051
 
      case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of
1052
 
        // Edit template
1053
 
        ecSynPTmplEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1054
 
        ecSynPTmplEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1055
 
        ecSynPTmplEdNextCellRotate:      SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1056
 
        ecSynPTmplEdNextCellSelRotate:   SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1057
 
        ecSynPTmplEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1058
 
        ecSynPTmplEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1059
 
        ecSynPTmplEdCellHome:            SetResult(VK_HOME, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1060
 
        ecSynPTmplEdCellEnd:             SetResult(VK_END,  [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1061
 
        ecSynPTmplEdCellSelect:          SetResult(VK_A,    [ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1062
 
        ecSynPTmplEdFinish:              SetResult(VK_RETURN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1063
 
        ecSynPTmplEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1064
 
      end;
1065
 
      case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of
1066
 
        // Edit template
1067
 
        ecSynPTmplEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1068
 
        ecSynPTmplEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1069
 
        ecSynPTmplEdNextCellRotate:      SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1070
 
        ecSynPTmplEdNextCellSelRotate:   SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1071
 
        ecSynPTmplEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1072
 
        ecSynPTmplEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1073
 
        ecSynPTmplEdCellHome:            SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1074
 
        ecSynPTmplEdCellEnd:             SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1075
 
        ecSynPTmplEdCellSelect:          SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1076
 
        ecSynPTmplEdFinish:              SetResult(VK_RETURN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1077
 
        ecSynPTmplEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1078
 
      end;
1079
 
      case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of
1080
 
        // SyncroEdit
1081
 
        ecSynPSyncroEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1082
 
        ecSynPSyncroEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1083
 
        ecSynPSyncroEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1084
 
        ecSynPSyncroEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1085
 
        ecSynPSyncroEdCellHome:            SetResult(VK_HOME, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1086
 
        ecSynPSyncroEdCellEnd:             SetResult(VK_END,  [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1087
 
        ecSynPSyncroEdCellSelect:          SetResult(VK_A,    [ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1088
 
        ecSynPSyncroEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1089
 
      end;
1090
 
      case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of
1091
 
        // SyncroEdit
1092
 
        ecSynPSyncroEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1093
 
        ecSynPSyncroEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1094
 
        ecSynPSyncroEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1095
 
        ecSynPSyncroEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1096
 
        ecSynPSyncroEdCellHome:            SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1097
 
        ecSynPSyncroEdCellEnd:             SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1098
 
        ecSynPSyncroEdCellSelect:          SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1099
 
        ecSynPSyncroEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1100
 
      end;
1101
 
      case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of
1102
 
        // SyncroEdit, during selection
1103
 
        ecSynPSyncroEdStart:               SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1104
 
      end;
1105
 
    end;
1106
 
  end;
1107
 
(*//F1                      Topic Search
1108
 
//Ctrl+F1                Topic Search
1109
 
  ecNextEditor: SetResult(VK_F6,[]);
1110
 
  ecPrevEditor: SetResult(VK_F6,[ssShift]);
1111
 
  ecWordLeft:   SetResult(VK_A,[ssCtrl],VK_LEFT,[ssCtrl]);
1112
 
  ecPageDown:   SetResult(VK_C,[ssCtrl],VK_NEXT,[]);
1113
 
//Ctrl+D                 Moves the cursor right one column, accounting for the
1114
 
//autoindent setting
1115
 
//Ctrl+E                 Moves the cursor up one line
1116
 
//Ctrl+F                 Moves one word right
1117
 
//Ctrl+G                 Deletes the character to the right of the cursor
1118
 
//Ctrl+H                 Deletes the character to the left of the cursor
1119
 
//Ctrl+I                  Inserts a tab
1120
 
//Ctrl+L                 Search|Search Again
1121
 
//Ctrl+N                 Inserts a new line
1122
 
//Ctrl+P                 Causes next character to be interpreted as an ASCII
1123
 
//sequence
1124
 
//Ctrl+R                 Moves up one screen
1125
 
//Ctrl+S                 Moves the cursor left one column, accounting for the
1126
 
//autoindent setting
1127
 
//Ctrl+T                 Deletes a word
1128
 
//Ctrl+V                 Turns insert mode on/off
1129
 
//Ctrl+W                Moves down one screen
1130
 
//Ctrl+X                 Moves the cursor down one line
1131
 
//Ctrl+Y                 Deletes a line
1132
 
//Ctrl+Z                 Moves the cursor up one line
1133
 
//Ctrl+Shift+S          Performs an incremental search
1134
 
 
1135
 
//Block commands:
1136
 
//---------------
1137
 
//Ctrl+K+B      Marks the beginning of a block
1138
 
//Ctrl+K+C      Copies a selected block
1139
 
//Ctrl+K+H      Hides/shows a selected block
1140
 
//Ctrl+K+I       Indents a block by the amount specified in the Block Indent
1141
 
//combo box on the General page of the Editor Options dialog box.
1142
 
//Ctrl+K+K      Marks the end of a block
1143
 
//Ctrl+K+L       Marks the current line as a block
1144
 
//Ctrl+K+N      Changes a block to uppercase
1145
 
//Ctrl+K+O      Changes a block to lowercase
1146
 
//Ctrl+K+P      Prints selected block
1147
 
//Ctrl+K+R      Reads a block from a file
1148
 
//Ctrl+K+T       Marks a word as a block
1149
 
//Ctrl+K+U      Outdents a block by the amount specified in the Block Indent
1150
 
//combo box on the General page of the Editor Options dialog box.
1151
 
//Ctrl+K+V      Moves a selected block
1152
 
//Ctrl+K+W      Writes a selected block to a file
1153
 
//Ctrl+K+Y      Deletes a selected block
1154
 
//Ctrl+O+C      Turns on column blocking
1155
 
//Ctrl+O+I       Marks an inclusive block
1156
 
//Ctrl+O+K      Turns off column blocking
1157
 
//Ctrl+O+L      Marks a line as a block
1158
 
//Shift+Alt+arrow Selects column-oriented blocks
1159
 
//Click+Alt+mousemv Selects column-oriented blocks
1160
 
//Ctrl+Q+B      Moves to the beginning of a block
1161
 
//Ctrl+Q+K      Moves to the end of a block
1162
 
 
1163
 
//Miscellaneous commands:
1164
 
//-----------------------
1165
 
//Ctrl+K+D      Accesses the menu bar
1166
 
//Ctrl+K+E       Changes a word to lowercase
1167
 
//Ctrl+K+F       Changes a word to uppercase
1168
 
//Ctrl+K+S      File|Save (Default and IDE Classic only)
1169
 
//Ctrl+Q+A      Search|Replace
1170
 
//Ctrl+Q+F      Search|Find
1171
 
//Ctrl+Q+Y      Deletes to the end of a line
1172
 
//Ctrl+Q+[       Finds the matching delimiter (forward)
1173
 
//Ctrl+Q+Ctrl+[ Finds the matching delimiter (forward)
1174
 
//Ctrl+Q+]       Finds the matching delimiter (backward)
1175
 
//Ctrl+Q+Ctrl+] Finds the matching delimiter (backward)
1176
 
//Ctrl+O+A      Open file at cursor
1177
 
//Ctrl+O+B      Browse symbol at cursor (Delphi only)
1178
 
//Alt+right arrow  For code browsing
1179
 
//Alt +left arrow For code browsing
1180
 
//Ctrl+O+G      Search|Go to line number
1181
 
//Ctrl+O+O      Inserts compiler options and directives
1182
 
//Ctrl+O+U      Toggles case
1183
 
//Bookmark commands:
1184
 
//------------------
1185
 
//Shortcut       Action
1186
 
//Ctrl+K+0       Sets bookmark 0
1187
 
//Ctrl+K+1       Sets bookmark 1
1188
 
//Ctrl+K+2       Sets bookmark 2
1189
 
//Ctrl+K+3       Sets bookmark 3
1190
 
//Ctrl+K+4       Sets bookmark 4
1191
 
//Ctrl+K+5       Sets bookmark 5
1192
 
//Ctrl+K+6       Sets bookmark 6
1193
 
//Ctrl+K+7       Sets bookmark 7
1194
 
//Ctrl+K+8       Sets bookmark 8
1195
 
//Ctrl+K+9       Sets bookmark 9
1196
 
//Ctrl+K+Ctrl+0 Sets bookmark 0
1197
 
//Ctrl+K+Ctrl+1 Sets bookmark 1
1198
 
//Ctrl+K+Ctrl+2 Sets bookmark 2
1199
 
//Ctrl+K+Ctrl+3 Sets bookmark 3
1200
 
//Ctrl+K+Ctrl+4 Sets bookmark 4
1201
 
//Ctrl+K+Ctrl+5 Sets bookmark 5
1202
 
//Ctrl+K+Ctrl+6 Sets bookmark 6
1203
 
//Ctrl+K+Ctrl+7 Sets bookmark 7
1204
 
//Ctrl+K+Ctrl+8 Sets bookmark 8
1205
 
//Ctrl+K+Ctrl+9 Sets bookmark 9
1206
 
//Ctrl+Q+0       Goes to bookmark 0
1207
 
//Ctrl+Q+1       Goes to bookmark 1
1208
 
//Ctrl+Q+2       Goes to bookmark 2
1209
 
//Ctrl+Q+3       Goes to bookmark 3
1210
 
//Ctrl+Q+4       Goes to bookmark 4
1211
 
//Ctrl+Q+5       Goes to bookmark 5
1212
 
//Ctrl+Q+6       Goes to bookmark 6
1213
 
//Ctrl+Q+7       Goes to bookmark 7
1214
 
//Ctrl+Q+8       Goes to bookmark 8
1215
 
//Ctrl+Q+9       Goes to bookmark 9
1216
 
//Ctrl+Q+Ctrl+0 Goes to bookmark 0
1217
 
//Ctrl+Q+Ctrl+1 Goes to bookmark 1
1218
 
//Ctrl+Q+Ctrl+2 Goes to bookmark 2
1219
 
//Ctrl+Q+Ctrl+3 Goes to bookmark 3
1220
 
//Ctrl+Q+Ctrl+4 Goes to bookmark 4
1221
 
//Ctrl+Q+Ctrl+5 Goes to bookmark 5
1222
 
//Ctrl+Q+Ctrl+6 Goes to bookmark 6
1223
 
//Ctrl+Q+Ctrl+7 Goes to bookmark 7
1224
 
//Ctrl+Q+Ctrl+8 Goes to bookmark 8
1225
 
//Ctrl+Q+Ctrl+9 Goes to bookmark 9
1226
 
//Cursor movement:
1227
 
//----------------
1228
 
//Ctrl+Q+B      Moves to the beginning of a block
1229
 
//Ctrl+Q+C      Moves to end of a file
1230
 
//Ctrl+Q+D      Moves to the end of a line
1231
 
//Ctrl+Q+E      Moves the cursor to the top of the window
1232
 
//Ctrl+Q+K      Moves to the end of a block
1233
 
//Ctrl+Q+P      Moves to previous position
1234
 
//Ctrl+Q+R      Moves to the beginning of a file
1235
 
//Ctrl+Q+S      Moves to the beginning of a line
1236
 
//Ctrl+Q+T      Moves the viewing editor so that the current line is placed at
1237
 
//the top of the window
1238
 
//Ctrl+Q+U      Moves the viewing editor so that the current line is placed at
1239
 
//the bottom of the window, if possible
1240
 
//Ctrl+Q+X      Moves the cursor to the bottom of the window
1241
 
//System keys:
1242
 
//------------
1243
 
 
1244
 
//F1              Displays context-sensitive Help
1245
 
//F2              File|Save
1246
 
//F3              File|Open
1247
 
//F4              Run to Cursor
1248
 
//F5              Zooms window
1249
 
//F6              Displays the next page
1250
 
//F7              Run|Trace Into
1251
 
//F8              Run|Step Over
1252
 
//F9              Run|Run
1253
 
//F11             View|Object Inspector
1254
 
//F12             View|Toggle Form/Unit
1255
 
//Alt+0           View|Window List
1256
 
//Alt+F2          View|CPU
1257
 
//Alt+F3          File|Close
1258
 
//Alt+F7          Displays previous error in Message view
1259
 
//Alt+F8          Displays next error in Message view
1260
 
//Alt+F11        File|Use Unit (Delphi)
1261
 
//Alt+F11        File|Include Unit Hdr (C++)
1262
 
//Alt+F12        Displays the Code editor
1263
 
//Alt+X           File|Exit
1264
 
//Alt+right arrow  For code browsing forward
1265
 
//Alt +left arrow For code browsing backward
1266
 
//Alt +up arrow  For code browsing Ctrl-click on identifier
1267
 
//Alt+Page Down Goes to the next tab
1268
 
//Alt+Page Up   Goes to the previous tab
1269
 
//Ctrl+F1        Topic Search
1270
 
//Ctrl+F2        Run|Program Reset
1271
 
//Ctrl+F3        View|Call Stack
1272
 
//Ctrl+F6        Open Source/Header file (C++)
1273
 
//Ctrl+F7        Add Watch at Cursor
1274
 
//Ctrl+F8        Toggle Breakpoint
1275
 
//Ctrl+F9        Project|Compile project (Delphi)
1276
 
//Ctrl+F9        Project|Make project (C++)
1277
 
//Ctrl+F11       File|Open Project
1278
 
//Ctrl+F12       View|Units
1279
 
//Shift+F7       Run|Trace To Next Source Line
1280
 
//Shift+F11      Project|Add To Project
1281
 
//Shift+F12      View|Forms
1282
 
//Ctrl+D         Descends item (replaces Inspector window)
1283
 
//Ctrl+N         Opens a new Inspector window
1284
 
//Ctrl+S          Incremental search
1285
 
//Ctrl+T          Displays the Type Cast dialog
1286
 
  else
1287
 
    GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB);
1288
 
  end;
1289
 
*)
1290
 
end;
1291
 
 
1292
 
procedure GetDefaultKeyForMacOSXScheme(Command: word; var TheKeyA, TheKeyB: TIDEShortCut);
1293
 
 
1294
 
  procedure SetResult(NewKeyA: word; NewShiftA: TShiftState;
1295
 
    NewKeyB: word; NewShiftB: TShiftState);
1296
 
  begin
1297
 
    TheKeyA:=IDEShortCut(NewKeyA, NewShiftA, VK_UNKNOWN, []);
1298
 
    TheKeyB:=IDEShortCut(NewKeyB, NewShiftB, VK_UNKNOWN, []);
1299
 
  end;
1300
 
 
1301
 
  procedure SetResult2(
1302
 
    NewKey1A: word; NewShift1A: TShiftState;
1303
 
    NewKey1B: word; NewShift1B: TShiftState;
1304
 
    NewKey2A: word; NewShift2A: TShiftState;
1305
 
    NewKey2B: word; NewShift2B: TShiftState);
1306
 
  begin
1307
 
    TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B);
1308
 
    TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B);
1309
 
  end;
1310
 
 
1311
 
begin
1312
 
  case Command of
1313
 
  // moving
1314
 
  ecWordLeft: SetResult(VK_LEFT, [ssAlt],VK_UNKNOWN,[]);
1315
 
  ecWordRight: SetResult(VK_RIGHT, [ssAlt],VK_UNKNOWN,[]);
1316
 
  ecLineStart: SetResult(VK_LEFT, [ssMeta],VK_UNKNOWN,[]);
1317
 
  ecLineEnd: SetResult(VK_RIGHT, [ssMeta],VK_UNKNOWN,[]);
1318
 
  ecPageUp: SetResult(VK_PRIOR, [],VK_UNKNOWN,[]);
1319
 
  ecPageDown: SetResult(VK_NEXT, [],VK_UNKNOWN,[]);
1320
 
  ecPageLeft: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1321
 
  ecPageRight: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1322
 
  ecPageTop: SetResult(VK_PRIOR, [ssAlt],VK_UNKNOWN,[]);
1323
 
  ecPageBottom: SetResult(VK_END, [ssAlt],VK_UNKNOWN,[]);
1324
 
  ecEditorTop: SetResult(VK_HOME,[],VK_UP,[ssMeta]);
1325
 
  ecEditorBottom: SetResult(VK_END,[],VK_DOWN,[ssMeta]);
1326
 
  ecScrollUp: SetResult(VK_UP, [ssCtrl],VK_UNKNOWN,[]);
1327
 
  ecScrollDown: SetResult(VK_DOWN, [ssCtrl],VK_UNKNOWN,[]);
1328
 
  ecScrollLeft: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1329
 
  ecScrollRight: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1330
 
 
1331
 
  // selection
1332
 
  ecCopy: SetResult(VK_C,[ssMeta],VK_Insert,[ssCtrl]);
1333
 
  ecCut: SetResult(VK_X,[ssMeta],VK_Delete,[ssShift]);
1334
 
  ecPaste: SetResult(VK_V,[ssMeta],VK_Insert,[ssShift]);
1335
 
  ecNormalSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1336
 
  ecColumnSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1337
 
  ecLineSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1338
 
  ecSelWordLeft: SetResult(VK_LEFT,[ssAlt,ssShift],VK_UNKNOWN,[]);
1339
 
  ecSelWordRight: SetResult(VK_RIGHT,[ssAlt,ssShift],VK_UNKNOWN,[]);
1340
 
  ecSelLineStart: SetResult(VK_LEFT,[ssMeta,ssShift],VK_UNKNOWN,[]);
1341
 
  ecSelLineEnd: SetResult(VK_RIGHT,[ssMeta,ssShift],VK_UNKNOWN,[]);
1342
 
  ecSelPageTop: SetResult(VK_PRIOR, [ssShift,ssAlt],VK_UNKNOWN,[]);
1343
 
  ecSelPageBottom: SetResult(VK_NEXT, [ssShift,ssAlt],VK_UNKNOWN,[]);
1344
 
  ecSelEditorTop: SetResult(VK_HOME, [ssShift],VK_UNKNOWN,[]);
1345
 
  ecSelEditorBottom: SetResult(VK_END, [ssShift],VK_UNKNOWN,[]);
1346
 
  ecSelectAll: SetResult(VK_A,[ssMeta],VK_UNKNOWN,[]);
1347
 
  ecSelectToBrace: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1348
 
  ecSelectCodeBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1349
 
  ecSelectWord: SetResult2(VK_K,[SSCtrl],VK_T,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1350
 
  ecSelectLine: SetResult2(VK_K,[SSCtrl],VK_L,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1351
 
  ecSelectParagraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1352
 
  ecSelectionUpperCase: SetResult2(VK_K,[SSCtrl],VK_N,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1353
 
  ecSelectionLowerCase: SetResult2(VK_K,[SSCtrl],VK_O,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1354
 
  ecSelectionTabs2Spaces: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1355
 
  ecSelectionEnclose: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1356
 
  ecSelectionComment: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1357
 
  ecSelectionUncomment: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1358
 
  ecToggleComment: SetResult(VK_OEM_2, [ssCtrl],VK_UNKNOWN,[]);
1359
 
  ecSelectionConditional: SetResult(VK_D, [ssShift,ssCtrl],VK_UNKNOWN,[]);
1360
 
  ecSelectionSort: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1361
 
  ecSelectionBreakLines: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1362
 
 
1363
 
  ecBlockSetBegin   : SetResult2(VK_K,[ssCtrl],VK_B,[],  VK_K,[ssCtrl],VK_B,[ssCtrl]);
1364
 
  ecBlockSetEnd     : SetResult2(VK_K,[ssCtrl],VK_K,[],  VK_K,[ssCtrl],VK_K,[ssCtrl]);
1365
 
  ecBlockToggleHide : SetResult2(VK_K,[ssCtrl],VK_H,[],  VK_K,[ssCtrl],VK_H,[ssCtrl]);
1366
 
  ecBlockHide       : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1367
 
  ecBlockShow       : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
1368
 
  ecBlockMove       : SetResult2(VK_K,[ssCtrl],VK_V,[],  VK_K,[ssCtrl],VK_V,[ssCtrl]);
1369
 
  ecBlockCopy       : SetResult2(VK_K,[ssCtrl],VK_C,[],  VK_K,[ssCtrl],VK_C,[ssCtrl]);
1370
 
  ecBlockDelete     : SetResult2(VK_K,[ssCtrl],VK_Y,[],  VK_K,[ssCtrl],VK_Y,[ssCtrl]);
1371
 
  ecBlockGotoBegin  : SetResult2(VK_Q,[ssCtrl],VK_B,[],  VK_Q,[ssCtrl],VK_B,[ssCtrl]);
1372
 
  ecBlockGotoEnd    : SetResult2(VK_Q,[ssCtrl],VK_K,[],  VK_Q,[ssCtrl],VK_K,[ssCtrl]);
1373
 
 
1374
 
// column mode selection
1375
 
  ecColSelUp: SetResult(VK_UP, [ssAlt, ssShift], VK_UNKNOWN,[]);
1376
 
  ecColSelDown: SetResult(VK_DOWN, [ssAlt, ssShift], VK_UNKNOWN,[]);
1377
 
  ecColSelLeft: SetResult(VK_LEFT, [ssAlt, ssShift], VK_UNKNOWN,[]);
1378
 
  ecColSelRight: SetResult(VK_RIGHT, [ssAlt, ssShift], VK_UNKNOWN,[]);
1379
 
  ecColSelPageDown: SetResult(VK_NEXT, [ssAlt, ssShift], VK_UNKNOWN,[]);
1380
 
  ecColSelPageBottom: SetResult(VK_NEXT, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
1381
 
  ecColSelPageUp: SetResult(VK_PRIOR, [ssAlt, ssShift], VK_UNKNOWN,[]);
1382
 
  ecColSelPageTop: SetResult(VK_PRIOR, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
1383
 
  ecColSelLineStart: SetResult(VK_HOME, [ssAlt, ssShift], VK_UNKNOWN,[]);
1384
 
  ecColSelLineEnd: SetResult(VK_END, [ssAlt, ssShift], VK_UNKNOWN,[]);
1385
 
  ecColSelEditorTop: SetResult(VK_HOME, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
1386
 
  ecColSelEditorBottom: SetResult(VK_END, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]);
1387
 
 
1388
 
  // editing
1389
 
  ecBlockIndent: SetResult2(VK_I,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_I,[]);
1390
 
  ecBlockUnindent: SetResult2(VK_U,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_U,[]);
1391
 
  ecDeleteLastChar: SetResult(VK_BACK, [],VK_BACK, [ssShift]);  // ctrl H used for scroll window.
1392
 
  ecDeleteChar: SetResult(VK_DELETE,[],VK_UNKNOWN,[]); // ctrl G conflicts with GO
1393
 
  ecDeleteWord: SetResult(VK_DELETE,[ssAlt],VK_UNKNOWN,[]);
1394
 
  ecDeleteLastWord: SetResult(VK_BACK,[ssCtrl],VK_UNKNOWN,[]);
1395
 
  ecDeleteBOL: SetResult(VK_BACK,[ssMeta],VK_UNKNOWN,[]);
1396
 
  ecDeleteEOL: SetResult(VK_DELETE,[ssMeta],VK_UNKNOWN,[]);
1397
 
  ecDeleteLine: SetResult(VK_Y,[ssCtrl],VK_UNKNOWN,[]);
1398
 
  ecClearAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1399
 
  ecLineBreak: SetResult(VK_RETURN,[],VK_UNKNOWN,[]);
1400
 
  ecInsertLine: SetResult(VK_N,[ssShift,ssMeta],VK_UNKNOWN,[]);
1401
 
  ecInsertCharacter: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1402
 
  ecInsertGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1403
 
  ecInsertLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1404
 
  ecInsertModifiedLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1405
 
  ecInsertUserName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1406
 
  ecInsertDateTime: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1407
 
  ecInsertChangeLogEntry: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1408
 
  ecInsertCVSAuthor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1409
 
  ecInsertCVSDate: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1410
 
  ecInsertCVSHeader: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1411
 
  ecInsertCVSID: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1412
 
  ecInsertCVSLog: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1413
 
  ecInsertCVSName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1414
 
  ecInsertCVSRevision: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1415
 
  ecInsertCVSSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1416
 
  ecInsertGUID: SetResult(VK_G, [ssCtrl,ssShift],VK_UNKNOWN,[]);
1417
 
 
1418
 
  // command commands
1419
 
  ecUndo: SetResult(VK_Z,[ssMeta],VK_UNKNOWN,[]);
1420
 
  ecRedo: SetResult(VK_Z,[ssMeta,ssShift],VK_UNKNOWN,[]);
1421
 
 
1422
 
  // search & replace
1423
 
  ecMatchBracket: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1424
 
  ecFind: SetResult(VK_F,[ssMeta],VK_UNKNOWN,[]);
1425
 
  ecFindNext: SetResult(VK_G,[ssMeta],VK_UNKNOWN,[]);
1426
 
  ecFindPrevious: SetResult(VK_G,[ssShift,ssMeta],VK_UNKNOWN,[]);
1427
 
  ecFindInFiles: SetResult(VK_F,[ssMeta,ssShift],VK_UNKNOWN,[]);
1428
 
  ecReplace: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1429
 
  ecIncrementalFind: SetResult(VK_E,[ssMeta],VK_UNKNOWN,[]);
1430
 
  ecGotoLineNumber: SetResult(VK_L,[ssMeta],VK_UNKNOWN,[]);
1431
 
  ecFindNextWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1432
 
  ecFindPrevWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1433
 
  ecJumpBack: SetResult(VK_H,[ssCtrl],VK_UNKNOWN,[]);
1434
 
  ecJumpForward: SetResult(VK_H,[ssCtrl,ssShift],VK_UNKNOWN,[]);
1435
 
  ecAddJumpPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1436
 
  ecViewJumpHistory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1437
 
  ecJumpToPrevError: SetResult(VK_ADD,[ssMeta,ssShift],VK_UNKNOWN,[]);
1438
 
  ecJumpToNextError: SetResult(VK_ADD,[ssMeta],VK_UNKNOWN,[]);
1439
 
  ecOpenFileAtCursor: SetResult(VK_RETURN,[ssCtrl],VK_UNKNOWN,[]);
1440
 
  ecProcedureList: SetResult(VK_G, [ssAlt],VK_UNKNOWN,[]);
1441
 
 
1442
 
 
1443
 
  // marker
1444
 
  ecSetFreeBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1445
 
  ecPrevBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1446
 
  ecNextBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1447
 
  ecGotoMarker0: SetResult(VK_0,[ssCtrl],VK_UNKNOWN,[]);
1448
 
  ecGotoMarker1: SetResult(VK_1,[ssCtrl],VK_UNKNOWN,[]);
1449
 
  ecGotoMarker2: SetResult(VK_2,[ssCtrl],VK_UNKNOWN,[]);
1450
 
  ecGotoMarker3: SetResult(VK_3,[ssCtrl],VK_UNKNOWN,[]);
1451
 
  ecGotoMarker4: SetResult(VK_4,[ssCtrl],VK_UNKNOWN,[]);
1452
 
  ecGotoMarker5: SetResult(VK_5,[ssCtrl],VK_UNKNOWN,[]);
1453
 
  ecGotoMarker6: SetResult(VK_6,[ssCtrl],VK_UNKNOWN,[]);
1454
 
  ecGotoMarker7: SetResult(VK_7,[ssCtrl],VK_UNKNOWN,[]);
1455
 
  ecGotoMarker8: SetResult(VK_8,[ssCtrl],VK_UNKNOWN,[]);
1456
 
  ecGotoMarker9: SetResult(VK_9,[ssCtrl],VK_UNKNOWN,[]);
1457
 
  ecToggleMarker0: SetResult2(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_0,[]);
1458
 
  ecToggleMarker1: SetResult2(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_1,[]);
1459
 
  ecToggleMarker2: SetResult2(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_2,[]);
1460
 
  ecToggleMarker3: SetResult2(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_3,[]);
1461
 
  ecToggleMarker4: SetResult2(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_4,[]);
1462
 
  ecToggleMarker5: SetResult2(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_5,[]);
1463
 
  ecToggleMarker6: SetResult2(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_6,[]);
1464
 
  ecToggleMarker7: SetResult2(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_7,[]);
1465
 
  ecToggleMarker8: SetResult2(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_8,[]);
1466
 
  ecToggleMarker9: SetResult2(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_9,[]);
1467
 
  ecSetMarker0..ecSetMarker9: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1468
 
 
1469
 
  // codetools
1470
 
  ecAutoCompletion: SetResult(VK_J,[ssMeta],VK_UNKNOWN,[]);
1471
 
  ecWordCompletion: SetResult(VK_SPACE,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1472
 
  ecCompleteCode: SetResult(VK_C,[ssCtrl,ssShift],VK_UNKNOWN,[]);
1473
 
  ecIdentCompletion: SetResult(VK_SPACE,[ssCtrl],VK_UNKNOWN,[]);
1474
 
  ecShowCodeContext: SetResult(VK_SPACE,[ssCtrl,ssShift],VK_UNKNOWN,[]);
1475
 
  ecExtractProc: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1476
 
  ecFindIdentifierRefs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1477
 
  ecRenameIdentifier: SetResult(VK_E,[ssMeta,ssShift],VK_UNKNOWN,[]);
1478
 
  ecInvertAssignment: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1479
 
  ecSyntaxCheck: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1480
 
  ecGuessUnclosedBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1481
 
  ecGuessMisplacedIFDEF: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1482
 
  ecConvertDFM2LFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1483
 
  ecCheckLFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1484
 
  ecConvertDelphiUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1485
 
  ecConvertDelphiProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1486
 
  ecConvertDelphiPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1487
 
  ecConvertEncoding: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1488
 
  ecFindProcedureDefinition: SetResult(VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[]);
1489
 
  ecFindProcedureMethod: SetResult(VK_DOWN,[ssShift,SSCtrl],VK_UNKNOWN,[]);
1490
 
  ecFindDeclaration: SetResult(VK_UP,[ssAlt],VK_UNKNOWN,[]);
1491
 
  ecFindBlockOtherEnd: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1492
 
  ecFindBlockStart: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1493
 
  ecGotoIncludeDirective: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1494
 
  ecShowAbstractMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1495
 
  ecRemoveEmptyMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1496
 
 
1497
 
  // source notebook
1498
 
  ecNextEditor: SetResult(VK_RIGHT, [ssMeta,ssAlt], VK_UNKNOWN, []);
1499
 
  ecPrevEditor: SetResult(VK_LEFT, [ssMeta,ssAlt], VK_UNKNOWN, []);
1500
 
  ecResetDebugger: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1501
 
  ecToggleBreakPoint: SetResult(VK_P,[ssCtrl],VK_UNKNOWN,[]);
1502
 
  ecMoveEditorLeft: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
1503
 
  ecMoveEditorRight: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
1504
 
  ecMoveEditorLeftmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
1505
 
  ecMoveEditorRightmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []);
1506
 
 
1507
 
  ecNextSharedEditor:        SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1508
 
  ecPrevSharedEditor:        SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1509
 
  ecNextWindow:              SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1510
 
  ecPrevWindow:              SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1511
 
  ecMoveEditorNextWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1512
 
  ecMoveEditorPrevWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1513
 
  ecMoveEditorNewWindow:     SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1514
 
  ecCopyEditorNextWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1515
 
  ecCopyEditorPrevWindow:    SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1516
 
  ecCopyEditorNewWindow:     SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1517
 
 
1518
 
  ecGotoEditor1: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1519
 
  ecGotoEditor2: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1520
 
  ecGotoEditor3: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1521
 
  ecGotoEditor4: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1522
 
  ecGotoEditor5: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1523
 
  ecGotoEditor6: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1524
 
  ecGotoEditor7: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1525
 
  ecGotoEditor8: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1526
 
  ecGotoEditor9: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1527
 
  ecGotoEditor0: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1528
 
 
1529
 
  ecLockEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1530
 
 
1531
 
  (*
1532
 
  EcFoldLevel1: SetResult(VK_1,[ssMeta,ssShift],VK_UNKNOWN,[]);
1533
 
  EcFoldLevel2: SetResult(VK_2,[ssMeta,ssShift],VK_UNKNOWN,[]);
1534
 
  EcFoldLevel3: SetResult(VK_3,[ssMeta,ssShift],VK_UNKNOWN,[]);
1535
 
  EcFoldLevel4: SetResult(VK_4,[ssMeta,ssShift],VK_UNKNOWN,[]);
1536
 
  EcFoldLevel5: SetResult(VK_5,[ssMeta,ssShift],VK_UNKNOWN,[]);
1537
 
  EcFoldLevel6: SetResult(VK_6,[ssMeta,ssShift],VK_UNKNOWN,[]);
1538
 
  EcFoldLevel7: SetResult(VK_7,[ssMeta,ssShift],VK_UNKNOWN,[]);
1539
 
  EcFoldLevel8: SetResult(VK_8,[ssMeta,ssShift],VK_UNKNOWN,[]);
1540
 
  EcFoldLevel9: SetResult(VK_9,[ssMeta,ssShift],VK_UNKNOWN,[]);
1541
 
  EcFoldLevel0: SetResult(VK_0,[ssMeta,ssShift],VK_UNKNOWN,[]);
1542
 
  EcFoldCurrent: SetResult(VK_OEM_PLUS,[ssMeta,ssShift],VK_UNKNOWN,[]);
1543
 
  EcUnFoldCurrent: SetResult(VK_OEM_MINUS,[ssMeta,ssShift],VK_UNKNOWN,[]);
1544
 
  EcToggleMarkupWord: SetResult(VK_M,[ssMeta],VK_UNKNOWN,[]);
1545
 
  *)
1546
 
 
1547
 
  // file menu
1548
 
  ecNew: SetResult(VK_N,[ssMeta],VK_UNKNOWN,[]);
1549
 
  ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1550
 
  ecNewForm: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1551
 
  ecOpen: SetResult(VK_O,[ssMeta],VK_UNKNOWN,[]);
1552
 
  ecRevert: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1553
 
  ecSave: SetResult(VK_S,[ssMeta],VK_UNKNOWN,[]);
1554
 
  ecSaveAs: SetResult(VK_S,[ssMeta,ssShift],VK_UNKNOWN,[]);
1555
 
  ecSaveAll: SetResult(VK_S,[ssMeta,ssAlt],VK_UNKNOWN,[]);
1556
 
  ecClose: SetResult(VK_W,[ssMeta,ssShift],VK_UNKNOWN,[]);
1557
 
  ecCloseAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1558
 
  ecCleanDirectory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1559
 
  ecRestart: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1560
 
  ecQuit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1561
 
 
1562
 
  // view menu
1563
 
  ecToggleObjectInsp: SetResult(VK_I,[ssAlt,ssMeta],VK_UNKNOWN,[]);
1564
 
  ecToggleSourceEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1565
 
  ecToggleCodeExpl: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1566
 
  ecToggleFPDocEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1567
 
  ecToggleMessages: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1568
 
  ecToggleSearchResults: SetResult(VK_F,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1569
 
  ecToggleWatches: SetResult(VK_W,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1570
 
  ecToggleBreakPoints: SetResult(VK_B,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1571
 
  ecToggleLocals: SetResult(VK_L,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1572
 
  ecToggleCallStack: SetResult(VK_S,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1573
 
  ecToggleRegisters: SetResult(VK_R,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1574
 
  ecToggleAssembler: SetResult(VK_D,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1575
 
  ecToggleDebugEvents: SetResult(VK_V,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1576
 
  ecToggleDebuggerOut: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1577
 
  ecViewUnits: SetResult(VK_U,[ssCtrl,ssAlt],VK_UNKNOWN,[]);
1578
 
  ecViewForms: SetResult(VK_U,[ssShift,ssCtrl],VK_UNKNOWN,[]);
1579
 
  ecViewUnitDependencies: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1580
 
  ecViewUnitInfo: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1581
 
  ecToggleFormUnit: SetResult(VK_F,[ssMeta,ssAlt],VK_UNKNOWN,[]);
1582
 
  ecViewAnchorEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1583
 
  ecToggleCodeBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1584
 
  ecToggleRestrictionBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1585
 
  ecToggleCompPalette: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1586
 
  ecToggleIDESpeedBtns: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1587
 
 
1588
 
  // project menu
1589
 
  ecNewProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1590
 
  ecNewProjectFromFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1591
 
  ecOpenProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1592
 
  ecCloseProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1593
 
  ecSaveProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1594
 
  ecSaveProjectAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1595
 
  ecPublishProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1596
 
  ecProjectInspector: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1597
 
  ecAddCurUnitToProj: SetResult(VK_A,[ssAlt,ssMeta],VK_UNKNOWN,[]);
1598
 
  ecRemoveFromProj: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1599
 
  ecViewProjectSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1600
 
  ecProjectOptions: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1601
 
 
1602
 
  // run menu
1603
 
  ecBuild: SetResult(VK_B,[ssMeta],VK_UNKNOWN,[]);
1604
 
  ecBuildAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1605
 
  ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1606
 
  ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1607
 
  ecRun: SetResult(VK_R,[ssMeta],VK_UNKNOWN,[]);
1608
 
  ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1609
 
  ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1610
 
  ecStepInto: SetResult(VK_R,[ssMeta,ssAlt],VK_UNKNOWN,[]);
1611
 
  ecStepOver: SetResult(VK_R,[ssMeta,ssShift],VK_UNKNOWN,[]);
1612
 
  ecStepOut: SetResult(VK_T,[ssMeta,ssShift],VK_UNKNOWN,[]);
1613
 
  ecRunToCursor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1614
 
  ecStopProgram: SetResult(VK_RETURN,[ssShift,ssMeta],VK_UNKNOWN,[]);
1615
 
  ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1616
 
  ecRunParameters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1617
 
  ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1618
 
  ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1619
 
  ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1620
 
  ecInspect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1621
 
  ecEvaluate: SetResult(VK_E,[ssCtrl,ssShift],VK_UNKNOWN,[]);
1622
 
  ecAddWatch: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1623
 
 
1624
 
  // components menu
1625
 
  ecNewPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1626
 
  ecOpenPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1627
 
  ecOpenPackageFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1628
 
  ecOpenPackageOfCurUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1629
 
  ecAddCurUnitToPkg: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1630
 
  ecPackageGraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1631
 
  ecEditInstallPkgs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1632
 
  ecConfigCustomComps: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1633
 
 
1634
 
  // tools menu
1635
 
  ecExtToolSettings: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1636
 
  ecBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1637
 
  ecConfigBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1638
 
  ecMakeResourceString: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1639
 
  ecDiff: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1640
 
 
1641
 
  // environment menu
1642
 
  ecEnvironmentOptions: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1643
 
  ecEditCodeTemplates: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1644
 
  ecCodeToolsDefinesEd: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1645
 
  ecRescanFPCSrcDir: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1646
 
 
1647
 
  // help menu
1648
 
  ecAboutLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1649
 
  ecOnlineHelp: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1650
 
  ecContextHelp: SetResult(VK_HELP,[],VK_UNKNOWN,[]);
1651
 
  ecEditContextHelp: SetResult(VK_HELP,[ssShift,ssCtrl],VK_HELP,[ssCtrl]);
1652
 
  ecReportingBug: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1653
 
 
1654
 
  // designer
1655
 
  ecDesignerCopy        : SetResult(VK_C,[ssMeta],VK_UNKNOWN,[]);
1656
 
  ecDesignerCut         : SetResult(VK_X,[ssMeta],VK_UNKNOWN,[]);
1657
 
  ecDesignerPaste       : SetResult(VK_V,[ssMeta],VK_UNKNOWN,[]);
1658
 
  ecDesignerSelectParent: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
1659
 
  ecDesignerMoveToFront : SetResult(VK_PRIOR,[ssShift],VK_UNKNOWN,[]);
1660
 
  ecDesignerMoveToBack  : SetResult(VK_NEXT,[ssShift],VK_UNKNOWN,[]);
1661
 
  ecDesignerForwardOne  : SetResult(VK_PRIOR,[ssMeta],VK_UNKNOWN,[]);
1662
 
  ecDesignerBackOne     : SetResult(VK_NEXT,[ssMeta],VK_UNKNOWN,[]);
1663
 
 
1664
 
  else
1665
 
    begin
1666
 
      SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1667
 
      SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1668
 
      case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of
1669
 
        // Edit template
1670
 
        ecSynPTmplEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
1671
 
        ecSynPTmplEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
1672
 
        ecSynPTmplEdNextCellRotate:      SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1673
 
        ecSynPTmplEdNextCellSelRotate:   SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1674
 
        ecSynPTmplEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
1675
 
        ecSynPTmplEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
1676
 
        ecSynPTmplEdCellHome:            SetResult(VK_HOME, [],VK_UNKNOWN,[]);
1677
 
        ecSynPTmplEdCellEnd:             SetResult(VK_END,  [],VK_UNKNOWN,[]);
1678
 
        ecSynPTmplEdCellSelect:          SetResult(VK_A,    [ssCtrl],VK_UNKNOWN,[]);
1679
 
        ecSynPTmplEdFinish:              SetResult(VK_RETURN,[],VK_UNKNOWN,[]);
1680
 
        ecSynPTmplEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
1681
 
      end;
1682
 
      case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of
1683
 
        // Edit template
1684
 
        ecSynPTmplEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
1685
 
        ecSynPTmplEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
1686
 
        ecSynPTmplEdNextCellRotate:      SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1687
 
        ecSynPTmplEdNextCellSelRotate:   SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1688
 
        ecSynPTmplEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
1689
 
        ecSynPTmplEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
1690
 
        ecSynPTmplEdCellHome:            SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1691
 
        ecSynPTmplEdCellEnd:             SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1692
 
        ecSynPTmplEdCellSelect:          SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1693
 
        ecSynPTmplEdFinish:              SetResult(VK_RETURN,[],VK_UNKNOWN,[]);
1694
 
        ecSynPTmplEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
1695
 
      end;
1696
 
      case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of
1697
 
        // SyncroEdit
1698
 
        ecSynPSyncroEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
1699
 
        ecSynPSyncroEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
1700
 
        ecSynPSyncroEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
1701
 
        ecSynPSyncroEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
1702
 
        ecSynPSyncroEdCellHome:            SetResult(VK_HOME, [],VK_UNKNOWN,[]);
1703
 
        ecSynPSyncroEdCellEnd:             SetResult(VK_END,  [],VK_UNKNOWN,[]);
1704
 
        ecSynPSyncroEdCellSelect:          SetResult(VK_A,    [ssCtrl],VK_UNKNOWN,[]);
1705
 
        ecSynPSyncroEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
1706
 
      end;
1707
 
      case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of
1708
 
        // SyncroEdit
1709
 
        ecSynPSyncroEdNextCell:            SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]);
1710
 
        ecSynPSyncroEdNextCellSel:         SetResult(VK_TAB,  [],      VK_UNKNOWN,[]);
1711
 
        ecSynPSyncroEdPrevCell:            SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]);
1712
 
        ecSynPSyncroEdPrevCellSel:         SetResult(VK_TAB,  [ssShift],VK_UNKNOWN,[]);
1713
 
        ecSynPSyncroEdCellHome:            SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1714
 
        ecSynPSyncroEdCellEnd:             SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1715
 
        ecSynPSyncroEdCellSelect:          SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]);
1716
 
        ecSynPSyncroEdEscape:              SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]);
1717
 
      end;
1718
 
      case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of
1719
 
        // SyncroEdit, during selection
1720
 
        ecSynPSyncroEdStart:               SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[]);
1721
 
      end;
1722
 
    end;
1723
 
  end;
1724
 
end;
1725
 
 
1726
 
procedure GetDefaultKeyForMacOSXLazScheme(Command: word; var TheKeyA, TheKeyB: TIDEShortCut);
1727
 
 
1728
 
  procedure SetResult(NewKeyA: word; NewShiftA: TShiftState;
1729
 
    NewKeyB: word; NewShiftB: TShiftState);
1730
 
  begin
1731
 
    TheKeyA:=IDEShortCut(NewKeyA, NewShiftA, VK_UNKNOWN, []);
1732
 
    TheKeyB:=IDEShortCut(NewKeyB, NewShiftB, VK_UNKNOWN, []);
1733
 
  end;
1734
 
 
1735
 
  procedure SetResult2(
1736
 
    NewKey1A: word; NewShift1A: TShiftState;
1737
 
    NewKey1B: word; NewShift1B: TShiftState;
1738
 
    NewKey2A: word; NewShift2A: TShiftState;
1739
 
    NewKey2B: word; NewShift2B: TShiftState);
1740
 
  begin
1741
 
    TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B);
1742
 
    TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B);
1743
 
  end;
1744
 
 
1745
 
begin
1746
 
  { First default to standard Mac OS X scheme }
1747
 
  GetDefaultKeyForMacOSXScheme(Command, TheKeyA, TheKeyB);
1748
 
 
1749
 
  { Now override some entries }
1750
 
  case Command of
1751
 
  // moving
1752
 
  ecLineStart: SetResult(VK_HOME, [],VK_LEFT,[ssMeta]);
1753
 
  ecLineEnd: SetResult(VK_END, [],VK_RIGHT,[ssMeta]);
1754
 
  ecEditorTop: SetResult(VK_UP,[ssMeta],VK_UNKNOWN,[]);
1755
 
  ecEditorBottom: SetResult(VK_DOWN,[ssMeta],VK_UNKNOWN,[]);
1756
 
 
1757
 
  // selection
1758
 
  ecSelLineStart: SetResult(VK_HOME, [ssShift],VK_LEFT,[ssMeta,ssShift]);
1759
 
  ecSelLineEnd: SetResult(VK_END, [ssShift],VK_RIGHT,[ssMeta,ssShift]);
1760
 
  ecSelEditorTop: SetResult(VK_HOME, [ssShift,ssCtrl],VK_UNKNOWN,[]);
1761
 
  ecSelEditorBottom: SetResult(VK_END, [ssShift,ssCtrl],VK_UNKNOWN,[]);
1762
 
 
1763
 
  // codetools
1764
 
  ecRenameIdentifier: SetResult(VK_E, [ssShift,ssCtrl],VK_UNKNOWN,[]);
1765
 
 
1766
 
  // run menu
1767
 
  ecBuild: SetResult(VK_F9,[ssCtrl],VK_F9,[ssCtrl,ssMeta]);
1768
 
  ecBuildAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1769
 
  ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1770
 
  ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1771
 
  ecRun: SetResult(VK_F9,[],VK_F9,[ssMeta]);
1772
 
  ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1773
 
  ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1774
 
  ecStepInto: SetResult(VK_F7,[],VK_F7,[ssMeta]);
1775
 
  ecStepOver: SetResult(VK_F8,[],VK_F8,[ssMeta]);
1776
 
  ecStepOut: SetResult(VK_F8,[],VK_F8,[ssShift,ssMeta]);
1777
 
  ecRunToCursor: SetResult(VK_F4,[],VK_F4,[ssMeta]);
1778
 
  ecStopProgram: SetResult(VK_F2,[ssCtrl],VK_F2,[ssCtrl,ssMeta]);
1779
 
  ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1780
 
  ecRunParameters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1781
 
  ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1782
 
  ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1783
 
  ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
1784
 
  ecInspect: SetResult(VK_F5,[ssAlt],VK_UNKNOWN,[]);
1785
 
  ecEvaluate: SetResult(VK_F7,[ssCtrl],VK_F7,[ssCtrl,ssMeta]);
1786
 
  ecAddWatch: SetResult(VK_F5,[ssCtrl],VK_F5,[ssCtrl,ssMeta]);
1787
 
  end;
1788
 
end;
1789
 
 
1790
211
function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme;
1791
212
begin
1792
213
  if SchemeName='' then
1839
260
  Result:=SysUtils.CompareText(Key1.Name,Key2.Name);
1840
261
end;
1841
262
 
1842
 
function CompareNameWithLoadedKeyCommand(NameAsAnsiString, Key: Pointer
1843
 
  ): integer;
 
263
function CompareNameWithLoadedKeyCommand(NameAsAnsiString, Key: Pointer): integer;
1844
264
var
1845
265
  Name: string;
1846
266
  LoadedKey: TLoadedKeyCommand absolute Key;
1856
276
    ecNone                    : Result:= dlgEnvNone;
1857
277
    ecLeft                    : Result:= lisLeft;
1858
278
    ecRight                   : Result:= lisRight;
1859
 
    ecUp                      : Result:= dlgUpWord;
1860
 
    ecDown                    : Result:= dlgDownWord;
 
279
    ecUp                      : Result:= lisUp;
 
280
    ecDown                    : Result:= lisDown;
1861
281
    ecWordLeft                : Result:= srkmecWordLeft;
1862
282
    ecWordRight               : Result:= srkmecWordRight;
 
283
    ecWordEndLeft             : Result:= srkmecWordEndLeft;
 
284
    ecWordEndRight            : Result:= srkmecWordEndRight;
 
285
    ecHalfWordLeft            : Result:= srkmecHalfWordLeft;
 
286
    ecHalfWordRight           : Result:= srkmecHalfWordRight;
1863
287
    ecLineStart               : Result:= srkmecLineStart;
1864
288
    ecLineEnd                 : Result:= srkmecLineEnd;
1865
289
    ecPageUp                  : Result:= srkmecPageUp;
1878
302
    ecSelDown                 : Result:= srkmecSelDown;
1879
303
    ecSelWordLeft             : Result:= srkmecSelWordLeft;
1880
304
    ecSelWordRight            : Result:= srkmecSelWordRight;
 
305
    ecSelWordEndLeft          : Result:= srkmecWordEndLeft;
 
306
    ecSelWordEndRight         : Result:= srkmecWordEndRight;
 
307
    ecSelHalfWordLeft         : Result:= srkmecHalfWordLeft;
 
308
    ecSelHalfWordRight        : Result:= srkmecHalfWordRight;
1881
309
    ecSelLineStart            : Result:= srkmecSelLineStart;
1882
310
    ecSelLineEnd              : Result:= srkmecSelLineEnd;
1883
311
    ecSelPageUp               : Result:= srkmecSelPageUp;
1918
346
    ecInsertLine              : Result:= srkmecInsertLine;
1919
347
    ecChar                    : Result:= srkmecChar;
1920
348
    ecImeStr                  : Result:= srkmecImeStr;
1921
 
    ecUndo                    : Result:= lisMenuUndo;
1922
 
    ecRedo                    : Result:= lisMenuRedo;
 
349
    ecUndo                    : Result:= lisUndo;
 
350
    ecRedo                    : Result:= lisRedo;
1923
351
    ecCut                     : Result:= srkmecCut;
1924
352
    ecCopy                    : Result:= srkmecCopy;
1925
353
    ecPaste                   : Result:= srkmecPaste;
1999
427
    ecNewForm                 : Result:= lisMenuNewForm;
2000
428
    ecOpen                    : Result:= lisMenuOpen;
2001
429
    ecRevert                  : Result:= lisMenuRevert;
2002
 
    ecSave                    : Result:= srkmecSave;
 
430
    ecSave                    : Result:= lisSave;
2003
431
    ecSaveAs                  : Result:= lisMenuSaveAs;
2004
 
    ecSaveAll                 : Result:= lisMenuSaveAll;
2005
 
    ecClose                   : Result:= lisMenuClose;
 
432
    ecSaveAll                 : Result:= lisSaveAll;
 
433
    ecClose                   : Result:= lisClose;
2006
434
    ecCloseAll                : Result:= lisMenuCloseAll;
2007
435
    ecCleanDirectory          : Result:= lisMenuCleanDirectory;
2008
 
    ecRestart                 : Result:= lisMenuRestart;
2009
 
    ecQuit                    : Result:= srkmecQuit;
 
436
    ecRestart                 : Result:= lisRestart;
 
437
    ecQuit                    : Result:= lisQuit;
2010
438
 
2011
439
    // edit menu
2012
 
    ecSelectionUpperCase      : Result:= lismenuuppercaseselection;
2013
 
    ecSelectionLowerCase      : Result:= lismenulowercaseselection;
 
440
    ecSelectionUpperCase      : Result:= lisMenuUpperCaseSelection;
 
441
    ecSelectionLowerCase      : Result:= lisMenuLowerCaseSelection;
 
442
    ecSelectionSwapCase       : Result:= lisMenuSwapCaseSelection;
2014
443
    ecSelectionTabs2Spaces    : Result:= srkmecSelectionTabs2Spaces;
2015
444
    ecSelectionEnclose        : Result:= lisMenuEncloseSelection;
2016
 
    ecSelectionComment        : Result:= lismenucommentselection;
2017
 
    ecSelectionUncomment      : Result:= lismenuuncommentselection;
2018
 
    ecToggleComment           : Result:= lismenutogglecomment;
2019
 
    ecSelectionConditional    : Result:= lisMenuConditionalSelection;
2020
 
    ecSelectionSort           : Result:= lismenusortselection;
 
445
    ecSelectionComment        : Result:= lisMenuCommentSelection;
 
446
    ecSelectionUncomment      : Result:= lisMenuUncommentSelection;
 
447
    ecToggleComment           : Result:= lisMenuToggleComment;
 
448
    ecSelectionEncloseIFDEF   : Result:= lisMenuEncloseInIFDEF;
 
449
    ecSelectionSort           : Result:= lisMenuSortSelection;
2021
450
    ecSelectionBreakLines     : Result:= lisMenuBeakLinesInSelection;
2022
 
    ecSelectToBrace           : Result:= lismenuselecttobrace;
2023
 
    ecSelectCodeBlock         : Result:= lismenuselectcodeblock;
 
451
    ecSelectToBrace           : Result:= lisMenuSelectToBrace;
 
452
    ecSelectCodeBlock         : Result:= lisMenuSelectCodeBlock;
2024
453
    ecSelectWord              : Result:= lisMenuSelectWord;
2025
454
    ecSelectLine              : Result:= lisMenuSelectLine;
2026
455
    ecSelectParagraph         : Result:= lisMenuSelectParagraph;
2028
457
    ecInsertGPLNotice         : Result:= srkmecInsertGPLNotice;
2029
458
    ecInsertLGPLNotice        : Result:= srkmecInsertLGPLNotice;
2030
459
    ecInsertModifiedLGPLNotice: Result:= srkmecInsertModifiedLGPLNotice;
 
460
    ecInsertMITNotice         : Result:= srkmecInsertMITNotice;
2031
461
    ecInsertUserName          : Result:= srkmecInsertUserName;
2032
462
    ecInsertDateTime          : Result:= srkmecInsertDateTime;
2033
463
    ecInsertChangeLogEntry    : Result:= srkmecInsertChangeLogEntry;
2040
470
    ecInsertCVSRevision       : Result:= srkmecInsertCVSRevision;
2041
471
    ecInsertCVSSource         : Result:= srkmecInsertCVSSource;
2042
472
    ecInsertGUID              : Result:= srkmecInsertGUID;
 
473
    ecInsertFilename          : Result:= srkmecInsertFilename;
2043
474
 
2044
475
    // search menu
2045
476
    ecFind                    : Result:= srkmecFind;
2047
478
    ecFindPrevious            : Result:= srkmecFindPrevious;
2048
479
    ecFindInFiles             : Result:= srkmecFindInFiles;
2049
480
    ecReplace                 : Result:= srkmecReplace;
2050
 
    ecIncrementalFind         : Result:= lismenuincrementalfind;
 
481
    ecIncrementalFind         : Result:= lisMenuIncrementalFind;
2051
482
    ecFindProcedureDefinition : Result:= srkmecFindProcedureDefinition;
2052
483
    ecFindProcedureMethod     : Result:= srkmecFindProcedureMethod;
2053
484
    ecGotoLineNumber          : Result:= srkmecGotoLineNumber;
2054
485
    ecFindNextWordOccurrence  : Result:= srkmecFindNextWordOccurrence;
2055
486
    ecFindPrevWordOccurrence  : Result:= srkmecFindPrevWordOccurrence;
2056
 
    ecJumpBack                : Result:= lismenujumpback;
2057
 
    ecJumpForward             : Result:= lismenujumpforward;
 
487
    ecJumpBack                : Result:= lisMenuJumpBack;
 
488
    ecJumpForward             : Result:= lisMenuJumpForward;
2058
489
    ecAddJumpPoint            : Result:= srkmecAddJumpPoint;
2059
 
    ecViewJumpHistory         : Result:= lismenuviewjumphistory;
2060
490
    ecJumpToNextError         : Result:= lisMenuJumpToNextError;
2061
491
    ecJumpToPrevError         : Result:= lisMenuJumpToPrevError;
2062
492
    ecGotoIncludeDirective    : Result:= srkmecGotoIncludeDirective;
2075
505
    ecToggleBreakPoints       : Result:= srkmecToggleBreakPoints;
2076
506
    ecToggleDebuggerOut       : Result:= srkmecToggleDebuggerOut;
2077
507
    ecToggleLocals            : Result:= srkmecToggleLocals;
 
508
    ecViewThreads             : Result:= srkmecViewThreads;
 
509
    ecViewPseudoTerminal      : Result:= srkmecViewPseudoTerminal;
2078
510
    ecToggleCallStack         : Result:= srkmecToggleCallStack;
2079
511
    ecToggleRegisters         : Result:= srkmecToggleRegisters;
2080
512
    ecToggleAssembler         : Result:= srkmecToggleAssembler;
2081
 
    ecViewUnits               : Result:= srkmecViewUnits;
2082
 
    ecViewForms               : Result:= srkmecViewForms;
 
513
    ecViewHistory             : Result:= srkmecViewHistory;
2083
514
    ecViewUnitDependencies    : Result:= srkmecViewUnitDependencies;
2084
515
    ecViewUnitInfo            : Result:= srkmecViewUnitInfo;
2085
516
    ecViewAnchorEditor        : Result:= srkmecViewAnchorEditor;
 
517
    ecViewTabOrder            : Result:= srkmecViewTabOrder;
2086
518
    ecToggleCodeBrowser       : Result:= srkmecToggleCodeBrowser;
2087
519
    ecToggleRestrictionBrowser: Result:= srkmecToggleRestrictionBrowser;
2088
520
    ecViewComponents          : Result:= srkmecViewComponents;
 
521
    ecViewJumpHistory         : Result:= lisMenuViewJumpHistory;
2089
522
    ecToggleCompPalette       : Result:= srkmecToggleCompPalette;
2090
523
    ecToggleIDESpeedBtns      : Result:= srkmecToggleIDESpeedBtns;
2091
524
 
2113
546
    ecShowAbstractMethods     : Result:= srkmecShowAbstractMethods;
2114
547
    ecRemoveEmptyMethods      : Result:= srkmecRemoveEmptyMethods;
2115
548
    ecRemoveUnusedUnits       : Result:= srkmecRemoveUnusedUnits;
 
549
    ecUseUnit                 : Result:= lisUseUnit;
2116
550
    ecFindOverloads           : Result:= srkmecFindOverloads;
2117
551
 
2118
552
    // project (menu string resource)
2126
560
    ecProjectInspector        : Result:= lisMenuProjectInspector;
2127
561
    ecAddCurUnitToProj        : Result:= lisMenuAddToProject;
2128
562
    ecRemoveFromProj          : Result:= lisMenuRemoveFromProject;
2129
 
    ecViewProjectSource       : Result:= lisMenuViewSource;
 
563
    ecViewProjectUnits        : Result:= srkmecViewUnits;
 
564
    ecViewProjectForms        : Result:= srkmecViewForms;
 
565
    ecViewProjectSource       : Result:= lisMenuViewProjectSource;
2130
566
    ecProjectOptions          : Result:= lisMenuProjectOptions;
2131
567
 
2132
568
    // run menu (menu string resource)
 
569
    ecCompile                 : Result:= srkmecCompile;
2133
570
    ecBuild                   : Result:= srkmecBuild;
2134
 
    ecBuildAll                : Result:= srkmecBuildAll;
2135
571
    ecQuickCompile            : Result:= srkmecQuickCompile;
 
572
    ecCleanUpCompiled         : Result:= srkmecCleanUpCompiled;
2136
573
    ecAbortBuild              : Result:= srkmecAbortBuild;
2137
574
    ecRun                     : Result:= srkmecRun;
2138
575
    ecPause                   : Result:= srkmecPause;
2154
591
    ecInspect                 : Result:= srkmecInspect;
2155
592
    ecEvaluate                : Result:= srkmecEvaluate;
2156
593
    ecAddWatch                : Result:= srkmecAddWatch;
 
594
    ecAddBpSource             : Result:= srkmecAddBpSource;
 
595
    ecAddBpAddress            : Result:= srkmecAddBpAddress;
 
596
    ecAddBpDataWatch          : Result:= srkmecAddBpWatchPoint;
2157
597
 
2158
598
    // components menu
2159
599
    ecNewPackage              : Result:= lisKMNewPackage;
2160
600
    ecOpenPackage             : Result:= lisMenuOpenPackage;
2161
601
    ecOpenPackageFile         : Result:= lisMenuOpenPackageFile;
2162
602
    ecOpenPackageOfCurUnit    : Result:= lisMenuOpenPackageOfCurUnit;
2163
 
    ecAddCurUnitToPkg         : Result:= lisMenuAddCurUnitToPkg;
 
603
    ecAddCurFileToPkg         : Result:= lisMenuAddCurFileToPkg;
 
604
    ecNewPkgComponent         : Result:= lisMenuPkgNewPackageComponent;
2164
605
    ecPackageGraph            : Result:= lisMenuPackageGraph;
2165
606
    ecEditInstallPkgs         : Result:= lisMenuEditInstallPkgs;
2166
607
    ecConfigCustomComps       : Result:= lisMenuConfigCustomComps;
2167
608
 
2168
609
    // tools menu
 
610
    ecEnvironmentOptions      : Result:= srkmecEnvironmentOptions;
 
611
    ecRescanFPCSrcDir         : Result:= lisMenuRescanFPCSourceDirectory;
 
612
    ecEditCodeTemplates       : Result:= lisMenuEditCodeTemplates;
 
613
    ecCodeToolsDefinesEd      : Result:= srkmecCodeToolsDefinesEd;
 
614
 
2169
615
    ecExtToolSettings         : Result:= srkmecExtToolSettings;
 
616
    ecManageExamples          : Result:= lisMenuExampleProjects;
2170
617
    ecConfigBuildLazarus      : Result:= lismenuconfigurebuildlazarus;
2171
618
    ecBuildLazarus            : Result:= srkmecBuildLazarus;
2172
619
    ecExtToolFirst
2174
621
    ecMakeResourceString      : Result:= srkmecMakeResourceString;
2175
622
    ecDiff                    : Result:= srkmecDiff;
2176
623
 
2177
 
    // environment menu
2178
 
    ecEnvironmentOptions      : Result:= srkmecEnvironmentOptions;
2179
 
    ecEditCodeTemplates       : Result:= lisMenuEditCodeTemplates;
2180
 
    ecCodeToolsDefinesEd      : Result:= srkmecCodeToolsDefinesEd;
2181
 
    ecRescanFPCSrcDir         : Result:= lisMenuRescanFPCSourceDirectory;
 
624
    // window menu
 
625
    ecWindowManager           : Result:= lisEditorWindowManager;
2182
626
 
2183
627
    // help menu
2184
628
    ecAboutLazarus            : Result:= lisAboutLazarus;
2186
630
    ecContextHelp             : Result:= lisMenuContextHelp;
2187
631
    ecEditContextHelp         : Result:= lisMenuEditContextHelp;
2188
632
    ecReportingBug            : Result:= srkmecReportingBug;
 
633
    ecFocusHint               : Result:= lisFocusHint;
2189
634
 
2190
635
    // desginer
2191
636
    ecDesignerCopy            : Result:= lisDsgCopyComponents;
2197
642
    ecDesignerForwardOne      : Result:= lisDsgOrderForwardOne;
2198
643
    ecDesignerBackOne         : Result:= lisDsgOrderBackOne;
2199
644
 
 
645
    // macro
 
646
    ecSynMacroRecord          : Result:= srkmecSynMacroRecord;
 
647
    ecSynMacroPlay            : Result:= srkmecSynMacroPlay;
 
648
 
 
649
    // Edit template
 
650
    ecIdePTmplEdNextCell:           Result := srkmecSynPTmplEdNextCell;
 
651
    ecIdePTmplEdNextCellSel:        Result := srkmecSynPTmplEdNextCellSel;
 
652
    ecIdePTmplEdNextCellRotate:     Result := srkmecSynPTmplEdNextCellRotate;
 
653
    ecIdePTmplEdNextCellSelRotate:  Result := srkmecSynPTmplEdNextCellSelRotate;
 
654
    ecIdePTmplEdPrevCell:           Result := srkmecSynPTmplEdPrevCell;
 
655
    ecIdePTmplEdPrevCellSel:        Result := srkmecSynPTmplEdPrevCellSel;
 
656
    ecIdePTmplEdCellHome:           Result := srkmecSynPTmplEdCellHome;
 
657
    ecIdePTmplEdCellEnd:            Result := srkmecSynPTmplEdCellEnd;
 
658
    ecIdePTmplEdCellSelect:         Result := srkmecSynPTmplEdCellSelect;
 
659
    ecIdePTmplEdFinish:             Result := srkmecSynPTmplEdFinish;
 
660
    ecIdePTmplEdEscape:             Result := srkmecSynPTmplEdEscape;
 
661
    // Edit template
 
662
    ecIdePTmplEdOutNextCell:           Result := srkmecSynPTmplEdNextCell;
 
663
    ecIdePTmplEdOutNextCellSel:        Result := srkmecSynPTmplEdNextCellSel;
 
664
    ecIdePTmplEdOutNextCellRotate:     Result := srkmecSynPTmplEdNextCellRotate;
 
665
    ecIdePTmplEdOutNextCellSelRotate:  Result := srkmecSynPTmplEdNextCellSelRotate;
 
666
    ecIdePTmplEdOutPrevCell:           Result := srkmecSynPTmplEdPrevCell;
 
667
    ecIdePTmplEdOutPrevCellSel:        Result := srkmecSynPTmplEdPrevCellSel;
 
668
    ecIdePTmplEdOutCellHome:           Result := srkmecSynPTmplEdCellHome;
 
669
    ecIdePTmplEdOutCellEnd:            Result := srkmecSynPTmplEdCellEnd;
 
670
    ecIdePTmplEdOutCellSelect:         Result := srkmecSynPTmplEdCellSelect;
 
671
    ecIdePTmplEdOutFinish:             Result := srkmecSynPTmplEdFinish;
 
672
    ecIdePTmplEdOutEscape:             Result := srkmecSynPTmplEdEscape;
 
673
    // SyncroEdit
 
674
    ecIdePSyncroEdNextCell:         Result := srkmecSynPSyncroEdNextCell;
 
675
    ecIdePSyncroEdNextCellSel:      Result := srkmecSynPSyncroEdNextCellSel;
 
676
    ecIdePSyncroEdPrevCell:         Result := srkmecSynPSyncroEdPrevCell;
 
677
    ecIdePSyncroEdPrevCellSel:      Result := srkmecSynPSyncroEdPrevCellSel;
 
678
    ecIdePSyncroEdCellHome:         Result := srkmecSynPSyncroEdCellHome;
 
679
    ecIdePSyncroEdCellEnd:          Result := srkmecSynPSyncroEdCellEnd;
 
680
    ecIdePSyncroEdCellSelect:       Result := srkmecSynPSyncroEdCellSelect;
 
681
    ecIdePSyncroEdEscape:           Result := srkmecSynPSyncroEdEscape;
 
682
    // SyncroEdit
 
683
    ecIdePSyncroEdOutNextCell:         Result := srkmecSynPSyncroEdNextCell;
 
684
    ecIdePSyncroEdOutNextCellSel:      Result := srkmecSynPSyncroEdNextCellSel;
 
685
    ecIdePSyncroEdOutPrevCell:         Result := srkmecSynPSyncroEdPrevCell;
 
686
    ecIdePSyncroEdOutPrevCellSel:      Result := srkmecSynPSyncroEdPrevCellSel;
 
687
    ecIdePSyncroEdOutCellHome:         Result := srkmecSynPSyncroEdCellHome;
 
688
    ecIdePSyncroEdOutCellEnd:          Result := srkmecSynPSyncroEdCellEnd;
 
689
    ecIdePSyncroEdOutCellSelect:       Result := srkmecSynPSyncroEdCellSelect;
 
690
    ecIdePSyncroEdOutEscape:           Result := srkmecSynPSyncroEdEscape;
 
691
    // SyncroEdit, during selection
 
692
    ecIdePSyncroEdSelStart:            Result := srkmecSynPSyncroEdStart;
 
693
 
2200
694
    else
2201
695
      begin
2202
696
        Result:= srkmecunknown;
2203
 
        case TSynPluginTemplateEdit.ConvertCommandToBase(cmd) of
2204
 
          // Edit template
2205
 
          ecSynPTmplEdNextCell:           Result := srkmecSynPTmplEdNextCell;
2206
 
          ecSynPTmplEdNextCellSel:        Result := srkmecSynPTmplEdNextCellSel;
2207
 
          ecSynPTmplEdNextCellRotate:     Result := srkmecSynPTmplEdNextCellRotate;
2208
 
          ecSynPTmplEdNextCellSelRotate:  Result := srkmecSynPTmplEdNextCellSelRotate;
2209
 
          ecSynPTmplEdPrevCell:           Result := srkmecSynPTmplEdPrevCell;
2210
 
          ecSynPTmplEdPrevCellSel:        Result := srkmecSynPTmplEdPrevCellSel;
2211
 
          ecSynPTmplEdCellHome:           Result := srkmecSynPTmplEdCellHome;
2212
 
          ecSynPTmplEdCellEnd:            Result := srkmecSynPTmplEdCellEnd;
2213
 
          ecSynPTmplEdCellSelect:         Result := srkmecSynPTmplEdCellSelect;
2214
 
          ecSynPTmplEdFinish:             Result := srkmecSynPTmplEdFinish;
2215
 
          ecSynPTmplEdEscape:             Result := srkmecSynPTmplEdEscape;
2216
 
        end;
2217
 
        case TSynPluginTemplateEdit.ConvertCommandToBaseOff(cmd) of
2218
 
          // Edit template
2219
 
          ecSynPTmplEdNextCell:           Result := srkmecSynPTmplEdNextCell;
2220
 
          ecSynPTmplEdNextCellSel:        Result := srkmecSynPTmplEdNextCellSel;
2221
 
          ecSynPTmplEdNextCellRotate:     Result := srkmecSynPTmplEdNextCellRotate;
2222
 
          ecSynPTmplEdNextCellSelRotate:  Result := srkmecSynPTmplEdNextCellSelRotate;
2223
 
          ecSynPTmplEdPrevCell:           Result := srkmecSynPTmplEdPrevCell;
2224
 
          ecSynPTmplEdPrevCellSel:        Result := srkmecSynPTmplEdPrevCellSel;
2225
 
          ecSynPTmplEdCellHome:           Result := srkmecSynPTmplEdCellHome;
2226
 
          ecSynPTmplEdCellEnd:            Result := srkmecSynPTmplEdCellEnd;
2227
 
          ecSynPTmplEdCellSelect:         Result := srkmecSynPTmplEdCellSelect;
2228
 
          ecSynPTmplEdFinish:             Result := srkmecSynPTmplEdFinish;
2229
 
          ecSynPTmplEdEscape:             Result := srkmecSynPTmplEdEscape;
2230
 
        end;
2231
 
 
2232
 
        case TSynPluginSyncroEdit.ConvertCommandToBase(cmd) of
2233
 
          // SyncroEdit
2234
 
          ecSynPSyncroEdNextCell:            Result := srkmecSynPSyncroEdNextCell;
2235
 
          ecSynPSyncroEdNextCellSel:         Result := srkmecSynPSyncroEdNextCellSel;
2236
 
          ecSynPSyncroEdPrevCell:            Result := srkmecSynPSyncroEdPrevCell;
2237
 
          ecSynPSyncroEdPrevCellSel:         Result := srkmecSynPSyncroEdPrevCellSel;
2238
 
          ecSynPSyncroEdCellHome:            Result := srkmecSynPSyncroEdCellHome;
2239
 
          ecSynPSyncroEdCellEnd:             Result := srkmecSynPSyncroEdCellEnd;
2240
 
          ecSynPSyncroEdCellSelect:          Result := srkmecSynPSyncroEdCellSelect;
2241
 
          ecSynPSyncroEdEscape:              Result := srkmecSynPSyncroEdEscape;
2242
 
        end;
2243
 
        case TSynPluginSyncroEdit.ConvertCommandToBaseOff(cmd) of
2244
 
          // SyncroEdit
2245
 
          ecSynPSyncroEdNextCell:            Result := srkmecSynPSyncroEdNextCell;
2246
 
          ecSynPSyncroEdNextCellSel:         Result := srkmecSynPSyncroEdNextCellSel;
2247
 
          ecSynPSyncroEdPrevCell:            Result := srkmecSynPSyncroEdPrevCell;
2248
 
          ecSynPSyncroEdPrevCellSel:         Result := srkmecSynPSyncroEdPrevCellSel;
2249
 
          ecSynPSyncroEdCellHome:            Result := srkmecSynPSyncroEdCellHome;
2250
 
          ecSynPSyncroEdCellEnd:             Result := srkmecSynPSyncroEdCellEnd;
2251
 
          ecSynPSyncroEdCellSelect:          Result := srkmecSynPSyncroEdCellSelect;
2252
 
          ecSynPSyncroEdEscape:              Result := srkmecSynPSyncroEdEscape;
2253
 
        end;
2254
 
        case TSynPluginSyncroEdit.ConvertCommandToBaseSel(cmd) of
2255
 
          // SyncroEdit, during selection
2256
 
          ecSynPSyncroEdStart:               Result := srkmecSynPSyncroEdStart;
2257
 
        end;
2258
697
 
2259
698
      end;
2260
699
  end;
2276
715
  end;
2277
716
 
2278
717
  procedure Check(const ShortCut1, ShortCut2: TIDEShortCut);
 
718
  // check if ShortCut1 hides ShortCut2
2279
719
  begin
2280
720
    if (ShortCut1.Key1=VK_UNKNOWN) then exit;
2281
721
    if (ShortCut1.Key1<>ShortCut2.Key1) or (ShortCut1.Shift1<>ShortCut2.Shift1)
2282
722
    then exit;
2283
 
    if ((ShortCut1.Key2=ShortCut2.Key2) and (ShortCut1.Shift2=ShortCut2.Shift2))
2284
 
        or (ShortCut1.Key2=VK_UNKNOWN) or (ShortCut2.Key2=VK_UNKNOWN)
 
723
    // first key fits
 
724
    if (ShortCut1.Key2=VK_UNKNOWN) or (ShortCut2.Key2=VK_UNKNOWN)
 
725
    or ((ShortCut1.Key2=ShortCut2.Key2) and (ShortCut1.Shift2=ShortCut2.Shift2))
2285
726
    then begin
2286
727
      // conflict found
2287
728
      if Result=0 then begin
2292
733
      if Protocol<>nil then
2293
734
      begin
2294
735
        Add(srkmConflic+IntToStr(Result));
2295
 
        Add(srkmCommand1+Key1.Category.Description+' '
 
736
        Add(srkmCommand1+Key1.Category.Description+'/'
2296
737
          +EditorCommandToDescriptionString(Key1.Command)+'"'
2297
738
          +'->'+KeyAndShiftStateToEditorKeyString(ShortCut1));
2298
739
        Add(srkmConflicW);
2299
 
        Add(srkmCommand2+Key2.Category.Description+' '
 
740
        Add(srkmCommand2+Key2.Category.Description+'/'
2300
741
          +EditorCommandToDescriptionString(Key2.Command)+'"'
2301
742
          +'->'+KeyAndShiftStateToEditorKeyString(ShortCut2));
2302
743
        Add('');
2342
783
 
2343
784
{ TKeyCommandRelation }
2344
785
 
2345
 
procedure TKeyCommandRelation.SetShortcutA(const AValue: TIDEShortCut);
2346
 
begin
2347
 
  inherited SetShortcutA(AValue);
2348
 
  {if Command=12000 then begin
2349
 
    debugln('TKeyCommandRelation.SetShortcutA ',KeyAndShiftStateToEditorKeyString(ShortcutA),' ',KeyAndShiftStateToEditorKeyString(ShortcutB));
2350
 
    if AValue.Key1=VK_UNKNOWN then
2351
 
      RaiseGDBException('');
2352
 
  end;}
2353
 
end;
2354
 
 
2355
 
procedure TKeyCommandRelation.SetShortcutB(const AValue: TIDEShortCut);
2356
 
begin
2357
 
  inherited SetShortcutB(AValue);
2358
 
  {if Command=ecBlockIndent then begin
2359
 
    debugln('TKeyCommandRelation.SetShortcutB ',KeyAndShiftStateToEditorKeyString(ShortcutA),' ',KeyAndShiftStateToEditorKeyString(ShortcutB));
2360
 
    if ShortcutB.Key2=VK_UNKNOWN then
2361
 
      RaiseGDBException('');
2362
 
  end;}
 
786
procedure TKeyCommandRelation.SetSingle(NewKeyA: word; NewShiftA: TShiftState;
 
787
                                        NewKeyB: word; NewShiftB: TShiftState);
 
788
begin
 
789
  ShortcutA:=IDEShortCut(NewKeyA,NewShiftA,VK_UNKNOWN,[]);
 
790
  ShortcutB:=IDEShortCut(NewKeyB,NewShiftB,VK_UNKNOWN,[]);
 
791
end;
 
792
 
 
793
procedure TKeyCommandRelation.SetSingle(NewKeyA: word; NewShiftA: TShiftState);
 
794
begin
 
795
  SetSingle(NewKeyA,NewShiftA,VK_UNKNOWN,[]);
 
796
end;
 
797
 
 
798
procedure TKeyCommandRelation.SetCombo(NewKey1A: word; NewShift1A: TShiftState;
 
799
                                       NewKey1B: word; NewShift1B: TShiftState;
 
800
                                       NewKey2A: word; NewShift2A: TShiftState;
 
801
                                       NewKey2B: word; NewShift2B: TShiftState);
 
802
begin
 
803
  ShortcutA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B);
 
804
  ShortcutB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B);
 
805
end;
 
806
 
 
807
procedure TKeyCommandRelation.SetCombo(NewKey1A: word; NewShift1A: TShiftState;
 
808
                                       NewKey1B: word; NewShift1B: TShiftState);
 
809
begin
 
810
  SetCombo(NewKey1A,NewShift1A,NewKey1B,NewShift1B,VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
811
end;
 
812
 
 
813
procedure TKeyCommandRelation.MapShortcut(AScheme: TKeyMapScheme);
 
814
begin
 
815
  case AScheme of
 
816
    kmsLazarus: GetDefaultKeyForCommand;
 
817
    kmsClassic: GetDefaultKeyForClassicScheme;
 
818
    kmsMacOSXApple: GetDefaultKeyForMacOSXScheme;
 
819
    kmsMacOSXLaz: GetDefaultKeyForMacOSXLazScheme;
 
820
    kmsCustom: ;
 
821
  end;
2363
822
end;
2364
823
 
2365
824
function TKeyCommandRelation.GetLocalizedName: string;
2366
825
begin
2367
826
  Result:=inherited GetLocalizedName;
2368
 
  if Result='' then
2369
 
    Result:=EditorCommandLocalizedName(Command,Name);
 
827
  if Result='' then begin
 
828
    Result:=EditorCommandToDescriptionString(Command);
 
829
    if Result=srkmecunknown then
 
830
      Result:=Name;
 
831
  end;
 
832
end;
 
833
 
 
834
procedure TKeyCommandRelation.GetDefaultKeyForCommand;
 
835
begin
 
836
  {$IFDEF LCLCarbon}
 
837
  GetDefaultKeyForMacOSXScheme;
 
838
  {$ELSE}
 
839
  GetDefaultKeyForWindowsScheme;
 
840
  {$ENDIF}
 
841
end;
 
842
 
 
843
procedure TKeyCommandRelation.GetDefaultKeyForWindowsScheme;
 
844
begin
 
845
  case Command of
 
846
  // moving
 
847
  ecLeft:                SetSingle(VK_LEFT,[]);
 
848
  ecRight:               SetSingle(VK_RIGHT,[]);
 
849
  ecUp:                  SetSingle(VK_UP,[]);
 
850
  ecDown:                SetSingle(VK_DOWN,[]);
 
851
  ecWordLeft:            SetSingle(VK_LEFT,[ssCtrl]);
 
852
  ecWordRight:           SetSingle(VK_RIGHT,[ssCtrl]); // WS c
 
853
  ecLineStart:           SetSingle(VK_HOME,[]);
 
854
  ecLineEnd:             SetSingle(VK_END,[]);
 
855
  ecPageUp:              SetSingle(VK_PRIOR,[]); // ,VK_R,[SSCtrl],VK_UNKNOWN,[]);
 
856
  ecPageDown:            SetSingle(VK_NEXT,[]); // ,VK_W,[SSCtrl],VK_UNKNOWN,[]);
 
857
  ecPageLeft:            SetSingle(VK_UNKNOWN,[]);
 
858
  ecPageRight:           SetSingle(VK_UNKNOWN,[]);
 
859
  ecPageTop:             SetSingle(VK_PRIOR,[ssCtrl]);
 
860
  ecPageBottom:          SetSingle(VK_NEXT,[ssCtrl]);
 
861
  ecEditorTop:           SetSingle(VK_HOME,[ssCtrl]);
 
862
  ecEditorBottom:        SetSingle(VK_END,[ssCtrl]);
 
863
  ecScrollUp:            SetSingle(VK_UP,[ssCtrl]);
 
864
  ecScrollDown:          SetSingle(VK_DOWN,[ssCtrl]);
 
865
  ecScrollLeft:          SetSingle(VK_UNKNOWN,[]);
 
866
  ecScrollRight:         SetSingle(VK_UNKNOWN,[]);
 
867
 
 
868
  // selection
 
869
  ecSelLeft:             SetSingle(VK_LEFT,[ssShift]);
 
870
  ecSelRight:            SetSingle(VK_RIGHT,[ssShift]);
 
871
  ecSelUp:               SetSingle(VK_UP,[ssShift]);
 
872
  ecSelDown:             SetSingle(VK_DOWN,[ssShift]);
 
873
  ecCopy:                SetSingle(VK_C,[ssCtrl],         VK_Insert,[ssCtrl]);
 
874
  ecCut:                 SetSingle(VK_X,[ssCtrl],         VK_Delete,[ssShift]);
 
875
  ecPaste:               SetSingle(VK_V,[ssCtrl],         VK_Insert,[ssShift]);
 
876
  ecNormalSelect:        SetSingle(VK_UNKNOWN,[]);
 
877
  ecColumnSelect:        SetSingle(VK_UNKNOWN,[]);
 
878
  ecLineSelect:          SetSingle(VK_UNKNOWN,[]);
 
879
  ecSelWordLeft:         SetSingle(VK_LEFT,[ssCtrl,ssShift]);
 
880
  ecSelWordRight:        SetSingle(VK_RIGHT,[ssCtrl,ssShift]);
 
881
  ecSelLineStart:        SetSingle(VK_HOME,[ssShift]);
 
882
  ecSelLineEnd:          SetSingle(VK_END,[ssShift]);
 
883
  ecSelPageTop:          SetSingle(VK_PRIOR,[ssShift,ssCtrl]);
 
884
  ecSelPageBottom:       SetSingle(VK_NEXT,[ssShift,ssCtrl]);
 
885
  ecSelEditorTop:        SetSingle(VK_HOME,[ssShift,ssCtrl]);
 
886
  ecSelEditorBottom:     SetSingle(VK_END,[ssShift,ssCtrl]);
 
887
  ecSelectAll:           SetSingle(VK_A,[ssCtrl]);
 
888
  ecSelectToBrace:       SetSingle(VK_UNKNOWN,[]);
 
889
  ecSelectCodeBlock:     SetSingle(VK_UNKNOWN,[]);
 
890
  ecSelectWord:          SetCombo(VK_K,[SSCtrl],VK_T,[],  VK_K,[SSCtrl],VK_T,[ssCtrl]);
 
891
  ecSelectLine:          SetCombo(VK_K,[SSCtrl],VK_L,[],  VK_K,[SSCtrl],VK_L,[ssCtrl]);
 
892
  ecSelectParagraph:     SetSingle(VK_UNKNOWN,[]);
 
893
  ecSelectionUpperCase:  SetCombo(VK_K,[SSCtrl],VK_N,[],  VK_K,[SSCtrl],VK_N,[ssCtrl]);
 
894
  ecSelectionLowerCase:  SetCombo(VK_K,[SSCtrl],VK_O,[],  VK_K,[SSCtrl],VK_O,[ssCtrl]);
 
895
  ecSelectionSwapCase:   SetCombo(VK_K,[SSCtrl],VK_P,[],  VK_K,[SSCtrl],VK_P,[ssCtrl]);
 
896
  ecSelectionTabs2Spaces:SetSingle(VK_UNKNOWN,[]);
 
897
  ecSelectionEnclose:    SetSingle(VK_N,[ssShift,ssCtrl]);
 
898
  ecSelectionComment:    SetSingle(VK_V,[ssShift,ssCtrl]);
 
899
  ecSelectionUncomment:  SetSingle(VK_U,[ssShift,ssCtrl]);
 
900
  ecToggleComment:       SetSingle(VK_OEM_2,[ssCtrl]);
 
901
  ecSelectionEncloseIFDEF:SetSingle(VK_D,[ssShift,ssCtrl]);
 
902
  ecSelectionSort:       SetSingle(VK_UNKNOWN,[]);
 
903
  ecSelectionBreakLines: SetSingle(VK_UNKNOWN,[]);
 
904
 
 
905
  ecBlockSetBegin:       SetCombo(VK_K,[ssCtrl],VK_B,[],  VK_K,[ssCtrl],VK_B,[ssCtrl]);
 
906
  ecBlockSetEnd:         SetCombo(VK_K,[ssCtrl],VK_K,[],  VK_K,[ssCtrl],VK_K,[ssCtrl]);
 
907
  ecBlockToggleHide:     SetCombo(VK_K,[ssCtrl],VK_H,[],  VK_K,[ssCtrl],VK_H,[ssCtrl]);
 
908
  ecBlockHide:           SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
909
  ecBlockShow:           SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
910
  ecBlockMove:           SetCombo(VK_K,[ssCtrl],VK_V,[],  VK_K,[ssCtrl],VK_V,[ssCtrl]);
 
911
  ecBlockCopy:           SetCombo(VK_K,[ssCtrl],VK_C,[],  VK_K,[ssCtrl],VK_C,[ssCtrl]);
 
912
  ecBlockDelete:         SetCombo(VK_K,[ssCtrl],VK_Y,[],  VK_K,[ssCtrl],VK_Y,[ssCtrl]);
 
913
  ecBlockGotoBegin:      SetCombo(VK_Q,[ssCtrl],VK_B,[ssCtrl]);
 
914
  ecBlockGotoEnd:        SetCombo(VK_Q,[ssCtrl],VK_K,[ssCtrl]);
 
915
 
 
916
  // column mode selection
 
917
  ecColSelUp:            SetSingle(VK_UP,[ssAlt,ssShift]);
 
918
  ecColSelDown:          SetSingle(VK_DOWN,[ssAlt,ssShift]);
 
919
  ecColSelLeft:          SetSingle(VK_LEFT,[ssAlt,ssShift]);
 
920
  ecColSelRight:         SetSingle(VK_RIGHT,[ssAlt,ssShift]);
 
921
  ecColSelPageDown:      SetSingle(VK_NEXT,[ssAlt,ssShift]);
 
922
  ecColSelPageBottom:    SetSingle(VK_NEXT,[ssAlt,ssShift,ssCtrl]);
 
923
  ecColSelPageUp:        SetSingle(VK_PRIOR,[ssAlt,ssShift]);
 
924
  ecColSelPageTop:       SetSingle(VK_PRIOR,[ssAlt,ssShift,ssCtrl]);
 
925
  ecColSelLineStart:     SetSingle(VK_HOME,[ssAlt,ssShift]);
 
926
  ecColSelLineEnd:       SetSingle(VK_END,[ssAlt,ssShift]);
 
927
  ecColSelEditorTop:     SetSingle(VK_HOME,[ssAlt,ssShift,ssCtrl]);
 
928
  ecColSelEditorBottom:  SetSingle(VK_END,[ssAlt,ssShift,ssCtrl]);
 
929
 
 
930
  // editing
 
931
  ecBlockIndent:         SetCombo(VK_I,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_I,[]);
 
932
  ecBlockUnindent:       SetCombo(VK_U,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_U,[]);
 
933
  ecDeleteLastChar:      SetSingle(VK_BACK,[], VK_BACK,[ssShift]); // ctrl H used for scroll window.
 
934
  ecDeleteChar:          SetSingle(VK_DELETE,[]); // ctrl G conflicts with GO
 
935
  ecDeleteWord:          SetSingle(VK_T,[ssCtrl], VK_DELETE,[ssCtrl]);
 
936
  ecDeleteLastWord:      SetSingle(VK_BACK,[ssCtrl]);
 
937
  ecDeleteBOL:           SetSingle(VK_UNKNOWN,[]);
 
938
  ecDeleteEOL:           SetCombo(VK_Y,[ssCtrl,ssShift],VK_UNKNOWN,[], VK_Q,[ssCtrl],VK_Y,[]);
 
939
  ecDeleteLine:          SetSingle(VK_Y,[ssCtrl]);
 
940
  ecClearAll:            SetSingle(VK_UNKNOWN,[]);
 
941
  ecLineBreak:           SetSingle(VK_RETURN,[]);
 
942
  ecInsertLine:          SetSingle(VK_N,[ssCtrl]);
 
943
  ecInsertCharacter:     SetSingle(VK_M,[ssShift,ssCtrl]);
 
944
  ecInsertGPLNotice:     SetSingle(VK_UNKNOWN,[]);
 
945
  ecInsertLGPLNotice:    SetSingle(VK_UNKNOWN,[]);
 
946
  ecInsertModifiedLGPLNotice:SetSingle(VK_UNKNOWN,[]);
 
947
  ecInsertMITNotice:     SetSingle(VK_UNKNOWN,[]);
 
948
  ecInsertUserName:      SetSingle(VK_UNKNOWN,[]);
 
949
  ecInsertDateTime:      SetSingle(VK_UNKNOWN,[]);
 
950
  ecInsertChangeLogEntry:SetSingle(VK_UNKNOWN,[]);
 
951
  ecInsertCVSAuthor:     SetSingle(VK_UNKNOWN,[]);
 
952
  ecInsertCVSDate:       SetSingle(VK_UNKNOWN,[]);
 
953
  ecInsertCVSHeader:     SetSingle(VK_UNKNOWN,[]);
 
954
  ecInsertCVSID:         SetSingle(VK_UNKNOWN,[]);
 
955
  ecInsertCVSLog:        SetSingle(VK_UNKNOWN,[]);
 
956
  ecInsertCVSName:       SetSingle(VK_UNKNOWN,[]);
 
957
  ecInsertCVSRevision:   SetSingle(VK_UNKNOWN,[]);
 
958
  ecInsertCVSSource:     SetSingle(VK_UNKNOWN,[]);
 
959
  ecInsertGUID:          SetSingle(VK_G,[ssCtrl,ssShift]);
 
960
  ecInsertFilename:      SetSingle(VK_UNKNOWN,[]);
 
961
 
 
962
  // command commands
 
963
  ecUndo:                SetSingle(VK_Z,[ssCtrl]);
 
964
  ecRedo:                SetSingle(VK_Z,[ssCtrl,ssShift]);
 
965
 
 
966
  // search & replace
 
967
  ecMatchBracket:        SetSingle(VK_UNKNOWN,[]);
 
968
  ecFind:                SetCombo(VK_F,[SSCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_F,[]);
 
969
  ecFindNext:            SetSingle(VK_F3,[],                   VK_L,[SSCtrl]);
 
970
  ecFindPrevious:        SetSingle(VK_F3,[ssShift]);
 
971
  ecFindInFiles:         SetSingle(VK_F,[ssCtrl,ssShift]);
 
972
  ecReplace:             SetCombo(VK_R,[SSCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_A,[]);
 
973
  ecIncrementalFind:     SetSingle(VK_E,[SSCtrl]);
 
974
  ecGotoLineNumber:      SetCombo(VK_G,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_G,[]);
 
975
  ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]);
 
976
  ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]);
 
977
  ecJumpBack:            SetSingle(VK_H,[ssCtrl]);
 
978
  ecJumpForward:         SetSingle(VK_H,[ssCtrl,ssShift]);
 
979
  ecAddJumpPoint:        SetSingle(VK_UNKNOWN,[]);
 
980
  ecJumpToPrevError:     SetSingle(VK_F8,[ssCtrl, ssShift]);
 
981
  ecJumpToNextError:     SetSingle(VK_F8,[ssCtrl]);
 
982
  ecOpenFileAtCursor:    SetSingle(VK_RETURN,[ssCtrl]);
 
983
  ecProcedureList:       SetSingle(VK_G,[ssAlt]);
 
984
 
 
985
  // marker
 
986
  ecSetFreeBookmark:     SetSingle(VK_UNKNOWN,[]);
 
987
  ecPrevBookmark:        SetSingle(VK_UNKNOWN,[]);
 
988
  ecNextBookmark:        SetSingle(VK_UNKNOWN,[]);
 
989
  ecGotoMarker0:         SetCombo(VK_0,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_0,[]);
 
990
  ecGotoMarker1:         SetCombo(VK_1,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_1,[]);
 
991
  ecGotoMarker2:         SetCombo(VK_2,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_2,[]);
 
992
  ecGotoMarker3:         SetCombo(VK_3,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_3,[]);
 
993
  ecGotoMarker4:         SetCombo(VK_4,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_4,[]);
 
994
  ecGotoMarker5:         SetCombo(VK_5,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_5,[]);
 
995
  ecGotoMarker6:         SetCombo(VK_6,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_6,[]);
 
996
  ecGotoMarker7:         SetCombo(VK_7,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_7,[]);
 
997
  ecGotoMarker8:         SetCombo(VK_8,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_8,[]);
 
998
  ecGotoMarker9:         SetCombo(VK_9,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_9,[]);
 
999
  ecToggleMarker0:       SetCombo(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_0,[]);
 
1000
  ecToggleMarker1:       SetCombo(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_1,[]);
 
1001
  ecToggleMarker2:       SetCombo(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_2,[]);
 
1002
  ecToggleMarker3:       SetCombo(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_3,[]);
 
1003
  ecToggleMarker4:       SetCombo(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_4,[]);
 
1004
  ecToggleMarker5:       SetCombo(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_5,[]);
 
1005
  ecToggleMarker6:       SetCombo(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_6,[]);
 
1006
  ecToggleMarker7:       SetCombo(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_7,[]);
 
1007
  ecToggleMarker8:       SetCombo(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_8,[]);
 
1008
  ecToggleMarker9:       SetCombo(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_9,[]);
 
1009
  ecSetMarker0:          SetSingle(VK_UNKNOWN,[]);
 
1010
  ecSetMarker1:          SetSingle(VK_UNKNOWN,[]);
 
1011
  ecSetMarker2:          SetSingle(VK_UNKNOWN,[]);
 
1012
  ecSetMarker3:          SetSingle(VK_UNKNOWN,[]);
 
1013
  ecSetMarker4:          SetSingle(VK_UNKNOWN,[]);
 
1014
  ecSetMarker5:          SetSingle(VK_UNKNOWN,[]);
 
1015
  ecSetMarker6:          SetSingle(VK_UNKNOWN,[]);
 
1016
  ecSetMarker7:          SetSingle(VK_UNKNOWN,[]);
 
1017
  ecSetMarker8:          SetSingle(VK_UNKNOWN,[]);
 
1018
  ecSetMarker9:          SetSingle(VK_UNKNOWN,[]);
 
1019
 
 
1020
  // codetools
 
1021
  ecAutoCompletion:      SetSingle(VK_J,[ssCtrl]);
 
1022
  ecWordCompletion:      SetSingle(VK_W,[ssCtrl]);
 
1023
  ecCompleteCode:        SetSingle(VK_C,[ssCtrl,ssShift]);
 
1024
  ecIdentCompletion:     SetSingle(VK_SPACE,[ssCtrl]);
 
1025
  ecShowCodeContext:     SetSingle(VK_SPACE,[ssCtrl,ssShift]);
 
1026
  ecExtractProc:         SetSingle(VK_UNKNOWN,[]);
 
1027
  ecFindIdentifierRefs:  SetSingle(VK_I,[ssCtrl,ssShift]);
 
1028
  ecRenameIdentifier:    SetSingle(VK_F2,[],        VK_E,[ssShift,ssCtrl]);
 
1029
  ecInvertAssignment:    SetSingle(VK_UNKNOWN,[]);
 
1030
  ecSyntaxCheck:         SetSingle(VK_UNKNOWN,[]);
 
1031
  ecGuessUnclosedBlock:  SetSingle(VK_UNKNOWN,[]);
 
1032
  ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[]);
 
1033
  ecConvertDFM2LFM:      SetSingle(VK_UNKNOWN,[]);
 
1034
  ecCheckLFM:            SetSingle(VK_UNKNOWN,[]);
 
1035
  ecConvertDelphiUnit:   SetSingle(VK_UNKNOWN,[]);
 
1036
  ecConvertDelphiProject:SetSingle(VK_UNKNOWN,[]);
 
1037
  ecConvertDelphiPackage:SetSingle(VK_UNKNOWN,[]);
 
1038
  ecConvertEncoding:     SetSingle(VK_UNKNOWN,[]);
 
1039
  ecFindProcedureDefinition:SetSingle(VK_UP,[ssShift,SSCtrl]);
 
1040
  ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl]);
 
1041
  ecFindDeclaration:     SetSingle(VK_UP,[ssAlt]);
 
1042
  ecFindBlockOtherEnd:   SetCombo(VK_Q,[ssCtrl],VK_K,[]);
 
1043
  ecFindBlockStart:      SetCombo(VK_Q,[ssCtrl],VK_B,[]);
 
1044
  ecGotoIncludeDirective:SetSingle(VK_UNKNOWN,[]);
 
1045
  ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[]);
 
1046
  ecRemoveEmptyMethods:  SetSingle(VK_UNKNOWN,[]);
 
1047
  ecRemoveUnusedUnits:   SetSingle(VK_UNKNOWN,[]);
 
1048
  ecUseUnit:             SetSingle(VK_F11,[ssAlt]);
 
1049
  ecFindOverloads:       SetSingle(VK_UNKNOWN,[]);
 
1050
 
 
1051
  // source notebook
 
1052
  ecNextEditor:          SetSingle(VK_TAB,[ssCtrl]);
 
1053
  ecPrevEditor:          SetSingle(VK_TAB,[ssShift,ssCtrl]);
 
1054
  ecResetDebugger:       SetSingle(VK_UNKNOWN,[]);
 
1055
  ecToggleBreakPoint:    SetSingle(VK_F5,[]);
 
1056
  ecMoveEditorLeft:      SetSingle(VK_UNKNOWN,[]);
 
1057
  ecMoveEditorRight:     SetSingle(VK_UNKNOWN,[]);
 
1058
  ecMoveEditorLeftmost:  SetSingle(VK_UNKNOWN,[]);
 
1059
  ecMoveEditorRightmost: SetSingle(VK_UNKNOWN,[]);
 
1060
 
 
1061
  ecNextSharedEditor:    SetSingle(VK_UNKNOWN,[]);
 
1062
  ecPrevSharedEditor:    SetSingle(VK_UNKNOWN,[]);
 
1063
  ecNextWindow:          SetSingle(VK_UNKNOWN,[]);
 
1064
  ecPrevWindow:          SetSingle(VK_UNKNOWN,[]);
 
1065
  ecMoveEditorNextWindow:SetSingle(VK_UNKNOWN,[]);
 
1066
  ecMoveEditorPrevWindow:SetSingle(VK_UNKNOWN,[]);
 
1067
  ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[]);
 
1068
  ecCopyEditorNextWindow:SetSingle(VK_UNKNOWN,[]);
 
1069
  ecCopyEditorPrevWindow:SetSingle(VK_UNKNOWN,[]);
 
1070
  ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[]);
 
1071
 
 
1072
  ecGotoEditor1:         SetSingle(VK_1,[ssAlt]);
 
1073
  ecGotoEditor2:         SetSingle(VK_2,[ssAlt]);
 
1074
  ecGotoEditor3:         SetSingle(VK_3,[ssAlt]);
 
1075
  ecGotoEditor4:         SetSingle(VK_4,[ssAlt]);
 
1076
  ecGotoEditor5:         SetSingle(VK_5,[ssAlt]);
 
1077
  ecGotoEditor6:         SetSingle(VK_6,[ssAlt]);
 
1078
  ecGotoEditor7:         SetSingle(VK_7,[ssAlt]);
 
1079
  ecGotoEditor8:         SetSingle(VK_8,[ssAlt]);
 
1080
  ecGotoEditor9:         SetSingle(VK_9,[ssAlt]);
 
1081
  ecGotoEditor0:         SetSingle(VK_0,[ssAlt]);
 
1082
 
 
1083
  ecLockEditor:          SetSingle(VK_UNKNOWN,[]);
 
1084
 
 
1085
  EcFoldLevel1:          SetSingle(VK_1,[ssAlt,ssShift]);
 
1086
  EcFoldLevel2:          SetSingle(VK_2,[ssAlt,ssShift]);
 
1087
  EcFoldLevel3:          SetSingle(VK_3,[ssAlt,ssShift]);
 
1088
  EcFoldLevel4:          SetSingle(VK_4,[ssAlt,ssShift]);
 
1089
  EcFoldLevel5:          SetSingle(VK_5,[ssAlt,ssShift]);
 
1090
  EcFoldLevel6:          SetSingle(VK_6,[ssAlt,ssShift]);
 
1091
  EcFoldLevel7:          SetSingle(VK_7,[ssAlt,ssShift]);
 
1092
  EcFoldLevel8:          SetSingle(VK_8,[ssAlt,ssShift]);
 
1093
  EcFoldLevel9:          SetSingle(VK_9,[ssAlt,ssShift]);
 
1094
  EcFoldLevel0:          SetSingle(VK_0,[ssAlt,ssShift]);
 
1095
  EcFoldCurrent:         SetSingle(VK_OEM_MINUS,[ssAlt,ssShift]);
 
1096
  EcUnFoldCurrent:       SetSingle(VK_OEM_PLUS,[ssAlt,ssShift]);
 
1097
  EcToggleMarkupWord:    SetSingle(VK_M,[ssAlt]);
 
1098
 
 
1099
  // file menu
 
1100
  ecNew:                 SetSingle(VK_UNKNOWN,[]);
 
1101
  ecNewUnit:             SetSingle(VK_UNKNOWN,[]);
 
1102
  ecNewForm:             SetSingle(VK_UNKNOWN,[]);
 
1103
  ecOpen:                SetSingle(VK_O,[ssCtrl]);
 
1104
  ecRevert:              SetSingle(VK_UNKNOWN,[]);
 
1105
  ecSave:                SetSingle(VK_S,[ssCtrl]);
 
1106
  ecSaveAs:              SetSingle(VK_UNKNOWN,[]);
 
1107
  ecSaveAll:             SetSingle(VK_S,[ssCtrl,ssShift]);
 
1108
  ecClose:               SetSingle(VK_F4,[ssCtrl]);
 
1109
  ecCloseAll:            SetSingle(VK_UNKNOWN,[]);
 
1110
  ecCleanDirectory:      SetSingle(VK_UNKNOWN,[]);
 
1111
  ecRestart:             SetSingle(VK_UNKNOWN,[]);
 
1112
  ecQuit:                SetSingle(VK_UNKNOWN,[]);
 
1113
 
 
1114
  // view menu
 
1115
  ecToggleObjectInsp:    SetSingle(VK_F11,[]);
 
1116
  ecToggleSourceEditor:  SetSingle(VK_UNKNOWN,[]);
 
1117
  ecToggleCodeExpl:      SetSingle(VK_UNKNOWN,[]);
 
1118
  ecToggleFPDocEditor:   SetSingle(VK_UNKNOWN,[]);
 
1119
  ecToggleMessages:      SetSingle(VK_UNKNOWN,[]);
 
1120
  ecViewComponents:      SetSingle(VK_P,[ssCtrl,ssAlt]);
 
1121
  ecViewJumpHistory:     SetSingle(VK_J,[ssCtrl,ssAlt]);
 
1122
  ecToggleSearchResults: SetSingle(VK_F,[ssCtrl,ssAlt]);
 
1123
  ecToggleWatches:       SetSingle(VK_W,[ssCtrl,ssAlt]);
 
1124
  ecToggleBreakPoints:   SetSingle(VK_B,[ssCtrl,ssAlt]);
 
1125
  ecToggleLocals:        SetSingle(VK_L,[ssCtrl,ssAlt]);
 
1126
  ecViewPseudoTerminal: if HasConsoleSupport then SetSingle(VK_O,[ssCtrl,ssAlt]);
 
1127
  ecViewThreads:         SetSingle(VK_T,[ssCtrl,ssAlt]);
 
1128
  ecToggleCallStack:     SetSingle(VK_S,[ssCtrl,ssAlt]);
 
1129
  ecToggleRegisters:     SetSingle(VK_R,[ssCtrl,ssAlt]);
 
1130
  ecToggleAssembler:     SetSingle(VK_D,[ssCtrl,ssAlt]);
 
1131
  ecToggleDebugEvents:   SetSingle(VK_V,[ssCtrl,ssAlt]);
 
1132
  ecToggleDebuggerOut:   SetSingle(VK_UNKNOWN,[]);
 
1133
  ecViewHistory:         SetSingle(VK_H,[ssCtrl,ssAlt]);
 
1134
  ecViewUnitDependencies:SetSingle(VK_UNKNOWN,[]);
 
1135
  ecViewUnitInfo:        SetSingle(VK_UNKNOWN,[]);
 
1136
  ecToggleFormUnit:      SetSingle(VK_F12,[]);
 
1137
  ecViewAnchorEditor:    SetSingle(VK_UNKNOWN,[]);
 
1138
  ecToggleCodeBrowser:   SetSingle(VK_UNKNOWN,[]);
 
1139
  ecToggleRestrictionBrowser:SetSingle(VK_UNKNOWN,[]);
 
1140
  ecToggleCompPalette:   SetSingle(VK_UNKNOWN,[]);
 
1141
  ecToggleIDESpeedBtns:  SetSingle(VK_UNKNOWN,[]);
 
1142
 
 
1143
  // project menu
 
1144
  ecNewProject:          SetSingle(VK_UNKNOWN,[]);
 
1145
  ecNewProjectFromFile:  SetSingle(VK_UNKNOWN,[]);
 
1146
  ecOpenProject:         SetSingle(VK_F11,[ssCtrl]);
 
1147
  ecCloseProject:        SetSingle(VK_UNKNOWN,[]);
 
1148
  ecSaveProject:         SetSingle(VK_UNKNOWN,[]);
 
1149
  ecSaveProjectAs:       SetSingle(VK_UNKNOWN,[]);
 
1150
  ecPublishProject:      SetSingle(VK_UNKNOWN,[]);
 
1151
  ecProjectInspector:    SetSingle(VK_UNKNOWN,[]);
 
1152
  ecAddCurUnitToProj:    SetSingle(VK_F11,[ssShift]);
 
1153
  ecRemoveFromProj:      SetSingle(VK_UNKNOWN,[]);
 
1154
  ecViewProjectUnits:    SetSingle(VK_F12,[ssCtrl]);
 
1155
  ecViewProjectForms:    SetSingle(VK_F12,[ssShift]);
 
1156
  ecViewProjectSource:   SetSingle(VK_UNKNOWN,[]);
 
1157
  ecProjectOptions:      SetSingle(VK_F11,[ssShift,ssCtrl]);
 
1158
 
 
1159
  // run menu
 
1160
  ecCompile:             SetSingle(VK_F9,[ssCtrl]);
 
1161
  ecBuild:               SetSingle(VK_F9,[ssShift]);
 
1162
  ecQuickCompile:        SetSingle(VK_UNKNOWN,[]);
 
1163
  ecCleanUpCompiled:     SetSingle(VK_UNKNOWN,[]);
 
1164
  ecAbortBuild:          SetSingle(VK_UNKNOWN,[]);
 
1165
  ecRun:                 SetSingle(VK_F9,[]);
 
1166
  ecPause:               SetSingle(VK_UNKNOWN,[]);
 
1167
  ecShowExecutionPoint:  SetSingle(VK_UNKNOWN,[]);
 
1168
  ecStepInto:            SetSingle(VK_F7,[]);
 
1169
  ecStepOver:            SetSingle(VK_F8,[]);
 
1170
  ecStepIntoInstr:       SetSingle(VK_F7,[ssAlt]);
 
1171
  ecStepOverInstr:       SetSingle(VK_F8,[ssAlt]);
 
1172
  ecStepOut:             SetSingle(VK_F8,[ssShift]);
 
1173
  ecRunToCursor:         SetSingle(VK_F4,[]);
 
1174
  ecStopProgram:         SetSingle(VK_F2,[SSCtrl]);
 
1175
  ecRemoveBreakPoint:    SetSingle(VK_UNKNOWN,[]);
 
1176
  ecRunParameters:       SetSingle(VK_UNKNOWN,[]);
 
1177
  ecBuildFile:           SetSingle(VK_UNKNOWN,[]);
 
1178
  ecRunFile:             SetSingle(VK_UNKNOWN,[]);
 
1179
  ecConfigBuildFile:     SetSingle(VK_UNKNOWN,[]);
 
1180
  ecInspect:             SetSingle(VK_F5,[ssAlt]);
 
1181
  ecEvaluate:            SetSingle(VK_F7,[ssCtrl]);
 
1182
  ecAddWatch:            SetSingle(VK_F5,[ssCtrl]);
 
1183
  ecAddBpSource:         SetSingle(VK_UNKNOWN,[]);
 
1184
  ecAddBpAddress:        SetSingle(VK_UNKNOWN,[]);
 
1185
  ecAddBpDataWatch:      SetSingle(VK_F5,[ssShift]);
 
1186
 
 
1187
  // components menu
 
1188
  ecNewPackage:          SetSingle(VK_UNKNOWN,[]);
 
1189
  ecOpenPackage:         SetSingle(VK_UNKNOWN,[]);
 
1190
  ecOpenPackageFile:     SetSingle(VK_UNKNOWN,[]);
 
1191
  ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
 
1192
  ecAddCurFileToPkg:     SetSingle(VK_UNKNOWN,[]);
 
1193
  ecNewPkgComponent:     SetSingle(VK_UNKNOWN,[]);
 
1194
  ecPackageGraph:        SetSingle(VK_UNKNOWN,[]);
 
1195
  ecEditInstallPkgs:     SetSingle(VK_UNKNOWN,[]);
 
1196
  ecConfigCustomComps:   SetSingle(VK_UNKNOWN,[]);
 
1197
 
 
1198
  // tools menu
 
1199
  ecEnvironmentOptions:  SetSingle(VK_O,[ssShift,ssCtrl]);
 
1200
  ecRescanFPCSrcDir:     SetSingle(VK_UNKNOWN,[]);
 
1201
  ecEditCodeTemplates:   SetSingle(VK_UNKNOWN,[]);
 
1202
  ecCodeToolsDefinesEd:  SetSingle(VK_UNKNOWN,[]);
 
1203
 
 
1204
  ecExtToolSettings:     SetSingle(VK_UNKNOWN,[]);
 
1205
  ecManageExamples:      SetSingle(VK_UNKNOWN,[]);
 
1206
  ecBuildLazarus:        SetSingle(VK_UNKNOWN,[]);
 
1207
  ecConfigBuildLazarus:  SetSingle(VK_UNKNOWN,[]);
 
1208
  ecMakeResourceString:  SetSingle(VK_UNKNOWN,[]);
 
1209
  ecDiff:                SetSingle(VK_UNKNOWN,[]);
 
1210
 
 
1211
  // window menu
 
1212
  ecWindowManager:       SetSingle(VK_W,[ssShift,ssCtrl]);
 
1213
 
 
1214
  // help menu
 
1215
  ecAboutLazarus:        SetSingle(VK_UNKNOWN,[]);
 
1216
  ecOnlineHelp:          SetSingle(VK_UNKNOWN,[]);
 
1217
  ecContextHelp:         SetSingle(VK_F1,[]);
 
1218
  ecEditContextHelp:     SetSingle(VK_F1,[ssShift,ssCtrl]);
 
1219
  ecReportingBug:        SetSingle(VK_UNKNOWN,[]);
 
1220
  ecFocusHint:           SetSingle(VK_UNKNOWN,[]);
 
1221
 
 
1222
  // designer
 
1223
  ecDesignerCopy:        SetSingle(VK_C,[ssCtrl],   VK_Insert,[ssCtrl]);
 
1224
  ecDesignerCut:         SetSingle(VK_X,[ssCtrl],   VK_Delete,[ssShift]);
 
1225
  ecDesignerPaste:       SetSingle(VK_V,[ssCtrl],   VK_Insert,[ssShift]);
 
1226
  ecDesignerSelectParent:SetSingle(VK_ESCAPE,[]);
 
1227
  ecDesignerMoveToFront: SetSingle(VK_PRIOR,[ssShift]);
 
1228
  ecDesignerMoveToBack:  SetSingle(VK_NEXT,[ssShift]);
 
1229
  ecDesignerForwardOne:  SetSingle(VK_PRIOR,[ssCtrl]);
 
1230
  ecDesignerBackOne:     SetSingle(VK_NEXT,[ssCtrl]);
 
1231
 
 
1232
  // macro
 
1233
  ecSynMacroRecord:      SetSingle(VK_R,[ssShift, ssCtrl]);
 
1234
  ecSynMacroPlay:        SetSingle(VK_P,[ssShift, ssCtrl]);
 
1235
 
 
1236
  ecIdePTmplEdNextCell:         SetSingle(VK_RIGHT,[ssCtrl]);
 
1237
  ecIdePTmplEdNextCellSel:      SetSingle(VK_TAB,[]);
 
1238
  ecIdePTmplEdNextCellRotate:   SetSingle(VK_UNKNOWN,[]);
 
1239
  ecIdePTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
 
1240
  ecIdePTmplEdPrevCell:         SetSingle(VK_LEFT,[ssCtrl]);
 
1241
  ecIdePTmplEdPrevCellSel:      SetSingle(VK_TAB,[ssShift]);
 
1242
  ecIdePTmplEdCellHome:         SetSingle(VK_HOME,[]);
 
1243
  ecIdePTmplEdCellEnd:          SetSingle(VK_END,[]);
 
1244
  ecIdePTmplEdCellSelect:       SetSingle(VK_A,[ssCtrl]);
 
1245
  ecIdePTmplEdFinish:           SetSingle(VK_RETURN,[]);
 
1246
  ecIdePTmplEdEscape:           SetSingle(VK_ESCAPE,[]);
 
1247
  // Edit template
 
1248
  ecIdePTmplEdOutNextCell:         SetSingle(VK_RIGHT,[ssCtrl]);
 
1249
  ecIdePTmplEdOutNextCellSel:      SetSingle(VK_TAB,[]);
 
1250
  ecIdePTmplEdOutNextCellRotate:   SetSingle(VK_UNKNOWN,[]);
 
1251
  ecIdePTmplEdOutNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
 
1252
  ecIdePTmplEdOutPrevCell:         SetSingle(VK_LEFT,[ssCtrl]);
 
1253
  ecIdePTmplEdOutPrevCellSel:      SetSingle(VK_TAB,[ssShift]);
 
1254
  ecIdePTmplEdOutCellHome:         SetSingle(VK_UNKNOWN,[]);
 
1255
  ecIdePTmplEdOutCellEnd:          SetSingle(VK_UNKNOWN,[]);
 
1256
  ecIdePTmplEdOutCellSelect:       SetSingle(VK_UNKNOWN,[]);
 
1257
  ecIdePTmplEdOutFinish:           SetSingle(VK_RETURN,[]);
 
1258
  ecIdePTmplEdOutEscape:           SetSingle(VK_ESCAPE,[]);
 
1259
  // SyncroEdit
 
1260
  ecIdePSyncroEdNextCell:       SetSingle(VK_RIGHT,[ssCtrl]);
 
1261
  ecIdePSyncroEdNextCellSel:    SetSingle(VK_TAB,[]);
 
1262
  ecIdePSyncroEdPrevCell:       SetSingle(VK_LEFT,[ssCtrl]);
 
1263
  ecIdePSyncroEdPrevCellSel:    SetSingle(VK_TAB,[ssShift]);
 
1264
  ecIdePSyncroEdCellHome:       SetSingle(VK_HOME,[]);
 
1265
  ecIdePSyncroEdCellEnd:        SetSingle(VK_END,[]);
 
1266
  ecIdePSyncroEdCellSelect:     SetSingle(VK_A,[ssCtrl]);
 
1267
  ecIdePSyncroEdEscape:         SetSingle(VK_ESCAPE,[]);
 
1268
  // SyncroEdit
 
1269
  ecIdePSyncroEdOutNextCell:       SetSingle(VK_RIGHT,[ssCtrl]);
 
1270
  ecIdePSyncroEdOutNextCellSel:    SetSingle(VK_TAB,[]);
 
1271
  ecIdePSyncroEdOutPrevCell:       SetSingle(VK_LEFT,[ssCtrl]);
 
1272
  ecIdePSyncroEdOutPrevCellSel:    SetSingle(VK_TAB,[ssShift]);
 
1273
  ecIdePSyncroEdOutCellHome:       SetSingle(VK_UNKNOWN,[]);
 
1274
  ecIdePSyncroEdOutCellEnd:        SetSingle(VK_UNKNOWN,[]);
 
1275
  ecIdePSyncroEdOutCellSelect:     SetSingle(VK_UNKNOWN,[]);
 
1276
  ecIdePSyncroEdOutEscape:         SetSingle(VK_ESCAPE,[]);
 
1277
  // SyncroEdit, during selection
 
1278
  ecIdePSyncroEdSelStart:          SetSingle(VK_J,[ssCtrl]);
 
1279
 
 
1280
  else
 
1281
    begin
 
1282
      SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
1283
        // Edit template
 
1284
    end;
 
1285
  end;
 
1286
end;
 
1287
 
 
1288
procedure TKeyCommandRelation.GetDefaultKeyForClassicScheme;
 
1289
begin
 
1290
  GetDefaultKeyForWindowsScheme;
 
1291
 
 
1292
  case Command of
 
1293
  // moving
 
1294
  ecLeft:                SetSingle(VK_S,[ssCtrl], VK_LEFT,[]);
 
1295
  ecRight:               SetSingle(VK_D,[ssCtrl], VK_RIGHT,[]);
 
1296
  ecUp:                  SetSingle(VK_E,[ssCtrl], VK_UP,[]);
 
1297
  ecDown:                SetSingle(VK_X,[ssCtrl], VK_DOWN,[]);
 
1298
  ecWordLeft:            SetSingle(VK_A,[ssCtrl], VK_LEFT,[ssCtrl]);
 
1299
  ecWordRight:           SetSingle(VK_F,[ssCtrl], VK_RIGHT,[ssCtrl]);
 
1300
  ecLineStart:           SetCombo(VK_Q,[ssCtrl],VK_S,[],   VK_HOME,[],VK_UNKNOWN,[]);
 
1301
  ecLineEnd:             SetCombo(VK_Q,[ssCtrl],VK_D,[],   VK_END,[],VK_UNKNOWN,[]);
 
1302
  ecPageUp:              SetSingle(VK_R,[ssCtrl], VK_PRIOR,[]);
 
1303
  ecPageDown:            SetSingle(VK_C,[ssCtrl], VK_NEXT,[]);
 
1304
  // Paragraph Down: VK_B, [ssCtrl]
 
1305
  ecPageLeft:            SetSingle(VK_UNKNOWN,[]);
 
1306
  ecPageRight:           SetSingle(VK_UNKNOWN,[]);
 
1307
  ecPageTop:             SetCombo(VK_Q,[ssCtrl],VK_E,[],   VK_HOME,[ssCtrl],VK_UNKNOWN,[]);
 
1308
  ecPageBottom:          SetCombo(VK_Q,[ssCtrl],VK_X,[],   VK_END,[ssCtrl],VK_UNKNOWN,[]);
 
1309
  ecEditorTop:           SetCombo(VK_Q,[ssCtrl],VK_R,[],   VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]);
 
1310
  ecEditorBottom:        SetCombo(VK_Q,[ssCtrl],VK_C,[],   VK_NEXT,[ssCtrl],VK_UNKNOWN,[]);
 
1311
  ecScrollUp:            SetSingle(VK_W,[ssCtrl], VK_UP,[ssCtrl]);
 
1312
  ecScrollDown:          SetSingle(VK_Z,[ssCtrl], VK_DOWN,[ssCtrl]);
 
1313
  ecScrollLeft:          SetSingle(VK_UNKNOWN,[]);
 
1314
  ecScrollRight:         SetSingle(VK_UNKNOWN,[]);
 
1315
 
 
1316
  // selection
 
1317
  ecSelLeft:             SetSingle(VK_LEFT,[ssShift]);
 
1318
  ecSelRight:            SetSingle(VK_RIGHT,[ssShift]);
 
1319
  ecSelUp:               SetSingle(VK_UP,[ssShift]);
 
1320
  ecSelDown:             SetSingle(VK_DOWN,[ssShift]);
 
1321
  ecCopy:                SetSingle(VK_Insert,[ssCtrl]);
 
1322
  ecCut:                 SetSingle(VK_Delete,[ssShift]);
 
1323
  ecPaste:               SetSingle(VK_Insert,[ssShift]);
 
1324
  ecNormalSelect:        SetSingle(VK_UNKNOWN,[]);
 
1325
  ecColumnSelect:        SetSingle(VK_UNKNOWN,[]);
 
1326
  ecLineSelect:          SetCombo(VK_K,[ssCtrl],VK_L,[],   VK_K,[ssCtrl],VK_L,[ssCtrl]);
 
1327
  ecSelWordLeft:         SetSingle(VK_LEFT,[ssCtrl,ssShift]);
 
1328
  ecSelWordRight:        SetSingle(VK_RIGHT,[ssCtrl,ssShift]);
 
1329
  ecSelLineStart:        SetSingle(VK_HOME,[ssShift]);
 
1330
  ecSelLineEnd:          SetSingle(VK_END,[ssShift]);
 
1331
  ecSelPageTop:          SetSingle(VK_HOME,[ssShift,ssCtrl]);
 
1332
  ecSelPageBottom:       SetSingle(VK_END,[ssShift,ssCtrl]);
 
1333
  ecSelEditorTop:        SetSingle(VK_PRIOR,[ssShift,ssCtrl]);
 
1334
  ecSelEditorBottom:     SetSingle(VK_NEXT,[ssShift,ssCtrl]);
 
1335
  ecSelectAll:           SetSingle(VK_UNKNOWN,[]);
 
1336
  ecSelectToBrace:       SetSingle(VK_UNKNOWN,[]);
 
1337
  ecSelectCodeBlock:     SetSingle(VK_UNKNOWN,[]);
 
1338
  ecSelectWord:          SetCombo(VK_K,[ssCtrl],VK_T,[],   VK_K,[ssCtrl],VK_T,[ssCtrl]);
 
1339
  ecSelectLine:          SetCombo(VK_O,[ssCtrl],VK_L,[],   VK_O,[ssCtrl],VK_L,[ssCtrl]);
 
1340
  ecSelectParagraph:     SetSingle(VK_UNKNOWN,[]);
 
1341
  ecSelectionUpperCase:  SetCombo(VK_K,[ssCtrl],VK_N,[],   VK_K,[ssCtrl],VK_N,[ssCtrl]);
 
1342
  ecSelectionLowerCase:  SetCombo(VK_K,[ssCtrl],VK_O,[],   VK_K,[ssCtrl],VK_O,[ssCtrl]);
 
1343
  ecSelectionSwapCase:   SetCombo(VK_K,[SSCtrl],VK_P,[],   VK_K,[SSCtrl],VK_P,[ssCtrl]);
 
1344
  ecSelectionTabs2Spaces:SetSingle(VK_UNKNOWN,[]);
 
1345
  ecSelectionEnclose:    SetSingle(VK_UNKNOWN,[]);
 
1346
  ecSelectionComment:    SetSingle(VK_UNKNOWN,[]);
 
1347
  ecSelectionUncomment:  SetSingle(VK_UNKNOWN,[]);
 
1348
  ecToggleComment:       SetSingle(VK_OEM_2,[ssCtrl]);
 
1349
  ecSelectionEncloseIFDEF:SetSingle(VK_D,[ssShift,ssCtrl]);
 
1350
  ecSelectionSort:       SetSingle(VK_UNKNOWN,[]);
 
1351
  ecSelectionBreakLines: SetSingle(VK_UNKNOWN,[]);
 
1352
 
 
1353
  ecBlockSetBegin:       SetCombo(VK_K,[ssCtrl],VK_B,[],   VK_K,[ssCtrl],VK_B,[ssCtrl]);
 
1354
  ecBlockSetEnd:         SetCombo(VK_K,[ssCtrl],VK_K,[],   VK_K,[ssCtrl],VK_K,[ssCtrl]);
 
1355
  ecBlockToggleHide:     SetCombo(VK_K,[ssCtrl],VK_H,[],   VK_K,[ssCtrl],VK_H,[ssCtrl]);
 
1356
  ecBlockHide:           SetSingle(VK_UNKNOWN,[]);
 
1357
  ecBlockShow:           SetSingle(VK_UNKNOWN,[]);
 
1358
  ecBlockMove:           SetCombo(VK_K,[ssCtrl],VK_V,[],   VK_K,[ssCtrl],VK_V,[ssCtrl]);
 
1359
  ecBlockCopy:           SetCombo(VK_K,[ssCtrl],VK_C,[],   VK_K,[ssCtrl],VK_C,[ssCtrl]);
 
1360
  ecBlockDelete:         SetCombo(VK_K,[ssCtrl],VK_Y,[],   VK_K,[ssCtrl],VK_Y,[ssCtrl]);
 
1361
  ecBlockGotoBegin:      SetCombo(VK_Q,[ssCtrl],VK_B,[ssCtrl]);
 
1362
  ecBlockGotoEnd:        SetCombo(VK_Q,[ssCtrl],VK_K,[ssCtrl]);
 
1363
 
 
1364
  // column mode selection
 
1365
  ecColSelUp:            SetSingle(VK_UP,   [ssAlt,ssShift]);
 
1366
  ecColSelDown:          SetSingle(VK_DOWN, [ssAlt,ssShift]);
 
1367
  ecColSelLeft:          SetSingle(VK_LEFT, [ssAlt,ssShift]);
 
1368
  ecColSelRight:         SetSingle(VK_RIGHT,[ssAlt,ssShift]);
 
1369
  ecColSelPageDown:      SetSingle(VK_NEXT, [ssAlt,ssShift]);
 
1370
  ecColSelPageBottom:    SetSingle(VK_NEXT, [ssAlt,ssShift,ssCtrl]);
 
1371
  ecColSelPageUp:        SetSingle(VK_PRIOR,[ssAlt,ssShift]);
 
1372
  ecColSelPageTop:       SetSingle(VK_PRIOR,[ssAlt,ssShift,ssCtrl]);
 
1373
  ecColSelLineStart:     SetSingle(VK_HOME, [ssAlt,ssShift]);
 
1374
  ecColSelLineEnd:       SetSingle(VK_END,  [ssAlt,ssShift]);
 
1375
  ecColSelEditorTop:     SetSingle(VK_HOME, [ssAlt,ssShift,ssCtrl]);
 
1376
  ecColSelEditorBottom:  SetSingle(VK_END,  [ssAlt,ssShift,ssCtrl]);
 
1377
 
 
1378
  // editing
 
1379
  ecInsertMode:          SetSingle(VK_V,[ssCtrl],    VK_INSERT,[]);
 
1380
  ecBlockIndent:         SetCombo(VK_K,[ssCtrl],VK_I,[],   VK_K,[ssCtrl],VK_I,[ssCtrl]);
 
1381
  ecBlockUnindent:       SetCombo(VK_K,[ssCtrl],VK_U,[],   VK_K,[ssCtrl],VK_U,[ssCtrl]);
 
1382
  ecDeleteLastChar:      SetSingle(VK_H,[ssCtrl],    VK_BACK,[]);
 
1383
  ecDeleteChar:          SetSingle(VK_G,[ssCtrl],    VK_DELETE,[]);
 
1384
  ecDeleteWord:          SetSingle(VK_T,[ssCtrl]);
 
1385
  ecDeleteLastWord:      SetSingle(VK_BACK,[ssCtrl]);
 
1386
  ecDeleteBOL:           SetCombo(VK_Q,[ssCtrl],VK_H,[],   VK_Q,[ssCtrl],VK_H,[ssCtrl]);
 
1387
  ecDeleteEOL:           SetCombo(VK_Q,[ssCtrl],VK_Y,[],   VK_Q,[ssCtrl],VK_Y,[ssCtrl]);
 
1388
  ecDeleteLine:          SetSingle(VK_Y,[ssCtrl]);
 
1389
  ecClearAll:            SetSingle(VK_UNKNOWN,[]);
 
1390
  ecLineBreak:           SetSingle(VK_RETURN,[],     VK_M,[ssCtrl]);
 
1391
  ecInsertLine:          SetSingle(VK_N,[ssCtrl]);
 
1392
  ecInsertCharacter:     SetSingle(VK_UNKNOWN,[]);
 
1393
  ecInsertGPLNotice:     SetSingle(VK_UNKNOWN,[]);
 
1394
  ecInsertLGPLNotice:    SetSingle(VK_UNKNOWN,[]);
 
1395
  ecInsertModifiedLGPLNotice:SetSingle(VK_UNKNOWN,[]);
 
1396
  ecInsertMITNotice:     SetSingle(VK_UNKNOWN,[]);
 
1397
  ecInsertUserName:      SetSingle(VK_UNKNOWN,[]);
 
1398
  ecInsertDateTime:      SetSingle(VK_UNKNOWN,[]);
 
1399
  ecInsertChangeLogEntry:SetSingle(VK_UNKNOWN,[]);
 
1400
  ecInsertCVSAuthor:     SetSingle(VK_UNKNOWN,[]);
 
1401
  ecInsertCVSDate:       SetSingle(VK_UNKNOWN,[]);
 
1402
  ecInsertCVSHeader:     SetSingle(VK_UNKNOWN,[]);
 
1403
  ecInsertCVSID:         SetSingle(VK_UNKNOWN,[]);
 
1404
  ecInsertCVSLog:        SetSingle(VK_UNKNOWN,[]);
 
1405
  ecInsertCVSName:       SetSingle(VK_UNKNOWN,[]);
 
1406
  ecInsertCVSRevision:   SetSingle(VK_UNKNOWN,[]);
 
1407
  ecInsertCVSSource:     SetSingle(VK_UNKNOWN,[]);
 
1408
 
 
1409
  // command commands
 
1410
  ecUndo:                SetSingle(VK_BACK,[ssALT],  VK_U,[ssCtrl]);
 
1411
  ecRedo:                SetSingle(VK_BACK,[ssALT,ssShift]);
 
1412
 
 
1413
  // search & replace
 
1414
  ecMatchBracket:        SetSingle(VK_UNKNOWN,[]);
 
1415
  ecFind:                SetCombo(VK_Q,[SSCtrl],VK_F,[],   VK_Q,[SSCtrl],VK_F,[ssCtrl]);
 
1416
  ecFindNext:            SetSingle(VK_L,[ssCtrl]);
 
1417
  ecFindPrevious:        SetSingle(VK_UNKNOWN,[]);
 
1418
  ecFindInFiles:         SetSingle(VK_UNKNOWN,[]);
 
1419
  ecReplace:             SetCombo(VK_Q,[SSCtrl],VK_A,[],   VK_Q,[SSCtrl],VK_A,[ssCtrl]);
 
1420
  ecIncrementalFind:     SetSingle(VK_UNKNOWN,[]);
 
1421
  ecGotoLineNumber:      SetCombo(VK_Q,[ssCtrl],VK_G,[],   VK_Q,[ssCtrl],VK_G,[ssCtrl]);
 
1422
  ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]);
 
1423
  ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]);
 
1424
  ecJumpBack:            SetSingle(VK_B,[ssCtrl]);
 
1425
  ecJumpForward:         SetSingle(VK_B,[ssShift,ssCtrl]);
 
1426
  ecAddJumpPoint:        SetSingle(VK_UNKNOWN,[]);
 
1427
  ecJumpToPrevError:     SetSingle(VK_F7,[ssShift,ssAlt]);
 
1428
  ecJumpToNextError:     SetSingle(VK_F8,[ssShift,ssAlt]);
 
1429
  ecOpenFileAtCursor:    SetSingle(VK_RETURN,[ssCtrl]);
 
1430
 
 
1431
  // marker
 
1432
  ecSetFreeBookmark:     SetSingle(VK_UNKNOWN,[]);
 
1433
  ecPrevBookmark:        SetSingle(VK_UNKNOWN,[]);
 
1434
  ecNextBookmark:        SetSingle(VK_UNKNOWN,[]);
 
1435
  ecGotoMarker0:         SetCombo(VK_Q,[ssCtrl],VK_0,[]);
 
1436
  ecGotoMarker1:         SetCombo(VK_Q,[ssCtrl],VK_1,[]);
 
1437
  ecGotoMarker2:         SetCombo(VK_Q,[ssCtrl],VK_2,[]);
 
1438
  ecGotoMarker3:         SetCombo(VK_Q,[ssCtrl],VK_3,[]);
 
1439
  ecGotoMarker4:         SetCombo(VK_Q,[ssCtrl],VK_4,[]);
 
1440
  ecGotoMarker5:         SetCombo(VK_Q,[ssCtrl],VK_5,[]);
 
1441
  ecGotoMarker6:         SetCombo(VK_Q,[ssCtrl],VK_6,[]);
 
1442
  ecGotoMarker7:         SetCombo(VK_Q,[ssCtrl],VK_7,[]);
 
1443
  ecGotoMarker8:         SetCombo(VK_Q,[ssCtrl],VK_8,[]);
 
1444
  ecGotoMarker9:         SetCombo(VK_Q,[ssCtrl],VK_9,[]);
 
1445
  ecSetMarker0..ecSetMarker9: SetSingle(VK_UNKNOWN,[]);
 
1446
  ecToggleMarker0:       SetCombo(VK_K,[ssCtrl],VK_0,[]);
 
1447
  ecToggleMarker1:       SetCombo(VK_K,[ssCtrl],VK_1,[]);
 
1448
  ecToggleMarker2:       SetCombo(VK_K,[ssCtrl],VK_2,[]);
 
1449
  ecToggleMarker3:       SetCombo(VK_K,[ssCtrl],VK_3,[]);
 
1450
  ecToggleMarker4:       SetCombo(VK_K,[ssCtrl],VK_4,[]);
 
1451
  ecToggleMarker5:       SetCombo(VK_K,[ssCtrl],VK_5,[]);
 
1452
  ecToggleMarker6:       SetCombo(VK_K,[ssCtrl],VK_6,[]);
 
1453
  ecToggleMarker7:       SetCombo(VK_K,[ssCtrl],VK_7,[]);
 
1454
  ecToggleMarker8:       SetCombo(VK_K,[ssCtrl],VK_8,[]);
 
1455
  ecToggleMarker9:       SetCombo(VK_K,[ssCtrl],VK_9,[]);
 
1456
 
 
1457
  // codetools
 
1458
  ecAutoCompletion:      SetSingle(VK_J,[ssCtrl]);
 
1459
  ecWordCompletion:      SetSingle(VK_W,[ssShift,ssCtrl]);
 
1460
  ecCompleteCode:        SetSingle(VK_C,[ssShift,ssCtrl]);
 
1461
  ecIdentCompletion:     SetSingle(VK_UNKNOWN,[]);
 
1462
  ecShowCodeContext:     SetSingle(VK_SPACE,[ssShift,ssCtrl]);
 
1463
  ecExtractProc:         SetSingle(VK_UNKNOWN,[]);
 
1464
  ecFindIdentifierRefs:  SetSingle(VK_UNKNOWN,[]);
 
1465
  ecRenameIdentifier:    SetSingle(VK_E,[ssShift,ssCtrl]);
 
1466
  ecInvertAssignment:    SetSingle(VK_UNKNOWN,[]);
 
1467
  ecSyntaxCheck:         SetSingle(VK_UNKNOWN,[]);
 
1468
  ecGuessUnclosedBlock:  SetSingle(VK_UNKNOWN,[]);
 
1469
  ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[]);
 
1470
  ecConvertDFM2LFM:      SetSingle(VK_UNKNOWN,[]);
 
1471
  ecCheckLFM:            SetSingle(VK_UNKNOWN,[]);
 
1472
  ecConvertDelphiUnit:   SetSingle(VK_UNKNOWN,[]);
 
1473
  ecConvertDelphiProject:SetSingle(VK_UNKNOWN,[]);
 
1474
  ecConvertDelphiPackage:SetSingle(VK_UNKNOWN,[]);
 
1475
  ecConvertEncoding:     SetSingle(VK_UNKNOWN,[]);
 
1476
  ecFindProcedureDefinition:SetSingle(VK_UP,[ssShift,SSCtrl]);
 
1477
  ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl]);
 
1478
  ecFindDeclaration:     SetSingle(VK_UNKNOWN,[]);
 
1479
  ecFindBlockOtherEnd:   SetCombo(VK_Q,[ssCtrl],VK_K,[]);
 
1480
  ecFindBlockStart:      SetCombo(VK_Q,[ssCtrl],VK_B,[]);
 
1481
  ecGotoIncludeDirective:SetSingle(VK_UNKNOWN,[]);
 
1482
  ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[]);
 
1483
  ecRemoveEmptyMethods:  SetSingle(VK_UNKNOWN,[]);
 
1484
 
 
1485
  // source notebook
 
1486
  ecNextEditor:          SetSingle(VK_F6,[],         VK_TAB,[ssCtrl]);
 
1487
  ecPrevEditor:          SetSingle(VK_F6,[ssShift],  VK_TAB,[ssShift,ssCtrl]);
 
1488
  ecResetDebugger:       SetSingle(VK_UNKNOWN,[]);
 
1489
  ecToggleBreakPoint:    SetSingle(VK_UNKNOWN,[]);
 
1490
  ecMoveEditorLeft:      SetSingle(VK_UNKNOWN,[]);
 
1491
  ecMoveEditorRight:     SetSingle(VK_UNKNOWN,[]);
 
1492
  ecMoveEditorLeftmost:  SetSingle(VK_UNKNOWN,[]);
 
1493
  ecMoveEditorRightmost: SetSingle(VK_UNKNOWN,[]);
 
1494
 
 
1495
  ecNextSharedEditor:    SetSingle(VK_UNKNOWN,[]);
 
1496
  ecPrevSharedEditor:    SetSingle(VK_UNKNOWN,[]);
 
1497
  ecNextWindow:          SetSingle(VK_UNKNOWN,[]);
 
1498
  ecPrevWindow:          SetSingle(VK_UNKNOWN,[]);
 
1499
  ecMoveEditorNextWindow:SetSingle(VK_UNKNOWN,[]);
 
1500
  ecMoveEditorPrevWindow:SetSingle(VK_UNKNOWN,[]);
 
1501
  ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[]);
 
1502
  ecCopyEditorNextWindow:SetSingle(VK_UNKNOWN,[]);
 
1503
  ecCopyEditorPrevWindow:SetSingle(VK_UNKNOWN,[]);
 
1504
  ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[]);
 
1505
 
 
1506
  ecGotoEditor1:         SetSingle(VK_1,[ssAlt]);
 
1507
  ecGotoEditor2:         SetSingle(VK_2,[ssAlt]);
 
1508
  ecGotoEditor3:         SetSingle(VK_3,[ssAlt]);
 
1509
  ecGotoEditor4:         SetSingle(VK_4,[ssAlt]);
 
1510
  ecGotoEditor5:         SetSingle(VK_5,[ssAlt]);
 
1511
  ecGotoEditor6:         SetSingle(VK_6,[ssAlt]);
 
1512
  ecGotoEditor7:         SetSingle(VK_7,[ssAlt]);
 
1513
  ecGotoEditor8:         SetSingle(VK_8,[ssAlt]);
 
1514
  ecGotoEditor9:         SetSingle(VK_9,[ssAlt]);
 
1515
  ecGotoEditor0:         SetSingle(VK_0,[ssAlt]);
 
1516
 
 
1517
  ecLockEditor:          SetSingle(VK_UNKNOWN,[]);
 
1518
 
 
1519
  EcFoldLevel1:          SetSingle(VK_1,[ssAlt,ssShift]);
 
1520
  EcFoldLevel2:          SetSingle(VK_2,[ssAlt,ssShift]);
 
1521
  EcFoldLevel3:          SetSingle(VK_3,[ssAlt,ssShift]);
 
1522
  EcFoldLevel4:          SetSingle(VK_4,[ssAlt,ssShift]);
 
1523
  EcFoldLevel5:          SetSingle(VK_5,[ssAlt,ssShift]);
 
1524
  EcFoldLevel6:          SetSingle(VK_6,[ssAlt,ssShift]);
 
1525
  EcFoldLevel7:          SetSingle(VK_7,[ssAlt,ssShift]);
 
1526
  EcFoldLevel8:          SetSingle(VK_8,[ssAlt,ssShift]);
 
1527
  EcFoldLevel9:          SetSingle(VK_9,[ssAlt,ssShift]);
 
1528
  EcFoldLevel0:          SetSingle(VK_0,[ssAlt,ssShift]);
 
1529
  EcFoldCurrent:         SetSingle(VK_OEM_PLUS,[ssAlt,ssShift]);
 
1530
  EcUnFoldCurrent:       SetSingle(VK_OEM_MINUS,[ssAlt,ssShift]);
 
1531
  EcToggleMarkupWord:    SetSingle(VK_M,[ssAlt]);
 
1532
 
 
1533
  // file menu
 
1534
  ecNew:                 SetSingle(VK_UNKNOWN,[]);
 
1535
  ecNewUnit:             SetSingle(VK_UNKNOWN,[]);
 
1536
  ecNewForm:             SetSingle(VK_UNKNOWN,[]);
 
1537
  ecOpen:                SetSingle(VK_F3,[]);
 
1538
  ecRevert:              SetSingle(VK_UNKNOWN,[]);
 
1539
  ecSave:                SetSingle(VK_F2,[]);
 
1540
  ecSaveAs:              SetSingle(VK_UNKNOWN,[]);
 
1541
  ecSaveAll:             SetSingle(VK_F2,[ssShift]);
 
1542
  ecClose:               SetSingle(VK_F3,[ssAlt]);
 
1543
  ecCloseAll:            SetSingle(VK_UNKNOWN,[]);
 
1544
  ecCleanDirectory:      SetSingle(VK_UNKNOWN,[]);
 
1545
  ecRestart:             SetSingle(VK_UNKNOWN,[]);
 
1546
  ecQuit:                SetSingle(VK_X,[ssAlt]);
 
1547
 
 
1548
  // view menu
 
1549
  ecToggleObjectInsp:    SetSingle(VK_F11,[]);
 
1550
  ecToggleSourceEditor:  SetSingle(VK_UNKNOWN,[]);
 
1551
  ecToggleCodeExpl:      SetSingle(VK_UNKNOWN,[]);
 
1552
  ecToggleFPDocEditor:   SetSingle(VK_UNKNOWN,[]);
 
1553
  ecToggleMessages:      SetSingle(VK_UNKNOWN,[]);
 
1554
  ecViewComponents:      SetSingle(VK_UNKNOWN,[]);
 
1555
  ecViewJumpHistory:     SetSingle(VK_UNKNOWN,[]);
 
1556
  ecToggleSearchResults: SetSingle(VK_UNKNOWN,[]);
 
1557
  ecToggleWatches:       SetSingle(VK_UNKNOWN,[]);
 
1558
  ecToggleBreakPoints:   SetSingle(VK_F8,[ssCtrl]);
 
1559
  ecToggleLocals:        SetSingle(VK_UNKNOWN,[]);
 
1560
  ecToggleCallStack:     SetSingle(VK_F3,[ssCtrl]);
 
1561
  ecToggleRegisters:     SetSingle(VK_UNKNOWN,[]);
 
1562
  ecToggleAssembler:     SetSingle(VK_UNKNOWN,[]);
 
1563
  ecToggleDebugEvents:   SetSingle(VK_UNKNOWN,[]);
 
1564
  ecToggleDebuggerOut:   SetSingle(VK_UNKNOWN,[]);
 
1565
  ecViewUnitDependencies:SetSingle(VK_UNKNOWN,[]);
 
1566
  ecViewUnitInfo:        SetSingle(VK_UNKNOWN,[]);
 
1567
  ecToggleFormUnit:      SetSingle(VK_F12,[]);
 
1568
  ecViewAnchorEditor:    SetSingle(VK_UNKNOWN,[]);
 
1569
  ecToggleCodeBrowser:   SetSingle(VK_UNKNOWN,[]);
 
1570
  ecToggleRestrictionBrowser:SetSingle(VK_UNKNOWN,[]);
 
1571
  ecToggleCompPalette:   SetSingle(VK_UNKNOWN,[]);
 
1572
  ecToggleIDESpeedBtns:  SetSingle(VK_UNKNOWN,[]);
 
1573
 
 
1574
  // project menu
 
1575
  ecNewProject:          SetSingle(VK_UNKNOWN,[]);
 
1576
  ecNewProjectFromFile:  SetSingle(VK_UNKNOWN,[]);
 
1577
  ecOpenProject:         SetSingle(VK_F11,[ssCtrl]);
 
1578
  ecCloseProject:        SetSingle(VK_UNKNOWN,[]);
 
1579
  ecSaveProject:         SetSingle(VK_UNKNOWN,[]);
 
1580
  ecSaveProjectAs:       SetSingle(VK_UNKNOWN,[]);
 
1581
  ecPublishProject:      SetSingle(VK_UNKNOWN,[]);
 
1582
  ecProjectInspector:    SetSingle(VK_UNKNOWN,[]);
 
1583
  ecAddCurUnitToProj:    SetSingle(VK_F11,[ssShift]);
 
1584
  ecRemoveFromProj:      SetSingle(VK_UNKNOWN,[]);
 
1585
  ecViewProjectUnits:    SetSingle(VK_F12,[ssCtrl]);
 
1586
  ecViewProjectForms:    SetSingle(VK_F12,[ssShift]);
 
1587
  ecViewProjectSource:   SetSingle(VK_UNKNOWN,[]);
 
1588
  ecProjectOptions:      SetSingle(VK_F11,[ssShift,ssCtrl]);
 
1589
 
 
1590
  // run menu
 
1591
  ecCompile:             SetSingle(VK_F9,[ssCtrl]);
 
1592
  ecBuild:               SetSingle(VK_F9,[ssShift]);
 
1593
  ecQuickCompile:        SetSingle(VK_UNKNOWN,[]);
 
1594
  ecCleanUpCompiled:     SetSingle(VK_UNKNOWN,[]);
 
1595
  ecAbortBuild:          SetSingle(VK_UNKNOWN,[]);
 
1596
  ecRun:                 SetSingle(VK_F9,[]);
 
1597
  ecPause:               SetSingle(VK_UNKNOWN,[]);
 
1598
  ecShowExecutionPoint:  SetSingle(VK_UNKNOWN,[]);
 
1599
  ecStepInto:            SetSingle(VK_F7,[]);
 
1600
  ecStepOver:            SetSingle(VK_F8,[]);
 
1601
  ecStepIntoInstr:       SetSingle(VK_F7,[ssAlt]);
 
1602
  ecStepOverInstr:       SetSingle(VK_F8,[ssAlt]);
 
1603
  ecStepOut:             SetSingle(VK_F8,[ssShift]);
 
1604
  ecRunToCursor:         SetSingle(VK_F4,[]);
 
1605
  ecStopProgram:         SetSingle(VK_UNKNOWN,[]);
 
1606
  ecRemoveBreakPoint:    SetSingle(VK_UNKNOWN,[]);
 
1607
  ecRunParameters:       SetSingle(VK_UNKNOWN,[]);
 
1608
  ecBuildFile:           SetSingle(VK_UNKNOWN,[]);
 
1609
  ecRunFile:             SetSingle(VK_UNKNOWN,[]);
 
1610
  ecConfigBuildFile:     SetSingle(VK_UNKNOWN,[]);
 
1611
  ecInspect:             SetSingle(VK_UNKNOWN,[]);
 
1612
  ecEvaluate:            SetSingle(VK_F4,[ssCtrl]);
 
1613
  ecAddWatch:            SetSingle(VK_F7,[ssCtrl]);
 
1614
  ecAddBpSource:         SetSingle(VK_UNKNOWN,[]);
 
1615
  ecAddBpAddress:        SetSingle(VK_UNKNOWN,[]);
 
1616
  ecAddBpDataWatch:      SetSingle(VK_UNKNOWN,[]);
 
1617
 
 
1618
  // components menu
 
1619
  ecNewPackage:          SetSingle(VK_UNKNOWN,[]);
 
1620
  ecOpenPackage:         SetSingle(VK_UNKNOWN,[]);
 
1621
  ecOpenPackageFile:     SetSingle(VK_UNKNOWN,[]);
 
1622
  ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
 
1623
  ecAddCurFileToPkg:     SetSingle(VK_UNKNOWN,[]);
 
1624
  ecNewPkgComponent:     SetSingle(VK_UNKNOWN,[]);
 
1625
  ecPackageGraph:        SetSingle(VK_UNKNOWN,[]);
 
1626
  ecEditInstallPkgs:     SetSingle(VK_UNKNOWN,[]);
 
1627
  ecConfigCustomComps:   SetSingle(VK_UNKNOWN,[]);
 
1628
 
 
1629
  // tools menu
 
1630
  ecEnvironmentOptions:  SetSingle(VK_UNKNOWN,[]);
 
1631
  ecRescanFPCSrcDir:     SetSingle(VK_UNKNOWN,[]);
 
1632
  ecEditCodeTemplates:   SetSingle(VK_UNKNOWN,[]);
 
1633
  ecCodeToolsDefinesEd:  SetSingle(VK_UNKNOWN,[]);
 
1634
 
 
1635
  ecExtToolSettings:     SetSingle(VK_UNKNOWN,[]);
 
1636
  ecManageExamples:      SetSingle(VK_UNKNOWN,[]);
 
1637
  ecBuildLazarus:        SetSingle(VK_UNKNOWN,[]);
 
1638
  ecConfigBuildLazarus:  SetSingle(VK_UNKNOWN,[]);
 
1639
  ecMakeResourceString:  SetSingle(VK_UNKNOWN,[]);
 
1640
  ecDiff:                SetSingle(VK_UNKNOWN,[]);
 
1641
 
 
1642
  // window menu
 
1643
  ecWindowManager:       SetSingle(VK_UNKNOWN,[]);
 
1644
 
 
1645
  // help menu
 
1646
  ecAboutLazarus:        SetSingle(VK_UNKNOWN,[]);
 
1647
  ecOnlineHelp:          SetSingle(VK_UNKNOWN,[]);
 
1648
  ecContextHelp:         SetSingle(VK_F1,[ssCtrl]);
 
1649
  ecEditContextHelp:     SetSingle(VK_F1,[ssCtrl,ssShift]);
 
1650
  ecReportingBug:        SetSingle(VK_UNKNOWN,[]);
 
1651
  ecFocusHint:           SetSingle(VK_UNKNOWN,[]);
 
1652
 
 
1653
  // designer
 
1654
  ecDesignerCopy:        SetSingle(VK_C,[ssCtrl],    VK_Insert,[ssCtrl]);
 
1655
  ecDesignerCut:         SetSingle(VK_X,[ssCtrl],    VK_Delete,[ssShift]);
 
1656
  ecDesignerPaste:       SetSingle(VK_V,[ssCtrl],    VK_Insert,[ssShift]);
 
1657
  ecDesignerSelectParent:SetSingle(VK_ESCAPE,[]);
 
1658
  ecDesignerMoveToFront: SetSingle(VK_PRIOR,[ssShift]);
 
1659
  ecDesignerMoveToBack:  SetSingle(VK_NEXT,[ssShift]);
 
1660
  ecDesignerForwardOne:  SetSingle(VK_PRIOR,[ssCtrl]);
 
1661
  ecDesignerBackOne:     SetSingle(VK_NEXT,[ssCtrl]);
 
1662
 
 
1663
  // macro
 
1664
  ecSynMacroRecord:      SetSingle(VK_R,[ssShift, ssCtrl]);
 
1665
  ecSynMacroPlay:        SetSingle(VK_P,[ssShift, ssCtrl]);
 
1666
 
 
1667
  // Edit template
 
1668
  ecIdePTmplEdNextCell:         SetSingle(VK_RIGHT,[ssCtrl]);
 
1669
  ecIdePTmplEdNextCellSel:      SetSingle(VK_TAB,[]);
 
1670
  ecIdePTmplEdNextCellRotate:   SetSingle(VK_UNKNOWN,[]);
 
1671
  ecIdePTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
 
1672
  ecIdePTmplEdPrevCell:         SetSingle(VK_LEFT,[ssCtrl]);
 
1673
  ecIdePTmplEdPrevCellSel:      SetSingle(VK_TAB,[ssShift]);
 
1674
  ecIdePTmplEdCellHome:         SetSingle(VK_HOME,[]);
 
1675
  ecIdePTmplEdCellEnd:          SetSingle(VK_END,[]);
 
1676
  ecIdePTmplEdCellSelect:       SetSingle(VK_A,[ssCtrl]);
 
1677
  ecIdePTmplEdFinish:           SetSingle(VK_RETURN,[]);
 
1678
  ecIdePTmplEdEscape:           SetSingle(VK_ESCAPE,[]);
 
1679
  // Edit template
 
1680
  ecIdePTmplEdOutNextCell:         SetSingle(VK_RIGHT,[ssCtrl]);
 
1681
  ecIdePTmplEdOutNextCellSel:      SetSingle(VK_TAB,[]);
 
1682
  ecIdePTmplEdOutNextCellRotate:   SetSingle(VK_UNKNOWN,[]);
 
1683
  ecIdePTmplEdOutNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
 
1684
  ecIdePTmplEdOutPrevCell:         SetSingle(VK_LEFT,[ssCtrl]);
 
1685
  ecIdePTmplEdOutPrevCellSel:      SetSingle(VK_TAB,[ssShift]);
 
1686
  ecIdePTmplEdOutCellHome:         SetSingle(VK_UNKNOWN,[]);
 
1687
  ecIdePTmplEdOutCellEnd:          SetSingle(VK_UNKNOWN,[]);
 
1688
  ecIdePTmplEdOutCellSelect:       SetSingle(VK_UNKNOWN,[]);
 
1689
  ecIdePTmplEdOutFinish:           SetSingle(VK_RETURN,[]);
 
1690
  ecIdePTmplEdOutEscape:           SetSingle(VK_ESCAPE,[]);
 
1691
  // SyncroEdit
 
1692
  ecIdePSyncroEdNextCell:       SetSingle(VK_RIGHT,[ssCtrl]);
 
1693
  ecIdePSyncroEdNextCellSel:    SetSingle(VK_TAB,[]);
 
1694
  ecIdePSyncroEdPrevCell:       SetSingle(VK_LEFT,[ssCtrl]);
 
1695
  ecIdePSyncroEdPrevCellSel:    SetSingle(VK_TAB,[ssShift]);
 
1696
  ecIdePSyncroEdCellHome:       SetSingle(VK_HOME,[]);
 
1697
  ecIdePSyncroEdCellEnd:        SetSingle(VK_END,[]);
 
1698
  ecIdePSyncroEdCellSelect:     SetSingle(VK_A,[ssCtrl]);
 
1699
  ecIdePSyncroEdEscape:         SetSingle(VK_ESCAPE,[]);
 
1700
  // SyncroEdit
 
1701
  ecIdePSyncroEdOutNextCell:       SetSingle(VK_RIGHT,[ssCtrl]);
 
1702
  ecIdePSyncroEdOutNextCellSel:    SetSingle(VK_TAB,[]);
 
1703
  ecIdePSyncroEdOutPrevCell:       SetSingle(VK_LEFT,[ssCtrl]);
 
1704
  ecIdePSyncroEdOutPrevCellSel:    SetSingle(VK_TAB,[ssShift]);
 
1705
  ecIdePSyncroEdOutCellHome:       SetSingle(VK_UNKNOWN,[]);
 
1706
  ecIdePSyncroEdOutCellEnd:        SetSingle(VK_UNKNOWN,[]);
 
1707
  ecIdePSyncroEdOutCellSelect:     SetSingle(VK_UNKNOWN,[]);
 
1708
  ecIdePSyncroEdOutEscape:         SetSingle(VK_ESCAPE,[]);
 
1709
  // SyncroEdit, during selection
 
1710
  ecIdePSyncroEdSelStart:          SetSingle(VK_J,[ssCtrl]);
 
1711
 
 
1712
  else
 
1713
    begin
 
1714
      SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
1715
    end;
 
1716
  end;
 
1717
(*//F1                      Topic Search
 
1718
//Ctrl+F1                Topic Search
 
1719
  ecNextEditor: SetSingle(VK_F6,[]);
 
1720
  ecPrevEditor: SetSingle(VK_F6,[ssShift]);
 
1721
  ecWordLeft:   SetSingle(VK_A,[ssCtrl],VK_LEFT,[ssCtrl]);
 
1722
  ecPageDown:   SetSingle(VK_C,[ssCtrl],VK_NEXT,[]);
 
1723
//Ctrl+D                 Moves the cursor right one column, accounting for the
 
1724
//autoindent setting
 
1725
//Ctrl+E                 Moves the cursor up one line
 
1726
//Ctrl+F                 Moves one word right
 
1727
//Ctrl+G                 Deletes the character to the right of the cursor
 
1728
//Ctrl+H                 Deletes the character to the left of the cursor
 
1729
//Ctrl+I                  Inserts a tab
 
1730
//Ctrl+L                 Search|Search Again
 
1731
//Ctrl+N                 Inserts a new line
 
1732
//Ctrl+P                 Causes next character to be interpreted as an ASCII
 
1733
//sequence
 
1734
//Ctrl+R                 Moves up one screen
 
1735
//Ctrl+S                 Moves the cursor left one column, accounting for the
 
1736
//autoindent setting
 
1737
//Ctrl+T                 Deletes a word
 
1738
//Ctrl+V                 Turns insert mode on/off
 
1739
//Ctrl+W                Moves down one screen
 
1740
//Ctrl+X                 Moves the cursor down one line
 
1741
//Ctrl+Y                 Deletes a line
 
1742
//Ctrl+Z                 Moves the cursor up one line
 
1743
//Ctrl+Shift+S          Performs an incremental search
 
1744
 
 
1745
//Block commands:
 
1746
//---------------
 
1747
//Ctrl+K+B      Marks the beginning of a block
 
1748
//Ctrl+K+C      Copies a selected block
 
1749
//Ctrl+K+H      Hides/shows a selected block
 
1750
//Ctrl+K+I       Indents a block by the amount specified in the Block Indent
 
1751
//combo box on the General page of the Editor Options dialog box.
 
1752
//Ctrl+K+K      Marks the end of a block
 
1753
//Ctrl+K+L       Marks the current line as a block
 
1754
//Ctrl+K+N      Changes a block to uppercase
 
1755
//Ctrl+K+O      Changes a block to lowercase
 
1756
//Ctrl+K+P      Prints selected block
 
1757
//Ctrl+K+R      Reads a block from a file
 
1758
//Ctrl+K+T       Marks a word as a block
 
1759
//Ctrl+K+U      Outdents a block by the amount specified in the Block Indent
 
1760
//combo box on the General page of the Editor Options dialog box.
 
1761
//Ctrl+K+V      Moves a selected block
 
1762
//Ctrl+K+W      Writes a selected block to a file
 
1763
//Ctrl+K+Y      Deletes a selected block
 
1764
//Ctrl+O+C      Turns on column blocking
 
1765
//Ctrl+O+I       Marks an inclusive block
 
1766
//Ctrl+O+K      Turns off column blocking
 
1767
//Ctrl+O+L      Marks a line as a block
 
1768
//Shift+Alt+arrow Selects column-oriented blocks
 
1769
//Click+Alt+mousemv Selects column-oriented blocks
 
1770
//Ctrl+Q+B      Moves to the beginning of a block
 
1771
//Ctrl+Q+K      Moves to the end of a block
 
1772
 
 
1773
//Miscellaneous commands:
 
1774
//-----------------------
 
1775
//Ctrl+K+D      Accesses the menu bar
 
1776
//Ctrl+K+E       Changes a word to lowercase
 
1777
//Ctrl+K+F       Changes a word to uppercase
 
1778
//Ctrl+K+S      File|Save (Default and IDE Classic only)
 
1779
//Ctrl+Q+A      Search|Replace
 
1780
//Ctrl+Q+F      Search|Find
 
1781
//Ctrl+Q+Y      Deletes to the end of a line
 
1782
//Ctrl+Q+[       Finds the matching delimiter (forward)
 
1783
//Ctrl+Q+Ctrl+[ Finds the matching delimiter (forward)
 
1784
//Ctrl+Q+]       Finds the matching delimiter (backward)
 
1785
//Ctrl+Q+Ctrl+] Finds the matching delimiter (backward)
 
1786
//Ctrl+O+A      Open file at cursor
 
1787
//Ctrl+O+B      Browse symbol at cursor (Delphi only)
 
1788
//Alt+right arrow  For code browsing
 
1789
//Alt +left arrow For code browsing
 
1790
//Ctrl+O+G      Search|Go to line number
 
1791
//Ctrl+O+O      Inserts compiler options and directives
 
1792
//Ctrl+O+U      Toggles case
 
1793
//Bookmark commands:
 
1794
//------------------
 
1795
//Shortcut       Action
 
1796
//Ctrl+K+0       Sets bookmark 0
 
1797
//Ctrl+K+1       Sets bookmark 1
 
1798
//Ctrl+K+2       Sets bookmark 2
 
1799
//Ctrl+K+3       Sets bookmark 3
 
1800
//Ctrl+K+4       Sets bookmark 4
 
1801
//Ctrl+K+5       Sets bookmark 5
 
1802
//Ctrl+K+6       Sets bookmark 6
 
1803
//Ctrl+K+7       Sets bookmark 7
 
1804
//Ctrl+K+8       Sets bookmark 8
 
1805
//Ctrl+K+9       Sets bookmark 9
 
1806
//Ctrl+K+Ctrl+0 Sets bookmark 0
 
1807
//Ctrl+K+Ctrl+1 Sets bookmark 1
 
1808
//Ctrl+K+Ctrl+2 Sets bookmark 2
 
1809
//Ctrl+K+Ctrl+3 Sets bookmark 3
 
1810
//Ctrl+K+Ctrl+4 Sets bookmark 4
 
1811
//Ctrl+K+Ctrl+5 Sets bookmark 5
 
1812
//Ctrl+K+Ctrl+6 Sets bookmark 6
 
1813
//Ctrl+K+Ctrl+7 Sets bookmark 7
 
1814
//Ctrl+K+Ctrl+8 Sets bookmark 8
 
1815
//Ctrl+K+Ctrl+9 Sets bookmark 9
 
1816
//Ctrl+Q+0       Goes to bookmark 0
 
1817
//Ctrl+Q+1       Goes to bookmark 1
 
1818
//Ctrl+Q+2       Goes to bookmark 2
 
1819
//Ctrl+Q+3       Goes to bookmark 3
 
1820
//Ctrl+Q+4       Goes to bookmark 4
 
1821
//Ctrl+Q+5       Goes to bookmark 5
 
1822
//Ctrl+Q+6       Goes to bookmark 6
 
1823
//Ctrl+Q+7       Goes to bookmark 7
 
1824
//Ctrl+Q+8       Goes to bookmark 8
 
1825
//Ctrl+Q+9       Goes to bookmark 9
 
1826
//Ctrl+Q+Ctrl+0 Goes to bookmark 0
 
1827
//Ctrl+Q+Ctrl+1 Goes to bookmark 1
 
1828
//Ctrl+Q+Ctrl+2 Goes to bookmark 2
 
1829
//Ctrl+Q+Ctrl+3 Goes to bookmark 3
 
1830
//Ctrl+Q+Ctrl+4 Goes to bookmark 4
 
1831
//Ctrl+Q+Ctrl+5 Goes to bookmark 5
 
1832
//Ctrl+Q+Ctrl+6 Goes to bookmark 6
 
1833
//Ctrl+Q+Ctrl+7 Goes to bookmark 7
 
1834
//Ctrl+Q+Ctrl+8 Goes to bookmark 8
 
1835
//Ctrl+Q+Ctrl+9 Goes to bookmark 9
 
1836
//Cursor movement:
 
1837
//----------------
 
1838
//Ctrl+Q+B      Moves to the beginning of a block
 
1839
//Ctrl+Q+C      Moves to end of a file
 
1840
//Ctrl+Q+D      Moves to the end of a line
 
1841
//Ctrl+Q+E      Moves the cursor to the top of the window
 
1842
//Ctrl+Q+K      Moves to the end of a block
 
1843
//Ctrl+Q+P      Moves to previous position
 
1844
//Ctrl+Q+R      Moves to the beginning of a file
 
1845
//Ctrl+Q+S      Moves to the beginning of a line
 
1846
//Ctrl+Q+T      Moves the viewing editor so that the current line is placed at
 
1847
//the top of the window
 
1848
//Ctrl+Q+U      Moves the viewing editor so that the current line is placed at
 
1849
//the bottom of the window, if possible
 
1850
//Ctrl+Q+X      Moves the cursor to the bottom of the window
 
1851
//System keys:
 
1852
//------------
 
1853
 
 
1854
//F1              Displays context-sensitive Help
 
1855
//F2              File|Save
 
1856
//F3              File|Open
 
1857
//F4              Run to Cursor
 
1858
//F5              Zooms window
 
1859
//F6              Displays the next page
 
1860
//F7              Run|Trace Into
 
1861
//F8              Run|Step Over
 
1862
//F9              Run|Run
 
1863
//F11             View|Object Inspector
 
1864
//F12             View|Toggle Form/Unit
 
1865
//Alt+0           View|Window List
 
1866
//Alt+F2          View|CPU
 
1867
//Alt+F3          File|Close
 
1868
//Alt+F7          Displays previous error in Message view
 
1869
//Alt+F8          Displays next error in Message view
 
1870
//Alt+F11        File|Use Unit (Delphi)
 
1871
//Alt+F11        File|Include Unit Hdr (C++)
 
1872
//Alt+F12        Displays the Code editor
 
1873
//Alt+X           File|Exit
 
1874
//Alt+right arrow  For code browsing forward
 
1875
//Alt +left arrow For code browsing backward
 
1876
//Alt +up arrow  For code browsing Ctrl-click on identifier
 
1877
//Alt+Page Down Goes to the next tab
 
1878
//Alt+Page Up   Goes to the previous tab
 
1879
//Ctrl+F1        Topic Search
 
1880
//Ctrl+F2        Run|Program Reset
 
1881
//Ctrl+F3        View|Call Stack
 
1882
//Ctrl+F6        Open Source/Header file (C++)
 
1883
//Ctrl+F7        Add Watch at Cursor
 
1884
//Ctrl+F8        Toggle Breakpoint
 
1885
//Ctrl+F9        Project|Compile project (Delphi)
 
1886
//Ctrl+F9        Project|Make project (C++)
 
1887
//Ctrl+F11       File|Open Project
 
1888
//Ctrl+F12       View|Units
 
1889
//Shift+F7       Run|Trace To Next Source Line
 
1890
//Shift+F11      Project|Add To Project
 
1891
//Shift+F12      View|Forms
 
1892
//Ctrl+D         Descends item (replaces Inspector window)
 
1893
//Ctrl+N         Opens a new Inspector window
 
1894
//Ctrl+S          Incremental search
 
1895
//Ctrl+T          Displays the Type Cast dialog
 
1896
  else
 
1897
    GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB);
 
1898
  end;
 
1899
*)
 
1900
end;
 
1901
 
 
1902
procedure TKeyCommandRelation.GetDefaultKeyForMacOSXScheme;
 
1903
begin
 
1904
  case Command of
 
1905
  // moving
 
1906
  ecLeft:                SetSingle(VK_LEFT,[]);
 
1907
  ecRight:               SetSingle(VK_RIGHT,[]);
 
1908
  ecUp:                  SetSingle(VK_UP,[]);
 
1909
  ecDown:                SetSingle(VK_DOWN,[]);
 
1910
  ecWordLeft:            SetSingle(VK_LEFT,[ssAlt]);
 
1911
  ecWordRight:           SetSingle(VK_RIGHT,[ssAlt]);
 
1912
  ecLineStart:           SetSingle(VK_LEFT,[ssMeta]);
 
1913
  ecLineEnd:             SetSingle(VK_RIGHT,[ssMeta]);
 
1914
  ecPageUp:              SetSingle(VK_PRIOR,[]);
 
1915
  ecPageDown:            SetSingle(VK_NEXT,[]);
 
1916
  ecPageLeft:            SetSingle(VK_UNKNOWN,[]);
 
1917
  ecPageRight:           SetSingle(VK_UNKNOWN,[]);
 
1918
  ecPageTop:             SetSingle(VK_PRIOR,[ssAlt]);
 
1919
  ecPageBottom:          SetSingle(VK_END,[ssAlt]);
 
1920
  ecEditorTop:           SetSingle(VK_HOME,[],       VK_UP,[ssMeta]);
 
1921
  ecEditorBottom:        SetSingle(VK_END,[],        VK_DOWN,[ssMeta]);
 
1922
  ecScrollUp:            SetSingle(VK_UP,[ssCtrl]);
 
1923
  ecScrollDown:          SetSingle(VK_DOWN,[ssCtrl]);
 
1924
  ecScrollLeft:          SetSingle(VK_UNKNOWN,[]);
 
1925
  ecScrollRight:         SetSingle(VK_UNKNOWN,[]);
 
1926
 
 
1927
  // selection
 
1928
  ecSelLeft:             SetSingle(VK_LEFT,[ssShift]);
 
1929
  ecSelRight:            SetSingle(VK_RIGHT,[ssShift]);
 
1930
  ecSelUp:               SetSingle(VK_UP,[ssShift]);
 
1931
  ecSelDown:             SetSingle(VK_DOWN,[ssShift]);
 
1932
  ecCopy:                SetSingle(VK_C,[ssMeta],    VK_Insert,[ssCtrl]);
 
1933
  ecCut:                 SetSingle(VK_X,[ssMeta],    VK_Delete,[ssShift]);
 
1934
  ecPaste:               SetSingle(VK_V,[ssMeta],    VK_Insert,[ssShift]);
 
1935
  ecNormalSelect:        SetSingle(VK_UNKNOWN,[]);
 
1936
  ecColumnSelect:        SetSingle(VK_UNKNOWN,[]);
 
1937
  ecLineSelect:          SetSingle(VK_UNKNOWN,[]);
 
1938
  ecSelWordLeft:         SetSingle(VK_LEFT,[ssAlt,ssShift]);
 
1939
  ecSelWordRight:        SetSingle(VK_RIGHT,[ssAlt,ssShift]);
 
1940
  ecSelLineStart:        SetSingle(VK_LEFT,[ssMeta,ssShift]);
 
1941
  ecSelLineEnd:          SetSingle(VK_RIGHT,[ssMeta,ssShift]);
 
1942
  ecSelPageTop:          SetSingle(VK_PRIOR,[ssAlt,ssShift]);
 
1943
  ecSelPageBottom:       SetSingle(VK_NEXT,[ssAlt,ssShift]);
 
1944
  ecSelEditorTop:        SetSingle(VK_HOME,[ssShift]);
 
1945
  ecSelEditorBottom:     SetSingle(VK_END,[ssShift]);
 
1946
  ecSelectAll:           SetSingle(VK_A,[ssMeta]);
 
1947
  ecSelectToBrace:       SetSingle(VK_UNKNOWN,[]);
 
1948
  ecSelectCodeBlock:     SetSingle(VK_UNKNOWN,[]);
 
1949
  ecSelectWord:          SetCombo(VK_K,[SSCtrl],VK_T,[],   VK_K,[SSCtrl],VK_T,[ssCtrl]);
 
1950
  ecSelectLine:          SetCombo(VK_K,[SSCtrl],VK_L,[],   VK_K,[SSCtrl],VK_L,[ssCtrl]);
 
1951
  ecSelectParagraph:     SetSingle(VK_UNKNOWN,[]);
 
1952
  ecSelectionUpperCase:  SetCombo(VK_K,[SSCtrl],VK_N,[],   VK_K,[SSCtrl],VK_N,[ssCtrl]);
 
1953
  ecSelectionLowerCase:  SetCombo(VK_K,[SSCtrl],VK_O,[],   VK_K,[SSCtrl],VK_O,[ssCtrl]);
 
1954
  ecSelectionSwapCase:   SetCombo(VK_K,[SSCtrl],VK_P,[],   VK_K,[SSCtrl],VK_P,[ssCtrl]);
 
1955
  ecSelectionTabs2Spaces:SetSingle(VK_UNKNOWN,[]);
 
1956
  ecSelectionEnclose:    SetSingle(VK_UNKNOWN,[]);
 
1957
  ecSelectionComment:    SetSingle(VK_UNKNOWN,[]);
 
1958
  ecSelectionUncomment:  SetSingle(VK_UNKNOWN,[]);
 
1959
  ecToggleComment:       SetSingle(VK_OEM_2,[ssCtrl]);
 
1960
  ecSelectionEncloseIFDEF:SetSingle(VK_D,[ssShift,ssCtrl]);
 
1961
  ecSelectionSort:       SetSingle(VK_UNKNOWN,[]);
 
1962
  ecSelectionBreakLines: SetSingle(VK_UNKNOWN,[]);
 
1963
 
 
1964
  ecBlockSetBegin:       SetCombo(VK_K,[ssCtrl],VK_B,[],   VK_K,[ssCtrl],VK_B,[ssCtrl]);
 
1965
  ecBlockSetEnd:         SetCombo(VK_K,[ssCtrl],VK_K,[],   VK_K,[ssCtrl],VK_K,[ssCtrl]);
 
1966
  ecBlockToggleHide:     SetCombo(VK_K,[ssCtrl],VK_H,[],   VK_K,[ssCtrl],VK_H,[ssCtrl]);
 
1967
  ecBlockHide:           SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
1968
  ecBlockShow:           SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]);
 
1969
  ecBlockMove:           SetCombo(VK_K,[ssCtrl],VK_V,[],   VK_K,[ssCtrl],VK_V,[ssCtrl]);
 
1970
  ecBlockCopy:           SetCombo(VK_K,[ssCtrl],VK_C,[],   VK_K,[ssCtrl],VK_C,[ssCtrl]);
 
1971
  ecBlockDelete:         SetCombo(VK_K,[ssCtrl],VK_Y,[],   VK_K,[ssCtrl],VK_Y,[ssCtrl]);
 
1972
  ecBlockGotoBegin:      SetCombo(VK_Q,[ssCtrl],VK_B,[],   VK_Q,[ssCtrl],VK_B,[ssCtrl]);
 
1973
  ecBlockGotoEnd:        SetCombo(VK_Q,[ssCtrl],VK_K,[],   VK_Q,[ssCtrl],VK_K,[ssCtrl]);
 
1974
 
 
1975
// column mode selection
 
1976
  ecColSelUp:            SetSingle(VK_UP,[ssAlt,ssShift]);
 
1977
  ecColSelDown:          SetSingle(VK_DOWN,[ssAlt,ssShift]);
 
1978
  ecColSelLeft:          SetSingle(VK_UNKNOWN,[]); // VK_LEFT,[ssAlt,ssShift] conflicts.
 
1979
  ecColSelRight:         SetSingle(VK_UNKNOWN,[]); // VK_RIGHT,[ssAlt,ssShift] conflicts.
 
1980
  ecColSelPageDown:      SetSingle(VK_UNKNOWN,[]); // VK_NEXT,[ssAlt,ssShift] conflicts.
 
1981
  ecColSelPageBottom:    SetSingle(VK_NEXT,[ssAlt,ssShift,ssCtrl]);
 
1982
  ecColSelPageUp:        SetSingle(VK_UNKNOWN,[]); // VK_PRIOR,[ssAlt,ssShift] conflicts.
 
1983
  ecColSelPageTop:       SetSingle(VK_PRIOR,[ssAlt,ssShift,ssCtrl]);
 
1984
  ecColSelLineStart:     SetSingle(VK_HOME,[ssAlt,ssShift]);
 
1985
  ecColSelLineEnd:       SetSingle(VK_END,[ssAlt,ssShift]);
 
1986
  ecColSelEditorTop:     SetSingle(VK_HOME,[ssAlt,ssShift,ssCtrl]);
 
1987
  ecColSelEditorBottom:  SetSingle(VK_END,[ssAlt,ssShift,ssCtrl]);
 
1988
 
 
1989
  // editing
 
1990
  ecBlockIndent:         SetCombo(VK_I,[ssCtrl],VK_UNKNOWN,[],  VK_K,[SSCtrl],VK_I,[]);
 
1991
  ecBlockUnindent:       SetCombo(VK_U,[ssCtrl],VK_UNKNOWN,[],  VK_K,[SSCtrl],VK_U,[]);
 
1992
  ecDeleteLastChar:      SetSingle(VK_BACK,[],       VK_BACK,[ssShift]); // ctrl H used for scroll window.
 
1993
  ecDeleteChar:          SetSingle(VK_DELETE,[]); // ctrl G conflicts with GO
 
1994
  ecDeleteWord:          SetSingle(VK_DELETE,[ssAlt]);
 
1995
  ecDeleteLastWord:      SetSingle(VK_BACK,[ssCtrl]);
 
1996
  ecDeleteBOL:           SetSingle(VK_BACK,[ssMeta]);
 
1997
  ecDeleteEOL:           SetSingle(VK_DELETE,[ssMeta]);
 
1998
  ecDeleteLine:          SetSingle(VK_Y,[ssCtrl]);
 
1999
  ecClearAll:            SetSingle(VK_UNKNOWN,[]);
 
2000
  ecLineBreak:           SetSingle(VK_RETURN,[]);
 
2001
  ecInsertLine:          SetSingle(VK_N,[ssShift,ssMeta]);
 
2002
  ecInsertCharacter:     SetSingle(VK_UNKNOWN,[]);
 
2003
  ecInsertGPLNotice:     SetSingle(VK_UNKNOWN,[]);
 
2004
  ecInsertLGPLNotice:    SetSingle(VK_UNKNOWN,[]);
 
2005
  ecInsertModifiedLGPLNotice:SetSingle(VK_UNKNOWN,[]);
 
2006
  ecInsertMITNotice:     SetSingle(VK_UNKNOWN,[]);
 
2007
  ecInsertUserName:      SetSingle(VK_UNKNOWN,[]);
 
2008
  ecInsertDateTime:      SetSingle(VK_UNKNOWN,[]);
 
2009
  ecInsertChangeLogEntry:SetSingle(VK_UNKNOWN,[]);
 
2010
  ecInsertCVSAuthor:     SetSingle(VK_UNKNOWN,[]);
 
2011
  ecInsertCVSDate:       SetSingle(VK_UNKNOWN,[]);
 
2012
  ecInsertCVSHeader:     SetSingle(VK_UNKNOWN,[]);
 
2013
  ecInsertCVSID:         SetSingle(VK_UNKNOWN,[]);
 
2014
  ecInsertCVSLog:        SetSingle(VK_UNKNOWN,[]);
 
2015
  ecInsertCVSName:       SetSingle(VK_UNKNOWN,[]);
 
2016
  ecInsertCVSRevision:   SetSingle(VK_UNKNOWN,[]);
 
2017
  ecInsertCVSSource:     SetSingle(VK_UNKNOWN,[]);
 
2018
  ecInsertGUID:          SetSingle(VK_G,[ssCtrl,ssShift]);
 
2019
  ecInsertFilename:      SetSingle(VK_UNKNOWN,[]);
 
2020
 
 
2021
  // command commands
 
2022
  ecUndo:                SetSingle(VK_Z,[ssMeta]);
 
2023
  ecRedo:                SetSingle(VK_Z,[ssMeta,ssShift]);
 
2024
 
 
2025
  // search & replace
 
2026
  ecMatchBracket:        SetSingle(VK_UNKNOWN,[]);
 
2027
  ecFind:                SetSingle(VK_F,[ssMeta]);
 
2028
  ecFindNext:            SetSingle(VK_G,[ssMeta]);
 
2029
  ecFindPrevious:        SetSingle(VK_G,[ssShift,ssMeta]);
 
2030
  ecFindInFiles:         SetSingle(VK_F,[ssMeta,ssShift]);
 
2031
  ecReplace:             SetSingle(VK_UNKNOWN,[]);
 
2032
  ecIncrementalFind:     SetSingle(VK_E,[ssMeta]);
 
2033
  ecGotoLineNumber:      SetSingle(VK_L,[ssMeta]);
 
2034
  ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]);
 
2035
  ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]);
 
2036
  ecJumpBack:            SetSingle(VK_H,[ssCtrl]);
 
2037
  ecJumpForward:         SetSingle(VK_H,[ssCtrl,ssShift]);
 
2038
  ecAddJumpPoint:        SetSingle(VK_UNKNOWN,[]);
 
2039
  ecJumpToPrevError:     SetSingle(VK_ADD,[ssMeta,ssShift]);
 
2040
  ecJumpToNextError:     SetSingle(VK_ADD,[ssMeta]);
 
2041
  ecOpenFileAtCursor:    SetSingle(VK_RETURN,[ssCtrl]);
 
2042
  ecProcedureList:       SetSingle(VK_G,[ssAlt]);
 
2043
 
 
2044
  // marker
 
2045
  ecSetFreeBookmark:     SetSingle(VK_UNKNOWN,[]);
 
2046
  ecPrevBookmark:        SetSingle(VK_UNKNOWN,[]);
 
2047
  ecNextBookmark:        SetSingle(VK_UNKNOWN,[]);
 
2048
  ecGotoMarker0:         SetSingle(VK_0,[ssCtrl]);
 
2049
  ecGotoMarker1:         SetSingle(VK_1,[ssCtrl]);
 
2050
  ecGotoMarker2:         SetSingle(VK_2,[ssCtrl]);
 
2051
  ecGotoMarker3:         SetSingle(VK_3,[ssCtrl]);
 
2052
  ecGotoMarker4:         SetSingle(VK_4,[ssCtrl]);
 
2053
  ecGotoMarker5:         SetSingle(VK_5,[ssCtrl]);
 
2054
  ecGotoMarker6:         SetSingle(VK_6,[ssCtrl]);
 
2055
  ecGotoMarker7:         SetSingle(VK_7,[ssCtrl]);
 
2056
  ecGotoMarker8:         SetSingle(VK_8,[ssCtrl]);
 
2057
  ecGotoMarker9:         SetSingle(VK_9,[ssCtrl]);
 
2058
  ecToggleMarker0:       SetCombo(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_0,[]);
 
2059
  ecToggleMarker1:       SetCombo(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_1,[]);
 
2060
  ecToggleMarker2:       SetCombo(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_2,[]);
 
2061
  ecToggleMarker3:       SetCombo(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_3,[]);
 
2062
  ecToggleMarker4:       SetCombo(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_4,[]);
 
2063
  ecToggleMarker5:       SetCombo(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_5,[]);
 
2064
  ecToggleMarker6:       SetCombo(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_6,[]);
 
2065
  ecToggleMarker7:       SetCombo(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_7,[]);
 
2066
  ecToggleMarker8:       SetCombo(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_8,[]);
 
2067
  ecToggleMarker9:       SetCombo(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_9,[]);
 
2068
  ecSetMarker0..ecSetMarker9: SetSingle(VK_UNKNOWN,[]);
 
2069
 
 
2070
  // codetools
 
2071
  ecAutoCompletion:      SetSingle(VK_J,[ssMeta]);
 
2072
  ecWordCompletion:      SetSingle(VK_SPACE,[ssCtrl,ssAlt]);
 
2073
  ecCompleteCode:        SetSingle(VK_C,[ssCtrl,ssShift]);
 
2074
  ecIdentCompletion:     SetSingle(VK_SPACE,[ssCtrl]);
 
2075
  ecShowCodeContext:     SetSingle(VK_SPACE,[ssCtrl,ssShift]);
 
2076
  ecExtractProc:         SetSingle(VK_UNKNOWN,[]);
 
2077
  ecFindIdentifierRefs:  SetSingle(VK_UNKNOWN,[]);
 
2078
  ecRenameIdentifier:    SetSingle(VK_E,[ssMeta,ssShift]);
 
2079
  ecInvertAssignment:    SetSingle(VK_UNKNOWN,[]);
 
2080
  ecSyntaxCheck:         SetSingle(VK_UNKNOWN,[]);
 
2081
  ecGuessUnclosedBlock:  SetSingle(VK_UNKNOWN,[]);
 
2082
  ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[]);
 
2083
  ecConvertDFM2LFM:      SetSingle(VK_UNKNOWN,[]);
 
2084
  ecCheckLFM:            SetSingle(VK_UNKNOWN,[]);
 
2085
  ecConvertDelphiUnit:   SetSingle(VK_UNKNOWN,[]);
 
2086
  ecConvertDelphiProject:SetSingle(VK_UNKNOWN,[]);
 
2087
  ecConvertDelphiPackage:SetSingle(VK_UNKNOWN,[]);
 
2088
  ecConvertEncoding:     SetSingle(VK_UNKNOWN,[]);
 
2089
  ecFindProcedureDefinition:SetSingle(VK_UP,[ssShift,SSCtrl]);
 
2090
  ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl]);
 
2091
  ecFindDeclaration:     SetSingle(VK_UP,[ssAlt]);
 
2092
  ecFindBlockOtherEnd:   SetSingle(VK_UNKNOWN,[]);
 
2093
  ecFindBlockStart:      SetSingle(VK_UNKNOWN,[]);
 
2094
  ecGotoIncludeDirective:SetSingle(VK_UNKNOWN,[]);
 
2095
  ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[]);
 
2096
  ecRemoveEmptyMethods:  SetSingle(VK_UNKNOWN,[]);
 
2097
 
 
2098
  // source notebook
 
2099
  ecNextEditor:          SetSingle(VK_RIGHT,[ssMeta,ssAlt]);
 
2100
  ecPrevEditor:          SetSingle(VK_LEFT,[ssMeta,ssAlt]);
 
2101
  ecResetDebugger:       SetSingle(VK_UNKNOWN,[]);
 
2102
  ecToggleBreakPoint:    SetSingle(VK_P,[ssCtrl]);
 
2103
  ecMoveEditorLeft:      SetSingle(VK_UNKNOWN,[]);
 
2104
  ecMoveEditorRight:     SetSingle(VK_UNKNOWN,[]);
 
2105
  ecMoveEditorLeftmost:  SetSingle(VK_UNKNOWN,[]);
 
2106
  ecMoveEditorRightmost: SetSingle(VK_UNKNOWN,[]);
 
2107
 
 
2108
  ecNextSharedEditor:    SetSingle(VK_UNKNOWN,[]);
 
2109
  ecPrevSharedEditor:    SetSingle(VK_UNKNOWN,[]);
 
2110
  ecNextWindow:          SetSingle(VK_UNKNOWN,[]);
 
2111
  ecPrevWindow:          SetSingle(VK_UNKNOWN,[]);
 
2112
  ecMoveEditorNextWindow:SetSingle(VK_UNKNOWN,[]);
 
2113
  ecMoveEditorPrevWindow:SetSingle(VK_UNKNOWN,[]);
 
2114
  ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[]);
 
2115
  ecCopyEditorNextWindow:SetSingle(VK_UNKNOWN,[]);
 
2116
  ecCopyEditorPrevWindow:SetSingle(VK_UNKNOWN,[]);
 
2117
  ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[]);
 
2118
 
 
2119
  ecGotoEditor1:         SetSingle(VK_UNKNOWN,[]);
 
2120
  ecGotoEditor2:         SetSingle(VK_UNKNOWN,[]);
 
2121
  ecGotoEditor3:         SetSingle(VK_UNKNOWN,[]);
 
2122
  ecGotoEditor4:         SetSingle(VK_UNKNOWN,[]);
 
2123
  ecGotoEditor5:         SetSingle(VK_UNKNOWN,[]);
 
2124
  ecGotoEditor6:         SetSingle(VK_UNKNOWN,[]);
 
2125
  ecGotoEditor7:         SetSingle(VK_UNKNOWN,[]);
 
2126
  ecGotoEditor8:         SetSingle(VK_UNKNOWN,[]);
 
2127
  ecGotoEditor9:         SetSingle(VK_UNKNOWN,[]);
 
2128
  ecGotoEditor0:         SetSingle(VK_UNKNOWN,[]);
 
2129
 
 
2130
  ecLockEditor:          SetSingle(VK_UNKNOWN,[]);
 
2131
 
 
2132
  (*
 
2133
  EcFoldLevel1:          SetSingle(VK_1,[ssMeta,ssShift]);
 
2134
  EcFoldLevel2:          SetSingle(VK_2,[ssMeta,ssShift]);
 
2135
  EcFoldLevel3:          SetSingle(VK_3,[ssMeta,ssShift]);
 
2136
  EcFoldLevel4:          SetSingle(VK_4,[ssMeta,ssShift]);
 
2137
  EcFoldLevel5:          SetSingle(VK_5,[ssMeta,ssShift]);
 
2138
  EcFoldLevel6:          SetSingle(VK_6,[ssMeta,ssShift]);
 
2139
  EcFoldLevel7:          SetSingle(VK_7,[ssMeta,ssShift]);
 
2140
  EcFoldLevel8:          SetSingle(VK_8,[ssMeta,ssShift]);
 
2141
  EcFoldLevel9:          SetSingle(VK_9,[ssMeta,ssShift]);
 
2142
  EcFoldLevel0:          SetSingle(VK_0,[ssMeta,ssShift]);
 
2143
  EcFoldCurrent:         SetSingle(VK_OEM_PLUS,[ssMeta,ssShift]);
 
2144
  EcUnFoldCurrent:       SetSingle(VK_OEM_MINUS,[ssMeta,ssShift]);
 
2145
  EcToggleMarkupWord:    SetSingle(VK_M,[ssMeta]);
 
2146
  *)
 
2147
 
 
2148
  // file menu
 
2149
  ecNew:                 SetSingle(VK_N,[ssMeta]);
 
2150
  ecNewUnit:             SetSingle(VK_UNKNOWN,[]);
 
2151
  ecNewForm:             SetSingle(VK_UNKNOWN,[]);
 
2152
  ecOpen:                SetSingle(VK_O,[ssMeta]);
 
2153
  ecRevert:              SetSingle(VK_UNKNOWN,[]);
 
2154
  ecSave:                SetSingle(VK_S,[ssMeta]);
 
2155
  ecSaveAs:              SetSingle(VK_S,[ssMeta,ssShift]);
 
2156
  ecSaveAll:             SetSingle(VK_S,[ssMeta,ssAlt]);
 
2157
  ecClose:               SetSingle(VK_W,[ssMeta,ssShift]);
 
2158
  ecCloseAll:            SetSingle(VK_UNKNOWN,[]);
 
2159
  ecCleanDirectory:      SetSingle(VK_UNKNOWN,[]);
 
2160
  ecRestart:             SetSingle(VK_UNKNOWN,[]);
 
2161
  ecQuit:                SetSingle(VK_UNKNOWN,[]);
 
2162
 
 
2163
  // view menu
 
2164
  ecToggleObjectInsp:    SetSingle(VK_I,[ssAlt,ssMeta]);
 
2165
  ecToggleSourceEditor:  SetSingle(VK_UNKNOWN,[]);
 
2166
  ecToggleCodeExpl:      SetSingle(VK_UNKNOWN,[]);
 
2167
  ecToggleFPDocEditor:   SetSingle(VK_UNKNOWN,[]);
 
2168
  ecToggleMessages:      SetSingle(VK_UNKNOWN,[]);
 
2169
  ecViewComponents:      SetSingle(VK_UNKNOWN,[]);
 
2170
  ecViewJumpHistory:     SetSingle(VK_UNKNOWN,[]);
 
2171
  ecToggleSearchResults: SetSingle(VK_F,[ssCtrl,ssAlt]);
 
2172
  ecToggleWatches:       SetSingle(VK_W,[ssCtrl,ssAlt]);
 
2173
  ecToggleBreakPoints:   SetSingle(VK_B,[ssCtrl,ssAlt]);
 
2174
  ecToggleLocals:        SetSingle(VK_L,[ssCtrl,ssAlt]);
 
2175
  ecViewPseudoTerminal: if HasConsoleSupport then SetSingle(VK_O,[ssCtrl,ssAlt]);
 
2176
  ecViewThreads:         SetSingle(VK_T,[ssCtrl,ssAlt]);
 
2177
  ecToggleCallStack:     SetSingle(VK_S,[ssCtrl,ssAlt]);
 
2178
  ecToggleRegisters:     SetSingle(VK_R,[ssCtrl,ssAlt]);
 
2179
  ecToggleAssembler:     SetSingle(VK_D,[ssCtrl,ssAlt]);
 
2180
  ecToggleDebugEvents:   SetSingle(VK_V,[ssCtrl,ssAlt]);
 
2181
  ecToggleDebuggerOut:   SetSingle(VK_UNKNOWN,[]);
 
2182
  ecViewHistory:         SetSingle(VK_H,[ssCtrl,ssAlt]);
 
2183
  ecViewUnitDependencies:SetSingle(VK_UNKNOWN,[]);
 
2184
  ecViewUnitInfo:        SetSingle(VK_UNKNOWN,[]);
 
2185
  ecToggleFormUnit:      SetSingle(VK_F,[ssMeta,ssAlt]);
 
2186
  ecViewAnchorEditor:    SetSingle(VK_UNKNOWN,[]);
 
2187
  ecToggleCodeBrowser:   SetSingle(VK_UNKNOWN,[]);
 
2188
  ecToggleRestrictionBrowser:SetSingle(VK_UNKNOWN,[]);
 
2189
  ecToggleCompPalette:   SetSingle(VK_UNKNOWN,[]);
 
2190
  ecToggleIDESpeedBtns:  SetSingle(VK_UNKNOWN,[]);
 
2191
 
 
2192
  // project menu
 
2193
  ecNewProject:          SetSingle(VK_UNKNOWN,[]);
 
2194
  ecNewProjectFromFile:  SetSingle(VK_UNKNOWN,[]);
 
2195
  ecOpenProject:         SetSingle(VK_UNKNOWN,[]);
 
2196
  ecCloseProject:        SetSingle(VK_UNKNOWN,[]);
 
2197
  ecSaveProject:         SetSingle(VK_UNKNOWN,[]);
 
2198
  ecSaveProjectAs:       SetSingle(VK_UNKNOWN,[]);
 
2199
  ecPublishProject:      SetSingle(VK_UNKNOWN,[]);
 
2200
  ecProjectInspector:    SetSingle(VK_UNKNOWN,[]);
 
2201
  ecAddCurUnitToProj:    SetSingle(VK_A,[ssAlt,ssMeta]);
 
2202
  ecRemoveFromProj:      SetSingle(VK_UNKNOWN,[]);
 
2203
  ecViewProjectUnits:    SetSingle(VK_U,[ssCtrl,ssAlt]);
 
2204
  ecViewProjectForms:    SetSingle(VK_U,[ssShift,ssCtrl]);
 
2205
  ecViewProjectSource:   SetSingle(VK_UNKNOWN,[]);
 
2206
  ecProjectOptions:      SetSingle(VK_UNKNOWN,[]);
 
2207
 
 
2208
  // run menu
 
2209
  ecCompile:             SetSingle(VK_B,[ssMeta]);
 
2210
  ecBuild:               SetSingle(VK_UNKNOWN,[]);
 
2211
  ecQuickCompile:        SetSingle(VK_UNKNOWN,[]);
 
2212
  ecCleanUpCompiled:     SetSingle(VK_UNKNOWN,[]);
 
2213
  ecAbortBuild:          SetSingle(VK_UNKNOWN,[]);
 
2214
  ecRun:                 SetSingle(VK_R,[ssMeta]);
 
2215
  ecPause:               SetSingle(VK_UNKNOWN,[]);
 
2216
  ecShowExecutionPoint:  SetSingle(VK_UNKNOWN,[]);
 
2217
  ecStepInto:            SetSingle(VK_R,[ssMeta,ssAlt]);
 
2218
  ecStepOver:            SetSingle(VK_R,[ssMeta,ssShift]);
 
2219
  ecStepOut:             SetSingle(VK_T,[ssMeta,ssShift]);
 
2220
  ecRunToCursor:         SetSingle(VK_UNKNOWN,[]);
 
2221
  ecStopProgram:         SetSingle(VK_RETURN,[ssShift,ssMeta]);
 
2222
  ecRemoveBreakPoint:    SetSingle(VK_UNKNOWN,[]);
 
2223
  ecRunParameters:       SetSingle(VK_UNKNOWN,[]);
 
2224
  ecBuildFile:           SetSingle(VK_UNKNOWN,[]);
 
2225
  ecRunFile:             SetSingle(VK_UNKNOWN,[]);
 
2226
  ecConfigBuildFile:     SetSingle(VK_UNKNOWN,[]);
 
2227
  ecInspect:             SetSingle(VK_UNKNOWN,[]);
 
2228
  ecEvaluate:            SetSingle(VK_E,[ssCtrl,ssShift]);
 
2229
  ecAddWatch:            SetSingle(VK_UNKNOWN,[]);
 
2230
  ecAddBpSource:         SetSingle(VK_UNKNOWN,[]);
 
2231
  ecAddBpAddress:        SetSingle(VK_UNKNOWN,[]);
 
2232
  ecAddBpDataWatch:      SetSingle(VK_UNKNOWN,[]);
 
2233
 
 
2234
  // components menu
 
2235
  ecNewPackage:          SetSingle(VK_UNKNOWN,[]);
 
2236
  ecOpenPackage:         SetSingle(VK_UNKNOWN,[]);
 
2237
  ecOpenPackageFile:     SetSingle(VK_UNKNOWN,[]);
 
2238
  ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]);
 
2239
  ecAddCurFileToPkg:     SetSingle(VK_UNKNOWN,[]);
 
2240
  ecNewPkgComponent:     SetSingle(VK_UNKNOWN,[]);
 
2241
  ecPackageGraph:        SetSingle(VK_UNKNOWN,[]);
 
2242
  ecEditInstallPkgs:     SetSingle(VK_UNKNOWN,[]);
 
2243
  ecConfigCustomComps:   SetSingle(VK_UNKNOWN,[]);
 
2244
 
 
2245
  // tools menu
 
2246
  ecEnvironmentOptions:  SetSingle(VK_UNKNOWN,[]);
 
2247
  ecRescanFPCSrcDir:     SetSingle(VK_UNKNOWN,[]);
 
2248
  ecEditCodeTemplates:   SetSingle(VK_UNKNOWN,[]);
 
2249
  ecCodeToolsDefinesEd:  SetSingle(VK_UNKNOWN,[]);
 
2250
 
 
2251
  ecExtToolSettings:     SetSingle(VK_UNKNOWN,[]);
 
2252
  ecManageExamples:      SetSingle(VK_UNKNOWN,[]);
 
2253
  ecBuildLazarus:        SetSingle(VK_UNKNOWN,[]);
 
2254
  ecConfigBuildLazarus:  SetSingle(VK_UNKNOWN,[]);
 
2255
  ecMakeResourceString:  SetSingle(VK_UNKNOWN,[]);
 
2256
  ecDiff:                SetSingle(VK_UNKNOWN,[]);
 
2257
 
 
2258
  // window menu
 
2259
  ecWindowManager:       SetSingle(VK_W,[ssShift,ssCtrl]);
 
2260
 
 
2261
  // help menu
 
2262
  ecAboutLazarus:        SetSingle(VK_UNKNOWN,[]);
 
2263
  ecOnlineHelp:          SetSingle(VK_UNKNOWN,[]);
 
2264
  ecContextHelp:         SetSingle(VK_F1,[],VK_HELP,[]);
 
2265
  ecEditContextHelp:     SetSingle(VK_F1,[ssShift], VK_HELP,[ssCtrl]);
 
2266
  ecReportingBug:        SetSingle(VK_UNKNOWN,[]);
 
2267
  ecFocusHint:           SetSingle(VK_UNKNOWN,[]);
 
2268
 
 
2269
  // designer
 
2270
  ecDesignerCopy:        SetSingle(VK_C,[ssMeta]);
 
2271
  ecDesignerCut:         SetSingle(VK_X,[ssMeta]);
 
2272
  ecDesignerPaste:       SetSingle(VK_V,[ssMeta]);
 
2273
  ecDesignerSelectParent:SetSingle(VK_ESCAPE,[]);
 
2274
  ecDesignerMoveToFront: SetSingle(VK_PRIOR,[ssShift]);
 
2275
  ecDesignerMoveToBack:  SetSingle(VK_NEXT,[ssShift]);
 
2276
  ecDesignerForwardOne:  SetSingle(VK_PRIOR,[ssMeta]);
 
2277
  ecDesignerBackOne:     SetSingle(VK_NEXT,[ssMeta]);
 
2278
 
 
2279
  // macro
 
2280
  ecSynMacroRecord:      SetSingle(VK_R,[ssShift, ssCtrl]);
 
2281
  ecSynMacroPlay:        SetSingle(VK_P,[ssShift, ssCtrl]);
 
2282
 
 
2283
  // Edit template
 
2284
  ecIdePTmplEdNextCell:         SetSingle(VK_RIGHT,[ssCtrl]);
 
2285
  ecIdePTmplEdNextCellSel:      SetSingle(VK_TAB,[]);
 
2286
  ecIdePTmplEdNextCellRotate:   SetSingle(VK_UNKNOWN,[]);
 
2287
  ecIdePTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
 
2288
  ecIdePTmplEdPrevCell:         SetSingle(VK_LEFT,[ssCtrl]);
 
2289
  ecIdePTmplEdPrevCellSel:      SetSingle(VK_TAB,[ssShift]);
 
2290
  ecIdePTmplEdCellHome:         SetSingle(VK_HOME,[]);
 
2291
  ecIdePTmplEdCellEnd:          SetSingle(VK_END,[]);
 
2292
  ecIdePTmplEdCellSelect:       SetSingle(VK_A,[ssCtrl]);
 
2293
  ecIdePTmplEdFinish:           SetSingle(VK_RETURN,[]);
 
2294
  ecIdePTmplEdEscape:           SetSingle(VK_ESCAPE,[]);
 
2295
  // Edit template
 
2296
  ecIdePTmplEdOutNextCell:         SetSingle(VK_RIGHT,[ssCtrl]);
 
2297
  ecIdePTmplEdOutNextCellSel:      SetSingle(VK_TAB,[]);
 
2298
  ecIdePTmplEdOutNextCellRotate:   SetSingle(VK_UNKNOWN,[]);
 
2299
  ecIdePTmplEdOutNextCellSelRotate:SetSingle(VK_UNKNOWN,[]);
 
2300
  ecIdePTmplEdOutPrevCell:         SetSingle(VK_LEFT,[ssCtrl]);
 
2301
  ecIdePTmplEdOutPrevCellSel:      SetSingle(VK_TAB,[ssShift]);
 
2302
  ecIdePTmplEdOutCellHome:         SetSingle(VK_UNKNOWN,[]);
 
2303
  ecIdePTmplEdOutCellEnd:          SetSingle(VK_UNKNOWN,[]);
 
2304
  ecIdePTmplEdOutCellSelect:       SetSingle(VK_UNKNOWN,[]);
 
2305
  ecIdePTmplEdOutFinish:           SetSingle(VK_RETURN,[]);
 
2306
  ecIdePTmplEdOutEscape:           SetSingle(VK_ESCAPE,[]);
 
2307
  // SyncroEdit
 
2308
  ecIdePSyncroEdNextCell:       SetSingle(VK_RIGHT,[ssCtrl]);
 
2309
  ecIdePSyncroEdNextCellSel:    SetSingle(VK_TAB,[]);
 
2310
  ecIdePSyncroEdPrevCell:       SetSingle(VK_LEFT,[ssCtrl]);
 
2311
  ecIdePSyncroEdPrevCellSel:    SetSingle(VK_TAB,[ssShift]);
 
2312
  ecIdePSyncroEdCellHome:       SetSingle(VK_HOME,[]);
 
2313
  ecIdePSyncroEdCellEnd:        SetSingle(VK_END,[]);
 
2314
  ecIdePSyncroEdCellSelect:     SetSingle(VK_A,[ssCtrl]);
 
2315
  ecIdePSyncroEdEscape:         SetSingle(VK_ESCAPE,[]);
 
2316
  // SyncroEdit
 
2317
  ecIdePSyncroEdOutNextCell:       SetSingle(VK_RIGHT,[ssCtrl]);
 
2318
  ecIdePSyncroEdOutNextCellSel:    SetSingle(VK_TAB,[]);
 
2319
  ecIdePSyncroEdOutPrevCell:       SetSingle(VK_LEFT,[ssCtrl]);
 
2320
  ecIdePSyncroEdOutPrevCellSel:    SetSingle(VK_TAB,[ssShift]);
 
2321
  ecIdePSyncroEdOutCellHome:       SetSingle(VK_UNKNOWN,[]);
 
2322
  ecIdePSyncroEdOutCellEnd:        SetSingle(VK_UNKNOWN,[]);
 
2323
  ecIdePSyncroEdOutCellSelect:     SetSingle(VK_UNKNOWN,[]);
 
2324
  ecIdePSyncroEdOutEscape:         SetSingle(VK_ESCAPE,[]);
 
2325
  // SyncroEdit, during selection
 
2326
  ecIdePSyncroEdSelStart:          SetSingle(VK_J,[ssCtrl]);
 
2327
 
 
2328
  else
 
2329
    begin
 
2330
      SetSingle(VK_UNKNOWN,[]);
 
2331
    end;
 
2332
  end;
 
2333
end;
 
2334
 
 
2335
procedure TKeyCommandRelation.GetDefaultKeyForMacOSXLazScheme;
 
2336
begin
 
2337
  { First default to standard Mac OS X scheme }
 
2338
  GetDefaultKeyForMacOSXScheme;
 
2339
 
 
2340
  { Now override some entries }
 
2341
  case Command of
 
2342
  // moving
 
2343
  ecLeft:                SetSingle(VK_LEFT,[]);
 
2344
  ecRight:               SetSingle(VK_RIGHT,[]);
 
2345
  ecUp:                  SetSingle(VK_UP,[]);
 
2346
  ecDown:                SetSingle(VK_DOWN,[]);
 
2347
  ecLineStart:           SetSingle(VK_HOME,[],        VK_LEFT,[ssMeta]);
 
2348
  ecLineEnd:             SetSingle(VK_END,[],         VK_RIGHT,[ssMeta]);
 
2349
  ecEditorTop:           SetSingle(VK_UP,[ssMeta]);
 
2350
  ecEditorBottom:        SetSingle(VK_DOWN,[ssMeta]);
 
2351
 
 
2352
  // selection
 
2353
  ecSelLeft:             SetSingle(VK_LEFT,[ssShift]);
 
2354
  ecSelRight:            SetSingle(VK_RIGHT,[ssShift]);
 
2355
  ecSelUp:               SetSingle(VK_UP,[ssShift]);
 
2356
  ecSelDown:             SetSingle(VK_DOWN,[ssShift]);
 
2357
  ecSelLineStart:        SetSingle(VK_HOME,[ssShift], VK_LEFT,[ssMeta,ssShift]);
 
2358
  ecSelLineEnd:          SetSingle(VK_END,[ssShift],  VK_RIGHT,[ssMeta,ssShift]);
 
2359
  ecSelEditorTop:        SetSingle(VK_HOME,[ssShift,ssCtrl]);
 
2360
  ecSelEditorBottom:     SetSingle(VK_END,[ssShift,ssCtrl]);
 
2361
 
 
2362
  // codetools
 
2363
  ecRenameIdentifier:    SetSingle(VK_E,[ssShift,ssCtrl]);
 
2364
 
 
2365
  // run menu
 
2366
  ecCompile:             SetSingle(VK_F9,[ssCtrl],    VK_F9,[ssCtrl,ssMeta]);
 
2367
  ecBuild:               SetSingle(VK_F9,[ssShift]);
 
2368
  ecQuickCompile:        SetSingle(VK_UNKNOWN,[]);
 
2369
  ecCleanUpCompiled:     SetSingle(VK_UNKNOWN,[]);
 
2370
  ecAbortBuild:          SetSingle(VK_UNKNOWN,[]);
 
2371
  ecRun:                 SetSingle(VK_F9,[],          VK_F9,[ssMeta]);
 
2372
  ecPause:               SetSingle(VK_UNKNOWN,[]);
 
2373
  ecShowExecutionPoint:  SetSingle(VK_UNKNOWN,[]);
 
2374
  ecStepInto:            SetSingle(VK_F7,[],          VK_F7,[ssMeta]);
 
2375
  ecStepOver:            SetSingle(VK_F8,[],          VK_F8,[ssMeta]);
 
2376
  ecStepOut:             SetSingle(VK_F8,[ssShift],   VK_F8,[ssShift,ssMeta]);
 
2377
  ecRunToCursor:         SetSingle(VK_F4,[],          VK_F4,[ssMeta]);
 
2378
  ecStopProgram:         SetSingle(VK_F2,[ssCtrl],    VK_F2,[ssCtrl,ssMeta]);
 
2379
  ecRemoveBreakPoint:    SetSingle(VK_UNKNOWN,[]);
 
2380
  ecRunParameters:       SetSingle(VK_UNKNOWN,[]);
 
2381
  ecBuildFile:           SetSingle(VK_UNKNOWN,[]);
 
2382
  ecRunFile:             SetSingle(VK_UNKNOWN,[]);
 
2383
  ecConfigBuildFile:     SetSingle(VK_UNKNOWN,[]);
 
2384
  ecInspect:             SetSingle(VK_F5,[ssAlt]);
 
2385
  ecEvaluate:            SetSingle(VK_F7,[ssCtrl],  VK_F7,[ssCtrl,ssMeta]);
 
2386
  ecAddWatch:            SetSingle(VK_F5,[ssCtrl],  VK_F5,[ssCtrl,ssMeta]);
 
2387
  ecAddBpSource:         SetSingle(VK_UNKNOWN,[]);
 
2388
  ecAddBpAddress:        SetSingle(VK_UNKNOWN,[]);
 
2389
  ecAddBpDataWatch:      SetSingle(VK_F5,[ssShift]);
 
2390
  end;
2370
2391
end;
2371
2392
 
2372
2393
{ TKeyCommandRelationList }
2389
2410
  inherited Destroy;
2390
2411
end;
2391
2412
 
2392
 
procedure TKeyCommandRelationList.CreateDefaultMapping;
 
2413
procedure TKeyCommandRelationList.DefineCommandCategories;
 
2414
// Define a category for each command
2393
2415
var
2394
2416
  C: TIDECommandCategory;
2395
 
  o: LongInt;
2396
2417
begin
2397
2418
  Clear;
2398
 
 
2399
 
  // create default keymapping
2400
 
 
2401
2419
  // moving
2402
 
  C:=Categories[AddCategory('CursorMoving',srkmCatCursorMoving,
2403
 
                IDECmdScopeSrcEditOnly)];
2404
 
  //p:=Relations[Add(C,'Name1',12000,IDEShortCut(vk_P,[ssShift,ssAlt],VK_UNKNOWN,[]),CLeanIDEShortCut)];
2405
 
  //debugln('TKeyCommandRelationList.Add A ',p.Name,' ',KeyAndShiftStateToEditorKeyString(p.ShortcutA),' ',dbgs(p));
 
2420
  C:=Categories[AddCategory('CursorMoving',srkmCatCursorMoving,IDECmdScopeSrcEditOnly)];
 
2421
  AddDefault(C, 'Move cursor left', srkmecLeft, ecLeft);
 
2422
  AddDefault(C, 'Move cursor right', srkmecRight, ecRight);
 
2423
  AddDefault(C, 'Move cursor up', srkmecUp, ecUp);
 
2424
  AddDefault(C, 'Move cursor down', srkmecDown, ecDown);
2406
2425
  AddDefault(C, 'Move cursor word left', srkmecWordLeft, ecWordLeft);
2407
2426
  AddDefault(C, 'Move cursor word right', srkmecWordRight, ecWordRight);
 
2427
  AddDefault(C, 'Move cursor word end left', srkmecWordEndLeft, ecWordEndLeft);
 
2428
  AddDefault(C, 'Move cursor word end right', srkmecWordEndRight, ecWordEndRight);
 
2429
  AddDefault(C, 'Move cursor half word left', srkmecHalfWordLeft, ecHalfWordLeft);
 
2430
  AddDefault(C, 'Move cursor half word right', srkmecHalfWordRight, ecHalfWordRight);
2408
2431
  AddDefault(C, 'Move cursor to line start', srkmecLineStart, ecLineStart);
2409
2432
  AddDefault(C, 'Move cursor to text start in line', srkmecLineTextStart, ecLineTextStart);
2410
2433
  AddDefault(C, 'Move cursor to line end', srkmecLineEnd, ecLineEnd);
2413
2436
  AddDefault(C, 'Move cursor left one page', srkmecPageLeft, ecPageLeft);
2414
2437
  AddDefault(C, 'Move cursor right one page', srkmecPageRight, ecPageRight);
2415
2438
  AddDefault(C, 'Move cursor to top of page', srkmecPageTop, ecPageTop);
2416
 
  AddDefault(C, 'Move cursor to bottom of page', srkmecPageBottom, ecPageBottom
2417
 
    );
2418
 
  AddDefault(C, 'Move cursor to absolute beginning', srkmecEditorTop,
2419
 
    ecEditorTop);
2420
 
  AddDefault(C, 'Move cursor to absolute end', srkmecEditorBottom,
2421
 
    ecEditorBottom);
 
2439
  AddDefault(C, 'Move cursor to bottom of page', srkmecPageBottom, ecPageBottom);
 
2440
  AddDefault(C, 'Move cursor to absolute beginning', srkmecEditorTop, ecEditorTop);
 
2441
  AddDefault(C, 'Move cursor to absolute end', srkmecEditorBottom, ecEditorBottom);
2422
2442
  AddDefault(C, 'Scroll up one line', srkmecScrollUp, ecScrollUp);
2423
2443
  AddDefault(C, 'Scroll down one line', srkmecScrollDown, ecScrollDown);
2424
2444
  AddDefault(C, 'Scroll left one char', srkmecScrollLeft, ecScrollLeft);
2425
2445
  AddDefault(C, 'Scroll right one char', srkmecScrollRight, ecScrollRight);
2426
2446
 
2427
2447
  // selection
2428
 
  C:=Categories[AddCategory('Selection',srkmCatSelection,
2429
 
                IDECmdScopeSrcEditOnly)];
 
2448
  C:=Categories[AddCategory('Selection',srkmCatSelection, IDECmdScopeSrcEditOnly)];
 
2449
  AddDefault(C, 'Select cursor left', srkmecSelLeft, ecSelLeft);
 
2450
  AddDefault(C, 'Select cursor right', srkmecSelRight, ecSelRight);
 
2451
  AddDefault(C, 'Select cursor up', srkmecSelUp, ecSelUp);
 
2452
  AddDefault(C, 'Select cursor down', srkmecSelDown, ecSelDown);
 
2453
 
2430
2454
  AddDefault(C, 'Copy selection to clipboard', srkmecCopy, ecCopy);
2431
2455
  AddDefault(C, 'Cut selection to clipboard', srkmecCut, ecCut);
2432
2456
  AddDefault(C, 'Paste clipboard to current position', srkmecPaste, ecPaste);
2435
2459
  AddDefault(C, 'Line selection mode', srkmecLineSelect, ecLineSelect);
2436
2460
  AddDefault(C, 'Indent block', srkmecBlockIndent, ecBlockIndent);
2437
2461
  AddDefault(C, 'Unindent block', srkmecBlockUnindent, ecBlockUnindent);
2438
 
  AddDefault(C, 'Uppercase selection', lisMenuUpperCaseSelection,
2439
 
    ecSelectionUpperCase);
2440
 
  AddDefault(C, 'Lowercase selection', lisMenuLowerCaseSelection,
2441
 
    ecSelectionLowerCase);
 
2462
  AddDefault(C, 'Uppercase selection', lisMenuUpperCaseSelection, ecSelectionUpperCase);
 
2463
  AddDefault(C, 'Lowercase selection', lisMenuLowerCaseSelection, ecSelectionLowerCase);
 
2464
  AddDefault(C, 'Swap case in selection', lisMenuSwapCaseSelection, ecSelectionSwapCase);
2442
2465
  AddDefault(C, 'Convert tabs to spaces in selection',
2443
2466
    srkmecSelectionTabs2Spaces, ecSelectionTabs2Spaces);
2444
2467
  AddDefault(C, 'Enclose selection', lisKMEncloseSelection, ecSelectionEnclose);
2445
 
  AddDefault(C, 'Comment selection', lisMenuCommentSelection, ecSelectionComment
2446
 
    );
2447
 
  AddDefault(C, 'Uncomment selection', lisMenuUncommentSelection,
2448
 
    ecSelectionUncomment);
2449
 
  AddDefault(C, 'Toggle comment', lisMenuToggleComment, ecToggleComment
2450
 
    );
 
2468
  AddDefault(C, 'Comment selection', lisMenuCommentSelection, ecSelectionComment);
 
2469
  AddDefault(C, 'Uncomment selection', lisMenuUncommentSelection, ecSelectionUncomment);
 
2470
  AddDefault(C, 'Toggle comment', lisMenuToggleComment, ecToggleComment);
2451
2471
  AddDefault(C, 'Sort selection', lisSortSelSortSelection, ecSelectionSort);
2452
 
  AddDefault(C, 'Break Lines in selection', lisMenuBeakLinesInSelection,
2453
 
    ecSelectionBreakLines);
 
2472
  AddDefault(C, 'Break Lines in selection', lisMenuBeakLinesInSelection, ecSelectionBreakLines);
2454
2473
  AddDefault(C, 'Select word left', lisKMSelectWordLeft, ecSelWordLeft);
2455
2474
  AddDefault(C, 'Select word right', lisKMSelectWordRight, ecSelWordRight);
 
2475
  AddDefault(C, 'Select word end left', srkmecSelWordEndLeft, ecSelWordEndLeft);
 
2476
  AddDefault(C, 'Select word end right', srkmecSelWordEndRight, ecSelWordEndRight);
 
2477
  AddDefault(C, 'Select half word left', srkmecSelHalfWordLeft, ecSelHalfWordLeft);
 
2478
  AddDefault(C, 'Select half word right', srkmecSelHalfWordRight, ecSelHalfWordRight);
2456
2479
  AddDefault(C, 'Select line start', lisKMSelectLineStart, ecSelLineStart);
2457
2480
  AddDefault(C, 'Select to text start in line', srkmecSelLineTextStart, ecSelLineTextStart);
2458
2481
  AddDefault(C, 'Select line end', lisKMSelectLineEnd, ecSelLineEnd);
2459
2482
  AddDefault(C, 'Select page top', lisKMSelectPageTop, ecSelPageTop);
2460
2483
  AddDefault(C, 'Select page bottom', lisKMSelectPageBottom, ecSelPageBottom);
2461
 
  AddDefault(C, 'Select to absolute beginning', srkmecSelEditorTop,
2462
 
    ecSelEditorTop);
2463
 
  AddDefault(C, 'Select to absolute end', srkmecSelEditorBottom,
2464
 
    ecSelEditorBottom);
 
2484
  AddDefault(C, 'Select to absolute beginning', srkmecSelEditorTop, ecSelEditorTop);
 
2485
  AddDefault(C, 'Select to absolute end', srkmecSelEditorBottom, ecSelEditorBottom);
2465
2486
  AddDefault(C, 'Select all', lisMenuSelectAll, ecSelectAll);
2466
2487
  AddDefault(C, 'Select to brace', lisMenuSelectToBrace, ecSelectToBrace);
2467
2488
  AddDefault(C, 'Select code block', lisMenuSelectCodeBlock, ecSelectCodeBlock);
2482
2503
  AddDefault(C, 'Goto Block End', srkmecBlockGotoEnd, ecBlockGotoEnd);
2483
2504
 
2484
2505
  // column mode selection
2485
 
  C:=Categories[AddCategory('Column Selection',srkmCatColSelection,
2486
 
                IDECmdScopeSrcEditOnly)];
 
2506
  C:=Categories[AddCategory('Column Selection',srkmCatColSelection,IDECmdScopeSrcEditOnly)];
2487
2507
  AddDefault(C, 'Column Select Up', srkmecColSelUp, ecColSelUp);
2488
2508
  AddDefault(C, 'Column Select Down', srkmecColSelDown, ecColSelDown);
2489
2509
  AddDefault(C, 'Column Select Left', srkmecColSelLeft, ecColSelLeft);
2506
2526
  AddDefault(C, 'Delete last char', lisKMDeleteLastChar, ecDeleteLastChar);
2507
2527
  AddDefault(C, 'Delete char at cursor', srkmecDeletechar, ecDeleteChar);
2508
2528
  AddDefault(C, 'Delete to end of word', srkmecDeleteWord, ecDeleteWord);
2509
 
  AddDefault(C, 'Delete to start of word', srkmecDeleteLastWord,
2510
 
    ecDeleteLastWord);
 
2529
  AddDefault(C, 'Delete to start of word', srkmecDeleteLastWord, ecDeleteLastWord);
2511
2530
  AddDefault(C, 'Delete to beginning of line', srkmecDeleteBOL, ecDeleteBOL);
2512
2531
  AddDefault(C, 'Delete to end of line', srkmecDeleteEOL, ecDeleteEOL);
2513
2532
  AddDefault(C, 'Delete current line', srkmecDeleteLine, ecDeleteLine);
2514
2533
  AddDefault(C, 'Delete whole text', srkmecClearAll, ecClearAll);
2515
2534
  AddDefault(C, 'Break line and move cursor', srkmecLineBreak, ecLineBreak);
2516
2535
  AddDefault(C, 'Break line, leave cursor', srkmecInsertLine, ecInsertLine);
2517
 
  AddDefault(C, 'Insert $IFDEF', lisKMInsertIFDEF, ecSelectionConditional);
2518
 
  AddDefault(C, 'Insert from Character Map', lisMenuInsertCharacter,
2519
 
    ecInsertCharacter);
 
2536
  AddDefault(C, 'Enclose in $IFDEF', lisEncloseInIFDEF, ecSelectionEncloseIFDEF);
 
2537
  AddDefault(C, 'Insert from Character Map', lisMenuInsertCharacter, ecInsertCharacter);
2520
2538
  AddDefault(C, 'Insert GPL notice', srkmecInsertGPLNotice, ecInsertGPLNotice);
2521
 
  AddDefault(C, 'Insert LGPL notice', srkmecInsertLGPLNotice, ecInsertLGPLNotice
2522
 
    );
2523
 
  AddDefault(C, 'Insert modified LGPL notice', srkmecInsertModifiedLGPLNotice,
2524
 
    ecInsertModifiedLGPLNotice);
 
2539
  AddDefault(C, 'Insert LGPL notice', srkmecInsertLGPLNotice, ecInsertLGPLNotice);
 
2540
  AddDefault(C, 'Insert modified LGPL notice', srkmecInsertModifiedLGPLNotice, ecInsertModifiedLGPLNotice);
 
2541
  AddDefault(C, 'Insert MIT notice', srkmecInsertMITNotice, ecInsertMITNotice);
2525
2542
  AddDefault(C, 'Insert username', lisKMInsertUsername, ecInsertUserName);
2526
 
  AddDefault(C, 'Insert date and time', lisKMInsertDateAndTime, ecInsertDateTime
2527
 
    );
2528
 
  AddDefault(C, 'Insert ChangeLog entry', srkmecInsertChangeLogEntry,
2529
 
    ecInsertChangeLogEntry);
2530
 
  AddDefault(C, 'Insert CVS keyword Author', srkmecInsertCVSAuthor,
2531
 
    ecInsertCVSAuthor);
2532
 
  AddDefault(C, 'Insert CVS keyword Date', srkmecInsertCVSDate, ecInsertCVSDate
2533
 
    );
2534
 
  AddDefault(C, 'Insert CVS keyword Header', srkmecInsertCVSHeader,
2535
 
    ecInsertCVSHeader);
 
2543
  AddDefault(C, 'Insert date and time', lisKMInsertDateAndTime, ecInsertDateTime);
 
2544
  AddDefault(C, 'Insert ChangeLog entry', srkmecInsertChangeLogEntry, ecInsertChangeLogEntry);
 
2545
  AddDefault(C, 'Insert CVS keyword Author', srkmecInsertCVSAuthor, ecInsertCVSAuthor);
 
2546
  AddDefault(C, 'Insert CVS keyword Date', srkmecInsertCVSDate, ecInsertCVSDate);
 
2547
  AddDefault(C, 'Insert CVS keyword Header', srkmecInsertCVSHeader, ecInsertCVSHeader);
2536
2548
  AddDefault(C, 'Insert CVS keyword ID', srkmecInsertCVSID, ecInsertCVSID);
2537
2549
  AddDefault(C, 'Insert CVS keyword Log', srkmecInsertCVSLog, ecInsertCVSLog);
2538
 
  AddDefault(C, 'Insert CVS keyword Name', srkmecInsertCVSName, ecInsertCVSName
2539
 
    );
2540
 
  AddDefault(C, 'Insert CVS keyword Revision', srkmecInsertCVSRevision,
2541
 
    ecInsertCVSRevision); ;
2542
 
  AddDefault(C, 'Insert CVS keyword Source', srkmecInsertCVSSource,
2543
 
    ecInsertCVSSource);
 
2550
  AddDefault(C, 'Insert CVS keyword Name', srkmecInsertCVSName, ecInsertCVSName);
 
2551
  AddDefault(C, 'Insert CVS keyword Revision', srkmecInsertCVSRevision, ecInsertCVSRevision);
 
2552
  AddDefault(C, 'Insert CVS keyword Source', srkmecInsertCVSSource, ecInsertCVSSource);
2544
2553
  AddDefault(C, 'Insert a GUID',srkmecInsertGUID, ecInsertGUID);
 
2554
  AddDefault(C, 'Insert full Filename',srkmecInsertFilename, ecInsertFilename);
2545
2555
 
2546
2556
  // command commands
2547
2557
  C:=Categories[AddCategory('CommandCommands',srkmCatCmdCmd,nil)];
2548
 
  AddDefault(C, 'Undo', lisMenuUndo, ecUndo);
2549
 
  AddDefault(C, 'Redo', lisMenuRedo, ecRedo);
 
2558
  AddDefault(C, 'Undo', lisUndo, ecUndo);
 
2559
  AddDefault(C, 'Redo', lisRedo, ecRedo);
2550
2560
 
2551
2561
  // search & replace
2552
 
  C:=Categories[AddCategory('SearchReplace',srkmCatSearchReplace,
2553
 
                IDECmdScopeSrcEditOnly)];
 
2562
  C:=Categories[AddCategory('SearchReplace',srkmCatSearchReplace,IDECmdScopeSrcEditOnly)];
2554
2563
  AddDefault(C, 'Go to matching bracket', srkmecMatchBracket, ecMatchBracket);
2555
2564
  AddDefault(C, 'Find text', srkmecFind, ecFind);
2556
2565
  AddDefault(C, 'Find next', srkmecFindNext, ecFindNext);
2559
2568
  AddDefault(C, 'Replace text', srkmecReplace, ecReplace);
2560
2569
  AddDefault(C, 'Find incremental', lisKMFindIncremental, ecIncrementalFind);
2561
2570
  AddDefault(C, 'Go to line number', srkmecGotoLineNumber, ecGotoLineNumber);
2562
 
  AddDefault(C, 'Find next word occurrence', srkmecFindNextWordOccurrence,
2563
 
    ecFindNextWordOccurrence);
2564
 
  AddDefault(C, 'Find previous word occurrence', srkmecFindPrevWordOccurrence,
2565
 
    ecFindPrevWordOccurrence);
 
2571
  AddDefault(C, 'Find next word occurrence', srkmecFindNextWordOccurrence, ecFindNextWordOccurrence);
 
2572
  AddDefault(C, 'Find previous word occurrence', srkmecFindPrevWordOccurrence, ecFindPrevWordOccurrence);
2566
2573
  AddDefault(C, 'Jump back', lisMenuJumpBack, ecJumpBack);
2567
2574
  AddDefault(C, 'Jump forward', lisMenuJumpForward, ecJumpForward);
2568
2575
  AddDefault(C, 'Add jump point', srkmecAddJumpPoint, ecAddJumpPoint);
2569
2576
  AddDefault(C, 'View jump history', lisKMViewJumpHistory, ecViewJumpHistory);
2570
 
  AddDefault(C, 'Jump to next error', lisMenuJumpToNextError, ecJumpToNextError
2571
 
    );
2572
 
  AddDefault(C, 'Jump to previous error', lisMenuJumpToPrevError,
2573
 
    ecJumpToPrevError);
2574
 
  AddDefault(C, 'Open file at cursor', srkmecOpenFileAtCursor,
2575
 
    ecOpenFileAtCursor);
 
2577
  AddDefault(C, 'Jump to next error', lisMenuJumpToNextError, ecJumpToNextError);
 
2578
  AddDefault(C, 'Jump to previous error', lisMenuJumpToPrevError, ecJumpToPrevError);
 
2579
  AddDefault(C, 'Open file at cursor', srkmecOpenFileAtCursor, ecOpenFileAtCursor);
2576
2580
  AddDefault(C,'Procedure List ...',lisPListProcedureList,ecProcedureList);
2577
2581
 
2578
2582
  // folding
2627
2631
  AddDefault(C, 'Toggle marker 9', lisKMToggleMarker9, ecToggleMarker9);
2628
2632
 
2629
2633
  // codetools
2630
 
  C:=Categories[AddCategory('CodeTools',srkmCatCodeTools,IDECmdScopeSrcEditOnly)];
2631
 
  AddDefault(C, 'Code template completion', srkmecAutoCompletion,
2632
 
    ecAutoCompletion);
 
2634
  C:=Categories[AddCategory(CommandCategoryCodeTools,srkmCatCodeTools,IDECmdScopeSrcEditOnly)];
 
2635
  AddDefault(C, 'Code template completion', srkmecAutoCompletion, ecAutoCompletion);
2633
2636
  AddDefault(C, 'Word completion', srkmecWordCompletion, ecWordCompletion);
2634
2637
  AddDefault(C, 'Complete code', srkmecCompletecode, ecCompleteCode);
2635
2638
  AddDefault(C, 'Identifier completion', dlgEdIdComlet, ecIdentCompletion);
2636
2639
  AddDefault(C, 'Rename identifier', srkmecRenameIdentifier, ecRenameIdentifier);
2637
 
  AddDefault(C, 'Find identifier references', srkmecFindIdentifierRefs,
2638
 
    ecFindIdentifierRefs);
 
2640
  AddDefault(C, 'Find identifier references', srkmecFindIdentifierRefs, ecFindIdentifierRefs);
2639
2641
  AddDefault(C, 'Show code context', srkmecShowCodeContext, ecShowCodeContext);
2640
2642
  AddDefault(C, 'Extract proc', srkmecExtractProc, ecExtractProc);
2641
2643
  AddDefault(C, 'Invert assignment', srkmecInvertAssignment, ecInvertAssignment);
2642
2644
  AddDefault(C, 'Syntax check', srkmecSyntaxCheck, ecSyntaxCheck);
2643
 
  AddDefault(C, 'Guess unclosed block', lisMenuGuessUnclosedBlock,
2644
 
    ecGuessUnclosedBlock);
2645
 
  AddDefault(C, 'Guess misplaced $IFDEF', srkmecGuessMisplacedIFDEF,
2646
 
    ecGuessMisplacedIFDEF);
 
2645
  AddDefault(C, 'Guess unclosed block', lisMenuGuessUnclosedBlock, ecGuessUnclosedBlock);
 
2646
  AddDefault(C, 'Guess misplaced $IFDEF', srkmecGuessMisplacedIFDEF, ecGuessMisplacedIFDEF);
2647
2647
  AddDefault(C, 'Check LFM file in editor', lisMenuCheckLFM, ecCheckLFM);
2648
 
  AddDefault(C, 'Find procedure definiton', srkmecFindProcedureDefinition,
2649
 
    ecFindProcedureDefinition);
2650
 
  AddDefault(C, 'Find procedure method', srkmecFindProcedureMethod,
2651
 
    ecFindProcedureMethod);
 
2648
  AddDefault(C, 'Find procedure definiton', srkmecFindProcedureDefinition, ecFindProcedureDefinition);
 
2649
  AddDefault(C, 'Find procedure method', srkmecFindProcedureMethod, ecFindProcedureMethod);
2652
2650
  AddDefault(C, 'Find declaration', srkmecFindDeclaration, ecFindDeclaration);
2653
 
  AddDefault(C, 'Find block other end', srkmecFindBlockOtherEnd,
2654
 
    ecFindBlockOtherEnd);
 
2651
  AddDefault(C, 'Find block other end', srkmecFindBlockOtherEnd, ecFindBlockOtherEnd);
2655
2652
  AddDefault(C, 'Find block start', srkmecFindBlockStart, ecFindBlockStart);
2656
 
  AddDefault(C, 'Goto include directive', lisMenuGotoIncludeDirective,
2657
 
    ecGotoIncludeDirective);
2658
 
  AddDefault(C, 'Show abstract methods', srkmecShowAbstractMethods,
2659
 
    ecShowAbstractMethods);
2660
 
  AddDefault(C, 'Remove empty methods', srkmecRemoveEmptyMethods,
2661
 
    ecRemoveEmptyMethods);
2662
 
  AddDefault(C, 'Remove unused units', srkmecRemoveUnusedUnits,
2663
 
    ecRemoveUnusedUnits);
2664
 
  AddDefault(C, 'Find overloads', srkmecFindOverloads,
2665
 
    ecFindOverloads);
 
2653
  AddDefault(C, 'Goto include directive', lisMenuGotoIncludeDirective, ecGotoIncludeDirective);
 
2654
  AddDefault(C, 'Show abstract methods', srkmecShowAbstractMethods, ecShowAbstractMethods);
 
2655
  AddDefault(C, 'Remove empty methods', srkmecRemoveEmptyMethods, ecRemoveEmptyMethods);
 
2656
  AddDefault(C, 'Remove unused units', srkmecRemoveUnusedUnits, ecRemoveUnusedUnits);
 
2657
  AddDefault(C, 'Add unit to uses section', lisUseUnit, ecUseUnit);
 
2658
  AddDefault(C, 'Find overloads', srkmecFindOverloads, ecFindOverloads);
 
2659
  AddDefault(C, 'Make resource string', srkmecMakeResourceString, ecMakeResourceString);
 
2660
 
 
2661
  // Macro editing
 
2662
  C:=Categories[AddCategory('MacroRecording', srkmCatMacroRecording, IDECmdScopeSrcEditOnly)];
 
2663
  AddDefault(C, 'Record Macro', srkmecSynMacroRecord, ecSynMacroRecord);
 
2664
  AddDefault(C, 'Play Macro', srkmecSynMacroPlay, ecSynMacroPlay);
2666
2665
 
2667
2666
  // Template editing
2668
2667
  C:=Categories[AddCategory('Edit Template', srkmCatTemplateEdit, IDECmdScopeSrcEditOnlyTmplEdit)];
2669
 
  o := TSynPluginTemplateEdit.ConvertBaseToCommand(ecPluginFirst) - ecPluginFirst;
2670
 
  AddDefault(C, 'Edit Template Next Cell', srkmecSynPTmplEdNextCell, ecSynPTmplEdNextCell + o);
2671
 
  AddDefault(C, 'Edit Template Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecSynPTmplEdNextCellSel + o);
2672
 
  AddDefault(C, 'Edit Template Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecSynPTmplEdNextCellRotate + o);
2673
 
  AddDefault(C, 'Edit Template Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecSynPTmplEdNextCellSelRotate + o);
2674
 
  AddDefault(C, 'Edit Template Previous Cell', srkmecSynPTmplEdPrevCell, ecSynPTmplEdPrevCell + o);
2675
 
  AddDefault(C, 'Edit Template Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecSynPTmplEdPrevCellSel + o);
2676
 
  AddDefault(C, 'Edit Template Goto first pos in cell', srkmecSynPTmplEdCellHome, ecSynPTmplEdCellHome + o);
2677
 
  AddDefault(C, 'Edit Template Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecSynPTmplEdCellEnd + o);
2678
 
  AddDefault(C, 'Edit Template Select cell', srkmecSynPTmplEdCellSelect, ecSynPTmplEdCellSelect + o);
2679
 
  AddDefault(C, 'Edit Template Finish', srkmecSynPTmplEdFinish, ecSynPTmplEdFinish + o);
2680
 
  AddDefault(C, 'Edit Template Escape', srkmecSynPTmplEdEscape, ecSynPTmplEdEscape + o);
 
2668
  AddDefault(C, 'Edit Template Next Cell', srkmecSynPTmplEdNextCell, ecIdePTmplEdNextCell);
 
2669
  AddDefault(C, 'Edit Template Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecIdePTmplEdNextCellSel);
 
2670
  AddDefault(C, 'Edit Template Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecIdePTmplEdNextCellRotate);
 
2671
  AddDefault(C, 'Edit Template Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecIdePTmplEdNextCellSelRotate);
 
2672
  AddDefault(C, 'Edit Template Previous Cell', srkmecSynPTmplEdPrevCell, ecIdePTmplEdPrevCell);
 
2673
  AddDefault(C, 'Edit Template Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecIdePTmplEdPrevCellSel);
 
2674
  AddDefault(C, 'Edit Template Goto first pos in cell', srkmecSynPTmplEdCellHome, ecIdePTmplEdCellHome);
 
2675
  AddDefault(C, 'Edit Template Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecIdePTmplEdCellEnd);
 
2676
  AddDefault(C, 'Edit Template Select cell', srkmecSynPTmplEdCellSelect, ecIdePTmplEdCellSelect);
 
2677
  AddDefault(C, 'Edit Template Finish', srkmecSynPTmplEdFinish, ecIdePTmplEdFinish);
 
2678
  AddDefault(C, 'Edit Template Escape', srkmecSynPTmplEdEscape, ecIdePTmplEdEscape);
2681
2679
 
2682
2680
  // Template editing not in cell
2683
2681
  C:=Categories[AddCategory('Edit Template Off', srkmCatTemplateEditOff, IDECmdScopeSrcEditOnlyTmplEditOff)];
2684
 
  o := TSynPluginTemplateEdit.ConvertBaseToCommandOff(ecPluginFirst) - ecPluginFirst;
2685
 
  AddDefault(C, 'Edit Template (off) Next Cell', srkmecSynPTmplEdNextCell, ecSynPTmplEdNextCell + o);
2686
 
  AddDefault(C, 'Edit Template (off) Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecSynPTmplEdNextCellSel + o);
2687
 
  AddDefault(C, 'Edit Template (off) Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecSynPTmplEdNextCellRotate + o);
2688
 
  AddDefault(C, 'Edit Template (off) Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecSynPTmplEdNextCellSelRotate + o);
2689
 
  AddDefault(C, 'Edit Template (off) Previous Cell', srkmecSynPTmplEdPrevCell, ecSynPTmplEdPrevCell + o);
2690
 
  AddDefault(C, 'Edit Template (off) Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecSynPTmplEdPrevCellSel + o);
2691
 
  AddDefault(C, 'Edit Template (off) Goto first pos in cell', srkmecSynPTmplEdCellHome, ecSynPTmplEdCellHome + o);
2692
 
  AddDefault(C, 'Edit Template (off) Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecSynPTmplEdCellEnd + o);
2693
 
  AddDefault(C, 'Edit Template (off) Select cell', srkmecSynPTmplEdCellSelect, ecSynPTmplEdCellSelect + o);
2694
 
  AddDefault(C, 'Edit Template (off) Finish', srkmecSynPTmplEdFinish, ecSynPTmplEdFinish + o);
2695
 
  AddDefault(C, 'Edit Template (off) Escape', srkmecSynPTmplEdEscape, ecSynPTmplEdEscape + o);
2696
 
 
 
2682
  AddDefault(C, 'Edit Template (off) Next Cell', srkmecSynPTmplEdNextCell, ecIdePTmplEdOutNextCell);
 
2683
  AddDefault(C, 'Edit Template (off) Next Cell (all selected)', srkmecSynPTmplEdNextCellSel, ecIdePTmplEdOutNextCellSel);
 
2684
  AddDefault(C, 'Edit Template (off) Next Cell (rotate)', srkmecSynPTmplEdNextCellRotate, ecIdePTmplEdOutNextCellRotate);
 
2685
  AddDefault(C, 'Edit Template (off) Next Cell (rotate / all selected)', srkmecSynPTmplEdNextCellSelRotate, ecIdePTmplEdOutNextCellSelRotate);
 
2686
  AddDefault(C, 'Edit Template (off) Previous Cell', srkmecSynPTmplEdPrevCell, ecIdePTmplEdOutPrevCell);
 
2687
  AddDefault(C, 'Edit Template (off) Previous Cell (all selected)', srkmecSynPTmplEdPrevCellSel, ecIdePTmplEdOutPrevCellSel);
 
2688
  AddDefault(C, 'Edit Template (off) Goto first pos in cell', srkmecSynPTmplEdCellHome, ecIdePTmplEdOutCellHome);
 
2689
  AddDefault(C, 'Edit Template (off) Goto last pos in cell', srkmecSynPTmplEdCellEnd, ecIdePTmplEdOutCellEnd);
 
2690
  AddDefault(C, 'Edit Template (off) Select cell', srkmecSynPTmplEdCellSelect, ecIdePTmplEdOutCellSelect);
 
2691
  AddDefault(C, 'Edit Template (off) Finish', srkmecSynPTmplEdFinish, ecIdePTmplEdOutFinish);
 
2692
  AddDefault(C, 'Edit Template (off) Escape', srkmecSynPTmplEdEscape, ecIdePTmplEdOutEscape);
2697
2693
 
2698
2694
  // Syncro editing
2699
2695
  C:=Categories[AddCategory('Syncro Edit', srkmCatSyncroEdit, IDECmdScopeSrcEditOnlySyncroEdit)];
2700
 
  o := TSynPluginSyncroEdit.ConvertBaseToCommand(ecPluginFirst) - ecPluginFirst;
2701
 
  AddDefault(C, 'Edit Syncro Next Cell', srkmecSynPSyncroEdNextCell, ecSynPSyncroEdNextCell + o);
2702
 
  AddDefault(C, 'Edit Syncro Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecSynPSyncroEdNextCellSel + o);
2703
 
  AddDefault(C, 'Edit Syncro Previous Cell', srkmecSynPSyncroEdPrevCell, ecSynPSyncroEdPrevCell + o);
2704
 
  AddDefault(C, 'Edit Syncro Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecSynPSyncroEdPrevCellSel + o);
2705
 
  AddDefault(C, 'Edit Syncro Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecSynPSyncroEdCellHome + o);
2706
 
  AddDefault(C, 'Edit Syncro Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecSynPSyncroEdCellEnd + o);
2707
 
  AddDefault(C, 'Edit Syncro Select cell', srkmecSynPSyncroEdCellSelect, ecSynPSyncroEdCellSelect + o);
2708
 
  AddDefault(C, 'Edit Syncro Escape', srkmecSynPSyncroEdEscape, ecSynPSyncroEdEscape + o);
 
2696
  AddDefault(C, 'Edit Syncro Next Cell', srkmecSynPSyncroEdNextCell, ecIdePSyncroEdNextCell);
 
2697
  AddDefault(C, 'Edit Syncro Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecIdePSyncroEdNextCellSel);
 
2698
  AddDefault(C, 'Edit Syncro Previous Cell', srkmecSynPSyncroEdPrevCell, ecIdePSyncroEdPrevCell);
 
2699
  AddDefault(C, 'Edit Syncro Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecIdePSyncroEdPrevCellSel);
 
2700
  AddDefault(C, 'Edit Syncro Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecIdePSyncroEdCellHome);
 
2701
  AddDefault(C, 'Edit Syncro Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecIdePSyncroEdCellEnd);
 
2702
  AddDefault(C, 'Edit Syncro Select cell', srkmecSynPSyncroEdCellSelect, ecIdePSyncroEdCellSelect);
 
2703
  AddDefault(C, 'Edit Syncro Escape', srkmecSynPSyncroEdEscape, ecIdePSyncroEdEscape);
2709
2704
 
2710
2705
  // Syncro editing not in cell
2711
2706
  C:=Categories[AddCategory('Syncro Edit Off', srkmCatSyncroEditOff, IDECmdScopeSrcEditOnlySyncroEditOff)];
2712
 
  o := TSynPluginSyncroEdit.ConvertBaseToCommandOff(ecPluginFirst) - ecPluginFirst;
2713
 
  AddDefault(C, 'Edit Syncro (off) Next Cell', srkmecSynPSyncroEdNextCell, ecSynPSyncroEdNextCell + o);
2714
 
  AddDefault(C, 'Edit Syncro (off) Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecSynPSyncroEdNextCellSel + o);
2715
 
  AddDefault(C, 'Edit Syncro (off) Previous Cell', srkmecSynPSyncroEdPrevCell, ecSynPSyncroEdPrevCell + o);
2716
 
  AddDefault(C, 'Edit Syncro (off) Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecSynPSyncroEdPrevCellSel + o);
2717
 
  AddDefault(C, 'Edit Syncro (off) Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecSynPSyncroEdCellHome + o);
2718
 
  AddDefault(C, 'Edit Syncro (off) Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecSynPSyncroEdCellEnd + o);
2719
 
  AddDefault(C, 'Edit Syncro (off) Select cell', srkmecSynPSyncroEdCellSelect, ecSynPSyncroEdCellSelect + o);
2720
 
  AddDefault(C, 'Edit Syncro (off) Escape', srkmecSynPSyncroEdEscape, ecSynPSyncroEdEscape + o);
 
2707
  AddDefault(C, 'Edit Syncro (off) Next Cell', srkmecSynPSyncroEdNextCell, ecIdePSyncroEdOutNextCell);
 
2708
  AddDefault(C, 'Edit Syncro (off) Next Cell (all selected)', srkmecSynPSyncroEdNextCellSel, ecIdePSyncroEdOutNextCellSel);
 
2709
  AddDefault(C, 'Edit Syncro (off) Previous Cell', srkmecSynPSyncroEdPrevCell, ecIdePSyncroEdOutPrevCell);
 
2710
  AddDefault(C, 'Edit Syncro (off) Previous Cell (all selected)', srkmecSynPSyncroEdPrevCellSel, ecIdePSyncroEdOutPrevCellSel);
 
2711
  AddDefault(C, 'Edit Syncro (off) Goto first pos in cell', srkmecSynPSyncroEdCellHome, ecIdePSyncroEdOutCellHome);
 
2712
  AddDefault(C, 'Edit Syncro (off) Goto last pos in cell', srkmecSynPSyncroEdCellEnd, ecIdePSyncroEdOutCellEnd);
 
2713
  AddDefault(C, 'Edit Syncro (off) Select cell', srkmecSynPSyncroEdCellSelect, ecIdePSyncroEdOutCellSelect);
 
2714
  AddDefault(C, 'Edit Syncro (off) Escape', srkmecSynPSyncroEdEscape, ecIdePSyncroEdOutEscape);
2721
2715
 
2722
2716
  // Syncro editing still selecting
2723
2717
  C:=Categories[AddCategory('Syncro Edit Sel', srkmCatSyncroEditSel, IDECmdScopeSrcEditOnlySyncroEditSel)];
2724
 
  o := TSynPluginSyncroEdit.ConvertBaseToCommandSel(ecPluginFirst) - ecPluginFirst;
2725
 
  AddDefault(C, 'Edit Syncro (sel) Start', srkmecSynPSyncroEdStart, ecSynPSyncroEdStart + o);
 
2718
  AddDefault(C, 'Edit Syncro (sel) Start', srkmecSynPSyncroEdStart, ecIdePSyncroEdSelStart);
2726
2719
 
2727
2720
  // source notebook - without menu items in the IDE bar
2728
 
  C:=Categories[AddCategory('SourceNotebook',srkmCatSrcNoteBook,
2729
 
                IDECmdScopeSrcEdit)];
 
2721
  C:=Categories[AddCategory('SourceNotebook',srkmCatSrcNoteBook,IDECmdScopeSrcEdit)];
2730
2722
  AddDefault(C, 'Go to next editor', srkmecNextEditor, ecNextEditor);
2731
2723
  AddDefault(C, 'Go to prior editor', srkmecPrevEditor, ecPrevEditor);
2732
2724
  AddDefault(C, 'Add break point', srkmecToggleBreakPoint, ecToggleBreakPoint);
2733
 
  AddDefault(C, 'Remove break point', srkmecRemoveBreakPoint, ecRemoveBreakPoint
2734
 
    );
 
2725
  AddDefault(C, 'Remove break point', srkmecRemoveBreakPoint, ecRemoveBreakPoint);
2735
2726
  AddDefault(C, 'Move editor left', srkmecMoveEditorLeft, ecMoveEditorLeft);
2736
2727
  AddDefault(C, 'Move editor right', srkmecMoveEditorRight, ecMoveEditorRight);
2737
2728
  AddDefault(C, 'Move editor leftmost', srkmecMoveEditorLeftmost, ecMoveEditorLeftmost);
2762
2753
 
2763
2754
  // file menu
2764
2755
  C:=Categories[AddCategory('FileMenu',srkmCatFileMenu,nil)];
2765
 
  AddDefault(C, 'New', lisMenuTemplateNew, ecNew);
 
2756
  AddDefault(C, 'New', lisNew, ecNew);
2766
2757
  AddDefault(C, 'NewUnit', lisKMNewUnit, ecNewUnit);
2767
2758
  AddDefault(C, 'NewForm', lisMenuNewForm, ecNewForm);
2768
 
  AddDefault(C, 'Open', lisHintOpen, ecOpen);
 
2759
  AddDefault(C, 'Open', lisOpen, ecOpen);
2769
2760
  AddDefault(C, 'Revert', lisMenuRevert, ecRevert);
2770
 
  AddDefault(C, 'Save', srkmecSave, ecSave);
 
2761
  AddDefault(C, 'Save', lisSave, ecSave);
2771
2762
  AddDefault(C, 'SaveAs', lisKMSaveAs, ecSaveAs);
2772
2763
  AddDefault(C, 'SaveAll', lisKMSaveAll, ecSaveAll);
2773
 
  AddDefault(C, 'Close', lisMenuClose, ecClose);
2774
 
  AddDefault(C, 'CloseAll', lisKMCloseAll, ecCloseAll);
 
2764
  AddDefault(C, 'Close', lisClose, ecClose);
 
2765
  AddDefault(C, 'CloseAll', lisCloseAll, ecCloseAll);
2775
2766
  AddDefault(C, 'Clean Directory', lisClDirCleanDirectory, ecCleanDirectory);
2776
 
  AddDefault(C, 'Restart', lisMenuRestart, ecRestart);
2777
 
  AddDefault(C, 'Quit', srkmecQuit, ecQuit);
 
2767
  AddDefault(C, 'Restart', lisRestart, ecRestart);
 
2768
  AddDefault(C, 'Quit', lisQuit, ecQuit);
2778
2769
 
2779
2770
  // view menu
2780
2771
  C:=Categories[AddCategory(CommandCategoryViewName,srkmCatViewMenu,nil)];
2781
 
  AddDefault(C, 'Toggle view Object Inspector', lisKMToggleViewObjectInspector,
2782
 
    ecToggleObjectInsp);
2783
 
  AddDefault(C, 'Toggle view Source Editor', lisKMToggleViewSourceEditor,
2784
 
    ecToggleSourceEditor);
2785
 
  AddDefault(C, 'Toggle view Code Explorer', lisKMToggleViewCodeExplorer,
2786
 
    ecToggleCodeExpl);
2787
 
  AddDefault(C, 'Toggle view Documentation Editor',
2788
 
    lisKMToggleViewDocumentationEditor, ecToggleFPDocEditor);
2789
 
  AddDefault(C, 'Toggle view Messages', lisKMToggleViewMessages,
2790
 
    ecToggleMessages);
2791
 
  AddDefault(C, 'Toggle view Search Results', lisKMToggleViewSearchResults,
2792
 
    ecToggleSearchResults);
 
2772
  AddDefault(C, 'Toggle view Object Inspector', lisKMToggleViewObjectInspector, ecToggleObjectInsp);
 
2773
  AddDefault(C, 'Toggle view Source Editor', lisKMToggleViewSourceEditor, ecToggleSourceEditor);
 
2774
  AddDefault(C, 'Toggle view Code Explorer', lisKMToggleViewCodeExplorer, ecToggleCodeExpl);
 
2775
  AddDefault(C, 'Toggle view Documentation Editor', lisKMToggleViewDocumentationEditor, ecToggleFPDocEditor);
 
2776
  AddDefault(C, 'Toggle view Messages', lisKMToggleViewMessages, ecToggleMessages);
 
2777
  AddDefault(C, 'View Components', srkmecViewComponents, ecViewComponents);
 
2778
  AddDefault(C, 'Toggle view Search Results', lisKMToggleViewSearchResults, ecToggleSearchResults);
2793
2779
  AddDefault(C, 'Toggle view Watches', lisKMToggleViewWatches, ecToggleWatches);
2794
 
  AddDefault(C, 'Toggle view Breakpoints', lisKMToggleViewBreakpoints,
2795
 
    ecToggleBreakPoints);
2796
 
  AddDefault(C, 'Toggle view Local Variables', lisKMToggleViewLocalVariables,
2797
 
    ecToggleLocals);
2798
 
  AddDefault(C, 'Toggle view Call Stack', lisKMToggleViewCallStack,
2799
 
    ecToggleCallStack);
2800
 
  AddDefault(C, 'Toggle view Registers', lisKMToggleViewRegisters,
2801
 
    ecToggleRegisters);
2802
 
  AddDefault(C, 'Toggle view Assembler', lisKMToggleViewAssembler,
2803
 
    ecToggleAssembler);
 
2780
  AddDefault(C, 'Toggle view Breakpoints', lisKMToggleViewBreakpoints, ecToggleBreakPoints);
 
2781
  AddDefault(C, 'Toggle view Local Variables', lisKMToggleViewLocalVariables, ecToggleLocals);
 
2782
  AddDefault(C, 'Toggle view Threads', lisKMToggleViewThreads, ecViewThreads);
 
2783
  if HasConsoleSupport then
 
2784
  AddDefault(C, 'Toggle view Terminal Output', lisKMToggleViewPseudoTerminal, ecViewPseudoTerminal);
 
2785
  AddDefault(C, 'Toggle view Call Stack', lisKMToggleViewCallStack, ecToggleCallStack);
 
2786
  AddDefault(C, 'Toggle view Registers', lisKMToggleViewRegisters, ecToggleRegisters);
 
2787
  AddDefault(C, 'Toggle view Assembler', lisKMToggleViewAssembler, ecToggleAssembler);
2804
2788
  AddDefault(C, 'Toggle view Event Log', lisKMToggleViewDebugEvents, ecToggleDebugEvents);
2805
 
  AddDefault(C, 'Toggle view Debugger Output', lisKMToggleViewDebuggerOutput,
2806
 
    ecToggleDebuggerOut);
2807
 
  AddDefault(C, 'View Units', lisHintViewUnits, ecViewUnits);
2808
 
  AddDefault(C, 'View Forms', lisHintViewForms, ecViewForms);
2809
 
  AddDefault(C, 'View Unit Dependencies', lisMenuViewUnitDependencies,
2810
 
    ecViewUnitDependencies);
 
2789
  AddDefault(C, 'Toggle view Debugger Output', lisKMToggleViewDebuggerOutput, ecToggleDebuggerOut);
 
2790
  AddDefault(C, 'Toggle view Debug History', lisKMToggleViewHistory, ecViewHistory);
 
2791
  AddDefault(C, 'View Unit Dependencies', lisMenuViewUnitDependencies, ecViewUnitDependencies);
2811
2792
  AddDefault(C, 'View Unit Info', lisKMViewUnitInfo, ecViewUnitInfo);
2812
 
  AddDefault(C, 'Toggle between Unit and Form', lisKMToggleBetweenUnitAndForm,
2813
 
    ecToggleFormUnit);
2814
 
  AddDefault(C, 'View Anchor Editor', lisMenuViewAnchorEditor,
2815
 
    ecViewAnchorEditor);
2816
 
  AddDefault(C, 'Toggle view component palette',
2817
 
    lisKMToggleViewComponentPalette, ecToggleCompPalette);
2818
 
  AddDefault(C, 'Toggle view IDE speed buttons',
2819
 
    lisKMToggleViewIDESpeedButtons, ecToggleIDESpeedBtns);
 
2793
  AddDefault(C, 'Toggle between Unit and Form', lisKMToggleBetweenUnitAndForm, ecToggleFormUnit);
 
2794
  AddDefault(C, 'View Anchor Editor', lisMenuViewAnchorEditor, ecViewAnchorEditor);
 
2795
  AddDefault(C, 'View Tab Order', lisMenuViewTabOrder, ecViewTabOrder);
 
2796
  AddDefault(C, 'Toggle view component palette', lisKMToggleViewComponentPalette, ecToggleCompPalette);
 
2797
  AddDefault(C, 'Toggle view IDE speed buttons', lisKMToggleViewIDESpeedButtons, ecToggleIDESpeedBtns);
2820
2798
 
2821
2799
  // project menu
2822
2800
  C:=Categories[AddCategory('ProjectMenu',srkmCatProjectMenu,nil)];
2823
2801
  AddDefault(C, 'New project', lisKMNewProject, ecNewProject);
2824
 
  AddDefault(C, 'New project from file', lisKMNewProjectFromFile,
2825
 
    ecNewProjectFromFile);
 
2802
  AddDefault(C, 'New project from file', lisKMNewProjectFromFile, ecNewProjectFromFile);
2826
2803
  AddDefault(C, 'Open project', lisOpenProject2, ecOpenProject);
2827
2804
  AddDefault(C, 'Close project', lisKMCloseProject, ecCloseProject);
2828
2805
  AddDefault(C, 'Save project', lisKMSaveProject, ecSaveProject);
2829
2806
  AddDefault(C, 'Save project as', lisKMSaveProjectAs, ecSaveProjectAs);
2830
2807
  AddDefault(C, 'Publish project', lisKMPublishProject, ecPublishProject);
2831
 
  AddDefault(C, 'Project Inspector', lisMenuProjectInspector, ecProjectInspector
2832
 
    );
2833
 
  AddDefault(C, 'Add active unit to project', lisKMAddActiveUnitToProject,
2834
 
    ecAddCurUnitToProj);
2835
 
  AddDefault(C, 'Remove active unit from project',
2836
 
    lisKMRemoveActiveUnitFromProject, ecRemoveFromProj);
2837
 
  AddDefault(C, 'View project source', lisKMViewProjectSource,
2838
 
    ecViewProjectSource);
2839
 
  AddDefault(C, 'View project options', lisKMViewProjectOptions,
2840
 
    ecProjectOptions);
 
2808
  AddDefault(C, 'Project Inspector', lisMenuProjectInspector, ecProjectInspector);
 
2809
  AddDefault(C, 'Add editor file to Project', lisMenuAddToProject, ecAddCurUnitToProj);
 
2810
  AddDefault(C, 'Remove active unit from project', lisKMRemoveActiveFileFromProject, ecRemoveFromProj);
 
2811
  AddDefault(C, 'View Units', lisHintViewUnits, ecViewProjectUnits);
 
2812
  AddDefault(C, 'View Forms', lisHintViewForms, ecViewProjectForms);
 
2813
  AddDefault(C, 'View project source', lisKMViewProjectSource, ecViewProjectSource);
 
2814
  AddDefault(C, 'View project options', lisKMViewProjectOptions, ecProjectOptions);
2841
2815
 
2842
2816
  // run menu
2843
2817
  C:=Categories[AddCategory('RunMenu',srkmCatRunMenu,nil)];
 
2818
  AddDefault(C, 'Compile project/program', lisKMCompileProjectProgram, ecCompile);
2844
2819
  AddDefault(C, 'Build project/program', lisKMBuildProjectProgram, ecBuild);
2845
 
  AddDefault(C, 'Build all files of project/program',
2846
 
    lisKMBuildAllFilesOfProjectProgram, ecBuildAll);
2847
 
  AddDefault(C, 'Quick compile, no linking', lisKMQuickCompileNoLinking,
2848
 
    ecQuickCompile);
 
2820
  AddDefault(C, 'Quick compile, no linking', lisKMQuickCompileNoLinking, ecQuickCompile);
 
2821
  AddDefault(C, 'Clean up and compile project/program', lisKMCleanUpCompiled, ecCleanUpCompiled);
2849
2822
  AddDefault(C, 'Abort building', lisKMAbortBuilding, ecAbortBuild);
2850
2823
  AddDefault(C, 'Run program', lisKMRunProgram, ecRun);
2851
2824
  AddDefault(C, 'Pause program', lisKMPauseProgram, ecPause);
2863
2836
  AddDefault(C, 'Run parameters', dlgRunParameters, ecRunParameters);
2864
2837
  AddDefault(C, 'Build File', lisMenuBuildFile, ecBuildFile);
2865
2838
  AddDefault(C, 'Run File', lisMenuRunFile, ecRunFile);
2866
 
  AddDefault(C, 'Config "Build File"', Format(lisKMConfigBuildFile, ['"', '"']
2867
 
    ), ecConfigBuildFile);
 
2839
  AddDefault(C, 'Config "Build File"', Format(lisKMConfigBuildFile, ['"', '"']), ecConfigBuildFile);
2868
2840
  AddDefault(C, 'Inspect', lisKMInspect, ecInspect);
2869
2841
  AddDefault(C, 'Evaluate/Modify', lisKMEvaluateModify, ecEvaluate);
2870
2842
  AddDefault(C, 'Add watch', lisKMAddWatch, ecAddWatch);
 
2843
  AddDefault(C, 'Add source breakpoint', lisKMAddBpSource, ecAddBpSource);
 
2844
  AddDefault(C, 'Add address breakpoint', lisKMAddBpAddress, ecAddBpAddress);
 
2845
  AddDefault(C, 'Add data watchpoint', lisKMAddBpWatchPoint, ecAddBpDataWatch);
2871
2846
 
2872
2847
  // components menu
2873
2848
  C:=Categories[AddCategory('Components',srkmCatPackageMenu,nil)];
2874
2849
  AddDefault(C, 'New package', lisKMNewPackage, ecNewPackage);
2875
2850
  AddDefault(C, 'Open package', lisCompPalOpenPackage, ecOpenPackage);
2876
2851
  AddDefault(C, 'Open package file', lisKMOpenPackageFile, ecOpenPackageFile);
2877
 
  AddDefault(C, 'Open package of current unit', lisMenuOpenPackageOfCurUnit,
2878
 
    ecOpenPackageOfCurUnit);
2879
 
  AddDefault(C, 'Add active unit to a package', lisMenuAddCurUnitToPkg,
2880
 
    ecAddCurUnitToPkg);
2881
 
  AddDefault(C, 'Package graph', lisKMPackageGraph, ecPackageGraph);
2882
 
  AddDefault(C, 'Configure installed packages',
2883
 
    lisKMConfigureInstalledPackages, ecEditInstallPkgs);
2884
 
  AddDefault(C, 'Configure custom components', lisKMConfigureCustomComponents,
2885
 
    ecConfigCustomComps);
 
2852
  AddDefault(C, 'Open package of current unit', lisMenuOpenPackageOfCurUnit, ecOpenPackageOfCurUnit);
 
2853
  AddDefault(C, 'Add active unit to a package', lisMenuAddCurFileToPkg, ecAddCurFileToPkg);
 
2854
  AddDefault(C, 'Add new component to a package', lisMenuPkgNewPackageComponent, ecNewPkgComponent);
 
2855
  AddDefault(C, 'Package graph', lisMenuPackageGraph, ecPackageGraph);
 
2856
  AddDefault(C, 'Configure installed packages', lisInstallUninstallPackages, ecEditInstallPkgs);
 
2857
  AddDefault(C, 'Configure custom components', lisKMConfigureCustomComponents, ecConfigCustomComps);
2886
2858
 
2887
2859
  // tools menu
2888
2860
  C:=Categories[AddCategory(CommandCategoryToolMenuName,srkmCatToolMenu,nil)];
2889
 
  AddDefault(C, 'External Tools settings', lisKMExternalToolsSettings,
2890
 
    ecExtToolSettings);
 
2861
//  C:=Categories[AddCategory('EnvironmentMenu',srkmCatEnvMenu,nil)];
 
2862
  AddDefault(C, 'General environment options', srkmecEnvironmentOptions, ecEnvironmentOptions);
 
2863
  AddDefault(C, 'Rescan FPC source directory', lisMenuRescanFPCSourceDirectory, ecRescanFPCSrcDir);
 
2864
  AddDefault(C, 'Edit Code Templates', lisKMEditCodeTemplates, ecEditCodeTemplates);
 
2865
  AddDefault(C, 'CodeTools defines editor', lisKMCodeToolsDefinesEditor, ecCodeToolsDefinesEd);
 
2866
 
 
2867
  AddDefault(C, 'External Tools settings', lisKMExternalToolsSettings, ecExtToolSettings);
 
2868
  AddDefault(C, 'Example Projects', lisKMExampleProjects, ecManageExamples);
2891
2869
  AddDefault(C, 'Build Lazarus', lisMenuBuildLazarus, ecBuildLazarus);
2892
 
  AddDefault(C, 'Configure "Build Lazarus"', Format(lisConfigureBuildLazarus, [
2893
 
    '"', '"']), ecConfigBuildLazarus);
2894
 
  AddDefault(C, 'Make resource string', srkmecMakeResourceString,
2895
 
    ecMakeResourceString);
 
2870
  AddDefault(C, 'Configure "Build Lazarus"',
 
2871
    Format(lisConfigureBuildLazarus, ['"', '"']), ecConfigBuildLazarus);
2896
2872
  AddDefault(C, 'Diff editor files', lisKMDiffEditorFiles, ecDiff);
2897
 
  AddDefault(C, 'Convert DFM file to LFM', lisKMConvertDFMFileToLFM,
2898
 
    ecConvertDFM2LFM);
 
2873
  AddDefault(C, 'Convert DFM file to LFM', lisKMConvertDFMFileToLFM, ecConvertDFM2LFM);
2899
2874
  AddDefault(C, 'Convert Delphi unit to Lazarus unit',
2900
2875
    lisKMConvertDelphiUnitToLazarusUnit, ecConvertDelphiUnit);
2901
2876
  AddDefault(C, 'Convert Delphi project to Lazarus project',
2902
2877
    lisKMConvertDelphiProjectToLazarusProject, ecConvertDelphiProject);
2903
2878
  AddDefault(C, 'Convert Delphi package to Lazarus package',
2904
2879
    lisKMConvertDelphiPackageToLazarusPackage, ecConvertDelphiPackage);
2905
 
  AddDefault(C, 'Convert encoding',
2906
 
    lisConvertEncodingOfProjectsPackages, ecConvertEncoding);
2907
 
 
2908
 
  // environment menu
2909
 
  C:=Categories[AddCategory('EnvironmentMenu',srkmCatEnvMenu,nil)];
2910
 
  AddDefault(C, 'General environment options', srkmecEnvironmentOptions,
2911
 
    ecEnvironmentOptions);
2912
 
  AddDefault(C, 'Edit Code Templates', lisKMEditCodeTemplates,
2913
 
    ecEditCodeTemplates);
2914
 
  AddDefault(C, 'CodeTools defines editor', lisKMCodeToolsDefinesEditor,
2915
 
    ecCodeToolsDefinesEd);
2916
 
  AddDefault(C, 'Rescan FPC source directory', lisMenuRescanFPCSourceDirectory,
2917
 
    ecRescanFPCSrcDir);
 
2880
  AddDefault(C, 'Convert encoding', lisConvertEncodingOfProjectsPackages, ecConvertEncoding);
 
2881
  // window menu
 
2882
//  C:=Categories[AddCategory('WindowMenu',srkmCarWindowMenu,nil)];
 
2883
  AddDefault(C, 'Editor Window Manager', lisEditorWindowManager, ecWindowManager);
2918
2884
 
2919
2885
  // help menu
2920
2886
  C:=Categories[AddCategory('HelpMenu',srkmCarHelpMenu,nil)];
2921
2887
  AddDefault(C, 'About Lazarus', lisAboutLazarus, ecAboutLazarus);
2922
2888
  AddDefault(C, 'Online Help', lisMenuOnlineHelp, ecOnlineHelp);
2923
 
  AddDefault(C, 'Context sensitive help', lisKMContextSensitiveHelp,
2924
 
    ecContextHelp);
2925
 
  AddDefault(C, 'Edit context sensitive help', lisKMEditContextSensitiveHelp,
2926
 
    ecEditContextHelp);
 
2889
  AddDefault(C, 'Context sensitive help', lisKMContextSensitiveHelp, ecContextHelp);
 
2890
  AddDefault(C, 'Edit context sensitive help', lisKMEditContextSensitiveHelp, ecEditContextHelp);
2927
2891
  AddDefault(C, 'Reporting a bug', srkmecReportingBug, ecReportingBug);
 
2892
  AddDefault(C, 'Focus hint', lisFocusHint, ecFocusHint);
2928
2893
 
2929
2894
  // designer  - without menu items in the IDE bar (at least not directly)
2930
2895
  C:=Categories[AddCategory('Designer',lisKeyCatDesigner,IDECmdScopeDesignerOnly)];
2934
2899
    lisKMCutSelectedComponentsToClipboard, ecDesignerCut);
2935
2900
  AddDefault(C, 'Paste Components from clipboard',
2936
2901
    lisKMPasteComponentsFromClipboard, ecDesignerPaste);
2937
 
  AddDefault(C, 'Select parent component', lisDsgSelectParentComponent,
2938
 
    ecDesignerSelectParent);
2939
 
  AddDefault(C, 'Move component to front', lisDsgOrderMoveToFront,
2940
 
    ecDesignerMoveToFront);
2941
 
  AddDefault(C, 'Move component to back', lisDsgOrderMoveToBack,
2942
 
    ecDesignerMoveToBack);
2943
 
  AddDefault(C, 'Move component one forward', lisDsgOrderForwardOne,
2944
 
    ecDesignerForwardOne);
2945
 
  AddDefault(C, 'Move component one back', lisDsgOrderBackOne, ecDesignerBackOne
2946
 
    );
 
2902
  AddDefault(C, 'Select parent component', lisDsgSelectParentComponent, ecDesignerSelectParent);
 
2903
  AddDefault(C, 'Move component to front', lisDsgOrderMoveToFront, ecDesignerMoveToFront);
 
2904
  AddDefault(C, 'Move component to back', lisDsgOrderMoveToBack, ecDesignerMoveToBack);
 
2905
  AddDefault(C, 'Move component one forward', lisDsgOrderForwardOne, ecDesignerForwardOne);
 
2906
  AddDefault(C, 'Move component one back', lisDsgOrderBackOne, ecDesignerBackOne);
2947
2907
 
2948
2908
  // object inspector - without menu items in the IDE bar (at least no direct)
2949
 
  C:=Categories[AddCategory('Object Inspector',lisKeyCatObjInspector,
2950
 
                            IDECmdScopeObjectInspectorOnly)];
 
2909
  C:=Categories[AddCategory('Object Inspector',lisKeyCatObjInspector,IDECmdScopeObjectInspectorOnly)];
2951
2910
 
2952
2911
  // custom keys (for experts, task groups, dynamic menu items, etc)
2953
2912
  C:=Categories[AddCategory(CommandCategoryCustomName,lisKeyCatCustom,nil)];
2965
2924
  fCategories.Clear;
2966
2925
end;
2967
2926
 
2968
 
function TKeyCommandRelationList.GetRelation(
2969
 
  Index:integer):TKeyCommandRelation;
 
2927
function TKeyCommandRelationList.GetRelation(Index:integer):TKeyCommandRelation;
2970
2928
begin
2971
 
  if (Index<0) or (Index>=Count) then
2972
 
  begin
2973
 
    DebugLn('[TKeyCommandRelationList.GetRelation] Index out of bounds '
2974
 
      ,IntToStr(Index),' Count=',IntToStr(Count));
2975
 
    // creates an exception, that gdb catches:
2976
 
    if (Index div ((Index and 1) div 10000))=0 then ;
2977
 
  end;
 
2929
  Assert((Index>=0) and (Index<Count), Format('[TKeyCommandRelationList.GetRelation] '
 
2930
    + 'Index (%d) out of bounds. Count=%d', [Index, Count]));
2978
2931
  Result:= TKeyCommandRelation(FRelations[Index]);
2979
2932
end;
2980
2933
 
2988
2941
  Result:=FRelations.Count;
2989
2942
end;
2990
2943
 
2991
 
function TKeyCommandRelationList.Add(Category: TIDECommandCategory;
2992
 
  const Name, LocalizedName: string;
2993
 
  Command:word; TheKeyA, TheKeyB: TIDEShortCut;
2994
 
  const OnExecuteMethod: TNotifyEvent;
2995
 
  const OnExecuteProc: TNotifyProcedure):integer;
 
2944
function TKeyCommandRelationList.SetKeyCommandToLoadedValues(Cmd: TKeyCommandRelation
 
2945
  ): TLoadedKeyCommand;
2996
2946
var
2997
 
  LoadedKey: TLoadedKeyCommand;
2998
2947
  AVLNode: TAvgLvlTreeNode;
2999
2948
begin
3000
 
  AVLNode:=fLoadedKeyCommands.FindKey(Pointer(Name),@CompareNameWithLoadedKeyCommand);
 
2949
  AVLNode:=fLoadedKeyCommands.FindKey(Pointer(Cmd.Name),@CompareNameWithLoadedKeyCommand);
3001
2950
  if AVLNode=nil then begin
3002
2951
    // new key
3003
 
    LoadedKey:=TLoadedKeyCommand.Create;
3004
 
    LoadedKey.Name:=Name;
3005
 
    LoadedKey.ShortcutA:=TheKeyA;
3006
 
    LoadedKey.ShortcutB:=TheKeyB;
3007
 
    LoadedKey.DefaultShortcutA:=TheKeyA;
3008
 
    LoadedKey.DefaultShortcutB:=TheKeyB;
3009
 
    fLoadedKeyCommands.Add(LoadedKey);
 
2952
    Result:=TLoadedKeyCommand.Create;
 
2953
    Result.Name:=Cmd.Name;
 
2954
    Result.DefaultShortcutA:=Cmd.ShortcutA;
 
2955
    Result.DefaultShortcutB:=Cmd.ShortcutB;
 
2956
    Result.ShortcutA:=Result.DefaultShortcutA;
 
2957
    Result.ShortcutB:=Result.DefaultShortcutB;
 
2958
    fLoadedKeyCommands.Add(Result);
3010
2959
  end else begin
3011
 
    LoadedKey:=TLoadedKeyCommand(AVLNode.Data);
3012
 
    LoadedKey.DefaultShortcutA:=TheKeyA;
3013
 
    LoadedKey.DefaultShortcutB:=TheKeyB;
3014
 
    // old key, values were loaded
3015
 
    // (key is registered after loading keymapping)
3016
 
    TheKeyA:=LoadedKey.ShortcutA;
3017
 
    TheKeyB:=LoadedKey.ShortcutB;
 
2960
    Result:=TLoadedKeyCommand(AVLNode.Data);
 
2961
    Result.DefaultShortcutA:=Cmd.ShortcutA;
 
2962
    Result.DefaultShortcutB:=Cmd.ShortcutB;
 
2963
    // old key, values were loaded (key is registered after loading keymapping)
 
2964
    Cmd.ShortcutA:=Result.ShortcutA;
 
2965
    Cmd.ShortcutB:=Result.ShortcutB;
3018
2966
  end;
3019
 
  Result:=FRelations.Add(TKeyCommandRelation.Create(Category,Name,LocalizedName,
3020
 
                        Command,TheKeyA,TheKeyB,OnExecuteMethod,OnExecuteProc));
3021
2967
end;
3022
2968
 
3023
2969
function TKeyCommandRelationList.AddDefault(Category: TIDECommandCategory;
3024
2970
  const Name, LocalizedName: string; Command: word): integer;
3025
2971
var
3026
 
  TheKeyA, TheKeyB: TIDEShortCut;
 
2972
  CmdRel: TKeyCommandRelation;
3027
2973
begin
3028
 
  GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB);
3029
 
  {if Command=ecBlockIndent then begin
3030
 
    debugln('TKeyCommandRelationList.AddDefault A ',KeyAndShiftStateToEditorKeyString(TheKeyA),' ',KeyAndShiftStateToEditorKeyString(TheKeyB));
3031
 
  end;}
3032
 
  Result:=Add(Category,Name,LocalizedName,Command,TheKeyA,TheKeyB);
 
2974
  CmdRel:=TKeyCommandRelation.Create(Category, Name, LocalizedName, Command);
 
2975
  CmdRel.GetDefaultKeyForCommand;
 
2976
  CmdRel.DefaultShortcutA:=CmdRel.ShortcutA;
 
2977
  CmdRel.DefaultShortcutB:=CmdRel.ShortcutB;
 
2978
  SetKeyCommandToLoadedValues(CmdRel);
 
2979
  Result:=FRelations.Add(CmdRel);
3033
2980
end;
3034
2981
 
3035
2982
procedure TKeyCommandRelationList.SetExtToolCount(NewCount: integer);
3036
 
var i: integer;
 
2983
var
 
2984
  i: integer;
3037
2985
  ExtToolCat: TIDECommandCategory;
3038
2986
  ExtToolRelation: TKeyCommandRelation;
3039
2987
  ToolName: string;
 
2988
  cmd: word;
 
2989
  CmdRel: TKeyCommandRelation;
3040
2990
begin
3041
2991
  if NewCount=fExtToolCount then exit;
3042
2992
  ExtToolCat:=FindCategoryByName(CommandCategoryToolMenuName);
3044
2994
    // increase available external tool commands
3045
2995
    while NewCount>fExtToolCount do begin
3046
2996
      ToolName:=Format(srkmecExtTool,[fExtToolCount]);
3047
 
      Add(ExtToolCat,ToolName,ToolName,
3048
 
           ecExtToolFirst+fExtToolCount,CleanIDEShortCut,CleanIDEShortCut);
 
2997
      cmd:=ecExtToolFirst+fExtToolCount;
 
2998
      CmdRel:=TKeyCommandRelation.Create(ExtToolCat, ToolName, ToolName, cmd);
 
2999
      FRelations.Add(CmdRel);
3049
3000
      inc(fExtToolCount);
3050
3001
    end;
3051
3002
  end else begin
3081
3032
    while (p<=length(NewValue)) and (not (NewValue[p] in ['0'..'9']))
3082
3033
      do inc(p);
3083
3034
    while (p<=length(NewValue)) and (NewValue[p] in ['0'..'9'])
3084
 
    and (Result<$10000)do begin
 
3035
    and (Result<$10000) do begin
3085
3036
      Result:=Result*10+ord(NewValue[p])-ord('0');
3086
3037
      inc(p);
3087
3038
    end;
3145
3096
  if FileVersion>5 then begin
3146
3097
    Cnt:=XMLConfig.GetValue(Path+'Count',0);
3147
3098
    // load all keys from the config, this may be more than the current relations
 
3099
    // for example because the command is not yet registered.
3148
3100
    for a:=1 to Cnt do begin
3149
3101
      SubPath:=Path+'Item'+IntToStr(a)+'/';
3150
3102
      Name:=XMLConfig.GetValue(SubPath+'Name','');
3160
3112
      end;
3161
3113
      Load(SubPath+'KeyA/',LoadedKey.ShortcutA,LoadedKey.DefaultShortcutA);
3162
3114
      Load(SubPath+'KeyB/',LoadedKey.ShortcutB,LoadedKey.DefaultShortcutB);
 
3115
      //if Name='ShowUnitDictionary' then
 
3116
      //  debugln(['TKeyCommandRelationList.LoadFromXMLConfig ',LoadedKey.AsString]);
3163
3117
    end;
3164
3118
    // apply
3165
3119
    for a:=0 to FRelations.Count-1 do begin
3312
3266
function TKeyCommandRelationList.Find(Key: TIDEShortCut;
3313
3267
  IDEWindowClass: TCustomFormClass): TKeyCommandRelation;
3314
3268
var
3315
 
  a:integer;
 
3269
  i:integer;
3316
3270
begin
3317
3271
  Result:=nil;
3318
3272
  //debugln(['TKeyCommandRelationList.Find START ',DbgSName(IDEWindowClass)]);
3319
3273
  //if IDEWindowClass=nil then RaiseGDBException('');
3320
3274
  if Key.Key1=VK_UNKNOWN then exit;
3321
 
  for a:=0 to FRelations.Count-1 do
3322
 
    with Relations[a] do begin
 
3275
  for i:=0 to FRelations.Count-1 do
 
3276
    with Relations[i] do begin
3323
3277
      //if Command=ecDesignerSelectParent then
3324
3278
      //  debugln('TKeyCommandRelationList.Find A ',Category.Scope.Name,' ',dbgsName(IDEWindowClass),' ',dbgs(IDECmdScopeDesignerOnly.IDEWindowClassCount),' ',dbgsName(IDECmdScopeDesignerOnly.IDEWindowClasses[0]));
3325
3279
      //debugln(['TKeyCommandRelationList.Find ',Name,' HasScope=',Category.Scope<>nil,' ',KeyAndShiftStateToEditorKeyString(ShortcutA),' ',KeyAndShiftStateToEditorKeyString(Key),' ',(Category.Scope<>nil)      and (not Category.Scope.HasIDEWindowClass(IDEWindowClass))]);
3333
3287
      or ((ShortcutB.Key1=Key.Key1) and (ShortcutB.Shift1=Key.Shift1) and
3334
3288
          (ShortcutB.Key2=Key.Key2) and (ShortcutB.Shift2=Key.Shift2)) then
3335
3289
      begin
3336
 
        Result:=Relations[a];
 
3290
        Result:=Relations[i];
3337
3291
        exit;
3338
3292
      end;
3339
3293
    end;
3340
3294
end;
3341
3295
 
3342
 
function TKeyCommandRelationList.FindIDECommand(ACommand: word
3343
 
  ): TIDECommand;
 
3296
function TKeyCommandRelationList.FindIDECommand(ACommand: word): TIDECommand;
3344
3297
begin
3345
3298
  Result:=FindByCommand(ACommand);
3346
3299
end;
3347
3300
 
3348
 
function TKeyCommandRelationList.FindByCommand(
3349
 
  ACommand: word):TKeyCommandRelation;
3350
 
var a:integer;
 
3301
function TKeyCommandRelationList.FindByCommand(ACommand: word):TKeyCommandRelation;
 
3302
var i:integer;
3351
3303
begin
3352
3304
  Result:=nil;
3353
 
  for a:=0 to FRelations.Count-1 do with Relations[a] do
 
3305
  for i:=0 to FRelations.Count-1 do with Relations[i] do
3354
3306
    if (Command=ACommand) then begin
3355
 
      Result:=Relations[a];
 
3307
      Result:=Relations[i];
3356
3308
      exit;
3357
3309
    end;
3358
3310
end;
3359
3311
 
3360
 
procedure TKeyCommandRelationList.AssignTo(
3361
 
  ASynEditKeyStrokes: TSynEditKeyStrokes; IDEWindowClass: TCustomFormClass);
 
3312
procedure TKeyCommandRelationList.AssignTo(ASynEditKeyStrokes: TSynEditKeyStrokes;
 
3313
  IDEWindowClass: TCustomFormClass; ACommandOffsetOffset: Integer = 0);
3362
3314
var
3363
 
  a,b,MaxKeyCnt,KeyCnt:integer;
 
3315
  i,j,MaxKeyCnt,KeyCnt:integer;
3364
3316
  Key: TSynEditKeyStroke;
3365
3317
  CurRelation: TKeyCommandRelation;
 
3318
  ccid: Word;
 
3319
  POUsed: Boolean;
3366
3320
begin
 
3321
  (* ACommandOffsetOffset
 
3322
     The IDE defines int's own fixed value command-id for plugins.
 
3323
     Map them to the plugin ID
 
3324
     - ecIdePTmplEdOutNextCell and ecIdePTmplEdNextCell both map to ecSynPTmplEdNextCell
 
3325
     - which maps to "ecPluginFirst + n", as many others.
 
3326
     But the IDE requires unique values.
 
3327
     The unique values in the plugin (+ KeyOffset) can not be used, a they are not at fixed numbers
 
3328
  *)
 
3329
  POUsed := ASynEditKeyStrokes.UsePluginOffset;
3367
3330
  try
3368
 
    ASynEditKeyStrokes.UsePluginOffset := True;
3369
 
    for a:=0 to FRelations.Count-1 do begin
3370
 
      CurRelation:=Relations[a];
 
3331
    ASynEditKeyStrokes.UsePluginOffset := False;
 
3332
    for i:=0 to FRelations.Count-1 do begin
 
3333
      CurRelation:=Relations[i];
3371
3334
      if (CurRelation.ShortcutA.Key1=VK_UNKNOWN)
3372
3335
      or ((IDEWindowClass<>nil) and (CurRelation.Category.Scope<>nil)
3373
3336
          and (not CurRelation.Category.Scope.HasIDEWindowClass(IDEWindowClass)))
3378
3341
      else
3379
3342
        MaxKeyCnt:=2;
3380
3343
      KeyCnt:=1;
3381
 
      b:=ASynEditKeyStrokes.Count-1;
 
3344
      j:=ASynEditKeyStrokes.Count-1;
3382
3345
      // replace keys
3383
 
      while b>=0 do begin
3384
 
        Key:=ASynEditKeyStrokes[b];
3385
 
        if Key.Command=CurRelation.Command then begin
 
3346
      while j>=0 do begin
 
3347
        Key:=ASynEditKeyStrokes[j];
 
3348
        ccid := CurRelation.Command;
 
3349
        if (ccid >= ecFirstPlugin) and (ccid < ecLastPlugin) then
 
3350
          ccid := ccid + ACommandOffsetOffset;
 
3351
        if Key.Command=ccid then begin
3386
3352
          if KeyCnt>MaxKeyCnt then begin
3387
3353
            // All keys with this command are already defined
3388
3354
            // -> delete this one
3404
3370
        end
3405
3371
        else
3406
3372
        if MaxKeyCnt > 0 then begin
3407
 
          // Key with a different ecCommand => Remove if it has a conflicting keystroke(s)
 
3373
          // Key with i different ecCommand => Remove if it has i conflicting keystroke(s)
3408
3374
          if ( (CurRelation.ShortcutA.Key1 <> VK_UNKNOWN) and
3409
3375
               (Key.Key = CurRelation.ShortcutA.Key1)     and
3410
3376
               (Key.Shift = CurRelation.ShortcutA.Shift1) and
3422
3388
          then
3423
3389
            Key.Free;
3424
3390
        end;
3425
 
        dec(b);
 
3391
        dec(j);
3426
3392
      end;
3427
3393
      // add missing keys
3428
3394
      while KeyCnt<=MaxKeyCnt do begin
3429
3395
        Key:=ASynEditKeyStrokes.Add;
3430
 
        Key.Command:=CurRelation.Command;
 
3396
        ccid := CurRelation.Command;
 
3397
        if (ccid >= ecFirstPlugin) and (ccid < ecLastPlugin) then
 
3398
          ccid := ccid + ACommandOffsetOffset;
 
3399
        Key.Command:=ccid;
3431
3400
        if KeyCnt=1 then begin
3432
3401
          Key.Key:=CurRelation.ShortcutA.Key1;
3433
3402
          Key.Shift:=CurRelation.ShortcutA.Shift1;
3443
3412
      end;
3444
3413
    end;
3445
3414
  finally
3446
 
    ASynEditKeyStrokes.UsePluginOffset := False;
 
3415
    ASynEditKeyStrokes.UsePluginOffset := POUsed;
3447
3416
  end;
3448
3417
end;
3449
3418
 
3465
3434
      OurCategory.Scope:=OtherCategory.Scope;
3466
3435
    end else begin
3467
3436
      //DebugLn('TKeyCommandRelationList.Assign Add new category: ',OtherCategory.Name);
3468
 
      // add
3469
3437
      AddCategory(OtherCategory.Name,OtherCategory.Description,OtherCategory.Scope);
3470
3438
    end;
3471
3439
  end;
3512
3480
procedure TKeyCommandRelationList.LoadScheme(const SchemeName: string);
3513
3481
var
3514
3482
  i: Integer;
3515
 
  CurRelation: TKeyCommandRelation;
3516
3483
  NewScheme: TKeyMapScheme;
3517
 
  TheKeyA, TheKeyB: TIDEShortCut;
3518
3484
begin
3519
3485
  NewScheme:=KeySchemeNameToSchemeType(SchemeName);
3520
 
  // set all keys to new scheme
3521
 
  for i:=0 to Count-1 do begin
3522
 
    CurRelation:=Relations[i];
3523
 
    case NewScheme of
3524
 
    kmsLazarus: GetDefaultKeyForCommand(CurRelation.Command,TheKeyA,TheKeyB);
3525
 
    kmsClassic: GetDefaultKeyForClassicScheme(CurRelation.Command,
3526
 
                                              TheKeyA,TheKeyB);
3527
 
    kmsMacOSXApple: GetDefaultKeyForMacOSXScheme(CurRelation.Command,TheKeyA,TheKeyB);
3528
 
    kmsMacOSXLaz: GetDefaultKeyForMacOSXLazScheme(CurRelation.Command,TheKeyA,TheKeyB);
3529
 
    kmsCustom: ;
3530
 
    end;
3531
 
    CurRelation.ShortcutA:=TheKeyA;
3532
 
    CurRelation.ShortcutB:=TheKeyB;
3533
 
  end;
 
3486
  for i:=0 to Count-1 do                  // set all keys to new scheme
 
3487
    Relations[i].MapShortcut(NewScheme);
3534
3488
end;
3535
3489
 
3536
 
function TKeyCommandRelationList.CreateUniqueCategoryName(const AName: string
3537
 
  ): string;
 
3490
function TKeyCommandRelationList.CreateUniqueCategoryName(const AName: string): string;
3538
3491
begin
3539
3492
  Result:=AName;
3540
3493
  if FindCategoryByName(Result)=nil then exit;
3543
3496
    Result:=CreateNextIdentifier(Result);
3544
3497
end;
3545
3498
 
3546
 
function TKeyCommandRelationList.CreateUniqueCommandName(const AName: string
3547
 
  ): string;
 
3499
function TKeyCommandRelationList.CreateUniqueCommandName(const AName: string): string;
3548
3500
begin
3549
3501
  Result:=AName;
3550
3502
  if FindCommandByName(Result)=nil then exit;
3562
3514
function TKeyCommandRelationList.CreateCategory(Parent: TIDECommandCategory;
3563
3515
  const AName, Description: string; Scope: TIDECommandScope): TIDECommandCategory;
3564
3516
begin
3565
 
  Result:=Categories[
3566
 
                AddCategory(CreateUniqueCategoryName(AName),Description,Scope)];
 
3517
  Result:=Categories[AddCategory(CreateUniqueCategoryName(AName),Description,Scope)];
3567
3518
end;
3568
3519
 
3569
3520
function TKeyCommandRelationList.CreateCommand(Category: TIDECommandCategory;
3570
 
  const AName, Description: string; const TheShortcutA,
3571
 
  TheShortcutB: TIDEShortCut;
 
3521
  const AName, Description: string;
 
3522
  const TheShortcutA, TheShortcutB: TIDEShortCut;
3572
3523
  const OnExecuteMethod: TNotifyEvent;
3573
3524
  const OnExecuteProc: TNotifyProcedure): TIDECommand;
3574
3525
var
3575
3526
  NewName: String;
 
3527
  cmd: word;
 
3528
  CmdRel: TKeyCommandRelation;
3576
3529
begin
3577
3530
  NewName:=CreateUniqueCommandName(AName);
3578
 
  Result:=Relations[Add(Category as TKeyCommandCategory,
3579
 
                        NewName,Description,
3580
 
                        CreateNewCommandID,TheShortcutA,TheShortcutB,
3581
 
                        OnExecuteMethod,OnExecuteProc)];
 
3531
  cmd:=CreateNewCommandID;
 
3532
  CmdRel:=TKeyCommandRelation.Create(Category as TKeyCommandCategory,
 
3533
                      NewName, Description, cmd,
 
3534
                      TheShortcutA, TheShortcutB, OnExecuteMethod, OnExecuteProc);
 
3535
  SetKeyCommandToLoadedValues(CmdRel);
 
3536
  FRelations.Add(CmdRel);
 
3537
  Result:=CmdRel;
3582
3538
end;
3583
3539
 
3584
 
function TKeyCommandRelationList.GetCategory(Index: integer
3585
 
  ): TIDECommandCategory;
 
3540
function TKeyCommandRelationList.GetCategory(Index: integer): TIDECommandCategory;
3586
3541
begin
3587
3542
  Result:=TIDECommandCategory(fCategories[Index]);
3588
3543
end;
3599
3554
                          TheScope));
3600
3555
end;
3601
3556
 
3602
 
function TKeyCommandRelationList.Add(Category: TIDECommandCategory;
3603
 
  Command: TIDECommand): integer;
3604
 
begin
3605
 
  Result:=Add(Category,
3606
 
              Command.Name,Command.LocalizedName,
3607
 
              Command.Command,Command.ShortcutA,Command.ShortcutB,
3608
 
              Command.OnExecute,Command.OnExecuteProc);
3609
 
  //if Command.Command=12000 then
3610
 
  //  debugln('TKeyCommandRelationList.Add A ',Command.Name,' ',KeyAndShiftStateToEditorKeyString(Command.ShortcutA),' ',KeyAndShiftStateToEditorKeyString(Relations[Result].ShortcutA),' ',dbgs(Command));
3611
 
end;
3612
 
 
3613
3557
function TKeyCommandRelationList.FindCategoryByName(const CategoryName: string
3614
3558
  ): TIDECommandCategory;
3615
3559
var i: integer;
3634
3578
  Result:=nil;
3635
3579
end;
3636
3580
 
 
3581
function TKeyCommandRelationList.FindCommandsByShortCut(
 
3582
  const ShortCutMask: TIDEShortCut; IDEWindowClass: TCustomFormClass): TFPList;
 
3583
 
 
3584
  function KeyFits(const aShortCut: TIDEShortCut): boolean;
 
3585
  begin
 
3586
    if (ShortCutMask.Key1=VK_UNKNOWN) then
 
3587
      exit(true); // fits all
 
3588
    Result:=((aShortCut.Key1=ShortCutMask.Key1) and (aShortCut.Shift1=ShortCutMask.Shift1))
 
3589
      and ((aShortCut.Key2=VK_UNKNOWN)
 
3590
        or (ShortCutMask.Key2=VK_UNKNOWN)
 
3591
        or ((aShortCut.Key2=ShortCutMask.Key2) and (aShortCut.Shift2=ShortCutMask.Shift2)));
 
3592
  end;
 
3593
 
 
3594
var
 
3595
  i: Integer;
 
3596
begin
 
3597
  Result:=TFPList.Create;
 
3598
  if (ShortCutMask.Key1<>VK_UNKNOWN)
 
3599
  and (not IsValidIDECommandKey(ShortCutMask.Key1)) then
 
3600
    exit;
 
3601
  for i:=0 to FRelations.Count-1 do
 
3602
    with Relations[i] do begin
 
3603
      if (IDEWindowClass<>nil)
 
3604
      and (Category.Scope<>nil)
 
3605
      and (not Category.Scope.HasIDEWindowClass(IDEWindowClass)) then continue;
 
3606
      if KeyFits(ShortcutA) or KeyFits(ShortcutB)
 
3607
      then
 
3608
        Result.Add(Relations[i]);
 
3609
    end;
 
3610
end;
 
3611
 
3637
3612
function TKeyCommandRelationList.TranslateKey(Key: word; Shift: TShiftState;
3638
3613
  IDEWindowClass: TCustomFormClass; UseLastKey: boolean): word;
3639
3614
{ If UseLastKey = true then only search for commmands with one key.
3648
3623
  //debugln(['TKeyCommandRelationList.TranslateKey ',DbgSName(IDEWindowClass)]);
3649
3624
  //if IDEWindowClass=nil then DumpStack;
3650
3625
  Result:=ecNone;
3651
 
  case Key of
3652
 
  VK_UNDEFINED,VK_UNKNOWN,
3653
 
  VK_CONTROL,VK_LCONTROL,VK_RCONTROL,
3654
 
  VK_SHIFT,VK_LSHIFT,VK_RSHIFT,
3655
 
  VK_LBUTTON,VK_MBUTTON,VK_RBUTTON,
3656
 
  VK_LWIN,VK_RWIN:
3657
 
    begin
3658
 
      //debugln(['TKeyCommandRelationList.TranslateKey ignoring ',dbgs(Key)]);
3659
 
      exit;
3660
 
    end;
 
3626
  if not IsValidIDECommandKey(Key) then
 
3627
  begin
 
3628
    //debugln(['TKeyCommandRelationList.TranslateKey ignoring ',dbgs(Key)]);
 
3629
    exit;
3661
3630
  end;
3662
3631
  if UseLastKey and (fLastKey.Key1<>VK_UNKNOWN) then begin
3663
3632
    // the last key had no command
3688
3657
  end;
3689
3658
end;
3690
3659
 
3691
 
function TKeyCommandRelationList.IndexOf(ARelation: TKeyCommandRelation
3692
 
  ): integer;
 
3660
function TKeyCommandRelationList.IndexOf(ARelation: TKeyCommandRelation): integer;
3693
3661
begin
3694
3662
  Result:=fRelations.IndexOf(ARelation);
3695
3663
end;
3696
3664
 
3697
 
function TKeyCommandRelationList.CommandToShortCut(ACommand: word
3698
 
  ): TShortCut;
 
3665
function TKeyCommandRelationList.CommandToShortCut(ACommand: word): TShortCut;
3699
3666
var ARelation: TKeyCommandRelation;
3700
3667
begin
3701
3668
  ARelation:=FindByCommand(ACommand);