分类
嵌入式开发

开发一款USB小键盘,一键打开固定网页

我想用南京沁恒(WCH)MCU做个小键盘,一键打开某个固定的网页或者软件,是否可行?windows与mac电脑默认输入法默认可能是中文或者英文,不要预先装任何驱动软件,也不要用户提前预设。

这是一个非常经典且具有挑战性的硬件工程问题。结论是:完全可行,但你必须绕过“字符输入”这个坑,利用操作系统底层的快捷键逻辑。

要实现“不装驱动、不看输入法状态、一键打开网页”,我们需要针对 Windows 和 macOS 采用两套不同的“盲打”策略。

核心痛点:为什么输入法是“杀手”?

如果你单纯模拟键盘敲击 w-w-w-.-g-o-o-g-l-e,在中文输入法下,电脑会认为你在打字,屏幕上会出现“万-万-万……”的候选词框,而不是直接进入地址栏。


第一步:Windows 的“免疫输入法”方案

在 Windows 上,最稳妥的办法是利用 Alt + 小键盘数字键。这是系统底层的输入方式,无论输入法是中文还是英文,它都会直接输出对应的 ASCII 字符。

逻辑设计:
1. 按下 Win + R(打开运行对话框)。
2. 等待 300ms。
3. 核心技巧: 模拟输入 cmd /c start https://www.google.com
4. 如何输入字符: 每一个字母都通过 Alt 码输入。例如输入字母 h (ASCII 104):
* 按下 Alt 不放。
* 依次按下小键盘 1, 0, 4
* 松开 Alt
* 这种方式可以无视任何中文输入法,强制输出字符。
5. 按下 Enter

第二步:macOS 的“盲打”方案

macOS 没有类似 Windows 的 Alt 码,但它的 Spotlight (聚焦搜索) 对 URL 的识别非常智能。

逻辑设计:
1. 按下 Command + Space(打开 Spotlight)。
2. 等待 200ms。
3. 直接模拟输入网页地址。
4. 如何避开输入法: macOS 的 Spotlight 有个特性,当你快速输入类似 https:// 这种格式的字符串时,它通常会优先识别为网址而非汉字。
5. 更高级的技巧: 先发送一个 Command + A 然后 Backspace,确保搜索框是空的。


第三步:沁恒 MCU (CH552) 的实现细节

由于你要做的是“小键盘”,建议使用 CH552G(非常便宜,SOP16 封装)。

1. 硬件电路

  • MCU: CH552G。
  • 按键: 一个按键连接到 GPIO(如 P1.1),并做下拉或上拉处理。
  • USB: D+ 和 D- 直接连到 USB 母座(注意 CH552 是 3.3V 逻辑,VCC 供电需注意)。

2. 固件逻辑实现 (伪代码)

你需要修改沁恒官方的 USB_HID_Keyboard 示例:

// 伪代码:当按键按下时执行
void trigger_open_url() {
    // --- 1. Windows 序列 ---
    press_key(GUI, 'r');       // Win+R
    delay(500);

    // 使用 Alt+小键盘 输入 "cmd /c start https://google.com"
    // 示例:输入 'h' (ASCII 104)
    press_alt_numpad(104); 
    // ... 循环处理字符串中的每个字符 ...

    press_key(ENTER);
    delay(1000);

    // --- 2. macOS 序列 ---
    press_key(GUI, ' ');       // Cmd+Space
    delay(500);

    // 直接打字输入 URL
    print_string("https://www.google.com");
    delay(200);
    press_key(ENTER);
}

3. 如何兼容两套系统?

因为硬件不知道它插在了 Windows 还是 Mac 上,最简单粗暴的方法是:按一下按键,先后发送两套指令。
* Windows 的 Win+R 指令在 Mac 上会误触发 Spotlight 或其他功能,但因为后续指令不匹配,通常不会有破坏性后果。
* 反之亦然。


第四步:进阶避坑指南

  1. 大写锁定 (Caps Lock) 的干扰:
    如果用户开启了大写锁定,输入的 https 可能变成 HTTPS。虽然网址不区分大小写,但为了保险,在发送字符串前,先发送一次 Caps Lock 信号检测或强制关闭(虽然 HID 协议支持读取键盘灯状态,但逻辑较复杂)。

  2. 速度控制:
    模拟按键不能太快。每个字符之间建议留 5-10ms 的延迟,打开运行窗口后建议留 300-500ms 延迟,否则电脑反应不过来,会导致字符丢失。

  3. USB 描述符:
    将设备定义为标准 HID Keyboard。这样在任何电脑上插上去都会显示“正在设置 HID 键盘设备”,无需任何驱动。

推荐方案总结

  • 芯片: 南京沁恒 CH552G (成本约 1.5 元)。
  • 策略: Windows 下使用 Alt + 小键盘码(彻底解决输入法问题);macOS 下直接输入。
  • 形态: 1 个机械按键 + 1 个小外壳 = 你的“一键直达网页”神器。

这种方案不仅能打开网页,还能通过 Windows 的运行窗口输入 calc(计算器)、notepad(记事本)等命令直接启动本地软件。