Isso é semelhante a Como posso copiar texto do xterm (Awesome, Debian, VirtualBox)? , incluindo parte da resposta sugerida.
No entanto: como plano de fundo, xterm
recebe eventos X (que você pode ver usando xev
) e os manipula de maneiras diferentes:
- para controlar inserir , o xterm vê os eventos para as chaves de controle e inserção, e constrói uma seqüência de caracteres para enviar para sua aplicação, por exemplo,
^[[28;5~
-
shift insert é tratado de maneira diferente porque é parte do padrão
translations
recurso para o xterm. Esse é um recurso da biblioteca do X Toolkit que vem antes que o xterm possa ver os eventos. No recurso translations
, esta é a linha:
Shift Insert:insert-selection(SELECT, CUT_BUFFER0) \n\
A palavra-chave SELECT
neste recurso é interpretada pelo xterm como PRIMARY ou CLIPBOARD, dependendo do recurso selectToClipboard
(ou do menu Select to Clipboard entrada). By the way, CLIPBOARD não é a seleção secundária. Veja 2.6.1.2. A seleção SECUNDÁRIA no ICCM para uma descrição da seleção secundária.
Você pode ativar o recurso selectToClipboard
adicionando este para o seu arquivo $HOME/.Xdefaults
(ou outro arquivo de recurso, mesmo usando xrdb
):
xterm*selectToClipboard: true
Você também pode adicionar traduções usando control
e shift
modificadores (em qualquer ordem) e a tecla insert
. Adaptar minha resposta na outra questão:
xterm*VT100.Translations: #override \
Shift <Key>Insert: insert-selection(SELECT) \n\
Ctrl <Key>Insert: insert-selection(SELECT) \n\
Ctrl Shift <Key>V: insert-selection(SELECT) \n\
Ctrl Shift <Key>C: copy-selection(SELECT)
O analisador de traduções no X Toolkit reconhece uma variedade de grafias para as palavras-chave. Assim, Key
é o mesmo que KeyPress
e KeyDown
. Mas Ctrl
é a única maneira conhecida pela tecla control .
Enquanto você poderia adicionar controle C e controle V , isto é geralmente não é recomendado porque essas teclas de controle são úteis (por padrão) no seu terminal:
$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Leitura adicional: