Como exibir texto personalizado uma letra por vez à medida que as teclas são pressionadas?

0

Na minha GUI, quero que todas as teclas do teclado (pelo menos as letras, números e símbolos), quando pressionadas, resultem na exibição da próxima letra do meu texto personalizado, em vez de resultar na exibição da chave digitada. / p>

Por exemplo, se eu definir o texto como:

Bash is an sh-compatible command language interpreter

e eu digito:

29vVXKJmTQ3JXJ3jvUNHGRmC4A4ncK

Eu quero ver aparecer:

Bash is an sh-compatible comma

(e a próxima tecla pressionada, independentemente de qual seja, deve exibir "n".)

Qual estratégia posso usar para fazer um mapa entre qualquer chave digitada e um texto personalizado?

    
por 1228693 11.12.2016 / 22:27

1 resposta

0

Compartilhe e aproveite:

#!/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'"
    
por 12.12.2016 / 04:35