> [!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
```
これを使えば目的は達成できる。あとは自動でやるか、今のまま手動でやるか...
一旦これでいい気がするな... 押しやすいし。