如何将ASCII值映射到适当的密钥代码?
答案 0 :(得分:4)
为公共密钥定义密钥代码。它们以VK_为前缀(用于虚拟键):
字母数字键
VK_0,VK_1,...,VK_9,VK_A,VK_B,...,VK_Z
控制键
V K_ENTER,VK_BACKSPACE,VK_TAB,VK_ESCAPE
功能键
VK_F1,VK_F2,VK_F3,VK_F4 VK_F5,VK_F6,VK_F7,VK_F8,VK_F9,VK_F10,VK_F11,VK_F12, VK_SCROLL_LOCK,VK_PRINTSCREEN,VK_PAUSE, VK_DELETE,VK_INSERT, VK_PAGE_UP,VK_PAGE_DOWN,VK_HOME,VK_END
箭头键
VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN
参考。 :Java Notes: Keyboard
答案 1 :(得分:0)
如果我理解正确,您将想要以KeyEvents广播的消息,并将消息转换为ASCII非常简单。现在您希望我们将该ACSII转换为密钥代码。
如果查看KeyEvent的代码,您会看到VK_A到VK_Z等于A到Z的ASCII值,这使得映射相对容易。请注意,虽然这些是大写字母的ASCII,但在KeyEvent中未经修改,它们代表小写字母。要获得大写的键码,您需要将VK_SHIFT(和/或VK_CAPSLOCK)的修饰符与大写字母的ASCII组合。
因此,继续假设的目标,您可以通过设置字母的键代码来创建KeyEvent,方法是将小写和大写分别解析为相同的ASCII代码(对于大写)。然后,如果输入ASCII落在大写ASCII范围的范围内,则可以将KeyEvent上的修饰符设置为VK_SHIFT。
如果您的问题区域更广泛,您可能需要设置一个地图,您可以使用该地图查找这些代码,以及其他标点符号和控制字符。 KeyEvent.getKeyText()的实现显示了类似的东西,但方向相反。你可以用它作为起点。如果由于某种原因,Java决定更改这些VK_字段的常量值,那么沿着这条路线前进也会降低您的应用程序的风险。