#HotkeyModifierTimeout

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

#HotkeyModifierTimeout[編集]

キーボードフックなしでホットキー中でSendコマンドを使用したときに修飾キーの状態を復元しなくなるタイムアウト時間を設定。

#HotkeyModifierTimeout Milliseconds

Parameters[編集]

引数名 説明
Milliseconds 期間をミリ秒で指定する。-1を指定した場合はタイムアウトしない(この場合修飾キーはSendコマンドの後に常に押下状態に復元される)。0を指定した場合は常にタイムアウトする(Sendコマンド以前の修飾キー押下状態を復元しない)。

Remarks[編集]

本ディレクティブは以下のような場合には必要としない:

  • SendInput または SendPlay を用いてキーを送る場合。 というのも、これらを用いる場合は、ユーザによる物理的なキーの押下/解除の反映は、コマンドが完了するまで遅延されるためである。
  • キーボードフックを導入している場合(キーフックが導入されているかどうかは、メインウィンドウのメニューで「View」→「Key History」を辿るか、KeyHistoryコマンドで確認できる)。ユーザの物理的なキー押下/解除はフックで常に検知できるのでタイムアウト値を設定する必要が無い。

ホットキー中で Send コマンドが実行された場合、押されている修飾キーが擬似的に押し上げ状態にされ、修飾キーが押されていない状態にされてからキーストロークが送信される。
キーボードフックを使用していないと、Send コマンドが終わったあとに修飾キーがまだ実際に押されているかを知ることができないため、修飾キーを再度押された状態に戻すべきか分からない。
そこで、このコマンドで設定された時間が経過していなければユーザーはまだ修飾キーを押したままであるとみなし、修飾キーを擬似的に再度押し下げ状態にする。

この値を大きく設定しすぎると、ユーザーがすでに修飾キーを離しているのに、再度押し下げ状態にしてしまい、修飾キーが押されたままの状態になってしまうことがある。
この状態になってしまった場合、実際に修飾キーを一度押すことで、押されていない状態に戻すことができる。

この値が小さいと、Send コマンド実行時に修飾キーが離された状態になってしまうことがあり、修飾キーを押したまま Send コマンドを含むホットキーを複数回実行することができなくなってしまう。

本ディレクティブを(なるべく)必要としないようにするには以下の方策がある:

  • #InstallKeybdHook を利用してキーボードフックを導入する。(Win9x系は未サポート)
  • 古い仕様の SendEvent を用いずに、SendInput または SendPlay を用いる。
  • やむをえず古い仕様の SendEvent 必要とする場合は、SetKeyDelay コマンドでディレイ値を 0 または -1 としてコマンドが素早く完了するようにする。

Related[編集]

GetKeyState

Example(s)[編集]

#HotkeyModifierTimeout 100