Что нового

[Баг] HotKeySet некорректно обрабатывает тильду

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Пример:

Код:
HotKeySet("^+~", "_Quit_Proc")
HotKeySet("^~", "_Main_Proc")

While 1
	Sleep(100)
WEnd

Func _Main_Proc()
	ConsoleWrite("Main" & @LF)
EndFunc

Func _Quit_Proc()
	Exit
EndFunc


Хоткей для выхода («Ctrl + ~») вызывает почему то функцию «_Main_Proc», а хоткей для вызова «_Main_Proc» вообще не срабатывает.

Теперь если поменять местами эти две строчки с HotKeySet, то «Ctrl + Shift + ~» вызывает «_Quit_Proc» как и должно быть, а «Ctrl + ~» вызывает... ничего.

Стоит нам только заменить тильду (~) на что нибудь другое (например на 1), то всё работает как положенно.

В чём дело, это баг или оно так задуманно?


Добавлено:
Сообщение автоматически объединено:

Это не только с тильдой оказывается, например нижний дефис (или как оно там называется :smile: ) вызывает тот же баг(?).
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Мне кажется, что все из-за Shift.
Например, чтобы напечатать тильду, надо зажать Shift + ё,
а если Shift не зажать, то получится ё или `.
Так же и с _ . Без зажатого Shift - это -.



Добавлено:
Сообщение автоматически объединено:

Эти два варианта, вроде подтверждают.
Код №1
Код:
HotKeySet("^+q", "_Quit_Proc")
HotKeySet("^m", "_Main_Proc")

While 1
    Sleep(100)
WEnd

Func _Main_Proc()
    ConsoleWrite("Main" & @LF)
EndFunc

Func _Quit_Proc()
    Exit
EndFunc

Код №2
Код:
HotKeySet("^+Q", "_Quit_Proc")
HotKeySet("^M", "_Main_Proc")

While 1
    Sleep(100)
WEnd

Func _Main_Proc()
    ConsoleWrite("Main" & @LF)
EndFunc

Func _Quit_Proc()
    Exit
EndFunc
 

SyDr

Сидра
Сообщения
651
Репутация
158
Всё просто:
Чтобы ввести символ ~ - необходимо зажать Shift
Т.е.
` = просто `
~ = Shift+`

Чтобы вызвать первый хоткей, необходимо нажать
Shift+Ctrl+~ = Shift+Ctrl+Shift+` = Shift+Ctrl+` (но дважды Shift не зажмёшь ведь :smile:)
Чтобы вызвать второй хоткей, необходимо нажать
Ctrl+~ = Ctrl+Shift+`

Та же самая комбинация. Срабатывает именно второй хоткей (на Ctrl+` - ноль реакции).
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Я так и думал.. значит это не баг....

жаль что StringLower не конвертирует тильду (~) в апостраф (`), тогда можно было бы обойти это проще (для HotKeySet).
 
Верх