У меня есть некоторые действия, определенные в скрипте Autohotkey, и я хочу его запустить
всякий раз, когда я нажимаю ПРОБЕЛ+Alt+Q.
Как мне это сделать?
Я читал, что у пробела есть некоторые проблемы, потому что он уже используется AHK для подтверждения сокращений или чего-то подобного, но я действительно не использую сокращения.
~Space & j::
If GetKeyState("Alt") = 0
Send {Left}
Else
Send +{Left}
Return
Какие у вас есть предложения?
сейчас я пытаюсь получить то, что получено на форуме AHK, пока что это позволяет мне запускать сценарий непрерывно, не выпуская пробел
; THIS IS THE FIRST PART OF MY SCRIPT, ITS FOR THE e, +e, d, +d HOTKEYS...
ARprecColPickerFn(a, b, c)
{
clipboard = ; Start off empty to allow ClipWait to detect when the text has arrived.
MouseGetPos posX, posY
BlockInput, MouseMove
MouseClick, Left, a, b
Sleep 50
SendInput {Ctrl Down}{c Down}
SendInput {c Up}{Ctrl Up}
ClipWait, 2 ; Waits 3 secs for the clipboard to contain text
clipboard += %c%
SendInput {Ctrl Down}{v Down}
SendInput {v Up}{Ctrl Up}
Send {Enter}
BlockInput, MouseMoveOff
MouseMove %posX%, %posY%
}
e::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerLumY, 2)
return
+e::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerLumY, 1)
return
d::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerLumY, -2)
return
+d::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerLumY, -1)
return
; THIS IS THE SECOND PART OF THE SCRIPT, IS FOR THE Space & e, Space & !e, Space & d, Space & !d...
~$Space::
KeyWait,Space,T0.2
If (ErrorLevel)
{
HotstringsEnabled:=true
KeyWait,Space
HotstringsEnabled:=false
}
else
Send {Space}
Return
#If HotstringsEnabled
#Hotstring *
e::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerBluY, 4)
return
!e::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerBluY, 2)
return
d:
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerBluY, -4)
return
!d::
ARprecColPickerFn(ARprecColPickerRestX, ARprecColPickerBluY, -2)
#If
Пока что скрипт работает нормально, но у меня есть проблема. первая часть скрипта, та, которая использует "d" в качестве горячей клавиши, запускается всякий раз, когда я нажимаю «пробел + d», как я могу заставить оба действия сосуществовать вместе? (тот, который вызывается "d", а другой - "space & d". Пожалуйста, любой суперпользователь AHK, который мог это проверить, спасибо, дополнительно.
Кстати, что это значит ...
#Hotstring *
РЕДАКТИРОВАНИЕ >>>>
В сценарии Autohotkey я хотел бы, чтобы Space Alt E
добавлял FIVE, Space Alt D
- вычитание FIVE, Space E
- добавление десяти, а Space D
- вычитание десяти.
Я хочу добавить или вычесть последовательно и быстро, поэтому я хочу удерживать нажатой Space Alt
и затем иметь различные события при нажатии E
или D
Например, SpaceHoldDown AltHoldDown Edown Eup Edown Eup Edown Eup
ДОБАВЛЯЕТ ПЯТЬ 3 раза.
Также иногда я сначала нажимаю Space
а затем Alt
(чтобы удерживать их перед нажатием E
или D
для ДОБАВЛЕНИЯ или ВЫЧИСЛЕНИЯ), а иногда я нажимаю сначала Alt
, а затем Space
, но в любом случае я хотел бы получить тот же результат при нажатии E
или D
потом. Это то, что мой текущий скрипт не может сделать, то есть мне всегда нужно нажимать сначала Space
а затем Alt
прежде чем нажимать E
или D
чтобы скрипт работал, потому что, если я нажму сначала Alt
а затем Space
он не будет работать , Я бы хотел, чтобы скрипт работал независимо от того, в каком порядке нажаты Space
и клавиша Alt
.
Наконец, мне нужен Space
чтобы сохранить его нативную функцию (чтобы не быть заблокированной), потому что она используется для навигации в приложении.
В настоящее время скрипт работает, позволяя мне последовательно удерживать Space Alt
и E
или D
, чтобы ДОБАВИТЬ или СУБРАКТИРОВАТЬ несколько раз, но у меня есть проблемы, которые я должен нажать сначала Space
затем Alt
иначе он не будет работать, также весь мир of script должен быть размещен в самом конце моего AHK-скрипта, иначе он будет мешать другим подпрограммам.
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ, КОД IM ПОПЫТКА НА ОСНОВЕ JJHONSTON2 ОТВЕТИТЬ ...
#If WinActive("ahk_class xxx") || WinActive("ahk_class YYY")
#If (GetKeyState("Alt", "P")) && (GetKeyState("Space", "P"))
q::
msgbox you typed Alt Space Q
#If
#If <----- do I need to put a second #If (turn off context sensitivity)?
но это не работает
После тестирования я понял, что должен использовать #If
а не If
потому что последний только вызовет подпрограмму, если я нажму Alt и пробел ПОСЛЕ того, как я нажму Q.
Но использование #If
не позволяет мне тестировать 2 ключа с помощью операнда &&.
пожалуйста, кто-нибудь знает, как использовать #If GetKeyState
с 2 клавишами Space
и Alt
Пожалуйста , обратите внимание , что я должен быть в состоянии удерживать space
и alt
нажмите и отпустите Q несколько раз для того , чтобы добавить 10 последовательно, что очень важно, поэтому обходной путь , как это ниже не ПОЛЕЗНЫЕ Потому что это заставит меня отпустить alt
или space
между подпрограммами (запустить его несколько раз)
#If GetKeyState("Space", "P")
!q:: ; The word UP may follow the name of a hotkey to cause the hotkey to fire upon release of the key rather than when the key is pressed down.
msgbox wttffff
Return
#If
#If GetKeyState("Alt", "P")
Space & q:: ; The word UP may follow the name of a hotkey to cause the hotkey to fire upon release of the key rather than when the key is pressed down.
msgbox wttffff
Return
#If
спасибо заранее.