在 X-window 中粘贴之前修改文本

在 X-window 中粘贴之前修改文本

当我输入Ctrl+V时,我不希望系统只是从剪贴板粘贴信息。我想用这些信息做一些事情(例如,删除或修改其中的某些内容),然后将修改后的版本粘贴到字段中。现在我试图写这样的东西:

if [ condition ]; then
    xclip -selection clipboard -o|sed "s/something/another/g"|xclip -selection clipboard -i
fi
xdotool key --window $(xdotool getactivewindow) ctrl+v #mimic Ctrl+V keystroke

它工作得很好。但问题是我无法将脚本绑定到快捷键Ctrl+ V,否则它似乎一直在循环(因为最后总是有一个Ctrl+ )。有什么方法可以解决这个问题吗?例如,像+一样执行应用程序,这样我就不需要模仿系统+组合了?VCtrlVCtrlV

答案1

你真幸运。我已经使用 Autokey 做这件事很长时间了。

首先安装 autokey 和 python-tk:

sudo apt-get install autokey-gtk python-tk

现在,启动Autokey并创建一个新的script。在脚本中写入以下代码:

from Tkinter import Tk

root = Tk()
root.withdraw()
text = root.clipboard_get() + "MODIFIED"

keyboard.send_keys(text)

现在,单击选项Set按钮Hotkey。在这里,您可以将热键设置为Ctrl+V。它运行完美。更酷的是,您还可以设置窗口过滤器,以便此行为Ctrl+V仅在特定窗口上可用;在其余窗口上它将正常运行。

相关内容