Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Key 在自动热键中切换多组重映射_Key_Autohotkey_Hotkeys_Remap - Fatal编程技术网

Key 在自动热键中切换多组重映射

Key 在自动热键中切换多组重映射,key,autohotkey,hotkeys,remap,Key,Autohotkey,Hotkeys,Remap,基本上,我正在尝试通过使用不同的热键在不同的键盘布局之间切换 所以当我按下 ^+!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:: 将所有内容恢复为默认值 似乎无论我尝试什么,脚本都无法复制热键。这是否可以通过自动热键实现 您可以使用该命令动态更改热键。下面是一个如何重新映射

基本上,我正在尝试通过使用不同的热键在不同的键盘布局之间切换

所以当我按下

^+!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::
将所有内容恢复为默认值

似乎无论我尝试什么,脚本都无法复制热键。这是否可以通过自动热键实现

您可以使用该命令动态更改热键。下面是一个如何重新映射密钥的小示例:

#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
中的任何键(dfjk)时,将调用该键
RemapKey
通过访问
A_thishhotkey
获取最新热键,找出它映射到的内容并发送该热键。
#UseHook
是防止
Send
命令触发另一个热键(在我们的例子中,按**F将触发**JJ然后触发K,依此类推)所必需的。
请注意,仅当自动热键时才使用关联对象。如果您使用的是另一个版本,则必须以另一种方式定义映射(例如,伪数组,如
keymappd:=“SPACE”
)。

这是另一种方式,也需要自动热键

#SingleInstance Force
Flag:=0
Return

^+!F7::
Flag:=0
TrayTip, AutoHotKey, Keyboard setting Default, 1
Return

^+!F4::
Flag:=1
TrayTip, AutoHotKey, Keyboard setting A, 1
Return

^+!F8::
Flag:=2
TrayTip, AutoHotKey, Keyboard setting B, 1
Return

#If (Flag=1)
x::SoundBeep, 500, 100
d::Space
f::j
j::k
k::l
#If

#If (Flag=2)
x::SoundBeep, 2000, 100
a::s
s::d
d::f
f::Space
j::Left
k::Numpad4
l::Numpad5
;::Numpad6
#If

您正在使用自动热键吗?