我需要根据按住鼠标键的时间执行不同的命令。 例如 0s) Ctrl+V 1s) Ctrl+C 2s) copyq 菜单 #clipboard history
我一直在寻找 Linux 中 XMBC 的替代方案,我时不时地使用 xbindkeys,但我从旧配置中遗漏的是执行分配给按钮的各种命令,每个命令都有不同的延迟。我发现 xbindkeys doubleclick 中的脚本很有用,但那些没有实现我的目标。然后我的选择是使用 bash 或使用 guile 我使用 bash 我将在下面留下我的解决方案,我想回答但声誉不高。
我的解决方案,我上传到一个 repo 但它是一个小脚本,在发布时间和发布时间之间存在差异。
#!/bin/bash
# hold_n_release.sh
BASE="`dirname "$(readlink -f "$0")"`"
BUTTON=$1
DELAY=$2
PROGS=$BASE/hold_n_release.$BUTTON.commands
LOCK=$BASE/tmp/hold_n_release.$BUTTON.lock
LINES=$(wc -l < $PROGS)
if [ -z "$BUTTON" -o -z "$DELAY" -o ! -f $PROGS ]; then
echo "Usage : hold_n_release <Button> <Delay (sec)> [release]"
echo "put the commands on a file named $BASE/hold_n_release.<Button>.commands one per line"
exit
fi
EPOCH=$(date +'%s')
if [[ "$3" == "release" && -e $LOCK ]] ; then
LASTTIME=`cat $LOCK`
CHOICE=$(( (EPOCH - LASTTIME) / DELAY + 1 ))
# echo $CHOICE
if [ $CHOICE -le $LINES ]; then
exec $(sed -n "$CHOICE{p;q}" $PROGS) &
fi
else
rm -f $LOCK
echo "$EPOCH" > $LOCK;
fi
它需要一个文件,每个命令都在一行中,如下例所示,最后一行。
xdotool key ctrl+v
xdotool key ctrl+c
copyq menu
然后在 xbindkeysrc 中简单地使用以下形式:
#Multicommand hold
"hold_n_release.sh 8 1"
b:8
#Multicommand release
"hold_n_release.sh 8 1 release"
b:8 + Release
欢迎更多解决方案