raw_input识别^?但不识别^H

3 投票
1 回答
1499 浏览
提问于 2025-04-17 10:48

我在尝试让我的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 个回答

2

你正在使用什么终端程序?它可能有一个设置,可以控制你按下退格键时的反应。

在gnome-terminal中,如果你点击 Edit>Profile Preferences>Compatibility,你可以设置让gnome-terminal在按下退格键时发送 ASCII DEL,而不是Ctrl-h。

在这里输入图片描述

如果不行,我觉得你可以用类似下面的方式来修复你的键盘映射:

xmodmap -e "keycode 22 = BackSpace"

不过我的记忆有点模糊。请参考 这个HOWTO 和/或 这个指南 来获取详细信息。

撰写回答