Java机器人点击侧面按钮

标签 java mouseevent

我想使用机器人点击鼠标按钮 4,侧边按钮。

InputEvent 只有 3 个标准的左、中(滚动)和右按钮。

InputEvent.BUTTON1_DOWN_MASK = 1024
InputEvent.BUTTON2_DOWN_MASK = 2048
InputEvent.BUTTON3_DOWN_MASK = 4096

所以我尝试运行公式并将数字8192发送给机器人

public static void main(String[] args)
{
    try
    {
        Robot mouseHandler = new Robot();

        mouseHandler.mousePress(8192);
        mouseHandler.mouseRelease(8192);
    } catch (AWTException e)
    {
        e.printStackTrace();
    }
}

但它没有工作(如预期)并抛出异常:

Exception in thread "main" java.lang.IllegalArgumentException: Invalid combination of button flags
    at java.awt.Robot.checkButtonsArgument(Robot.java:320)
    at java.awt.Robot.mousePress(Robot.java:256)
    at controller_client.MainClass.main(MainClass.java:30)

是否可以使用按钮 4 创建鼠标单击?

最佳答案

好吧,经过更多搜索后,我发现这个函数可以返回 1 到 20 之间的任何鼠标按钮掩码 MouseEvent.getMaskForButton(int button)

尝试后,Robot 类确实成功单击了按钮4和按钮5,侧边按钮,如下所示:

try
{
    Robot mouseHandler = new Robot();

    int mouseButtonNum = 4; // 1 - 20
                            // but only buttons from 1 to 5 did work with Robot

    mouseHandler.mousePress(MouseEvent.getMaskForButton(mouseButtonNum));
    mouseHandler.mouseRelease(MouseEvent.getMaskForButton(mouseButtonNum));
} catch (AWTException e)
{
    e.printStackTrace();
}

我使用了带有 3 个按钮的鼠标,而 Robot 确实成功点击了 4 个和 5 个按钮。但似乎 Robot 只能点击 1 到 5 的按钮,所以 可能Hovercraft Full Of Eels的解释正确的是:

I also have to wonder if your issue is not only OS-specific, but also vendor-specific, since I don't know if handling of extra and perhaps unusual mouse buttons has been fully addressed by most common OS's.

如果他做对了,那么我使用的操作系统是 Windows 10。如果有人拥有 Linux,并且他知道如何将更多鼠标按钮分配给 Linux,并尝试使Robot 单击 5 上方的鼠标按钮,请注意我是否有效。

关于Java机器人点击侧面按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436569/

相关文章:

java - 使用mysql从表中删除

java - 无法从 IDEA 13.0 IDE 为导入的 gradle 项目运行 Junit 测试

java - GAE/JPA/Datastore 如何查询无主列表

java - 禁用一组 JButton 中特定 JButton 的 mouseEvent

java - 在 JLabel 中的某些文本上监听 MouseEvents

java - 写入属性文件

java - 执行引擎不打印结果

java - 如何检测两个鼠标按钮是否同时松开?

MouseBinding 上的 WPF 键盘修饰符

javascript - Cytoscape.js - 获取 ".on(tap)"事件位置