| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package input
- import (
- "bytes"
- "encoding/hex"
- )
- // TermcapEvent represents a Termcap response event. Termcap responses are
- // generated by the terminal in response to RequestTermcap (XTGETTCAP)
- // requests.
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
- type TermcapEvent struct {
- Values map[string]string
- IsValid bool
- }
- func parseTermcap(data []byte) TermcapEvent {
- // XTGETTCAP
- if len(data) == 0 {
- return TermcapEvent{}
- }
- tc := TermcapEvent{Values: make(map[string]string)}
- split := bytes.Split(data, []byte{';'})
- for _, s := range split {
- parts := bytes.SplitN(s, []byte{'='}, 2)
- if len(parts) == 0 {
- return TermcapEvent{}
- }
- name, err := hex.DecodeString(string(parts[0]))
- if err != nil || len(name) == 0 {
- continue
- }
- var value []byte
- if len(parts) > 1 {
- value, err = hex.DecodeString(string(parts[1]))
- if err != nil {
- continue
- }
- }
- tc.Values[string(name)] = string(value)
- }
- return tc
- }
|