raw_input识别^?但不是^ H.

时间:2012-01-22 01:19:47

标签: python linux raw-input

我正在尝试让退格键在我拥有的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,然后意识到我输入了错误的字符,因此按下退格键,我得到:

Please type the character 'h':
a^H

但是,如果我输入^?,它会转换为正确的命令:

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

所以,我的问题是:我认为这与我的linux环境有关 - 也就是说我需要加载一个键盘图,告诉linux我希望它在命中退格键时输出^? ,但我不知道为什么它似乎适用于所有其他程序(甚至python解释器,令人惊讶的是 - 如果我手动将该代码放入python解释器,它按预期工作!)

1 个答案:

答案 0 :(得分:2)

您使用的终端程序是什么?它可能有一个设置,您可以使用该设置控制退格键的解释方式。

在gnome-terminal中,如果点击Edit>Profile Preferences>Compatibility, 你可以告诉gnome-terminal在按下退格键时发送ASCII DEL而不是Ctrl-h。 enter image description here


否则,我认为你可以用

之类的东西来修复你的键盘映射
xmodmap -e "keycode 22 = BackSpace"
然而,我的记忆生疏了。有关详细信息,请参阅HOWTO和/或this guide