Skip to content

键鼠盒子串口控制方案

KM Box(键鼠盒子)基于 CH645W:通过 USB 虚拟串口115200 8N1)接收文本控制指令,在被控电脑上模拟 USB HID 鼠标、键盘;同时支持一套物理鼠键在双机之间透传切换。控制端可用脚本或上位机发送 km.* 命令;被控端将设备识别为普通鼠键,无需安装专用驱动。

KM Box 键鼠盒子方案示意

资料、硬件与支持

芯片规格见 CH645 / CH645W。设计资料、硬件购买与技术支持请通过 doc.ultrasemi.com 获取。固件命令以设备内 km.help() 输出为准。

1、基于 CH645W:片内通讯 vs 多芯片组合

常见「多芯片」键鼠 / KVM 组合往往需要外挂 USB HUB + MCU + 模拟 USB 开关(或额外桥片)协同工作:协议在芯片之间多次穿越板级走线与接口,延迟与抖动更容易叠加,带来键鼠「飘」、热键反应慢、插拔稳定性差等问题。

本方案以 CH645W 单芯片 集成多路 USB 高速 PHY、组合设备 / HUB 与 KVM 向切换能力:

  • 片内通讯路径更短:虚拟串口指令解析、HID 报告生成与双机鼠键切换在片内完成,对比板级多芯片互连更快捷、时序更可预期。
  • 更少外设依赖:无需再堆一组 HUB IC + 模拟开关做键鼠矩阵,BOM 与走线更干净。
  • 被控端即插即用:对受控电脑呈现标准 USB HID,不依赖专用驱动。
  • 控制端协议简单115200 8N1 文本命令即可完成移动、点击、按键与字符串输入。

芯片级规格、型号对比与框图见 CH645 芯片页

2、产品与连接

键鼠盒子硬件

典型连接方式:

角色连接说明
控制端运行脚本 / 上位机,向盒子串口发文本命令USB 虚拟串口 115200 8N1
被控端USB 接入盒子,系统识别为鼠键设备标准 USB HID,免驱
物理鼠键(可选)插在盒子 USB 口与串口指令作用于同一光标 / 焦点;可切换双机
text
控制端 PC                    被控端 PC
   │                            │
   │  USB 虚拟串口                │  USB HID 鼠键
   │  115200 8N1                 │
   └──────────► 键鼠盒子(CH645W)◄────────┘

                  │ 可选物理鼠标 / 键盘

适用场景包括:双机协同办公、调试与测试、工业控制终端、安全隔离环境下由控制机操作被控机(被控端无需额外网络链路即可接收 HID)。

3、串口参数

项目参数
接口USB 虚拟串口(设备管理器中查看 COM 口)
波特率115200
数据位8
校验
停止位1
行结束每条命令以换行(Enter)结束

使用注意:

  • 单条命令建议不超过 64 个字符。
  • 发送过快时内置队列满会丢弃新命令,请适当间隔。
  • 串口终端请使用 UTF-8,避免帮助信息乱码。

获取命令列表:连接串口后发送 km.help(),终端返回当前支持的全部命令及格式说明。

4、命令书写规则

  • 命令以 km. 开头,参数写在括号内。
  • 多个参数用英文逗号分隔。
  • 数值可为负数,例如:km.move(-50, 20)
  • 键盘可用键名或数字键码;字符串用英文双引号,例如:km.string("Hello")
  • 命令名称不区分大小写(建议统一小写)。

5、命令总览

命令功能
km.help()显示命令列表
km.init()清除键盘状态,释放已按下的键
km.move(x,y)鼠标相对移动
km.left(x)鼠标左键按下 / 松开
km.right(x)鼠标右键按下 / 松开
km.middle(x)鼠标中键按下 / 松开
km.side1(x)侧键 1(前进)按下 / 松开
km.side2(x)侧键 2(后退)按下 / 松开
km.click(x,y)鼠标点击一次
km.wheel(x)滚轮滚动
km.turbo(x,y)鼠标连发
km.down(x)键盘按键按下
km.up(x)键盘按键松开
km.press(x,y)键盘单点(自动松开)
km.string("文本",t)输入一段文字

6、鼠标命令

6.1 相对移动 km.move(x, y)

