Skip to content

[Bug / Feature] macOS 平台 Ctrl 与 Command 快捷键未做区分,导致终端内置 Readline 控制字符(如 Ctrl+K)被应用层全局拦截 #656

Closed

Description

@hheei

操作系统 / OS

macOS (Apple Silicon / Intel)

问题描述 / Description

在 macOS 上使用 Pebrel 时,外层 GUI 快捷键与终端底层控制字符存在重叠与冲突,缺少针对 macOS 规范的快捷键解耦。

现状与技术原因 / Current Behavior & Root Cause

  1. 目前 macOS 平台主要通过 MACOS_COMMAND_ALIASES 额外注册了 Cmd 快捷键,但没有在 macOS 平台上解除来自 Windows 的默认 Ctrl 系全局绑定(如 ctrl-k、ctrl-,、ctrl-shift-... 依然停留在 default_workspace_bindings 中)。
  2. 这导致在 macOS 上按下 Ctrl+K 和 Cmd+K 都会触发工作区动作(例如打开 Shell 选择器)。
  3. 这破坏了 macOS 终端长期以来的标准与习惯:
    • 在 macOS 体系中,Command (⌘) 掌管应用外层 GUI 交互(新建标签、关闭窗口、设置、剪贴板等);
    • Control (⌃) 属于标准的终端控制字符(Readline / PTY 规范),应原封不动透传给 Shell(如 Ctrl+K 删至行尾、Ctrl+W 删词、Ctrl+A/Ctrl+E 移动光标等)。
  4. 目前的表现是:用户在日常使用 zsh/bash/CLI 工具进行行编辑时,按下 Ctrl+K 会被外层直接抢走按键并弹出弹窗,无法进行正常的终端控制字符交互。

期望行为 / Expected Behavior

  • 在 macOS 平台上,应用层 GUI 动作默认由 Command (⌘) 系列承载;
  • 针对 macOS 剥离工作区默认抢占的单 Ctrl 组合键(特别是 Ctrl+K 等常见 Readline 控制字符),默认完全透传给 PTY,避免全局拦截;
  • 遵循与其他主流 macOS 终端(如 iTerm2、Ghostty、Terminal.app)一致的按键体验。

Activity

  1. Kuddev commented on Oct 24, 2026

    @Kuddev
    Owner

    修复已由 #658(合并提交 9c56af83) 合入 main。

    macOS 默认 Control+K 透传终端,Command+K 打开 Shell 选择器;GPUI 的默认单 Control 字符组合按同一策略处理,用户显式绑定仍保留。

    验证:当前 main 的 macOS Apple Silicon、Intel 原生测试和 Release workspace 编译均通过。Ctrl+Tab、带 Shift/Alt 的导航及独立的全局快捷终端快捷键保留原有策略。

    已核对修复提交包含在 main 4e93a085 中,当前主线验证记录:https://github.com/Kuddev/pebrel/actions/runs/40069729178。按已合入修复关闭此 issue;若包含上述提交的构建仍有同样问题,可补充最小复现后重新打开。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions