Java 爪哇机器人类印刷土耳其字母(Ö;ö;Ş;ş;Ü;ü;Ğ;ğ;İ;ı;Ç;Ə;&)?
我对通过java robot类按特殊字母(土耳其语等)有问题。我有一个按键的方法,它可以作为alt+keycode。我无法将一些特殊字母转换为当前的键码。那我怎么解决呢。塔克斯 例如:Java 爪哇机器人类印刷土耳其字母(Ö;ö;Ş;ş;Ü;ü;Ğ;ğ;İ;ı;Ç;Ə;&)?,java,class,keycode,awtrobot,Java,Class,Keycode,Awtrobot,我对通过java robot类按特殊字母(土耳其语等)有问题。我有一个按键的方法,它可以作为alt+keycode。我无法将一些特殊字母转换为当前的键码。那我怎么解决呢。塔克斯 例如: KeyStroke ks = KeyStroke.getKeyStroke('ö', 0); System.out.println(ks.getKeyCode()); Output : 246 // So alt+0246='ö' //but if I convert 'ş' to keycode //
KeyStroke ks = KeyStroke.getKeyStroke('ö', 0);
System.out.println(ks.getKeyCode());
Output : 246
// So alt+0246='ö'
//but if I convert 'ş' to keycode
//Output is 351 . So alt+351= '_' and alt+0351= '_'
//What is the Correct combination for 'ş'. same for 'Ş', 'ş','Ğ', 'ğ', 'İ', 'ı', 'Ə', 'ə'
按键:
public void altNumpad(int... numpadCodes) {
if (numpadCodes.length == 0) {
return;
}
robot.keyPress(VK_ALT);
for (int NUMPAD_KEY : numpadCodes) {
robot.keyPress(NUMPAD_KEY);
robot.keyRelease(NUMPAD_KEY);
}
robot.keyRelease(VK_ALT);
}
我不知道你为什么这么做
KeyStroke ks = KeyStroke.getKeyStroke('ö', 0);
因为java文档说
public static KeyStroke getKeyStroke(Character keyChar,
int modifiers)
//Use 0 to specify no modifiers.
您需要向重载传递除0以外的修改器
你应该试着通过这样的修改
java.awt.event.InputEvent.ALT_DOWN_MASK
所以可能应该试试
KeyStroke ks = KeyStroke.getKeyStroke('ö', java.awt.event.InputEvent.ALT_DOWN_MASK);
Java文档作为参考:
如果你不能正确地从中得到输出,那么你应该考虑字符是UTF-8的事实。
这可能会对您有所帮助,因为Unicode标准中定义了字符数。也可以在HTML中使用,因此可以使用 无论如何,如果在源代码中看到字符,则取决于编辑器正确解释文件的事实(首选UTF-8) 其次,使用的编辑器必须安装包含这些字符的字体。因此,如果键入alt+0351并获取和‘‘’,则这可能只是一个替换字符,表示字体缺少此字符
最后,您应该告诉Java编译器源代码是UTF-8,以确保(
javac-编码utf8
)。我知道这是一个迟来的答案,但这就是我如何处理土耳其QWERTY键盘的问题
static void writeRobotWrite(Robot robot, String keys) throws InterruptedException {
....
try {
robot.keyPress(keyCode);
robot.delay(20);
robot.keyRelease(keyCode);
robot.delay(20);
}catch (IllegalArgumentException e)
{
pressUnicode(c, robot);
}
}
}
基本上,当我得到机器人的未定义键码时,我调用pressUnicode函数,即:
static void pressUnicode(char c, Robot robot)
{
String cantRecognize = ""+c;
StringSelection selection = new StringSelection(cantRecognize);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
}
简单地说,我只是复制和粘贴角色。这适用于所有未定义的字符。:) 这些字符中的某些字符是否在BMP之外?从中,似乎应该在Windows下使用Alt+015 f。我没有窗口,所以无法测试…无法工作。感谢您不能在Windows中按Alt+015F,除非您在注册表中启用了
EnableHexNumpad
,但没有HexNumpad,只能输入代码点1-255