密钥的KeyCode(?ß\)

时间:2014-12-28 21:50:36

标签: java keycode

我正在使用德语键盘(如下所示)并尝试使用Java中的Robot类。我试图找到我按下的键的KeyCodes。它适用于getKeyCode()。例如:'A'代码:65,' - '代码:45,'ENTER'代码:10

但是当我按下'? ß\'键(位于上方1-0键的德国键盘上) getKeyCode()代码:0,我在纪录片中找不到任何VK_KEY

有没有办法按下那把钥匙?


German keyboard

4 个答案:

答案 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)

javadoc of KeyEvent说:

  

并非所有字符都有与之关联的键码。例如,问号没有键码,因为没有键盘出现在主层上。

ß字符就是这样一个字符。但是,所有按键事件都有一致的扩展密钥代码,可以使用实用工具方法KeyEvent.getExtendedKeyCodeForChar()找到,并与关键事件中的代码进行比较:

if (keyEvent.getExtendedKeyCode() == KeyEvent.getExtendedKeyCodeForChar('ß')) {
    // ß was pressed
}

答案 3 :(得分:1)

反斜杠\显然被认为是此密钥的主要特征。因此KeyEvent.VK_BACK_SLASH会在德语键盘上为您提供该密钥的密钥代码。