Проблема с java.awt.Robot KeyEvent для специальных символов (например, : и /)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с java.awt.Robot KeyEvent для специальных символов (например, : и /)

Сообщение Anonymous »

Описание:
Привет всем!
Я работаю над Java-приложением, в котором использую Java-приложение. Класс .awt.Robot для имитации ввода с клавиатуры. Он отлично работает для большинства символов, но я сталкиваюсь с проблемой при попытке ввести специальные символы, такие как : и /.
Вот метод, который я использую для обработки специальных символов:

Код: Выделить всё

private void digitarCaracterEspecial(Robot robot, char c) {
try {
switch (c) {
case ':':
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SEMICOLON); // ':' = Shift + ';'
robot.keyRelease(KeyEvent.VK_SEMICOLON);
robot.keyRelease(KeyEvent.VK_SHIFT);
break;
case '/':
robot.keyPress(KeyEvent.VK_SLASH); // Verifique o layout do teclado
robot.keyRelease(KeyEvent.VK_SLASH);
break;
case '&':
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_7); // '&' = Shift + '7' in US keyboard
robot.keyRelease(KeyEvent.VK_7);
robot.keyRelease(KeyEvent.VK_SHIFT);
break;
default:
System.err.println("Unsupported special character: " + c);
}
} catch (Exception e) {
System.err.println("Error while typing special character: " + c);
e.printStackTrace();
}
}
Проблема:
Когда я пытаюсь ввести : или /, я сталкиваюсь со следующим исключением:

Код: Выделить всё

java.lang.IllegalArgumentException: Invalid key code
at java.desktop/sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.desktop/java.awt.Robot.keyPress(Robot.java:393)
Вот фрагмент моего тестового кода:

Код: Выделить всё

Robot robot = new Robot();
String text = "https://example.com:8080/";
for (char c : text.toCharArray()) {
if (KeyEvent.getExtendedKeyCodeForChar(c) == KeyEvent.CHAR_UNDEFINED) {
digitarCaracterEspecial(robot, c);
} else {
robot.keyPress(KeyEvent.getExtendedKeyCodeForChar(c));
robot.keyRelease(KeyEvent.getExtendedKeyCodeForChar(c));
}
}
Среда:
  • ОС: Windows 10
  • Версия JDK: OpenJDK 21
  • Раскладка клавиатуры: бразильская ABNT2
Что я сделал Пробовал:
  • Проверены константы KeyEvent.VK_* для : и /.
  • Использованы комбинации Shift для : и других специальных символов.
  • Подтверждено раскладка клавиатуры правильная.
  • Пробовал альтернативные подходы, например жесткое кодирование кодов клавиш.
Вопросы:< /strong>
  • Почему java.awt.Robot выдает исключение «Неверный код клавиши» для этих символов?
  • Есть ли более надежный способ обработки ввода специальных символов с помощью Robot на другой клавиатуре раскладки?
  • Может ли это быть проблемой, связанной с раскладкой (например, бразильская клавиатура ABNT2 или американская клавиатура)?
Любая помощь или идеи будут очень признательны. Заранее спасибо!


Подробнее здесь: https://stackoverflow.com/questions/793 ... rs-e-g-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема с java.awt.Robot KeyEvent для специальных символов (например, : и /)
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Проблема с java.awt.Robot KeyEvent для специальных символов (например, : и /)
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Невозможно вызвать «java.awt.Graphics.setColor(java.awt.Color)», поскольку «g» имеет значение null.
    Гость » » в форуме JAVA
    0 Ответы
    107 Просмотры
    Последнее сообщение Гость
  • Что использовать вместо java.awt.robot на Linux? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Что использовать вместо java.awt.robot на Linux? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»