用灵犀claw控制鼠标DPI和呼吸灯
wils
Lv.4 核心创作者
超低价买了个pw1鼠标
但不喜欢鼠标上的呼吸灯,所以不得不安装驱动,还设置成开机启动,就是为了自动关掉呼吸灯
今天突发奇想,用灵犀claw能否代替驱动,写个py脚本的skill,来控制鼠标调节dpi和呼吸灯
于是先问了捕获驱动发消息需要的工具,安装了Wireshark和usbpcap,同时鼠标改用了libusb-win32的驱动
做好准备后,直接让灵犀claw:
帮我捕获鼠标驱动消息,我调整一次dpi,你帮我分析记录
我在官方驱动里改了一下dpi然后让灵犀claw停止捕获
之后又让灵犀claw捕获了两次修改dpi,以及两次开关呼吸灯的操作
说到底,我只是安装了环境,甚至不需要自己分析鼠标驱动的具体消息结构
灵犀claw帮我捕获消息,分析结构,写py脚本,一条龙完美完成任务,太爽了!
这里贴一下py脚本,只适用这款低价鼠标,如果是其他鼠标,肯定需要相应修改
import usb.core, usb.util, sys, time
VID, PID = 0x30fa, 0x1701
DPI = {1200: 0x40, 2400: 0x41, 4800: 0x42}
LED = {"on": 0x00, "off": 0x37}
# 完整序列(从抓包提取)
INIT = [[0x07, 0x18, 0x03, 0x00, 0x80, 0x0f, 0x00, 0x01],
[0x07, 0x18, 0x03, 0x01, 0x80, 0x0f, 0x00, 0x01],
[0x07, 0x18, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00],
[0x07, 0x18, 0x05, 0x00, 0x80, 0x0f, 0x00, 0x01],
[0x07, 0x18, 0x05, 0x01, 0x80, 0x0f, 0x00, 0x01],
[0x07, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]]
CALIB = [[0x07, 0x09, 0x00, 0x68, 0x0f, 0x00, 0x00, 0x00],
[0x07, 0x09, 0x00, 0xc9, 0x0f, 0x00, 0x00, 0x00],
[0x07, 0x09, 0x00, 0xfa, 0x0f, 0x00, 0x00, 0x00]]
def send(d, data):
d.ctrl_transfer(0x21, 0x09, 0x0307, 0x01, data)
def open_dev():
d = usb.core.find(idVendor=VID, idProduct=PID)
if not d: return None
for i in range(2):
try: d.detach_kernel_driver(i)
except: pass
d.set_configuration()
return d
def close_dev(d):
usb.util.release_interface(d, 1)
for i in range(2):
try: d.attach_kernel_driver(i)
except: pass
d = open_dev()
if not d:
print("未找到鼠标"); sys.exit(1)
mode = sys.argv[1] if len(sys.argv) > 1 else ""
# 初始化 + 校准(共用)
for cmd in INIT + CALIB:
send(d, cmd); time.sleep(0.005)
if mode in DPI:
send(d, [0x07, 0x09, DPI[mode], 0x2b, 0x0f, 0x00, 0x00, 0x00]); time.sleep(0.01)
send(d, [0x07, 0x13, 0x7f, 0x02, 0x00, 0x00, 0x20, 0x07])
print("DPI -> %d" % mode)
elif mode in LED:
send(d, [0x07, 0x09, 0x40, 0x2b, 0x0f, 0x00, 0x00, 0x00]); time.sleep(0.01)
send(d, [0x07, 0x13, 0x7f, LED[mode], 0x00, 0x00, 0x20, 0x07])
print("呼吸灯 -> %s" % ("开启" if mode == "on" else "关闭"))
else:
print("用法: python mouse_dpi.py 1200|2400|4800|on|off")
close_dev(d)更进一步,只要有想法,比如,执行完成任务就启动鼠标呼吸灯,打开某个软件自动切换按键映射,收到消息显示10秒呼吸灯,等等,只要能想到的操作都可以飞快实现,原本死板的鼠标驱动,轻松用灵犀claw改造出无限可能🎉