@@ -44,9 +44,12 @@ import Graphics.Vty.Input.Events
4444import Graphics.Vty.Input.Internal
4545import Graphics.Vty.Input.Terminfo
4646
47+import Control.Applicative
4748import Control.Concurrent
4849import Control.Lens
4950
51+import Data.Monoid
52+
5053import qualified System.Console.Terminfo as Terminfo
5154import System.Environment
5255import System.Posix.Signals.Exts
@@ -63,9 +66,9 @@ inputForCurrentTerminal config = do
6366-- | Set up the terminal attached to the given Fd for input. Returns a 'Input'.
6467--
6568-- The table used to determine the 'Events' to produce for the input bytes comes from
66−-- 'classifyTableForTerm'.
69+-- 'classifyTableForTerm'. Which is then overridden by the table from 'classifyTableUserOverrides'.
6770--
68−-- The terminal is modified as follows:
71+-- The terminal device is configured with the attributes:
6972--
7073-- * IXON disabled
7174-- - disables software flow control on outgoing data. This stops the process from being
@@ -91,7 +94,8 @@ inputForCurrentTerminal config = do
9194inputForNameAndIO :: Config -> String -> Fd -> IO Input
9295inputForNameAndIO config termName termFd = do
9396 terminal <- Terminfo.setupTerm termName
94− let classifyTable = classifyTableForTerm termName terminal
97+ classifyTable <- mappend <$> pure (classifyTableForTerm termName terminal)
98+ <*> classifyTableUserOverrides
9599 (setAttrs,unsetAttrs) <- attributeControl termFd
96100 setAttrs
97101 input <- initInputForFd config classifyTable termFd