1

このサンプルコードを参照として、XHBとXTestを使用してキーの押下をシミュレートしようとしています。残念ながら、私が何をしても、結果のプログラムは効果がありません。例外も警告もありません。

何か案は?

Ubuntu12.04でGHC7.4.1とともにXHB0.5.2012.11.23を使用しています。

これが私がこれまでに得たものです:

import Control.Monad
import Control.Concurrent
import Graphics.XHB
import Graphics.XHB.Gen.Test

main = do
    Just c <- connect
    let keyCode = 38  -- A
    forever $ do
        fakeInput c $ MkFakeInput (toBit' EventMaskKeyPress) keyCode 0 (fromXid xidNone) 0 0 0
        threadDelay $ 1 * 1000
        fakeInput c $ MkFakeInput (toBit' EventMaskKeyRelease) keyCode 0 (fromXid xidNone) 0 0 0
        threadDelay $ 1 * 1000

toBit' :: (BitEnum a, Integral b) => a -> b
toBit' = fromIntegral . toBit
4

1 に答える 1

3

ここでの問題は少し微妙です。XTestプロトコルを見ると、FAKE_EVENTはを期待していませんがEVENT_MASK、代わりにを期待していることがわかりますFAKE_EVENT_TYPEKeyPressですがFAKE_EVENT_TYPE 2KeyReleaseです3EventMaskKeyPressおよびの代わりにこれらの値を使用すると、期待どおりに機能します(さらに、これが正しくないことを指摘した匂いであるEventMaskKeyRelease厄介な強制は必要ありません)。toBit

于 2013-03-27T14:50:55.867 に答える