xiaohj233/dsh-compat-shims--packages-keyboard-guard ↗★ 0
dsh-keyboard-guard
Touch-device compatibility shim that prevents programmatic focus from opening the mobile keyboard while preserving user-initiated focus and desktop behavior.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xiaohj233/dsh-compat-shims#09af87746999677406b0a3946b91e94af27c48a5&path:packages/keyboard-guard说明文档
阅读完整 README ↗dsh-keyboard-guard(键盘守卫)
状态:Compatibility Shim。已在 DeepSeek Harness 0.1.0-rc.6 上测试。
dsh-keyboard-guard 防止 Web GUI 在应用程序代码以编程方式聚焦可编辑控件时,打开触屏设备的屏幕键盘。用户主动的点击与键盘手势仍然允许聚焦。桌面端行为不变。
问题
composer 与恢复的视图可能在启动、导航、对话框关闭或可见性变化期间聚焦输入框。在移动浏览器与 WebView 中,这种聚焦可以在没有用户手势的情况下打开键盘。
行为
客户端 bundle 仅在 (pointer: coarse) 匹配时激活。它会记录最近的受信任指针、触摸与按键手势。对可编辑元素的意外聚焦会被短暂地通过 readonly 桥接、失焦并恢复。所有监听器、观察器与调试状态都会通过 Cordis effect 释放器移除。
非目标
本包不会为可视化视口调整布局、实现移动端主题、在真实点击后改变 composer 行为,也不提供 LAN 访问。
兼容性
已在 DeepSeek Harness 0.1.0-rc.6、Node.js ^22.19.0 || >=24 与 pnpm >=10 上测试。浏览器行为在 iOS Safari、Android Chrome、嵌入式 WebView 与无障碍输入设备之间各不相同。
安装
dsh plugin --profile web add "github:xiaohj233/dsh-compat-shims#keyboard-guard-v0.1.0&path:/packages/keyboard-guard"
在 Windows 上,当 dsh plugin 把命令转发给 pnpm 时,cmd.exe 会拆分子目录片段中的 &;请直接使用 pnpm,并让下一次 dsh plugin 调用调和 bundle 层:
pnpm --dir %USERPROFILE%\.dsh\profiles\web add "github:xiaohj233/dsh-compat-shims#keyboard-guard-v0.1.0&path:/packages/keyboard-guard"
dsh plugin --profile web update
安装后重启 Web profile。
配置
无需任何设置。实时诊断信息以 window.__dshKeyboardGuard 的形式提供在页面中;其 dispose() 与 rearm() 方法用于调试。
卸载
dsh plugin --profile web remove dsh-keyboard-guard
重启后,客户端 bundle 及其监听器将不存在。
安全
本包会改变聚焦行为。使用开关控制、支持触摸的桌面硬件或不寻常的无障碍输入的用户,如果合法的聚焦被阻止,可能需要移除它。
测试
npm test
npm run check
npm pack --dry-run
可移植的生命周期测试验证桌面端无操作路径与可逆的触屏设备注册路径。
局限性与上游状态
测试套件不模拟原生 iOS 或 Android 的系统键盘外观。本包只处理焦点抑制;相关的社区插件(如 dsh-mobile)覆盖视口与安全区域(safe-area)行为。
License
MIT。参见 LICENSE。