1

Тема: AHK: Как правильно использовать функцию GetKeyState

Так, небольшая проблема, а точнее ничего не понимаю.

JoystickNumber := 1
JoystickPrefix := %JoystickNumber%Joy
ShiftA := 1
SetTimer, ButtonJoystick, 10
return
;===
ButtonJoystick:
fShiftA := GetKeyState (JoystickPrefix . ShiftA)
ToolTip %fShiftA%
return
;====

И значение fShiftA вместо 0 или 1 всегда равно 1Joy1.
Где я ошибаюсь?

P.S. Запись вида GetKeyState (JoystickPrefix . ShiftA) "спёр" из файла JoystickMouse.ahk там она работает.

WaitForRightButtonUp:
if GetKeyState(JoystickPrefix . ButtonRight)
	return

описания переменных аналогичны моим.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

2

Re: AHK: Как правильно использовать функцию GetKeyState

JoystickPrefix = %JoystickNumber%Joy

3 (изменено: Indomito, 2012-03-25 15:29:20)

Re: AHK: Как правильно использовать функцию GetKeyState

Да, я опечатался при копировании, но мне это не помогает, т.е. функция выдаёт не 0 и 1, а вот почему я не пойму.

P.S. Кстати...
JoystickPrefix = %JoystickNumber%Joy
и
JoystickPrefix := %JoystickNumber% "Joy"

Эквивалентны.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

4

Re: AHK: Как правильно использовать функцию GetKeyState

Indomito пишет:

P.S. Кстати...
JoystickPrefix = %JoystickNumber%Joy
и
JoystickPrefix := %JoystickNumber% "Joy"

Эквивалентны.

Нет, не эквивалентны.

JoystickNumber = 1

JoystickPrefix = %JoystickNumber%Joy
MsgBox, %JoystickPrefix%

JoystickPrefix := %JoystickNumber% "Joy"
MsgBox, %JoystickPrefix%

5

Re: AHK: Как правильно использовать функцию GetKeyState

Кстати, уберите пробел между GetKeyState и (JoystickPrefix . ShiftA).

6

Re: AHK: Как правильно использовать функцию GetKeyState

YMP пишет:

Кстати, уберите пробел между GetKeyState и (JoystickPrefix . ShiftA).

Убрал и всё заработало... а я то искал проблему в ином.
Не привычна такая зависимость.

Да, я так и не понял вот что

fShiftA := GetKeyState(JoystickPrefix . ShiftA)
fShiftB := GetKeyState(JoystickPrefix . ShiftB)
ToolTip A= %fShiftA% B= %fShiftB%

Почему же такая запись верна? - GetKeyState(JoystickPrefix . ShiftA) я про точку... в описании по языку такого нет или я что то недопонимаю.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

7

Re: AHK: Как правильно использовать функцию GetKeyState

В описании это где-то есть. Точка означает конкатенацию (соединение) строк. Но она необязательна, поэтому многие её не ставят.

8

Re: AHK: Как правильно использовать функцию GetKeyState

Да, насчёт скобок и пробелов....

Выражение/Условие - if JoyX < JoyZoneDn and !flagR  -- не работает
Выражение/Условие - if (JoyX < JoyZoneDn and !flagR)  -- работает

Хотя в описании то же всё не однозначно - я прав с if (условие) ?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

9

Re: AHK: Как правильно использовать функцию GetKeyState

Да, правы. Но в описании всё есть и про разные виды условий.

10

Re: AHK: Как правильно использовать функцию GetKeyState

Конкатенация с точкой чуток быстрее чем без. В тесте  для версии 1.1.06.01 на 4%

11

Re: AHK: Как правильно использовать функцию GetKeyState

Ну я пишу то сразу, так что скорость в секции таймера не принципиальна.

;=============Начало обработки кнопок============
ButtonJoystick:

fShiftA := GetKeyState(ShiftA)
fShiftB := GetKeyState(ShiftB)
;ToolTip A= %fShiftA% B= %fShiftB% 

;*********
return
;=============Конец  обработки кнопок============
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

12 (изменено: Indomito, 2012-03-27 12:37:44)

Re: AHK: Как правильно использовать функцию GetKeyState

Indomito пишет:

Кстати.
JoystickPrefix = %JoystickNumber%Joy
и
JoystickPrefix := %JoystickNumber% "Joy"

Эквивалентны.

ошибся, надо так
JoystickPrefix = %JoystickNumber%Joy
и
JoystickPrefix := JoystickNumber[sps]"Joy"

тогда они действительно равны/эквивалентны.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download