鼠标滚轮检测py脚本

场景:买了个新鼠标 ,感觉滚动有问题 、存在跳跃情况 ;

(运行下面脚本并滚动鼠标即可)

bash 复制代码
import time
from pynput import mouse

# 全局变量,用于存储上一次滚轮事件发生的时间
last_scroll_time = None
# 用于记录滚动次数和事件编号
scroll_count = 0


def on_scroll(x, y, dx, dy):
    """
    滚轮事件回调函数
    x, y: 鼠标当前位置坐标
    dx, dy: 滚轮滚动的方向和量 (dy > 0 表示向上滚,dy < 0 表示向下滚)
    """
    global last_scroll_time, scroll_count

    current_time = time.time()

    scroll_count += 1

    # 确定滚动方向
    direction = "上滚 (Up)" if dy > 0 else "下滚 (Down)"

    print(f"\n--- 滚动事件 #{scroll_count} ---")
    print(f"位置: ({x:.0f}, {y:.0f}) | 方向: {direction} | 量: {abs(dy)}")

    if last_scroll_time is not None:
        # 计算两次事件之间的时间间隔
        time_diff = current_time - last_scroll_time

        # 如果时间间隔极短(比如小于 0.001 秒),可能是系统或硬件的快速响应,但我们主要关注可感知的时间差
        if time_diff < 0.1:
            print(f"**间隔时间 (Time Diff): {time_diff:.4f} 秒 - **快速滚动**")
        else:
            print(f"间隔时间 (Time Diff): {time_diff:.4f} 秒")

        # 异常检测:如果间隔时间过长,可能代表滚轮有"失灵"或"卡顿"的现象
        # 注意:这里的阈值 (e.g., 0.5秒) 需要根据你的正常使用习惯来调整
        if time_diff > 0.5 and scroll_count > 1:
            print("**🚨 警告:上次滚动和本次滚动间隔过长(> 0.5s),可能存在滚轮跳帧或接触不良问题。**")

    last_scroll_time = current_time


def start_listening():
    """启动鼠标监听器"""
    print("📢 鼠标滚轮监听已启动。请开始滚动滚轮进行测试...")
    print("按下 Ctrl+C 即可退出程序。")

    # 创建并启动监听器
    with mouse.Listener(on_scroll=on_scroll) as listener:
        listener.join()


if __name__ == "__main__":
    try:
        # 使用线程启动监听,避免阻塞主程序,但 pynput 的 Listener 默认是阻塞的,
        # 直接在主线程 with block 中运行更简单、更稳定。
        start_listening()

    except KeyboardInterrupt:
        # 捕获 Ctrl+C 退出
        print("\n\n✅ 程序已退出。")
    except Exception as e:
        print(f"\n发生错误: {e}")
相关推荐
李少兄16 小时前
Windows 键盘快捷键指南
windows·计算机外设·快捷键
思码梁田17 小时前
CSS cursor 属性全解析:从“小手“开始,玩转鼠标光标
前端·css·计算机外设·cursor·pointer
禾川兴科技3 天前
支持的switch2的便携屏方案,LDR6021QPD协议芯片加MT9700FFFUBG显示器驱动芯片
计算机外设
●VON3 天前
鸿蒙 PC Markdown 编辑器快速打开:模糊排序、最近权重与纯键盘路径
华为·编辑器·计算机外设·harmonyos·鸿蒙
编程圈子6 天前
操作系统学习14 IDT + PIC + 键盘中断
android·学习·计算机外设
Saniffer_SH7 天前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
遇见小修修8 天前
⚠键盘失灵?5 步自查,不用花钱换新键盘
运维·服务器·数据库·计算机外设·电脑·负载均衡
unityのkiven8 天前
Unity UGUI 中 EventTrigger 导致 ScrollRect 鼠标滚轮失效的问题分析与解决
unity·计算机外设·游戏引擎
解局易否结局9 天前
鸿蒙 PC 应用开发实战:多显示器、显示密度与跨屏适配
华为·计算机外设·harmonyos
FrameNotWork10 天前
HarmonyOS 6.0 输入法与键盘避让 — 聊天页面底部输入栏被键盘挡住的绝望
华为·计算机外设·harmonyos