1

私は簡単なテキストエディタを書いているので、このようなものが欲しい

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 の「エディター」を使用したいと考えています。

4

1 に答える 1

1

本当にシンプルにしたい場合は、次の回答を確認してください。

tty を機能させるには、最初に tty を raw モードにする必要がある場合があります。2 番目の質問は Windows ソリューションを求めていますが、同じ考えが Linux でも機能するはずです。

于 2015-08-26T22:22:53.573 に答える