自 =~ 2 年以来,我们似乎无法使用该Super键(又名 windows 键)来运行某些键盘快捷键。
我尝试使用 kde、gnome、xfce4,但没有一个完全有效。
例如,我有一个键盘快捷键来输入日期,就像我输入通过Super+分配的日期一样a,当我按下这个键时,什么也没有发生。
bash -c 'xvkbd -xsendevent -text $(date +%Y%m%d)'
在 xfce4 首选项中正确配置了命令行。
我目前使用带有内核 4.15.1-2-ARCH 的 archlinux x86_64。
有谁知道怎么了?在哪里 ?有解决办法吗?一种解决方法?
使用的快捷键不是问题
bash …
您可以通过将命令替换为xterm
(或其他一些图形应用程序)来检查键盘快捷键是否已成功设置。如果出现一个窗口,则您的快捷方式设置正确。问题几乎可以肯定是所需的命令:根据我的经验,使用
XSendEvent
是不可靠的。1 这可能是您问题的根源。使用xdotool
一个可以在 和 之间进行选择XTEST
,XSendEvent
前者通常对我有用。您xvkbd
可能有类似的选择。发送键序列时,您需要清除当前修饰符以确保发送您想要的序列(例如
test
,而不是Super+ t、Super+e等)此外,
xdotool
至少有一个奇怪的行为,如果它太快发送事件,它们就会消失。2这实际上可能是 X 服务器丢弃事件,或者可能是完全不同的东西。xdotool
在任何情况下,您都可以延迟解决这个问题(至少在 中):如果初始延迟不足以防止丢弃事件,则该
type
子命令有一个--delay
选项。总之
我会使用:
复制您的预期行为,尽管用于
sleep
并且--delay
可能需要调整的值取决于您的设置。另一种可能的选择
如果您不介意破坏剪贴板,更好的方法可能是发送默认快捷方式
paste selection
:这用于
xsel
将所需的文本放入CLIPBOARD
和PRIMARY
选择中(因为ShiftInsert它使用的不一致)。然后它合成键序列以粘贴此选择。由于这只需要两次合成按键,因此与其他方法相比,它不太可能丢弃事件。1来自
xdotool(1)
:2如果我确切了解为什么会这样,我将重新审视这个答案并扩展这一点。