我正在我的Java应用程序中按 AltGr 键,但是我没有收到带有密钥代码VK_ALT_GRAPH的KeyEvent,而是获得了两个事件。第一个是密钥代码VK_CONTROL,第二个是VK_ALT。
这是正确的行为吗?
在Windows 7上使用Java 7.可以使用http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
上的演示应用程序进行复制当我按 AltGr 时,它会报告:
KEY PRESSED: key code = 17 (Ctrl) extended modifiers = 128 (Ctrl) action key? NO key location: left KEY PRESSED: key code = 18 (Alt) extended modifiers = 640 (Ctrl+Alt) action key? NO key location: right KEY RELEASED: key code = 17 (Ctrl) extended modifiers = 512 (Alt) action key? NO key location: left KEY RELEASED: key code = 18 (Alt) extended modifiers = 0 (no extended modifiers) action key? NO key location: right
答案 0 :(得分:4)
, AltGr 和 Ctrl + Alt 是同义词。在某些语言环境中(键盘布局?,它们都被视为 Ctrl + Alt ,在其他语言环境中,它们都被视为 AltGr 。但是,我不完全确定。
请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa511502.aspx并使用 Ctrl - F 查找AltGr。
答案 1 :(得分:0)
您可以结合使用 getKeyCode 和 getKeyLocation。当您按下“Alt”时,您会分别得到“18”和“2”,但是当您按下“Alt Gr”时,您会分别得到两个值,“17,18”和“2,3”。这里的“2”和“3”代表键面,“18”是alt键码,可以做如下操作:
if(e.getKeyCode() == 18 && e.getKeyLocation() == 3){
System.out.println("Only triggers with Alt Gr");
}