我正在为我的应用程序编写一个虚拟键盘,并且使用Java机器人来模拟每个键盘按钮的keypress事件。 一切都正确,除了我找不到欧洲特殊字符的键码,特别是意大利字符。 扫描所有可能的代码,我发现:
à 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
答案 0 :(得分:0)
您要查找的值是VK_DEAD_CARON
,代码为138
从ASCII
表开始,您可以找到与某个字符相关的任何值:搜索其数值,然后您将在Java KeyEvent
中找到相关的变量
另一种可能性是实施custom keyboard