0

基本的に私がやろうとしているのは、さまざまなホットキーを使用してさまざまなキーボード レイアウトを切り替えることです。

だから押すと

^+!F4::

これらのキーは再マップされます

d::Space
f::j
j::k
k::l

そしてこれを行う

^+!F8::

リマップします

a::s
s::d
d::f
f::Space
j::Left
k::Numpad4
l::Numpad5
;::Numpad6

そして最後に

^+!F7::

すべてをデフォルトに戻します

私が何を試しても、スクリプトがコンパイルされず、ホットキーが複製されないようです。これはオートホットキーで達成できますか?

4

2 に答える 2

0

Hotkeyコマンドを使用して、ホットキーを動的に変更できます。キーを再マップする方法の小さな例を次に示します。

#Persistent
#UseHook

keyMap := {d: "SPACE", f: "j", j: "k", k: "l"}
; Associative objects are AHK_L only!
; for a pseudo array, do something like this:
; keyMapd := "SPACE"
; keymapf := "j"
; ...

Exit

F4::
    for orig, new in keyMap
    {
        Hotkey, %orig%, RemapKey
    }
return

RemapKey:
    newKey := keyMap[A_ThisHotkey]
    ; to retrieve from a pseudo array, do this:
    ; newKey := keyMap%A_ThisHotkey%
    Send, {%newKey%}
return

keyMap元のキーを新しいターゲットにマッピングする連想配列です。を押すF4と、 で定義されたすべてのキーが取得され、keyMapと呼ばれるサブルーチンが割り当てられますRemapKey。したがって、keyMap( dfjまたはk ) のいずれかのキーが押されたときに呼び出されます。RemapKeyにアクセスして最新のホットキーを取得しA_ThisHotkey、マッピング先を見つけてそのキーを送信します。これは、コマンドが別のホットキーをトリガー#UseHookするのを防ぐために不可欠です(この場合、 **F を押すと **J がトリガーされ、JはKなどをトリガーします)。AutoHotkey_L のみの場合の連想オブジェクトの使用に注意してください。Send. 別のバージョンを使用している場合は、マップを別の方法で定義する必要があります (たとえば、 のような疑似配列keyMapd:="SPACE")。

于 2013-06-01T22:40:18.990 に答える