JXA(JavaScript for Automation)で現在のマウスカーソルの位置を取得する

最近JXA(JavaScript for Automation)が気に入ってる。いろいろと情報もWeb上に出始めて、思いついたことは頑張ればだいたい実現できる感じになってきて、非常に便利で楽しい。

マウスカーソルの位置を取得する方法がわかったのでメモ。どうやらOS Xのバージョンによって使えるやり方が変わってきてるようなので、最新の10.11(El Capitan)で実際に使えたやり方が以下。

ObjC.import('Cocoa');
var pos = $.CGEventGetLocation($.CGEventCreate(null));

var sys = Application("System Events");
sys.includeStandardAdditions = true;
sys.displayDialog(JSON.stringify(pos));

これを実行すると、

{"x":1259.12890625,"y":629.25}

こんな感じの内容がダイアログで表示される。なぜか異様に細かい小数なんだけどまあいいや。

最初の2行で、マウスカーソルの位置を取得している。posに"x"と"y"のキーに持つオブジェクトの形で入る。後半の3行はそれをJSONに変換してダイアログで表示してる部分なので直接は関係ないよ。