Abhik Bose Asked: 2018-01-23 08:44:49 +0800 CST2018-01-23 08:44:49 +0800 CST 2018-01-23 08:44:49 +0800 CST 一些应用程序如何通过 ssh 在 bash 中接受鼠标单击? 772 lynx浏览器等应用程序和许多其他应用程序在外壳上htop接受与位置相关的鼠标单击。我知道这是一个命令行界面。那么它是如何接受鼠标点击的呢?bashsshssh linux bash 2 个回答 Voted Best Answer andcoz 2018-01-23T09:13:09+08:002018-01-23T09:13:09+08:00 恕我直言,编写此类TUI应用程序的最简单方法是使用ncurses。 “New Curses”是一个库,它从底层设备的细节中抽象出 TUI 的设计。您引用的所有软件都使用 ncurses 来呈现它们的界面。 当您单击终端仿真器(例如 xterm、gnome-term 等)时,终端仿真器会将单击转换为一系列ANSI Escape 代码。这些序列由 ncurses 库在事件中读取和翻译。 您可以在 Stack Overflow 上找到一个示例:NCurses 中的鼠标移动事件 111--- 2018-01-23T09:00:13+08:002018-01-23T09:00:13+08:00 这很简单,在老式的串行终端会话中,鼠标并不是向交互式 shell 会话发送输入的真正选项。(我敢肯定有一些早期的例外。) 但是,当您在图形桌面会话中运行终端仿真器时,终端仿真器可以感知鼠标。 在高层次上发生的是,鼠标事件被终端仿真器(xterm例如)转换为终端序列,并将这些事件发送到您正在运行的应用程序的交互式 shell 会话htop,vim等等。在这种情况下vim,只看到终端序列(就像一系列简单的键盘事件会产生),而不是鼠标事件。
恕我直言,编写此类TUI应用程序的最简单方法是使用ncurses。
“New Curses”是一个库,它从底层设备的细节中抽象出 TUI 的设计。您引用的所有软件都使用 ncurses 来呈现它们的界面。
当您单击终端仿真器(例如 xterm、gnome-term 等)时,终端仿真器会将单击转换为一系列ANSI Escape 代码。这些序列由 ncurses 库在事件中读取和翻译。
您可以在 Stack Overflow 上找到一个示例:NCurses 中的鼠标移动事件
这很简单,在老式的串行终端会话中,鼠标并不是向交互式 shell 会话发送输入的真正选项。(我敢肯定有一些早期的例外。)
但是,当您在图形桌面会话中运行终端仿真器时,终端仿真器可以感知鼠标。
在高层次上发生的是,鼠标事件被终端仿真器(
xterm
例如)转换为终端序列,并将这些事件发送到您正在运行的应用程序的交互式 shell 会话htop
,vim
等等。在这种情况下vim
,只看到终端序列(就像一系列简单的键盘事件会产生),而不是鼠标事件。