| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package ansi
- import "strconv"
- // KeyModifierOptions (XTMODKEYS) sets/resets xterm key modifier options.
- //
- // Default is 0.
- //
- // CSI > Pp m
- // CSI > Pp ; Pv m
- //
- // If Pv is omitted, the resource is reset to its initial value.
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- func KeyModifierOptions(p int, vs ...int) string {
- var pp, pv string
- if p > 0 {
- pp = strconv.Itoa(p)
- }
- if len(vs) == 0 {
- return "\x1b[>" + strconv.Itoa(p) + "m"
- }
- v := vs[0]
- if v > 0 {
- pv = strconv.Itoa(v)
- return "\x1b[>" + pp + ";" + pv + "m"
- }
- return "\x1b[>" + pp + "m"
- }
- // XTMODKEYS is an alias for [KeyModifierOptions].
- func XTMODKEYS(p int, vs ...int) string {
- return KeyModifierOptions(p, vs...)
- }
- // SetKeyModifierOptions sets xterm key modifier options.
- // This is an alias for [KeyModifierOptions].
- func SetKeyModifierOptions(pp int, pv int) string {
- return KeyModifierOptions(pp, pv)
- }
- // ResetKeyModifierOptions resets xterm key modifier options.
- // This is an alias for [KeyModifierOptions].
- func ResetKeyModifierOptions(pp int) string {
- return KeyModifierOptions(pp)
- }
- // QueryKeyModifierOptions (XTQMODKEYS) requests xterm key modifier options.
- //
- // Default is 0.
- //
- // CSI ? Pp m
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- func QueryKeyModifierOptions(pp int) string {
- var p string
- if pp > 0 {
- p = strconv.Itoa(pp)
- }
- return "\x1b[?" + p + "m"
- }
- // XTQMODKEYS is an alias for [QueryKeyModifierOptions].
- func XTQMODKEYS(pp int) string {
- return QueryKeyModifierOptions(pp)
- }
- // Modify Other Keys (modifyOtherKeys) is an xterm feature that allows the
- // terminal to modify the behavior of certain keys to send different escape
- // sequences when pressed.
- //
- // See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys
- const (
- SetModifyOtherKeys1 = "\x1b[>4;1m"
- SetModifyOtherKeys2 = "\x1b[>4;2m"
- ResetModifyOtherKeys = "\x1b[>4m"
- QueryModifyOtherKeys = "\x1b[?4m"
- )
- // ModifyOtherKeys returns a sequence that sets XTerm modifyOtherKeys mode.
- // The mode argument specifies the mode to set.
- //
- // 0: Disable modifyOtherKeys mode.
- // 1: Enable modifyOtherKeys mode 1.
- // 2: Enable modifyOtherKeys mode 2.
- //
- // CSI > 4 ; mode m
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- // See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys
- //
- // Deprecated: use [SetModifyOtherKeys1] or [SetModifyOtherKeys2] instead.
- func ModifyOtherKeys(mode int) string {
- return "\x1b[>4;" + strconv.Itoa(mode) + "m"
- }
- // DisableModifyOtherKeys disables the modifyOtherKeys mode.
- //
- // CSI > 4 ; 0 m
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- // See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys
- //
- // Deprecated: use [ResetModifyOtherKeys] instead.
- const DisableModifyOtherKeys = "\x1b[>4;0m"
- // EnableModifyOtherKeys1 enables the modifyOtherKeys mode 1.
- //
- // CSI > 4 ; 1 m
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- // See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys
- //
- // Deprecated: use [SetModifyOtherKeys1] instead.
- const EnableModifyOtherKeys1 = "\x1b[>4;1m"
- // EnableModifyOtherKeys2 enables the modifyOtherKeys mode 2.
- //
- // CSI > 4 ; 2 m
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- // See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys
- //
- // Deprecated: use [SetModifyOtherKeys2] instead.
- const EnableModifyOtherKeys2 = "\x1b[>4;2m"
- // RequestModifyOtherKeys requests the modifyOtherKeys mode.
- //
- // CSI ? 4 m
- //
- // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_
- // See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys
- //
- // Deprecated: use [QueryModifyOtherKeys] instead.
- const RequestModifyOtherKeys = "\x1b[?4m"
|