@androidtui/keymap

中文文档
0.8.0发布于 2026/10/30MITTypeScriptESM + CJS近 30 天下载 1888

Android 和 Termux 上的 OpenTUI 应用程序的密钥绑定和命令序列

中文使用文档
文档目录9 节
  1. 要点
  2. 加词
  3. 条目点
  4. 使用量
  5. 适配器
  6. 格式化密钥
  7. 重返大气层
  8. 安装
  9. 发展

@ opentui/ keymap

用于终端和DOM应用程序的主机-不可知密钥映射引擎. 同一核心,多个适配器.

它将密钥绑定为与目标相接的有优先级、有重点的、有重点的地层(地铁可转换物或DOM元素)。 核心是故意裸露的;除了原始密钥调度之外,其他一切都是通过加通,解析器,扩展器,解析器和字段编译器选择入.

要点

  • 主机不可知核心 过一个小 KeymapHost 与主机元数据、焦点、母机转录、目标销毁、关键新闻/释放、可选原始输入和合成命令事件相连接.
  • 目标意识重点路径 全球层加局部层 focus 编号 : focus-within 沿活动目标母链排列的层.
  • 分层绑定 优先排序 最新的第一联系, fallthrough,以及 preventDefault 控制系统.
  • 分支意识多键序列 超过平面编译的装订, 并有公开的待处理序列 API, 同步 pendingSequence 事件、活动继续查询和对焦点变化的自动无效.
  • 可编程的精确 vs 前缀分解 (例如:. g 对 gg与 runExact, (中文(简体) ), continueSequence, (中文(简体) ), clear,并推迟 AbortSignal + 键 sleep 决定。 船型为Neovim式超时解析器.
  • 可插入绑定语言:可叠装绑定解析器,密钥扩展器,层装绑定式变压器,绑定式变压器,命令解析器,命令解析器,以及所订购的事件相匹配解析器.
  • 广泛的计划和激活:在地层上注册自定义字段,绑定并命令. 字段编译器可以弹出 attrs; 所有字段类型都可以通过 require(...) 财务报告和审定财务报表 activeWhen(matcher)。 。 。 .
  • 反应匹配器 带有订阅驱动的状态通知,加上React store和Solid信号帮助器.
  • 原始和密钥截取 正常约束发送之前和之后,包括预先约束 consume({ preventDefault, stopPropagation }),发送后处理/无匹配结果,以及原始投入 stop() 处理.
  • 命令目录和调度 包含命名命令,内置命令处理器,命令链,命名空间,搜索,能见度级(registered 编号 : reachable 编号 : active)),有拘束的询问, runCommand,并注意焦点 dispatchCommand。 。 。 .
  • 缩写图快照和诊断 对于分层,命令,绑定,序列节点,待决路径,不活动原因,有阴影,稳定的警告/错误代码,以及林特风格的分层分析器.
  • B. 广泛的关键覆盖面 在默认解析器中,包括函数键、导航/编辑键、numpad键、介质键、左/右修改符, super, (中文(简体) ), hyper文字 + 装订.
  • 平台感知修改名 通过 registerModBindings,解决 mod+... 从主机元数据中保留显示字符串.

加词

@opentui/keymap/addons 现成构件:

  • registerDefaultKeys —— 说 ctrl+shift+s 样式解析器和事件匹配.
  • registerLeader, (中文(简体) ), registerTimedLeader ——带可选超时的领头符.
  • registerEmacsBindings —— 说 ctrl+x ctrl+s 和弦相会.
  • registerExCommands —— 说 :write- 样式命令 aliases 财务报告和审定财务报表 nargs。 。 。 .
  • registerCommaBindings, (中文(简体) ), registerModBindings, (中文(简体) ), registerAliasesField, (中文(简体) ), registerBindingOverrides。 。 。 .
  • registerEnabledFields, (中文(简体) ), registerMetadataFields (单位:千美元)desc, (中文(简体) ), group, (中文(简体) ), title, (中文(简体) ), category) (中文(简体) ).
  • registerNeovimDisambiguation, (中文(简体) ), registerEscapeClearsPendingSequence, (中文(简体) ), registerBackspacePopsPendingSequence。 。 。 .
  • registerDeadBindingWarnings, (中文(简体) ), registerUnresolvedCommandWarnings。 。 。 .

@opentui/keymap/addons/opentui 添加 OpenTUI 专用棋子: 基底放出匹配通过 event.baseCode 对于非拉丁语密钥和数字行(与Core相同的规则),以及预线文本区域/编辑-缓冲命令。 直接事件匹配在倒计时匹配前获胜, 甚至跨层.

