raw_input распознает ^?но не ^ H - PullRequest
3 голосов
/ 22 января 2012

Я пытаюсь заставить работать клавишу Backspace в скрипте Python, который у меня есть. По сути, код в скрипте выглядит примерно так:

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

Теперь, очевидно, это игрушечный скрипт, но мне трудно заставить raw_input() делать то, что я хочу. Например, если я запускаю сценарий, введите a, а затем поймете, что набрал неправильный символ и, нажав клавишу Backspace, я получу:

Please type the character 'h':
a^H

Но если я вместо этого наберу ^?, это будет означать правильную команду:

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

Итак, мой вопрос заключается в следующем: я думаю, что это связано с моей средой Linux - то есть, мне нужно загрузить раскладку клавиатуры, которая сообщает linux, что я хочу, чтобы она выводила ^?, когда нажата клавиша возврата, но Я не знаю, почему он работает во всех других программах (даже удивительно, даже с интерпретатором Python - если я вручную добавлю этот код в интерпретатор Python, он будет работать как положено!)

1 Ответ

2 голосов
/ 22 января 2012

Какую терминальную программу вы используете? Он может иметь настройку, с помощью которой вы можете контролировать интерпретацию клавиши возврата.

В gnome-терминал, если вы нажмете Edit>Profile Preferences>Compatibility, Вы можете указать gnome-терминал отправлять ASCII DEL вместо Ctrl-h при нажатии клавиши возврата. enter image description here


В противном случае, я думаю, вы можете исправить свою раскладку клавиш с помощью чего-то вроде

xmodmap -e "keycode 22 = BackSpace"

Однако память у меня ржавая. Пожалуйста, обратитесь к HOWTO и / или этому руководству для деталей.

...