vty-5.15.1: A simple terminal UI library

Safe Haskell | Safe
Language | Haskell2010

Graphics.Vty.Input.Terminfo

Synopsis

- classifyMapForTerm :: String -> Terminal -> ClassifyMap
- universalTable :: ClassifyMap
- capsClassifyMap :: Terminal -> [(String, Event)] -> ClassifyMap
- termSpecificTables :: String -> [ClassifyMap]
- visibleChars :: ClassifyMap
- ctrlChars :: ClassifyMap
- ctrlMetaChars :: ClassifyMap
- specialSupportKeys :: ClassifyMap
- keysFromCapsTable :: ClassifyMap
- functionKeyCapsTable :: ClassifyMap

# Documentation

classifyMapForTerm :: String -> Terminal -> ClassifyMap #

Queries the terminal for all capability-based input sequences and then adds on a terminal-dependent input sequence mapping.

For reference see:

- http://vimdoc.sourceforge.net/htmldoc/term.html
- vim74srcterm.c
- http://invisible-island.net/vttest/
- http://aperiodic.net/phil/archives/Geekery/term-function-keys.html

Terminfo is incomplete. The vim source implies that terminfo is also incorrect. Vty assumes that the internal terminfo table added to the system-provided terminfo table is correct.

The procedure used here is:

1. Build terminfo table for all caps. Missing caps are not added.
2. Add tables for visible chars, esc, del, ctrl, and meta.
3. Add internally-defined table for given terminal type.

Precedence is currently implicit in the `compile` algorithm.

universalTable :: ClassifyMap #

The key table applicable to all terminals.

Note that some of these entries are probably only applicable to ANSI/VT100 terminals.

capsClassifyMap :: Terminal -> [(String, Event)] -> ClassifyMap #

termSpecificTables :: String -> [ClassifyMap] #

Tables specific to a given terminal that are not derivable from terminfo.

Note that this adds the ANSIVT100VT50 tables regardless of term identifier.

visibleChars :: ClassifyMap #

Visible characters in the ISO-8859-1 and UTF-8 common set.

We limit to < 0xC1. The UTF8 sequence detector will catch all values 0xC2 and above before this classify table is reached.

ctrlChars :: ClassifyMap #

Non-printable characters in the ISO-8859-1 and UTF-8 common set translated to ctrl + char.

This treats CTRL-i the same as tab.

ctrlMetaChars :: ClassifyMap #

Ctrl+Meta+Char

specialSupportKeys :: ClassifyMap #

Esc, meta-esc, delete, meta-delete, enter, meta-enter.

keysFromCapsTable :: ClassifyMap #

A classification table directly generated from terminfo cap strings. These are:

- ka1 - keypad up-left
- ka3 - keypad up-right
- kb2 - keypad center
- kbs - keypad backspace
- kbeg - begin
- kcbt - back tab
- kc1 - keypad left-down
- kc3 - keypad right-down
- kdch1 - delete
- kcud1 - down
- kend - end
- kent - enter
- kf0 - kf63 - function keys
- khome - KHome
- kich1 - insert
- kcub1 - left
- knp - next page (page down)
- kpp - previous page (page up)
- kcuf1 - right
- kDC - shift delete
- kEND - shift end
- kHOM - shift home
- kIC - shift insert
- kLFT - shift left
- kRIT - shift right
- kcuu1 - up

functionKeyCapsTable :: ClassifyMap #

Cap names for function keys.