forked from toolshed/abra
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package ansi
 | |
| 
 | |
| import "encoding/base64"
 | |
| 
 | |
| // Clipboard names.
 | |
| const (
 | |
| 	SystemClipboard  = 'c'
 | |
| 	PrimaryClipboard = 'p'
 | |
| )
 | |
| 
 | |
| // SetClipboard returns a sequence for manipulating the clipboard.
 | |
| //
 | |
| //	OSC 52 ; Pc ; Pd ST
 | |
| //	OSC 52 ; Pc ; Pd BEL
 | |
| //
 | |
| // Where Pc is the clipboard name and Pd is the base64 encoded data.
 | |
| // Empty data or invalid base64 data will reset the clipboard.
 | |
| //
 | |
| // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
 | |
| func SetClipboard(c byte, d string) string {
 | |
| 	if d != "" {
 | |
| 		d = base64.StdEncoding.EncodeToString([]byte(d))
 | |
| 	}
 | |
| 	return "\x1b]52;" + string(c) + ";" + d + "\x07"
 | |
| }
 | |
| 
 | |
| // SetSystemClipboard returns a sequence for setting the system clipboard.
 | |
| //
 | |
| // This is equivalent to SetClipboard(SystemClipboard, d).
 | |
| func SetSystemClipboard(d string) string {
 | |
| 	return SetClipboard(SystemClipboard, d)
 | |
| }
 | |
| 
 | |
| // SetPrimaryClipboard returns a sequence for setting the primary clipboard.
 | |
| //
 | |
| // This is equivalent to SetClipboard(PrimaryClipboard, d).
 | |
| func SetPrimaryClipboard(d string) string {
 | |
| 	return SetClipboard(PrimaryClipboard, d)
 | |
| }
 | |
| 
 | |
| // ResetClipboard returns a sequence for resetting the clipboard.
 | |
| //
 | |
| // This is equivalent to SetClipboard(c, "").
 | |
| //
 | |
| // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
 | |
| func ResetClipboard(c byte) string {
 | |
| 	return SetClipboard(c, "")
 | |
| }
 | |
| 
 | |
| // ResetSystemClipboard is a sequence for resetting the system clipboard.
 | |
| //
 | |
| // This is equivalent to ResetClipboard(SystemClipboard).
 | |
| const ResetSystemClipboard = "\x1b]52;c;\x07"
 | |
| 
 | |
| // ResetPrimaryClipboard is a sequence for resetting the primary clipboard.
 | |
| //
 | |
| // This is equivalent to ResetClipboard(PrimaryClipboard).
 | |
| const ResetPrimaryClipboard = "\x1b]52;p;\x07"
 | |
| 
 | |
| // RequestClipboard returns a sequence for requesting the clipboard.
 | |
| //
 | |
| // See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
 | |
| func RequestClipboard(c byte) string {
 | |
| 	return "\x1b]52;" + string(c) + ";?\x07"
 | |
| }
 | |
| 
 | |
| // RequestSystemClipboard is a sequence for requesting the system clipboard.
 | |
| //
 | |
| // This is equivalent to RequestClipboard(SystemClipboard).
 | |
| const RequestSystemClipboard = "\x1b]52;c;?\x07"
 | |
| 
 | |
| // RequestPrimaryClipboard is a sequence for requesting the primary clipboard.
 | |
| //
 | |
| // This is equivalent to RequestClipboard(PrimaryClipboard).
 | |
| const RequestPrimaryClipboard = "\x1b]52;p;?\x07"
 |