用于各种硬件的Java Swing InputEvent修饰符
我正在寻找Java Swing接口用于各种硬件的Java Swing InputEvent修饰符,java,swing,keyboard-shortcuts,Java,Swing,Keyboard Shortcuts,我正在寻找Java Swing接口InputEvent中的(硬件)修改器键列表及其到掩码的映射。作为Java 7,我知道有五个掩码: SHIFT\u DOWN\u掩码 CTRL\u DOWN\u掩码 META\u DOWN\u掩码 看 ALT\u DOWN\u掩码 ALT\u图形\u向下\u掩码 请参阅: 如果我有遗漏,请提醒我注意 ,我学到了: 苹果电脑通常有四个键:命令、选项、移位和控制 PC风格的机器通常有五个键(现在):控制键、alt键、shift键、win键、, 还有菜单
InputEvent
中的(硬件)修改器键列表及其到掩码的映射。作为Java 7,我知道有五个掩码:
SHIFT\u DOWN\u掩码
CTRL\u DOWN\u掩码
META\u DOWN\u掩码
- 看
ALT\u DOWN\u掩码
ALT\u图形\u向下\u掩码
- 请参阅:
- 苹果电脑通常有四个键:命令、选项、移位和控制李>
- PC风格的机器通常有五个键(现在):控制键、alt键、shift键、win键、,
还有菜单。
-
对于这个讨论,我不认为菜单键是修饰语。(再次:如果错误,请纠正我。)
- 但是,win键可以组合使用,例如win+e为Windows资源管理器打开一个新窗口
InputEvent
掩码InputEvent
掩码int shortcut = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask();
有了这个,你就可以击键了
int key = KeyEvent.VK_Q; // or whatever
KeyStroke ks = KeyStroke.getKeyStroke( key, shortcut );
getMenuShortcutKeyMask方法是一种正确的、跨平台的、Sun支持的方法,可以为当前平台的菜单加速器(又称快捷方式)获取适当的修改器掩码。它使用当前平台的适当java.awt.event.InputEvent常量返回一个修改器掩码——在OS X上这是InputEvent.META_掩码,在Windows上这是InputEvent.CTRL_掩码。使用这些文本而不是调用getMenuShortcutKeyMask是一种糟糕的形式,尽管它可以工作
另外需要注意的是,您可以在加速器按键中使用修改器的组合:
KeyStroke ks = KeyStroke.getKeyStroke( KeyEvent.VK_P, shortcut | InputEvent.SHIFT_MASK );
要创建Command+Shift+p击键(在OS X上,在Windows上控制+Shift+p)。这允许您使用标准菜单项使用的助记符键(例如打印,使用Command+P)创建加速器击键,而不会与标准击键冲突
对于Windows密钥:
// Invoked when a key has been pressed.
public void keyPressed(KeyEvent e) {
// Returns the integer code for the key on the keyboard and if
// keyCode is equal to VK_WINDOWS)...
if (e.getKeyCode() == KeyEvent.VK_WINDOWS) {
// ...call the doIT method.
doIT();
}
}
AwteEventListener以整数形式返回所有键和鼠标事件,之前必须测试Swing API中实现的键绑定是否使用这些事件,然后AwteEventListener、KeyListener不再可以访问这些事件,一切取决于键事件是否与MosueEvent一起使用,然后Java7 API中会有一些错误(与Java6相比),永远不需要以某种方式解决这个问题,只需要知道文档和从中触发的事件之间存在bug……说Java的Meta相当于Mac的命令键,而Java的Alt相当于Option键。