1 (изменено: anp, 2013-09-05 22:25:25)

Тема: 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 - не работает).

Яжнепрограммист :)

2

Re: AHK: Эмуляция горячих клавиш двойным нажатием клавиатурных сочетаний

anp, ознакомьтесь с этой темой, отредактируйте заголовок.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Эмуляция горячих клавиш двойным нажатием клавиатурных сочетаний

teadrinker пишет:

anp, ознакомьтесь с этой темой, отредактируйте заголовок.

Отредактировал, и немного сократил текст вопроса для большей лаконичности.

Яжнепрограммист :)

4 (изменено: serzh82saratov, 2013-09-05 22:36:49)

Re: AHK: Эмуляция горячих клавиш двойным нажатием клавиатурных сочетаний

Ctrl+Win+Left = занять левую половину крана.

Нет это Win+Left.

elapsedtime := A_TickCount - starttime
IF (elapsedtime < 250) and (doubleclick=1)

Проще проверять A_TimeSinceThisHotkey.

На две кнопки мыши: G1, G2 - назначена эмуляция сочетаний Win+Left, Win+Right.

Назначь проще на них одиночные клавиши, и далее обрабатывай как надо AHK.

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

5 (изменено: anp, 2013-09-06 01:55:13)

Re: AHK: Эмуляция горячих клавиш двойным нажатием клавиатурных сочетаний

serzh82saratov пишет:

Проще проверять A_TimeSinceThisHotkey

Спасибо, это попробую.

serzh82saratov пишет:

Назначь проще на них одиночные клавиши

Возможно, правда пока не знаю как, да и через двойной Win+Left (#SC14B) скрипт всё-же запускается. И через зажатый Ctrl он видит уже другое сочетание. Я так понимаю, там надо-то одну строчку модифицировать под каждую из трех задач, но не знаю как это сделать.

serzh82saratov пишет:

Нет это Win+Left.

У меня несколько лет это действие назначено на Ctrl+Win+Left (из-за того, что давно использую еще один альтернативный менеджер горячих клавиш с функционалом попроще). Впрочем это не принципиально, если решить вопрос в моей постановке, то я бы уже смог дальше модифицировать его сам в иные варианты сочетаний. В том числе запускать от одиночных клавиш. От сложных вариантов к простым проще перейти самостоятельно.

Если заменяю в коде Run, Notepad.exe на Send #q, то при двойном нажатии срабатывает сочетание Win+q (на нем у меня висит вызов одной из программ). Но работает это почему-то не во всех программах. Например когда активен Firefox - не срабатывает. Аналогично ctrl+A - вызывается по двойному щелчку, но действует не во всех программах. Хотя звук, что скрипт сработал - издаёт.

Яжнепрограммист :)