Skip to content

[feature]增加鼠标点击支持以实现页面交互(MouseEventKind::Down/Up/Click) #342

Description

@lonelymeko

你好,感谢维护这个很棒的项目!

我注意到当前 TUI 已经启用了鼠标捕获并支持鼠标滚轮用于上下滚动(ScrollUp / ScrollDown),但似乎没有处理鼠标点击/按下等事件,因此无法通过鼠标点击来选中或激活页面元素。

我查看了相关代码:

  • terminal 初始化启用了鼠标捕获(EnterAlternateScreen + EnableMouseCapture):src-tauri/src/cli/tui/terminal.rs
  • 事件处理里仅对滚轮事件做了处理,将 MouseEventKind::ScrollUp / ScrollDown 映射为 KeyCode::Up/Down:src-tauri/src/cli/tui/mod.rs
  • 仓库中已有针对滚动事件的测试作为参考:src-tauri/src/cli/tui/tests.rs

期望行为:

  • 在 TUI 中支持鼠标点击(MouseEventKind::Down/Up/Click 或相应事件),用于:
    • 列表项点击以聚焦或激活
    • 按钮点击以触发动作
    • 可选:双击或右键自定义行为

实现建议:

  • 在事件分支(event::Event::Mouse(mouse))中增加对其它 MouseEventKind 的处理(例如 Down/Up/Click/Drag),并将这些事件映射到应用内相应行为。
  • 可以为 App 增加 on_mouse 或 on_mouse_click 接口,接收鼠标位置(column,row)、按钮和修饰键,或者将点击映射为特定 KeyEvent(如 Enter/Space)以复用按键处理逻辑。
  • 需要在 UI 布局层实现命中检测(hit testing),判断点击落在哪个组件(列表、按钮等)上。
  • 请参考现有的滚动处理测试,新增鼠标点击的单元测试,以保证行为稳定。

如果需要的话,我可以协助提供 PR 草案或示例补丁。非常感谢!

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