문자별로 조용히 읽는 것이 작동하지 않습니다.

문자별로 조용히 읽는 것이 작동하지 않습니다.

다음과 같이 사용자 입력 문자를 문자별로 자동으로 읽으려고 합니다.

그리고 [1];
  읽기 -s -N 1
  ...
완벽한

이 루프는 xtermVNC( )에서 완벽하게 작동하지만 퍼티(xterm) 또는 Linux 터미널 및 대부분의 다른 텍스트 터미널에서는 부분적으로만 작동합니다.

키보드를 "과도하게" 사용하여 동시에 여러 키를 누를 때 문제가 발생합니다.-s 모드를 사용해도 일부 키 입력이 계속 울립니다..

나는 또한 출력과 stty -echo.

어떤 아이디어가 있나요?

답변1

read -secho터미널은 이 명령을 실행하는 동안에만 비활성화됩니다 read. 따라서 두 명령 사이에 무언가를 입력하면 read터미널 드라이버가 echo이를 반환합니다.

다음을 사용하지 않고 루프를 비활성화 echo한 후 호출 해야 합니다 .read-s

if [ -t 0 ]; then
  saved=$(stty -g)
  stty -echo
fi
while read -rN1; do
  ...
done
if [ -t 0 ]; then
  stty "$saved"
fi

관련 정보