检测脚本启动时已按下的键

oᴉɹ*_*ǝɥɔ 5 linux keyboard shell-script

我在 Linux 桌面环境 ( XFCEGnome) 中运行的脚本被注册为在全局热键事件(例如Super+ D)上运行。该脚本将主剪贴板(我使用xclip+ xdotool)中的内容粘贴到当前选定的窗口编辑框中。问题是粘贴失败,因为此时我的热​​键仍然被按下。我当前的解决方案非常丑陋,我让脚本休眠 0.5 秒 - 足以释放热键 - 在执行粘贴命令之前。

我需要我的脚本等到键盘上没有按下任何键才能从剪贴板逻辑运行主粘贴。

我检查了许多相关的命令行实用程序,如xevxinputshowkey等。尽管相关,但它们对我来说没有用,因为它们仅在启动时才开始监视事件。我需要获取键盘按键的当前状态,无论脚本启动时是否已按下某些键。

任何提示或指示将不胜感激。

Ste*_*del 4

xinput query-state可以显示按键。所以你的脚本可以是这样的:

#!/bin/bash

while for did in $(xinput --list --id-only) ; do xinput query-state $did 2>/dev/null | grep down ; done | egrep -q . ; do sleep 0.1 ; done

xdotool type "$(xclip -o -selection primary)"
Run Code Online (Sandbox Code Playgroud)

这将等到没有按键或按钮被按下,因此即使鼠标按钮也计数。但它对我来说已经足够好了。