forked from toolshed/abra
		
	We were running behind and there were quite some deprecations to update. This was mostly in the upstream copy/pasta package but seems quite minimal.
		
			
				
	
	
		
			139 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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"
 |