gpt4 book ai didi

java - java.awt.Robot 和 java.awt.event.KeyEvent 支持鼠标键吗?

转载 作者:行者123 更新时间:2023-11-30 02:43:27 26 4
gpt4 key购买 nike

我正在制作一个小脚本,我使用鼠标键来节省我的工作时间。我可以正确、良好地使用鼠标键。但是,当使用 java.awt.Robotjava.awt.event.KeyEvent 时,鼠标键基本上被忽略,而是程序按下文字键。

如果程序调用robot.keyPress(KeyEvent.VK_MULTIPLY)并且启用了鼠标键,则程序会输出星号,而不是像执行此操作时那样将小键盘 5 键更改为右键单击手动。

这是故意的吗?如果是这样,为什么 Java 不支持这个,或者更具体地说 java.awt

编辑:从轻松访问中心引用 Windows 鼠标键

最佳答案

根据java.awt.Robot Javadoc “...事件是在平台的 native 输入队列中生成的”。轻松访问中心相关程序(如鼠标键和放大镜等)的实现很可能是在 user-land 上完成的。级别(基于 _MOUSEKEYS 结构 上的 this page 表明它是在 WinUser.h 中定义的)。如果启用了 MouseKeys,我想它会透明地用鼠标事件替换键盘事件,然后通过SendInput function将它们发送到低级队列。 .

MouseKeys 不直接监视低级输入队列,它仅在窗口管理器级别运行,并用合成的鼠标移动输入替换用户键盘输入。 MouseKeys 实现从不直接与操作系统最低级别的输入队列交互,这些队列由内核本身管理。由于Robot 类直接将事件插入到低级队列中,因此它在MouseKeys 程序的输入 Hook “下方”运行。 MouseKeys 没有接收到按键,因此它不执行任何操作,但按键输入被直接放入低级队列中,因此您仍然可以看到按键输出。

请注意,这个答案主要基于有根据的猜测,但我认为这个答案几乎肯定是正确的。总而言之:MouseKeys程序旨在监视用户的输入,而不是监视所有来源的低级输入;当 Robot 类在低级别创建合成输入时,MouseKeys 不知道 Robot 类输入。

关于java - java.awt.Robot 和 java.awt.event.KeyEvent 支持鼠标键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40942786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com