私は簡単なテキストエディタを書いているので、このようなものが欲しい
type Scancode = Int
data KeyState = Pressed | Released
newtype InStream = InStream [(Scancode, State)]
main = do
input <- getKeys
parse input
parse :: InStream -> IO ()
parse [] = return ()
parse (x : xs)
| x == (1, Released) = return ()
| otherwise = do
doSomething
parse xs
ご想像のとおり、getKeys
関数が のように動作getContents
し、スキャンコードの連続したリストが必要です。
私が知っているように、SDLまたはGTKでさえそのような機能を提供できますが、より慣用的な(haskellおよび関数型プログラミングの場合)、そのようなことを行うための「オーバーヘッド」の少ない方法はありますか?
PS 問題があれば、コンソール (tty) と X11/Wayland の両方で Linux の「エディター」を使用したいと考えています。