mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-01 23:20:26 +02:00
IDE: added key mapping scheme for Mac OS X
git-svn-id: trunk@12827 -
This commit is contained in:
parent
7f51d24813
commit
5f3b8ef645
@ -42,6 +42,7 @@ type
|
|||||||
TKeyMapScheme = (
|
TKeyMapScheme = (
|
||||||
kmsLazarus,
|
kmsLazarus,
|
||||||
kmsClassic,
|
kmsClassic,
|
||||||
|
kmsMacOSX,
|
||||||
kmsCustom
|
kmsCustom
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -186,6 +187,8 @@ procedure GetDefaultKeyForCommand(Command: word;
|
|||||||
var TheKeyA, TheKeyB: TIDEShortCut);
|
var TheKeyA, TheKeyB: TIDEShortCut);
|
||||||
procedure GetDefaultKeyForClassicScheme(Command: word;
|
procedure GetDefaultKeyForClassicScheme(Command: word;
|
||||||
var TheKeyA, TheKeyB: TIDEShortCut);
|
var TheKeyA, TheKeyB: TIDEShortCut);
|
||||||
|
procedure GetDefaultKeyForMacOSXScheme(Command: word;
|
||||||
|
var TheKeyA, TheKeyB: TIDEShortCut);
|
||||||
function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme;
|
function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme;
|
||||||
|
|
||||||
function ShiftStateToStr(Shift: TShiftState): string;
|
function ShiftStateToStr(Shift: TShiftState): string;
|
||||||
@ -1063,12 +1066,80 @@ begin
|
|||||||
*)
|
*)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure GetDefaultKeyForMacOSXScheme(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;
|
||||||
|
|
||||||
|
begin
|
||||||
|
GetDefaultKeyForCommand(Command,TheKeyA,TheKeyB);
|
||||||
|
|
||||||
|
// override only problematic key commands
|
||||||
|
case Command of
|
||||||
|
// editing
|
||||||
|
ecInsertLine: SetResult(VK_N,[ssCtrl, ssShift],VK_UNKNOWN,[]);
|
||||||
|
ecDeleteEOL: SetResult(VK_Y,[ssCtrl,ssShift],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
// marker
|
||||||
|
ecGotoMarker0: SetResult(VK_0,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker1: SetResult(VK_1,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker2: SetResult(VK_2,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker3: SetResult(VK_3,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker4: SetResult(VK_4,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker5: SetResult(VK_5,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker6: SetResult(VK_6,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker7: SetResult(VK_7,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker8: SetResult(VK_8,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoMarker9: SetResult(VK_9,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
// file menu
|
||||||
|
ecNew: SetResult(VK_N,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecSaveAs: SetResult(VK_S,[ssCtrl,ssShift],VK_UNKNOWN,[]);
|
||||||
|
ecSaveAll: SetResult(VK_S,[ssShift,ssAlt],VK_UNKNOWN,[]);
|
||||||
|
ecQuit: SetResult(VK_Q,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
// search & replace
|
||||||
|
ecFind: SetResult(VK_F,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecFindNext: SetResult(VK_G,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecFindPrevious: SetResult(VK_G,[ssCtrl, ssShift],VK_UNKNOWN,[]);
|
||||||
|
ecReplace: SetResult(VK_R,[SSCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecGotoLineNumber: SetResult(VK_L,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecProcedureList: SetResult(VK_P, [ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
// view menu
|
||||||
|
ecToggleObjectInsp: SetResult(VK_F11,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecToggleFormUnit: SetResult(VK_F12,[],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
// project menu
|
||||||
|
ecOpenProject: SetResult(VK_F11,[ssAlt],VK_UNKNOWN,[]);
|
||||||
|
ecAddCurUnitToProj: SetResult(VK_F11,[ssShift],VK_UNKNOWN,[]);
|
||||||
|
ecProjectOptions: SetResult(VK_F11,[ssShift,ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
// run menu
|
||||||
|
ecBuild: SetResult(VK_F9,[ssCtrl],VK_UNKNOWN,[]);
|
||||||
|
ecRun: SetResult(VK_F9,[],VK_UNKNOWN,[]);
|
||||||
|
ecStepInto: SetResult(VK_F7,[],VK_UNKNOWN,[]);
|
||||||
|
ecStepOver: SetResult(VK_F8,[],VK_UNKNOWN,[]);
|
||||||
|
ecRunToCursor: SetResult(VK_F4,[],VK_UNKNOWN,[]);
|
||||||
|
|
||||||
|
//codetools
|
||||||
|
ecFindBlockOtherEnd: SetResult(VK_END,[ssAlt],VK_UNKNOWN,[]);
|
||||||
|
ecFindBlockStart: SetResult(VK_HOME,[ssAlt],VK_UNKNOWN,[]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme;
|
function KeySchemeNameToSchemeType(const SchemeName: string): TKeyMapScheme;
|
||||||
begin
|
begin
|
||||||
if (SchemeName='') or (AnsiCompareText(SchemeName,'Default')=0) then
|
if (SchemeName='') or (AnsiCompareText(SchemeName,'Default')=0) then
|
||||||
Result:=kmsLazarus
|
Result:=kmsLazarus
|
||||||
else if (AnsiCompareText(SchemeName,'Classic')=0) then
|
else if (AnsiCompareText(SchemeName,'Classic')=0) then
|
||||||
Result:=kmsClassic
|
Result:=kmsClassic
|
||||||
|
else if (AnsiCompareText(SchemeName,'Mac OS X')=0) then
|
||||||
|
Result:=kmsMacOSX
|
||||||
else
|
else
|
||||||
Result:=kmsCustom;
|
Result:=kmsCustom;
|
||||||
end;
|
end;
|
||||||
@ -2884,6 +2955,7 @@ begin
|
|||||||
kmsLazarus: GetDefaultKeyForCommand(CurRelation.Command,TheKeyA,TheKeyB);
|
kmsLazarus: GetDefaultKeyForCommand(CurRelation.Command,TheKeyA,TheKeyB);
|
||||||
kmsClassic: GetDefaultKeyForClassicScheme(CurRelation.Command,
|
kmsClassic: GetDefaultKeyForClassicScheme(CurRelation.Command,
|
||||||
TheKeyA,TheKeyB);
|
TheKeyA,TheKeyB);
|
||||||
|
kmsMacOSX: GetDefaultKeyForMacOSXScheme(CurRelation.Command,TheKeyA,TheKeyB);
|
||||||
kmsCustom: ;
|
kmsCustom: ;
|
||||||
end;
|
end;
|
||||||
CurRelation.ShortcutA:=TheKeyA;
|
CurRelation.ShortcutA:=TheKeyA;
|
||||||
|
@ -1,54 +1,71 @@
|
|||||||
object ChooseKeySchemeDlg: TChooseKeySchemeDlg
|
object ChooseKeySchemeDlg: TChooseKeySchemeDlg
|
||||||
CAPTION = 'ChooseKeySchemeDlg'
|
Left = 406
|
||||||
CLIENTHEIGHT = 185
|
Height = 219
|
||||||
CLIENTWIDTH = 400
|
Top = 307
|
||||||
ONCREATE = ChooseKeySchemeDlgCREATE
|
Width = 400
|
||||||
POSITION = poscreencenter
|
HorzScrollBar.Page = 399
|
||||||
HORZSCROLLBAR.PAGE = 401
|
VertScrollBar.Page = 218
|
||||||
VERTSCROLLBAR.PAGE = 186
|
ActiveControl = OkButton
|
||||||
LEFT = 406
|
Caption = 'ChooseKeySchemeDlg'
|
||||||
HEIGHT = 185
|
ClientHeight = 219
|
||||||
TOP = 307
|
ClientWidth = 400
|
||||||
WIDTH = 400
|
OnCreate = ChooseKeySchemeDlgCREATE
|
||||||
object NoteLabel: TLABEL
|
Position = poScreenCenter
|
||||||
CAPTION = 'NoteLabel'
|
object NoteLabel: TLabel
|
||||||
LAYOUT = tltop
|
Left = 8
|
||||||
WORDWRAP = True
|
Height = 44
|
||||||
LEFT = 8
|
Top = 10
|
||||||
HEIGHT = 40
|
Width = 382
|
||||||
TOP = 8
|
Anchors = [akTop, akLeft, akRight]
|
||||||
WIDTH = 384
|
AutoSize = False
|
||||||
|
Caption = 'NoteLabel'
|
||||||
|
ParentColor = False
|
||||||
|
WordWrap = True
|
||||||
end
|
end
|
||||||
object OkButton: TBUTTON
|
object OkButton: TButton
|
||||||
MODALRESULT = 1
|
Left = 108
|
||||||
CAPTION = 'Ok'
|
Height = 25
|
||||||
TABSTOP = True
|
Top = 186
|
||||||
TABORDER = 1
|
Width = 75
|
||||||
LEFT = 112
|
Anchors = [akLeft, akBottom]
|
||||||
HEIGHT = 25
|
Caption = 'Ok'
|
||||||
TOP = 152
|
ModalResult = 1
|
||||||
WIDTH = 75
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object CancelButton: TBUTTON
|
object CancelButton: TButton
|
||||||
MODALRESULT = 2
|
Left = 216
|
||||||
CAPTION = 'Cancel'
|
Height = 25
|
||||||
TABSTOP = True
|
Top = 186
|
||||||
TABORDER = 2
|
Width = 75
|
||||||
LEFT = 216
|
Anchors = [akLeft, akBottom]
|
||||||
HEIGHT = 25
|
Caption = 'Cancel'
|
||||||
TOP = 152
|
ModalResult = 2
|
||||||
WIDTH = 75
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object SchemeRadiogroup: TRADIOGROUP
|
object SchemeRadiogroup: TRadioGroup
|
||||||
CAPTION = 'Scheme'
|
Left = 8
|
||||||
ITEMINDEX = 0
|
Height = 116
|
||||||
ITEMS.Strings = (
|
Top = 56
|
||||||
|
Width = 384
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
AutoFill = True
|
||||||
|
Caption = 'Scheme'
|
||||||
|
ChildSizing.LeftRightSpacing = 6
|
||||||
|
ChildSizing.TopBottomSpacing = 6
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 1
|
||||||
|
ClientHeight = 98
|
||||||
|
ClientWidth = 380
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
'Default (Lazarus)'
|
'Default (Lazarus)'
|
||||||
'Classic (TP)'
|
'Classic (TP)'
|
||||||
|
'Mac OS X'
|
||||||
)
|
)
|
||||||
LEFT = 8
|
TabOrder = 1
|
||||||
HEIGHT = 82
|
|
||||||
TOP = 56
|
|
||||||
WIDTH = 384
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,16 +1,27 @@
|
|||||||
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
LazarusResources.Add('TChooseKeySchemeDlg','FORMDATA',[
|
LazarusResources.Add('TChooseKeySchemeDlg','FORMDATA',[
|
||||||
'TPF0'#19'TChooseKeySchemeDlg'#18'ChooseKeySchemeDlg'#7'CAPTION'#6#18'ChooseK'
|
'TPF0'#19'TChooseKeySchemeDlg'#18'ChooseKeySchemeDlg'#4'Left'#3#150#1#6'Heigh'
|
||||||
+'eySchemeDlg'#12'CLIENTHEIGHT'#3#185#0#11'CLIENTWIDTH'#3#144#1#8'ONCREATE'#7
|
+'t'#3#219#0#3'Top'#3'3'#1#5'Width'#3#144#1#18'HorzScrollBar.Page'#3#143#1#18
|
||||||
+#24'ChooseKeySchemeDlgCREATE'#8'POSITION'#7#14'poscreencenter'#18'HORZSCROLL'
|
+'VertScrollBar.Page'#3#218#0#13'ActiveControl'#7#8'OkButton'#7'Caption'#6#18
|
||||||
+'BAR.PAGE'#3#145#1#18'VERTSCROLLBAR.PAGE'#3#186#0#4'LEFT'#3#150#1#6'HEIGHT'#3
|
+'ChooseKeySchemeDlg'#12'ClientHeight'#3#219#0#11'ClientWidth'#3#144#1#8'OnCr'
|
||||||
+#185#0#3'TOP'#3'3'#1#5'WIDTH'#3#144#1#0#6'TLABEL'#9'NoteLabel'#7'CAPTION'#6#9
|
+'eate'#7#24'ChooseKeySchemeDlgCREATE'#8'Position'#7#14'poScreenCenter'#0#6'T'
|
||||||
+'NoteLabel'#6'LAYOUT'#7#5'tltop'#8'WORDWRAP'#9#4'LEFT'#2#8#6'HEIGHT'#2'('#3
|
+'Label'#9'NoteLabel'#4'Left'#2#8#6'Height'#2','#3'Top'#2#10#5'Width'#3'~'#1#7
|
||||||
+'TOP'#2#8#5'WIDTH'#3#128#1#0#0#7'TBUTTON'#8'OkButton'#11'MODALRESULT'#2#1#7
|
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#8#7'Caption'#6#9'No'
|
||||||
+'CAPTION'#6#2'Ok'#7'TABSTOP'#9#8'TABORDER'#2#1#4'LEFT'#2'p'#6'HEIGHT'#2#25#3
|
+'teLabel'#11'ParentColor'#8#8'WordWrap'#9#0#0#7'TButton'#8'OkButton'#4'Left'
|
||||||
+'TOP'#3#152#0#5'WIDTH'#2'K'#0#0#7'TBUTTON'#12'CancelButton'#11'MODALRESULT'#2
|
+#2'l'#6'Height'#2#25#3'Top'#3#186#0#5'Width'#2'K'#7'Anchors'#11#6'akLeft'#8
|
||||||
+#2#7'CAPTION'#6#6'Cancel'#7'TABSTOP'#9#8'TABORDER'#2#2#4'LEFT'#3#216#0#6'HEI'
|
+'akBottom'#0#7'Caption'#6#2'Ok'#11'ModalResult'#2#1#8'TabOrder'#2#0#0#0#7'TB'
|
||||||
+'GHT'#2#25#3'TOP'#3#152#0#5'WIDTH'#2'K'#0#0#11'TRADIOGROUP'#16'SchemeRadiogr'
|
+'utton'#12'CancelButton'#4'Left'#3#216#0#6'Height'#2#25#3'Top'#3#186#0#5'Wid'
|
||||||
+'oup'#7'CAPTION'#6#6'Scheme'#9'ITEMINDEX'#2#0#13'ITEMS.Strings'#1#6#17'Defau'
|
+'th'#2'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'Cancel'#11'Mo'
|
||||||
+'lt (Lazarus)'#6#12'Classic (TP)'#0#4'LEFT'#2#8#6'HEIGHT'#2'R'#3'TOP'#2'8'#5
|
+'dalResult'#2#2#8'TabOrder'#2#2#0#0#11'TRadioGroup'#16'SchemeRadiogroup'#4'L'
|
||||||
+'WIDTH'#3#128#1#0#0#0
|
+'eft'#2#8#6'Height'#2't'#3'Top'#2'8'#5'Width'#3#128#1#7'Anchors'#11#5'akTop'
|
||||||
|
+#6'akLeft'#7'akRight'#8'akBottom'#0#8'AutoFill'#9#7'Caption'#6#6'Scheme'#28
|
||||||
|
+'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'C'
|
||||||
|
+'hildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing'
|
||||||
|
+'.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHoriz'
|
||||||
|
+'ontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChi'
|
||||||
|
+'lds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSiz'
|
||||||
|
+'ing.ControlsPerLine'#2#1#12'ClientHeight'#2'b'#11'ClientWidth'#3'|'#1#9'Ite'
|
||||||
|
+'mIndex'#2#0#13'Items.Strings'#1#6#17'Default (Lazarus)'#6#12'Classic (TP)'#6
|
||||||
|
+#8'Mac OS X'#0#8'TabOrder'#2#1#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -76,6 +76,7 @@ function TChooseKeySchemeDlg.GetKeymapScheme: string;
|
|||||||
begin
|
begin
|
||||||
case SchemeRadiogroup.ItemIndex of
|
case SchemeRadiogroup.ItemIndex of
|
||||||
1: Result:=lisKMClassic;
|
1: Result:=lisKMClassic;
|
||||||
|
2: Result:=lisKMMacOSX;
|
||||||
else Result:='';
|
else Result:='';
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -853,6 +853,7 @@ resourcestring
|
|||||||
lisOkBtn = 'Ok';
|
lisOkBtn = 'Ok';
|
||||||
dlgCancel = 'Cancel';
|
dlgCancel = 'Cancel';
|
||||||
lisKMClassic = 'Classic';
|
lisKMClassic = 'Classic';
|
||||||
|
lisKMMacOSX = 'Mac OS X';
|
||||||
lisPEFilename = 'Filename:';
|
lisPEFilename = 'Filename:';
|
||||||
lisPEUnitname = 'Unitname:';
|
lisPEUnitname = 'Unitname:';
|
||||||
lisPVUTheUnitnameIsUsedWhenTheIDEExtendsUsesClauses = 'The unitname is used '
|
lisPVUTheUnitnameIsUsedWhenTheIDEExtendsUsesClauses = 'The unitname is used '
|
||||||
|
Loading…
Reference in New Issue
Block a user