Terminal

午夜指揮官對滑鼠滾輪的使用感到困惑

  • April 7, 2018

mc經常使用,它多年來一直執行良好。不久前(幾週?)mc似乎被滑鼠滾輪弄糊塗了,並在螢幕上列印了類似於這些的 ANSI Escape 序列:

[97;14;10M[96;15;10M[97;16;10M[96;16;10M[96;16;10M

我找不到任何帶有 3 個數字和M的 ANSI 序列。97似乎意味著roll up並且96似乎意味著roll down。其他數字是個謎。

同樣奇怪的是,這個故障是不可預測的,並且在使用時隨時開始mc。而且,更奇怪的是:我可以mc在終端中打開一個,它工作正常,而在另一個終端中,一個mc失敗。

最後一個似乎表明故障不是一個共同因素(可能是gpm這樣)。

我正在使用 Slackware 14.2、urxvt (v9.22) 和 am$ 光學滑鼠。有人知道在哪裡看嗎?我也跑mc進去了rxvt,相比之下,urxvt滾動起來似乎有些遲鈍。

這些是 urxvt 的 1015 擴展滑鼠座標,參見http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking(順便說一下,第二個和第三個數字是單元格座標)。此協議擴展的主要目的是支持超過 223 的滑鼠座標。

另一個更有利的擴展是 xterm 的 SGR 1006 模式,它解決了相同的問題(以及更多),而沒有 urxvt 擴展的一些缺點。Xterm 的 1006 模式應該會淘汰 urxvt 的 1015 模式。

然而,rxvt-unicode(又名 urxvt)是我所知道的唯一支持滑鼠事件但不支持此擴展的終端仿真。我在 2012 年 1 月與它的作者談過,但他拒絕實施這種模式,原因我無法理解。也許有人應該再試一次;urxvt 只需要幾行瑣碎的程式碼。

Midnight Commander 實現了這個更新更好的 xterm 擴展,並且不再實現 urxvt 擴展。有關詳細資訊,請參閱 mc 票26622956

這意味著通常 mc 應該請求 urxvt 不支持的副檔名,因此無需使用任何副檔名即可繼續操作(滑鼠只能工作到第 223 列)。

在您的情況下,應用程序可能執行了不干淨的退出並啟用了此滑鼠擴展,這使 mc 感到困惑(它不了解它收到的內容)。您可以退出 mc,然後通過執行禁用此擴展echo -ne '\e[?1015l',最後重新啟動 mc。

不幸的是,在 urxvt-9.21 中,該命令reset不會禁用此擴展,儘管它確實應該禁用。我相信這是一個錯誤。

如果這個重複出現的問題真的困擾你,我建議你在提示符中加入上述轉義序列(或切換到另一個支持 1006 擴展的模擬器)。或者追踪並修復退出時啟用此擴展的應用程序。

引用自:https://unix.stackexchange.com/questions/307906