Como usar Ctrl-Insert para copiar do XTerm?

3

Em aplicações como o Firefox Ctrl - Inserir e Shift - Inserir funcionam como Ctrl - c e Ctrl - v (modificando a área de transferência secundária ), mas no XTerm eles fazem não funcionam como o comum Ctrl - Shift - c e Ctrl - Deslocamento - v :

  1. Ctrl - Inserir não altera as pranchetas e, em vez disso, imprime literalmente ;5~ no prompt atual.
  2. Shift - Inserir cola a área de transferência primária em vez da secundária.

Posso corrigir isso em .inputrc ou de outra forma? Seria bom ter atalhos para copiar e colar em várias plataformas em qualquer lugar. p>     

por l0b0 05.09.2015 / 13:16

2 respostas

7
O xterm, cujas convenções foram estabelecidas muitos anos antes do Firefox, e até mesmo da web, foi inventado, é controlado por recursos de aplicativos . Estes são mesclados de vários lugares, incluindo arquivos como /usr/share/X11/app-defaults/XTerm , e também informações mantidas pelo servidor X11 visto com xrdb -q . Você pode sobrescrever esses recursos colocando, por exemplo, coisas como as seguintes no arquivo ~/.Xdefaults :

XTerm*VT100.Translations:       #override\n\
 Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\
 Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n

Isto liga ctrl-shift-v para inserir o conteúdo da área de transferência. Não estou claro exatamente o que você queria, então verifique a página do manual para as funções e as seleções PRIMARY, SECONDARY e CUT_BUFFER0.

Você pode adicionar (não esqueça da barra invertida nas linhas anteriores):

Shift <Key>Insert: insert-selection(SECONDARY)\n\
Ctrl  <Key>Insert: copy-selection(SECONDARY)\n
    
por 05.09.2015 / 14:30
2

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:

por 05.07.2016 / 03:06