条目点

  • @opentui/keymap ——核心API
  • @opentui/keymap/addons ——普遍加价
  • @opentui/keymap/addons/opentui ——通用+OpenTUI加通
  • @opentui/keymap/extras/graph ——用于调试和图表 UIs 的图快取帮助
  • @opentui/keymap/testing ——宿主不可知的假键图宿主和用于加成测试的诊断
  • @opentui/keymap/html — HTML 适配器
  • @opentui/keymap/opentui — OpenTUI 适配器
  • @opentui/keymap/react —— 说 KeymapProvider, (中文(简体) ), useKeymap, (中文(简体) ), useBindings, (中文(简体) ), useActiveKeys, (中文(简体) ), usePendingSequence, (中文(简体) ), reactiveMatcherFromStore
  • @opentui/keymap/solid —— 说 KeymapProvider, (中文(简体) ), useKeymap, (中文(简体) ), useKeymapSelector, (中文(简体) ), useBindings, (中文(简体) ), reactiveMatcherFromSignal
  • @opentui/keymap/extras —— 欺骗表 UIs 的助手(createBindingLookup, (中文(简体) ), commandBindings, (中文(简体) ), formatCommandBindings(中文(简体) )

使用量

import { registerDefaultKeys } from "@opentui/keymap/addons"
import { createOpenTuiKeymap } from "@opentui/keymap/opentui"
import { KeymapProvider } from "@opentui/keymap/react"

const keymap = createOpenTuiKeymap(renderer)
registerDefaultKeys(keymap)

createRoot(renderer).render(
  <KeymapProvider keymap={keymap}>
    <App />
  </KeymapProvider>,
)

创建密钥映射, 安装您想要的附加符, 然后将配置的实例传递到您的应用程序 。 React and Solid 的切入点通过上下文消耗了预设的 OpenTUI 密钥映射.

Keymap 是核心运行时间。 在需要图示或分层分析器时,将特征工厂传给其构造器.

适配器

适配器执行小型 KeymapHost 接口( e)metadata, (中文(简体) ), rootTarget, (中文(简体) ), getFocusedTarget, (中文(简体) ), getParentTarget, (中文(简体) ), onKeyPress, (中文(简体) ), onKeyRelease, (中文(简体) ), onFocusChange, (中文(简体) ), onTargetDestroy(中文(简体) ). HTML 适配器规范 DOM 密钥名称(Escape → escape, (中文(简体) ), ArrowUp → up, (中文(简体) ), Meta → super, (中文(简体) ), Alt → meta)和跟踪目标通过 MutationObserver。 OpenTUI 适配器钩 CliRenderer keypress, (中文(简体) ), keyrelease,焦点,破坏,目标破坏,以及原始输入事件.

格式化密钥

使用 keymap.formatKey 当显示原始绑定字符串时。 它通过键图的解析器和符号在字符串化之前运行它们.

keymap.formatKey("<leader>s", { separator: " " }) // "space s"
keymap.formatKey("<leader>s", { preferDisplay: true }) // "<leader>s"

重返大气层

运行时间/数据再入在发送过程中得到支持:命令处理器,截取,等待序列的收听者可以读取或写入运行时间数据和等待序列状态.

结构再入是 没有 已支持。 在发送时不要注册或取消注册层、标志、解析器或解析器.

安装

bun install @opentui/keymap

发展

bun run build
bun run test
bun src/keymap-benchmark.ts

HTML 演示居住在 Docs app 中 /demos/keymap-html/ 下级 packages/web。 。 。 .

版本与发布记录

@androidtui/keymap 共发布 29 个版本,首次发布于 2026/08/09;过去 12 个月发布了 29 个版本。

版本发布日期距今
0.8.0latest2026/10/308 天前
0.7.02026/10/308 天前
0.6.82026/10/2415 天前
0.6.62026/10/1524 天前
0.6.52026/10/1424 天前
0.6.42026/10/1425 天前

其他发布通道:future → 0.5.12-android.1。

关于 @androidtui/keymap 的常见问题

@androidtui/keymap 是什么?

Android 和 Termux 上的 OpenTUI 应用程序的密钥绑定和命令序列

如何安装 @androidtui/keymap?

在项目目录运行 npm install @androidtui/keymap,或使用 pnpm add / yarn add / bun add。

@androidtui/keymap 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@androidtui/keymap 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@androidtui/keymap 可以商用吗?

@androidtui/keymap 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@androidtui/keymap 的下载量有多少?

根据 npm 官方下载统计,@androidtui/keymap 在 2026/10/06 – 2026/11/04 这 30 天内被下载 1,888 次,日均约 63 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@androidtui/keymap 还在维护吗?

最新版本 0.8.0 发布于 2026/10/30(8 天前);至今共发布 29 个版本,其中过去 12 个月发布了 29 个;首次发布于 2026/08/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。