kouno

こんにちは。
最近、コードレス掃除機が気になっているエンジニアです。(欲しい)

 

今回は「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

 
 
©Copyright 2018 Inspiration Co., Ltd. All rights reserved.