3 votes

raw_input reconnaît ^ ? mais pas ^H

J'essaie de faire fonctionner la touche backspace dans un script python que j'ai. En gros, le code dans le script ressemble à quelque chose comme :

print("Please type the character 'h':")
choice = raw_input()
if choice == 'h':
        print("Thanks.")
else:
        print("You input the wrong character.")

Il est évident qu'il s'agit d'un petit script, mais j'ai des difficultés à obtenir raw_input() de faire ce que je veux. Par exemple, si je lance le script, je tape a puis je me rends compte que j'ai tapé le mauvais caractère et j'appuie sur la touche d'effacement arrière, j'obtiens :

Please type the character 'h':
a^H

Mais si je tape ^? au lieu de cela, il traduit la commande correcte :

Please type the character 'h':
<<< CURSOR HERE

Ma question est donc la suivante : Je pense que c'est lié à mon environnement linux - c'est-à-dire que je pense que je dois charger une keymap qui indique à linux que je veux qu'il sorte ^? lorsque l'on appuie sur la touche backspace, mais je ne sais pas pourquoi cela semble fonctionner dans tous les autres programmes (même dans l'interpréteur python, étonnamment - si je place manuellement ce code dans l'interpréteur python, il fonctionne comme prévu !)

2voto

unutbu Points 222216

Quel programme de terminal utilisez-vous ? Il est possible qu'il dispose d'un paramètre permettant de contrôler l'interprétation de la touche d'effacement arrière.

Dans gnome-terminal, si vous cliquez sur Edit>Profile Preferences>Compatibility , vous pouvez demander à gnome-terminal d'envoyer ASCII DEL au lieu de Ctrl-h lorsque la touche de retour arrière est enfoncée. enter image description here


Sinon, je pense que vous pouvez corriger votre keymap avec quelque chose comme

xmodmap -e "keycode 22 = BackSpace"

Ma mémoire est toutefois défaillante. Veuillez consulter le COMMENTAIRE et/ou esta guía pour plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X