キーを押したときにカスタムテキストを一度に1文字ずつ表示するにはどうすればよいですか?

キーを押したときにカスタムテキストを一度に1文字ずつ表示するにはどうすればよいですか?

私の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'"

関連情報