Тема: AHK: Комбинации
У меня вот "Нубо-вопрос"
Как сделать комбинацию клавиш 3 и больше, допустим при нажатии "C+X+Z" писался какой-то текст.
Заранее спасибо! ![]()
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
У меня вот "Нубо-вопрос"
Как сделать комбинацию клавиш 3 и больше, допустим при нажатии "C+X+Z" писался какой-то текст.
Заранее спасибо! ![]()
Посмотри этот пример, и на форуме еще были подобные темы, воспользуйся поиском.
Посмотри этот пример, и на форуме еще были подобные темы, воспользуйся поиском.
Да я видел это, я не нуб, и я ничего не понял
["1", "2", "3", "4"]Это просто номера или это клавиши на клавиатуре, если это не клавиши то где коды клавиш?)
Или 1 2 3 4 в коде нужно заменять кодами?
Да, это цифровые клавиши. Для своих клавиш их нужно заменить на буквы, или (лучше) на виртуальные коды. Соответственно, подпрограммы, которые начинаются с "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Да, это цифровые клавиши. Для своих клавиш их нужно заменить на буквы, или (лучше) на виртуальные коды. Соответственно, подпрограммы, которые начинаются с "p_", тоже будут другие.
Про вирт. коды написано здесь, есть еще в коллекции эта программа от нашего форумчанина.
Пример для клавиш Q,W,E,RCombo := "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
Да про коды знаю, но не робит скрипт
У меня работает.
Единственный момент, если нажать например 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
Общие проблемы:
- Больше 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 не хотят, так что каждому придётся исходить из возможностей своей клавиатуры.
Приветствую всех.
Я хочу сделать комбинацию в играх, играю в игры жанра файтинг на эмуляторах.
Если кто делал или просто знает как делать объясните пожалуйста, подобные вопросы задают много где даже на иностранных форумах но ответа нужного мне я пока не встречал.
И еще, я уже задавал вопрос на другом форуме, меня даже понять не смогли, если кто шарит, с кем можно поговорить,
чтоб сразу, чтобы не ждать ответа несколько дней ?
Заранее благодарю.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться