2009-09-20 60 views
0

如何使用Java重新映射键盘上的某个键,以便我可以给键赋予新的含义?如何使用Java Swing重新映射键盘键?

+0

这是仅用于您的程序吗?就像在游戏中一样(编辑控制列表)。或者你的意思是整个系统键盘布局? – 2009-09-20 15:44:13

+0

@MartijnCourteaux我正在寻找一些东西来重新映射我的pageup键到(ctrl + win + left)和pagedown到(crl + win + right) – 2015-10-28 12:45:06

+0

@KoenVanLooveren:在OS X上,搜索Karabiner。对于其他平台,我猜想类似的应用程序将存在。 – 2015-10-28 12:50:50

回答

-2

拍摄键事件:

java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(myListener, AWTEvent.KEY_EVENT_MASK); 

模拟按键:

java.awt.Robot.keyPress(myKeyCode); 
+0

一旦你捕获它,你将如何处理这个按键? – kdgregory 2009-09-21 12:06:16

+0

获取输入的密钥并将其重新映射到您自己的密钥。这不是要求的吗? – Witek 2009-09-21 14:16:51

0

真的不明白你的问题的情况下。但理论上,您可以截取所有KeyEvent,然后根据您的条件派发不同的KeyEvent。 Global Event Dispatching可能会给你一些想法。

1

如果我明白这个问题,那就是如何明确定义特定键的行为。以下是我如何实现键盘快捷键 - 希望它可以回答你的问题。在我的下面的例子中,我相信你可以将'this'改为你希望显式设置键盘行为的特定组件,并覆盖其默认行为。我通常在面板或框架的背景下这样做。

private void addHotKey(KeyStroke keyStroke, String inputActionKey, Action listener) { 
    ActionMap actionMap = this.getActionMap(); 
    InputMap inputMap = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); 
    inputMap.put(keyStroke, inputActionKey); 
    actionMap.put(inputActionKey, listener); 
} 

inputActionKey只是一个用于映射操作的任意键字符串。调用此方法来侦听DEL键的示例:

KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0); 
    Action listener = new AbstractAction() { 
     public void actionPerformed(ActionEvent e) { 
      // delete something... 
     } 
    }; 
    addHotKey(keyStroke, "MainWindowDEL", listener);