Получить доступ к выделенному тексту из скрипта?

Получить доступ к выделенному тексту из скрипта?

Можно ли получить доступ к выделенному тексту с помощью скрипта оболочки?

Я хочу создать сочетание клавиш для использования «espeak» для чтения выделенного текста.

решение1

Да, это относительно просто, существует множество инструментов для работы с буфером обмена, я использовал их для заполнения регистрационных форм устройств Apple и проверки адреса электронной почты, а также xdotool… гораздо проще, чем заполнять формы 1000 раз…

Итак, настройте ярлык, чтобы он был/home/bob/bin/speak.sh

speak.sh:

#!/bin/bash

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

решение2

кратко: обычно вы не можете этого сделать (если только выделенный фрагмент не был скопирован в буфер обмена)

long: есть несколько особых случаев, например, xterm имеет функцию, которая (обычно отключена) позволяет приложению читать выделенный текст через escape-последовательность. Это описано вПоследовательности управления 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.

То есть, еслиallowWindowOpsресурс включен, приложение может сделать что-то вроде

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

и прочитать данные выбора как строку base64. Но это особый случай.

Некоторые приложения, конечно, копируют в буфер обмена (см. FAQ), но не все. Например, rxvt и т. д. используют первичный выбор. Решения, которое бы работало везде, не существует.

Дальнейшее чтение:

Связанный контент