午夜指揮官對滑鼠滾輪的使用感到困惑
我
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 票2662和2956。
這意味著通常 mc 應該請求 urxvt 不支持的副檔名,因此無需使用任何副檔名即可繼續操作(滑鼠只能工作到第 223 列)。
在您的情況下,應用程序可能執行了不干淨的退出並啟用了此滑鼠擴展,這使 mc 感到困惑(它不了解它收到的內容)。您可以退出 mc,然後通過執行禁用此擴展
echo -ne '\e[?1015l'
,最後重新啟動 mc。不幸的是,在 urxvt-9.21 中,該命令
reset
不會禁用此擴展,儘管它確實應該禁用。我相信這是一個錯誤。如果這個重複出現的問題真的困擾你,我建議你在提示符中加入上述轉義序列(或切換到另一個支持 1006 擴展的模擬器)。或者追踪並修復退出時啟用此擴展的應用程序。