HaskellでXのウィンドウをクリック

HaskellでXの画面を自動的にぽちぽちするやつを作りたかったので作ったという話。HackageにあるX11 packageを使えば簡単にできる

 

まずは"allocaXEvent"Xのイベント用のデータ領域を確保する。そして、"setEventType" でイベントの種類を、setButtonEventでイベントの詳細を入れていって、"sendEvent"で送りつける。それだけ。

 

setButtonEventは X11にはないけれどにたよーな "setKeyEvent"を使ってある程度設定してあげて残りの部分を自分でうめてあげる。こんな感じ。

 

gist9182300

 

全体として「指定したdisplayの指定したwindowの(x,y)をクリックする」という関数がこんな感じになる。

 

gist9182316

 

x+1とかy+20とかしているのは多分ウィンドウ装飾のせいで自分の環境だとこうなるけれど他でもこれでよいかどうかは不明。xevとか見ながら調整したらいいと思う。