【发布时间】:2017-07-06 08:10:33
【问题描述】:
我正在编写一个 ncurses 程序,我需要检测 KEY_BACKSPACE。我已经在 2 个 linux 发行版下测试了这个程序。
在 suse 下,它运行正常。但是在archlinux下,KEY_BACKSPACE是263,但是我从程序中打印出来的是127。
对于 suse,它们都是 263。
我正在使用int ch = wgetch(somw_window) 来获取按键。
【问题讨论】:
我正在编写一个 ncurses 程序,我需要检测 KEY_BACKSPACE。我已经在 2 个 linux 发行版下测试了这个程序。
在 suse 下,它运行正常。但是在archlinux下,KEY_BACKSPACE是263,但是我从程序中打印出来的是127。
对于 suse,它们都是 263。
我正在使用int ch = wgetch(somw_window) 来获取按键。
【问题讨论】:
这取决于:Backspace 是否发送 ASCII BS (8) 或 ASCII DEL (127) 可通过许多终端仿真器进行配置,例如 xterm。终端描述(由TERM 环境变量选择)必须与终端的配置一致,否则curses 将看不到kbs 功能(退格键)与您的键盘实际匹配发送,你只会得到 8/127 的值。
一些终端只发送一个或另一个(但你会遇到的大多数硬编码的,使用 ASCII DEL)。
进一步阅读(xterm 常见问题解答):
【讨论】:
TERM都是screen-256color,putty-Terminal-Keyboard下的配置是一样的。还有什么要配置的吗?从您的帖子来看,curses 不对这种不一致负责?
kbs=^H 您的终端实际上是kbs=^?。
^H、^?在终端的区别?我的腻子配置都是^?
kbs=^H——这可能是你的问题。