| 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
- 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 #
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
| InterruptOnBreak |
|
| MapCRtoLF |
|
| IgnoreBreak |
|
| IgnoreCR |
|
| IgnoreParityErrors |
|
| MapLFtoCR |
|
| CheckParity |
|
| StripHighBit |
|
| RestartOnAny |
|
| StartStopInput |
|
| StartStopOutput |
|
| MarkParityErrors |
|
| ProcessOutput |
|
| MapLFtoCRLF |
Since: 2.8.0.0 |
| OutputMapCRtoLF |
Since: 2.8.0.0 |
| NoCRAtColumnZero |
Since: 2.8.0.0 |
| ReturnMeansLF |
Since: 2.8.0.0 |
| TabDelayMask0 |
Since: 2.8.0.0 |
| TabDelayMask3 |
Since: 2.8.0.0 |
| LocalMode |
|
| ReadEnable |
|
| TwoStopBits |
|
| HangupOnClose |
|
| EnableParity |
|
| OddParity |
|
| EnableEcho |
|
| EchoErase |
|
| EchoKill |
|
| EchoLF |
|
| ProcessInput |
|
| ExtendedFunctions |
|
| KeyboardInterrupts |
|
| NoFlushOnInterrupt |
|
| BackgroundWriteInterrupt |
|
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
| pattern B0 :: BaudRate | Hang up |
| pattern B50 :: BaudRate | 50 baud |
| pattern B75 :: BaudRate | 75 baud |
| pattern B110 :: BaudRate | 110 baud |
| pattern B134 :: BaudRate |
|
| pattern B150 :: BaudRate | 150 baud |
| pattern B200 :: BaudRate | 200 baud |
| pattern B300 :: BaudRate | 300 baud |
| pattern B600 :: BaudRate | 600 baud |
| pattern B1200 :: BaudRate | 1200 baud |
| pattern B1800 :: BaudRate | 1800 baud |
| pattern B2400 :: BaudRate | 2400 baud |
| pattern B4800 :: BaudRate | 4800 baud |
| pattern B9600 :: BaudRate | 9600 baud |
| pattern B19200 :: BaudRate | 19200 baud |
| pattern B38400 :: BaudRate | 38400 baud |
| pattern B57600 :: BaudRate | 57600 baud, non-POSIX system-dependent extension |
| pattern B115200 :: BaudRate | 115200 baud, non-POSIX system-dependent extension |
| pattern B230400 :: BaudRate | 230400 baud, non-POSIX system-dependent extension |
| pattern B460800 :: BaudRate | 460800 baud, non-POSIX system-dependent extension |
| pattern B500000 :: BaudRate | 500000 baud, non-POSIX system-dependent extension |
| pattern B576000 :: BaudRate | 576000 baud, non-POSIX system-dependent extension |
| pattern B921600 :: BaudRate | 921600 baud, non-POSIX system-dependent extension |
| pattern B1000000 :: BaudRate | 1000000 baud, non-POSIX system-dependent extension |
| pattern B1152000 :: BaudRate | 1152000 baud, non-POSIX system-dependent extension |
| pattern B1500000 :: BaudRate | 1500000 baud, non-POSIX system-dependent extension |
| pattern B2000000 :: BaudRate | 2000000 baud, non-POSIX system-dependent extension |
| pattern B2500000 :: BaudRate | 2500000 baud, non-POSIX system-dependent extension |
| pattern B3000000 :: BaudRate | 3000000 baud, non-POSIX system-dependent extension |
| pattern B3500000 :: BaudRate | 3500000 baud, non-POSIX system-dependent extension |
| pattern B4000000 :: BaudRate | 4000000 baud, non-POSIX system-dependent extension |
Instances
| Enum BaudRate Source # | |
Defined in System.Posix.Terminal.Common | |
| Num BaudRate Source # | |
| Real BaudRate Source # | |
Defined in System.Posix.Terminal.Common Methods toRational :: BaudRate -> Rational # | |
| Show BaudRate Source # | |
| Eq BaudRate Source # | |
| Ord BaudRate Source # | |
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 #
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 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).