我可以列出几个键来执行相同的操作吗? [AHK]

时间:2016-06-14 20:32:04

标签: autohotkey

AHK允许绑定密钥,即我们a::z触发' z'每当' a'被压了。 如果我想开火' z'每当' a',' b'或' c'是按下了吗?

我显然可以重复我的代码:

  a::z
  b::z
  c::z 

我可以使用类似Gosub的

a::Gosub, abc
b::Gosub, abc
c::Gosub, abc

abc:
send z
return

是否有更好的方式说"如果a,b或c被按下 - 触发z"?

3 个答案:

答案 0 :(得分:1)

你可以使用

a::
b::
c::z

我不确定什么是确切的合成器,但这有效。

答案 1 :(得分:1)

我们在codegolf.stackexchange.com,对吧?

JFF,这里使用Hotkey命令将 A - Y 分配给Z,只有61个字符:

loop,25
    hotkey,% chr(a_index+64),z
return
z(){ 
    send z
}

答案 2 :(得分:0)

使用Hotkey动态定义热键的另一种解决方案,parse以便用户可以直接指定键列表:

; Thanks engunneer: autohotkey.com/board/topic/45636-script-to-prevent-double-typing/?p=284048
; Thanks throwaway_ye: https://www.reddit.com/r/AutoHotkey/comments/54g40q/how_can_i_bind_several_keys_to_the_same_command/d81j0we

; The following part must be located in the auto-execute section, 
; i.e. the top part of the AHK script.

keylist = 1234567890qwertzuiopasdfghjklyxcvbnm

Loop, parse, keylist
{
  Hotkey, $%A_LoopField%, SendGivenKey
}    
Return


; This can be located anywhere in the AHK file
SendGivenKey:
StringReplace, key, A_ThisHotkey, $, , All
send %key%
Return