2016-06-14 1 views
3

AHK позволяет связывать ключи, то есть нас a::z t огонь 'z' всякий раз, когда нажимается 'a'. Что делать, если я хочу запустить 'z' всякий раз, когда нажимаются «a», «b» или «c»?Могу ли я перечислить несколько клавиш для выполнения одного и того же действия? [AHK]

я, очевидно, повторить мой код:

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

я, вероятно, может использовать Gosub как

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

abc: 
send z 
return 

Есть ли лучший способ сказать «если а, Ь, или с прижаты - огонь z "?

ответ

1

Вы можете просто использовать

a:: 
b:: 
c::z 

я не уверен, что это точная synthax, но это работает.

1

Мы находимся на сайте codegolf.stackexchange.com, правильно?

JFF, вот это назначение - Y до Z с помощью всего 61 символов, используя Hotkey команду:

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

Это решение лучше на мой взгляд. – sixtytrees

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