2009-06-21 73 views

回答

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

Ref。 :Java Notes: Keyboard

0

如果我理解正确,你会想出一个你想作为KeyEvents广播的消息,并且将消息转换为ASCII就够简单了。现在您希望我们将该ACSII转换为键码。

如果您查看KeyEvent的代码,您将看到VK_A到VK_Z等同于A到Z的ASCII值,这使得映射变得相对容易。请注意,尽管这些字母都是ASCII大写字母,但在KeyEvent中未修改,它们表示小写字母。要获取大写字母代码,需要将VK_SHIFT(和/或VK_CAPSLOCK)的修饰符与大写字母的ASCII组合在一起。

因此,继续假定的目标,您可以通过将字母的小写字母和大写字母解析为相同的ASCII码(大写字母)来设置字母的键码来创建KeyEvent。如果输入ASCII与大写ASCII范围的范围一致,则可以将KeyEvent上的修饰符设置为VK_SHIFT。

如果您的问题领域更广泛,您可能需要设置一个可以查找这些代码的地图,以及其他标点符号和控制字符。 KeyEvent.getKeyText()的实现显示了类似的内容,但方向相反。你可以用它作为你的出发点。如果出于某种原因,Java决定更改这些VK_字段的常量值,那么沿着这条路线走下去也会降低您的应用程序的风险。