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 |
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
- = 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 TerminalAttributes Source #
getTerminalAttributes fd
calls
tcgetattr
to obtain
the
TerminalAttributes
associated with
Fd
fd
.
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 #
terminalMode :: TerminalMode -> TerminalAttributes -> Bool Source #
bitsPerByte :: TerminalAttributes -> Int Source #
withBits :: TerminalAttributes -> Int -> TerminalAttributes Source #
withCC :: TerminalAttributes -> ( ControlCharacter , Char ) -> TerminalAttributes Source #
inputTime :: TerminalAttributes -> Int Source #
withTime :: TerminalAttributes -> Int -> TerminalAttributes Source #
minInput :: TerminalAttributes -> Int 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.
Throws
IOError
("unsupported operation") if platform does not
provide
tcdrain(3)
(use
#if HAVE_TCDRAIN
CPP guard to
detect availability).
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 #
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 ProcessGroupID Source #
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 Bool Source #
queryTerminal fd
calls
isatty
to determine whether or
not
Fd
fd
is associated with a terminal.
getTerminalName :: Fd -> IO FilePath Source #
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 Source #
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).