スポンサーリンク
Mouse without Bordersを使ったマウス・キーボード共有を使って、別のPCを利用している最中にAutoHotkeyがよくわからない挙動を示すので、その挙動について自分用のメモを書いておきます。
目次
スポンサーリンク
無変換の挙動
なぜか無変換(IME ATOK OFF)が聴かなくて、変換(IME ATOK ON)は使える。
無変換・変換ともに、修飾キー扱い(&)にしているので、単独キーを指定しているが、「sc07B::Send, {sc07B}」(SendMode Play)にしている無変換は動かず、実験の影響で「sc079::Send {sc079 Down} Sleep 30 Send {sc079 Up} Return」(SendMode Play)としていた変換は動くという挙動。
「sc07B::SendInput {sc07B}」にすると、確かに無変換単独キーがちゃんと送信されているようだが、無変換+○○に指定したホットキーは送信されず。
操作する側のAutoHotkeyをOFFにすると
操作する側のAutoHotkeyをOFF(Suspend)にすると、そのまま無変換キーなども送信されているようで、ちゃんと操作される側でうまくAutoHotkeyが発動し、無変換+○○も正しく動作する。
SendPlay -> SendInput なら無変換+○○も正しく動作
Send(SendMode Play)をSendInputにすれば、正しく動作した。というわけで、Mouse without Bordersがグローバルフックでキーストロークを検出していて、Send Playを使うことによってそれを回避してしまっていた、ということっぽい。
Window Spy で挙動を観察すると
Window Spyを使って、現在フォーカスのあるアプリを表示してみると、別PCにまでマウスカーソルを持って行っても、アクティブなウィンドウは変わらなかった。SendPlayはそのアプリケーションに送られてしまっているようで、よくよく見てみると、そのアプリケーションに「無変換+○○」の結果が実行されていた。一方でSendInputはキーストロークを発生させて、そのキーストロークをMouse without Bordersが検出して~となっているらしい。
つまり、この問題も、SendPlayの副作用の一つと考えることができそう。
Ctrl+○○はSendPlayでも通る
しかし、Ctrl+○○のホットキーは、なぜかちゃんと別PC上で実行される。
このとことから、Windows本来の修飾キーであるCtrlと、AutoHotkeyによって修飾キー化された無変換キー・変換キーとで、扱われ方が違う(Ctrlなどの入力については、Mouse without Bordersのグローバルフックが先に効いている?)
以上、中途半端。
スポンサーリンク
スポンサーリンク