1 (изменено: vasyausov, 2022-01-28 17:30:32)

Тема: AHK: при нажатии кнопки менялись местами клавиши

Хочу чтобы при зажатой кнопке s кнопка a менялась на d  и наоборот, но не работает.
По факту получается, что не проверяет условие нажатия кнопки, а просто всегда работает безусловно, как если бы было просто

	d::a
	a::d

Что я делаю не так?

GetKeyState, state, s
if state = D
{
	d::a
	a::d
}	
Return

2

Re: AHK: при нажатии кнопки менялись местами клавиши

Код в AHK исполняется сверху вниз, так что когда вы нажимаете горячую клавишу, он не может прыгнуть на пару строк вверх, чтобы проверить условие. Но есть специальный способ создания контекстно-зависимых горячих клавиш с помощью директив.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: vasyausov, 2022-01-28 18:44:19)

Re: AHK: при нажатии кнопки менялись местами клавиши

Cпасибо, вроде помогло, вот такое работает:

#if GetKeyState("s", "P")
{
	d::a
	a::d
}	

Просто в примере самого ahk почему-то именно такая конструкция


GetKeyState, state, Shift
if (state = "D")
    MsgBox At least one Shift key is down.
else
    MsgBox Neither Shift key is down.

4

Re: AHK: при нажатии кнопки менялись местами клавиши

vasyausov, ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на заглавные буквы в начале предложений и правила цитирования.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: при нажатии кнопки менялись местами клавиши

vasyausov пишет:

Просто в примере самого ahk почему-то именно такая конструкция

А что вас смущает? Это к горячим клавишам не имеет отношения.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: vasyausov, 2022-01-28 19:01:45)

Re: AHK: при нажатии кнопки менялись местами клавиши

teadrinker пишет:

А что вас смущает?

Без вас бы не понял, что в моем случае это не сработает, обычно в ЯП всё-таки условия проверяются и исполняется то, что при заходе в ветку описывается.
В моём случае при заходе в ветку операция не выполнялась, это и смущало.

7

Re: AHK: при нажатии кнопки менялись местами клавиши

Так заход в ветку начинается с той строчки, где прописана горячая клавиша. Фигурные скобки в данном случае ничего не меняют. Кстати, в примере с директивой они тоже не нужны. Директива распространяется на все ГК, что ниже.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: при нажатии кнопки менялись местами клавиши

teadrinker пишет:

Так заход в ветку начинается с той строчки, где прописана горячая клавиша.

Мне казалось, что в моем изначальном примере условием захода должно было выступать состояние нажатия на s

if state = D

Видимо я был неправ, спасибо вам еще раз за помощь!