我有罗技鼠标和键盘,支持在多个设备之间切换。 我缺少的功能是通过运行命令或快捷方式同时切换鼠标和键盘。
我想问是否可以将输出发送到鼠标和键盘来更改其 channel ?如果是这样,您能指导我该怎么做吗?
我没有 USB HID 经验,但我使用 busdog
工具嗅探输出,我发现每次按下按键将 channel 从第一个更改为第二个时都会发送以下代码.
代码:
10 03 41 04 71 8a 40
之后,我尝试使用名为 hidapitester
的命令行工具将代码发送到键盘,希望它能够更改其 channel 。不幸的是没有结果。
$ 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
更新:
下面,我在按下从第一个 channel 切换到第二个 channel 的按键后添加跟踪日志:
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
最佳答案
您捕获的代码是切换的结果(实际上不是切换命令) - 您需要使用不同的代码来使其切换 - 如下(归功于@davidschreiber):
10 [device index] 08 10 [channel index] 00 00 00
- 第一项必须为 10
- [设备索引] 从 1 开始 - 取决于您的设备注册顺序(因此需要反复试验)
- 08 和 10 实际上可以在很大范围内变化 - 我使用 09 和 11,这似乎也有效!
- [ channel 索引] 从 0 开始 - 直接与键盘/鼠标上的 1、2、3 相关
此外(当然在 Windows 上)您需要在 hidapiester 中指定 usage 和 usagePage 参数。
所以这对我有用 - 将我的鼠标(设备 #1 = 0x01)切换到 channel 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
关于usb - 将输出发送到设备以更改 Logitech 鼠标/键盘中的 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66325665/