Базовый удвоитель ввода AutoHotKey?

Базовый удвоитель ввода AutoHotKey?

У меня есть довольно простая идея, с которой, как мне кажется, AutoHotKey может мне помочь. По сути, когда я использую ctrl-v для вставки, я хочу, чтобы он передавал второе ctrl-v, чтобы я вставлял дважды. У меня в среде разработки есть несколько назначений клавиш, настроенных на двойные нажатия различных клавиш ctrl, поэтому я также хотел бы иметь возможность расширить скрипт на другие клавиши, помимо ctrl-v. Это мой первый скрипт AutoHotKey, и мне трудно сдвинуться с мертвой точки, поскольку здесь много всего нужно переварить. Спасибо!

решение1

В AutoHotkey двойная отправка ключа выполняется довольно просто.

#IfWinActive
~^v::SendInput, ^v

Несколько дополнительных пунктов:

1) Вы можете настроить, какие программы будут получать двойную отправку или нет, используя #IfWinActiveи назначая имя окна, имя exe-файла, класс и т. д. для WinTitle.

2) Тильда в определении горячей клавиши означает, что скрипт не останавливает исходное нажатие клавиши. Если вы хотите полностью контролировать, будет ли выполнено исходное нажатие или нет, вы можете удалить тильду (что заблокирует исходное нажатие клавиши) и затем отправить его дважды самостоятельно (или не отправлять вообще, или сделать что угодно, чтобы исходное нажатие клавиши не регистрировалось).

3) При необходимости можно добавить задержку, расширив функцию до более чем однострочного определения горячей клавиши и используя Returnоператор

4) Вы можете использовать один и тот же код для нескольких горячих клавиш с помощью A_ThisHotkey.

5) Вы также можете разрешить нажатия клавиш с несколькими модификаторами, используя модификатор *, если это необходимо. Это может не работать правильно с кодом-примером ниже, но это просто то, о чем следует знать.

Пример пунктов 1-4 выше:

; this will execute the code to send duplicate keystrokes 
; for any of the hotkeys defined, in this case, a,b,c, or Ctrl+V
#IfWinActive ahk_exe notepad.exe
~a::
~b::
~c::
~^v::
    Sleep 200   ; Possibly use or adjust for reliability if needed
    SendInput % SubStr(A_ThisHotkey, 2) ; Remove tilde and send duplicate keystrokes for whichever hotkey executed
Return

Связанный контент