package input import ( "bytes" "encoding/hex" "strings" ) // CapabilityEvent represents a Termcap/Terminfo 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 CapabilityEvent string func parseTermcap(data []byte) CapabilityEvent { // XTGETTCAP if len(data) == 0 { return CapabilityEvent("") } var tc strings.Builder split := bytes.Split(data, []byte{';'}) for _, s := range split { parts := bytes.SplitN(s, []byte{'='}, 2) if len(parts) == 0 { return CapabilityEvent("") } 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 } } if tc.Len() > 0 { tc.WriteByte(';') } tc.WriteString(string(name)) if len(value) > 0 { tc.WriteByte('=') tc.WriteString(string(value)) } } return CapabilityEvent(tc.String()) }