| Portability | non-portable (requires POSIX) |
|---|---|
| Stability | provisional |
| Maintainer | libraries@haskell.org |
| Safe Haskell | Trustworthy |
System.Posix.Terminal
Contents
Description
POSIX Terminal support
- 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
- = InputQueue
- | OutputQueue
- | BothQueues
- 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 Source
getTerminalAttributes :: Fd -> IO TerminalAttributesSource
getTerminalAttributes fd calls tcgetattr to obtain
the TerminalAttributes associated with Fd fd.
data TerminalState Source
Constructors
| Immediately | |
| WhenDrained | |
| WhenFlushed |
setTerminalAttributes :: Fd -> TerminalAttributes -> TerminalState -> IO ()Source
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 Source
Constructors
data ControlCharacter Source
Terminal operations
sendBreak :: Fd -> Int -> IO ()Source
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 ()Source
drainOutput fd calls tcdrain to block until all output
written to Fd fd has been transmitted.
data QueueSelector Source
Constructors
| InputQueue | |
| OutputQueue | |
| BothQueues |
discardData :: Fd -> QueueSelector -> IO ()Source
discardData fd queues calls tcflush to discard
pending input and/or output for Fd fd,
as indicated by the QueueSelector queues.
data FlowAction Source
Constructors
| SuspendOutput | TCOOFF |
| RestartOutput | TCOON |
| TransmitStop | TCIOFF |
| TransmitStart | TCION |
controlFlow :: Fd -> FlowAction -> IO ()Source
controlFlow fd action calls tcflow to control the
flow of data on Fd fd, as indicated by
action.
Process groups
getTerminalProcessGroupID :: Fd -> IO ProcessGroupIDSource
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 ()Source
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 BoolSource
queryTerminal fd calls isatty to determine whether or
not Fd fd is associated with a terminal.
getTerminalName :: Fd -> IO FilePathSource
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 FilePathSource
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.
Pseudoterminal operations
openPseudoTerminal :: IO (Fd, Fd)Source
openPseudoTerminal creates a pseudoterminal (pty) pair, and
returns the newly created pair as a (master, slave) tuple.
getSlaveTerminalName :: Fd -> IO FilePathSource
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.