키를 누를 때 사용자 정의 텍스트를 한 번에 한 글자씩 표시하려면 어떻게 해야 합니까?

키를 누를 때 사용자 정의 텍스트를 한 번에 한 글자씩 표시하려면 어떻게 해야 합니까?

내 GUI에서는 입력한 키를 표시하는 대신 각 키보드 키(적어도 문자, 숫자 및 기호)를 눌렀을 때 사용자 정의 텍스트의 다음 문자가 표시되기를 원합니다.

예를 들어 텍스트를 다음과 같이 설정하면

Bash는 sh 호환 명령 언어 해석기입니다.

나는 다음을 입력합니다:

29vVXKJmTQ3JXJ3jvUNHGRmC4A4ncK

내가 보고 싶은 것:

Bash는 sh와 쉼표와 호환됩니다.

(그리고 다음 키를 누르면 어떤 키인지에 관계없이 "n"이 표시되어야 합니다.)

입력한 키와 사용자 정의 텍스트를 매핑하려면 어떤 전략을 사용할 수 있나요?

답변1

공유하고 즐기세요:

#!/bin/bash

TYPEDSTRING=""
COVERSTRING="hello world"

POS=0

while IFS= read -r -n 1 -s X
do
  if [ "$X" == "" ]
  then
    break
  fi

  if [ "$X" == $'\x7F' ]
  then
    echo -n -e '\b \b'
    if [ "$POS" != "0" ]
    then
      POS=$(( (POS-1) ))
      TYPEDSTRING="${TYPEDSTRING:0:POS}"
    fi
  else
    echo -n "${COVERSTRING:POS:1}"
    TYPEDSTRING="${TYPEDSTRING}$X"
    POS=$(( (POS+1) ))
  fi
done

echo
echo "'$TYPEDSTRING'"

관련 정보