-
#1
Многим не нравится данная делюга, что выдаёт вопросительные знаки, при английской раскладке клавиатуры в скриптах AutoHotKey. Решение очень простое
Вставляем SendMessage, 0x50,, 0x4190419,, A в начало каждого скрипта (клавиши)
Было:
Numpad1::
{
Тело скрипта
return
}
Стало:
Numpad1::
{
SendMessage, 0x50,, 0x4190419,, A
Тело скрипта
return
}
И при любой распладке языка у вас не будет выдавать вопросы.
-
#2
Если стоит анг то переводит на русский, спс помог.
А вот нельзя как нибудь исправить такое, вот когда например бежишь врубил этот биндер и получается, что либо с пробелами после каждой буквы, либо еще добавляются — ц, ф, ы, в… так как я бегу.
-
#3
SendInput, {F6}Text{enter}
при данном скрипте у меня не выдаёт буквы ц,ф,ы,в
-
#6
Вставляем SendMessage, 0x50,, 0x4190419,, A в начало каждого скрипта (клавиши)
и все, у кого Win7, после использования данного СендМесседжа 10-20 раз — получают другую проблему. В игре перестаёт работать стандартное переключение языков. Выходом из ситуации становится только назначение двух СендМесседжов на разные клавиши, для альтернативного изменения раскладки. И да, это лишние строки в скрипт + проблема переключения.
Проще:
1) В директории с ahk запускаем Installer.ahk -> Modify -> ANSI-32/64 -> Next -> Apply
2) Возле часов «Языковая панель» — Параметры… — Язык ввода по умолчанию -> Английский (США)
3) Пишем все скрипты в ANSI-32/64.
либо еще добавляются — ц, ф, ы, в… так как я бегу.
используй SendInput или SendPlay вместо простого Send.
-
#7
SendPlay более оптимизирован для игр и ввод гораздо быстрее нежели Input
Так же можно добавить в шапку скрипта «SendMode Play» что позволит изменить тип ввода команды send на sendplay, т.е. дальше ничего изменять не придется и всегда можно быстро выбрать тип ввода
-
#9
Спасибо БОЛЬШОЕ, помог ! ! !
Вот пример
Numpad1::
SendMessage, 0x50,, 0x4190419,, A
Sendinput, {F6}Здравствуйте. Я сотрудник Автошколы «Имя Фамилия». {ENTER}
sleep 2500 ;
Sendinput, {F6}Какая лицензия вас интересует? {ENTER}
return
-
#10
и все, у кого Win7, после использования данного СендМесседжа 10-20 раз — получают другую проблему. В игре перестаёт работать стандартное переключение языков.
Проще:
1) В директории с ahk запускаем Installer.ahk -> Modify -> ANSI-32/64 -> Next -> Apply
2) Возле часов «Языковая панель» — Параметры… — Язык ввода по умолчанию -> Английский (США)
3) Пишем все скрипты в ANSI-32/64.
я этим способом пользуюсь, ибо как тут и написали, переключение ввода языка перестает работать после какого-то количества применения бинда.
только у меня в выборе лишь 32 битный вариант есть, хотя винда 64битная.
на другом компе, кстати, само как-то анси изначально устанавливало, ибо там не было проблемы с вопросительными знаками и я никак не мог понять почему там работает, а на основном компьютере багается. потом уже погуглил и нашел решение это.
-
#11
C:Program FilesAutoHotkey
Открываем файл installer > modify > ANSI 32 > NEXT > NEXT.
Жмем ПКМ по скрипту, жмем EDIT SCRIPT и копируем весь текст. Далее жмем ПКМ по рабочему столу, создать > .ahk > Edit script и вставляем текст. Жмем СОХРАНИТЬ и все.
Phoenixxx_Czar
Вроде работает, но мне интересно, что он сравнивает?Так же буквы или что-то еще?
Работает, но не со всеми именами. К примеру возникает проблема с именем «Зайра». Если ввести «Зойра», то нужно отклоняться от 0 аж на целых 0.6, что, конечно же, начинает находить многих других персонажей.
Мой же метод находит сходство более точно, но опять же, с отклонением по символам, будет так же тупить я думаю.
Хотя можно совместить один метод с другим, дабы сократить количество схожих имён и, соответственно, провести более точный поиск, но тут опять же не уверен.
Array := ["Атрокс","Ари","Акали","Акшан","Алистар","Амуму","Анивия","Энни","Афелий","Эш","Аурелион Сол","Азир","Бард","Бел'вет","Блицкранк","Брэнд","Браум","Кейтлин","Камилла","Кассиопея","Чо'Гат","Корки","Дариус","Диана","Доктор Мундо","Дрейвен","Экко","Элиза","Эвелинн","Эзреаль","Фиддлстикс","Фиора","Физз","Галио","Ганкпланк","Гарен","Гнар","Грагас","Грейвз","Гвен","Гекарим","Хеймердингер","Иллаой","Ирелия","Иверн","Жанна","Джарван IV","Джакс","Джейс","Джин","Джинкс","Кай'Са","Калиста","Карма","Картус","Кассадин","Катарина","Кейл","Кайн","Кеннен","Ка'Зикс","Киндред","Клед","Ког'Мао","Ле Блан","Ли Син","Леона","Лилия","Лиссандра","Люциан","Лулу","Люкс","Мальфит","Мальзахар","Маокай","Мастер Йи","Мисс Фортуна","Мордекайзер","Моргана","Нами","Насус","Наутилус","Нико","Нидали","Ноктюрн","Нуну и Виллумп","Олаф","Орианна","Орн","Пантеон","Поппи","Пайк","Киана","Квинн","Рэйкан","Раммус","Рек'Сай","Релл","Рената Гласк","Ренектон","Ренгар","Ривен","Рамбл","Райз","Самира","Седжуани","Сенна","Серафина","Сетт","Шако","Шен","Шивана","Синджед","Сион","Сивир","Скарнер","Сона","Сорака","Свейн","Сайлас","Синдра","Таам Кенч","Талия","Талон","Тарик","Тимо","Треш","Тристана","Трандл","Триндамир","Твистед Фэйт","Твич","Удир","Ургот","Варус","Вейн","Вейгар","Вел'Коз","Векс","Вай","Виего","Виктор","Владимир","Волибир","Варвик","Вуконг","Шая","Зерат","Ксин Жао","Ясуо","Ёнэ","Йорик","Юми","Зак","Зед","Зери","Зиггс","Зилиан","Зоя","Зайра"]
InputBox, string1, Введите имя персонажа,, 300, 200, 200, 200
for index, element in Array
{
string2 := element
ignoreRegister = 1
a := strDiff(string1, string2, ignoreRegister)
if a < 0.6 ;; отклонение от 0 до 1 с плавающей запятой.
{
c := string2
MsgBox, % "a = " a " Скорее всего вы ввели " c
}
strDiff(string1, string2, ignoreRegister, maxOffset = 5)
{
StringCaseSense, Locale
if (ignoreRegister && string1 = string2)
{
return (string1 == string2 ? 0 : 0.2 / StrLen(string1))
}
if (string1 == "" || string2 == "")
{
return (string1 = string2 ? 0 : 1)
}
StringSplit, n, string1
StringSplit, m, string2
ni := 1, mi := 1, lcs := 0
while(ni <= n0 && mi <= m0)
{
if (n%ni% == m%mi%)
{
EnvAdd, lcs, 1
}
else if (ignoreRegister && n%ni% = m%mi%)
{
EnvAdd, lcs, 0.8
}
else
{
loop, %maxOffset%
{
oi := ni + A_Index, pi := mi + A_Index
if (n%oi% = m%mi% && oi <= n0)
{
ni := oi, lcs += (n%oi% == m%mi% ? 1 : (ignoreRegister ? 0.8 : 0))
Break
}
if ((n%ni% = m%pi% && pi <= m0))
{
mi := pi, lcs += (n%ni% == m%pi% ? 1 : (ignoreRegister ? 0.8 : 0))
Break
}
}
}
EnvAdd, ni, 1
EnvAdd, mi, 1
}
return ((n0 + m0)/2 - lcs) / (n0 > m0 ? n0 : m0)
}
}
I can’t run codes that contain semi column key or shift and ‘ hotkey on AutoHotkey. I face these errors:
Note: The hotkey +’ will not be active because it does not exist in the current keyboard layout.
Note: The hotkey ; will not be active because it does not exist in the current keyboard layout.
I don’t know why I always face these errors I searched on internet but still don’t know how to fix the error.
- autohotkey
asked Jan 30, 2021 at 1:24
EtemonEtemon
1372 silver badges10 bronze badges
5
-
This AHK forum post suggests using the vk code instead of the key name.
Jan 30, 2021 at 1:32
-
Are you using a different language/ special keyboard layout?
Jan 30, 2021 at 1:35
-
@Spyre Yes. I am using other language beside English. and also I changed my keyboard recently. I didn’t face this error with my old keyboard.
Jan 30, 2021 at 1:36
-
If you run into trouble figuring out which vk code to use, this is the relevant documentation.
Jan 30, 2021 at 1:45
-
@CharlieArmstrong it is confusing for me. for example I want to press shift and semi column the virtual key for semi column is VK_OEM_10xBA but I don’t know how to write it
+{VKOEM10xBA}::
didn’t work.Jan 30, 2021 at 2:04
Load 7 more related questions
Show fewer related questions
Данная статья о том, как правильно настроить свой AHK для хорошей и удобной работы (без ошибок и прочего).
В моей практике часто встречались вопросы о том, как настроить правильно свои бинды, чтобы не было что-то подобного:
Либо:
И так. Пошаговая инструкция, специально для вас, по пунктам.
1. Скачиваем качественную программу с официального сайта: ahkscript.org/download/ahk-install.exe
2. Устанавливаем программу и открываем папку с установленным AutoHotKey.
3. Нажимаем » Installer «.
4. Нажимаем » Modify «.
5. Нажимаем » ANSI 32-bit «.
6. Оставляем всё как есть. Нажимаем » Next «.
7. Убираем все галочки и нажимаем » Apply «.
Готово. Пробуем. Запускаем. Радуемся.
Кому то это, возможно, пригодится.
Приятной игры.