用途:在 GPUI 中实现声明式、键盘驱动的 UI 交互,把按键映射到具体动作并分发处理。
主要能力:用 actions! 宏或 #[derive(Action)] 定义动作;用 cx.bind_keys() 绑定按键;在元素上用 .on_action() 处理动作;通过 key_context() 实现上下文感知绑定,使同一按键在不同上下文触发不同动作;支持带参数的动作(如 InsertText、Digit)。
使用方式:定义动作后,在 init 中绑定按键,例如 cx.bind_keys([KeyBinding::new("up", MoveUp, Some(CONTEXT))]);在渲染元素上设置 .key_context(CONTEXT) 并挂载 .on_action(cx.listener(Self::move_up));处理函数中调用 cx.notify() 更新界面。按键格式支持修饰键(cmd-s、ctrl-c、alt-f、shift-tab、cmd-ctrl-f)、字母数字、f1-f12、方向键、enter、escape、space、tab、backspace、delete 及特殊字符。动作命名建议采用动词-名词模式,如 OpenFile、CloseWindow、ToggleSidebar。
适用场景:编辑器、模态框等需要快捷键与上下文路由的 GPUI 界面。
限制:资料未提供性能、无障碍等细节,仅提及参考文档涵盖这些主题;未提供收费、平台或效果信息。