1

我有支持在多个设备之间切换的罗技鼠标和键盘。我缺少的功能是通过运行命令或快捷方式同时切换鼠标和键盘。

我想问是否可以将输出发送到鼠标和键盘以更改其频道?如果是这样,你能指导我怎么做吗?

我没有 USB HID 的经验,但我使用busdog工具嗅探输出,我发现每次按下一个键将频道从第一个更改为第二个时都会发送以下代码。

代码:

10 03 41 04 71 8a 40

之后我尝试使用命令行工具hidapitester将代码发送到键盘,希望它会改变它的频道。可惜没有结果。

$ hidapitester --vidpid 046D/C52B --list

046D/C52B: Logitech - USB Receiver
046D/C52B: Logitech - USB Receiver
046D/C52B: Logitech - USB Receiver
046D/C52B: Logitech - USB Receiver

Opening device, vid/pid: 0x046D/0xC52B
Closing device


$ hidapitester --vidpid 046D/C52B --open --length 7 --send-output 0x10 0x03 0x41 0x04 0x71 0x8a 0x40 --read-input

Opening device, vid/pid: 0x046D/0xC52B
Writing output report of 7-bytes...wrote -1 bytes:
 10 00 00 00 00 00 00
Reading 7-byte input report 0, 250 msec timeout...read -1 bytes:
Closing device

更新:

下面我在按下从第一通道切换到第二通道的键后添加跟踪日志:

Id  Type                        Time        Length  Hex
24  In  (USB URB Function: 9)   0.000000    20      11 03 08 20 00 d2 01 00 00 00 00 00 00 00 00 00 00 00 00 00
29  R                           0.000377    20      11 03 08 20 00 d2 01 00 00 00 00 00 00 00 00 00 00 00 00 00
24  In  (USB URB Function: 9)   0.291648    7       10 03 41 04 71 8a 40
28  R                           0.000449    7       10 03 41 04 71 8a 40
4

1 回答 1

2

您捕获的代码是切换的结果(实际上不是切换命令)-您需要使用不同的代码进行切换-如下(感谢@davidschreiber):

10 [device index] 08 10 [channel index] 00 00 00
  • 第一项必须是 10
  • [设备索引] 基于 1 - 取决于您的设备注册顺序(因此需要反复试验)
  • 08 和 10 实际上可以在很大范围内变化 - 我使用 09 和 11,这似乎也有效!
  • [频道索引] 从 0 开始 - 与键盘/鼠标上的 1、2、3 直接相关

此外(当然在 Windows 上)您需要在 hidapitester 中指定usageusagePage参数。

所以这对我有用 - 将我的鼠标(设备 #1 = 0x01)切换到通道 3(0x02)

hidapitester.exe --vidpid 046D:C52B --usage 1 --usagePage 0xFF00 --open --length 7 --send-output 0x10,0x01,0x09,0x11,0x02,0x00,0x00

您可以在这里找到更多有用的信息:https ://github.com/Logitech/logi_craft_sdk/issues/28

于 2021-09-10T12:13:43.933 回答