diff --git a/src/decode.sh b/src/decode.sh index bb3d84b4..0c80cceb 100644 --- a/src/decode.sh +++ b/src/decode.sh @@ -2270,10 +2270,16 @@ function ble-decode/attach { return 1 fi - # Note #D1213: linux コンソール (kernel 5.0.0) は "\e[>" - # でエスケープシーケンスを閉じてしまう。5.4.8 は大丈夫。 - [[ $TERM == linux ]] || + case $TERM in + (linux|st|st-*) + # Note #D1213: linux コンソール (kernel 5.0.0) は "\e[>"でエスケープシーケ + # ンスを閉じてしまう。5.4.8 は大丈夫。 + # Note: st の unknown csi sequence メッセージに対して文句を言う人がいた。st + # は TERM で判定できるので DA2 はスキップできる。 + true ;; + (*) ble/util/buffer $'\e[>c' # DA2 要求 (ble-decode-char/csi/.decode で受信) + esac } function ble-decode/detach { diff --git a/src/util.sh b/src/util.sh index 30481514..d329aa9f 100644 --- a/src/util.sh +++ b/src/util.sh @@ -3266,9 +3266,19 @@ function ble/term/modifyOtherKeys/.supported { # 改造版 Poderosa は通知でウィンドウサイズを毎回変更するので表示が乱れてしまう [[ $MWG_LOGINTERM == rosaterm ]] && return 1 - # Note #D1213: linux (kernel 5.0.0) は "\e[>" でエスケープシーケンスを閉じてしまう。 - # 5.4.8 は大丈夫だがそれでも modifyOtherKeys に対応していない。 - [[ $TERM == linux ]] && return 1 + case $TERM in + (linux) + # Note #D1213: linux (kernel 5.0.0) は "\e[>" でエスケープシーケンスを閉じ + # てしまう。5.4.8 は大丈夫だがそれでも modifyOtherKeys に対応していない。 + return 1 ;; + (minix|sun*) + # minix, Solaris のコンソールもそのまま出力してしまう。 + return 1 ;; + (st|st-*) + # Note #D1631: st のエラーログに unknown csi が出るとの文句が出たので無効化。 + # 恐らく将来に亘って st は modifyOtherKeys には対応しないだろう。 + return 1 ;; + esac return 0 }