1 (изменено: Phoenixxx_Czar, 2021-05-31 19:35:40)

Тема: AHK: GetKeyVK возвращает 0

Я хочу узнать VK код клавиши, но получаю 0.

msgbox, % GetKeyVK("s")

Так происходит почему-то не всегда, а иногда всегда. Например, если указать "s" большую, выдаст 83 - вроде правильно, но через некоторое время она опять возвращает 0. Или же, если "s" выдает 0, мы меняем на "S" и получаем 83, возвращаем обратно "s" и она тоже выдает 83, потом мы опять выводим ее несколько раз и она возвращает 0.
Такое происходит с разными клавишами.

Так же пробовал данный вариант:

GetKeyVKx(key) {
	return format("vk{:02x}", GetKeyVK(key))
}

Все тоже самое.

(Offtop: Это для ленивых "AHK:" в заголовок темы само вставляется? )

UPD: После написания темы, сразу пришла в голову идея: "А что, если это из-за раскладки клавиатуры?". Проверил, и в правду.. Возвращается 0, когда буква на английском, а раскладка русская. Что можно с этим придумать?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

2

Re: AHK: GetKeyVK возвращает 0

Не могу получить 0 как ни старался. При любой раскладке.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: GetKeyVK возвращает 0

У меня AHK v1.1.25.01 ANSI-32, возможно дело еще в этом.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

4

Re: AHK: GetKeyVK возвращает 0

Phoenixxx_Czar, попробуйте на текущей версии. Если ошибка также происходит, приведите скрипт, который явно её генерирует. Если нет, значит дело в версии AHK, и тут вряд ли кто станет заморачиваться с устаревшим интерпретатором.

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

5

Re: AHK: GetKeyVK возвращает 0

Я на новых версиях так и не попробовал, если выше уже говорили, что все нормально, то дело в версии.. Ведь я привел именно код, который и вызывает "ошибку".
Еще одно уточнение.. Функция для "S" возвращает "83", но есть програмка на ahk, которая выдает vk код клавиши и там у нее 0x53 (то есть vk53). У AHK изменены коды клавиш?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

6

Re: AHK: GetKeyVK возвращает 0

83 равно 0x53.

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

7

Re: AHK: GetKeyVK возвращает 0

Кхм.. Я только что глянул ту функцию, что я находил и там правда конвертация идет. 0x53 это HEX значение? Стоит ли вообще пытаться учиться понимать эти значения?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

8

Re: AHK: GetKeyVK возвращает 0

Когда в начале числа — значит число представлено в 16-ричной системе счисления. Она удобна для представления байтов, поэтому в программировании ей часто пользуются, и нужно её понимать. Тут особо ничего сложного.

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

9

Re: AHK: GetKeyVK возвращает 0

Кстати, я тут лазал по тебе определения скан кода и наткнулся на данный комментарий: http://forum.script-coding.com/viewtopi … 518#p62518, то есть моя же проблема.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

10

Re: AHK: GetKeyVK возвращает 0

Да, вроде был такой баг, теперь исправлен.

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

11

Re: AHK: GetKeyVK возвращает 0

Обидно, что не могу перебраться на версию поновее.. Пока сделал перевод русский букв в английские и для английских букв сделал "ключ: значение".

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

12 (изменено: Foma, 2021-06-02 20:30:09)

Re: AHK: GetKeyVK возвращает 0

Phoenixxx_Czar пишет:

Стоит ли вообще пытаться учиться понимать эти значения?

+ открыть спойлер

https://theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png

13

Re: AHK: GetKeyVK возвращает 0

Предлагаете просто запомнить эту таблицу?)

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

14

Re: AHK: GetKeyVK возвращает 0

Запоминать не стоит, можно же скриптом получать эти коды.
И почему нельзя обновить версию АХК?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

15

Re: AHK: GetKeyVK возвращает 0

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

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)