1 (изменено: RacalCucumber, 2025-02-16 23:32:08)

Тема: AHK: странные эффекты при нажатии комбинаций кнопок:

Есть игра. В ней:
W - движение вперед
+зажатый Shift - бег
При этом зажатие правой кнопку мышки вызывает приостановку бега и переход в режим прицеливания.
При этом нажатие (клик) на кнопку 0 вызывает задержку дыхания.

Все хорошо и все работает. Задача автоматизировать нажатие кнопки 0 при зажатии правой кнопки мышки.

Пишу на луа, для логитеха:


function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 2) then
Sleep(100)
PressAndReleaseKey("0")
end
end

Что бы проверить, поддерживает такое "пианино" из кнопок сама игра. Все работает.

Пишу на ahk:


~*RButton::
	Sleep, 1000
	SendInput {0}
Return

Происходит следующее. Происходит переход в прицельный режим по нажатию правой кнопки мышки, оттикивает слип, затем нажимается 0 и как будто отпускается удерживаемая правая кнопка мышки, происходит выход из прицельного режима.
При этом в логе ahk ничего нет:

02  000	h	d	7.55	RButton        	- тут я нажимаю на правую кнопку мышки при зажатом Shift
A0  02A	i	u	1.00	LShift         	
30  00B	i	d	0.00	0              	
30  00B	i	u	0.00	0              	- тут прошел sendinput и игра вышла из прицельного режима, как будто бы я отпустил правую кнопку мышки
02  000	 	u	6.81	RButton        - а это я отпустил правую кнопку мышки на мышке в реальности. 

В памяти компьютера больше ничего не варится (и аналогичный скрипт на lua то срабатывает как и надо).

Как так то?! В чем косяк?

2

Re: AHK: странные эффекты при нажатии комбинаций кнопок:

Необходимо послать в окно игры '0' или зажать и удерживать?

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

3 (изменено: RacalCucumber, 2025-02-17 22:27:10)

Re: AHK: странные эффекты при нажатии комбинаций кнопок:

__Михаил__
Послать нажатие кнопки 0

SendInput {0} это же именно "послать" а не "зажать", я же не чего не путаю?

4 (изменено: Alectric, 2025-02-18 16:53:17)

Re: AHK: странные эффекты при нажатии комбинаций кнопок:

В логе shift отпускается. Это ты его отпускаешь?

A0  02A i u 1.00 LShift

Вот такой вариант, чтобы shift не дергался:

~*f1::
sleep,100

if getkeystate("Shift","D")
  Send {)}
else
  send {0}

KeyHistory
return

esc::exitapp
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

5

Re: AHK: странные эффекты при нажатии комбинаций кнопок:

RacalCucumber, Да всё верно, простая короткая отправка события нажатия и отпускания клавиши.

Возможно такой код сработает:

+RButton::
SendInput, {vk2 Down}	; Зажать ПКМ.
Sleep, 1000
SendInput, {0} ; Нажать '0'.
KeyWait, RButton, U	; Ожидать отпускания ПКМ.
SendInput, {vk2 Up}	; Поднять ПКМ.
Return
Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101