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
- | RestartOnAny
- | StartStopInput
- | StartStopOutput
- | MarkParityErrors
- | ProcessOutput
- | MapLFtoCRLF
- | OutputMapCRtoLF
- | NoCRAtColumnZero
- | ReturnMeansLF
- | TabDelayMask0
- | TabDelayMask3
- | 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
- newtype BaudRate where
- BaudRate CSpeed
- pattern B0 :: BaudRate
- pattern B50 :: BaudRate
- pattern B75 :: BaudRate
- pattern B110 :: BaudRate
- pattern B134 :: BaudRate
- pattern B150 :: BaudRate
- pattern B200 :: BaudRate
- pattern B300 :: BaudRate
- pattern B600 :: BaudRate
- pattern B1200 :: BaudRate
- pattern B1800 :: BaudRate
- pattern B2400 :: BaudRate
- pattern B4800 :: BaudRate
- pattern B9600 :: BaudRate
- pattern B19200 :: BaudRate
- pattern B38400 :: BaudRate
- pattern B57600 :: BaudRate
- pattern B115200 :: BaudRate
- pattern B230400 :: BaudRate
- pattern B460800 :: BaudRate
- pattern B500000 :: BaudRate
- pattern B576000 :: BaudRate
- pattern B921600 :: BaudRate
- pattern B1000000 :: BaudRate
- pattern B1152000 :: BaudRate
- pattern B1500000 :: BaudRate
- pattern B2000000 :: BaudRate
- pattern B2500000 :: BaudRate
- pattern B3000000 :: BaudRate
- pattern B3500000 :: BaudRate
- pattern B4000000 :: 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
.
data TerminalState Source #
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
BRKINT
- Signal interrupt on break
ICRNL
- Map CR to NL on input
IGNBRK
- Ignore break condition
IGNCR
- Ignore CR
IGNPAR
- Ignore characters with parity errors
INLCR
- Map NL to CR on input
INPCK
- Enable input parity check
ISTRIP
- Strip character
IXANY
- Enable any character to restart output
IXOFF
- Enable start/stop input control
IXON
- Enable start/stop output control
PARMRK
- Mark parity errors
OPOST
- Post-process output
CLOCAL
- Ignore modem status lines
CREAD
- Enable receiver
CSTOPB
- Send two stop bits, else one
HUPCL
- Hang up on last close
PARENB
- Parity enable
PARODD
- Odd parity, else even
ECHO
- Enable echo
ECHOE
- Echo erase character as error-correcting backspace
ECHOK
- Echo KILL
ECHONL
- Echo NL
ICANON
- Canonical input (erase and kill processing)
IEXTEN
- Enable extended input character processing
ISIG
- Enable signals
NOFLSH
- Disable flush after interrupt or quit
TOSTOP
- Send SIGTTOU
for background output
terminalMode :: TerminalMode -> TerminalAttributes -> Bool Source #
bitsPerByte :: TerminalAttributes -> Int Source #
withBits :: TerminalAttributes -> Int -> TerminalAttributes Source #
data ControlCharacter Source #
withCC :: TerminalAttributes -> (ControlCharacter, Char) -> TerminalAttributes Source #
inputTime :: TerminalAttributes -> Int Source #
withTime :: TerminalAttributes -> Int -> TerminalAttributes Source #
minInput :: TerminalAttributes -> Int Source #
Serial line baudrate. The set of supported speeds is system-dependent.
Portable use of the provided pattern synonyms that are outside the list
mandated by POSIX requires #ifdef
guards.
Applications may need to be prepared to encounter speeds not known at
compile time, these can be handled generically via the BaudRate
constructor. In other words, the provided pattern synonyms are not
necessarily a COMPLETE
set.
All non-zero pseudo-terminal baud rates are functionally equivalent, and
the pty
driver may accept any speed within a suitable range. Requested
speeds may be rounded up or down to fit into the supported range.
Bundled Patterns
Instances
Instances details
Instance details
Defined in System.Posix.Terminal.Common
Instance details
Defined in System.Posix.Terminal.Common
Instance details
Defined in System.Posix.Terminal.Common
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).
data QueueSelector Source #
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 #
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).