【问题标题】:Java robot cannot control the whole keyboardJava机器人无法控制整个键盘
【发布时间】:2013-09-14 22:54:13
【问题描述】:

我尝试制作一种键盘控制器类,但 java 机器人似乎无法控制整个键盘。

我试过了

robot.keyPress(i);
Thread.currentThread().sleep(50);
robot.keyRelease(i);

从 0 到 255,并且从不按下此键(此键存在于所有 azerty 键盘上)。

知道为什么吗? 谢谢。

Ps : 你不需要按 CTRL 或 ALT 来使用这个键,它会产生这个:“²”

【问题讨论】:

    标签: java keyboard automation


    【解决方案1】:

    您可以尝试创建一个新窗口,并让它捕获并打印出所按下键的键代码。然后运行它并按有问题的键。然后它应该为它打印KeyCode

    public static void main(String[] args) {
        JFrame frame= new JFrame();
        frame.addKeyListener(new KeyAdapter() {
    
            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println(e.getExtendedKeyCode());
            }            
        });
        frame.setBounds(0, 0, 100, 50);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    

    使用虚拟键盘执行此操作给了我 16777394

    请参阅 http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.CHAR_UNDEFINED 了解所有“KeyCode”值

    【讨论】:

    • @vandale 在每个键盘上这个键都会有这个keyCode...?
    • @crAlexander 这取决于您所说的这个键的含义:它们在该物理位置的值将根据布局而有所不同。但是,无论位置如何,具有该值的键都应具有一致的键码(尽管有数字键盘键)
    • @vandale 例如,如果我有代码 (134 ) 并且我说 if(Keycode==134) 它会找到 VK_DEAD_ABOVEDOT(如果存在)或者这个键码可能来自另一个按钮?
    • @crAlexander 它可能来自用户希望被视为 VK_DEAD_ABOVEDOT 的任何按钮。用户可以根据需要将键盘上的每个键设置为“a”。鼠标甚至可以创建键盘事件。所以是的,假设键存在,但不假设它在键盘上的物理位置
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2017-02-17
    • 2021-12-23
    相关资源
    最近更新 更多