Я пишу виртуальную клавиатуру для своего приложения и использую Java-робот для имитации события нажатия каждой кнопки на клавиатуре.
Все правильно, за исключением того, что я не могу найти ключевой код для европейских специальных символов, особенно итальянских.
Сканирование каждого возможного кода, который я нашел, что:
à is KeyEvent.VK_DEAD_ABOVERING
ì is KeyEvent.VK_DEAD_CIRCUMFLEX
ò is KeyEvent.VK_DEAD_CEDILLA
ù is KeyEvent.VK_DEAD_GRAVE
но мне не хватает ключевого кода для "è", похоже, что ни один код не может создать этот символ.
Я также уже пытался получить отсутствующий код с помощью инструментов, которые распечатывают каждую клавишу, нажатую на физической клавиатуре, но я получаю «неизвестно» для каждого из указанных выше символов (включая «è»).
Вот фрагмент кода для проверки
package robottest;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class RobotTest {
private static Robot robot;
public static void main(String[] args) {
// TODO code application logic here
try {
robot = new Robot();
int keyCode = KeyEvent.VK_DEAD_CARON;
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
} catch (AWTException ex) {
System.out.println("Exception"+ex);
}
}
}
Это минимально, вы можете скомпилировать его и запустить с
java -jar RobotTest.jar
Вот что я получаю, модифицируя свой источник, чтобы он действовал как своего рода «сканер кода» ...
package robottest;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import javafx.scene.input.KeyCode;
public class RobotTest {
private static Robot robot;
public static void main(String[] args) {
// TODO code application logic here
try {
robot = new Robot();
/* int keyCode = KeyEvent.VK_DEAD_BREVE;
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
*/
for (int keyCode = KeyEvent.VK_DEAD_GRAVE; keyCode <KeyEvent.VK_DEAD_GRAVE+20; keyCode++) {
System.out.print("Code "+keyCode+" ");
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
System.out.println("");
}
} catch (AWTException ex) {
System.out.println("Exception"+ex);
}
}
}
Вывод:
Code 128 ù
Code 129 ,
Code 130 ì
Code 131 3
Code 132 -
Code 133 ù
Code 134
Code 135 .
Code 136 à
Code 137 2
Code 138
Code 139 ò
Code 140 0
Code 141
Code 142
Code 143
Code 144
Code 145
Code 146
Code 147