Acessar texto destacado do script?

1

É possível acessar o texto destacado através de um script de shell?

Eu quero criar um atalho de teclado para usar 'espeak' para ler o texto destacado.

    
por Philip Kirkbride 25.10.2016 / 02:38

2 respostas

2

Sim, isso é relativamente fácil, há muitas ferramentas para manipulação da área de transferência, eu as usei para preencher o registro do dispositivo Apple e verificação de e-mail juntamente com xdotool … muito mais fácil do que preencher o formulário 1000 vezes…

Então, configure um atalho para ser /home/bob/bin/speak.sh

speak.sh :

#!/bin/bash

xclip -o | xclip -selection clipboard -i
xclip -o | espeak
    
por 25.10.2016 / 02:54
1

curto: geralmente você não pode fazer isso (a menos que a seleção tenha sido copiada para a área de transferência)

longo: existem alguns casos especiais, por exemplo, o xterm tem um recurso que (normalmente desativado) permite que um aplicativo leia o texto selecionado por meio de uma seqüência de escape. Isso é descrito em Sequências de controle do XTerm :

        Ps = 5 2  -> Manipulate Selection Data.  These controls may
      be disabled using the allowWindowOps resource.  The parameter
      Pt is parsed as
           Pc; Pd
      The first, Pc, may contain zero or more characters from the
      set c  p  s  0  1  2  3  4  5  6  7 .  It is used to construct
      a list of selection parameters for clipboard, primary, select,
      or cut buffers 0 through 7 respectively, in the order given.
      If the parameter is empty, xterm uses s 0 , to specify the
      configurable primary/clipboard selection and cut buffer 0.
      The second parameter, Pd, gives the selection data.  Normally
      this is a string encoded in base64.  The data becomes the new
      selection, which is then available for pasting by other appli-
      cations.
      If the second parameter is a ? , xterm replies to the host
      with the selection data encoded using the same protocol.
      If the second parameter is neither a base64 string nor ? ,
      then the selection is cleared.

Ou seja, se o recurso allowWindowOps estiver ativado, uma aplicação poderia fazer algo parecido com

printf '3]52;s;?
        Ps = 5 2  -> Manipulate Selection Data.  These controls may
      be disabled using the allowWindowOps resource.  The parameter
      Pt is parsed as
           Pc; Pd
      The first, Pc, may contain zero or more characters from the
      set c  p  s  0  1  2  3  4  5  6  7 .  It is used to construct
      a list of selection parameters for clipboard, primary, select,
      or cut buffers 0 through 7 respectively, in the order given.
      If the parameter is empty, xterm uses s 0 , to specify the
      configurable primary/clipboard selection and cut buffer 0.
      The second parameter, Pd, gives the selection data.  Normally
      this is a string encoded in base64.  The data becomes the new
      selection, which is then available for pasting by other appli-
      cations.
      If the second parameter is a ? , xterm replies to the host
      with the selection data encoded using the same protocol.
      If the second parameter is neither a base64 string nor ? ,
      then the selection is cleared.
7'

e leia os dados de seleção como uma string base64. Mas esse é um caso especial.

Algumas aplicações do curso copiam para a área de transferência (veja FAQ), mas não todas. Por exemplo, rxvt, etc., use a seleção principal. Não há solução que funcione em todos os lugares.

Leitura adicional:

por 25.10.2016 / 02:59