「Xamarin.Mac/キーボードの入力をシミュレートする」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

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

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: