在 OS X Yosemite 的终端应用程序中,您现在可以使用鼠标在 vim/less/whatever 中滚动。如何检测正在运行的程序是否支持这种滚动?
问问题
1441 次
2 回答
7
想要支持滚动的程序会向终端发送一个转义序列,以启用鼠标输入,例如,\e[?1002h
用于报告按钮点击。然后,只要您单击鼠标,终端就会将控制代码发送回程序,告诉它您单击了哪个按钮以及单击的位置。通过鼠标点击按钮 4 和 5 发送向上或向下滚动。
请参阅从XTerm 控制序列文档的第 29 页开始的“鼠标跟踪”部分 。
在 bash 中试试这个:
$ echo $'\e[?1002h'
$ hexdump -C
... click and scroll a bit, then hit enter...
^[[Ma7*^[[Ma7*^[[M`7*^[[M`7*^[[M`7*^[[M`7*^[[Ma7*^[[Ma7*^[[M`1.^[[M`1.
00000000 1b 5b 4d 61 37 2a 1b 5b 4d 61 37 2a 1b 5b 4d 60 |.[Ma7*.[Ma7*.[M`|
00000010 37 2a 1b 5b 4d 60 37 2a 1b 5b 4d 60 37 2a 1b 5b |7*.[M`7*.[M`7*.[|
00000020 4d 60 37 2a 1b 5b 4d 61 37 2a 1b 5b 4d 61 37 2a |M`7*.[Ma7*.[Ma7*|
^C
Returned 130 (SIGINT).
启动鼠标跟踪的程序(在本例中为 bash)接收鼠标输入作为标准输入上的编码内容。
十年来,开源MouseTerm 插件一直在 Terminal.app 中启用滚动。您可以查看其源代码以获取详细信息。
于 2014-07-21T04:45:10.787 回答
7
优胜美地终端侦听备用屏幕转义序列。如果您转到首选项→设置→键盘,您可以看到“滚动备用屏幕”选项。
有关 xterm 的备用屏幕功能的更多信息:
在 VT102 模式下,有转义序列来激活和停用备用屏幕缓冲区,该缓冲区与窗口的显示区域大小相同。激活后,当前屏幕将被保存并替换为备用屏幕。在恢复正常屏幕之前,禁用从窗口顶部滚动的行的保存。xterm 的 termcap(5) 条目允许可视化编辑器 vi(1) 切换到备用屏幕进行编辑并在退出时恢复屏幕。
于 2014-07-21T08:28:46.597 回答