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