Commit 008c27c
committed
Support additional OSC 52 clipboard types
The OSC 52 escape sequence supports specifying which X selection
buffer place to the selection into. The protocol format is:
\033]52;C;D\007
The C parameter determines the selection buffer. It consists of zero
or more of the following characters:
c: CLIPBOARD
p: PRIMARY
q: SECONDARY
s: XTerm-selected (based on XTerm.vt100.selectToClipboard)
0-7: Numbered cut buffer
The default if left blank is 's0', representing the configurable
primary/clipboard selection and cut buffer 0. [1]
D is the base64 encoded text to place in the selection buffer.
This patch modifies the transferred clipboard data to include both the
selection parameter and the base64 text. I.e. previously the
transferred clipboard data only contained 'D', and now it contains
'C;D'.
To test this functionality:
1. Open XTerm
2. Ctrl-Right Click and select 'Allow Window Ops'
3. Connect to a server w/ mosh
4. Run the following in the remote connection:
$ printf "\033]52;c;$(echo test1234 | base64)\007"
$ printf "\033]52;p;$(echo test2345 | base64)\007"
$ printf "\033]52;q;$(echo test3456 | base64)\007"
6. Open another terminal on the local machine and run:
$ xclip -o -selection clipboard
test1234
$ xclip -o -selection primary
test2345
$ xclip -o -selection secondary
test3456
7. You can also try:
$ printf "\033]52;;$(echo testdefault | base64)\007"
(This should update either the clipboard or primary selection
based on the Xterm settings)
8. To test the cut buffers you can use the same
procedure, substituting the cut buffer number in C, and then use
'xcutsel' to transfer the data from the cut buffer to the PRIMARY
selection, where it can then be viewed with 'xclip'.
Note, I observed that XTerm does not currently (as of XTerm patch 358)
support specifying more than one value in C. The specification does
support it, and this appears to just be a simple bug in XTerm (a patch
has been submitted to the maintainer to fix it).
[1] https://github.com/ThomasDickey/xterm-snapshots/blob/master/ctlseqs.txt1 parent 03087e7 commit 008c27c
2 files changed
+8
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
591 | 591 | | |
592 | 592 | | |
593 | 593 | | |
594 | | - | |
| 594 | + | |
595 | 595 | | |
596 | | - | |
597 | | - | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
598 | 601 | | |
599 | | - | |
| 602 | + | |
600 | 603 | | |
601 | 604 | | |
602 | 605 | | |
| |||
0 commit comments