Тема: AHK: Эмуляция горячих клавиш двойным нажатием клавиатурных сочетаний
Доброго времени суток.
1) Есть многокнопочная мышь.
На две кнопки мыши: G1, G2 - назначена эмуляция сочетаний Win+Left, Win+Right.
G1 убавляет, а G2 прибавляет громкость в системе.
При зажатом Ctrl эти клавиши отвечают за изменение размеров активного кона (Ctrl+G1 = Ctrl+Win+Left = занять левую половину крана.
2) Задача 1: при двойном щелчке G1 (двойное Win+Left) - вызвать эмуляцию одинарного нажатия глобального сочетания Win+V (в моем случае Win+V = выключить громкость);
3) Задача 2: при двойном G2 (двойное Win+Right) эмулировать последовательность "зажатие Alt, Tab, Tab, отпускание Alt" (переход к следующему окну).
4) Задача 3: двойной щелчок стандартной средней кнопки мыши только в заданной программе (допустим Notepad.exe) эмулирует нажатие какой-либо комбинации, пусть это будет Ctrl+A.
5) Задача 4: Cделать функциональным сочетание Alt+G1 (Alt+Win+Left), к примеру, на запуск того же Notepad.exe
И еще: можно ли это всё в один файл скрипта впехнуть, а не отдельным для каждого сочетания? Собственно это весь вопрос.
Я только начал читать справку и форум, самостоятельно пока не справлюсь.
Разобрался, что Win+Left - это #SC14B.
Взял для примера часть размещенного на форуме кода (см. код ниже), касающегося двойных нажатий и заменил
часть на требуемую комбинацию. Например, на Run, Notepad.exe.
starttime := A_TickCount
doubleclick:=0
~#SC14B::
elapsedtime := A_TickCount - starttime
IF (elapsedtime < 250) and (doubleclick=1)
{
Run, Notepad.exe
soundbeep, 1000, 50
doubleclick:=0
}
else
{
doubleclick := 1
}
starttime := A_TickCount
return
f12::exitapp
В этом случае код работает - двойной щелчок G1 (двойной Win+Left) запускает Notepad.exe.
Если в коде заменить Run, Notepad.exe на команду Send, ^a, новая требуемая комбинация Ctrl+A уже как-то странно работает. Не во всех программах. Например, если активен Firefox - скрипт не срабатывает, или виснет - перестает работать до перезапуска из трея.
Глобальное сочетание Win+V вообще не понял как эмулировать этим кодом (то что пробовал ставить в код взамен Run, Notepad.exe - не работает).