GNU 화면에서 "문자 전송 지연"을 설정하는 방법은 무엇입니까? (미니 컴퓨터처럼)

GNU 화면에서 "문자 전송 지연"을 설정하는 방법은 무엇입니까? (미니 컴퓨터처럼)

Minicom에는 "문자 전송 지연"이라는 유용한 설정이 있습니다.

미니 컴퓨터 스크린샷

GNU 화면에도 비슷한 설정이 있나요?

답변1

저는 screen전문가가 아니므로 더 나은 솔루션이 있을 수 있지만, 귀하에게는 이것으로 충분할 수 있습니다. 명령 slowpaste으로만 작동 paste하지만 xsel현재 X11 선택을 파일에 복사한 다음 화면 readreg명령을 사용하여 해당 파일을 레지스터로 읽는 데 사용할 수 있습니다. 마지막으로 paste레지스터의 내용을 붙여넣을 수 있습니다. 다음은 ~/.screenrc나에게 효과적이었습니다.

defslowpaste 100
bindkey ^v exec sh -c 'xsel -o >/tmp/sel; screen -X eval "readreg p /tmp/sel" "paste p"'

현재 창이 아직 없기 때문에 이 시작 파일에서는 밀리초 단위로 문자당 지연을 사용하는 것이 slowpaste작동하지 않는 것 같지만 기본값을 설정하면 defslowpaste제대로 작동합니다.

그러면 control-v2개의 명령이 포함된 쉘 스크립트에 키가 바인딩됩니다. 첫 번째 실행에서는 xsel -oX11 선택 항목을 파일에 넣습니다 /tmp/sel. 두 번째는 2개의 내장 명령을 사용하여 화면을 호출합니다. readreg파일을 레지스터로 읽고 100밀리초 지연으로 문자를 표시 p합니다 .paste

이는 Stéphane Chazelas의 정보를 사용합니다.답변즉시 반환 과 관련하여 다른 명령과 연결할 exec수 없습니다 eval. 대답은 exec예를 들어 ...이제 xsela로 대체 cat하고 파일이 끝날 때까지 사용자 입력을 읽을 수 있는 기본 "fdpat"를 사용하는 방법을 설명합니다 control-D.

답변2

일반적인 TX 레이턴시는 없는 것 같습니다. 그러나 다음 명령을 사용하여 텍스트를 붙여넣기 위한 설정이 있습니다 paste.screenslowpaste

명령: SlowPaste 밀리초

명령: defslowpaste 밀리초

(아무것도 아님)

붙여넣기 명령을 통해 현재 창에 텍스트를 삽입하는 속도를 정의합니다. Slowpaste 값이 0이 아닌 경우 텍스트는 문자 단위로 기록됩니다. 각 쓰기 후에는 애플리케이션이 입력을 처리할 수 있도록 화면이 밀리초 동안 일시 중지됩니다. 많은 양의 텍스트를 붙여넣을 때 기본 시스템에서 흐름 제어 문제가 노출되는 경우에만 Slowpaste를 사용하세요. defslowpaste는 새 창의 기본값을 지정합니다.

원천:https://www.gnu.org/software/screen/manual/screen.html

.screenrcstdin의 입력에 대해 "느린 붙여넣기 모드"를 얻으려면 파일에 다음 줄을 추가할 수 있습니다 .

bindkey ^V exec ... sh -c 'cat >"$HOME/.screen-slowpaste.tmp" && screen -S "$STY" -X eval "slowpaste 1" "readreg p \"$HOME/.screen-slowpaste.tmp\"" "paste p"'

이는 stdin의 입력을 수신하는 새 키 바인딩을 등록하고( CTRLVEOF 전송 을 통해 수행됨) 이를 . 이 예에서는 지연이 1밀리초로 설정되었습니다 .catCTRLD$HOME/.screen-slowpaste.tmpreadregslowpaste 1

SCREENSLOWPASTE="$(cat </dev/stdin)"입력을 환경 변수로 저장하고 레지스터에 복사하여 임시 파일을 건너뛸 수도 있습니다 register p "$SCREENSLOWPASTE". 그러나 이 변형은 붙여넣을 수 있는 텍스트의 양이 매우 제한되어 있어 "명령이 너무 깁니다"라는 오류가 금방 발생합니다.

관련 정보