Клавиатура Arduino: Проблема с языком ввода
Мне нужен Arduino (Leonardo), чтобы открыть cmd, но если язык ввода с клавиатуры не английский, он печатает буквы другого языка.
——— код ———
Keyboard.begin();
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
delay(1000);
Keyboard.releaseAll();
Keyboard.write("cmd");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay(1000);
——— ——— ———
Итак, мой вопрос: можно ли как-то определить язык, а если его нет, добавить?
Моя идея состояла в том, чтобы установить список языков через powershell, и это было бы идеально для моей программы, но я не знаю, как я могу написать английский текст из Arduino на ПК с другим языком :(
Кроме того, у моего Arduino есть SD-карта, может быть, это поможет.
——— код ———
powershell $OldList = Get-WinUserLanguageList
powershell Set-WinUserLanguageList -LanguageList en-US -Force
-something
powershell Set-WinUserLanguageList -LanguageList $OldList -Force
——— ——— ———
Извините, если это вопрос 0iq, я новичок в Arduino, буду рад услышать ваши идеи!
@Mapagmataas, 👍1
Обсуждение2 ответа
Ваш Arduino будет виртуально печатать на такой клавиатуре:
© Aon fi – CC-BY 3.0
Видите этикетки на клавишах? Их нет. Ваша ОС Windows имеет свой собственное представление о том, что означает каждая клавиша, но Arduino не может знать что. Вместо этого вы должны явно указать, какую раскладку клавиатуры использовать. использовать, например:
Keyboard.begin(KeyboardLayout_fr_FR);
Если вы этого не сделаете, библиотека клавиатуры будет использовать KeyboardLayout_en_US
.
Компьютер никак не может сообщить клавиатуре, какая у нее раскладка. ожидает.
Печально, спасибо за ответ, теперь я его не понимаю, @Mapagmataas
Извините, может есть способ проверить печатный текст и если он не английский alt+shift? @ЭдгарБонет, @Mapagmataas
@Mapagmataas: Да, вы можете проверить это, посмотрев на экран. Но клавиатура не может этого сделать, как и Arduino, изображающий из себя клавиатуру., @Edgar Bonet
Извините, я новичок в ардуино) Спасибо!, @Mapagmataas
@Mapagmataas это не имеет ничего общего с Arduino ... проблема с компьютерами и клавиатурами, @jsotola
@jsotola: В принципе, ты прав. Тем не менее, это та информация, которая вас интересует только тогда, когда вы начинаете использовать библиотеку клавиатуры Arduino., @Edgar Bonet
Наконец-то я нашел решение своей проблемы. Я написал алгоритм, который автоматически меняет язык ввода системы, если языков всего два и один из них английский. Этот код написан на ярлыках Duckduino, но конвертировать обратно не проблема.
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING "ok"
ENTER
DELAY 1000
STRING Set-WinUserLanguageList -LanguageList en-US, ru -Force
ENTER
DELAY 1000
STRING exit
ENTER
DELAY 1000
ALT SHIFT
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING "ok"
ENTER
DELAY 1000
STRING Set-WinUserLanguageList -LanguageList ru, en-US -Force
ENTER
DELAY 1000
ALT SHIFT
DELAY 1000
STRING exit
ENTER
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING "ENGLISH"
ENTER
DELAY 1000
Вы можете использовать для ru другой язык, для "ok" я хочу добавить Get-WinUserLanguageList | ConvertTo-Json | Out-File C:\WinUserLanguageList.json
, чтобы сохранить список пользователей.
Если язык отличается от английского, этот код делает ошибки, и если язык правильный, он меняет список языков, вот как это работает!
Обновление:
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING Get-WinUserLanguageList | ConvertTo-Json | Out-File C:\WinUserLanguageList.json
ENTER
DELAY 1000
STRING Set-WinUserLanguageList -LanguageList en-US, ru -Force
ENTER
DELAY 1000
STRING exit
ENTER
DELAY 1000
ALT SHIFT
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING Get-WinUserLanguageList | ConvertTo-Json | Out-File C:\WinUserLanguageList.json
ENTER
DELAY 1000
STRING Set-WinUserLanguageList -LanguageList ru, en-US -Force
ENTER
DELAY 1000
ALT SHIFT
DELAY 1000
STRING exit
ENTER
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING "CODE IN ENGLISH"
ENTER
DELAY 1000
STRING exit
ENTER
DELAY 1000
GUI r
DELAY 1000
STRING powershell
ENTER
DELAY 1000
STRING Get-WinUserLanguageList
ENTER
DELAY 1000
STRING $importedFile = Get-Content C:\WinUserLanguageList.json | ConvertFrom-Json
ENTER
DELAY 1000
STRING $langCollection = New-Object System.Collections.Generic.List[Microsoft.InternationalSettings.Commands.WinUserLanguage]
ENTER
DELAY 1000
STRING foreach ($item in $importedFile) {
ENTER
DELAY 1000
STRING $lang = [Microsoft.InternationalSettings.Commands.WinUserLanguage]::new($item.LanguageTag)
ENTER
DELAY 1000
STRING $lang.InputMethodTips.Clear()
ENTER
DELAY 1000
STRING foreach ($inputMethod in $item.InputMethodTips) {
ENTER
DELAY 1000
STRING $lang.InputMethodTips.Add($inputMethod) }
ENTER
DELAY 1000
STRING $lang.Handwriting = $item.Handwriting
ENTER
DELAY 1000
STRING $lang.Spellchecking = $item.Spellchecking
ENTER
DELAY 1000
STRING $langCollection += $lang }
ENTER
DELAY 1000
STRING Set-WinUserLanguageList $langCollection -Force
ENTER
DELAY 1000
STRING Remove-Item C:\WinUserLanguageList.json
ENTER
DELAY 1000
STRING exit
ENTER
DELAY 1000
GUI r
DELAY 1000
STRING https://ma.kak.si
ENTER
- Нажать клавишу Windows, используя «keyboard.press();»
- Arduino nano как клавиатура HID
- CH340 Nano avrdude: stk500_getsync() не синхронизирован, resp=0xa4
- Keyboard.h не найден
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
- Не могу загрузить скетч в Arduino Nano
- Какие диоды использовать в матричном вводе кнопок/клавиш? (Изготовление игровой клавиатуры)
- NodeMCU поддерживает внедрение ключей?
ваш вопрос не про ардуино, @jsotola
@jsotola, извините, а о чем тогда речь? Могу ли я перефразировать свой вопрос так: есть ли способ печатать английский текст через arduino в системе с другим языком ввода? Спасибо за ваш ответ!, @Mapagmataas
Как и любая другая USB-клавиатура, ваша Arduino не может изменить язык ввода хоста. Ваша клавиатура не может напрямую изменить язык ввода., @the busybee
Совсем никак? Типа скопировать из файла с сд или как-то проверить? В любом случае спасибо @thebusybee!, @Mapagmataas
Может есть способ проверить печатный текст и если он не английский alt+shift?, @Mapagmataas
@Mapagmataas компьютерная клавиатура не может смотреть на экран, @jsotola