MacでShiftキーの判別方法

解決


NAGSYS  2013-10-31 03:27:51  No: 45490

XE4 FireMonkeyでMac版のプログラムを作っています。
キーボードのShiftキーを押したときにある処理をしたいと思ってFormKeyDownイベントに、

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if Key = vkShift then
    xxxxxxxx;
end;

と記述しました。
Windowsで実行すると問題ないのですが、Macで実行するとKeyDownのイベントが発生しなくて困っています。

Shift+'A'のように何かのキーと同時に押せばイベントは発生しますが、Shiftキー単独ではイベントは発生しません。

キーの状態を調べるGetKeyStateを使おうかと思ったのですが、これはWindowsでしか使えないようです。

何か解決策はあるでしょうか?
よろしくお願いします。


DEKO  2013-10-31 11:17:42  No: 45491

GetKeyState 相当のものは Stack Overflow にありました。

[How to get current modifier states with FireMonkey on OSX?]
http://stackoverflow.com/questions/12876911/how-to-get-current-modifier-states-with-firemonkey-on-osx


NAGSYS  2013-10-31 23:56:33  No: 45492

TNSEvent.OCClass.modifierFlagsを使ったらうまくいきました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加