it-swarm.cn

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

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

我想选择一些文本并转到另一个应用程序以粘贴破坏剪贴板内容。我宁愿将手指放在键盘上,也不愿移至鼠标,找到指针,将其放置在所需位置并单击鼠标中键。

如果没有常规的方法,或者它是特定于应用程序且不受许多人支持的,是否有解决方法可以使它在全球范围内工作? (或者至少在更多应用程序中。)

40
Roger Pate

发送虚拟按键对我不起作用(请参阅 comments ),但是该答案启发了我寻找类似的解决方案。使用xvkbd发送“文本”事件将忽略物理键盘的当前状态:

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

xvkbd -text使用一些反斜杠序列,所以-file有效。 xvkbd还会输出一些有关修饰符的警告文本,但似乎与这种用法无关(但我不想在~/.xsession-errors)。

我使用System> Preferences> Keyboard Shortcuts将其绑定到快捷方式。

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

Sudo apt-get install xsel xvkbd
32
Roger Pate

您可以结合使用程序 xdotool单击安装 )和 xsel单击安装 =)。

xdotool可以模拟在窗口中键入内容; xsel输出PRIMARY选择的内容(默认);以下壳牌一号班轮将达到目的:

 xdotool type `xsel`

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

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

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

7
Riccardo Murri

我一直在寻找这个问题的答案,但我发现 这个答案 表示 Shift+Insert 正在粘贴主要选择。我为我工作。更简单.

6
Anne

另一个xdotool建议在Debian Jessie 8.7(2017年1月)中运行:

xdotool click --delay 0 --clearmodifiers 2
  • 与xvkbd不同,xdotool处理多字节字符串(例如UTF-8)。
  • xdotool click模拟实际点击,因此您不必单击自己即可粘贴到鼠标位置,就像使用xdotool type或xvkbd。

唯一的问题是--clearmodifiers将在模拟点击后“按下”您使用的所有修饰符(Ctrl/Alt/Shift/Meta)。即使 --delay 0(而不是12ms)执行该命令。如果在结束之前释放键,则修饰符将再次被“按下”,并停留在那里,直到您再次按下并释放实际键为止。

因此,如果使用任何修改器,则必须有点“慢”(50毫秒?)来释放修改器。

您可以通过设置键盘快捷键,将其用于文本编辑器,然后按一个键(例如a或箭头)来测试此功能。该字母应小写。如果发生其他情况,则表示您的速度太快,并且修饰符卡住了(例如,如果按住大写字母,则按Shift键;如果选择了所有文本,则按Ctrl键;如果打开菜单,则按Alt键)。再次按下并释放您的修改器以将其重置。

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

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

然后,您必须在小于的300毫秒内释放它们,并等待半秒钟以使文本出现。

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

(发布此帖子是为了使新来者不必重新拼凑在评论中散布的拼图)

2
Chema

呼叫xdotool click --clearmodifiers 2模拟单击鼠标中键。这比使用xsel更好(至少对我而言)。在键入之前,您必须完全定位鼠标。

2
Robert Jakob

我在模拟粘贴PRIMARY选择的解决方案中遇到了问题,因此我添加了一个快捷方式,即PRIMARY选择复制CLIPBOARD。使用快捷方式后,根据应用程序,以常用方式粘贴CLIPBOARDCtrl+VCtrl+Shift+VShift+Insert

PRIMARY选择复制到CLIPBOARD的命令是

sh -c 'xsel --output --primary | xsel --input --cliboard'

我在Ctrl+Insert下的Gnome快捷方式设置中将其绑定到System Settings -> Devices -> Keyboard(任意选择)

其他解决方案的问题摘要:我尝试了xsel | xvkbd ...xsel | xdotool ...解决方案,但是发现它们不能很好地工作,因为它们模拟键入PRIMARY选择字符,这与粘贴不同中间点击。问题包括:大选择一次插入一个字符会产生较长的延迟;如果要撤消“粘贴”,则必须逐字符撤消,这很慢;如果您使用的是“死键”,那么一切都会变得混乱,例如“粘贴” "e产生ë; xvkdb无法正确处理Unicode字符。

警告:此解决方案将覆盖现有的CLIPBOARD内容,但是OP要求保留现有CLIPBOARD内容的解决方案。

1
ntc2

我遇到了同样的问题,互联网搜索并没有太大帮助。如OP所述,模拟点击2的问题很烦人。

上面建议的xdotool和xsel的问题是,当xdotool开始“键入”时,您仍在按另一个键。并非总是输出任何结果。例如,如果将其绑定到“插入”键,则xdotool正在发送键,而手指按下“插入”键则不会产生任何结果。

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

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

它不是完美的,但可以工作。现在您有0.3秒的时间来完成对按键(和向上键)的选择。

0
ilkerk