如何将ASCII值映射到适当的密钥代码?

时间:2009-06-21 02:24:36

标签: java

如何将ASCII值映射到适当的密钥代码?

2 个答案:

答案 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_字段的常量值,那么沿着这条路线前进也会降低您的应用程序的风险。