karakaram/alt-ime-ahk

AutoHotKey1.1.27.01以降でAltキーを押下するとメニューバーにカーソルが移動するようになった

Closed this issue · 6 comments

AutoHotKey1.1.26.01まではカーソルがその場に残っていたが、1.1.27.01以降からメニューバーにカーソルが移動するようになってしまった。IMEの変更はこれまで通り動作している。Windows10の最新版にて発生を確認。

1.1.26.01から1.1.27.01の間の仕様変更によるものと思われる。ChangeLogを確認する。

1.1.27.00のこの変更が怪しい

Changed the rules for masking Alt/Win after pressing a hook hotkey:

AutoHotKey1.1.26.01をダウンロードして、Key up時の動きの差分を確認してみる
https://autohotkey.com/download/1.1/

~LAlt::return
~RAlt::return

LAlt up::return
RAlt up::return

AutoHotKey1.1.26.01の場合、Altキー押下でメニューバーにカーソルが移動せず
AutoHotKey1.1.28.00の場合、Altキー押下でメニューバーにカーソルが移動した

~AltとAlt upを組み合わせているときの挙動が変わったようだ

1.1.27.00 - December 25, 2017 のChangesに変更内容が書いてありましたので、その情報を使って修正したら、最新版でも動作しました。変更は、以下の2行です。
*~LAlt:: Send {Blind}{vk07}
*~RAlt:: Send {Blind}{vk07}
AutoHotkeyU64.exeで試しました。
私の環境は、Mac OS X(最新版)の英語キーボードで、VirtualBoxを動かし、Windows 10 Build 17134.1 ISO版です。Mac側には、Karabinerがはいっていて、Windows側にはAutoHotkeyが入っていますので、純粋のWin環境とは異なるかもしれません。

@DaddyF
ご連絡ありがとうございます。
こちらの環境でも試してみます。

@DaddyF さんにいただいたコードで、Windows10 の最新版とAutoHotKeyのv1.1.28.02で動作することを確認。alt + shift + s のような複数キーの同時押しも問題なし。

Change logとマニュアルを良く読んでみた。

Changes 1.1.27.00 - December 25, 2017 の該当箇所を抜粋

Changed the rules for masking Alt/Win after pressing a hook hotkey:
only hotkeys which require Alt/Win (such as #a::, not *a::) cause masking
Unsuppressed hotkeys such as ~#a:: no longer cause masking

#a:: のような only hotkeys はメニューがアクティブにならないが、~#a:: のような Unsuppressed hotkeys はメニューがアクティブになるようになった。masking とは、Windowsメニューや上部のメニューバーがアクティブになることを抑制することを意味している(?)。

It can be suppressed manually with Send {Blind}{vk07} or similar.

Send {Blind}{vk07} と書くことでメニューを抑制することができる。

Start Menu を抑制する方法は、#MenuMaskKey にも説明がある。

The Start Menu (or the active window's menu bar) can be suppressed by sending any keystroke. The following example disables the ability for the left Win key to activate the Start Menu, while still allowing its use as a modifier:

~LWin::Send {Blind}{vk07}

vk07 は同ページに説明があるように、no mapping を意味する仮想キーコードらしい

Good candidates are virtual key codes which generally have no effect, such as vk07, which Microsoft documents as "undefined", or vkFF, which is reserved to mean "no mapping" (a key which has no function).