Java 机器人:发送带有位置的键,例如右键移动或右键ctrl

Java 机器人:发送带有位置的键,例如右键移动或右键ctrl,java,keyboard,virtual,awtrobot,Java,Keyboard,Virtual,Awtrobot,我想使用java.awt.Robot类来实现一个虚拟键盘。我想知道是否有办法使用keyPress(int)方法发送带有按键位置(左或右)的按键代码。如果向awt元素添加KeyListener,则由ctrl或shift触发的KeyEvent会显示一条信息,说明它是左键还是右键 这些文件告诉我们: 具有多个与其关联的物理键的键代码(例如,KeyEvent.VK_SHIFT可能表示左键或右键)将映射到左键” 但是,真的没有办法发送按下右移键的命令吗?有些应用程序(例如VirtualBox)需要这些正确

我想使用
java.awt.Robot
类来实现一个虚拟键盘。我想知道是否有办法使用
keyPress(int)
方法发送带有按键位置(左或右)的按键代码。如果向awt元素添加
KeyListener
,则由ctrl或shift触发的
KeyEvent
会显示一条信息,说明它是左键还是右键

这些文件告诉我们:

具有多个与其关联的物理键的键代码(例如,
KeyEvent.VK_SHIFT
可能表示左键或右键)将映射到左键”

但是,真的没有办法发送按下右移键的命令吗?有些应用程序(例如VirtualBox)需要这些正确的按钮(当然,您可以配置这些应用程序,但虚拟键盘没有这个选项)

那么…有没有办法用
机器人
类来实现这一点?

是否有其他方法可以在Java中发送更具体的密钥事件?

经过更多搜索后,我目前认为
Java.awt.Robot
可能不是正确的选择。发送特殊密钥(如jvm中没有密钥代码助理的德语umlauts)时存在已知问题


因此,我自己回答这个问题时说“没有办法用
Robot
类来完成它”。

经过更多的搜索,我目前认为
java.awt.Robot
可能不是正确的选择。发送特殊密钥(如在jvm中没有密钥代码助手的德语umlauts)时存在已知的问题


所以我自己回答这个问题时说“没有办法用
机器人
类来完成它”。

我不确定你是否真的想知道它(丑陋、肮脏、代码太多),但我知道使用Synergy()。synergy客户端连接到我的java实例。java实例然后发送synergy数据包。我使用wireshark检查了synergy流量,因为我没有发现任何协议规范…主要问题是我必须将每个键或鼠标事件映射到synergy事件(未找到自动解决方案)…而且键盘上有很多键;)仍然找不到基于Java的解决方案。我不确定您是否真的想知道它(丑陋、肮脏、代码太多),但^^^我知道使用Synergy()。synergy客户端连接到我的java实例。java实例然后发送synergy数据包。我使用wireshark检查了synergy流量,因为我没有发现任何协议规范…主要问题是我必须将每个键或鼠标事件映射到synergy事件(未找到自动解决方案)…而且键盘上有许多键;)仍然找不到基于Java的解决方案。