-- | This module provides the input abstraction for Vty. module Graphics.Vty.Input ( Input(..) , module Graphics.Vty.Input.Events ) where import Graphics.Vty.Input.Events import Control.Concurrent.STM (TChan) -- | The library's input-processing abstraction. Platform-specific -- implementations must implement an 'Input' and provide it to -- 'Graphics.Vty.mkVtyFromPair'. data Input = Input { Input -> TChan InternalEvent eventChannel :: TChan InternalEvent -- ^ A channel of events generated by input processing. The -- input implementation must write its input events to this -- channel; the Vty event loop will read from this channel -- and provide the events to the user's application via -- 'nextEvent'. , Input -> IO () shutdownInput :: IO () -- ^ Shut down the input processing. As part of shutting down -- the input, this should also restore the input state if -- appropriate. , Input -> IO () restoreInputState :: IO () -- ^ Restore the terminal's input state to what it was prior -- to configuring the input for Vty. This should be done as -- part of 'shutdownInput' but is exposed in case it needs to -- be used directly. , Input -> String -> IO () inputLogMsg :: String -> IO () -- ^ Log the specified message. }