参数说明
x水平位移,向右为正,向左为负
y垂直位移,向下为正,向上为负(可省略,则只水平移动)
text
km.move(100)
km.move(100, 50)
km.move(-200, -80)
  • 大距离会自动分成多步直线移动,无需手动拆分。
  • 单次移动有步数上限,超大距离请分多次发送。
  • 移动为异步过程,下一条命令前宜预留数十~数百毫秒间隔。

6.2 按住 / 松开

km.left / km.right / km.middle / km.side1 / km.side21 按下,0 松开。

text
km.left(1)
km.left(0)
km.right(1)
km.side1(0)

此类命令不会自动松开,需手动发 0,或改用 km.click

6.3 点击一次 km.click(x, y)

参数说明
x1 左键,2 右键,3 中键,4 侧键 1,5 侧键 2
y按下持续时间(毫秒),默认 75,可省略
text
km.click(1, 50)
km.click(2, 100)

6.4 滚轮 km.wheel(x)

正数向上滚,负数向下滚。示例:km.wheel(3)km.wheel(-5)

6.5 连发 km.turbo(x, y)

参数说明
x15 见键表;0 关闭全部连发
y连发间隔(毫秒);0 关闭该键连发;省略约 100ms
x按键
1左键
2右键
3中键
4侧键 1
5侧键 2
text
km.turbo(1, 80)
km.turbo(1, 0)
km.turbo(0)

7、键盘命令

7.1 键的写法

  • 键名(推荐):km.down("a")km.press("enter")km.press("1")
  • 数字键码:km.down(4)(参考 HID 键盘扫描码)
  • 单个大写字母加引号可自动带 Shift:km.press("A")

7.2 按下 / 松开 / 单点

text
km.down("w")
km.up("w")
km.press("a")
km.press("enter", 100)

km.press(x, y):按下后自动松开;y 为按下时长(毫秒),默认 75

7.3 输入字符串 km.string("文本", t)

按顺序输入 ASCII 文字,自动处理大写与常用符号的 Shift。t 为每字符间隔(毫秒),默认 75

text
km.string("Hello")
km.string("Hi", 100)

7.4 复位 km.init()

停止文字输入、清空键盘状态、释放串口控制的按键。脚本异常或「卡键」时建议执行。

8、常用键名

类别键名示例
字母 / 数字az09
编辑enterescbackspacetabspacecapslock
修饰键shift / lshiftctrl / lctrlalt / laltwin / lgui
方向与导航up down left righthome endpageup/pguppagedown/pgdn
功能f1f12insert/insdelete/delprintscreen

更多键名可通过实测或联系技术支持获取完整列表。

9、使用示例

9.1 移动后左键单击

text
km.move(300, 200)

等待移动完成(建议延时 200~500ms,视距离调整)后:

text
km.click(1, 75)

9.2 组合键 Ctrl+C

text
km.down("ctrl")
km.press("c", 50)
km.up("ctrl")

9.3 输入文字并回车

text
km.string("notepad")
km.press("enter", 80)

9.4 左键连发与停止

text
km.turbo(1, 50)
km.turbo(0)

或:km.turbo(1, 0)

9.5 异常恢复

text
km.init()
km.left(0)
km.right(0)

10、常见问题

现象处理建议
发命令没反应检查 COM 口、波特率 115200、命令是否以换行结束
命令偶尔丢失降低发送频率;单条不超过 64 字符
移动有停顿大距离自动分多步完成,属正常现象
键盘卡住执行 km.init(),并对相关键发 km.up
鼠标键未松开对对应键发 km.left(0) 等,或重新插拔 USB
不能移到绝对屏幕坐标当前仅支持相对移动;精确定位需控制端自行计算偏移
控制端与被控端是不同电脑被控端光标位置无法自动回读,需被控端程序配合或仅用相对移动

11、技术说明

  • 主控芯片:CH645W
  • 固件命令以设备内 km.help() 输出为准。
  • 本文档对应用户手册 v1.0。

深圳市优森美科技开发有限公司
欢迎咨询音视频产品方案与芯片选型支持
邮箱:doc@ultrasemi.com · QQ: 2272715136

深圳市优森美科技开发有限公司
欢迎咨询音视频产品方案与芯片选型支持
邮箱:doc@ultrasemi.com · QQ: 2272715136