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

如何通过脚本向蓝牙连接的罗技MX Master 3S鼠标发送指定数据

解决罗技MX Master 3S蓝牙模式下设备切换自动化问题

问题根源

hidapitester.exe仅针对USB HID设备设计,蓝牙HID设备的通信链路与USB完全不同,因此直接复用USB指令会失效。要实现蓝牙模式下的自定义指令发送,需要针对蓝牙HID的通信机制调整方案。

可行实现方案

方案一:PowerShell调用Windows蓝牙HID API

通过PowerShell直接调用Windows内核API,实现对蓝牙HID设备的指令发送,无需依赖第三方工具。

# 定位罗技MX Master 3S的蓝牙HID设备路径
$device = Get-PnpDevice -Class HIDClass -FriendlyName "*MX Master 3S*" | Where-Object { $_.InstanceId -match "BTHENUM" }
$hidPath = $device | Get-PnpDeviceProperty DEVPKEY_Device_HidDevicePath | Select-Object -ExpandProperty Data

# 准备需要发送的指令字节数组
$report = [byte[]]@(0x10, 0x02, 0x0a, 0x1b, 0x00, 0x00, 0x00)

# 引入Windows API调用所需的类型定义
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class HidSender {
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
    
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool WriteFile(IntPtr hFile, byte[] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, IntPtr lpOverlapped);
    
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool CloseHandle(IntPtr hObject);
}
"@

# 打开设备并发送指令
$fileHandle = [HidSender]::CreateFile($hidPath, 0x40000000, 0x00000001, [IntPtr]::Zero, 3, 0x80, [IntPtr]::Zero)
if ($fileHandle -ne [IntPtr]::Zero) {
    $bytesWritten = 0
    $success = [HidSender]::WriteFile($fileHandle, $report, $report.Length, [ref]$bytesWritten, [IntPtr]::Zero)
    if ($success) {
        Write-Host "指令发送成功"
    } else {
        Write-Host "发送失败,错误码: $([System.Runtime.InteropServices.Marshal]::GetLastWin32Error())"
    }
    [HidSender]::CloseHandle($fileHandle)
} else {
    Write-Host "无法打开蓝牙设备,错误码: $([System.Runtime.InteropServices.Marshal]::GetLastWin32Error())"
}

注意事项:

  • 必须以管理员身份运行PowerShell,否则会因权限不足无法访问蓝牙设备
  • 如果设备名称匹配失败,可调整FriendlyName的过滤规则,确保定位到蓝牙连接的设备

方案二:使用蓝牙HID专用工具

可使用专门针对蓝牙HID的工具(如BlueHID)发送自定义报告,这类工具直接适配蓝牙HID通信协议。示例命令如下:

bluehid.exe --send --addr XX:XX:XX:XX:XX:XX --report 0x10,0x02,0x0a,0x1b,0x00,0x00,0x00

说明:

  • 替换XX:XX:XX:XX:XX:XX为你的MX Master 3S蓝牙MAC地址
  • 需从可信渠道获取工具,避免恶意软件风险

通用注意事项

  1. 报告ID确认:你提供的指令中0x10是HID报告ID,蓝牙模式下该ID与USB模式一致,无需修改
  2. 设备连接状态:确保蓝牙设备已完成配对并处于连接状态,否则无法定位设备或发送指令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:22:32