diff --git a/ide/keymapping.pp b/ide/keymapping.pp index 9ce1592d15..76bfd5780a 100644 --- a/ide/keymapping.pp +++ b/ide/keymapping.pp @@ -73,25 +73,9 @@ type { TKeyCommandRelation } TKeyCommandRelation = class(TIDECommand) - private + protected procedure SetShortcutA(const AValue: TIDEShortCut); override; procedure SetShortcutB(const AValue: TIDEShortCut); override; - procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState; - NewKeyB: word; NewShiftB: TShiftState); - procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState); - procedure SetCombo(NewKey1A: word; NewShift1A: TShiftState; - NewKey1B: word; NewShift1B: TShiftState; - NewKey2A: word; NewShift2A: TShiftState; - NewKey2B: word; NewShift2B: TShiftState); - procedure SetCombo(NewKey1A: word; NewShift1A: TShiftState; - NewKey1B: word; NewShift1B: TShiftState); - procedure MapShortcut(AScheme: TKeyMapScheme); - procedure GetDefaultKeyForCommand; - procedure GetDefaultKeyForWindowsScheme; - procedure GetDefaultKeyForClassicScheme; - procedure GetDefaultKeyForMacOSXScheme; - procedure GetDefaultKeyForMacOSXLazScheme; - protected public function GetLocalizedName: string; override; end; @@ -127,13 +111,12 @@ type function GetRelationCount: integer; function AddCategory(const Name, Description: string; TheScope: TIDECommandScope): integer; - function GetNewOrExisting(Category: TIDECommandCategory; - Command: TIDECommand): TKeyCommandRelation; - function GetNewOrExisting(Category: TIDECommandCategory; + function Add(Category: TIDECommandCategory; Command: TIDECommand):integer; + function Add(Category: TIDECommandCategory; const Name, LocalizedName: string; Command: word; TheKeyA, TheKeyB: TIDEShortCut; const OnExecuteMethod: TNotifyEvent = nil; - const OnExecuteProc: TNotifyProcedure = nil): TKeyCommandRelation; + const OnExecuteProc: TNotifyProcedure = nil):integer; function AddDefault(Category: TIDECommandCategory; const Name, LocalizedName: string; Command: word):integer; @@ -186,7 +169,19 @@ function KeyAndShiftStateToEditorKeyString(const Key: TIDEShortCut): String; function FindKeymapConflicts(Keymap: TKeyCommandRelationList; Protocol: TStrings; out Index1, Index2: integer): integer; function EditorCommandToDescriptionString(cmd: word): String; +function EditorCommandLocalizedName(cmd: word; + const DefaultName: string): string; +procedure GetDefaultKeyForCommand(Command: word; + out TheKeyA, TheKeyB: TIDEShortCut); +procedure GetDefaultKeyForWindowsScheme(Command: word; + out TheKeyA, TheKeyB: TIDEShortCut); +procedure GetDefaultKeyForClassicScheme(Command: word; + var TheKeyA, TheKeyB: TIDEShortCut); +procedure GetDefaultKeyForMacOSXScheme(Command: word; + var TheKeyA, TheKeyB: TIDEShortCut); +procedure GetDefaultKeyForMacOSXLazScheme(Command: word; + var TheKeyA, TheKeyB: TIDEShortCut); function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme; function ShiftStateToCfgStr(Shift: TShiftState): string; @@ -202,6 +197,1657 @@ implementation const KeyMappingFormatVersion = 6; +function EditorCommandLocalizedName(cmd: word; + const DefaultName: string): string; +begin + Result:=EditorCommandToDescriptionString(cmd); + if Result=srkmecunknown then + Result:=DefaultName; +end; + +procedure GetDefaultKeyForCommand(Command: word; out TheKeyA, + TheKeyB: TIDEShortCut); +begin + {$IFDEF LCLCarbon} + GetDefaultKeyForMacOSXScheme(Command,TheKeyA,TheKeyB); + {$ELSE} + GetDefaultKeyForWindowsScheme(Command,TheKeyA,TheKeyB); + {$ENDIF} +end; + +procedure GetDefaultKeyForWindowsScheme(Command: word; + out TheKeyA, TheKeyB: TIDEShortCut); + + procedure SetResult(NewKeyA: word; NewShiftA: TShiftState; + NewKeyB: word; NewShiftB: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKeyA,NewShiftA,VK_UNKNOWN,[]); + TheKeyB:=IDEShortCut(NewKeyB,NewShiftB,VK_UNKNOWN,[]); + end; + + procedure SetResult2( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState; + NewKey2A: word; NewShift2A: TShiftState; + NewKey2B: word; NewShift2B: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B); + TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B); + end; + + procedure SetResult2( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState); + begin + SetResult2(NewKey1A,NewShift1A,NewKey1B,NewShift1B,VK_UNKNOWN,[],VK_UNKNOWN,[]); + end; + +// procedure SetResult(NewKeyA: word; NewShiftA: TShiftState); +// begin +// SetResult(NewKeyA,NewShiftA,VK_UNKNOWN,[]); +// end; + +begin + case Command of + // moving + ecWordLeft: SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecWordRight: SetResult(VK_RIGHT, [ssCtrl],VK_UNKNOWN,[]); // WS c + ecLineStart: SetResult(VK_HOME, [],VK_UNKNOWN,[]); + ecLineEnd: SetResult(VK_END, [],VK_UNKNOWN,[]); + ecPageUp: SetResult(VK_PRIOR, [],VK_UNKNOWN,[]); // ,VK_R,[SSCtrl],VK_UNKNOWN,[]); + ecPageDown: SetResult(VK_NEXT, [],VK_UNKNOWN,[]); // ,VK_W,[SSCtrl],VK_UNKNOWN,[]); + ecPageLeft: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPageRight: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPageTop: SetResult(VK_PRIOR, [ssCtrl],VK_UNKNOWN,[]); + ecPageBottom: SetResult(VK_NEXT, [ssCtrl],VK_UNKNOWN,[]); + ecEditorTop: SetResult(VK_HOME,[ssCtrl],VK_UNKNOWN,[]); + ecEditorBottom: SetResult(VK_END,[ssCtrl],VK_UNKNOWN,[]); + ecScrollUp: SetResult(VK_UP, [ssCtrl],VK_UNKNOWN,[]); + ecScrollDown: SetResult(VK_DOWN, [ssCtrl],VK_UNKNOWN,[]); + ecScrollLeft: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecScrollRight: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + + // selection + ecCopy: SetResult(VK_C,[ssCtrl],VK_Insert,[ssCtrl]); + ecCut: SetResult(VK_X,[ssCtrl],VK_Delete,[ssShift]); + ecPaste: SetResult(VK_V,[ssCtrl],VK_Insert,[ssShift]); + ecNormalSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecColumnSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecLineSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelWordLeft: SetResult(VK_LEFT,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecSelWordRight: SetResult(VK_RIGHT,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecSelLineStart: SetResult(VK_HOME,[ssShift],VK_UNKNOWN,[]); + ecSelLineEnd: SetResult(VK_END,[ssShift],VK_UNKNOWN,[]); + ecSelPageTop: SetResult(VK_PRIOR, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelPageBottom: SetResult(VK_NEXT, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelEditorTop: SetResult(VK_HOME, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelEditorBottom: SetResult(VK_END, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelectAll: SetResult(VK_A,[ssCtrl],VK_UNKNOWN,[]); + ecSelectToBrace: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectCodeBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectWord: SetResult2(VK_K,[SSCtrl],VK_T,[]); + ecSelectLine: SetResult2(VK_K,[SSCtrl],VK_L,[]); + ecSelectParagraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectionUpperCase: SetResult2(VK_K,[SSCtrl],VK_N,[]); + ecSelectionLowerCase: SetResult2(VK_K,[SSCtrl],VK_O,[]); + ecSelectionSwapCase: SetResult2(VK_K,[SSCtrl],VK_P,[]); + ecSelectionTabs2Spaces: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionEnclose: SetResult(VK_N, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelectionComment: SetResult(VK_V, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelectionUncomment: SetResult(VK_U, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecToggleComment: SetResult(VK_W, [ssShift,ssCtrl], VK_OEM_2, [ssCtrl]); + ecSelectionEncloseIFDEF: SetResult(VK_D, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelectionSort: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionBreakLines: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + + ecBlockSetBegin : SetResult2(VK_K,[ssCtrl],VK_B,[], VK_K,[ssCtrl],VK_B,[ssCtrl]); + ecBlockSetEnd : SetResult2(VK_K,[ssCtrl],VK_K,[], VK_K,[ssCtrl],VK_K,[ssCtrl]); + ecBlockToggleHide : SetResult2(VK_K,[ssCtrl],VK_H,[], VK_K,[ssCtrl],VK_H,[ssCtrl]); + ecBlockHide : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockShow : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockMove : SetResult2(VK_K,[ssCtrl],VK_V,[], VK_K,[ssCtrl],VK_V,[ssCtrl]); + ecBlockCopy : SetResult2(VK_K,[ssCtrl],VK_C,[], VK_K,[ssCtrl],VK_C,[ssCtrl]); + ecBlockDelete : SetResult2(VK_K,[ssCtrl],VK_Y,[], VK_K,[ssCtrl],VK_Y,[ssCtrl]); + ecBlockGotoBegin : SetResult2(VK_Q,[ssCtrl],VK_B,[ssCtrl], VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockGotoEnd : SetResult2(VK_Q,[ssCtrl],VK_K,[ssCtrl], VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // column mode selection + ecColSelUp: SetResult(VK_UP, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelDown: SetResult(VK_DOWN, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelLeft: SetResult(VK_LEFT, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelRight: SetResult(VK_RIGHT, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelPageDown: SetResult(VK_NEXT, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelPageBottom: SetResult(VK_NEXT, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + ecColSelPageUp: SetResult(VK_PRIOR, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelPageTop: SetResult(VK_PRIOR, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + ecColSelLineStart: SetResult(VK_HOME, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelLineEnd: SetResult(VK_END, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelEditorTop: SetResult(VK_HOME, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + ecColSelEditorBottom: SetResult(VK_END, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + + // editing + ecBlockIndent: SetResult2(VK_I,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_I,[]); + ecBlockUnindent: SetResult2(VK_U,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_U,[]); + ecDeleteLastChar: SetResult(VK_BACK, [],VK_BACK, [ssShift]); // ctrl H used for scroll window. + ecDeleteChar: SetResult(VK_DELETE,[],VK_UNKNOWN,[]); // ctrl G conflicts with GO + ecDeleteWord: SetResult(VK_T,[ssCtrl],VK_UNKNOWN,[]); + ecDeleteLastWord: SetResult(VK_BACK,[ssCtrl],VK_UNKNOWN,[]); + ecDeleteBOL: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecDeleteEOL: SetResult2(VK_Y,[ssCtrl,ssShift],VK_UNKNOWN,[],VK_Q,[ssCtrl],VK_Y,[]); + ecDeleteLine: SetResult(VK_Y,[ssCtrl],VK_UNKNOWN,[]); + ecClearAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecLineBreak: SetResult(VK_RETURN,[],VK_UNKNOWN,[]); + ecInsertLine: SetResult(VK_N,[ssCtrl],VK_UNKNOWN,[]); + ecInsertCharacter: SetResult(VK_M,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecInsertGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertModifiedLGPLNotice: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertUserName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertDateTime: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertChangeLogEntry: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSAuthor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSDate: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSHeader: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSID: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSLog: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSName: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSRevision: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertGUID: SetResult(VK_G, [ssCtrl,ssShift],VK_UNKNOWN,[]); + ecInsertFilename: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // command commands + ecUndo: SetResult(VK_Z,[ssCtrl],VK_UNKNOWN,[]); + ecRedo: SetResult(VK_Z,[ssCtrl,ssShift],VK_UNKNOWN,[]); + + // search & replace + ecMatchBracket: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFind: SetResult2(VK_F,[SSCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_F,[]); + ecFindNext: SetResult2(VK_F3,[],VK_UNKNOWN,[],VK_L,[SSCtrl],VK_UNKNOWN,[]); + ecFindPrevious: SetResult(VK_F3,[ssShift],VK_UNKNOWN,[]); + ecFindInFiles: SetResult(VK_F,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecReplace: SetResult2(VK_R,[SSCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_A,[]); + ecIncrementalFind: SetResult(VK_E,[SSCtrl],VK_UNKNOWN,[]); + ecGotoLineNumber: SetResult2(VK_G,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_G,[]); + ecFindNextWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindPrevWordOccurrence: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecJumpBack: SetResult(VK_H,[ssCtrl],VK_UNKNOWN,[]); + ecJumpForward: SetResult(VK_H,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecAddJumpPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecJumpToPrevError: SetResult(VK_F8,[ssCtrl, ssShift],VK_UNKNOWN,[]); + ecJumpToNextError: SetResult(VK_F8,[ssCtrl],VK_UNKNOWN,[]); + ecOpenFileAtCursor: SetResult2(VK_RETURN,[ssCtrl],VK_UNKNOWN,[]); + ecProcedureList: SetResult(VK_G, [ssAlt],VK_UNKNOWN,[]); + + // marker + ecSetFreeBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNextBookmark: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoMarker0: SetResult2(VK_0,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_0,[]); + ecGotoMarker1: SetResult2(VK_1,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_1,[]); + ecGotoMarker2: SetResult2(VK_2,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_2,[]); + ecGotoMarker3: SetResult2(VK_3,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_3,[]); + ecGotoMarker4: SetResult2(VK_4,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_4,[]); + ecGotoMarker5: SetResult2(VK_5,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_5,[]); + ecGotoMarker6: SetResult2(VK_6,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_6,[]); + ecGotoMarker7: SetResult2(VK_7,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_7,[]); + ecGotoMarker8: SetResult2(VK_8,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_8,[]); + ecGotoMarker9: SetResult2(VK_9,[ssCtrl],VK_UNKNOWN,[],VK_Q,[SSCtrl],VK_9,[]); + ecToggleMarker0: SetResult2(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_0,[]); + ecToggleMarker1: SetResult2(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_1,[]); + ecToggleMarker2: SetResult2(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_2,[]); + ecToggleMarker3: SetResult2(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_3,[]); + ecToggleMarker4: SetResult2(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_4,[]); + ecToggleMarker5: SetResult2(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_5,[]); + ecToggleMarker6: SetResult2(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_6,[]); + ecToggleMarker7: SetResult2(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_7,[]); + ecToggleMarker8: SetResult2(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_8,[]); + ecToggleMarker9: SetResult2(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_9,[]); + ecSetMarker0: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker1: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker2: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker3: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker4: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker5: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker6: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker7: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker8: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSetMarker9: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // codetools + ecAutoCompletion: SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[]); + ecWordCompletion: SetResult(VK_W,[ssCtrl],VK_UNKNOWN,[]); + ecCompleteCode: SetResult(VK_C,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecIdentCompletion: SetResult(VK_SPACE,[ssCtrl],VK_UNKNOWN,[]); + ecShowCodeContext: SetResult(VK_SPACE,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecExtractProc: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindIdentifierRefs: SetResult(VK_I,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecRenameIdentifier: SetResult(VK_F2,[],VK_E,[ssShift,ssCtrl]); + ecInvertAssignment: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSyntaxCheck: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGuessUnclosedBlock: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGuessMisplacedIFDEF: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDFM2LFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCheckLFM: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertEncoding: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindProcedureDefinition: SetResult(VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[]); + ecFindProcedureMethod: SetResult(VK_DOWN,[ssShift,SSCtrl],VK_UNKNOWN,[]); + ecFindDeclaration: SetResult(VK_UP,[ssAlt],VK_UNKNOWN,[]); + ecFindBlockOtherEnd: SetResult2(VK_Q,[ssCtrl],VK_K,[]); + ecFindBlockStart: SetResult2(VK_Q,[ssCtrl],VK_B,[]); + ecGotoIncludeDirective: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowAbstractMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRemoveEmptyMethods: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRemoveUnusedUnits: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecUseUnit: SetResult(VK_F11,[ssAlt],VK_UNKNOWN,[]); + ecFindOverloads: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // source notebook + ecNextEditor: SetResult(VK_TAB, [ssCtrl], VK_UNKNOWN, []); + ecPrevEditor: SetResult(VK_TAB, [ssShift,ssCtrl], VK_UNKNOWN, []); + ecResetDebugger: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleBreakPoint: SetResult(VK_F5,[],VK_UNKNOWN,[]); + ecMoveEditorLeft: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorRight: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorLeftmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorRightmost: SetResult(VK_UNKNOWN, [], VK_UNKNOWN, []); + + ecNextSharedEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevSharedEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNextWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorNextWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorPrevWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorNewWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorNextWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorPrevWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorNewWindow: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + ecGotoEditor1: SetResult(VK_1,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor2: SetResult(VK_2,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor3: SetResult(VK_3,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor4: SetResult(VK_4,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor5: SetResult(VK_5,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor6: SetResult(VK_6,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor7: SetResult(VK_7,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor8: SetResult(VK_8,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor9: SetResult(VK_9,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor0: SetResult(VK_0,[ssAlt],VK_UNKNOWN,[]); + + ecLockEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + EcFoldLevel1: SetResult(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel2: SetResult(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel3: SetResult(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel4: SetResult(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel5: SetResult(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel6: SetResult(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel7: SetResult(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel8: SetResult(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel9: SetResult(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel0: SetResult(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldCurrent: SetResult(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcUnFoldCurrent: SetResult(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcToggleMarkupWord: SetResult(VK_M,[ssAlt],VK_UNKNOWN,[]); + + // file menu + ecNew: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewForm: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpen: SetResult(VK_O,[ssCtrl],VK_UNKNOWN,[]); + ecRevert: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSave: SetResult(VK_S,[ssCtrl],VK_UNKNOWN,[]); + ecSaveAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveAll: SetResult(VK_S,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecClose: SetResult(VK_F4,[ssCtrl],VK_UNKNOWN,[]); + ecCloseAll: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanDirectory: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRestart: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecQuit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // view menu + ecToggleObjectInsp: SetResult(VK_F11,[],VK_UNKNOWN,[]); + ecToggleSourceEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCodeExpl: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleFPDocEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleMessages: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewComponents: SetResult(VK_P,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewJumpHistory: SetResult(VK_J,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleSearchResults: SetResult(VK_F,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleWatches: SetResult(VK_W,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleBreakPoints: SetResult(VK_B,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleLocals: SetResult(VK_L,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewPseudoTerminal: if HasConsoleSupport then SetResult(VK_O,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewThreads: SetResult(VK_T,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleCallStack: SetResult(VK_S,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleRegisters: SetResult(VK_R,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleAssembler: SetResult(VK_D,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleDebugEvents: SetResult(VK_V,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleDebuggerOut: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewHistory: SetResult(VK_H,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewUnitDependencies: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewUnitInfo: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleFormUnit: SetResult(VK_F12,[],VK_UNKNOWN,[]); + ecViewAnchorEditor: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCodeBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleRestrictionBrowser: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCompPalette: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleIDESpeedBtns: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // project menu + ecNewProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewProjectFromFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenProject: SetResult(VK_F11,[ssCtrl],VK_UNKNOWN,[]); + ecCloseProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveProjectAs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPublishProject: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecProjectInspector: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddCurUnitToProj: SetResult(VK_F11,[ssShift],VK_UNKNOWN,[]); + ecRemoveFromProj: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewProjectUnits: SetResult(VK_F12,[ssCtrl],VK_UNKNOWN,[]); + ecViewProjectForms: SetResult(VK_F12,[ssShift],VK_UNKNOWN,[]); + ecViewProjectSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecProjectOptions: SetResult(VK_F11,[ssShift,ssCtrl],VK_UNKNOWN,[]); + + // run menu + ecCompile: SetResult(VK_F9,[ssCtrl],VK_UNKNOWN,[]); + ecBuild: SetResult(VK_F9,[ssShift],VK_UNKNOWN,[]); + ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanUpCompiled: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[]); + ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]); + ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]); + ecStepIntoInstr: SetResult(VK_F7,[ssAlt],VK_UNKNOWN,[]); + ecStepOverInstr: SetResult(VK_F8,[ssAlt],VK_UNKNOWN,[]); + ecStepOut: SetResult(VK_F8,[ssShift],VK_UNKNOWN,[]); + ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]); + ecStopProgram: SetResult(VK_F2,[SSCtrl],VK_UNKNOWN,[]); + ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunParameters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInspect: SetResult(VK_F5,[ssAlt],VK_UNKNOWN,[]); + ecEvaluate: SetResult(VK_F7,[ssCtrl],VK_UNKNOWN,[]); + ecAddWatch: SetResult(VK_F5,[ssCtrl],VK_UNKNOWN,[]); + ecAddBpSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpAddress: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpDataWatch: SetResult(VK_F5,[ssShift],VK_UNKNOWN,[]); + + // components menu + ecNewPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackage: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackageFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackageOfCurUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddCurFileToPkg: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPackageGraph: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEditInstallPkgs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigCustomComps: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // tools menu + ecExtToolSettings: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecManageExamples: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMakeResourceString: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecDiff: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // environment (in Tools menu) + ecEnvironmentOptions: SetResult(VK_O,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecRescanFPCSrcDir: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEditCodeTemplates: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCodeToolsDefinesEd: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // help menu + ecAboutLazarus: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOnlineHelp: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecContextHelp: SetResult(VK_F1,[],VK_UNKNOWN,[]); + ecEditContextHelp: SetResult(VK_F1,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecReportingBug: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFocusHint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // designer + ecDesignerCopy : SetResult(VK_C,[ssCtrl],VK_Insert,[ssCtrl]); + ecDesignerCut : SetResult(VK_X,[ssCtrl],VK_Delete,[ssShift]); + ecDesignerPaste : SetResult(VK_V,[ssCtrl],VK_Insert,[ssShift]); + ecDesignerSelectParent: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]); + ecDesignerMoveToFront : SetResult(VK_PRIOR,[ssShift],VK_UNKNOWN,[]); + ecDesignerMoveToBack : SetResult(VK_NEXT,[ssShift],VK_UNKNOWN,[]); + ecDesignerForwardOne : SetResult(VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]); + ecDesignerBackOne : SetResult(VK_NEXT,[ssCtrl],VK_UNKNOWN,[]); + + else + begin + SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of + // Edit template + ecSynPTmplEdNextCell: SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSel: SetResult(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPTmplEdNextCellRotate: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSelRotate: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCell: SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCellSel: SetResult(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPTmplEdCellHome: SetResult(VK_HOME, [],VK_UNKNOWN,[]); + ecSynPTmplEdCellEnd: SetResult(VK_END, [],VK_UNKNOWN,[]); + ecSynPTmplEdCellSelect: SetResult(VK_A, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdFinish: SetResult(VK_RETURN,[],VK_UNKNOWN,[]); + ecSynPTmplEdEscape: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of + // Edit template + ecSynPTmplEdNextCell: SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSel: SetResult(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPTmplEdNextCellRotate: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSelRotate: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCell: SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCellSel: SetResult(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPTmplEdCellHome: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdCellEnd: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdCellSelect: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdFinish: SetResult(VK_RETURN,[],VK_UNKNOWN,[]); + ecSynPTmplEdEscape: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of + // SyncroEdit + ecSynPSyncroEdNextCell: SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdNextCellSel: SetResult(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCell: SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCellSel: SetResult(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPSyncroEdCellHome: SetResult(VK_HOME, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellEnd: SetResult(VK_END, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellSelect: SetResult(VK_A, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdEscape: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of + // SyncroEdit + ecSynPSyncroEdNextCell: SetResult(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdNextCellSel: SetResult(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCell: SetResult(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCellSel: SetResult(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPSyncroEdCellHome: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellEnd: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellSelect: SetResult(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdEscape: SetResult(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of + // SyncroEdit, during selection + ecSynPSyncroEdStart: SetResult(VK_J,[ssCtrl],VK_UNKNOWN,[]); + end; + end; + end; +end; + +procedure GetDefaultKeyForClassicScheme(Command: word; + var TheKeyA, TheKeyB: TIDEShortCut); + + procedure SetCombo( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState; + NewKey2A: word; NewShift2A: TShiftState; + NewKey2B: word; NewShift2B: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B); + TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B); + end; + + procedure SetCombo( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState); + begin + SetCombo(NewKey1A,NewShift1A,NewKey1B,NewShift1B,VK_UNKNOWN,[],VK_UNKNOWN,[]); + end; + + procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState; + NewKeyB: word; NewShiftB: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKeyA,NewShiftA,VK_UNKNOWN,[]); + TheKeyB:=IDEShortCut(NewKeyB,NewShiftB,VK_UNKNOWN,[]); + end; + + procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState); + begin + SetSingle(NewKeyA,NewShiftA,VK_UNKNOWN,[]); + end; + +begin + GetDefaultKeyForWindowsScheme(Command,TheKeyA,TheKeyB); + + case Command of + // moving + ecLeft: SetSingle(VK_S,[ssCtrl], VK_LEFT,[]); + ecRight: SetCombo(VK_D, [ssCtrl], VK_UNKNOWN, [], VK_RIGHT, [], VK_UNKNOWN,[]); + ecUp: SetCombo(VK_E, [ssCtrl], VK_UNKNOWN, [], VK_UP, [], VK_UNKNOWN,[]); + ecDown: SetCombo(VK_X, [ssCtrl], VK_UNKNOWN, [], VK_DOWN, [], VK_UNKNOWN,[]); + ecWordLeft: SetCombo(VK_A, [ssCtrl], VK_UNKNOWN, [], VK_LEFT, [ssCtrl], VK_UNKNOWN,[]); + ecWordRight: SetCombo(VK_F, [ssCtrl], VK_UNKNOWN, [], VK_RIGHT, [ssCtrl],VK_UNKNOWN,[]); + ecLineStart: SetCombo(VK_Q, [ssCtrl], VK_S, [], VK_HOME, [],VK_UNKNOWN,[]); + ecLineEnd: SetCombo(VK_Q, [ssCtrl], VK_D, [], VK_END, [],VK_UNKNOWN,[]); + ecPageUp: SetCombo(VK_R, [ssCtrl], VK_UNKNOWN, [], VK_PRIOR, [],VK_UNKNOWN,[]); + ecPageDown: SetCombo(VK_C, [ssCtrl], VK_UNKNOWN, [], VK_NEXT, [],VK_UNKNOWN,[]); + // Paragraph Down: VK_B, [ssCtrl] + ecPageLeft: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPageRight: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPageTop: SetCombo(VK_Q, [ssCtrl], VK_E, [], VK_HOME, [ssCtrl],VK_UNKNOWN,[]); + ecPageBottom: SetCombo(VK_Q, [ssCtrl], VK_X, [], VK_END, [ssCtrl],VK_UNKNOWN,[]); + ecEditorTop: SetCombo(VK_Q, [ssCtrl], VK_R, [], VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]); + ecEditorBottom: SetCombo(VK_Q, [ssCtrl], VK_C, [], VK_NEXT,[ssCtrl],VK_UNKNOWN,[]); + ecScrollUp: SetCombo(VK_W, [ssCtrl], VK_UNKNOWN, [], VK_UP, [ssCtrl],VK_UNKNOWN,[]); + ecScrollDown: SetCombo(VK_Z, [ssCtrl], VK_UNKNOWN, [], VK_DOWN, [ssCtrl],VK_UNKNOWN,[]); + ecScrollLeft: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecScrollRight: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN,[]); + + // selection + ecCopy: SetCombo(VK_Insert,[ssCtrl],VK_UNKNOWN, [],VK_UNKNOWN, [],VK_UNKNOWN, []); + ecCut: SetCombo(VK_Delete,[ssShift],VK_UNKNOWN, [],VK_UNKNOWN, [],VK_UNKNOWN, []); + ecPaste: SetCombo(VK_Insert,[ssShift],VK_UNKNOWN, [],VK_UNKNOWN, [],VK_UNKNOWN, []); + ecNormalSelect: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN, [],VK_UNKNOWN, []); + ecColumnSelect: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN, [],VK_UNKNOWN, []); + ecLineSelect: SetCombo(VK_K,[ssCtrl],VK_L,[], VK_UNKNOWN, [],VK_UNKNOWN, []); + ecSelWordLeft: SetCombo(VK_LEFT,[ssCtrl,ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelWordRight: SetCombo(VK_RIGHT,[ssCtrl,ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelLineStart: SetCombo(VK_HOME,[ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelLineEnd: SetCombo(VK_END,[ssShift],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelPageTop: SetCombo(VK_HOME, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelPageBottom: SetCombo(VK_END, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelEditorTop: SetSingle(VK_PRIOR, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelEditorBottom: SetCombo(VK_NEXT, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectAll: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectToBrace: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectCodeBlock: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectWord: SetCombo(VK_K,[ssCtrl],VK_T,[], VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectLine: SetCombo(VK_O,[ssCtrl],VK_L,[], VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectParagraph: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionUpperCase: SetCombo(VK_K,[ssCtrl],VK_N,[], VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionLowerCase: SetCombo(VK_K,[ssCtrl],VK_O,[], VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionSwapCase: SetCombo(VK_K,[SSCtrl],VK_P,[]); + ecSelectionTabs2Spaces: SetCombo(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionEnclose: SetCombo(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionComment: SetCombo(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionUncomment: SetCombo(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecToggleComment: SetCombo(VK_OEM_2, [ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionEncloseIFDEF: SetCombo(VK_D, [ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionSort: SetCombo(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + ecSelectionBreakLines: SetCombo(VK_UNKNOWN, [],VK_UNKNOWN,[], VK_UNKNOWN, [], VK_UNKNOWN, []); + + ecBlockSetBegin : SetCombo(VK_K,[ssCtrl],VK_B,[], VK_K,[ssCtrl],VK_B,[ssCtrl]); + ecBlockSetEnd : SetCombo(VK_K,[ssCtrl],VK_K,[], VK_K,[ssCtrl],VK_K,[ssCtrl]); + ecBlockToggleHide : SetCombo(VK_K,[ssCtrl],VK_H,[], VK_K,[ssCtrl],VK_H,[ssCtrl]); + ecBlockHide : SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockShow : SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockMove : SetCombo(VK_K,[ssCtrl],VK_V,[], VK_K,[ssCtrl],VK_V,[ssCtrl]); + ecBlockCopy : SetCombo(VK_K,[ssCtrl],VK_C,[], VK_K,[ssCtrl],VK_C,[ssCtrl]); + ecBlockDelete : SetCombo(VK_K,[ssCtrl],VK_Y,[], VK_K,[ssCtrl],VK_Y,[ssCtrl]); + ecBlockGotoBegin : SetCombo(VK_Q,[ssCtrl],VK_B,[ssCtrl], VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockGotoEnd : SetCombo(VK_Q,[ssCtrl],VK_K,[ssCtrl], VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // column mode selection + ecColSelUp: SetCombo(VK_UP, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelDown: SetCombo(VK_DOWN, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelLeft: SetCombo(VK_LEFT, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelRight: SetCombo(VK_RIGHT, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelPageDown: SetCombo(VK_NEXT, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelPageBottom: SetCombo(VK_NEXT, [ssAlt, ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelPageUp: SetCombo(VK_PRIOR, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelPageTop: SetCombo(VK_PRIOR, [ssAlt, ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelLineStart: SetCombo(VK_HOME, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelLineEnd: SetCombo(VK_END, [ssAlt, ssShift], VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelEditorTop: SetCombo(VK_HOME, [ssAlt, ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecColSelEditorBottom:SetCombo(VK_END, [ssAlt, ssShift,ssCtrl],VK_UNKNOWN,[], VK_UNKNOWN,[], VK_UNKNOWN,[]); + + // editing + ecInsertMode: SetSingle(VK_V,[ssCtrl], VK_INSERT,[]); + ecBlockIndent: SetCombo(VK_K,[ssCtrl],VK_I,[], VK_K,[ssCtrl],VK_I,[ssCtrl]); + ecBlockUnindent: SetCombo(VK_K,[ssCtrl],VK_U,[], VK_K,[ssCtrl],VK_U,[ssCtrl]); + ecDeleteLastChar: SetCombo(VK_H,[ssCtrl],VK_UNKNOWN,[], VK_BACK, [],VK_UNKNOWN,[]); + ecDeleteChar: SetSingle(VK_G,[ssCtrl], VK_DELETE,[]); + ecDeleteWord: SetSingle(VK_T,[ssCtrl], VK_UNKNOWN,[]); + ecDeleteLastWord: SetSingle(VK_BACK,[ssCtrl], VK_UNKNOWN,[]); + ecDeleteBOL: SetCombo(VK_Q,[ssCtrl],VK_H,[], VK_Q,[ssCtrl],VK_H,[ssCtrl]); + ecDeleteEOL: SetCombo(VK_Q,[ssCtrl],VK_Y,[], VK_Q,[ssCtrl],VK_Y,[ssCtrl]); + ecDeleteLine: SetSingle(VK_Y,[ssCtrl], VK_UNKNOWN,[]); + ecClearAll: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecLineBreak: SetCombo(VK_RETURN,[],VK_UNKNOWN,[], VK_M,[ssCtrl],VK_UNKNOWN,[]); + ecInsertLine: SetSingle(VK_N,[ssCtrl], VK_UNKNOWN,[]); + ecInsertCharacter: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertGPLNotice: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertLGPLNotice: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertModifiedLGPLNotice: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertUserName: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertDateTime: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertChangeLogEntry: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSAuthor: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSDate: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSHeader: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSID: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSLog: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSName: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSRevision:SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + ecInsertCVSSource: SetSingle(VK_UNKNOWN,[], VK_UNKNOWN,[]); + + // command commands + ecUndo: SetSingle(VK_BACK,[ssALT], VK_U,[ssCtrl]); + ecRedo: SetSingle(VK_BACK,[ssALT,ssShift],VK_UNKNOWN,[]); + + // search & replace + ecMatchBracket: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFind: SetCombo(VK_Q,[SSCtrl],VK_F,[]); + ecFindNext: SetSingle(VK_L,[ssCtrl],VK_UNKNOWN,[]); + ecFindPrevious: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindInFiles: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecReplace: SetCombo(VK_Q,[SSCtrl],VK_A,[]); + ecIncrementalFind: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoLineNumber: SetCombo(VK_Q,[ssCtrl],VK_G,[]); + ecFindNextWordOccurrence: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindPrevWordOccurrence: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecJumpBack: SetSingle(VK_B,[ssCtrl]); + ecJumpForward: SetSingle(VK_B,[ssShift,ssCtrl]); + ecAddJumpPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecJumpToPrevError: SetSingle(VK_F7,[ssShift,ssAlt],VK_UNKNOWN,[]); + ecJumpToNextError: SetSingle(VK_F8,[ssShift,ssAlt],VK_UNKNOWN,[]); + ecOpenFileAtCursor: SetSingle(VK_RETURN,[ssCtrl],VK_UNKNOWN,[]); + + // marker + ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevBookmark: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNextBookmark: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoMarker0: SetCombo(VK_Q,[ssCtrl],VK_0,[]); + ecGotoMarker1: SetCombo(VK_Q,[ssCtrl],VK_1,[]); + ecGotoMarker2: SetCombo(VK_Q,[ssCtrl],VK_2,[]); + ecGotoMarker3: SetCombo(VK_Q,[ssCtrl],VK_3,[]); + ecGotoMarker4: SetCombo(VK_Q,[ssCtrl],VK_4,[]); + ecGotoMarker5: SetCombo(VK_Q,[ssCtrl],VK_5,[]); + ecGotoMarker6: SetCombo(VK_Q,[ssCtrl],VK_6,[]); + ecGotoMarker7: SetCombo(VK_Q,[ssCtrl],VK_7,[]); + ecGotoMarker8: SetCombo(VK_Q,[ssCtrl],VK_8,[]); + ecGotoMarker9: SetCombo(VK_Q,[ssCtrl],VK_9,[]); + ecSetMarker0..ecSetMarker9: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleMarker0: SetCombo(VK_K,[ssCtrl],VK_0,[]); + ecToggleMarker1: SetCombo(VK_K,[ssCtrl],VK_1,[]); + ecToggleMarker2: SetCombo(VK_K,[ssCtrl],VK_2,[]); + ecToggleMarker3: SetCombo(VK_K,[ssCtrl],VK_3,[]); + ecToggleMarker4: SetCombo(VK_K,[ssCtrl],VK_4,[]); + ecToggleMarker5: SetCombo(VK_K,[ssCtrl],VK_5,[]); + ecToggleMarker6: SetCombo(VK_K,[ssCtrl],VK_6,[]); + ecToggleMarker7: SetCombo(VK_K,[ssCtrl],VK_7,[]); + ecToggleMarker8: SetCombo(VK_K,[ssCtrl],VK_8,[]); + ecToggleMarker9: SetCombo(VK_K,[ssCtrl],VK_9,[]); + + // codetools + ecAutoCompletion: SetSingle(VK_J,[ssCtrl],VK_UNKNOWN,[]); + ecWordCompletion: SetSingle(VK_W,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecCompleteCode: SetSingle(VK_C,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecIdentCompletion: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowCodeContext: SetSingle(VK_SPACE,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecExtractProc: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindIdentifierRefs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRenameIdentifier: SetSingle(VK_E,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecInvertAssignment: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSyntaxCheck: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGuessUnclosedBlock: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDFM2LFM: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCheckLFM: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiUnit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiPackage: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertEncoding: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindProcedureDefinition: SetSingle(VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[]); + ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl],VK_UNKNOWN,[]); + ecFindDeclaration: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindBlockOtherEnd: SetCombo(VK_Q,[ssCtrl],VK_K,[]); + ecFindBlockStart: SetCombo(VK_Q,[ssCtrl],VK_B,[]); + ecGotoIncludeDirective: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRemoveEmptyMethods: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // source notebook + ecNextEditor: SetCombo(VK_F6,[],VK_UNKNOWN,[],VK_TAB, [ssCtrl], VK_UNKNOWN, []); + ecPrevEditor: SetCombo(VK_F6,[ssShift],VK_UNKNOWN,[],VK_TAB, [ssShift,ssCtrl], VK_UNKNOWN, []); + ecResetDebugger: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleBreakPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorLeft: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorRight: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorLeftmost: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorRightmost: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + + ecNextSharedEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevSharedEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNextWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorNextWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorPrevWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorNextWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorPrevWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + ecGotoEditor1: SetSingle(VK_1,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor2: SetSingle(VK_2,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor3: SetSingle(VK_3,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor4: SetSingle(VK_4,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor5: SetSingle(VK_5,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor6: SetSingle(VK_6,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor7: SetSingle(VK_7,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor8: SetSingle(VK_8,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor9: SetSingle(VK_9,[ssAlt],VK_UNKNOWN,[]); + ecGotoEditor0: SetSingle(VK_0,[ssAlt],VK_UNKNOWN,[]); + + ecLockEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + EcFoldLevel1: SetSingle(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel2: SetSingle(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel3: SetSingle(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel4: SetSingle(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel5: SetSingle(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel6: SetSingle(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel7: SetSingle(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel8: SetSingle(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel9: SetSingle(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldLevel0: SetSingle(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcFoldCurrent: SetSingle(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcUnFoldCurrent: SetSingle(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[]); + EcToggleMarkupWord: SetSingle(VK_M,[ssAlt],VK_UNKNOWN,[]); + + // file menu + ecNew: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewUnit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewForm: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpen: SetSingle(VK_F3,[],VK_UNKNOWN,[]); + ecRevert: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSave: SetSingle(VK_F2,[],VK_UNKNOWN,[]); + ecSaveAs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveAll: SetSingle(VK_F2,[ssShift],VK_UNKNOWN,[]); + ecClose: SetSingle(VK_F3,[ssAlt],VK_UNKNOWN,[]); + ecCloseAll: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanDirectory: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRestart: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecQuit: SetSingle(VK_X,[ssAlt],VK_UNKNOWN,[]); + + // view menu + ecToggleObjectInsp: SetSingle(VK_F11,[],VK_UNKNOWN,[]); + ecToggleSourceEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCodeExpl: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleFPDocEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleMessages: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewComponents: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewJumpHistory: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleSearchResults: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleWatches: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleBreakPoints: SetSingle(VK_F8,[ssCtrl],VK_UNKNOWN,[]); + ecToggleLocals: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCallStack: SetSingle(VK_F3,[ssCtrl],VK_UNKNOWN,[]); + ecToggleRegisters: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleAssembler: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleDebugEvents: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleDebuggerOut: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewUnitDependencies: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewUnitInfo: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleFormUnit: SetSingle(VK_F12,[],VK_UNKNOWN,[]); + ecViewAnchorEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCodeBrowser: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleRestrictionBrowser: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCompPalette: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleIDESpeedBtns: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // project menu + ecNewProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewProjectFromFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenProject: SetSingle(VK_F11,[ssCtrl],VK_UNKNOWN,[]); + ecCloseProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveProjectAs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPublishProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecProjectInspector: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift],VK_UNKNOWN,[]); + ecRemoveFromProj: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewProjectUnits: SetSingle(VK_F12,[ssCtrl],VK_UNKNOWN,[]); + ecViewProjectForms: SetSingle(VK_F12,[ssShift],VK_UNKNOWN,[]); + ecViewProjectSource: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecProjectOptions: SetSingle(VK_F11,[ssShift,ssCtrl],VK_UNKNOWN,[]); + + // run menu + ecCompile: SetSingle(VK_F9,[ssCtrl],VK_UNKNOWN,[]); + ecBuild: SetSingle(VK_F9,[ssShift],VK_UNKNOWN,[]); + ecQuickCompile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanUpCompiled: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAbortBuild: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRun: SetSingle(VK_F9,[],VK_UNKNOWN,[]); + ecPause: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowExecutionPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecStepInto: SetSingle(VK_F7,[],VK_UNKNOWN,[]); + ecStepOver: SetSingle(VK_F8,[],VK_UNKNOWN,[]); + ecStepIntoInstr: SetSingle(VK_F7,[ssAlt],VK_UNKNOWN,[]); + ecStepOverInstr: SetSingle(VK_F8,[ssAlt],VK_UNKNOWN,[]); + ecStepOut: SetSingle(VK_F8,[ssShift],VK_UNKNOWN,[]); + ecRunToCursor: SetSingle(VK_F4,[],VK_UNKNOWN,[]); + ecStopProgram: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRemoveBreakPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunParameters: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInspect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEvaluate: SetSingle(VK_F4,[ssCtrl],VK_UNKNOWN,[]); + ecAddWatch: SetSingle(VK_F7,[ssCtrl],VK_UNKNOWN,[]); + ecAddBpSource: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpAddress: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpDataWatch: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // components menu + ecNewPackage: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackage: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackageFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackageOfCurUnit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPackageGraph: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigCustomComps: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // tools menu + ecExtToolSettings: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecManageExamples: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildLazarus: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildLazarus: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMakeResourceString: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecDiff: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // environment menu + ecEnvironmentOptions: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRescanFPCSrcDir: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEditCodeTemplates: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCodeToolsDefinesEd: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // help menu + ecAboutLazarus: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOnlineHelp: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecContextHelp: SetSingle(VK_F1,[ssCtrl],VK_UNKNOWN,[]); + ecEditContextHelp: SetSingle(VK_F1,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecReportingBug: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFocusHint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // designer + ecDesignerCopy : SetCombo(VK_C,[ssCtrl],VK_UNKNOWN,[],VK_Insert,[ssCtrl],VK_UNKNOWN,[]); + ecDesignerCut : SetCombo(VK_X,[ssCtrl],VK_UNKNOWN,[],VK_Delete,[ssShift],VK_UNKNOWN,[]); + ecDesignerPaste : SetCombo(VK_V,[ssCtrl],VK_UNKNOWN,[],VK_Insert,[ssShift],VK_UNKNOWN,[]); + ecDesignerSelectParent: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + ecDesignerMoveToFront : SetSingle(VK_PRIOR,[ssShift],VK_UNKNOWN,[]); + ecDesignerMoveToBack : SetSingle(VK_NEXT,[ssShift],VK_UNKNOWN,[]); + ecDesignerForwardOne : SetSingle(VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]); + ecDesignerBackOne : SetSingle(VK_NEXT,[ssCtrl],VK_UNKNOWN,[]); + + else + begin + SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of + // Edit template + ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSelRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPTmplEdCellHome: SetSingle(VK_HOME, [],VK_UNKNOWN,[]); + ecSynPTmplEdCellEnd: SetSingle(VK_END, [],VK_UNKNOWN,[]); + ecSynPTmplEdCellSelect: SetSingle(VK_A, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdFinish: SetSingle(VK_RETURN,[],VK_UNKNOWN,[]); + ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of + // Edit template + ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSelRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdFinish: SetSingle(VK_RETURN,[],VK_UNKNOWN,[]); + ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of + // SyncroEdit + ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPSyncroEdCellHome: SetSingle(VK_HOME, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellEnd: SetSingle(VK_END, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellSelect: SetSingle(VK_A, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of + // SyncroEdit + ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of + // SyncroEdit, during selection + ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl],VK_UNKNOWN,[]); + end; + end; + end; +(*//F1 Topic Search +//Ctrl+F1 Topic Search + ecNextEditor: SetSingle(VK_F6,[]); + ecPrevEditor: SetSingle(VK_F6,[ssShift]); + ecWordLeft: SetSingle(VK_A,[ssCtrl],VK_LEFT,[ssCtrl]); + ecPageDown: SetSingle(VK_C,[ssCtrl],VK_NEXT,[]); +//Ctrl+D Moves the cursor right one column, accounting for the +//autoindent setting +//Ctrl+E Moves the cursor up one line +//Ctrl+F Moves one word right +//Ctrl+G Deletes the character to the right of the cursor +//Ctrl+H Deletes the character to the left of the cursor +//Ctrl+I Inserts a tab +//Ctrl+L Search|Search Again +//Ctrl+N Inserts a new line +//Ctrl+P Causes next character to be interpreted as an ASCII +//sequence +//Ctrl+R Moves up one screen +//Ctrl+S Moves the cursor left one column, accounting for the +//autoindent setting +//Ctrl+T Deletes a word +//Ctrl+V Turns insert mode on/off +//Ctrl+W Moves down one screen +//Ctrl+X Moves the cursor down one line +//Ctrl+Y Deletes a line +//Ctrl+Z Moves the cursor up one line +//Ctrl+Shift+S Performs an incremental search + +//Block commands: +//--------------- +//Ctrl+K+B Marks the beginning of a block +//Ctrl+K+C Copies a selected block +//Ctrl+K+H Hides/shows a selected block +//Ctrl+K+I Indents a block by the amount specified in the Block Indent +//combo box on the General page of the Editor Options dialog box. +//Ctrl+K+K Marks the end of a block +//Ctrl+K+L Marks the current line as a block +//Ctrl+K+N Changes a block to uppercase +//Ctrl+K+O Changes a block to lowercase +//Ctrl+K+P Prints selected block +//Ctrl+K+R Reads a block from a file +//Ctrl+K+T Marks a word as a block +//Ctrl+K+U Outdents a block by the amount specified in the Block Indent +//combo box on the General page of the Editor Options dialog box. +//Ctrl+K+V Moves a selected block +//Ctrl+K+W Writes a selected block to a file +//Ctrl+K+Y Deletes a selected block +//Ctrl+O+C Turns on column blocking +//Ctrl+O+I Marks an inclusive block +//Ctrl+O+K Turns off column blocking +//Ctrl+O+L Marks a line as a block +//Shift+Alt+arrow Selects column-oriented blocks +//Click+Alt+mousemv Selects column-oriented blocks +//Ctrl+Q+B Moves to the beginning of a block +//Ctrl+Q+K Moves to the end of a block + +//Miscellaneous commands: +//----------------------- +//Ctrl+K+D Accesses the menu bar +//Ctrl+K+E Changes a word to lowercase +//Ctrl+K+F Changes a word to uppercase +//Ctrl+K+S File|Save (Default and IDE Classic only) +//Ctrl+Q+A Search|Replace +//Ctrl+Q+F Search|Find +//Ctrl+Q+Y Deletes to the end of a line +//Ctrl+Q+[ Finds the matching delimiter (forward) +//Ctrl+Q+Ctrl+[ Finds the matching delimiter (forward) +//Ctrl+Q+] Finds the matching delimiter (backward) +//Ctrl+Q+Ctrl+] Finds the matching delimiter (backward) +//Ctrl+O+A Open file at cursor +//Ctrl+O+B Browse symbol at cursor (Delphi only) +//Alt+right arrow For code browsing +//Alt +left arrow For code browsing +//Ctrl+O+G Search|Go to line number +//Ctrl+O+O Inserts compiler options and directives +//Ctrl+O+U Toggles case +//Bookmark commands: +//------------------ +//Shortcut Action +//Ctrl+K+0 Sets bookmark 0 +//Ctrl+K+1 Sets bookmark 1 +//Ctrl+K+2 Sets bookmark 2 +//Ctrl+K+3 Sets bookmark 3 +//Ctrl+K+4 Sets bookmark 4 +//Ctrl+K+5 Sets bookmark 5 +//Ctrl+K+6 Sets bookmark 6 +//Ctrl+K+7 Sets bookmark 7 +//Ctrl+K+8 Sets bookmark 8 +//Ctrl+K+9 Sets bookmark 9 +//Ctrl+K+Ctrl+0 Sets bookmark 0 +//Ctrl+K+Ctrl+1 Sets bookmark 1 +//Ctrl+K+Ctrl+2 Sets bookmark 2 +//Ctrl+K+Ctrl+3 Sets bookmark 3 +//Ctrl+K+Ctrl+4 Sets bookmark 4 +//Ctrl+K+Ctrl+5 Sets bookmark 5 +//Ctrl+K+Ctrl+6 Sets bookmark 6 +//Ctrl+K+Ctrl+7 Sets bookmark 7 +//Ctrl+K+Ctrl+8 Sets bookmark 8 +//Ctrl+K+Ctrl+9 Sets bookmark 9 +//Ctrl+Q+0 Goes to bookmark 0 +//Ctrl+Q+1 Goes to bookmark 1 +//Ctrl+Q+2 Goes to bookmark 2 +//Ctrl+Q+3 Goes to bookmark 3 +//Ctrl+Q+4 Goes to bookmark 4 +//Ctrl+Q+5 Goes to bookmark 5 +//Ctrl+Q+6 Goes to bookmark 6 +//Ctrl+Q+7 Goes to bookmark 7 +//Ctrl+Q+8 Goes to bookmark 8 +//Ctrl+Q+9 Goes to bookmark 9 +//Ctrl+Q+Ctrl+0 Goes to bookmark 0 +//Ctrl+Q+Ctrl+1 Goes to bookmark 1 +//Ctrl+Q+Ctrl+2 Goes to bookmark 2 +//Ctrl+Q+Ctrl+3 Goes to bookmark 3 +//Ctrl+Q+Ctrl+4 Goes to bookmark 4 +//Ctrl+Q+Ctrl+5 Goes to bookmark 5 +//Ctrl+Q+Ctrl+6 Goes to bookmark 6 +//Ctrl+Q+Ctrl+7 Goes to bookmark 7 +//Ctrl+Q+Ctrl+8 Goes to bookmark 8 +//Ctrl+Q+Ctrl+9 Goes to bookmark 9 +//Cursor movement: +//---------------- +//Ctrl+Q+B Moves to the beginning of a block +//Ctrl+Q+C Moves to end of a file +//Ctrl+Q+D Moves to the end of a line +//Ctrl+Q+E Moves the cursor to the top of the window +//Ctrl+Q+K Moves to the end of a block +//Ctrl+Q+P Moves to previous position +//Ctrl+Q+R Moves to the beginning of a file +//Ctrl+Q+S Moves to the beginning of a line +//Ctrl+Q+T Moves the viewing editor so that the current line is placed at +//the top of the window +//Ctrl+Q+U Moves the viewing editor so that the current line is placed at +//the bottom of the window, if possible +//Ctrl+Q+X Moves the cursor to the bottom of the window +//System keys: +//------------ + +//F1 Displays context-sensitive Help +//F2 File|Save +//F3 File|Open +//F4 Run to Cursor +//F5 Zooms window +//F6 Displays the next page +//F7 Run|Trace Into +//F8 Run|Step Over +//F9 Run|Run +//F11 View|Object Inspector +//F12 View|Toggle Form/Unit +//Alt+0 View|Window List +//Alt+F2 View|CPU +//Alt+F3 File|Close +//Alt+F7 Displays previous error in Message view +//Alt+F8 Displays next error in Message view +//Alt+F11 File|Use Unit (Delphi) +//Alt+F11 File|Include Unit Hdr (C++) +//Alt+F12 Displays the Code editor +//Alt+X File|Exit +//Alt+right arrow For code browsing forward +//Alt +left arrow For code browsing backward +//Alt +up arrow For code browsing Ctrl-click on identifier +//Alt+Page Down Goes to the next tab +//Alt+Page Up Goes to the previous tab +//Ctrl+F1 Topic Search +//Ctrl+F2 Run|Program Reset +//Ctrl+F3 View|Call Stack +//Ctrl+F6 Open Source/Header file (C++) +//Ctrl+F7 Add Watch at Cursor +//Ctrl+F8 Toggle Breakpoint +//Ctrl+F9 Project|Compile project (Delphi) +//Ctrl+F9 Project|Make project (C++) +//Ctrl+F11 File|Open Project +//Ctrl+F12 View|Units +//Shift+F7 Run|Trace To Next Source Line +//Shift+F11 Project|Add To Project +//Shift+F12 View|Forms +//Ctrl+D Descends item (replaces Inspector window) +//Ctrl+N Opens a new Inspector window +//Ctrl+S Incremental search +//Ctrl+T Displays the Type Cast dialog + else + GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB); + end; +*) +end; + +procedure GetDefaultKeyForMacOSXScheme(Command: word; var TheKeyA, TheKeyB: TIDEShortCut); + + procedure SetSingle(NewKeyA: word; NewShiftA: TShiftState; + NewKeyB: word; NewShiftB: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKeyA, NewShiftA, VK_UNKNOWN, []); + TheKeyB:=IDEShortCut(NewKeyB, NewShiftB, VK_UNKNOWN, []); + end; + + procedure SetResult2( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState; + NewKey2A: word; NewShift2A: TShiftState; + NewKey2B: word; NewShift2B: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B); + TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B); + end; + + procedure SetResult2( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState); + begin + SetResult2(NewKey1A,NewShift1A,NewKey1B,NewShift1B,VK_UNKNOWN,[],VK_UNKNOWN,[]); + end; + +begin + case Command of + // moving + ecWordLeft: SetSingle(VK_LEFT, [ssAlt],VK_UNKNOWN,[]); + ecWordRight: SetSingle(VK_RIGHT, [ssAlt],VK_UNKNOWN,[]); + ecLineStart: SetSingle(VK_LEFT, [ssMeta],VK_UNKNOWN,[]); + ecLineEnd: SetSingle(VK_RIGHT, [ssMeta],VK_UNKNOWN,[]); + ecPageUp: SetSingle(VK_PRIOR, [],VK_UNKNOWN,[]); + ecPageDown: SetSingle(VK_NEXT, [],VK_UNKNOWN,[]); + ecPageLeft: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPageRight: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPageTop: SetSingle(VK_PRIOR, [ssAlt],VK_UNKNOWN,[]); + ecPageBottom: SetSingle(VK_END, [ssAlt],VK_UNKNOWN,[]); + ecEditorTop: SetSingle(VK_HOME,[],VK_UP,[ssMeta]); + ecEditorBottom: SetSingle(VK_END,[],VK_DOWN,[ssMeta]); + ecScrollUp: SetSingle(VK_UP, [ssCtrl],VK_UNKNOWN,[]); + ecScrollDown: SetSingle(VK_DOWN, [ssCtrl],VK_UNKNOWN,[]); + ecScrollLeft: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecScrollRight: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + + // selection + ecCopy: SetSingle(VK_C,[ssMeta],VK_Insert,[ssCtrl]); + ecCut: SetSingle(VK_X,[ssMeta],VK_Delete,[ssShift]); + ecPaste: SetSingle(VK_V,[ssMeta],VK_Insert,[ssShift]); + ecNormalSelect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecColumnSelect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecLineSelect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelWordLeft: SetSingle(VK_LEFT,[ssAlt,ssShift],VK_UNKNOWN,[]); + ecSelWordRight: SetSingle(VK_RIGHT,[ssAlt,ssShift],VK_UNKNOWN,[]); + ecSelLineStart: SetSingle(VK_LEFT,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecSelLineEnd: SetSingle(VK_RIGHT,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecSelPageTop: SetSingle(VK_PRIOR, [ssShift,ssAlt],VK_UNKNOWN,[]); + ecSelPageBottom: SetSingle(VK_NEXT, [ssShift,ssAlt],VK_UNKNOWN,[]); + ecSelEditorTop: SetSingle(VK_HOME, [ssShift],VK_UNKNOWN,[]); + ecSelEditorBottom: SetSingle(VK_END, [ssShift],VK_UNKNOWN,[]); + ecSelectAll: SetSingle(VK_A,[ssMeta],VK_UNKNOWN,[]); + ecSelectToBrace: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectCodeBlock: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectWord: SetResult2(VK_K,[SSCtrl],VK_T,[]); + ecSelectLine: SetResult2(VK_K,[SSCtrl],VK_L,[]); + ecSelectParagraph: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSelectionUpperCase: SetResult2(VK_K,[SSCtrl],VK_N,[]); + ecSelectionLowerCase: SetResult2(VK_K,[SSCtrl],VK_O,[]); + ecSelectionSwapCase: SetResult2(VK_K,[SSCtrl],VK_P,[]); + ecSelectionTabs2Spaces: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionEnclose: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionComment: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionUncomment: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecToggleComment: SetSingle(VK_OEM_2, [ssCtrl],VK_UNKNOWN,[]); + ecSelectionEncloseIFDEF: SetSingle(VK_D, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelectionSort: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSelectionBreakLines: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + + ecBlockSetBegin : SetResult2(VK_K,[ssCtrl],VK_B,[], VK_K,[ssCtrl],VK_B,[ssCtrl]); + ecBlockSetEnd : SetResult2(VK_K,[ssCtrl],VK_K,[], VK_K,[ssCtrl],VK_K,[ssCtrl]); + ecBlockToggleHide : SetResult2(VK_K,[ssCtrl],VK_H,[], VK_K,[ssCtrl],VK_H,[ssCtrl]); + ecBlockHide : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockShow : SetResult2(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBlockMove : SetResult2(VK_K,[ssCtrl],VK_V,[], VK_K,[ssCtrl],VK_V,[ssCtrl]); + ecBlockCopy : SetResult2(VK_K,[ssCtrl],VK_C,[], VK_K,[ssCtrl],VK_C,[ssCtrl]); + ecBlockDelete : SetResult2(VK_K,[ssCtrl],VK_Y,[], VK_K,[ssCtrl],VK_Y,[ssCtrl]); + ecBlockGotoBegin : SetResult2(VK_Q,[ssCtrl],VK_B,[], VK_Q,[ssCtrl],VK_B,[ssCtrl]); + ecBlockGotoEnd : SetResult2(VK_Q,[ssCtrl],VK_K,[], VK_Q,[ssCtrl],VK_K,[ssCtrl]); + +// column mode selection + ecColSelUp: SetSingle(VK_UP, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelDown: SetSingle(VK_DOWN, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelLeft: SetSingle(VK_LEFT, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelRight: SetSingle(VK_RIGHT, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelPageDown: SetSingle(VK_NEXT, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelPageBottom: SetSingle(VK_NEXT, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + ecColSelPageUp: SetSingle(VK_PRIOR, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelPageTop: SetSingle(VK_PRIOR, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + ecColSelLineStart: SetSingle(VK_HOME, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelLineEnd: SetSingle(VK_END, [ssAlt, ssShift], VK_UNKNOWN,[]); + ecColSelEditorTop: SetSingle(VK_HOME, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + ecColSelEditorBottom: SetSingle(VK_END, [ssAlt, ssShift,ssCtrl], VK_UNKNOWN,[]); + + // editing + ecBlockIndent: SetResult2(VK_I,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_I,[]); + ecBlockUnindent: SetResult2(VK_U,[ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_U,[]); + ecDeleteLastChar: SetSingle(VK_BACK, [],VK_BACK, [ssShift]); // ctrl H used for scroll window. + ecDeleteChar: SetSingle(VK_DELETE,[],VK_UNKNOWN,[]); // ctrl G conflicts with GO + ecDeleteWord: SetSingle(VK_DELETE,[ssAlt],VK_UNKNOWN,[]); + ecDeleteLastWord: SetSingle(VK_BACK,[ssCtrl],VK_UNKNOWN,[]); + ecDeleteBOL: SetSingle(VK_BACK,[ssMeta],VK_UNKNOWN,[]); + ecDeleteEOL: SetSingle(VK_DELETE,[ssMeta],VK_UNKNOWN,[]); + ecDeleteLine: SetSingle(VK_Y,[ssCtrl],VK_UNKNOWN,[]); + ecClearAll: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecLineBreak: SetSingle(VK_RETURN,[],VK_UNKNOWN,[]); + ecInsertLine: SetSingle(VK_N,[ssShift,ssMeta],VK_UNKNOWN,[]); + ecInsertCharacter: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertGPLNotice: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertLGPLNotice: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertModifiedLGPLNotice: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertUserName: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertDateTime: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertChangeLogEntry: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSAuthor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSDate: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSHeader: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSID: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSLog: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSName: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSRevision: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertCVSSource: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInsertGUID: SetSingle(VK_G, [ssCtrl,ssShift],VK_UNKNOWN,[]); + ecInsertFilename: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // command commands + ecUndo: SetSingle(VK_Z,[ssMeta],VK_UNKNOWN,[]); + ecRedo: SetSingle(VK_Z,[ssMeta,ssShift],VK_UNKNOWN,[]); + + // search & replace + ecMatchBracket: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFind: SetSingle(VK_F,[ssMeta],VK_UNKNOWN,[]); + ecFindNext: SetSingle(VK_G,[ssMeta],VK_UNKNOWN,[]); + ecFindPrevious: SetSingle(VK_G,[ssShift,ssMeta],VK_UNKNOWN,[]); + ecFindInFiles: SetSingle(VK_F,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecReplace: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecIncrementalFind: SetSingle(VK_E,[ssMeta],VK_UNKNOWN,[]); + ecGotoLineNumber: SetSingle(VK_L,[ssMeta],VK_UNKNOWN,[]); + ecFindNextWordOccurrence: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindPrevWordOccurrence: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecJumpBack: SetSingle(VK_H,[ssCtrl],VK_UNKNOWN,[]); + ecJumpForward: SetSingle(VK_H,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecAddJumpPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecJumpToPrevError: SetSingle(VK_ADD,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecJumpToNextError: SetSingle(VK_ADD,[ssMeta],VK_UNKNOWN,[]); + ecOpenFileAtCursor: SetSingle(VK_RETURN,[ssCtrl],VK_UNKNOWN,[]); + ecProcedureList: SetSingle(VK_G, [ssAlt],VK_UNKNOWN,[]); + + + // marker + ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevBookmark: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNextBookmark: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoMarker0: SetSingle(VK_0,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker1: SetSingle(VK_1,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker2: SetSingle(VK_2,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker3: SetSingle(VK_3,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker4: SetSingle(VK_4,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker5: SetSingle(VK_5,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker6: SetSingle(VK_6,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker7: SetSingle(VK_7,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker8: SetSingle(VK_8,[ssCtrl],VK_UNKNOWN,[]); + ecGotoMarker9: SetSingle(VK_9,[ssCtrl],VK_UNKNOWN,[]); + ecToggleMarker0: SetResult2(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_0,[]); + ecToggleMarker1: SetResult2(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_1,[]); + ecToggleMarker2: SetResult2(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_2,[]); + ecToggleMarker3: SetResult2(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_3,[]); + ecToggleMarker4: SetResult2(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_4,[]); + ecToggleMarker5: SetResult2(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_5,[]); + ecToggleMarker6: SetResult2(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_6,[]); + ecToggleMarker7: SetResult2(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_7,[]); + ecToggleMarker8: SetResult2(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_8,[]); + ecToggleMarker9: SetResult2(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_K,[SSCtrl],VK_9,[]); + ecSetMarker0..ecSetMarker9: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // codetools + ecAutoCompletion: SetSingle(VK_J,[ssMeta],VK_UNKNOWN,[]); + ecWordCompletion: SetSingle(VK_SPACE,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecCompleteCode: SetSingle(VK_C,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecIdentCompletion: SetSingle(VK_SPACE,[ssCtrl],VK_UNKNOWN,[]); + ecShowCodeContext: SetSingle(VK_SPACE,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecExtractProc: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindIdentifierRefs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRenameIdentifier: SetSingle(VK_E,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecInvertAssignment: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSyntaxCheck: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGuessUnclosedBlock: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDFM2LFM: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCheckLFM: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiUnit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertDelphiPackage: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConvertEncoding: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindProcedureDefinition: SetSingle(VK_UP,[ssShift,SSCtrl],VK_UNKNOWN,[]); + ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl],VK_UNKNOWN,[]); + ecFindDeclaration: SetSingle(VK_UP,[ssAlt],VK_UNKNOWN,[]); + ecFindBlockOtherEnd: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFindBlockStart: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoIncludeDirective: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRemoveEmptyMethods: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // source notebook + ecNextEditor: SetSingle(VK_RIGHT, [ssMeta,ssAlt], VK_UNKNOWN, []); + ecPrevEditor: SetSingle(VK_LEFT, [ssMeta,ssAlt], VK_UNKNOWN, []); + ecResetDebugger: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleBreakPoint: SetSingle(VK_P,[ssCtrl],VK_UNKNOWN,[]); + ecMoveEditorLeft: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorRight: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorLeftmost: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + ecMoveEditorRightmost: SetSingle(VK_UNKNOWN, [], VK_UNKNOWN, []); + + ecNextSharedEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevSharedEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNextWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPrevWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorNextWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorPrevWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorNextWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorPrevWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + ecGotoEditor1: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor2: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor3: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor4: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor5: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor6: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor7: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor8: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor9: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecGotoEditor0: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + ecLockEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + (* + EcFoldLevel1: SetSingle(VK_1,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel2: SetSingle(VK_2,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel3: SetSingle(VK_3,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel4: SetSingle(VK_4,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel5: SetSingle(VK_5,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel6: SetSingle(VK_6,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel7: SetSingle(VK_7,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel8: SetSingle(VK_8,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel9: SetSingle(VK_9,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldLevel0: SetSingle(VK_0,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcFoldCurrent: SetSingle(VK_OEM_PLUS,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcUnFoldCurrent: SetSingle(VK_OEM_MINUS,[ssMeta,ssShift],VK_UNKNOWN,[]); + EcToggleMarkupWord: SetSingle(VK_M,[ssMeta],VK_UNKNOWN,[]); + *) + + // file menu + ecNew: SetSingle(VK_N,[ssMeta],VK_UNKNOWN,[]); + ecNewUnit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewForm: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpen: SetSingle(VK_O,[ssMeta],VK_UNKNOWN,[]); + ecRevert: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSave: SetSingle(VK_S,[ssMeta],VK_UNKNOWN,[]); + ecSaveAs: SetSingle(VK_S,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecSaveAll: SetSingle(VK_S,[ssMeta,ssAlt],VK_UNKNOWN,[]); + ecClose: SetSingle(VK_W,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecCloseAll: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanDirectory: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRestart: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecQuit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // view menu + ecToggleObjectInsp: SetSingle(VK_I,[ssAlt,ssMeta],VK_UNKNOWN,[]); + ecToggleSourceEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCodeExpl: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleFPDocEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleMessages: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewComponents: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewJumpHistory: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleSearchResults: SetSingle(VK_F,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleWatches: SetSingle(VK_W,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleBreakPoints: SetSingle(VK_B,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleLocals: SetSingle(VK_L,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewPseudoTerminal: if HasConsoleSupport then SetSingle(VK_O,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewThreads: SetSingle(VK_T,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleCallStack: SetSingle(VK_S,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleRegisters: SetSingle(VK_R,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleAssembler: SetSingle(VK_D,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleDebugEvents: SetSingle(VK_V,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecToggleDebuggerOut: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewHistory: SetSingle(VK_H,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewUnitDependencies: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewUnitInfo: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleFormUnit: SetSingle(VK_F,[ssMeta,ssAlt],VK_UNKNOWN,[]); + ecViewAnchorEditor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCodeBrowser: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleRestrictionBrowser: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleCompPalette: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecToggleIDESpeedBtns: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // project menu + ecNewProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecNewProjectFromFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCloseProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSaveProjectAs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPublishProject: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecProjectInspector: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddCurUnitToProj: SetSingle(VK_A,[ssAlt,ssMeta],VK_UNKNOWN,[]); + ecRemoveFromProj: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecViewProjectUnits: SetSingle(VK_U,[ssCtrl,ssAlt],VK_UNKNOWN,[]); + ecViewProjectForms: SetSingle(VK_U,[ssShift,ssCtrl],VK_UNKNOWN,[]); + ecViewProjectSource: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecProjectOptions: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // run menu + ecCompile: SetSingle(VK_B,[ssMeta],VK_UNKNOWN,[]); + ecBuild: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecQuickCompile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanUpCompiled: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAbortBuild: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRun: SetSingle(VK_R,[ssMeta],VK_UNKNOWN,[]); + ecPause: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowExecutionPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecStepInto: SetSingle(VK_R,[ssMeta,ssAlt],VK_UNKNOWN,[]); + ecStepOver: SetSingle(VK_R,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecStepOut: SetSingle(VK_T,[ssMeta,ssShift],VK_UNKNOWN,[]); + ecRunToCursor: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecStopProgram: SetSingle(VK_RETURN,[ssShift,ssMeta],VK_UNKNOWN,[]); + ecRemoveBreakPoint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunParameters: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInspect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEvaluate: SetSingle(VK_E,[ssCtrl,ssShift],VK_UNKNOWN,[]); + ecAddWatch: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpSource: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpAddress: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpDataWatch: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // components menu + ecNewPackage: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackage: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackageFile: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOpenPackageOfCurUnit: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecPackageGraph: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigCustomComps: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // tools menu + ecExtToolSettings: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecManageExamples: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildLazarus: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildLazarus: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecMakeResourceString: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecDiff: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // environment menu + ecEnvironmentOptions: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRescanFPCSrcDir: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecEditCodeTemplates: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCodeToolsDefinesEd: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // help menu + ecAboutLazarus: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecOnlineHelp: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecContextHelp: SetSingle(VK_HELP,[],VK_UNKNOWN,[]); + ecEditContextHelp: SetSingle(VK_HELP,[ssShift,ssCtrl],VK_HELP,[ssCtrl]); + ecReportingBug: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecFocusHint: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + + // designer + ecDesignerCopy : SetSingle(VK_C,[ssMeta],VK_UNKNOWN,[]); + ecDesignerCut : SetSingle(VK_X,[ssMeta],VK_UNKNOWN,[]); + ecDesignerPaste : SetSingle(VK_V,[ssMeta],VK_UNKNOWN,[]); + ecDesignerSelectParent: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + ecDesignerMoveToFront : SetSingle(VK_PRIOR,[ssShift],VK_UNKNOWN,[]); + ecDesignerMoveToBack : SetSingle(VK_NEXT,[ssShift],VK_UNKNOWN,[]); + ecDesignerForwardOne : SetSingle(VK_PRIOR,[ssMeta],VK_UNKNOWN,[]); + ecDesignerBackOne : SetSingle(VK_NEXT,[ssMeta],VK_UNKNOWN,[]); + + else + begin + SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of + // Edit template + ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSelRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPTmplEdCellHome: SetSingle(VK_HOME, [],VK_UNKNOWN,[]); + ecSynPTmplEdCellEnd: SetSingle(VK_END, [],VK_UNKNOWN,[]); + ecSynPTmplEdCellSelect: SetSingle(VK_A, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdFinish: SetSingle(VK_RETURN,[],VK_UNKNOWN,[]); + ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of + // Edit template + ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdNextCellSelRotate: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecSynPTmplEdFinish: SetSingle(VK_RETURN,[],VK_UNKNOWN,[]); + ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of + // SyncroEdit + ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPSyncroEdCellHome: SetSingle(VK_HOME, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellEnd: SetSingle(VK_END, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellSelect: SetSingle(VK_A, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of + // SyncroEdit + ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB, [], VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT, [ssCtrl],VK_UNKNOWN,[]); + ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB, [ssShift],VK_UNKNOWN,[]); + ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN, [],VK_UNKNOWN,[]); + ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[],VK_UNKNOWN,[]); + end; + case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of + // SyncroEdit, during selection + ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl],VK_UNKNOWN,[]); + end; + end; + end; +end; + +procedure GetDefaultKeyForMacOSXLazScheme(Command: word; var TheKeyA, TheKeyB: TIDEShortCut); + + procedure SetResult(NewKeyA: word; NewShiftA: TShiftState; + NewKeyB: word; NewShiftB: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKeyA, NewShiftA, VK_UNKNOWN, []); + TheKeyB:=IDEShortCut(NewKeyB, NewShiftB, VK_UNKNOWN, []); + end; + + procedure SetResult2( + NewKey1A: word; NewShift1A: TShiftState; + NewKey1B: word; NewShift1B: TShiftState; + NewKey2A: word; NewShift2A: TShiftState; + NewKey2B: word; NewShift2B: TShiftState); + begin + TheKeyA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B); + TheKeyB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B); + end; + +begin + { First default to standard Mac OS X scheme } + GetDefaultKeyForMacOSXScheme(Command, TheKeyA, TheKeyB); + + { Now override some entries } + case Command of + // moving + ecLineStart: SetResult(VK_HOME, [],VK_LEFT,[ssMeta]); + ecLineEnd: SetResult(VK_END, [],VK_RIGHT,[ssMeta]); + ecEditorTop: SetResult(VK_UP,[ssMeta],VK_UNKNOWN,[]); + ecEditorBottom: SetResult(VK_DOWN,[ssMeta],VK_UNKNOWN,[]); + + // selection + ecSelLineStart: SetResult(VK_HOME, [ssShift],VK_LEFT,[ssMeta,ssShift]); + ecSelLineEnd: SetResult(VK_END, [ssShift],VK_RIGHT,[ssMeta,ssShift]); + ecSelEditorTop: SetResult(VK_HOME, [ssShift,ssCtrl],VK_UNKNOWN,[]); + ecSelEditorBottom: SetResult(VK_END, [ssShift,ssCtrl],VK_UNKNOWN,[]); + + // codetools + ecRenameIdentifier: SetResult(VK_E, [ssShift,ssCtrl],VK_UNKNOWN,[]); + + // run menu + ecCompile: SetResult(VK_F9,[ssCtrl],VK_F9,[ssCtrl,ssMeta]); + ecBuild: SetResult(VK_F9,[ssShift],VK_UNKNOWN,[]); + ecQuickCompile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecCleanUpCompiled: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAbortBuild: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRun: SetResult(VK_F9,[],VK_F9,[ssMeta]); + ecPause: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecShowExecutionPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecStepInto: SetResult(VK_F7,[],VK_F7,[ssMeta]); + ecStepOver: SetResult(VK_F8,[],VK_F8,[ssMeta]); + ecStepOut: SetResult(VK_F8,[],VK_F8,[ssShift,ssMeta]); + ecRunToCursor: SetResult(VK_F4,[],VK_F4,[ssMeta]); + ecStopProgram: SetResult(VK_F2,[ssCtrl],VK_F2,[ssCtrl,ssMeta]); + ecRemoveBreakPoint: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunParameters: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecRunFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecConfigBuildFile: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecInspect: SetResult(VK_F5,[ssAlt],VK_UNKNOWN,[]); + ecEvaluate: SetResult(VK_F7,[ssCtrl],VK_F7,[ssCtrl,ssMeta]); + ecAddWatch: SetResult(VK_F5,[ssCtrl],VK_F5,[ssCtrl,ssMeta]); + ecAddBpSource: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpAddress: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]); + ecAddBpDataWatch: SetResult(VK_F5,[ssShift],VK_UNKNOWN,[]); + end; +end; + function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme; begin if SchemeName='' then @@ -658,29 +2304,29 @@ begin case TSynPluginSyncroEdit.ConvertCommandToBase(cmd) of // SyncroEdit - ecSynPSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell; - ecSynPSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel; - ecSynPSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell; - ecSynPSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel; - ecSynPSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome; - ecSynPSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd; - ecSynPSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect; - ecSynPSyncroEdEscape: Result := srkmecSynPSyncroEdEscape; + ecSynPSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell; + ecSynPSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel; + ecSynPSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell; + ecSynPSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel; + ecSynPSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome; + ecSynPSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd; + ecSynPSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect; + ecSynPSyncroEdEscape: Result := srkmecSynPSyncroEdEscape; end; case TSynPluginSyncroEdit.ConvertCommandToBaseOff(cmd) of // SyncroEdit - ecSynPSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell; - ecSynPSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel; - ecSynPSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell; - ecSynPSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel; - ecSynPSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome; - ecSynPSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd; - ecSynPSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect; - ecSynPSyncroEdEscape: Result := srkmecSynPSyncroEdEscape; + ecSynPSyncroEdNextCell: Result := srkmecSynPSyncroEdNextCell; + ecSynPSyncroEdNextCellSel: Result := srkmecSynPSyncroEdNextCellSel; + ecSynPSyncroEdPrevCell: Result := srkmecSynPSyncroEdPrevCell; + ecSynPSyncroEdPrevCellSel: Result := srkmecSynPSyncroEdPrevCellSel; + ecSynPSyncroEdCellHome: Result := srkmecSynPSyncroEdCellHome; + ecSynPSyncroEdCellEnd: Result := srkmecSynPSyncroEdCellEnd; + ecSynPSyncroEdCellSelect: Result := srkmecSynPSyncroEdCellSelect; + ecSynPSyncroEdEscape: Result := srkmecSynPSyncroEdEscape; end; case TSynPluginSyncroEdit.ConvertCommandToBaseSel(cmd) of // SyncroEdit, during selection - ecSynPSyncroEdStart: Result := srkmecSynPSyncroEdStart; + ecSynPSyncroEdStart: Result := srkmecSynPSyncroEdStart; end; end; @@ -790,1588 +2436,12 @@ begin RaiseGDBException(''); end;} end; -procedure TKeyCommandRelation.SetSingle(NewKeyA: word; NewShiftA: TShiftState; - NewKeyB: word; NewShiftB: TShiftState); -begin - ShortcutA:=IDEShortCut(NewKeyA,NewShiftA,VK_UNKNOWN,[]); - ShortcutB:=IDEShortCut(NewKeyB,NewShiftB,VK_UNKNOWN,[]); -end; - -procedure TKeyCommandRelation.SetSingle(NewKeyA: word; NewShiftA: TShiftState); -begin - SetSingle(NewKeyA,NewShiftA,VK_UNKNOWN,[]); -end; - -procedure TKeyCommandRelation.SetCombo(NewKey1A: word; NewShift1A: TShiftState; - NewKey1B: word; NewShift1B: TShiftState; - NewKey2A: word; NewShift2A: TShiftState; - NewKey2B: word; NewShift2B: TShiftState); -begin - ShortcutA:=IDEShortCut(NewKey1A,NewShift1A,NewKey1B,NewShift1B); - ShortcutB:=IDEShortCut(NewKey2A,NewShift2A,NewKey2B,NewShift2B); -end; - -procedure TKeyCommandRelation.SetCombo(NewKey1A: word; NewShift1A: TShiftState; - NewKey1B: word; NewShift1B: TShiftState); -begin - SetCombo(NewKey1A,NewShift1A,NewKey1B,NewShift1B,VK_UNKNOWN,[],VK_UNKNOWN,[]); -end; - -procedure TKeyCommandRelation.MapShortcut(AScheme: TKeyMapScheme); -begin - case AScheme of - kmsLazarus: GetDefaultKeyForCommand; - kmsClassic: GetDefaultKeyForClassicScheme; - kmsMacOSXApple: GetDefaultKeyForMacOSXScheme; - kmsMacOSXLaz: GetDefaultKeyForMacOSXLazScheme; - kmsCustom: ; - end; -end; function TKeyCommandRelation.GetLocalizedName: string; begin Result:=inherited GetLocalizedName; - if Result='' then begin - Result:=EditorCommandToDescriptionString(Command); - if Result=srkmecunknown then - Result:=Name; - end; -end; - -procedure TKeyCommandRelation.GetDefaultKeyForCommand; -begin - {$IFDEF LCLCarbon} - GetDefaultKeyForMacOSXScheme; - {$ELSE} - GetDefaultKeyForWindowsScheme; - {$ENDIF} -end; - -procedure TKeyCommandRelation.GetDefaultKeyForWindowsScheme; -begin - case Command of - // moving - ecWordLeft: SetSingle(VK_LEFT,[ssCtrl]); - ecWordRight: SetSingle(VK_RIGHT,[ssCtrl]); // WS c - ecLineStart: SetSingle(VK_HOME,[]); - ecLineEnd: SetSingle(VK_END,[]); - ecPageUp: SetSingle(VK_PRIOR,[]); // ,VK_R,[SSCtrl],VK_UNKNOWN,[]); - ecPageDown: SetSingle(VK_NEXT,[]); // ,VK_W,[SSCtrl],VK_UNKNOWN,[]); - ecPageLeft: SetSingle(VK_UNKNOWN,[]); - ecPageRight: SetSingle(VK_UNKNOWN,[]); - ecPageTop: SetSingle(VK_PRIOR,[ssCtrl]); - ecPageBottom: SetSingle(VK_NEXT,[ssCtrl]); - ecEditorTop: SetSingle(VK_HOME,[ssCtrl]); - ecEditorBottom: SetSingle(VK_END,[ssCtrl]); - ecScrollUp: SetSingle(VK_UP,[ssCtrl]); - ecScrollDown: SetSingle(VK_DOWN,[ssCtrl]); - ecScrollLeft: SetSingle(VK_UNKNOWN,[]); - ecScrollRight: SetSingle(VK_UNKNOWN,[]); - - // selection - ecCopy: SetSingle(VK_C,[ssCtrl], VK_Insert,[ssCtrl]); - ecCut: SetSingle(VK_X,[ssCtrl], VK_Delete,[ssShift]); - ecPaste: SetSingle(VK_V,[ssCtrl], VK_Insert,[ssShift]); - ecNormalSelect: SetSingle(VK_UNKNOWN,[]); - ecColumnSelect: SetSingle(VK_UNKNOWN,[]); - ecLineSelect: SetSingle(VK_UNKNOWN,[]); - ecSelWordLeft: SetSingle(VK_LEFT,[ssCtrl,ssShift]); - ecSelWordRight: SetSingle(VK_RIGHT,[ssCtrl,ssShift]); - ecSelLineStart: SetSingle(VK_HOME,[ssShift]); - ecSelLineEnd: SetSingle(VK_END,[ssShift]); - ecSelPageTop: SetSingle(VK_PRIOR,[ssShift,ssCtrl]); - ecSelPageBottom: SetSingle(VK_NEXT,[ssShift,ssCtrl]); - ecSelEditorTop: SetSingle(VK_HOME,[ssShift,ssCtrl]); - ecSelEditorBottom: SetSingle(VK_END,[ssShift,ssCtrl]); - ecSelectAll: SetSingle(VK_A,[ssCtrl]); - ecSelectToBrace: SetSingle(VK_UNKNOWN,[]); - ecSelectCodeBlock: SetSingle(VK_UNKNOWN,[]); - ecSelectWord: SetCombo(VK_K,[SSCtrl],VK_T,[]); - ecSelectLine: SetCombo(VK_K,[SSCtrl],VK_L,[]); - ecSelectParagraph: SetSingle(VK_UNKNOWN,[]); - ecSelectionUpperCase: SetCombo(VK_K,[SSCtrl],VK_N,[]); - ecSelectionLowerCase: SetCombo(VK_K,[SSCtrl],VK_O,[]); - ecSelectionSwapCase: SetCombo(VK_K,[SSCtrl],VK_P,[]); - ecSelectionTabs2Spaces:SetSingle(VK_UNKNOWN,[]); - ecSelectionEnclose: SetSingle(VK_N,[ssShift,ssCtrl]); - ecSelectionComment: SetSingle(VK_V,[ssShift,ssCtrl]); - ecSelectionUncomment: SetSingle(VK_U,[ssShift,ssCtrl]); - ecToggleComment: SetSingle(VK_W,[ssShift,ssCtrl], VK_OEM_2,[ssCtrl]); - ecSelectionEncloseIFDEF:SetSingle(VK_D,[ssShift,ssCtrl]); - ecSelectionSort: SetSingle(VK_UNKNOWN,[]); - ecSelectionBreakLines: SetSingle(VK_UNKNOWN,[]); - - ecBlockSetBegin: SetCombo(VK_K,[ssCtrl],VK_B,[], VK_K,[ssCtrl],VK_B,[ssCtrl]); - ecBlockSetEnd: SetCombo(VK_K,[ssCtrl],VK_K,[], VK_K,[ssCtrl],VK_K,[ssCtrl]); - ecBlockToggleHide: SetCombo(VK_K,[ssCtrl],VK_H,[], VK_K,[ssCtrl],VK_H,[ssCtrl]); - ecBlockHide: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]); - ecBlockShow: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]); - ecBlockMove: SetCombo(VK_K,[ssCtrl],VK_V,[], VK_K,[ssCtrl],VK_V,[ssCtrl]); - ecBlockCopy: SetCombo(VK_K,[ssCtrl],VK_C,[], VK_K,[ssCtrl],VK_C,[ssCtrl]); - ecBlockDelete: SetCombo(VK_K,[ssCtrl],VK_Y,[], VK_K,[ssCtrl],VK_Y,[ssCtrl]); - ecBlockGotoBegin: SetCombo(VK_Q,[ssCtrl],VK_B,[ssCtrl]); - ecBlockGotoEnd: SetCombo(VK_Q,[ssCtrl],VK_K,[ssCtrl]); - - // column mode selection - ecColSelUp: SetSingle(VK_UP,[ssAlt,ssShift]); - ecColSelDown: SetSingle(VK_DOWN,[ssAlt,ssShift]); - ecColSelLeft: SetSingle(VK_LEFT,[ssAlt,ssShift]); - ecColSelRight: SetSingle(VK_RIGHT,[ssAlt,ssShift]); - ecColSelPageDown: SetSingle(VK_NEXT,[ssAlt,ssShift]); - ecColSelPageBottom: SetSingle(VK_NEXT,[ssAlt,ssShift,ssCtrl]); - ecColSelPageUp: SetSingle(VK_PRIOR,[ssAlt,ssShift]); - ecColSelPageTop: SetSingle(VK_PRIOR,[ssAlt,ssShift,ssCtrl]); - ecColSelLineStart: SetSingle(VK_HOME,[ssAlt,ssShift]); - ecColSelLineEnd: SetSingle(VK_END,[ssAlt,ssShift]); - ecColSelEditorTop: SetSingle(VK_HOME,[ssAlt,ssShift,ssCtrl]); - ecColSelEditorBottom: SetSingle(VK_END,[ssAlt,ssShift,ssCtrl]); - - // editing - ecBlockIndent: SetCombo(VK_I,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_I,[]); - ecBlockUnindent: SetCombo(VK_U,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_U,[]); - ecDeleteLastChar: SetSingle(VK_BACK,[], VK_BACK,[ssShift]); // ctrl H used for scroll window. - ecDeleteChar: SetSingle(VK_DELETE,[]); // ctrl G conflicts with GO - ecDeleteWord: SetSingle(VK_T,[ssCtrl]); - ecDeleteLastWord: SetSingle(VK_BACK,[ssCtrl]); - ecDeleteBOL: SetSingle(VK_UNKNOWN,[]); - ecDeleteEOL: SetCombo(VK_Y,[ssCtrl,ssShift],VK_UNKNOWN,[], VK_Q,[ssCtrl],VK_Y,[]); - ecDeleteLine: SetSingle(VK_Y,[ssCtrl]); - ecClearAll: SetSingle(VK_UNKNOWN,[]); - ecLineBreak: SetSingle(VK_RETURN,[]); - ecInsertLine: SetSingle(VK_N,[ssCtrl]); - ecInsertCharacter: SetSingle(VK_M,[ssShift,ssCtrl]); - ecInsertGPLNotice: SetSingle(VK_UNKNOWN,[]); - ecInsertLGPLNotice: SetSingle(VK_UNKNOWN,[]); - ecInsertModifiedLGPLNotice:SetSingle(VK_UNKNOWN,[]); - ecInsertUserName: SetSingle(VK_UNKNOWN,[]); - ecInsertDateTime: SetSingle(VK_UNKNOWN,[]); - ecInsertChangeLogEntry:SetSingle(VK_UNKNOWN,[]); - ecInsertCVSAuthor: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSDate: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSHeader: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSID: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSLog: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSName: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSRevision: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSSource: SetSingle(VK_UNKNOWN,[]); - ecInsertGUID: SetSingle(VK_G,[ssCtrl,ssShift]); - ecInsertFilename: SetSingle(VK_UNKNOWN,[]); - - // command commands - ecUndo: SetSingle(VK_Z,[ssCtrl]); - ecRedo: SetSingle(VK_Z,[ssCtrl,ssShift]); - - // search & replace - ecMatchBracket: SetSingle(VK_UNKNOWN,[]); - ecFind: SetCombo(VK_F,[SSCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_F,[]); - ecFindNext: SetSingle(VK_F3,[], VK_L,[SSCtrl]); - ecFindPrevious: SetSingle(VK_F3,[ssShift]); - ecFindInFiles: SetSingle(VK_F,[ssCtrl,ssShift]); - ecReplace: SetCombo(VK_R,[SSCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_A,[]); - ecIncrementalFind: SetSingle(VK_E,[SSCtrl]); - ecGotoLineNumber: SetCombo(VK_G,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_G,[]); - ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]); - ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]); - ecJumpBack: SetSingle(VK_H,[ssCtrl]); - ecJumpForward: SetSingle(VK_H,[ssCtrl,ssShift]); - ecAddJumpPoint: SetSingle(VK_UNKNOWN,[]); - ecJumpToPrevError: SetSingle(VK_F8,[ssCtrl, ssShift]); - ecJumpToNextError: SetSingle(VK_F8,[ssCtrl]); - ecOpenFileAtCursor: SetSingle(VK_RETURN,[ssCtrl]); - ecProcedureList: SetSingle(VK_G,[ssAlt]); - - // marker - ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]); - ecPrevBookmark: SetSingle(VK_UNKNOWN,[]); - ecNextBookmark: SetSingle(VK_UNKNOWN,[]); - ecGotoMarker0: SetCombo(VK_0,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_0,[]); - ecGotoMarker1: SetCombo(VK_1,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_1,[]); - ecGotoMarker2: SetCombo(VK_2,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_2,[]); - ecGotoMarker3: SetCombo(VK_3,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_3,[]); - ecGotoMarker4: SetCombo(VK_4,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_4,[]); - ecGotoMarker5: SetCombo(VK_5,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_5,[]); - ecGotoMarker6: SetCombo(VK_6,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_6,[]); - ecGotoMarker7: SetCombo(VK_7,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_7,[]); - ecGotoMarker8: SetCombo(VK_8,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_8,[]); - ecGotoMarker9: SetCombo(VK_9,[ssCtrl],VK_UNKNOWN,[], VK_Q,[SSCtrl],VK_9,[]); - ecToggleMarker0: SetCombo(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_0,[]); - ecToggleMarker1: SetCombo(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_1,[]); - ecToggleMarker2: SetCombo(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_2,[]); - ecToggleMarker3: SetCombo(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_3,[]); - ecToggleMarker4: SetCombo(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_4,[]); - ecToggleMarker5: SetCombo(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_5,[]); - ecToggleMarker6: SetCombo(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_6,[]); - ecToggleMarker7: SetCombo(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_7,[]); - ecToggleMarker8: SetCombo(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_8,[]); - ecToggleMarker9: SetCombo(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_9,[]); - ecSetMarker0: SetSingle(VK_UNKNOWN,[]); - ecSetMarker1: SetSingle(VK_UNKNOWN,[]); - ecSetMarker2: SetSingle(VK_UNKNOWN,[]); - ecSetMarker3: SetSingle(VK_UNKNOWN,[]); - ecSetMarker4: SetSingle(VK_UNKNOWN,[]); - ecSetMarker5: SetSingle(VK_UNKNOWN,[]); - ecSetMarker6: SetSingle(VK_UNKNOWN,[]); - ecSetMarker7: SetSingle(VK_UNKNOWN,[]); - ecSetMarker8: SetSingle(VK_UNKNOWN,[]); - ecSetMarker9: SetSingle(VK_UNKNOWN,[]); - - // codetools - ecAutoCompletion: SetSingle(VK_J,[ssCtrl]); - ecWordCompletion: SetSingle(VK_W,[ssCtrl]); - ecCompleteCode: SetSingle(VK_C,[ssCtrl,ssShift]); - ecIdentCompletion: SetSingle(VK_SPACE,[ssCtrl]); - ecShowCodeContext: SetSingle(VK_SPACE,[ssCtrl,ssShift]); - ecExtractProc: SetSingle(VK_UNKNOWN,[]); - ecFindIdentifierRefs: SetSingle(VK_I,[ssCtrl,ssShift]); - ecRenameIdentifier: SetSingle(VK_F2,[], VK_E,[ssShift,ssCtrl]); - ecInvertAssignment: SetSingle(VK_UNKNOWN,[]); - ecSyntaxCheck: SetSingle(VK_UNKNOWN,[]); - ecGuessUnclosedBlock: SetSingle(VK_UNKNOWN,[]); - ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[]); - ecConvertDFM2LFM: SetSingle(VK_UNKNOWN,[]); - ecCheckLFM: SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiUnit: SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiProject:SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiPackage:SetSingle(VK_UNKNOWN,[]); - ecConvertEncoding: SetSingle(VK_UNKNOWN,[]); - ecFindProcedureDefinition:SetSingle(VK_UP,[ssShift,SSCtrl]); - ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl]); - ecFindDeclaration: SetSingle(VK_UP,[ssAlt]); - ecFindBlockOtherEnd: SetCombo(VK_Q,[ssCtrl],VK_K,[]); - ecFindBlockStart: SetCombo(VK_Q,[ssCtrl],VK_B,[]); - ecGotoIncludeDirective:SetSingle(VK_UNKNOWN,[]); - ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[]); - ecRemoveEmptyMethods: SetSingle(VK_UNKNOWN,[]); - ecRemoveUnusedUnits: SetSingle(VK_UNKNOWN,[]); - ecUseUnit: SetSingle(VK_F11,[ssAlt]); - ecFindOverloads: SetSingle(VK_UNKNOWN,[]); - - // source notebook - ecNextEditor: SetSingle(VK_TAB,[ssCtrl]); - ecPrevEditor: SetSingle(VK_TAB,[ssShift,ssCtrl]); - ecResetDebugger: SetSingle(VK_UNKNOWN,[]); - ecToggleBreakPoint: SetSingle(VK_F5,[]); - ecMoveEditorLeft: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorRight: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorLeftmost: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorRightmost: SetSingle(VK_UNKNOWN,[]); - - ecNextSharedEditor: SetSingle(VK_UNKNOWN,[]); - ecPrevSharedEditor: SetSingle(VK_UNKNOWN,[]); - ecNextWindow: SetSingle(VK_UNKNOWN,[]); - ecPrevWindow: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorNextWindow:SetSingle(VK_UNKNOWN,[]); - ecMoveEditorPrevWindow:SetSingle(VK_UNKNOWN,[]); - ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[]); - ecCopyEditorNextWindow:SetSingle(VK_UNKNOWN,[]); - ecCopyEditorPrevWindow:SetSingle(VK_UNKNOWN,[]); - ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[]); - - ecGotoEditor1: SetSingle(VK_1,[ssAlt]); - ecGotoEditor2: SetSingle(VK_2,[ssAlt]); - ecGotoEditor3: SetSingle(VK_3,[ssAlt]); - ecGotoEditor4: SetSingle(VK_4,[ssAlt]); - ecGotoEditor5: SetSingle(VK_5,[ssAlt]); - ecGotoEditor6: SetSingle(VK_6,[ssAlt]); - ecGotoEditor7: SetSingle(VK_7,[ssAlt]); - ecGotoEditor8: SetSingle(VK_8,[ssAlt]); - ecGotoEditor9: SetSingle(VK_9,[ssAlt]); - ecGotoEditor0: SetSingle(VK_0,[ssAlt]); - - ecLockEditor: SetSingle(VK_UNKNOWN,[]); - - EcFoldLevel1: SetSingle(VK_1,[ssAlt,ssShift]); - EcFoldLevel2: SetSingle(VK_2,[ssAlt,ssShift]); - EcFoldLevel3: SetSingle(VK_3,[ssAlt,ssShift]); - EcFoldLevel4: SetSingle(VK_4,[ssAlt,ssShift]); - EcFoldLevel5: SetSingle(VK_5,[ssAlt,ssShift]); - EcFoldLevel6: SetSingle(VK_6,[ssAlt,ssShift]); - EcFoldLevel7: SetSingle(VK_7,[ssAlt,ssShift]); - EcFoldLevel8: SetSingle(VK_8,[ssAlt,ssShift]); - EcFoldLevel9: SetSingle(VK_9,[ssAlt,ssShift]); - EcFoldLevel0: SetSingle(VK_0,[ssAlt,ssShift]); - EcFoldCurrent: SetSingle(VK_OEM_MINUS,[ssAlt,ssShift]); - EcUnFoldCurrent: SetSingle(VK_OEM_PLUS,[ssAlt,ssShift]); - EcToggleMarkupWord: SetSingle(VK_M,[ssAlt]); - - // file menu - ecNew: SetSingle(VK_UNKNOWN,[]); - ecNewUnit: SetSingle(VK_UNKNOWN,[]); - ecNewForm: SetSingle(VK_UNKNOWN,[]); - ecOpen: SetSingle(VK_O,[ssCtrl]); - ecRevert: SetSingle(VK_UNKNOWN,[]); - ecSave: SetSingle(VK_S,[ssCtrl]); - ecSaveAs: SetSingle(VK_UNKNOWN,[]); - ecSaveAll: SetSingle(VK_S,[ssCtrl,ssShift]); - ecClose: SetSingle(VK_F4,[ssCtrl]); - ecCloseAll: SetSingle(VK_UNKNOWN,[]); - ecCleanDirectory: SetSingle(VK_UNKNOWN,[]); - ecRestart: SetSingle(VK_UNKNOWN,[]); - ecQuit: SetSingle(VK_UNKNOWN,[]); - - // view menu - ecToggleObjectInsp: SetSingle(VK_F11,[]); - ecToggleSourceEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleCodeExpl: SetSingle(VK_UNKNOWN,[]); - ecToggleFPDocEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleMessages: SetSingle(VK_UNKNOWN,[]); - ecViewComponents: SetSingle(VK_P,[ssCtrl,ssAlt]); - ecViewJumpHistory: SetSingle(VK_J,[ssCtrl,ssAlt]); - ecToggleSearchResults: SetSingle(VK_F,[ssCtrl,ssAlt]); - ecToggleWatches: SetSingle(VK_W,[ssCtrl,ssAlt]); - ecToggleBreakPoints: SetSingle(VK_B,[ssCtrl,ssAlt]); - ecToggleLocals: SetSingle(VK_L,[ssCtrl,ssAlt]); - ecViewPseudoTerminal: if HasConsoleSupport then SetSingle(VK_O,[ssCtrl,ssAlt]); - ecViewThreads: SetSingle(VK_T,[ssCtrl,ssAlt]); - ecToggleCallStack: SetSingle(VK_S,[ssCtrl,ssAlt]); - ecToggleRegisters: SetSingle(VK_R,[ssCtrl,ssAlt]); - ecToggleAssembler: SetSingle(VK_D,[ssCtrl,ssAlt]); - ecToggleDebugEvents: SetSingle(VK_V,[ssCtrl,ssAlt]); - ecToggleDebuggerOut: SetSingle(VK_UNKNOWN,[]); - ecViewHistory: SetSingle(VK_H,[ssCtrl,ssAlt]); - ecViewUnitDependencies:SetSingle(VK_UNKNOWN,[]); - ecViewUnitInfo: SetSingle(VK_UNKNOWN,[]); - ecToggleFormUnit: SetSingle(VK_F12,[]); - ecViewAnchorEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleCodeBrowser: SetSingle(VK_UNKNOWN,[]); - ecToggleRestrictionBrowser:SetSingle(VK_UNKNOWN,[]); - ecToggleCompPalette: SetSingle(VK_UNKNOWN,[]); - ecToggleIDESpeedBtns: SetSingle(VK_UNKNOWN,[]); - - // project menu - ecNewProject: SetSingle(VK_UNKNOWN,[]); - ecNewProjectFromFile: SetSingle(VK_UNKNOWN,[]); - ecOpenProject: SetSingle(VK_F11,[ssCtrl]); - ecCloseProject: SetSingle(VK_UNKNOWN,[]); - ecSaveProject: SetSingle(VK_UNKNOWN,[]); - ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); - ecPublishProject: SetSingle(VK_UNKNOWN,[]); - ecProjectInspector: SetSingle(VK_UNKNOWN,[]); - ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]); - ecRemoveFromProj: SetSingle(VK_UNKNOWN,[]); - ecViewProjectUnits: SetSingle(VK_F12,[ssCtrl]); - ecViewProjectForms: SetSingle(VK_F12,[ssShift]); - ecViewProjectSource: SetSingle(VK_UNKNOWN,[]); - ecProjectOptions: SetSingle(VK_F11,[ssShift,ssCtrl]); - - // run menu - ecCompile: SetSingle(VK_F9,[ssCtrl]); - ecBuild: SetSingle(VK_F9,[ssShift]); - ecQuickCompile: SetSingle(VK_UNKNOWN,[]); - ecCleanUpCompiled: SetSingle(VK_UNKNOWN,[]); - ecAbortBuild: SetSingle(VK_UNKNOWN,[]); - ecRun: SetSingle(VK_F9,[]); - ecPause: SetSingle(VK_UNKNOWN,[]); - ecShowExecutionPoint: SetSingle(VK_UNKNOWN,[]); - ecStepInto: SetSingle(VK_F7,[]); - ecStepOver: SetSingle(VK_F8,[]); - ecStepIntoInstr: SetSingle(VK_F7,[ssAlt]); - ecStepOverInstr: SetSingle(VK_F8,[ssAlt]); - ecStepOut: SetSingle(VK_F8,[ssShift]); - ecRunToCursor: SetSingle(VK_F4,[]); - ecStopProgram: SetSingle(VK_F2,[SSCtrl]); - ecRemoveBreakPoint: SetSingle(VK_UNKNOWN,[]); - ecRunParameters: SetSingle(VK_UNKNOWN,[]); - ecBuildFile: SetSingle(VK_UNKNOWN,[]); - ecRunFile: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildFile: SetSingle(VK_UNKNOWN,[]); - ecInspect: SetSingle(VK_F5,[ssAlt]); - ecEvaluate: SetSingle(VK_F7,[ssCtrl]); - ecAddWatch: SetSingle(VK_F5,[ssCtrl]); - ecAddBpSource: SetSingle(VK_UNKNOWN,[]); - ecAddBpAddress: SetSingle(VK_UNKNOWN,[]); - ecAddBpDataWatch: SetSingle(VK_F5,[ssShift]); - - // components menu - ecNewPackage: SetSingle(VK_UNKNOWN,[]); - ecOpenPackage: SetSingle(VK_UNKNOWN,[]); - ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]); - ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]); - ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]); - ecPackageGraph: SetSingle(VK_UNKNOWN,[]); - ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]); - ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]); - - // tools menu - ecExtToolSettings: SetSingle(VK_UNKNOWN,[]); - ecManageExamples: SetSingle(VK_UNKNOWN,[]); - ecBuildLazarus: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildLazarus: SetSingle(VK_UNKNOWN,[]); - ecMakeResourceString: SetSingle(VK_UNKNOWN,[]); - ecDiff: SetSingle(VK_UNKNOWN,[]); - - // environment (in Tools menu) - ecEnvironmentOptions: SetSingle(VK_O,[ssShift,ssCtrl]); - ecRescanFPCSrcDir: SetSingle(VK_UNKNOWN,[]); - ecEditCodeTemplates: SetSingle(VK_UNKNOWN,[]); - ecCodeToolsDefinesEd: SetSingle(VK_UNKNOWN,[]); - - // help menu - ecAboutLazarus: SetSingle(VK_UNKNOWN,[]); - ecOnlineHelp: SetSingle(VK_UNKNOWN,[]); - ecContextHelp: SetSingle(VK_F1,[]); - ecEditContextHelp: SetSingle(VK_F1,[ssShift,ssCtrl]); - ecReportingBug: SetSingle(VK_UNKNOWN,[]); - ecFocusHint: SetSingle(VK_UNKNOWN,[]); - - // designer - ecDesignerCopy: SetSingle(VK_C,[ssCtrl], VK_Insert,[ssCtrl]); - ecDesignerCut: SetSingle(VK_X,[ssCtrl], VK_Delete,[ssShift]); - ecDesignerPaste: SetSingle(VK_V,[ssCtrl], VK_Insert,[ssShift]); - ecDesignerSelectParent:SetSingle(VK_ESCAPE,[]); - ecDesignerMoveToFront: SetSingle(VK_PRIOR,[ssShift]); - ecDesignerMoveToBack: SetSingle(VK_NEXT,[ssShift]); - ecDesignerForwardOne: SetSingle(VK_PRIOR,[ssCtrl]); - ecDesignerBackOne: SetSingle(VK_NEXT,[ssCtrl]); - - else - begin - SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); - case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of - // Edit template - ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPTmplEdCellHome: SetSingle(VK_HOME,[]); - ecSynPTmplEdCellEnd: SetSingle(VK_END,[]); - ecSynPTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]); - ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]); - ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of - // Edit template - ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]); - ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of - // SyncroEdit - ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPSyncroEdCellHome: SetSingle(VK_HOME,[]); - ecSynPSyncroEdCellEnd: SetSingle(VK_END,[]); - ecSynPSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]); - ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of - // SyncroEdit - ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of - // SyncroEdit, during selection - ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl]); - end; - end; - end; -end; - -procedure TKeyCommandRelation.GetDefaultKeyForClassicScheme; -begin - GetDefaultKeyForWindowsScheme; - - case Command of - // moving - ecLeft: SetSingle(VK_S,[ssCtrl], VK_LEFT,[]); - ecRight: SetSingle(VK_D,[ssCtrl], VK_RIGHT,[]); - ecUp: SetSingle(VK_E,[ssCtrl], VK_UP,[]); - ecDown: SetSingle(VK_X,[ssCtrl], VK_DOWN,[]); - ecWordLeft: SetSingle(VK_A,[ssCtrl], VK_LEFT,[ssCtrl]); - ecWordRight: SetSingle(VK_F,[ssCtrl], VK_RIGHT,[ssCtrl]); - ecLineStart: SetCombo(VK_Q,[ssCtrl],VK_S,[], VK_HOME,[],VK_UNKNOWN,[]); - ecLineEnd: SetCombo(VK_Q,[ssCtrl],VK_D,[], VK_END,[],VK_UNKNOWN,[]); - ecPageUp: SetSingle(VK_R,[ssCtrl], VK_PRIOR,[]); - ecPageDown: SetSingle(VK_C,[ssCtrl], VK_NEXT,[]); - // Paragraph Down: VK_B, [ssCtrl] - ecPageLeft: SetSingle(VK_UNKNOWN,[]); - ecPageRight: SetSingle(VK_UNKNOWN,[]); - ecPageTop: SetCombo(VK_Q,[ssCtrl],VK_E,[], VK_HOME,[ssCtrl],VK_UNKNOWN,[]); - ecPageBottom: SetCombo(VK_Q,[ssCtrl],VK_X,[], VK_END,[ssCtrl],VK_UNKNOWN,[]); - ecEditorTop: SetCombo(VK_Q,[ssCtrl],VK_R,[], VK_PRIOR,[ssCtrl],VK_UNKNOWN,[]); - ecEditorBottom: SetCombo(VK_Q,[ssCtrl],VK_C,[], VK_NEXT,[ssCtrl],VK_UNKNOWN,[]); - ecScrollUp: SetSingle(VK_W,[ssCtrl], VK_UP,[ssCtrl]); - ecScrollDown: SetSingle(VK_Z,[ssCtrl], VK_DOWN,[ssCtrl]); - ecScrollLeft: SetSingle(VK_UNKNOWN,[]); - ecScrollRight: SetSingle(VK_UNKNOWN,[]); - - // selection - ecCopy: SetSingle(VK_Insert,[ssCtrl]); - ecCut: SetSingle(VK_Delete,[ssShift]); - ecPaste: SetSingle(VK_Insert,[ssShift]); - ecNormalSelect: SetSingle(VK_UNKNOWN,[]); - ecColumnSelect: SetSingle(VK_UNKNOWN,[]); - ecLineSelect: SetCombo(VK_K,[ssCtrl],VK_L,[], VK_K,[ssCtrl],VK_L,[ssCtrl]); - ecSelWordLeft: SetSingle(VK_LEFT,[ssCtrl,ssShift]); - ecSelWordRight: SetSingle(VK_RIGHT,[ssCtrl,ssShift]); - ecSelLineStart: SetSingle(VK_HOME,[ssShift]); - ecSelLineEnd: SetSingle(VK_END,[ssShift]); - ecSelPageTop: SetSingle(VK_HOME,[ssShift,ssCtrl]); - ecSelPageBottom: SetSingle(VK_END,[ssShift,ssCtrl]); - ecSelEditorTop: SetSingle(VK_PRIOR,[ssShift,ssCtrl]); - ecSelEditorBottom: SetSingle(VK_NEXT,[ssShift,ssCtrl]); - ecSelectAll: SetSingle(VK_UNKNOWN,[]); - ecSelectToBrace: SetSingle(VK_UNKNOWN,[]); - ecSelectCodeBlock: SetSingle(VK_UNKNOWN,[]); - ecSelectWord: SetCombo(VK_K,[ssCtrl],VK_T,[]); - ecSelectLine: SetCombo(VK_O,[ssCtrl],VK_L,[]); - ecSelectParagraph: SetSingle(VK_UNKNOWN,[]); - ecSelectionUpperCase: SetCombo(VK_K,[ssCtrl],VK_N,[]); - ecSelectionLowerCase: SetCombo(VK_K,[ssCtrl],VK_O,[]); - ecSelectionSwapCase: SetCombo(VK_K,[SSCtrl],VK_P,[]); - ecSelectionTabs2Spaces:SetSingle(VK_UNKNOWN,[]); - ecSelectionEnclose: SetSingle(VK_UNKNOWN,[]); - ecSelectionComment: SetSingle(VK_UNKNOWN,[]); - ecSelectionUncomment: SetSingle(VK_UNKNOWN,[]); - ecToggleComment: SetSingle(VK_OEM_2,[ssCtrl]); - ecSelectionEncloseIFDEF:SetSingle(VK_D,[ssShift,ssCtrl]); - ecSelectionSort: SetSingle(VK_UNKNOWN,[]); - ecSelectionBreakLines: SetSingle(VK_UNKNOWN,[]); - - ecBlockSetBegin: SetCombo(VK_K,[ssCtrl],VK_B,[], VK_K,[ssCtrl],VK_B,[ssCtrl]); - ecBlockSetEnd: SetCombo(VK_K,[ssCtrl],VK_K,[], VK_K,[ssCtrl],VK_K,[ssCtrl]); - ecBlockToggleHide: SetCombo(VK_K,[ssCtrl],VK_H,[], VK_K,[ssCtrl],VK_H,[ssCtrl]); - ecBlockHide: SetSingle(VK_UNKNOWN,[]); - ecBlockShow: SetSingle(VK_UNKNOWN,[]); - ecBlockMove: SetCombo(VK_K,[ssCtrl],VK_V,[], VK_K,[ssCtrl],VK_V,[ssCtrl]); - ecBlockCopy: SetCombo(VK_K,[ssCtrl],VK_C,[], VK_K,[ssCtrl],VK_C,[ssCtrl]); - ecBlockDelete: SetCombo(VK_K,[ssCtrl],VK_Y,[], VK_K,[ssCtrl],VK_Y,[ssCtrl]); - ecBlockGotoBegin: SetCombo(VK_Q,[ssCtrl],VK_B,[ssCtrl]); - ecBlockGotoEnd: SetCombo(VK_Q,[ssCtrl],VK_K,[ssCtrl]); - - // column mode selection - ecColSelUp: SetSingle(VK_UP, [ssAlt, ssShift]); - ecColSelDown: SetSingle(VK_DOWN, [ssAlt, ssShift]); - ecColSelLeft: SetSingle(VK_LEFT, [ssAlt, ssShift]); - ecColSelRight: SetSingle(VK_RIGHT,[ssAlt, ssShift]); - ecColSelPageDown: SetSingle(VK_NEXT, [ssAlt, ssShift]); - ecColSelPageBottom: SetSingle(VK_NEXT, [ssAlt, ssShift,ssCtrl]); - ecColSelPageUp: SetSingle(VK_PRIOR,[ssAlt, ssShift]); - ecColSelPageTop: SetSingle(VK_PRIOR,[ssAlt, ssShift,ssCtrl]); - ecColSelLineStart: SetSingle(VK_HOME, [ssAlt, ssShift]); - ecColSelLineEnd: SetSingle(VK_END, [ssAlt, ssShift]); - ecColSelEditorTop: SetSingle(VK_HOME, [ssAlt, ssShift,ssCtrl]); - ecColSelEditorBottom: SetSingle(VK_END, [ssAlt, ssShift,ssCtrl]); - - // editing - ecInsertMode: SetSingle(VK_V,[ssCtrl], VK_INSERT,[]); - ecBlockIndent: SetCombo(VK_K,[ssCtrl],VK_I,[], VK_K,[ssCtrl],VK_I,[ssCtrl]); - ecBlockUnindent: SetCombo(VK_K,[ssCtrl],VK_U,[], VK_K,[ssCtrl],VK_U,[ssCtrl]); - ecDeleteLastChar: SetSingle(VK_H,[ssCtrl], VK_BACK,[]); - ecDeleteChar: SetSingle(VK_G,[ssCtrl], VK_DELETE,[]); - ecDeleteWord: SetSingle(VK_T,[ssCtrl]); - ecDeleteLastWord: SetSingle(VK_BACK,[ssCtrl]); - ecDeleteBOL: SetCombo(VK_Q,[ssCtrl],VK_H,[], VK_Q,[ssCtrl],VK_H,[ssCtrl]); - ecDeleteEOL: SetCombo(VK_Q,[ssCtrl],VK_Y,[], VK_Q,[ssCtrl],VK_Y,[ssCtrl]); - ecDeleteLine: SetSingle(VK_Y,[ssCtrl]); - ecClearAll: SetSingle(VK_UNKNOWN,[]); - ecLineBreak: SetSingle(VK_RETURN,[], VK_M,[ssCtrl]); - ecInsertLine: SetSingle(VK_N,[ssCtrl]); - ecInsertCharacter: SetSingle(VK_UNKNOWN,[]); - ecInsertGPLNotice: SetSingle(VK_UNKNOWN,[]); - ecInsertLGPLNotice: SetSingle(VK_UNKNOWN,[]); - ecInsertModifiedLGPLNotice:SetSingle(VK_UNKNOWN,[]); - ecInsertUserName: SetSingle(VK_UNKNOWN,[]); - ecInsertDateTime: SetSingle(VK_UNKNOWN,[]); - ecInsertChangeLogEntry:SetSingle(VK_UNKNOWN,[]); - ecInsertCVSAuthor: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSDate: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSHeader: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSID: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSLog: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSName: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSRevision: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSSource: SetSingle(VK_UNKNOWN,[]); - - // command commands - ecUndo: SetSingle(VK_BACK,[ssALT], VK_U,[ssCtrl]); - ecRedo: SetSingle(VK_BACK,[ssALT,ssShift]); - - // search & replace - ecMatchBracket: SetSingle(VK_UNKNOWN,[]); - ecFind: SetCombo(VK_Q,[SSCtrl],VK_F,[]); - ecFindNext: SetSingle(VK_L,[ssCtrl]); - ecFindPrevious: SetSingle(VK_UNKNOWN,[]); - ecFindInFiles: SetSingle(VK_UNKNOWN,[]); - ecReplace: SetCombo(VK_Q,[SSCtrl],VK_A,[]); - ecIncrementalFind: SetSingle(VK_UNKNOWN,[]); - ecGotoLineNumber: SetCombo(VK_Q,[ssCtrl],VK_G,[]); - ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]); - ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]); - ecJumpBack: SetSingle(VK_B,[ssCtrl]); - ecJumpForward: SetSingle(VK_B,[ssShift,ssCtrl]); - ecAddJumpPoint: SetSingle(VK_UNKNOWN,[]); - ecJumpToPrevError: SetSingle(VK_F7,[ssShift,ssAlt]); - ecJumpToNextError: SetSingle(VK_F8,[ssShift,ssAlt]); - ecOpenFileAtCursor: SetSingle(VK_RETURN,[ssCtrl]); - - // marker - ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]); - ecPrevBookmark: SetSingle(VK_UNKNOWN,[]); - ecNextBookmark: SetSingle(VK_UNKNOWN,[]); - ecGotoMarker0: SetCombo(VK_Q,[ssCtrl],VK_0,[]); - ecGotoMarker1: SetCombo(VK_Q,[ssCtrl],VK_1,[]); - ecGotoMarker2: SetCombo(VK_Q,[ssCtrl],VK_2,[]); - ecGotoMarker3: SetCombo(VK_Q,[ssCtrl],VK_3,[]); - ecGotoMarker4: SetCombo(VK_Q,[ssCtrl],VK_4,[]); - ecGotoMarker5: SetCombo(VK_Q,[ssCtrl],VK_5,[]); - ecGotoMarker6: SetCombo(VK_Q,[ssCtrl],VK_6,[]); - ecGotoMarker7: SetCombo(VK_Q,[ssCtrl],VK_7,[]); - ecGotoMarker8: SetCombo(VK_Q,[ssCtrl],VK_8,[]); - ecGotoMarker9: SetCombo(VK_Q,[ssCtrl],VK_9,[]); - ecSetMarker0..ecSetMarker9: SetSingle(VK_UNKNOWN,[]); - ecToggleMarker0: SetCombo(VK_K,[ssCtrl],VK_0,[]); - ecToggleMarker1: SetCombo(VK_K,[ssCtrl],VK_1,[]); - ecToggleMarker2: SetCombo(VK_K,[ssCtrl],VK_2,[]); - ecToggleMarker3: SetCombo(VK_K,[ssCtrl],VK_3,[]); - ecToggleMarker4: SetCombo(VK_K,[ssCtrl],VK_4,[]); - ecToggleMarker5: SetCombo(VK_K,[ssCtrl],VK_5,[]); - ecToggleMarker6: SetCombo(VK_K,[ssCtrl],VK_6,[]); - ecToggleMarker7: SetCombo(VK_K,[ssCtrl],VK_7,[]); - ecToggleMarker8: SetCombo(VK_K,[ssCtrl],VK_8,[]); - ecToggleMarker9: SetCombo(VK_K,[ssCtrl],VK_9,[]); - - // codetools - ecAutoCompletion: SetSingle(VK_J,[ssCtrl]); - ecWordCompletion: SetSingle(VK_W,[ssShift,ssCtrl]); - ecCompleteCode: SetSingle(VK_C,[ssShift,ssCtrl]); - ecIdentCompletion: SetSingle(VK_UNKNOWN,[]); - ecShowCodeContext: SetSingle(VK_SPACE,[ssShift,ssCtrl]); - ecExtractProc: SetSingle(VK_UNKNOWN,[]); - ecFindIdentifierRefs: SetSingle(VK_UNKNOWN,[]); - ecRenameIdentifier: SetSingle(VK_E,[ssShift,ssCtrl]); - ecInvertAssignment: SetSingle(VK_UNKNOWN,[]); - ecSyntaxCheck: SetSingle(VK_UNKNOWN,[]); - ecGuessUnclosedBlock: SetSingle(VK_UNKNOWN,[]); - ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[]); - ecConvertDFM2LFM: SetSingle(VK_UNKNOWN,[]); - ecCheckLFM: SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiUnit: SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiProject:SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiPackage:SetSingle(VK_UNKNOWN,[]); - ecConvertEncoding: SetSingle(VK_UNKNOWN,[]); - ecFindProcedureDefinition:SetSingle(VK_UP,[ssShift,SSCtrl]); - ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl]); - ecFindDeclaration: SetSingle(VK_UNKNOWN,[]); - ecFindBlockOtherEnd: SetCombo(VK_Q,[ssCtrl],VK_K,[]); - ecFindBlockStart: SetCombo(VK_Q,[ssCtrl],VK_B,[]); - ecGotoIncludeDirective:SetSingle(VK_UNKNOWN,[]); - ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[]); - ecRemoveEmptyMethods: SetSingle(VK_UNKNOWN,[]); - - // source notebook - ecNextEditor: SetSingle(VK_F6,[], VK_TAB,[ssCtrl]); - ecPrevEditor: SetSingle(VK_F6,[ssShift], VK_TAB,[ssShift,ssCtrl]); - ecResetDebugger: SetSingle(VK_UNKNOWN,[]); - ecToggleBreakPoint: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorLeft: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorRight: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorLeftmost: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorRightmost: SetSingle(VK_UNKNOWN,[]); - - ecNextSharedEditor: SetSingle(VK_UNKNOWN,[]); - ecPrevSharedEditor: SetSingle(VK_UNKNOWN,[]); - ecNextWindow: SetSingle(VK_UNKNOWN,[]); - ecPrevWindow: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorNextWindow:SetSingle(VK_UNKNOWN,[]); - ecMoveEditorPrevWindow:SetSingle(VK_UNKNOWN,[]); - ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[]); - ecCopyEditorNextWindow:SetSingle(VK_UNKNOWN,[]); - ecCopyEditorPrevWindow:SetSingle(VK_UNKNOWN,[]); - ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[]); - - ecGotoEditor1: SetSingle(VK_1,[ssAlt]); - ecGotoEditor2: SetSingle(VK_2,[ssAlt]); - ecGotoEditor3: SetSingle(VK_3,[ssAlt]); - ecGotoEditor4: SetSingle(VK_4,[ssAlt]); - ecGotoEditor5: SetSingle(VK_5,[ssAlt]); - ecGotoEditor6: SetSingle(VK_6,[ssAlt]); - ecGotoEditor7: SetSingle(VK_7,[ssAlt]); - ecGotoEditor8: SetSingle(VK_8,[ssAlt]); - ecGotoEditor9: SetSingle(VK_9,[ssAlt]); - ecGotoEditor0: SetSingle(VK_0,[ssAlt]); - - ecLockEditor: SetSingle(VK_UNKNOWN,[]); - - EcFoldLevel1: SetSingle(VK_1,[ssAlt,ssShift]); - EcFoldLevel2: SetSingle(VK_2,[ssAlt,ssShift]); - EcFoldLevel3: SetSingle(VK_3,[ssAlt,ssShift]); - EcFoldLevel4: SetSingle(VK_4,[ssAlt,ssShift]); - EcFoldLevel5: SetSingle(VK_5,[ssAlt,ssShift]); - EcFoldLevel6: SetSingle(VK_6,[ssAlt,ssShift]); - EcFoldLevel7: SetSingle(VK_7,[ssAlt,ssShift]); - EcFoldLevel8: SetSingle(VK_8,[ssAlt,ssShift]); - EcFoldLevel9: SetSingle(VK_9,[ssAlt,ssShift]); - EcFoldLevel0: SetSingle(VK_0,[ssAlt,ssShift]); - EcFoldCurrent: SetSingle(VK_OEM_PLUS,[ssAlt,ssShift]); - EcUnFoldCurrent: SetSingle(VK_OEM_MINUS,[ssAlt,ssShift]); - EcToggleMarkupWord: SetSingle(VK_M,[ssAlt]); - - // file menu - ecNew: SetSingle(VK_UNKNOWN,[]); - ecNewUnit: SetSingle(VK_UNKNOWN,[]); - ecNewForm: SetSingle(VK_UNKNOWN,[]); - ecOpen: SetSingle(VK_F3,[]); - ecRevert: SetSingle(VK_UNKNOWN,[]); - ecSave: SetSingle(VK_F2,[]); - ecSaveAs: SetSingle(VK_UNKNOWN,[]); - ecSaveAll: SetSingle(VK_F2,[ssShift]); - ecClose: SetSingle(VK_F3,[ssAlt]); - ecCloseAll: SetSingle(VK_UNKNOWN,[]); - ecCleanDirectory: SetSingle(VK_UNKNOWN,[]); - ecRestart: SetSingle(VK_UNKNOWN,[]); - ecQuit: SetSingle(VK_X,[ssAlt]); - - // view menu - ecToggleObjectInsp: SetSingle(VK_F11,[]); - ecToggleSourceEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleCodeExpl: SetSingle(VK_UNKNOWN,[]); - ecToggleFPDocEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleMessages: SetSingle(VK_UNKNOWN,[]); - ecViewComponents: SetSingle(VK_UNKNOWN,[]); - ecViewJumpHistory: SetSingle(VK_UNKNOWN,[]); - ecToggleSearchResults: SetSingle(VK_UNKNOWN,[]); - ecToggleWatches: SetSingle(VK_UNKNOWN,[]); - ecToggleBreakPoints: SetSingle(VK_F8,[ssCtrl]); - ecToggleLocals: SetSingle(VK_UNKNOWN,[]); - ecToggleCallStack: SetSingle(VK_F3,[ssCtrl]); - ecToggleRegisters: SetSingle(VK_UNKNOWN,[]); - ecToggleAssembler: SetSingle(VK_UNKNOWN,[]); - ecToggleDebugEvents: SetSingle(VK_UNKNOWN,[]); - ecToggleDebuggerOut: SetSingle(VK_UNKNOWN,[]); - ecViewUnitDependencies:SetSingle(VK_UNKNOWN,[]); - ecViewUnitInfo: SetSingle(VK_UNKNOWN,[]); - ecToggleFormUnit: SetSingle(VK_F12,[]); - ecViewAnchorEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleCodeBrowser: SetSingle(VK_UNKNOWN,[]); - ecToggleRestrictionBrowser:SetSingle(VK_UNKNOWN,[]); - ecToggleCompPalette: SetSingle(VK_UNKNOWN,[]); - ecToggleIDESpeedBtns: SetSingle(VK_UNKNOWN,[]); - - // project menu - ecNewProject: SetSingle(VK_UNKNOWN,[]); - ecNewProjectFromFile: SetSingle(VK_UNKNOWN,[]); - ecOpenProject: SetSingle(VK_F11,[ssCtrl]); - ecCloseProject: SetSingle(VK_UNKNOWN,[]); - ecSaveProject: SetSingle(VK_UNKNOWN,[]); - ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); - ecPublishProject: SetSingle(VK_UNKNOWN,[]); - ecProjectInspector: SetSingle(VK_UNKNOWN,[]); - ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]); - ecRemoveFromProj: SetSingle(VK_UNKNOWN,[]); - ecViewProjectUnits: SetSingle(VK_F12,[ssCtrl]); - ecViewProjectForms: SetSingle(VK_F12,[ssShift]); - ecViewProjectSource: SetSingle(VK_UNKNOWN,[]); - ecProjectOptions: SetSingle(VK_F11,[ssShift,ssCtrl]); - - // run menu - ecCompile: SetSingle(VK_F9,[ssCtrl]); - ecBuild: SetSingle(VK_F9,[ssShift]); - ecQuickCompile: SetSingle(VK_UNKNOWN,[]); - ecCleanUpCompiled: SetSingle(VK_UNKNOWN,[]); - ecAbortBuild: SetSingle(VK_UNKNOWN,[]); - ecRun: SetSingle(VK_F9,[]); - ecPause: SetSingle(VK_UNKNOWN,[]); - ecShowExecutionPoint: SetSingle(VK_UNKNOWN,[]); - ecStepInto: SetSingle(VK_F7,[]); - ecStepOver: SetSingle(VK_F8,[]); - ecStepIntoInstr: SetSingle(VK_F7,[ssAlt]); - ecStepOverInstr: SetSingle(VK_F8,[ssAlt]); - ecStepOut: SetSingle(VK_F8,[ssShift]); - ecRunToCursor: SetSingle(VK_F4,[]); - ecStopProgram: SetSingle(VK_UNKNOWN,[]); - ecRemoveBreakPoint: SetSingle(VK_UNKNOWN,[]); - ecRunParameters: SetSingle(VK_UNKNOWN,[]); - ecBuildFile: SetSingle(VK_UNKNOWN,[]); - ecRunFile: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildFile: SetSingle(VK_UNKNOWN,[]); - ecInspect: SetSingle(VK_UNKNOWN,[]); - ecEvaluate: SetSingle(VK_F4,[ssCtrl]); - ecAddWatch: SetSingle(VK_F7,[ssCtrl]); - ecAddBpSource: SetSingle(VK_UNKNOWN,[]); - ecAddBpAddress: SetSingle(VK_UNKNOWN,[]); - ecAddBpDataWatch: SetSingle(VK_UNKNOWN,[]); - - // components menu - ecNewPackage: SetSingle(VK_UNKNOWN,[]); - ecOpenPackage: SetSingle(VK_UNKNOWN,[]); - ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]); - ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]); - ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]); - ecPackageGraph: SetSingle(VK_UNKNOWN,[]); - ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]); - ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]); - - // tools menu - ecExtToolSettings: SetSingle(VK_UNKNOWN,[]); - ecManageExamples: SetSingle(VK_UNKNOWN,[]); - ecBuildLazarus: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildLazarus: SetSingle(VK_UNKNOWN,[]); - ecMakeResourceString: SetSingle(VK_UNKNOWN,[]); - ecDiff: SetSingle(VK_UNKNOWN,[]); - - // environment menu - ecEnvironmentOptions: SetSingle(VK_UNKNOWN,[]); - ecRescanFPCSrcDir: SetSingle(VK_UNKNOWN,[]); - ecEditCodeTemplates: SetSingle(VK_UNKNOWN,[]); - ecCodeToolsDefinesEd: SetSingle(VK_UNKNOWN,[]); - - // help menu - ecAboutLazarus: SetSingle(VK_UNKNOWN,[]); - ecOnlineHelp: SetSingle(VK_UNKNOWN,[]); - ecContextHelp: SetSingle(VK_F1,[ssCtrl]); - ecEditContextHelp: SetSingle(VK_F1,[ssCtrl,ssShift]); - ecReportingBug: SetSingle(VK_UNKNOWN,[]); - ecFocusHint: SetSingle(VK_UNKNOWN,[]); - - // designer - ecDesignerCopy: SetSingle(VK_C,[ssCtrl], VK_Insert,[ssCtrl]); - ecDesignerCut: SetSingle(VK_X,[ssCtrl], VK_Delete,[ssShift]); - ecDesignerPaste: SetSingle(VK_V,[ssCtrl], VK_Insert,[ssShift]); - ecDesignerSelectParent:SetSingle(VK_ESCAPE,[]); - ecDesignerMoveToFront: SetSingle(VK_PRIOR,[ssShift]); - ecDesignerMoveToBack: SetSingle(VK_NEXT,[ssShift]); - ecDesignerForwardOne: SetSingle(VK_PRIOR,[ssCtrl]); - ecDesignerBackOne: SetSingle(VK_NEXT,[ssCtrl]); - - else - begin - SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); - SetSingle(VK_UNKNOWN,[],VK_UNKNOWN,[]); - case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of - // Edit template - ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPTmplEdCellHome: SetSingle(VK_HOME,[]); - ecSynPTmplEdCellEnd: SetSingle(VK_END,[]); - ecSynPTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]); - ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]); - ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of - // Edit template - ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]); - ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of - // SyncroEdit - ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPSyncroEdCellHome: SetSingle(VK_HOME,[]); - ecSynPSyncroEdCellEnd: SetSingle(VK_END,[]); - ecSynPSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]); - ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of - // SyncroEdit - ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of - // SyncroEdit, during selection - ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl]); - end; - end; - end; -(*//F1 Topic Search -//Ctrl+F1 Topic Search - ecNextEditor: SetSingle(VK_F6,[]); - ecPrevEditor: SetSingle(VK_F6,[ssShift]); - ecWordLeft: SetSingle(VK_A,[ssCtrl],VK_LEFT,[ssCtrl]); - ecPageDown: SetSingle(VK_C,[ssCtrl],VK_NEXT,[]); -//Ctrl+D Moves the cursor right one column, accounting for the -//autoindent setting -//Ctrl+E Moves the cursor up one line -//Ctrl+F Moves one word right -//Ctrl+G Deletes the character to the right of the cursor -//Ctrl+H Deletes the character to the left of the cursor -//Ctrl+I Inserts a tab -//Ctrl+L Search|Search Again -//Ctrl+N Inserts a new line -//Ctrl+P Causes next character to be interpreted as an ASCII -//sequence -//Ctrl+R Moves up one screen -//Ctrl+S Moves the cursor left one column, accounting for the -//autoindent setting -//Ctrl+T Deletes a word -//Ctrl+V Turns insert mode on/off -//Ctrl+W Moves down one screen -//Ctrl+X Moves the cursor down one line -//Ctrl+Y Deletes a line -//Ctrl+Z Moves the cursor up one line -//Ctrl+Shift+S Performs an incremental search - -//Block commands: -//--------------- -//Ctrl+K+B Marks the beginning of a block -//Ctrl+K+C Copies a selected block -//Ctrl+K+H Hides/shows a selected block -//Ctrl+K+I Indents a block by the amount specified in the Block Indent -//combo box on the General page of the Editor Options dialog box. -//Ctrl+K+K Marks the end of a block -//Ctrl+K+L Marks the current line as a block -//Ctrl+K+N Changes a block to uppercase -//Ctrl+K+O Changes a block to lowercase -//Ctrl+K+P Prints selected block -//Ctrl+K+R Reads a block from a file -//Ctrl+K+T Marks a word as a block -//Ctrl+K+U Outdents a block by the amount specified in the Block Indent -//combo box on the General page of the Editor Options dialog box. -//Ctrl+K+V Moves a selected block -//Ctrl+K+W Writes a selected block to a file -//Ctrl+K+Y Deletes a selected block -//Ctrl+O+C Turns on column blocking -//Ctrl+O+I Marks an inclusive block -//Ctrl+O+K Turns off column blocking -//Ctrl+O+L Marks a line as a block -//Shift+Alt+arrow Selects column-oriented blocks -//Click+Alt+mousemv Selects column-oriented blocks -//Ctrl+Q+B Moves to the beginning of a block -//Ctrl+Q+K Moves to the end of a block - -//Miscellaneous commands: -//----------------------- -//Ctrl+K+D Accesses the menu bar -//Ctrl+K+E Changes a word to lowercase -//Ctrl+K+F Changes a word to uppercase -//Ctrl+K+S File|Save (Default and IDE Classic only) -//Ctrl+Q+A Search|Replace -//Ctrl+Q+F Search|Find -//Ctrl+Q+Y Deletes to the end of a line -//Ctrl+Q+[ Finds the matching delimiter (forward) -//Ctrl+Q+Ctrl+[ Finds the matching delimiter (forward) -//Ctrl+Q+] Finds the matching delimiter (backward) -//Ctrl+Q+Ctrl+] Finds the matching delimiter (backward) -//Ctrl+O+A Open file at cursor -//Ctrl+O+B Browse symbol at cursor (Delphi only) -//Alt+right arrow For code browsing -//Alt +left arrow For code browsing -//Ctrl+O+G Search|Go to line number -//Ctrl+O+O Inserts compiler options and directives -//Ctrl+O+U Toggles case -//Bookmark commands: -//------------------ -//Shortcut Action -//Ctrl+K+0 Sets bookmark 0 -//Ctrl+K+1 Sets bookmark 1 -//Ctrl+K+2 Sets bookmark 2 -//Ctrl+K+3 Sets bookmark 3 -//Ctrl+K+4 Sets bookmark 4 -//Ctrl+K+5 Sets bookmark 5 -//Ctrl+K+6 Sets bookmark 6 -//Ctrl+K+7 Sets bookmark 7 -//Ctrl+K+8 Sets bookmark 8 -//Ctrl+K+9 Sets bookmark 9 -//Ctrl+K+Ctrl+0 Sets bookmark 0 -//Ctrl+K+Ctrl+1 Sets bookmark 1 -//Ctrl+K+Ctrl+2 Sets bookmark 2 -//Ctrl+K+Ctrl+3 Sets bookmark 3 -//Ctrl+K+Ctrl+4 Sets bookmark 4 -//Ctrl+K+Ctrl+5 Sets bookmark 5 -//Ctrl+K+Ctrl+6 Sets bookmark 6 -//Ctrl+K+Ctrl+7 Sets bookmark 7 -//Ctrl+K+Ctrl+8 Sets bookmark 8 -//Ctrl+K+Ctrl+9 Sets bookmark 9 -//Ctrl+Q+0 Goes to bookmark 0 -//Ctrl+Q+1 Goes to bookmark 1 -//Ctrl+Q+2 Goes to bookmark 2 -//Ctrl+Q+3 Goes to bookmark 3 -//Ctrl+Q+4 Goes to bookmark 4 -//Ctrl+Q+5 Goes to bookmark 5 -//Ctrl+Q+6 Goes to bookmark 6 -//Ctrl+Q+7 Goes to bookmark 7 -//Ctrl+Q+8 Goes to bookmark 8 -//Ctrl+Q+9 Goes to bookmark 9 -//Ctrl+Q+Ctrl+0 Goes to bookmark 0 -//Ctrl+Q+Ctrl+1 Goes to bookmark 1 -//Ctrl+Q+Ctrl+2 Goes to bookmark 2 -//Ctrl+Q+Ctrl+3 Goes to bookmark 3 -//Ctrl+Q+Ctrl+4 Goes to bookmark 4 -//Ctrl+Q+Ctrl+5 Goes to bookmark 5 -//Ctrl+Q+Ctrl+6 Goes to bookmark 6 -//Ctrl+Q+Ctrl+7 Goes to bookmark 7 -//Ctrl+Q+Ctrl+8 Goes to bookmark 8 -//Ctrl+Q+Ctrl+9 Goes to bookmark 9 -//Cursor movement: -//---------------- -//Ctrl+Q+B Moves to the beginning of a block -//Ctrl+Q+C Moves to end of a file -//Ctrl+Q+D Moves to the end of a line -//Ctrl+Q+E Moves the cursor to the top of the window -//Ctrl+Q+K Moves to the end of a block -//Ctrl+Q+P Moves to previous position -//Ctrl+Q+R Moves to the beginning of a file -//Ctrl+Q+S Moves to the beginning of a line -//Ctrl+Q+T Moves the viewing editor so that the current line is placed at -//the top of the window -//Ctrl+Q+U Moves the viewing editor so that the current line is placed at -//the bottom of the window, if possible -//Ctrl+Q+X Moves the cursor to the bottom of the window -//System keys: -//------------ - -//F1 Displays context-sensitive Help -//F2 File|Save -//F3 File|Open -//F4 Run to Cursor -//F5 Zooms window -//F6 Displays the next page -//F7 Run|Trace Into -//F8 Run|Step Over -//F9 Run|Run -//F11 View|Object Inspector -//F12 View|Toggle Form/Unit -//Alt+0 View|Window List -//Alt+F2 View|CPU -//Alt+F3 File|Close -//Alt+F7 Displays previous error in Message view -//Alt+F8 Displays next error in Message view -//Alt+F11 File|Use Unit (Delphi) -//Alt+F11 File|Include Unit Hdr (C++) -//Alt+F12 Displays the Code editor -//Alt+X File|Exit -//Alt+right arrow For code browsing forward -//Alt +left arrow For code browsing backward -//Alt +up arrow For code browsing Ctrl-click on identifier -//Alt+Page Down Goes to the next tab -//Alt+Page Up Goes to the previous tab -//Ctrl+F1 Topic Search -//Ctrl+F2 Run|Program Reset -//Ctrl+F3 View|Call Stack -//Ctrl+F6 Open Source/Header file (C++) -//Ctrl+F7 Add Watch at Cursor -//Ctrl+F8 Toggle Breakpoint -//Ctrl+F9 Project|Compile project (Delphi) -//Ctrl+F9 Project|Make project (C++) -//Ctrl+F11 File|Open Project -//Ctrl+F12 View|Units -//Shift+F7 Run|Trace To Next Source Line -//Shift+F11 Project|Add To Project -//Shift+F12 View|Forms -//Ctrl+D Descends item (replaces Inspector window) -//Ctrl+N Opens a new Inspector window -//Ctrl+S Incremental search -//Ctrl+T Displays the Type Cast dialog - else - GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB); - end; -*) -end; - -procedure TKeyCommandRelation.GetDefaultKeyForMacOSXScheme; -begin - case Command of - // moving - ecWordLeft: SetSingle(VK_LEFT,[ssAlt]); - ecWordRight: SetSingle(VK_RIGHT,[ssAlt]); - ecLineStart: SetSingle(VK_LEFT,[ssMeta]); - ecLineEnd: SetSingle(VK_RIGHT,[ssMeta]); - ecPageUp: SetSingle(VK_PRIOR,[]); - ecPageDown: SetSingle(VK_NEXT,[]); - ecPageLeft: SetSingle(VK_UNKNOWN,[]); - ecPageRight: SetSingle(VK_UNKNOWN,[]); - ecPageTop: SetSingle(VK_PRIOR,[ssAlt]); - ecPageBottom: SetSingle(VK_END,[ssAlt]); - ecEditorTop: SetSingle(VK_HOME,[], VK_UP,[ssMeta]); - ecEditorBottom: SetSingle(VK_END,[], VK_DOWN,[ssMeta]); - ecScrollUp: SetSingle(VK_UP,[ssCtrl]); - ecScrollDown: SetSingle(VK_DOWN,[ssCtrl]); - ecScrollLeft: SetSingle(VK_UNKNOWN,[]); - ecScrollRight: SetSingle(VK_UNKNOWN,[]); - - // selection - ecCopy: SetSingle(VK_C,[ssMeta], VK_Insert,[ssCtrl]); - ecCut: SetSingle(VK_X,[ssMeta], VK_Delete,[ssShift]); - ecPaste: SetSingle(VK_V,[ssMeta], VK_Insert,[ssShift]); - ecNormalSelect: SetSingle(VK_UNKNOWN,[]); - ecColumnSelect: SetSingle(VK_UNKNOWN,[]); - ecLineSelect: SetSingle(VK_UNKNOWN,[]); - ecSelWordLeft: SetSingle(VK_LEFT,[ssAlt,ssShift]); - ecSelWordRight: SetSingle(VK_RIGHT,[ssAlt,ssShift]); - ecSelLineStart: SetSingle(VK_LEFT,[ssMeta,ssShift]); - ecSelLineEnd: SetSingle(VK_RIGHT,[ssMeta,ssShift]); - ecSelPageTop: SetSingle(VK_PRIOR,[ssShift,ssAlt]); - ecSelPageBottom: SetSingle(VK_NEXT,[ssShift,ssAlt]); - ecSelEditorTop: SetSingle(VK_HOME,[ssShift]); - ecSelEditorBottom: SetSingle(VK_END,[ssShift]); - ecSelectAll: SetSingle(VK_A,[ssMeta]); - ecSelectToBrace: SetSingle(VK_UNKNOWN,[]); - ecSelectCodeBlock: SetSingle(VK_UNKNOWN,[]); - ecSelectWord: SetCombo(VK_K,[SSCtrl],VK_T,[]); - ecSelectLine: SetCombo(VK_K,[SSCtrl],VK_L,[]); - ecSelectParagraph: SetSingle(VK_UNKNOWN,[]); - ecSelectionUpperCase: SetCombo(VK_K,[SSCtrl],VK_N,[]); - ecSelectionLowerCase: SetCombo(VK_K,[SSCtrl],VK_O,[]); - ecSelectionSwapCase: SetCombo(VK_K,[SSCtrl],VK_P,[]); - ecSelectionTabs2Spaces:SetSingle(VK_UNKNOWN,[]); - ecSelectionEnclose: SetSingle(VK_UNKNOWN,[]); - ecSelectionComment: SetSingle(VK_UNKNOWN,[]); - ecSelectionUncomment: SetSingle(VK_UNKNOWN,[]); - ecToggleComment: SetSingle(VK_OEM_2,[ssCtrl]); - ecSelectionEncloseIFDEF:SetSingle(VK_D,[ssShift,ssCtrl]); - ecSelectionSort: SetSingle(VK_UNKNOWN,[]); - ecSelectionBreakLines: SetSingle(VK_UNKNOWN,[]); - - ecBlockSetBegin: SetCombo(VK_K,[ssCtrl],VK_B,[], VK_K,[ssCtrl],VK_B,[ssCtrl]); - ecBlockSetEnd: SetCombo(VK_K,[ssCtrl],VK_K,[], VK_K,[ssCtrl],VK_K,[ssCtrl]); - ecBlockToggleHide: SetCombo(VK_K,[ssCtrl],VK_H,[], VK_K,[ssCtrl],VK_H,[ssCtrl]); - ecBlockHide: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]); - ecBlockShow: SetCombo(VK_UNKNOWN,[],VK_UNKNOWN,[]); - ecBlockMove: SetCombo(VK_K,[ssCtrl],VK_V,[], VK_K,[ssCtrl],VK_V,[ssCtrl]); - ecBlockCopy: SetCombo(VK_K,[ssCtrl],VK_C,[], VK_K,[ssCtrl],VK_C,[ssCtrl]); - ecBlockDelete: SetCombo(VK_K,[ssCtrl],VK_Y,[], VK_K,[ssCtrl],VK_Y,[ssCtrl]); - ecBlockGotoBegin: SetCombo(VK_Q,[ssCtrl],VK_B,[], VK_Q,[ssCtrl],VK_B,[ssCtrl]); - ecBlockGotoEnd: SetCombo(VK_Q,[ssCtrl],VK_K,[], VK_Q,[ssCtrl],VK_K,[ssCtrl]); - -// column mode selection - ecColSelUp: SetSingle(VK_UP,[ssAlt,ssShift]); - ecColSelDown: SetSingle(VK_DOWN,[ssAlt,ssShift]); - ecColSelLeft: SetSingle(VK_LEFT,[ssAlt,ssShift]); - ecColSelRight: SetSingle(VK_RIGHT,[ssAlt,ssShift]); - ecColSelPageDown: SetSingle(VK_NEXT,[ssAlt,ssShift]); - ecColSelPageBottom: SetSingle(VK_NEXT,[ssAlt,ssShift,ssCtrl]); - ecColSelPageUp: SetSingle(VK_PRIOR,[ssAlt,ssShift]); - ecColSelPageTop: SetSingle(VK_PRIOR,[ssAlt,ssShift,ssCtrl]); - ecColSelLineStart: SetSingle(VK_HOME,[ssAlt,ssShift]); - ecColSelLineEnd: SetSingle(VK_END,[ssAlt,ssShift]); - ecColSelEditorTop: SetSingle(VK_HOME,[ssAlt,ssShift,ssCtrl]); - ecColSelEditorBottom: SetSingle(VK_END,[ssAlt,ssShift,ssCtrl]); - - // editing - ecBlockIndent: SetCombo(VK_I,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_I,[]); - ecBlockUnindent: SetCombo(VK_U,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_U,[]); - ecDeleteLastChar: SetSingle(VK_BACK,[], VK_BACK,[ssShift]); // ctrl H used for scroll window. - ecDeleteChar: SetSingle(VK_DELETE,[]); // ctrl G conflicts with GO - ecDeleteWord: SetSingle(VK_DELETE,[ssAlt]); - ecDeleteLastWord: SetSingle(VK_BACK,[ssCtrl]); - ecDeleteBOL: SetSingle(VK_BACK,[ssMeta]); - ecDeleteEOL: SetSingle(VK_DELETE,[ssMeta]); - ecDeleteLine: SetSingle(VK_Y,[ssCtrl]); - ecClearAll: SetSingle(VK_UNKNOWN,[]); - ecLineBreak: SetSingle(VK_RETURN,[]); - ecInsertLine: SetSingle(VK_N,[ssShift,ssMeta]); - ecInsertCharacter: SetSingle(VK_UNKNOWN,[]); - ecInsertGPLNotice: SetSingle(VK_UNKNOWN,[]); - ecInsertLGPLNotice: SetSingle(VK_UNKNOWN,[]); - ecInsertModifiedLGPLNotice:SetSingle(VK_UNKNOWN,[]); - ecInsertUserName: SetSingle(VK_UNKNOWN,[]); - ecInsertDateTime: SetSingle(VK_UNKNOWN,[]); - ecInsertChangeLogEntry:SetSingle(VK_UNKNOWN,[]); - ecInsertCVSAuthor: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSDate: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSHeader: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSID: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSLog: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSName: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSRevision: SetSingle(VK_UNKNOWN,[]); - ecInsertCVSSource: SetSingle(VK_UNKNOWN,[]); - ecInsertGUID: SetSingle(VK_G,[ssCtrl,ssShift]); - ecInsertFilename: SetSingle(VK_UNKNOWN,[]); - - // command commands - ecUndo: SetSingle(VK_Z,[ssMeta]); - ecRedo: SetSingle(VK_Z,[ssMeta,ssShift]); - - // search & replace - ecMatchBracket: SetSingle(VK_UNKNOWN,[]); - ecFind: SetSingle(VK_F,[ssMeta]); - ecFindNext: SetSingle(VK_G,[ssMeta]); - ecFindPrevious: SetSingle(VK_G,[ssShift,ssMeta]); - ecFindInFiles: SetSingle(VK_F,[ssMeta,ssShift]); - ecReplace: SetSingle(VK_UNKNOWN,[]); - ecIncrementalFind: SetSingle(VK_E,[ssMeta]); - ecGotoLineNumber: SetSingle(VK_L,[ssMeta]); - ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]); - ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]); - ecJumpBack: SetSingle(VK_H,[ssCtrl]); - ecJumpForward: SetSingle(VK_H,[ssCtrl,ssShift]); - ecAddJumpPoint: SetSingle(VK_UNKNOWN,[]); - ecJumpToPrevError: SetSingle(VK_ADD,[ssMeta,ssShift]); - ecJumpToNextError: SetSingle(VK_ADD,[ssMeta]); - ecOpenFileAtCursor: SetSingle(VK_RETURN,[ssCtrl]); - ecProcedureList: SetSingle(VK_G,[ssAlt]); - - // marker - ecSetFreeBookmark: SetSingle(VK_UNKNOWN,[]); - ecPrevBookmark: SetSingle(VK_UNKNOWN,[]); - ecNextBookmark: SetSingle(VK_UNKNOWN,[]); - ecGotoMarker0: SetSingle(VK_0,[ssCtrl]); - ecGotoMarker1: SetSingle(VK_1,[ssCtrl]); - ecGotoMarker2: SetSingle(VK_2,[ssCtrl]); - ecGotoMarker3: SetSingle(VK_3,[ssCtrl]); - ecGotoMarker4: SetSingle(VK_4,[ssCtrl]); - ecGotoMarker5: SetSingle(VK_5,[ssCtrl]); - ecGotoMarker6: SetSingle(VK_6,[ssCtrl]); - ecGotoMarker7: SetSingle(VK_7,[ssCtrl]); - ecGotoMarker8: SetSingle(VK_8,[ssCtrl]); - ecGotoMarker9: SetSingle(VK_9,[ssCtrl]); - ecToggleMarker0: SetCombo(VK_0,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_0,[]); - ecToggleMarker1: SetCombo(VK_1,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_1,[]); - ecToggleMarker2: SetCombo(VK_2,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_2,[]); - ecToggleMarker3: SetCombo(VK_3,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_3,[]); - ecToggleMarker4: SetCombo(VK_4,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_4,[]); - ecToggleMarker5: SetCombo(VK_5,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_5,[]); - ecToggleMarker6: SetCombo(VK_6,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_6,[]); - ecToggleMarker7: SetCombo(VK_7,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_7,[]); - ecToggleMarker8: SetCombo(VK_8,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_8,[]); - ecToggleMarker9: SetCombo(VK_9,[ssShift,ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_9,[]); - ecSetMarker0..ecSetMarker9: SetSingle(VK_UNKNOWN,[]); - - // codetools - ecAutoCompletion: SetSingle(VK_J,[ssMeta]); - ecWordCompletion: SetSingle(VK_SPACE,[ssCtrl,ssAlt]); - ecCompleteCode: SetSingle(VK_C,[ssCtrl,ssShift]); - ecIdentCompletion: SetSingle(VK_SPACE,[ssCtrl]); - ecShowCodeContext: SetSingle(VK_SPACE,[ssCtrl,ssShift]); - ecExtractProc: SetSingle(VK_UNKNOWN,[]); - ecFindIdentifierRefs: SetSingle(VK_UNKNOWN,[]); - ecRenameIdentifier: SetSingle(VK_E,[ssMeta,ssShift]); - ecInvertAssignment: SetSingle(VK_UNKNOWN,[]); - ecSyntaxCheck: SetSingle(VK_UNKNOWN,[]); - ecGuessUnclosedBlock: SetSingle(VK_UNKNOWN,[]); - ecGuessMisplacedIFDEF: SetSingle(VK_UNKNOWN,[]); - ecConvertDFM2LFM: SetSingle(VK_UNKNOWN,[]); - ecCheckLFM: SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiUnit: SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiProject:SetSingle(VK_UNKNOWN,[]); - ecConvertDelphiPackage:SetSingle(VK_UNKNOWN,[]); - ecConvertEncoding: SetSingle(VK_UNKNOWN,[]); - ecFindProcedureDefinition:SetSingle(VK_UP,[ssShift,SSCtrl]); - ecFindProcedureMethod: SetSingle(VK_DOWN,[ssShift,SSCtrl]); - ecFindDeclaration: SetSingle(VK_UP,[ssAlt]); - ecFindBlockOtherEnd: SetSingle(VK_UNKNOWN,[]); - ecFindBlockStart: SetSingle(VK_UNKNOWN,[]); - ecGotoIncludeDirective:SetSingle(VK_UNKNOWN,[]); - ecShowAbstractMethods: SetSingle(VK_UNKNOWN,[]); - ecRemoveEmptyMethods: SetSingle(VK_UNKNOWN,[]); - - // source notebook - ecNextEditor: SetSingle(VK_RIGHT,[ssMeta,ssAlt]); - ecPrevEditor: SetSingle(VK_LEFT,[ssMeta,ssAlt]); - ecResetDebugger: SetSingle(VK_UNKNOWN,[]); - ecToggleBreakPoint: SetSingle(VK_P,[ssCtrl]); - ecMoveEditorLeft: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorRight: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorLeftmost: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorRightmost: SetSingle(VK_UNKNOWN,[]); - - ecNextSharedEditor: SetSingle(VK_UNKNOWN,[]); - ecPrevSharedEditor: SetSingle(VK_UNKNOWN,[]); - ecNextWindow: SetSingle(VK_UNKNOWN,[]); - ecPrevWindow: SetSingle(VK_UNKNOWN,[]); - ecMoveEditorNextWindow:SetSingle(VK_UNKNOWN,[]); - ecMoveEditorPrevWindow:SetSingle(VK_UNKNOWN,[]); - ecMoveEditorNewWindow: SetSingle(VK_UNKNOWN,[]); - ecCopyEditorNextWindow:SetSingle(VK_UNKNOWN,[]); - ecCopyEditorPrevWindow:SetSingle(VK_UNKNOWN,[]); - ecCopyEditorNewWindow: SetSingle(VK_UNKNOWN,[]); - - ecGotoEditor1: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor2: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor3: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor4: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor5: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor6: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor7: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor8: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor9: SetSingle(VK_UNKNOWN,[]); - ecGotoEditor0: SetSingle(VK_UNKNOWN,[]); - - ecLockEditor: SetSingle(VK_UNKNOWN,[]); - - (* - EcFoldLevel1: SetSingle(VK_1,[ssMeta,ssShift]); - EcFoldLevel2: SetSingle(VK_2,[ssMeta,ssShift]); - EcFoldLevel3: SetSingle(VK_3,[ssMeta,ssShift]); - EcFoldLevel4: SetSingle(VK_4,[ssMeta,ssShift]); - EcFoldLevel5: SetSingle(VK_5,[ssMeta,ssShift]); - EcFoldLevel6: SetSingle(VK_6,[ssMeta,ssShift]); - EcFoldLevel7: SetSingle(VK_7,[ssMeta,ssShift]); - EcFoldLevel8: SetSingle(VK_8,[ssMeta,ssShift]); - EcFoldLevel9: SetSingle(VK_9,[ssMeta,ssShift]); - EcFoldLevel0: SetSingle(VK_0,[ssMeta,ssShift]); - EcFoldCurrent: SetSingle(VK_OEM_PLUS,[ssMeta,ssShift]); - EcUnFoldCurrent: SetSingle(VK_OEM_MINUS,[ssMeta,ssShift]); - EcToggleMarkupWord: SetSingle(VK_M,[ssMeta]); - *) - - // file menu - ecNew: SetSingle(VK_N,[ssMeta]); - ecNewUnit: SetSingle(VK_UNKNOWN,[]); - ecNewForm: SetSingle(VK_UNKNOWN,[]); - ecOpen: SetSingle(VK_O,[ssMeta]); - ecRevert: SetSingle(VK_UNKNOWN,[]); - ecSave: SetSingle(VK_S,[ssMeta]); - ecSaveAs: SetSingle(VK_S,[ssMeta,ssShift]); - ecSaveAll: SetSingle(VK_S,[ssMeta,ssAlt]); - ecClose: SetSingle(VK_W,[ssMeta,ssShift]); - ecCloseAll: SetSingle(VK_UNKNOWN,[]); - ecCleanDirectory: SetSingle(VK_UNKNOWN,[]); - ecRestart: SetSingle(VK_UNKNOWN,[]); - ecQuit: SetSingle(VK_UNKNOWN,[]); - - // view menu - ecToggleObjectInsp: SetSingle(VK_I,[ssAlt,ssMeta]); - ecToggleSourceEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleCodeExpl: SetSingle(VK_UNKNOWN,[]); - ecToggleFPDocEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleMessages: SetSingle(VK_UNKNOWN,[]); - ecViewComponents: SetSingle(VK_UNKNOWN,[]); - ecViewJumpHistory: SetSingle(VK_UNKNOWN,[]); - ecToggleSearchResults: SetSingle(VK_F,[ssCtrl,ssAlt]); - ecToggleWatches: SetSingle(VK_W,[ssCtrl,ssAlt]); - ecToggleBreakPoints: SetSingle(VK_B,[ssCtrl,ssAlt]); - ecToggleLocals: SetSingle(VK_L,[ssCtrl,ssAlt]); - ecViewPseudoTerminal: if HasConsoleSupport then SetSingle(VK_O,[ssCtrl,ssAlt]); - ecViewThreads: SetSingle(VK_T,[ssCtrl,ssAlt]); - ecToggleCallStack: SetSingle(VK_S,[ssCtrl,ssAlt]); - ecToggleRegisters: SetSingle(VK_R,[ssCtrl,ssAlt]); - ecToggleAssembler: SetSingle(VK_D,[ssCtrl,ssAlt]); - ecToggleDebugEvents: SetSingle(VK_V,[ssCtrl,ssAlt]); - ecToggleDebuggerOut: SetSingle(VK_UNKNOWN,[]); - ecViewHistory: SetSingle(VK_H,[ssCtrl,ssAlt]); - ecViewUnitDependencies:SetSingle(VK_UNKNOWN,[]); - ecViewUnitInfo: SetSingle(VK_UNKNOWN,[]); - ecToggleFormUnit: SetSingle(VK_F,[ssMeta,ssAlt]); - ecViewAnchorEditor: SetSingle(VK_UNKNOWN,[]); - ecToggleCodeBrowser: SetSingle(VK_UNKNOWN,[]); - ecToggleRestrictionBrowser:SetSingle(VK_UNKNOWN,[]); - ecToggleCompPalette: SetSingle(VK_UNKNOWN,[]); - ecToggleIDESpeedBtns: SetSingle(VK_UNKNOWN,[]); - - // project menu - ecNewProject: SetSingle(VK_UNKNOWN,[]); - ecNewProjectFromFile: SetSingle(VK_UNKNOWN,[]); - ecOpenProject: SetSingle(VK_UNKNOWN,[]); - ecCloseProject: SetSingle(VK_UNKNOWN,[]); - ecSaveProject: SetSingle(VK_UNKNOWN,[]); - ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); - ecPublishProject: SetSingle(VK_UNKNOWN,[]); - ecProjectInspector: SetSingle(VK_UNKNOWN,[]); - ecAddCurUnitToProj: SetSingle(VK_A,[ssAlt,ssMeta]); - ecRemoveFromProj: SetSingle(VK_UNKNOWN,[]); - ecViewProjectUnits: SetSingle(VK_U,[ssCtrl,ssAlt]); - ecViewProjectForms: SetSingle(VK_U,[ssShift,ssCtrl]); - ecViewProjectSource: SetSingle(VK_UNKNOWN,[]); - ecProjectOptions: SetSingle(VK_UNKNOWN,[]); - - // run menu - ecCompile: SetSingle(VK_B,[ssMeta]); - ecBuild: SetSingle(VK_UNKNOWN,[]); - ecQuickCompile: SetSingle(VK_UNKNOWN,[]); - ecCleanUpCompiled: SetSingle(VK_UNKNOWN,[]); - ecAbortBuild: SetSingle(VK_UNKNOWN,[]); - ecRun: SetSingle(VK_R,[ssMeta]); - ecPause: SetSingle(VK_UNKNOWN,[]); - ecShowExecutionPoint: SetSingle(VK_UNKNOWN,[]); - ecStepInto: SetSingle(VK_R,[ssMeta,ssAlt]); - ecStepOver: SetSingle(VK_R,[ssMeta,ssShift]); - ecStepOut: SetSingle(VK_T,[ssMeta,ssShift]); - ecRunToCursor: SetSingle(VK_UNKNOWN,[]); - ecStopProgram: SetSingle(VK_RETURN,[ssShift,ssMeta]); - ecRemoveBreakPoint: SetSingle(VK_UNKNOWN,[]); - ecRunParameters: SetSingle(VK_UNKNOWN,[]); - ecBuildFile: SetSingle(VK_UNKNOWN,[]); - ecRunFile: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildFile: SetSingle(VK_UNKNOWN,[]); - ecInspect: SetSingle(VK_UNKNOWN,[]); - ecEvaluate: SetSingle(VK_E,[ssCtrl,ssShift]); - ecAddWatch: SetSingle(VK_UNKNOWN,[]); - ecAddBpSource: SetSingle(VK_UNKNOWN,[]); - ecAddBpAddress: SetSingle(VK_UNKNOWN,[]); - ecAddBpDataWatch: SetSingle(VK_UNKNOWN,[]); - - // components menu - ecNewPackage: SetSingle(VK_UNKNOWN,[]); - ecOpenPackage: SetSingle(VK_UNKNOWN,[]); - ecOpenPackageFile: SetSingle(VK_UNKNOWN,[]); - ecOpenPackageOfCurUnit:SetSingle(VK_UNKNOWN,[]); - ecAddCurFileToPkg: SetSingle(VK_UNKNOWN,[]); - ecPackageGraph: SetSingle(VK_UNKNOWN,[]); - ecEditInstallPkgs: SetSingle(VK_UNKNOWN,[]); - ecConfigCustomComps: SetSingle(VK_UNKNOWN,[]); - - // tools menu - ecExtToolSettings: SetSingle(VK_UNKNOWN,[]); - ecManageExamples: SetSingle(VK_UNKNOWN,[]); - ecBuildLazarus: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildLazarus: SetSingle(VK_UNKNOWN,[]); - ecMakeResourceString: SetSingle(VK_UNKNOWN,[]); - ecDiff: SetSingle(VK_UNKNOWN,[]); - - // environment menu - ecEnvironmentOptions: SetSingle(VK_UNKNOWN,[]); - ecRescanFPCSrcDir: SetSingle(VK_UNKNOWN,[]); - ecEditCodeTemplates: SetSingle(VK_UNKNOWN,[]); - ecCodeToolsDefinesEd: SetSingle(VK_UNKNOWN,[]); - - // help menu - ecAboutLazarus: SetSingle(VK_UNKNOWN,[]); - ecOnlineHelp: SetSingle(VK_UNKNOWN,[]); - ecContextHelp: SetSingle(VK_HELP,[]); - ecEditContextHelp: SetSingle(VK_HELP,[ssShift,ssCtrl], VK_HELP,[ssCtrl]); - ecReportingBug: SetSingle(VK_UNKNOWN,[]); - ecFocusHint: SetSingle(VK_UNKNOWN,[]); - - // designer - ecDesignerCopy: SetSingle(VK_C,[ssMeta]); - ecDesignerCut: SetSingle(VK_X,[ssMeta]); - ecDesignerPaste: SetSingle(VK_V,[ssMeta]); - ecDesignerSelectParent:SetSingle(VK_ESCAPE,[]); - ecDesignerMoveToFront: SetSingle(VK_PRIOR,[ssShift]); - ecDesignerMoveToBack: SetSingle(VK_NEXT,[ssShift]); - ecDesignerForwardOne: SetSingle(VK_PRIOR,[ssMeta]); - ecDesignerBackOne: SetSingle(VK_NEXT,[ssMeta]); - - else - begin - SetSingle(VK_UNKNOWN,[]); - SetSingle(VK_UNKNOWN,[]); - case TSynPluginTemplateEdit.ConvertCommandToBase(Command) of - // Edit template - ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPTmplEdCellHome: SetSingle(VK_HOME,[]); - ecSynPTmplEdCellEnd: SetSingle(VK_END,[]); - ecSynPTmplEdCellSelect: SetSingle(VK_A,[ssCtrl]); - ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]); - ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginTemplateEdit.ConvertCommandToBaseOff(Command) of - // Edit template - ecSynPTmplEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPTmplEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPTmplEdNextCellRotate: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdNextCellSelRotate:SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPTmplEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPTmplEdCellHome: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdCellEnd: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdCellSelect: SetSingle(VK_UNKNOWN,[]); - ecSynPTmplEdFinish: SetSingle(VK_RETURN,[]); - ecSynPTmplEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBase(Command) of - // SyncroEdit - ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPSyncroEdCellHome: SetSingle(VK_HOME,[]); - ecSynPSyncroEdCellEnd: SetSingle(VK_END,[]); - ecSynPSyncroEdCellSelect: SetSingle(VK_A,[ssCtrl]); - ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBaseOff(Command) of - // SyncroEdit - ecSynPSyncroEdNextCell: SetSingle(VK_RIGHT,[ssCtrl]); - ecSynPSyncroEdNextCellSel: SetSingle(VK_TAB,[]); - ecSynPSyncroEdPrevCell: SetSingle(VK_LEFT,[ssCtrl]); - ecSynPSyncroEdPrevCellSel: SetSingle(VK_TAB,[ssShift]); - ecSynPSyncroEdCellHome: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdCellEnd: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdCellSelect: SetSingle(VK_UNKNOWN,[]); - ecSynPSyncroEdEscape: SetSingle(VK_ESCAPE,[]); - end; - case TSynPluginSyncroEdit.ConvertCommandToBaseSel(Command) of - // SyncroEdit, during selection - ecSynPSyncroEdStart: SetSingle(VK_J,[ssCtrl]); - end; - end; - end; -end; - -procedure TKeyCommandRelation.GetDefaultKeyForMacOSXLazScheme; -begin - { First default to standard Mac OS X scheme } - GetDefaultKeyForMacOSXScheme; - - { Now override some entries } - case Command of - // moving - ecLineStart: SetSingle(VK_HOME,[], VK_LEFT,[ssMeta]); - ecLineEnd: SetSingle(VK_END,[], VK_RIGHT,[ssMeta]); - ecEditorTop: SetSingle(VK_UP,[ssMeta]); - ecEditorBottom: SetSingle(VK_DOWN,[ssMeta]); - - // selection - ecSelLineStart: SetSingle(VK_HOME,[ssShift], VK_LEFT,[ssMeta,ssShift]); - ecSelLineEnd: SetSingle(VK_END,[ssShift], VK_RIGHT,[ssMeta,ssShift]); - ecSelEditorTop: SetSingle(VK_HOME,[ssShift,ssCtrl]); - ecSelEditorBottom: SetSingle(VK_END,[ssShift,ssCtrl]); - - // codetools - ecRenameIdentifier: SetSingle(VK_E,[ssShift,ssCtrl]); - - // run menu - ecCompile: SetSingle(VK_F9,[ssCtrl], VK_F9,[ssCtrl,ssMeta]); - ecBuild: SetSingle(VK_F9,[ssShift]); - ecQuickCompile: SetSingle(VK_UNKNOWN,[]); - ecCleanUpCompiled: SetSingle(VK_UNKNOWN,[]); - ecAbortBuild: SetSingle(VK_UNKNOWN,[]); - ecRun: SetSingle(VK_F9,[], VK_F9,[ssMeta]); - ecPause: SetSingle(VK_UNKNOWN,[]); - ecShowExecutionPoint: SetSingle(VK_UNKNOWN,[]); - ecStepInto: SetSingle(VK_F7,[], VK_F7,[ssMeta]); - ecStepOver: SetSingle(VK_F8,[], VK_F8,[ssMeta]); - ecStepOut: SetSingle(VK_F8,[], VK_F8,[ssShift,ssMeta]); - ecRunToCursor: SetSingle(VK_F4,[], VK_F4,[ssMeta]); - ecStopProgram: SetSingle(VK_F2,[ssCtrl], VK_F2,[ssCtrl,ssMeta]); - ecRemoveBreakPoint: SetSingle(VK_UNKNOWN,[]); - ecRunParameters: SetSingle(VK_UNKNOWN,[]); - ecBuildFile: SetSingle(VK_UNKNOWN,[]); - ecRunFile: SetSingle(VK_UNKNOWN,[]); - ecConfigBuildFile: SetSingle(VK_UNKNOWN,[]); - ecInspect: SetSingle(VK_F5,[ssAlt]); - ecEvaluate: SetSingle(VK_F7,[ssCtrl], VK_F7,[ssCtrl,ssMeta]); - ecAddWatch: SetSingle(VK_F5,[ssCtrl], VK_F5,[ssCtrl,ssMeta]); - ecAddBpSource: SetSingle(VK_UNKNOWN,[]); - ecAddBpAddress: SetSingle(VK_UNKNOWN,[]); - ecAddBpDataWatch: SetSingle(VK_F5,[ssShift]); - end; + if Result='' then + Result:=EditorCommandLocalizedName(Command,Name); end; { TKeyCommandRelationList } @@ -2403,6 +2473,8 @@ begin Clear; // moving C:=Categories[AddCategory('CursorMoving',srkmCatCursorMoving,IDECmdScopeSrcEditOnly)]; + //p:=Relations[Add(C,'Name1',12000,IDEShortCut(vk_P,[ssShift,ssAlt],VK_UNKNOWN,[]),CLeanIDEShortCut)]; + //debugln('TKeyCommandRelationList.Add A ',p.Name,' ',KeyAndShiftStateToEditorKeyString(p.ShortcutA),' ',dbgs(p)); AddDefault(C, 'Move cursor word left', srkmecWordLeft, ecWordLeft); AddDefault(C, 'Move cursor word right', srkmecWordRight, ecWordRight); AddDefault(C, 'Move cursor to line start', srkmecLineStart, ecLineStart); @@ -2890,8 +2962,13 @@ end; function TKeyCommandRelationList.GetRelation(Index:integer):TKeyCommandRelation; begin - Assert((Index>=0) and (Index=Count) then + begin + DebugLn('[TKeyCommandRelationList.GetRelation] Index out of bounds ' + ,IntToStr(Index),' Count=',IntToStr(Count)); + // creates an exception, that gdb catches: + if (Index div ((Index and 1) div 10000))=0 then ; + end; Result:= TKeyCommandRelation(FRelations[Index]); end; @@ -2905,19 +2982,11 @@ begin Result:=FRelations.Count; end; -function TKeyCommandRelationList.GetNewOrExisting(Category: TIDECommandCategory; - Command: TIDECommand): TKeyCommandRelation; -begin - Result:=GetNewOrExisting(Category, - Command.Name,Command.LocalizedName, - Command.Command,Command.ShortcutA,Command.ShortcutB, - Command.OnExecute,Command.OnExecuteProc); -end; - -function TKeyCommandRelationList.GetNewOrExisting(Category: TIDECommandCategory; - const Name, LocalizedName: string; Command:word; TheKeyA, TheKeyB: TIDEShortCut; +function TKeyCommandRelationList.Add(Category: TIDECommandCategory; + const Name, LocalizedName: string; + Command:word; TheKeyA, TheKeyB: TIDEShortCut; const OnExecuteMethod: TNotifyEvent; - const OnExecuteProc: TNotifyProcedure): TKeyCommandRelation; + const OnExecuteProc: TNotifyProcedure):integer; var LoadedKey: TLoadedKeyCommand; AVLNode: TAvgLvlTreeNode; @@ -2936,23 +3005,25 @@ begin LoadedKey:=TLoadedKeyCommand(AVLNode.Data); LoadedKey.DefaultShortcutA:=TheKeyA; LoadedKey.DefaultShortcutB:=TheKeyB; - // old key, values were loaded (key is registered after loading keymapping) + // old key, values were loaded + // (key is registered after loading keymapping) TheKeyA:=LoadedKey.ShortcutA; TheKeyB:=LoadedKey.ShortcutB; end; - Result:=TKeyCommandRelation.Create(Category,Name,LocalizedName, - Command,TheKeyA,TheKeyB,OnExecuteMethod,OnExecuteProc); + Result:=FRelations.Add(TKeyCommandRelation.Create(Category,Name,LocalizedName, + Command,TheKeyA,TheKeyB,OnExecuteMethod,OnExecuteProc)); end; function TKeyCommandRelationList.AddDefault(Category: TIDECommandCategory; const Name, LocalizedName: string; Command: word): integer; var - CommandRelation: TKeyCommandRelation; + TheKeyA, TheKeyB: TIDEShortCut; begin - CommandRelation:=GetNewOrExisting(Category,Name,LocalizedName,Command, - CleanIDEShortCut,CleanIDEShortCut); - CommandRelation.GetDefaultKeyForCommand; - Result:=FRelations.Add(CommandRelation); + GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB); + {if Command=ecBlockIndent then begin + debugln('TKeyCommandRelationList.AddDefault A ',KeyAndShiftStateToEditorKeyString(TheKeyA),' ',KeyAndShiftStateToEditorKeyString(TheKeyB)); + end;} + Result:=Add(Category,Name,LocalizedName,Command,TheKeyA,TheKeyB); end; procedure TKeyCommandRelationList.SetExtToolCount(NewCount: integer); @@ -2967,8 +3038,8 @@ begin // increase available external tool commands while NewCount>fExtToolCount do begin ToolName:=Format(srkmecExtTool,[fExtToolCount]); - FRelations.Add(GetNewOrExisting(ExtToolCat,ToolName,ToolName, - ecExtToolFirst+fExtToolCount,CleanIDEShortCut,CleanIDEShortCut)); + Add(ExtToolCat,ToolName,ToolName, + ecExtToolFirst+fExtToolCount,CleanIDEShortCut,CleanIDEShortCut); inc(fExtToolCount); end; end else begin @@ -3345,7 +3416,7 @@ begin end; dec(b); end; - // Add missing keys + // add missing keys while KeyCnt<=MaxKeyCnt do begin Key:=ASynEditKeyStrokes.Add; Key.Command:=CurRelation.Command; @@ -3376,7 +3447,7 @@ var OtherRelation: TKeyCommandRelation; OurRelation: TKeyCommandRelation; begin - // Add/assign categories + // add/assign categories for i:=0 to List.CategoryCount-1 do begin OtherCategory:=List.Categories[i]; OurCategory:=FindCategoryByName(OtherCategory.Name); @@ -3386,11 +3457,12 @@ begin OurCategory.Scope:=OtherCategory.Scope; end else begin //DebugLn('TKeyCommandRelationList.Assign Add new category: ',OtherCategory.Name); + // add AddCategory(OtherCategory.Name,OtherCategory.Description,OtherCategory.Scope); end; end; - // Add/assign keys + // add/assign keys for i:=0 to List.Count-1 do begin OtherRelation:=List.Relations[i]; OurRelation:=TKeyCommandRelation(FindCommandByName(OtherRelation.Name)); @@ -3398,7 +3470,7 @@ begin // assign OurRelation.Assign(OtherRelation); end else begin - // Add + // add //DebugLn('TKeyCommandRelationList.Assign Add new command: ',OtherRelation.Name); OurCategory:=FindCategoryByName(OtherRelation.Category.Name); OurRelation:=TKeyCommandRelation.Create(OtherRelation,OurCategory); @@ -3432,11 +3504,25 @@ end; procedure TKeyCommandRelationList.LoadScheme(const SchemeName: string); var i: Integer; + CurRelation: TKeyCommandRelation; NewScheme: TKeyMapScheme; + TheKeyA, TheKeyB: TIDEShortCut; begin NewScheme:=KeySchemeNameToSchemeType(SchemeName); - for i:=0 to Count-1 do // set all keys to new scheme - Relations[i].MapShortcut(NewScheme); + // set all keys to new scheme + for i:=0 to Count-1 do begin + CurRelation:=Relations[i]; + case NewScheme of + kmsLazarus: GetDefaultKeyForCommand(CurRelation.Command,TheKeyA,TheKeyB); + kmsClassic: GetDefaultKeyForClassicScheme(CurRelation.Command, + TheKeyA,TheKeyB); + kmsMacOSXApple: GetDefaultKeyForMacOSXScheme(CurRelation.Command,TheKeyA,TheKeyB); + kmsMacOSXLaz: GetDefaultKeyForMacOSXLazScheme(CurRelation.Command,TheKeyA,TheKeyB); + kmsCustom: ; + end; + CurRelation.ShortcutA:=TheKeyA; + CurRelation.ShortcutB:=TheKeyB; + end; end; function TKeyCommandRelationList.CreateUniqueCategoryName(const AName: string): string; @@ -3470,17 +3556,18 @@ begin end; function TKeyCommandRelationList.CreateCommand(Category: TIDECommandCategory; - const AName, Description: string; const TheShortcutA, TheShortcutB: TIDEShortCut; + const AName, Description: string; const TheShortcutA, + TheShortcutB: TIDEShortCut; const OnExecuteMethod: TNotifyEvent; const OnExecuteProc: TNotifyProcedure): TIDECommand; var NewName: String; begin NewName:=CreateUniqueCommandName(AName); - Result:=GetNewOrExisting(Category as TKeyCommandCategory,NewName,Description, + Result:=Relations[Add(Category as TKeyCommandCategory, + NewName,Description, CreateNewCommandID,TheShortcutA,TheShortcutB, - OnExecuteMethod,OnExecuteProc); - FRelations.Add(Result); + OnExecuteMethod,OnExecuteProc)]; end; function TKeyCommandRelationList.GetCategory(Index: integer): TIDECommandCategory; @@ -3500,6 +3587,17 @@ begin TheScope)); end; +function TKeyCommandRelationList.Add(Category: TIDECommandCategory; + Command: TIDECommand): integer; +begin + Result:=Add(Category, + Command.Name,Command.LocalizedName, + Command.Command,Command.ShortcutA,Command.ShortcutB, + Command.OnExecute,Command.OnExecuteProc); + //if Command.Command=12000 then + // debugln('TKeyCommandRelationList.Add A ',Command.Name,' ',KeyAndShiftStateToEditorKeyString(Command.ShortcutA),' ',KeyAndShiftStateToEditorKeyString(Relations[Result].ShortcutA),' ',dbgs(Command)); +end; + function TKeyCommandRelationList.FindCategoryByName(const CategoryName: string ): TIDECommandCategory; var i: integer;