Delphi IDE に新しいショートカットを追加することは、Open Tools API がこのためのサービスを提供するため、それほど難しくありません。私は明らかにもっと複雑なことをしようとしています:追加のショートカットのようなワードスターを追加します:
ユーザーが押したときに何かを起こしたい
Shift+Ctrl+H に続いて単一キー X
Shiftキーの状態に関係なく、Xは機能するはずです。
これは私のコードです:
procedure TGxKeyboardBinding.BindKeyboard(const BindingServices: IOTAKeyBindingServices);
const
DefaultKeyBindingsFlag = kfImplicitShift + kfImplicitModifier + kfImplicitKeypad;
var
GExpertsShortcut: Byte;
ShiftState: TShiftState;
FirstShortCut: TShortCut;
SecondShortCut: TShortCut;
begin
GExpertsShortcut := Ord('H');
ShiftState := [ssShift, ssCtrl];
FirstShortCut := ShortCut(GExpertsShortcut, ShiftState);
SecondShortCut := ShortCut(Ord('X'), []);
BindingServices.AddKeyBinding([FirstShortCut, SecondShortCut],
TwoKeyBindingHandler, nil,
DefaultKeyBindingsFlag, '', '');
end;
したがって、 ShiftState := [ssCtrl] を押すと
Ctrl+HX
私の TwoKeyBindingHandler メソッドを呼び出します。
しかし ShiftState := [ssShift, ssCtrl] を押すと
Shift+Ctrl+HX
何もしません。
奇妙なことに、 ShiftState := [ssShift, ssCtrl] (最初のキーにのみ影響するはずです) を指定すると、
Shift+Ctrl+H Shift+X
修飾キーなしで 2 番目の ShortCut が追加されても、TwoKeyBindingHandler メソッドを呼び出します。
何か案が?これは、Delphi IDE/Open Tools API の既知の制限/バグでしょうか? 既知の回避策はありますか?
Delphi 2007 と Delphi 10 Seattle で試してみましたが、違いはありませんでした。