【问题标题】:detecting KEY_BACKSPACE in ncurses在 ncurses 中检测 KEY_BACKSPACE
【发布时间】:2017-07-06 08:10:33
【问题描述】:

我正在编写一个 ncurses 程序,我需要检测 KEY_BACKSPACE。我已经在 2 个 linux 发行版下测试了这个程序。

在 suse 下,它运行正常。但是在archlinux下,KEY_BACKSPACE263,但是我从程序中打印出来的是127

对于 suse,它们都是 263

我正在使用int ch = wgetch(somw_window) 来获取按键。

【问题讨论】:

    标签: ncurses xterm


    【解决方案1】:

    这取决于:Backspace 是否发送 ASCII BS (8) 或 ASCII DEL (127) 可通过许多终端仿真器进行配置,例如 xterm。终端描述(由TERM 环境变量选择)必须与终端的配置一致,否则curses 将看不到kbs 功能(退格键)与您的键盘实际匹配发送,你只会得到 8/127 的值。

    一些终端只发送一个或另一个(但你会遇到的大多数硬编码的,使用 ASCII DEL)。

    进一步阅读(xterm 常见问题解答):

    【讨论】:

    • 托马斯,非常感谢!我还有 2 个问题。我用的是putty&tmux,TERM都是screen-256colorputty-Terminal-Keyboard下的配置是一样的。还有什么要配置的吗?从您的帖子来看,curses 不对这种不一致负责?
    • 同意:curses 不负责任,它通常是可配置的。 tmux 的一个复杂之处在于它会尝试将传入的字符映射到终端描述,并且可能会看到例如终端描述,其中kbs=^H 您的终端实际上​​是kbs=^?
    • 如何查看^H^?在终端的区别?我的腻子配置都是^?
    • 除非打补丁,否则 screen-256color 的终端数据库条目有kbs=^H——这可能是你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多