¿Acceder al texto resaltado desde el script?

¿Acceder al texto resaltado desde el script?

¿Es posible acceder al texto resaltado mediante un script de Shell?

Quiero crear un método abreviado de teclado para usar 'hablar' para leer el texto resaltado.

Respuesta1

Sí, esto es relativamente fácil, hay muchas herramientas para la manipulación del portapapeles, las he usado para completar el registro del dispositivo Apple y la verificación del correo electrónico junto con xdotool... mucho más fácil que completar el formulario 1000 veces...

Entonces, configura un atajo para que sea/home/bob/bin/speak.sh

speak.sh:

#!/bin/bash

xclip -o | xclip -selection clipboard -i
xclip -o | espeak

Respuesta2

breve: normalmente no puedes hacer esto (a menos que la selección se haya copiado al portapapeles)

long: hay algunos casos especiales, por ejemplo, xterm tiene una característica que (normalmente está deshabilitada) permite que una aplicación lea el texto seleccionado mediante una secuencia de escape. Eso se describe enSecuencias de control 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.

Es decir, si elpermitirWindowOpsrecurso está habilitado, una aplicación podría hacer algo como

printf '\033]52;s;?\007'

y lea los datos de selección como una cadena base64. Pero ese es un caso especial.

Por supuesto, algunas aplicaciones se copian en el portapapeles (consulte las preguntas frecuentes), pero no todas. Por ejemplo, rxvt, etc., utilice la selección principal. No existe una solución que funcione en todas partes.

Otras lecturas:

información relacionada