1

Тема: AHK: Комбинации

У меня вот "Нубо-вопрос"
Как сделать комбинацию клавиш 3 и больше, допустим при нажатии "C+X+Z" писался какой-то текст.
Заранее спасибо!

2

Re: AHK: Комбинации

Посмотри этот пример, и на форуме еще были подобные темы, воспользуйся поиском.

3 (изменено: sergeyols, 2014-02-02 01:16:08)

Re: AHK: Комбинации

Irbis пишет:

Посмотри этот пример, и на форуме еще были подобные темы, воспользуйся поиском.


Да я видел это, я не нуб, и я ничего не понял

["1", "2", "3", "4"]

Это просто номера или это клавиши на клавиатуре, если это не клавиши то где коды клавиш?)
Или 1 2 3 4 в коде нужно заменять кодами?

4

Re: AHK: Комбинации

Да, это цифровые клавиши. Для своих клавиш их нужно заменить на буквы, или (лучше) на виртуальные коды. Соответственно, подпрограммы, которые начинаются с "p_", тоже будут другие.
Про вирт. коды написано здесь, есть еще в коллекции эта программа от нашего форумчанина.
Пример для клавиш Q,W,E,R

Combo := "p_", ComboKeys := ["vk51", "vk57", "vk45", "vk52"]
For K,V in ComboKeys
   Hotkey, %V%, ComboProc
Return

ComboProc:
   Combo .= A_ThisHotkey
   if IsLabel(Combo)
      Gosub % Combo
   KeyWait, %A_ThisHotkey%
   Combo = p_
Return

p_vk51vk57vk45:
   MsgBox QWE
Return

p_vk45vk57vk51:
   MsgBox EWQ
Return

p_vk57vk45vk52:
   MsgBox WER
Return

5

Re: AHK: Комбинации

Irbis пишет:

Да, это цифровые клавиши. Для своих клавиш их нужно заменить на буквы, или (лучше) на виртуальные коды. Соответственно, подпрограммы, которые начинаются с "p_", тоже будут другие.
Про вирт. коды написано здесь, есть еще в коллекции эта программа от нашего форумчанина.
Пример для клавиш Q,W,E,R

Combo := "p_", ComboKeys := ["vk51", "vk57", "vk45", "vk52"]
For K,V in ComboKeys
   Hotkey, %V%, ComboProc
Return

ComboProc:
   Combo .= A_ThisHotkey
   if IsLabel(Combo)
      Gosub % Combo
   KeyWait, %A_ThisHotkey%
   Combo = p_
Return

p_vk51vk57vk45:
   MsgBox QWE
Return

p_vk45vk57vk51:
   MsgBox EWQ
Return

p_vk57vk45vk52:
   MsgBox WER
Return

Да про коды знаю, но не робит скрипт

6 (изменено: serzh82saratov, 2014-02-11 23:40:24)

Re: AHK: Комбинации

У меня работает.
Единственный момент, если нажать например QWE, отпустить Q, и нажать R, хоткей всё равно сработает.

Как вариант:


MultiHotkey("1|2|3|4", "1234")  
MultiHotkey("vk51|vk57|vk45|vk52", "QWER")   
Return

MultiHotkey( Hotkeys, Label) {
    Static ArrCombo := {},  Combo := "|" 
    
    Loop, parse, Hotkeys, |
    {
        Hotkey, %A_LoopField%, MHK_D
        Hotkey, %A_LoopField% Up, MHK_U
    }
    
    ArrCombo["|" Hotkeys "|"] := Label 
    Return
     
    MHK_D:
        IfNotInString, Combo, |%A_ThisHotkey%|
            Combo .= A_ThisHotkey "|" 
            
        If ((GoLabel := ArrCombo[Combo]) != "") && IsLabel(GoLabel)
            GoSub %GoLabel%
        Return
     
    MHK_U:
        ThisHotkey := SubStr( A_ThisHotkey, 1, -3) 
        StringReplace, Combo, Combo, |%ThisHotkey%|, | 
        Return 
} 

1234:
QWER:
    ToolTip %A_ThisLabel%
    Return 

Вариант чтобы кнопки нажимались при отпусканиии, если комбинация не закончена


MultiHotkey("2|3|4|6", "2346") 
MultiHotkey("1|2|3|4", "1234")  
MultiHotkey("2|3|4", "234")  
MultiHotkey("vk51|vk57|vk45|vk52", "QWER")  
MultiHotkey("vk51|vk57|vk45|vk49|vk4F|vk50", "QWEIOP") 
Return

MultiHotkey( Hotkeys, Label) {
    Static ArrCombo := {}, Combo := "|", GoLabel
    
    Loop, parse, Hotkeys, |
    {
        Hotkey, %A_LoopField%, MHK_D
        Hotkey, %A_LoopField% Up, MHK_U
    }
    
    ArrCombo["|" Hotkeys "|"] := Label 
    Return
     
    MHK_D:
        IfNotInString, Combo, |%A_ThisHotkey%|
            Combo .= A_ThisHotkey "|" 
            
        If ((GoLabel := ArrCombo[Combo]) != "") && IsLabel(GoLabel)
            GoSub %GoLabel%
        Return
     
    MHK_U:
        ThisHotkey := SubStr( A_ThisHotkey, 1, -3)
        
        If GoLabel =
            SendInput {%ThisHotkey%} 
            
        StringReplace, Combo, Combo, |%ThisHotkey%|, |  
        Return 
} 
 
QWEIOP:
234:
2346:
1234:
QWER:
    ToolTip %A_ThisLabel%
    Return 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: serzh82saratov, 2014-02-03 11:11:31)

Re: AHK: Комбинации

Общие проблемы:
- Больше 4 хоткеев не видит.
- Это почему то не работает:

MultiHotkey("2|3|4|5", "1234")

Оказалось что оба недостатка присуще и предыдущему варианту

Combo := "p_", ComboKeys := [ "2", "3", "4", "5"]
For K,V in ComboKeys
   Hotkey, %V%, ComboProc
Return

Ладно про 5 кнопок что то понятно, но почему [ "2", "3", "4", "5"] не работает, загадка.
Хотя [ "2", "3", "4", "6"] работает, видимо аппаратное ограничение, и возможно что не на всех клавиатурах.

Думаю что только клавиатурный хук избавит от всех недостатков.
ап:
Хотя тоже нет, клавиатура просто физически не посылает нажатие, так что без вариантов.
Так работает 6 кнопок:

MultiHotkey("vk51|vk57|vk45|vk49|vk4F|vk50", "QWEIOP")

а по другому и 4 не хотят, так что каждому придётся исходить из возможностей своей клавиатуры.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Комбинации

Приветствую всех.
Я хочу сделать комбинацию в играх, играю в игры жанра файтинг на эмуляторах.
Если кто делал или просто знает как делать объясните пожалуйста, подобные вопросы задают много где даже на иностранных форумах но ответа нужного мне я пока не встречал.
И еще, я уже задавал вопрос на другом форуме, меня даже понять не смогли, если кто шарит, с кем можно поговорить,
чтоб сразу, чтобы не ждать ответа несколько дней ?
Заранее благодарю.