Kotlin Multiplatform Development Help

键盘事件

在 Compose Multiplatform 桌面版中,您可以通过两种不同范围设置事件处理器来管理键盘事件:

  • 基于焦点元素的事件处理器

  • 窗口范围内的事件处理器

焦点组件中的事件

此方法意味着键盘按键会触发当前焦点组件的事件处理器。

典型场景是为 TextField 等活跃控件定义键盘处理器。若要在按键触发默认操作前拦截事件,可同时使用 onKeyEventonPreviewKeyEvent 修饰符。其中 onKeyEvent 用于处理单个按键事件,而 onPreviewKeyEvent 更适合定义快捷键。

以下示例展示了 TextField 根据按住 Ctrl 时不同按键触发不同交互行为:

(代码块保持原文不变)
焦点组件中的键盘事件

窗口范围内的事件

要为当前窗口定义始终有效的键盘事件处理器,可使用 WindowsingleWindowApplicationDialog 函数提供的 onPreviewKeyEventonKeyEvent 参数。两者的区别在于未消费事件的派发方式: onPreviewKeyEvent 将事件派发给首个子元素,而 onKeyEvent 将事件派发给父组合项。通常推荐使用 onPreviewKeyEvent 拦截事件,因其支持实现全屏键盘快捷键。

以下示例演示了窗口级交互,例如按 Escape 关闭弹窗对话框,以及通过 Ctrl+Shift+C 快捷键切换窗口内容:

(代码块保持原文不变)
窗口范围内的键盘事件

后续步骤

22 四月 2025