是否可以通过 shell 脚本访问突出显示的文本?
我想创建一个键盘快捷键来使用“espeak”来阅读突出显示的文本。
答案1
是的,这相对容易,有很多用于剪贴板操作的工具,我用它们来填写苹果设备注册和电子邮件验证以及xdotool
......比填写 1000 次表格容易得多......
因此,设置一个快捷方式是/home/bob/bin/speak.sh
speak.sh
:
#!/bin/bash
xclip -o | xclip -selection clipboard -i
xclip -o | espeak
答案2
简短:通常您不能执行此操作(除非将选择内容复制到剪贴板)
long:有一些特殊情况,例如,xterm 有一个功能(通常被禁用)允许应用程序通过转义序列读取所选文本。这是在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.
也就是说,如果允许窗口操作资源已启用,应用程序可以执行类似的操作
printf '\033]52;s;?\007'
并将选择数据读取为 base64 字符串。但这是一个特殊情况。
当然,某些应用程序会复制到剪贴板(请参阅常见问题解答),但并非全部。例如rxvt等,使用首选。没有一种解决方案在任何地方都适用。
进一步阅读:
- 为什么我无法从其他程序中选择/粘贴?(xterm 常见问题解答)
- 使用 URxvt 复制和粘贴
- 票号 #3229 粘贴换行会增加 EOL(午夜指挥官)
- 回复:xterm 中的 X 选择访问(OSC 52)(emacs-开发)
- Debian #384593 xterm:默认情况下应禁用allowWindowOps