Skip to content

fix(ui): 修复 macOS 下日志面板无法复制文字 - #66

Merged
ca1e merged 1 commit into
EasyConNS:devfrom
SlenderData:dev
Oct 7, 2026
Merged

ca1e merged 1 commit into
EasyConNS:devfrom
SlenderData:dev

Conversation

@SlenderData

Copy link
Copy Markdown

变更说明

macOS 下日志输出面板里的文字无法复制。

TerminalControl 本身支持用鼠标拖选文字,但复制快捷键只判断了 Ctrl+C。macOS 上的复制习惯是 Cmd+C,所以选中后按快捷键没有任何反应,面板里也没有其他复制入口。

本 PR 只改动了 src/EasyCon2.Avalonia/Terminal/TerminalControl.cs:

  • 复制和全选的快捷键同时接受 Ctrl 和 Cmd:Ctrl/Cmd+C 复制选中内容,Ctrl/Cmd+A 全选。Windows 上的原有行为不变。
  • 新增右键菜单,包含三项:
    • 复制:复制选中内容,没有选中时置灰
    • 全选
    • 复制全部:不用先选中,直接复制整个面板的文本
  • 新增公开方法 SelectAll()。

关联 Issue

无关联 Issue。这是排查 #56(macOS 下 ESP32 握手失败)时发现的问题:需要把串口日志复制出来分析,但复制不了。属于不涉及核心功能和架构的小幅 bug 修复,按 CONTRIBUTING.md 可以直接提交。

变更类型

  • Bug 修复
  • 小幅改进(不涉及核心功能与架构)
  • 功能 / 架构类变更(已先在 Issue 中讨论达成共识,Issue 链接:)
  • 文档 / 其他

人工审核声明

  • 我已逐行审核本 PR 的全部代码(包括 AI 生成的部分),理解并认可每一处改动
  • 我对本 PR 内容负责,它不是全由 Agent 决策产出

自查清单

  • dotnet build 通过
  • dotnet test EasyCon2.slnx -c Release 通过(macOS 上运行,Windows 专用的 EasyCon.WinInput.Tests 未运行)
  • dotnet format --verify-no-changes 无差异
  • 新功能 / 修复附带 NUnit 测试
  • 涉及脚本语言 / VM / 架构的改动已更新对应测试与文档

验证方式

在 macOS(Apple Silicon)上运行 GUI,连接串口设备,让日志面板产生输出,然后:

  1. 用鼠标拖选一段日志,按 Cmd+C,可以粘贴到其他应用。改动前没有反应。
  2. 在日志区右键,选“复制全部”,可以拿到完整日志。
  3. 在日志区右键,选“全选”,所有行都会高亮,再按 Cmd+C 可以复制。

Windows 上的 Ctrl+C 走的是原来的逻辑,没有变化。

TerminalControl only handled Ctrl+C, so Cmd+C did nothing on macOS and
log output could not be copied. Accept both Ctrl and Cmd for copy and
select-all, and add a context menu with Copy / Select All / Copy All.
@ca1e
ca1e merged commit 5d7473a into EasyConNS:dev Oct 7, 2026
@SlenderData
SlenderData deleted the dev branch October 7, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants