Java-робот с Azerty против Qwerty
Я надеюсь, что это не дубликат, но я просмотрел форумы и пока не нашел ответов.
У меня проблемы с моим Java-приложением, использующим класс Robot для ввода текста. Текст предоставляется, и приложение печатает его. Когда у пользователя QWERTY клавиатура, все работает нормально. Когда у пользователя есть клавиатура AZERTY, значения появляются неправильно.
Например, ввод "1234567890" в типы программ "&é"'(§è! Çà"
Я надеюсь, что у некоторых людей есть идея, как поддерживать несколько раскладок клавиатуры. Заранее спасибо.
Вот фрагмент
String TRANSLATION_SHIFT = "~!@#$%^&*()_+{}|:\"<>?";
String TRANSLATION_NON_SHIFT = "`1234567890-=[]\\;',./";
Robot robot = new Robot();
String text = "1234567890";
int key;
for (char c: text.toCharArray()){
switch(c){
....
case '0':
key = KeyEvent.VK_0;
break;
case '1':
key = KeyEvent.VK_1;
break;
...(etc etc)...
case '9':
key = KeyEvent.VK_9;
break;
...
}
robot.keyPress(key);
robot.keyRelease(key);
}
Там также есть код, чтобы
1 ответ
Я думаю, что вам нужно знать о раскладке клавиатуры, я не уверен, есть ли какая-то встроенная функция для указания локали для Robot
класс, но вы можете найти реализацию оболочки для Robot
класс, поддерживающий различные раскладки клавиатуры, см. эту библиотеку