> [!note] > 既に`;` -> `Ctrl`でアクティブなウィンドウの中央にカーソルを動かすキーバインドがあったため、それを使ってみる。その上で面倒であれば検討する。 ## 背景 [[HHKB Studio]]を購入して[[ポインティングスティック]]を使うようになったが、複数画面を使うときに画面を超える移動がしんどい。 `Mouse`モードと左手キーで6領域の画面をアクティブにする機能は既にあるため、そのついでにポインタも移動させるようにしてみる。 ## TODO - [-] マウスのポインタを移動する関数の用意 - [-] キーバインドの割り当て ## マウスポインタを移動する関数の用意 `MouseUtils.ahk`の`moveMouse`が使えそう。 ```autohotkey moveMouse(x, y) { MouseGetPos nowX, nowY SendMode Event MouseMove, nowX + x, nowY + y SendMode Input } ``` `Command.ahk`にもっといいものがあった! ```autohotkey ;【概要】アクティブウィンドウの中央にカーソルを移動します ;【引数】なし ;【戻値】なし MoveCenterInActiveWindow() { WinGetPos, winX, winY, width, height, A CoordMode, Mouse, Screen MouseGetPos, mX, mY moveMouse(winX + width / 2 - mX, winY + height / 2 - mY) CoordMode, Mouse, Relative } ``` `Others.ahk`にすでにこんなエモいキーバインドが... ```autohotkey ;----- マウスカーソル配下のウィンドウをアクティブにする ----- ; コンビネーション時はアクティブウィンドウの中央にマウスカーソルを召喚する $Ctrl:: if (isSecondKey()) { MoveCenterInActiveWindow() } else { MouseGetPos, , , hWindow WinActivate, ahk_id %hWindow% FlashWindow() } return ``` これを使えば目的は達成できる。あとは自動でやるか、今のまま手動でやるか... 一旦これでいい気がするな... 押しやすいし。