IDE: added key mapping scheme for Mac OS X

git-svn-id: trunk@12827 -
This commit is contained in:
tombo 2007-11-11 16:42:07 +00:00
parent 7f51d24813
commit 5f3b8ef645
5 changed files with 161 additions and 59 deletions

View File

@ -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;

View File

@ -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

View File

@ -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
]); ]);

View File

@ -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;

View File

@ -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 '