使用键盘快捷键粘贴文本

使用键盘快捷键粘贴文本

很多网站只允许使用电子邮件地址和密码登录,我厌倦了输入长长的电子邮件地址。我不想让浏览器记住我的电子邮件。我可以指定一个键盘快捷键来打印此电子邮件地址,以便每次按下该键时,我都会在当前文本字段中获取我的电子邮件地址吗?

我正在使用 Ubuntu 14.04,我对 Ubuntu 了解甚少。我说的不是代码片段。只是按下键时要粘贴的定义文本。

答案1

粘贴单弦进入文本框

  1. 安装xdotoolxclip

    sudo apt-get install xdotool xclip
    
  2. 将以下命令添加到快捷键:

    /bin/bash -c "sleep 0.5 && printf '[email protected]' | xclip -selection clipboard && xdotool key Control_L+v"
    

    选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”,将上述命令添加到您选择的组合键中。

现在,当在文本字段中输入光标并选择快捷方式时,它将输入您的电子邮件地址。

答案2

在 Ubuntu 20.04 上测试。类似于Jacob 的解决方案hello ♥。在这里,我们将使用鼠标中键单击剪贴板来粘贴文本。

我们不会将文本粘贴到“| 光标”处,因为使用Ctrl+V而是直接位于鼠标光标下方,就像使用鼠标中键单击一样。您可以将其替换xselxclip

  1. 安装xdotoolxsel
sudo apt install xdotool xsel
  1. 将以下命令添加到快捷键:
/bin/bash -c 'echo -n "hello ♥" | xsel && xdotool click 2'

笔记:我们使用鼠标中键的剪贴板,因此当使用自定义快捷方式时,它会与当前选择一起被删除。

答案3

由于我找到的所有建议都无法实现我想要的效果,因此我不得不自己研究这个问题。下面发布我的一行代码,以防有人想实现类似的效果。在 Ubuntu 20.04.1 上测试。

我需要什么?

当我按下设置的热键时,一行代码就会将我的签名粘贴到网站上(我知道这听起来很愚蠢,但令我惊讶的是,仍然没有合适的方法通过 Google Chrome 实现这一点)。

@zatiranyk 的一句话有什么问题?

虽然从技术上讲它确实实现了我的愿望,但我仍然不明白为什么单击设置的热键时不会粘贴文本。

先决条件

工具響鳴仍然是必需的。您可以像这样安装它们:

sudo apt install xdotool xsel

我的版本

bash -c 'echo -e "SIGNATURE" | xsel -b && seq 2 | xargs -I -- xdotool key ctrl+shift+v'

如果您将其绑定到 super+v,则每次按 super+v 时它都会粘贴设置的文本(“SIGNATURE”)。

以下是其各部分的简要分解:

  1. echo -e“签名”-- 我在这里使用 -e 和 echo,因为我的签名中有几个 \n
  2. xsel-b-- 这基本上告诉 shell 复制输入(echo -e“签名”)到剪贴板
  3. 序号 2—— 它的存在是为了运行后面的东西(xargs -I -- xdotool 键 ctrl+shift+v)两次*(见观察结果
  4. xdotool 键 ctrl+shift+v--工具模拟键盘输入,在本例中是Ctrl+Shift+V,这是从剪贴板粘贴内容的默认热键

换句话说,这一行代码的作用是:

  1. 将签名复制到剪贴板
  2. 压力Ctrl+Shift+V2次粘贴剪贴板内容

观察结果

  • 为什么xdotool 键 ctrl+shift+v执行两次?与@zatiranyk 的一行代码类似,按Ctrl+Shift+V由于某种原因,一次没有奏效

  • 无论出于什么原因,使用主要选择而不是剪贴板的类似单行代码 10 次中有 3-4 次有效:

      bash -c 'echo -e "SIGNATURE" | xsel && seq 2 | xargs -I -- xdotool click 2'
    
  • 稍微有点 unga bunga 版本的单行代码也将非常有效:

      bash -c 'echo -e "SIGNATURE" | xsel -b && xdotool key ctrl+shift+v && xdotool key ctrl+shift+v'
    

答案4

另一种方法xdotool key Control_L+v是:

$ echo "TEST String" | xclip -in -selection clipboard
$ xdotool type --delay 0 -- "$(xclip -out -selection clipboard)"

相关内容