| Copyright | (c) The University of Glasgow 2002 | 
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) | 
| Maintainer | libraries@haskell.org | 
| Stability | provisional | 
| Portability | non-portable (requires POSIX) | 
| Safe Haskell | Safe | 
| Language | Haskell2010 | 
System.Posix.Terminal
Description
POSIX Terminal support
Synopsis
- data TerminalAttributes
- getTerminalAttributes :: Fd -> IO TerminalAttributes
- data TerminalState
- setTerminalAttributes :: Fd -> TerminalAttributes -> TerminalState -> IO ()
- data TerminalMode- = InterruptOnBreak
- | MapCRtoLF
- | IgnoreBreak
- | IgnoreCR
- | IgnoreParityErrors
- | MapLFtoCR
- | CheckParity
- | StripHighBit
- | StartStopInput
- | StartStopOutput
- | MarkParityErrors
- | ProcessOutput
- | LocalMode
- | ReadEnable
- | TwoStopBits
- | HangupOnClose
- | EnableParity
- | OddParity
- | EnableEcho
- | EchoErase
- | EchoKill
- | EchoLF
- | ProcessInput
- | ExtendedFunctions
- | KeyboardInterrupts
- | NoFlushOnInterrupt
- | BackgroundWriteInterrupt
 
- withoutMode :: TerminalAttributes -> TerminalMode -> TerminalAttributes
- withMode :: TerminalAttributes -> TerminalMode -> TerminalAttributes
- terminalMode :: TerminalMode -> TerminalAttributes -> Bool
- bitsPerByte :: TerminalAttributes -> Int
- withBits :: TerminalAttributes -> Int -> TerminalAttributes
- data ControlCharacter
- controlChar :: TerminalAttributes -> ControlCharacter -> Maybe Char
- withCC :: TerminalAttributes -> (ControlCharacter, Char) -> TerminalAttributes
- withoutCC :: TerminalAttributes -> ControlCharacter -> TerminalAttributes
- inputTime :: TerminalAttributes -> Int
- withTime :: TerminalAttributes -> Int -> TerminalAttributes
- minInput :: TerminalAttributes -> Int
- withMinInput :: TerminalAttributes -> Int -> TerminalAttributes
- data BaudRate
- inputSpeed :: TerminalAttributes -> BaudRate
- withInputSpeed :: TerminalAttributes -> BaudRate -> TerminalAttributes
- outputSpeed :: TerminalAttributes -> BaudRate
- withOutputSpeed :: TerminalAttributes -> BaudRate -> TerminalAttributes
- sendBreak :: Fd -> Int -> IO ()
- drainOutput :: Fd -> IO ()
- data QueueSelector
- discardData :: Fd -> QueueSelector -> IO ()
- data FlowAction
- controlFlow :: Fd -> FlowAction -> IO ()
- getTerminalProcessGroupID :: Fd -> IO ProcessGroupID
- setTerminalProcessGroupID :: Fd -> ProcessGroupID -> IO ()
- queryTerminal :: Fd -> IO Bool
- getTerminalName :: Fd -> IO FilePath
- getControllingTerminalName :: IO FilePath
- openPseudoTerminal :: IO (Fd, Fd)
- getSlaveTerminalName :: Fd -> IO FilePath
Terminal support
Terminal attributes
data TerminalAttributes #
getTerminalAttributes :: Fd -> IO TerminalAttributes #
getTerminalAttributes fd calls tcgetattr to obtain
   the TerminalAttributes associated with Fd fd.
data TerminalState #
Constructors
| Immediately | |
| WhenDrained | |
| WhenFlushed | 
setTerminalAttributes :: Fd -> TerminalAttributes -> TerminalState -> IO () #
setTerminalAttributes fd attr ts calls tcsetattr to change
   the TerminalAttributes associated with Fd fd to
   attr, when the terminal is in the state indicated by ts.
data TerminalMode #
Constructors
terminalMode :: TerminalMode -> TerminalAttributes -> Bool #
bitsPerByte :: TerminalAttributes -> Int #
withBits :: TerminalAttributes -> Int -> TerminalAttributes #
controlChar :: TerminalAttributes -> ControlCharacter -> Maybe Char #
withCC :: TerminalAttributes -> (ControlCharacter, Char) -> TerminalAttributes #
inputTime :: TerminalAttributes -> Int #
withTime :: TerminalAttributes -> Int -> TerminalAttributes #
minInput :: TerminalAttributes -> Int #
withMinInput :: TerminalAttributes -> Int -> TerminalAttributes #
Terminal operations
sendBreak :: Fd -> Int -> IO () #
sendBreak fd duration calls tcsendbreak to transmit a
   continuous stream of zero-valued bits on Fd fd for the
   specified implementation-dependent duration.
drainOutput :: Fd -> IO () #
drainOutput fd calls tcdrain to block until all output
   written to Fd fd has been transmitted.
Throws IOError ("unsupported operation") if platform does not
 provide tcdrain(3) (use #if HAVE_TCDRAIN CPP guard to
 detect availability).
data QueueSelector #
Constructors
| InputQueue | |
| OutputQueue | |
| BothQueues | 
discardData :: Fd -> QueueSelector -> IO () #
discardData fd queues calls tcflush to discard
   pending input and/or output for Fd fd,
   as indicated by the QueueSelector queues.
data FlowAction #
Constructors
| SuspendOutput | TCOOFF | 
| RestartOutput | TCOON | 
| TransmitStop | TCIOFF | 
| TransmitStart | TCION | 
controlFlow :: Fd -> FlowAction -> IO () #
controlFlow fd action calls tcflow to control the
   flow of data on Fd fd, as indicated by
   action.
Process groups
getTerminalProcessGroupID :: Fd -> IO ProcessGroupID #
getTerminalProcessGroupID fd calls tcgetpgrp to
   obtain the ProcessGroupID of the foreground process group
   associated with the terminal attached to Fd fd.
setTerminalProcessGroupID :: Fd -> ProcessGroupID -> IO () #
setTerminalProcessGroupID fd pgid calls tcsetpgrp to
   set the ProcessGroupID of the foreground process group
   associated with the terminal attached to Fd
   fd to pgid.
Testing a file descriptor
queryTerminal :: Fd -> IO Bool #
queryTerminal fd calls isatty to determine whether or
   not Fd fd is associated with a terminal.
getTerminalName :: Fd -> IO FilePath #
getTerminalName fd calls ttyname to obtain a name associated
   with the terminal for Fd fd. If fd is associated
   with a terminal, getTerminalName returns the name of the
   terminal.
getControllingTerminalName :: IO FilePath #
getControllingTerminalName calls ctermid to obtain
   a name associated with the controlling terminal for the process.  If a
   controlling terminal exists,
   getControllingTerminalName returns the name of the
   controlling terminal.
Throws IOError ("unsupported operation") if platform does not
 provide ctermid(3) (use #if HAVE_CTERMID CPP guard to
 detect availability).
Pseudoterminal operations
openPseudoTerminal :: IO (Fd, Fd) #
openPseudoTerminal creates a pseudoterminal (pty) pair, and
 returns the newly created pair as a (master, slave) tuple.
getSlaveTerminalName :: Fd -> IO FilePath #
getSlaveTerminalName calls ptsname to obtain the name of the
 slave terminal associated with a pseudoterminal pair.  The file
 descriptor to pass in must be that of the master.