AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1214819
Accepted
jfacemyer
jfacemyer
Asked: 2020-03-05 08:41:20 +0800 CST2020-03-05 08:41:20 +0800 CST 2020-03-05 08:41:20 +0800 CST

自动粘贴到 GUI 文本编辑器/框中

  • 772

我正在尝试创建一个脚本,该脚本处理来自 gui 的选定文本(任意数量的应用程序,如浏览器、文本编辑器等),然后使用一个键盘命令自动将选定的文本替换为处理后的文本。

我可以让 xsel 替换剪贴板或主缓冲区,但如果可能的话,我不想用另一个键盘快捷键粘贴。

工作流程:

  • 选择文本
  • 击键命令
  • Bash 脚本处理文本
  • Bash 脚本将文本粘贴到 gui 编辑器中,替换选择(<-- 这是我想不通的)
  • 鳍

我读过 xsel 允许粘贴,但据我所知,它只允许将文本输出到 cli(不是真正的粘贴)或重定向到其他内容。这可能是我需要的,但我不明白该怎么做(即,我将输出重定向到什么以使其自动替换 gui 中的选定文本?)

谢谢!

更多信息:

  • 我正在使用 Xubuntu 19.10
  • 我只想用简单的文本替换(例如将小写更改为大写)
  • 让我们保持简单 - 我如何(使用键命令)从 bash 脚本中获取文本并将其粘贴到光标当前所在的 gui 文本编辑器/区域中,如果有的话,替换选定的文本?
gui paste automatic
  • 3 3 个回答
  • 619 Views

3 个回答

  • Voted
  1. Joe
    2020-03-13T03:46:58+08:002020-03-13T03:46:58+08:00

    虽然bash并且xdotool肯定会处理这样一个简单的案例,但这正是AutoKey旨在做的事情。

    在 AutoKey 中,您可以使用AutoKey API定义一个用 Python 编写的简单脚本来执行此操作。这可以分配给一个热键,并在按下该热键时运行。它看起来像这样(未经测试。)

    field = clipboard.get_selection()
    field = field.lower()
    clipboard.fill_selection(field)
    keyboard.send_keys("<ctrl>+v")
    

    它将所选文本转换为变量,将其转换为小写,将其放回剪贴板,然后将其粘贴回最初来自的当前选择中。(如果您的应用程序窗口是终端,那么您必须使用Ctrl++ 。Shift)v

    这样做有几个优点: 可以说它比修改键盘更容易。您可以在 AutoKey GUI 中轻松更改热键。您可以定义窗口过滤器,以便热键仅在您选择的窗口中有效。您可以随意打开和关闭此功能。而且,由于您可以使用 Python 的全部功能,因此您几乎可以做任何您能想到的事情。

    如果您只是想用一个短语替换另一个短语,那么 AutoKey 短语可以在不编写任何代码的情况下完成此操作,但由于您需要操作文本,因此需要一个脚本。

    注意:Debian 和衍生发行版(Ubuntu ...)目前提供了非常旧的 AutoKey 版本。这已在 Debian 测试中修复,并将在 Ubuntu 20.04 中修复。现在,您可以使用这些说明轻松安装该软件包。

    如需帮助,请访问我们的支持论坛。

    • 4
  2. Best Answer
    danzel
    2020-03-07T23:52:48+08:002020-03-07T23:52:48+08:00

    由于您几乎普遍使用 Xorg 和ctrl+ vist 作为粘贴的快捷方式,因此最简单的解决方案是xdotool(可从官方存储库获得):

    xdotool key --clearmodifiers "ctrl+v"
    

    该--clearmodifiers标志尝试在发出按键之前清除所有修饰符( ctrl, ...)并在之后恢复它们。alt这在您通过键盘快捷键调用脚本时很有用,因为否则应用程序还将看到您为快捷键按下的修饰符,例如ctrl++alt可能v会导致不同的命令。

    有时,当您在恢复修改器之前释放修改器时,这可能会导致竞态条件xdotool,使它们卡住。在这种情况下,只需按下并释放卡住的修饰符即可将其解开。

    xdotool可以做更多。阅读man xdotool以获得概述。它还经常与 结合使用xbindkeys,它使您可以比 gnome 更通用地配置键盘快捷键,还使您能够将操作绑定到鼠标按钮。

    • 2
  3. Little Girl
    2020-03-13T16:56:59+08:002020-03-13T16:56:59+08:00

    我同意乔的观点,即 AutoKey 非常适合您想做的事情。我想我会包含另一个示例脚本。这个使用字符串格式也将选定的文本更改为小写(你可以让它做任何你喜欢的事情,而不是改变大小写):

    selection = clipboard.get_selection()
    keyboard.send_keys("%s" % selection.lower())
    
    • 2

相关问题

  • 如何在 Ubuntu Desktop 中使用 GUI 工具安装 RPM?

  • 如何在不更改名称的情况下隐藏目录或文件?

  • 有没有办法从 GUI/桌面管理我的 Grub 菜单选项?

  • iptables 的图形用户界面?

  • 从共享 NFS /home 到完整的 LDAP 解决方案

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve