ncurses到外壳,然后用键搞乱

Edw*_*ang 5 ruby ncurses

我有这个ncurses应用程序正在执行标准配方,暂时退出ncurses,运行外部编辑器/ shell /等等,然后在完成后退回到ncurses.

这几乎是有效的,除了之后ncurses得到的前几个按键显然是假的; 如果我按两次向上箭头,ncurses认为^ [和A分别被看到.

以前有人见过这种行为并知道解决这个问题的神奇之处是什么?如果它有帮助,这是Ruby ncurses库.

Edw*_*ang 1

经过一番研究后,我找到了一个货物崇拜解决方案:在 stdscr 上退出 shell 后显式调用 keypad(1) 。我不知道为什么会这样,但确实如此。如果其他人能解释原因,我会将其标记为“是”。 当前的工作原理是键盘接触某种内部缓冲区并将其清除。

从头开始:

NCURSES_EXPORT(整数)
键盘(WINDOW *win,布尔标志)
{
    T((T_CALLED("键盘(%p,%d)"), win, flag));

    如果(赢){
        win->_use_keypad = 标志;
        returnCode(_nc_keypad(SP, 标志));
    } 别的
        返回代码(错误);
}