| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- package ansi
- import (
- "strconv"
- "strings"
- )
- // RequestNameVersion (XTVERSION) is a control sequence that requests the
- // terminal's name and version. It responds with a DSR sequence identifying the
- // terminal.
- //
- // CSI > 0 q
- // DCS > | text ST
- //
- // See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-PC-Style-Function-Keys
- const (
- RequestNameVersion = "\x1b[>q"
- XTVERSION = RequestNameVersion
- )
- // RequestXTVersion is a control sequence that requests the terminal's XTVERSION. It responds with a DSR sequence identifying the version.
- //
- // CSI > Ps q
- // DCS > | text ST
- //
- // See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-PC-Style-Function-Keys
- //
- // Deprecated: use [RequestNameVersion] instead.
- const RequestXTVersion = RequestNameVersion
- // PrimaryDeviceAttributes (DA1) is a control sequence that reports the
- // terminal's primary device attributes.
- //
- // CSI c
- // CSI 0 c
- // CSI ? Ps ; ... c
- //
- // If no attributes are given, or if the attribute is 0, this function returns
- // the request sequence. Otherwise, it returns the response sequence.
- //
- // See https://vt100.net/docs/vt510-rm/DA1.html
- func PrimaryDeviceAttributes(attrs ...int) string {
- if len(attrs) == 0 {
- return RequestPrimaryDeviceAttributes
- } else if len(attrs) == 1 && attrs[0] == 0 {
- return "\x1b[0c"
- }
- as := make([]string, len(attrs))
- for i, a := range attrs {
- as[i] = strconv.Itoa(a)
- }
- return "\x1b[?" + strings.Join(as, ";") + "c"
- }
- // DA1 is an alias for [PrimaryDeviceAttributes].
- func DA1(attrs ...int) string {
- return PrimaryDeviceAttributes(attrs...)
- }
- // RequestPrimaryDeviceAttributes is a control sequence that requests the
- // terminal's primary device attributes (DA1).
- //
- // CSI c
- //
- // See https://vt100.net/docs/vt510-rm/DA1.html
- const RequestPrimaryDeviceAttributes = "\x1b[c"
- // SecondaryDeviceAttributes (DA2) is a control sequence that reports the
- // terminal's secondary device attributes.
- //
- // CSI > c
- // CSI > 0 c
- // CSI > Ps ; ... c
- //
- // See https://vt100.net/docs/vt510-rm/DA2.html
- func SecondaryDeviceAttributes(attrs ...int) string {
- if len(attrs) == 0 {
- return RequestSecondaryDeviceAttributes
- }
- as := make([]string, len(attrs))
- for i, a := range attrs {
- as[i] = strconv.Itoa(a)
- }
- return "\x1b[>" + strings.Join(as, ";") + "c"
- }
- // DA2 is an alias for [SecondaryDeviceAttributes].
- func DA2(attrs ...int) string {
- return SecondaryDeviceAttributes(attrs...)
- }
- // RequestSecondaryDeviceAttributes is a control sequence that requests the
- // terminal's secondary device attributes (DA2).
- //
- // CSI > c
- //
- // See https://vt100.net/docs/vt510-rm/DA2.html
- const RequestSecondaryDeviceAttributes = "\x1b[>c"
- // TertiaryDeviceAttributes (DA3) is a control sequence that reports the
- // terminal's tertiary device attributes.
- //
- // CSI = c
- // CSI = 0 c
- // DCS ! | Text ST
- //
- // Where Text is the unit ID for the terminal.
- //
- // If no unit ID is given, or if the unit ID is 0, this function returns the
- // request sequence. Otherwise, it returns the response sequence.
- //
- // See https://vt100.net/docs/vt510-rm/DA3.html
- func TertiaryDeviceAttributes(unitID string) string {
- switch unitID {
- case "":
- return RequestTertiaryDeviceAttributes
- case "0":
- return "\x1b[=0c"
- }
- return "\x1bP!|" + unitID + "\x1b\\"
- }
- // DA3 is an alias for [TertiaryDeviceAttributes].
- func DA3(unitID string) string {
- return TertiaryDeviceAttributes(unitID)
- }
- // RequestTertiaryDeviceAttributes is a control sequence that requests the
- // terminal's tertiary device attributes (DA3).
- //
- // CSI = c
- //
- // See https://vt100.net/docs/vt510-rm/DA3.html
- const RequestTertiaryDeviceAttributes = "\x1b[=c"
|