是否有用于粘贴主要选择的标准或常规键盘快捷键?
我想选择一些文本并转到另一个应用程序以粘贴无破坏剪贴板内容。我宁愿将手指放在键盘上,也不愿移至鼠标,找到指针,将其放置在所需位置并单击鼠标中键。
如果没有常规的方法,或者它是特定于应用程序且不受许多人支持的,是否有解决方法可以使它在全球范围内工作? (或者至少在更多应用程序中。)
发送虚拟按键对我不起作用(请参阅 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
我一直在寻找这个问题的答案,但我发现 这个答案 表示 Shift+Insert 正在粘贴主要选择。我为我工作。更简单.
另一个xdotool建议在Debian Jessie 8.7(2017年1月)中运行:
xdotool click --delay 0 --clearmodifiers 2
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
。
(发布此帖子是为了使新来者不必重新拼凑在评论中散布的拼图)
呼叫xdotool click --clearmodifiers 2
模拟单击鼠标中键。这比使用xsel更好(至少对我而言)。在键入之前,您必须完全定位鼠标。
我在模拟粘贴PRIMARY
选择的解决方案中遇到了问题,因此我添加了一个快捷方式,即将PRIMARY
选择复制到CLIPBOARD
。使用快捷方式后,根据应用程序,以常用方式粘贴CLIPBOARD
,Ctrl+V
,Ctrl+Shift+V
或Shift+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
内容的解决方案。
我遇到了同样的问题,互联网搜索并没有太大帮助。如OP所述,模拟点击2的问题很烦人。
上面建议的xdotool
和xsel的问题是,当xdotool
开始“键入”时,您仍在按另一个键。并非总是输出任何结果。例如,如果将其绑定到“插入”键,则xdotool
正在发送键,而手指按下“插入”键则不会产生任何结果。
以下是一种解决方法,可以将其绑定到按键:
sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0 "`xsel`"'
它不是完美的,但可以工作。现在您有0.3秒的时间来完成对按键(和向上键)的选择。