情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Mouse without Borders + AutoHotkey メモ

AutoHotkey (26) Mouse without Borders (3) Windows 7 (61)

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のグローバルフックが先に効いている?)

以上、中途半端。

コメント(0)

新しいコメントを投稿