You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在xbindkeys中为鼠标按键分配延时触发的多命令?

Linux下实现鼠标按键按长按时长触发不同命令(替代XMBC)

我之前在找XMBC的Linux替代方案,一直用xbindkeys,但它没法像XMBC那样按按键长按的不同时长分配多个命令,试过双击脚本也满足不了需求,最后自己写了个脚本解决问题,需求是:

  • 短按鼠标键:执行ctrl+v
  • 按住几百毫秒:执行ctrl+c
  • 长按超过一定时长:调出copyq menu(剪贴板历史)

具体实现方案

1. 编写监听脚本

创建一个名为mouse_hold_action.sh的脚本,内容如下:

#!/bin/bash

# 替换成你要监听的鼠标按键(用xev命令查询,比如侧键可能是button8)
TARGET_BUTTON="button8"
# 短按阈值(毫秒),低于这个时长判定为短按
SHORT_THRESHOLD=200
# 长按阈值(毫秒),超过这个时长判定为长按
LONG_THRESHOLD=800

# 监听全局按键事件
xinput test-xi2 --root | while read -r line; do
    # 捕捉按键按下动作
    if echo "$line" | grep -q "Press event.*$TARGET_BUTTON"; then
        # 记录按下的毫秒级时间
        start_time=$(date +%s%3N)
    # 捕捉按键释放动作
    elif echo "$line" | grep -q "Release event.*$TARGET_BUTTON"; then
        end_time=$(date +%s%3N)
        # 计算按压总时长
        hold_time=$((end_time - start_time))

        # 根据时长执行对应命令
        if [ "$hold_time" -lt "$SHORT_THRESHOLD" ]; then
            xdotool key ctrl+v
        elif [ "$hold_time" -lt "$LONG_THRESHOLD" ]; then
            xdotool key ctrl+c
        else
            copyq menu
        fi
    fi
done

2. 赋予脚本执行权限

打开终端运行:

chmod +x mouse_hold_action.sh

3. 测试与开机自启

  • 先在终端直接运行脚本测试:./mouse_hold_action.sh,尝试按鼠标键的不同时长,验证是否触发对应命令
  • 要开机自动运行的话,把脚本加入桌面环境的启动项即可(比如GNOME的「启动应用程序」里添加该脚本路径)

注意事项

  • 先安装依赖包:Debian/Ubuntu系执行sudo apt install xdotool xinput copyq,其他发行版用对应包管理器安装
  • 用xev命令可查询鼠标按键编号:运行xev后按下目标鼠标键,查看输出中的button数字,替换脚本里的TARGET_BUTTON
  • 可自行调整SHORT_THRESHOLD和LONG_THRESHOLD的数值,适配自己的操作习惯

内容的提问来源于stack exchange,提问作者ltapia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:43:27