【发布时间】:2019-04-02 15:41:49
【问题描述】:
我想用Robot点击鼠标按键4,侧键。
InputEvent 只有 3 个标准的左、中(滚动)和右按钮。
InputEvent.BUTTON1_DOWN_MASK = 1024
InputEvent.BUTTON2_DOWN_MASK = 2048
InputEvent.BUTTON3_DOWN_MASK = 4096
所以我尝试将公式流向Robot 号码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 创建鼠标点击?
【问题讨论】:
-
我认为您可能必须使用 JNA 或 JNI 来解决此问题
-
我还想知道您的问题是否不仅是特定于操作系统的,而且是特定于 vendor 的,因为我不知道是否处理了额外且可能不寻常的鼠标大多数常见的操作系统已经完全解决了按钮问题。
-
我使用的是 Windows 10,我很确定它已得到解决,因为我在
JFrame中使用了MouseEvent来查看它是否检测到 button4 和 button5,它确实打印了数字 4和 5 当我按下它们时。 -
好的,那么您应该能够在 MouseListener 中的 MouseEvent 上调用
getModifiersEx()以获取此事件的扩展修饰符掩码。执行此操作时,返回什么 int 值? -
哇 好的,这就是结果:
button1 (Left) = 1,024,button2 (Scroll) = 2,048,button3 (Right) = 4,096,button4 (forwards) = 16,384,button5 (backwards) = 32,768我确实尝试过它并且它有效,谢谢:)。我想检查更多按钮,但我的鼠标上只有这些按钮。我尝试发送数字65,536和131,072,但它抛出了IllegalArgumentException,可能是因为我的鼠标上没有这些按钮。如果有人有更多按钮的鼠标,例如g502,如果您能检测到更多按钮,请在此处评论。
标签: java mouseevent