
¿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:
- ¿Por qué no puedo seleccionar/pegar en/desde otros programas?(Preguntas frecuentes sobre xterm)
- Copiar y pegar con URxvt
- El ticket n.º 3229 al pegar la línea envuelta agrega EOL(Comandante de medianoche)
- Re: Acceso a selección X en xterm (OSC 52)(emacs-desarrollo)
- Debian #384593 xterm: enableWindowOps debería estar deshabilitado de forma predeterminada