2010-09-07 63 views
2

我想使用java.awt.Robot类来实现虚拟键盘。我想知道是否有办法使用keyPress(int)方法将密钥码发送到关键位置(左侧或右侧)。如果您将一个KeyListener添加到awt元素,KeyEvent触发ctrl转变有一个信息,如果它是左或右按钮。Java awt.Robot:将密钥发送给例如。右移或右移ctrl

的文档告诉:具有与它们相关联的多于一个物理键(如KeyEvent.VK_SHIFT可能意味着左或右shift键)

键代码将映射到左键”

但真的没有办法送按下右移?某些应用程序(如VirtualBox的)需要的正确的按钮(当然,你可能会配置这些应用程序,但多数民众赞成没有选择的虚拟键盘)。

所以......有没有办法用Robot这个类来做到这一点? 有没有其他的方法可以在Java中发送更多特定的关键事件?

回答

0

经过更多搜索,我目前认为java.awt.Robot可能不是正确的选择。有些已知的问题发送特殊键,如德语变音符号,在jvm中没有密钥代码。

所以我自己回答这个问题“没有办法用Robot这个班”。

+0

这将是很高兴知道你如何解决这个问题:-) – Grodriguez 2010-09-21 11:01:23

+0

我不知道你是否真的想知道它(丑陋,脏,很多代码),但^^ 我知道使用Synergy(http ://synergy-foss.org/)。协同客户端连接到我的Java实例。 java实例然后发送协同数据包。我使用wireshark检查了协同流量,因为我没有找到协议规范......主要问题是我必须将每个键或鼠标事件映射到协同事件(没有找到自动解决方案)......而且有很多键键盘;) 仍然未找到基于Java的解决方案。 – hacksteak25 2010-09-21 12:13:20

+0

有趣。非常感谢。 – Grodriguez 2010-09-22 06:34:25