我有兴趣编写一个控制键盘和鼠标的程序,就像使用java.awt.Robot一样。我当然假设没有办法用标准库做到这一点。有没有人知道我可以通过FFI连接到一个好的库来实现这样的目标?
答案 0 :(得分:1)
我没有任何相关经验,抱歉。我的第一个想法是查看其他UI库,例如GTK,
看起来这可能已经通过gtk2hs导出到Haskell了。如果您知道如何使用C外部函数接口,则XTest扩展库似乎具有您想要的功能。 (http://www.x.org/releases/X11R7.6/doc/libXtst/xtestlib.html)。
答案 1 :(得分:1)
如果您在Windows中运行此功能,请查看Win32::GuiTest。在X11中,您可以使用X11::GuiTest。两者都是本机系统调用的Perl包装器。
答案 2 :(得分:1)
以下是XTest的一个例子:
import Control.Concurrent (threadDelay)
import Control.Monad (forever)
import Graphics.X11.Xlib
import Graphics.X11.XTest
main = withDisplay "" $ \dpy -> forever $ do
sendKey dpy [] xK_a
threadDelay (500 * 1000)
这是机器人的一个例子:
import Control.Monad (forever)
import Test.Robot
main = runRobot . forever $ do
tap _A
sleep 0.5