1 (изменено: studentarh, 2012-11-23 10:20:10)

Тема: AHK: Разная работа клавиш, выполняющих одни функции

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

По замыслу при нажатии на любую стрелку должна появляться подсказка с соответствующей цифрой, сколько стрелок одновременно удерживается, столько и цифр должно быть в подсказке. Так вот, все четыре цифры не появляются никогда. Причем, если заменить клавишу "up" на любую другую, все работает нормально. Помогите пожалуйста найти ошибку.

Скрипт с ошибкой:

; предотвращение повторных нажатий
checkpress()
{
	global
	if !d%a_thishotkey%
	{
		d%a_thishotkey%=1
		return true
	}
}

delpress()
{
	global
	StringTrimRight, key, a_thishotkey, 3
	d%key%=
}

; добавление в строку
setparam(n)
{
	global
	if checkpress()
	{
		param=%param%%n%
		tooltip % param
	}
}

; удаление из строки
delparam(n)
{
	global
	delpress()
	StringReplace, param, param, % n,
	tooltip % param
}

; горячие клавиши
f1:: suspend

left:: setparam(1)
right:: setparam(2)
up:: setparam(3)
down:: setparam(4)

left up:: delparam(1)
right up:: delparam(2)
up up:: delparam(3)
down up:: delparam(4)

2

Re: AHK: Разная работа клавиш, выполняющих одни функции

У меня, если нажать 4 расположенные близко клавиши одновременно, срабатывает встроенный динамик. Как бы будильник, если уснул лицом на клавиатуре.

3

Re: AHK: Разная работа клавиш, выполняющих одни функции

Дело явно не в ошибке. Вот простой тестовый скрипт. 4 пикушки получить не удаётся, да и 3 не всегда.

up::
down:: 
left::
right::
    SoundBeep, 800, 100
    KeyWait, %A_ThisHotkey%
Return

4

Re: AHK: Разная работа клавиш, выполняющих одни функции

Я думаю дело всё-таки в расстоянии между клавишами. Вот так удаётся получить 4 "пикушки",

q::
r:: 
u::
p::
    SoundBeep, 800, 100
    KeyWait, %A_ThisHotkey%
Return

а вот так - нет:

q::
a:: 
s::
z::
    SoundBeep, 800, 100
    KeyWait, %A_ThisHotkey%
Return

5

Re: AHK: Разная работа клавиш, выполняющих одни функции

ypppu
Да, похоже, это просто особенность устройства клавиатуры. Там же вроде бы не идут к каждой клавише два отдельных провода, а общая сетка из строчек и столбцов.

6

Re: AHK: Разная работа клавиш, выполняющих одни функции

Точно. Поэтому в некоторых случаях при нажатии трёх клавиш клавиатура "воспринимает" это как нажатие четырёх.

7 (изменено: studentarh, 2012-11-23 16:18:26)

Re: AHK: Разная работа клавиш, выполняющих одни функции

Спасибо за разъяснение, жаль, конечно, что не исправить. Но за-то понятно, почему не работает.