用于粘贴主要选择的键盘快捷键

是否有用于粘贴主要选择的标准或常规键盘快捷键?

我想选择一些文本并转到另一个应用程序进行粘贴, 而不会丢弃我的剪贴板内容。 我宁愿将手指放在键盘上,也不要移动鼠标,找到指针,将其放在我想要的位置,然后单击鼠标中键。

如果没有任何传统的,或者它是特定于应用程序并且不受许多人支持,是否有一种解决方法可以使其在全球范围内运行? (或者至少在更多应用程序中。)

发送虚拟按键对我来说不起作用(见评论 ),但这个答案激发了我寻找类似的解决方案。 使用xvkbd发送“text”事件xvkbd忽略物理键盘的当前状态:

 sh -c 'xsel | xvkbd -xsendevent -file - 2>/dev/null' 

xvkbd -text使用一些反斜杠序列,所以不是xvkbd -text转义, -file工作。 xvkbd还会输出一些关于修饰符的警告文本,但它似乎与此用法无关(但我不想在~/.xsession-errors看到它)。

我使用系统>首选项>键盘快捷键将其绑定到快捷方式

请注意,您需要安装xsel和xvkbd软件包:

 sudo apt-get install xsel xvkbd 

您可以通过组合使用程序xdotool ( 单击以安装 )和xsel ( 单击以安装 )来实现此目的。

xdotool可以模拟在窗口中输入; xsel输出PRIMARY选择的内容(默认情况下); 以下shell一个内衬将起到作用:

  xdotool type `xsel` 

要使用System-> Preferences-> Keyboard快捷键菜单项将其绑定到任何键,必须将其包装在shell调用中:

  sh -c 'xdotool type --clearmodifiers -- "`xsel`"' 

输入xdotool不适用于某些程序; 请参阅xdotool文档中的注释 。

我正在寻找这个问题的答案 ,我发现这个答案说Shift + Insert正在粘贴主要选择。 我为我工作。 简单。

调用xdotool click --clearmodifiers 2模拟单击鼠标中键。 这比使用xsel(至少对我而言)好得多。 在打字之前你必须先放置鼠标……

另一个xdotool建议,在Debian Jessie 8.7(2017年1月)中工作:

 xdotool click --delay 0 --clearmodifiers 2 
  • 与xvkbd不同,xdotool处理多字节字符串(pe UTF-8)。
  • xdotool click模拟实际单击,因此您不必像在xdotool type或xvkbd中那样单击自己粘贴鼠标位置。

唯一的问题是--clearmodifiers将“按下”模拟点击后使用的任何修饰符(Ctrl / Alt / Shift / Meta)。 即使使用--delay 0 (而不是12ms),该命令也需要执行一些操作。 如果您在键结束前松开键,您的修改器将再次“按下”,然后卡在那里直到您再次按下并释放实际键。

因此,如果你使用任何修饰符,你必须有点“慢”(50ms?)才能释放修饰符。

您可以通过设置键盘快捷键,将其用于文本编辑器,然后按键(如箭头或箭头)来测试。 这封信应该以小写字母显示。 如果发生了其他事情,那么你太快了,修改器就会卡住(如果它是大写的话,则为Shift;如果选择了所有文本,则为Ctrl,如果打开菜单则为Alt)。 再次按下并释放修改器以重置它们。

如果你太快,你可以使用ilkerk的建议:

 sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0 "`xsel`"' 

然后你必须在不到 300毫秒的时间内释放它们,并等待半秒钟才能显示文本。

此外,使用xdotool type意味着您可以在文本光标位置插入文本,就像键入文本光标位置一样,而不是鼠标指针。 如果您更喜欢通常的中键单击行为,可以将其更改为click

(发表这篇文章让新人不必再将评论片拼凑在评论中)

我有同样的问题,互联网搜索对我没什么帮助。 模拟点击2的问题很烦人,正如OP所提到的那样。

上面提出的xdotool和xsel的问题是当xdotool开始“打字”时你还在按另一个键。 这并不总是导致任何输出。 例如,如果将其绑定到“插入”键,则xdotool在您的手指按下“插入”键时发送键,这不会导致任何操作。

以下是一种解决方法,将其绑定到按键:

 sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0 "`xsel`"' 

它并不完美但有效。 现在你有0.3秒的时间来完成按键选择(并按键)。