web-dev-qa-db-ja.com

自動ホットキーを再マッピングするときの再帰

これが私が持っているコードです:

[::
Send [
Input, Char, T2 L1
if Char = a
{
    Send â
    return
}
Send %Char%
return

[と入力すると、aを入力すると通常の動作があり、âが生成されます。しかし、[と入力するとp、文字[は印刷されません。問題は、Send [が再マッピングされている文字である2行目([)です。

私は成功せずに以下を試しました:

  • Send `[

  • Send {[}

再マッピングされていても[を印刷したいです。

2
Gradient

ホットキー、すなわち$の前に、修飾子として$[::を使用してください。

AHKのドキュメント 状態:

これは通常、スクリプトが送信コマンドを使用してホットキー自体を構成するキーを送信する場合にのみ必要です。 $ PREFIXの正確な動作は、オペレーティングシステムによって異なります。

Windows NT4/2K/XP以降の場合:$ PREFIXはこのホットキーを実装するために使用されるキーボードのフックを強制します。これは、副作用として送信コマンドがトリガされるのを防ぎます。 $ prefixは、このホットキーの定義上のどこかに#useHookを指定したことと同じです。

Windows 95/98/Me:ホットキーはスレッドの実行中に無効になり、その後再び有効になります。副作用として、#maxthreadsperhotkeyが1より高い設定されている場合、そのようなホットキーの場合は1に設定されているように動作します。

2
Bob