我正在使用德语键盘(如下所示)并尝试使用Java中的Robot类。我试图找到我按下的键的KeyCodes。它适用于getKeyCode()
。例如:'A'代码:65,' - '代码:45,'ENTER'代码:10
但是当我按下'? ß\'键(位于上方1-0键的德国键盘上)
getKeyCode()
代码:0,我在纪录片中找不到任何VK_KEY
。
有没有办法按下那把钥匙?
答案 0 :(得分:1)
键码适用于具有英/美布局的键盘。请尝试使用VK_EQUALS
来获取密钥,但Robot
可能实际上会发送=
。
如果您不需要按下实际键但输入的字符,您可以尝试通过Alt + Unicode代码点模拟Unicode输入。请参阅此问题:How to make the Java.awt.Robot type unicode characters? (Is it possible?)
另请参阅此答案:https://stackoverflow.com/a/14766664/34088
它指向一个库,它使用键盘布局将Java字符映射到键。 RoboticAutomaton.typeCharacter()
使用键盘布局来了解按哪个键来获取某个角色。
答案 1 :(得分:1)
java支持大约44000个不同的字符,包括ASCII字符,所以如果你想看到你正在按哪个键以及哪个键被按下,只需要通过getExtendedKeyCode()在keyPressed方法中打印它们就可以得到一些新东西。不是标准的钥匙,也是自己打印的钥匙。
答案 2 :(得分:1)
并非所有字符都有与之关联的键码。例如,问号没有键码,因为没有键盘出现在主层上。
ß
字符就是这样一个字符。但是,所有按键事件都有一致的扩展密钥代码,可以使用实用工具方法KeyEvent.getExtendedKeyCodeForChar()
找到,并与关键事件中的代码进行比较:
if (keyEvent.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('ß')) {
// ß was pressed
}
答案 3 :(得分:1)
反斜杠\显然被认为是此密钥的主要特征。因此KeyEvent.VK_BACK_SLASH
会在德语键盘上为您提供该密钥的密钥代码。