用于移动鼠标光标(数字键盘)的键盘快捷方式,即 a、6、2、8... 不适用于 java 机器人 class

Key Board shortcut for moving mouse cursor (num pad) i.e a,6,2,8... are not working with java robot class

我们可以使用数字键盘的键盘快捷键,即

4-left 6-right 2-down 8-up 

不使用鼠标滚动鼠标光标。

通过启用

Control Panel\Ease of Access\Ease of Access Center\Make the mouse easier to use

但它不适用于 java 机器人 class - 它只是 打印 数字,即屏幕上的 4/6/2/8。

知道可能是什么问题吗?

代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.logging.Level;
import java.util.logging.Logger;
class MoveCursor 
{
    public static void main(String[] args)
    {
        try {
            Robot r=new Robot();
             r.keyPress(KeyEvent.VK_NUMPAD4);
             r.delay(4000);
             r.keyRelease(KeyEvent.VK_NUMPAD4);
        } catch (AWTException ex) {

Logger.getLogger(MoveCursor.class.getName()).log(Level.SEVERE, null, ex); } } }

文档指出 java.awt.Robot(参见:https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html)class "generates inputs in the platforms native input queue"。

鼠标键不在同一级别上操作(它们实际上只是用鼠标移动操作代替击键)。

因此,由于鼠标键不监视 java.awt.Robot 添加到的本机输入队列,因此它无法用鼠标移动替换事件。

所以简而言之,结论是您不能将 java.awt.Robot class 与鼠标键结合使用。


但是,java.awt.Robot class 确实提供了其他可用于控制鼠标的功能,即 #mouseMove 功能:https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html#mouseMove-int-int-