Inspiration株式会社 - » 【Mac】Quartz Event Services でマウスカーソルを操作

【Mac】Quartz Event Services でマウスカーソルを操作

2014年7月29日 公開 WEB・エンジニアリング 
こんにちは。 最近、コードレス掃除機が気になっているエンジニアです。(欲しい)   今回は「Quartz Event Services」を使ってMacのマウスカーソルを移動させる方法について書きたいと思います。なぜか無性に気になり調べてしまいました。。   「Quartz Event Services」は、マウスやキーボードなどの入力イベントを、プログラムで発行するための機能が提供されています。これらは Objective-C ではなく C の API です。   イベントはこのように発行します。  
// point座標にマウスを移動 CGPoint point = CGPointMake(100.0f, 100.0f); CGEventRef event = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved, point, 0); CGEventPost(kCGHIDEventTap, event); CFRelease(event);
  生成した CGEventRef を CGEventPost に渡してイベントを発行します。発行するイベントの種類はCGEventCreateMouseEvent の第二引数で指定します。今回はマウスカーソルの移動なので kCGEventMouseMoved を使用していますが、これ以外にもマウスボタンダウンやドラッグなど指定可能です。Core Foundation 層のオブジェクトは ARC の対象外なので 、最後に CFRelease を実行して手動でメモリ解放します。   ということで、キーボードの矢印キー操作を監視してマウスカーソルを動かすサンプルを作成してみました。左下に表示されている矢印は私が行ったキーボード操作です。   CGEventSample   うーん。なかなか使い道が見つかりませんね。。 Quartz Event Servicesのリファレンスは関連リンクから御覧ください。   関連リンク: Quartz Event Services Reference – Mac Developer Library  

kouno