Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- 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 Source
queries the terminal for all capability based input sequences 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
This is painful. Terminfo is incomplete. The vim source implies that terminfo is also incorrect. Vty assumes that the an internal terminfo table added to the system provided terminfo table is correct.
- build terminfo table for all caps. Missing caps are not added.
- add tables for visible chars, esc, del plus ctrl and meta
- add internally defined table for given terminal type.
Precedence is currently implicit in the compile
algorithm. Which is a bit odd.
todo terminfo meta is not supported. todo no 8bit
universalTable :: ClassifyMap Source
key table applicable to all terminals.
TODO: some probably only applicable to ANSI/VT100 terminals.
capsClassifyMap :: Terminal -> [(String, Event)] -> ClassifyMap Source
termSpecificTables :: String -> [ClassifyMap] Source
tables specific to a given terminal that are not derivable from terminfo.
TODO: Adds the ANSIVT100VT50 tables regardless of term identifier.
visibleChars :: ClassifyMap Source
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.
TODO: resolve
1. start at ' '. The earlier characters are all ctrlChar
ctrlChars :: ClassifyMap Source
Non visible characters in the ISO-8859-1 and UTF-8 common set translated to ctrl + char.
todo resolve CTRL-i is the same as tab
ctrlMetaChars :: ClassifyMap Source
Ctrl+Meta+Char
specialSupportKeys :: ClassifyMap Source
esc, meta esc, delete, meta delete, enter, meta enter
keysFromCapsTable :: ClassifyMap Source
classify 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 Source
cap names for function keys