Haskell和java.awt.Robot

Haskell和java.awt.Robot,haskell,Haskell,我对编写一个控制键盘和鼠标的程序很感兴趣,就像java.awt.Robot一样。当然,我认为标准库无法做到这一点。有谁知道我可以通过FFI连接到一个好的库来实现这样的目标吗?对不起,我没有任何相关经验。我的第一个想法是看看其他UI库,比如GTK 看起来这可能已经通过gtk2hs导出到Haskell。如果您知道如何使用C外部函数接口,那么XTest扩展库似乎具有您想要的功能。()。如果您在Windows中运行此功能,请查看。在X11中,您可以使用。两者都是本地系统调用的Perl包装器。如果使

我对编写一个控制键盘和鼠标的程序很感兴趣,就像java.awt.Robot一样。当然,我认为标准库无法做到这一点。有谁知道我可以通过FFI连接到一个好的库来实现这样的目标吗?

对不起,我没有任何相关经验。我的第一个想法是看看其他UI库,比如GTK


看起来这可能已经通过gtk2hs导出到Haskell。如果您知道如何使用C外部函数接口,那么XTest扩展库似乎具有您想要的功能。()。

如果您在Windows中运行此功能,请查看。在X11中,您可以使用。两者都是本地系统调用的Perl包装器。

如果使用X11,则可以使用或更高级别

以下是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

我的目标是编写一个Haskell程序。我喜欢有人问如何将java与Haskell接口,第一条评论就是为什么不使用java。。。不管怎样,我认为lambada可能是您想要的。更确切地说,我不一定对Haskell与Java的接口感兴趣。我喜欢java.awt.Robot之类的功能,无论哪种方式最直接。我无法想象,除了启动JVM和通过JNI接口控制键盘之外,没有其他选择。@monadic我们不是问他为什么不能使用Java,我们只是想通过深入了解更多细节来获得更清晰的描述。不要总是认为你确切地知道每个人在想什么。OP显然想要像机器人这样的东西,但没有说它能有多近。它能在JVM中运行吗?需要跨平台吗?@Ara谢谢你的澄清,这就是我最初的问题的意思。我当然知道这是一个Java库,但您应该始终澄清为什么要寻找替代品,否则我们无法给您提供好的建议。