Удержание клавиши и нажатие самой себя Topic is solved

Помощь в написании скриптов
TR0Y

Удержание клавиши и нажатие самой себя  Topic is solved

Post by TR0Y » 27 Jan 2023, 07:45

Привет,
есть скрипт на удержание клавиши и клавиша нажимала сама себя

Code: Select all

...
; 1 цифра
$SC002::SetTimer(SC002,1)
SC002 UP::SetTimer(SC002,0)
SC002()
{
	PressKey("SC002")
	SetTimer(SC002,0)
}
; Функция нажатия клавиши
PressKey(nameKey) {
	SendInput "{%nameKey%}" ; <<<< не передает параметр "SC002" клавишу и не жмется цифра 1
}
...

Code: Select all

...
; Функция нажатия клавиши
PressKey(nameKey) {
	SendInput "{SC002}" ; <<<< а вот так работает и жмется цифра 1
}
...
Нужно для игры, чтобы при удерживании клавиши, клавиша сама на себя нажимала, клиент игры не поддерживает повтор клавиши при удержании на старой версии это выглядели так:

Code: Select all

...
;1
$SC002::SetTimer, SC002, -0
SC002 UP::SetTimer, SC002, OFF
SC002:
	PressKey("SC002")
Return

; Функция нажатия клавиши
PressKey(nameKey) {
	SendInput {%nameKey% Down}
	Sleep(50)
	SendInput {%nameKey% Up}
	return
}
...

TR0Y
Posts: 4
Joined: 27 Jan 2023, 08:37

Re: Удержание клавиши и нажатие самой себя

Post by TR0Y » 27 Jan 2023, 08:46

Я недостаточно был понятным.
***********************************************************************************************
Перевожу скрипт с v1 на v2. По новой версии SendInput имеет иной синтаксис.
Этот код для v2 корректный: (жмет на клавишу)

Code: Select all

SendInput "{SC002}"
Этот код для v2 НЕ корректный: (не жмет на клавишу)

Code: Select all

key:="SC002"
SendInput "{%key%}"
***********************************************************************************************
ВОПРОС:
Почему не работает в v2 переменная имени клавиши для нажатия ?

Code: Select all

SendInput "{%variable%}"
Мне необходимо передать SendInput "{variable_key}" идентификатор клавиши (SC или VK вида) как переменную в SendInput, чтобы SendInput нажал на клавишу из переменной, как это сделать? Я искал в google 2 часа по ключевым словам и ничего не нашел :?

ПомогитИ :cry:

mcl
Posts: 356
Joined: 04 May 2018, 16:35

Re: Удержание клавиши и нажатие самой себя

Post by mcl » 28 Jan 2023, 00:40

TR0Y wrote: Почему не работает в v2 переменная имени клавиши для нажатия ? SendInput "{%variable%}"

Команда SendInput в AHK.v2 принимает в качестве аргумента строку. Раскрытие выражений через символ % не работает внутри строк.

Code: Select all

; Используйте конкатенацию строк:
SendInput "{" . variable . " Up}"

; Альтернативный вариант, с заменой текста внутри заданного шаблона:
SendInput StrReplace("{KEYNAME Up}", "KEYNAME", variable)


; Альтернативный вариант: переписать функцию и передавать клавишу уже в скобках:
PressKey( "{SC002 Down}", "{SC002 Up}" )

PressKey( keyDown, keyUp ) {
	SendInput keyDown
	Sleep 50
	SendInput keyUp
}
github://oGDIp - GDI+ wrapper for AHK v1.1

Post Reply

Return to “Помощь”