メインメニューを開く

差分

Xamarin.Mac/キーボードの入力をシミュレートする

331 バイト追加, 2016年3月31日 (木) 07:06
なお、ここで使われる[[キーコード]]は[[Mac]]独自のものであり、[[Windows]]で一般的な[[キーコード]]とはまったく別物である点に注意すること。[[キーコード]]の一覧などの詳細は「[[キーコード/Mac OS X]]」を参照。
また、本物のまた、仮想的にキーコードを送信する際は本物の[[キーボード]]の[[Caps Lock]]の状態は無視されるので、大文字を送信する場合は「CGEventFlags.Shift」を立てる。
<source lang="csharp">
static void PostKeyWithModifiers(ushort keycode, CGEventFlags modifiers = 0)
{
using (var source = new CGEventSource(CGEventSourceStateID.CombinedSession)) using (var keydown = new CGEvent(source, keycode, keyDown: true)) using (var keyup = new CGEvent(source, keycode, keyDown: false)) { keydown.Flags = modifiers;
var keydown = new CGEvent(source, keycode, keyDown: true); keydown.Flags = modifiers;  var keyup = new CGEvent(source, keycode, keyDown: false); // 送信 CGEvent.Post(keydown, CGEventTapLocation.AnnotatedSession); CGEvent.Post(keyup , CGEventTapLocation.AnnotatedSession); }
}
}
</source>
個人的に[[スクリーンセーバーXamarin.Mac/スクリーンセーバーを終了させる|スクリーンセーバーを解除する]]を解除するのには送信しても他のアプリに影響の少ないであろう右矢印キーを用いた。のには送信しても他のアプリに影響の少ないであろう左矢印キーを用いた。
<source lang="csharp">
PostKeyWithModifiers(123); // →矢印「←矢印キー」を送信;
</source>
==関連項目==
*[[Xamarin.Mac/ディスプレイのスリープを解除する]]
*[[Xamarin.Mac/スクリーンセーバーを終了させる]]*[[Xamarin.Mac/ウインドウの一覧を取得する]]
==参考文献==
{{reflist}}
匿名利用者