我有这个ncurses应用程序正在执行标准配方 暂时退出ncurses,运行外部 编辑/ shell /无论如何,然后在完成后再回到ncurses。
这〜几乎可以工作,除了前面几个按压的按键 后来显然是假的; ncurses认为^ [和A被看到了 分别如果我按两次向上箭头。
之前有人见过这种行为,并知道什么是神奇的解决方法 这是?如果它有帮助,这就是Ruby ncurses库。
答案 0 :(得分:1)
在稍微挖了一下之后,我发现了一个货物结果解决方案:在stdscr上取出外壳后明确调用键盘(1)。我不知道为什么会这样,但确实如此。如果他们可以解释原因,我会将其他人的答案标记为是。 当前的工作原理是键盘触及某种内部缓冲区并清除它。
抓点:
NCURSES_EXPORT(int) keypad(WINDOW *win, bool flag) { T((T_CALLED("keypad(%p,%d)"), win, flag)); if (win) { win->_use_keypad = flag; returnCode(_nc_keypad(SP, flag)); } else returnCode(ERR); }
答案 1 :(得分:0)
呀。没有键盘,ncurses将不会为您处理转义码。从键盘手册页:
The keypad option enables the keypad of the user's terminal. If en-
abled (bf is TRUE), the user can press a function key (such as an arrow
key) and wgetch returns a single value representing the function key,
as in KEY_LEFT. If disabled (bf is FALSE), curses does not treat func-
tion keys specially and the program has to interpret the escape se-
quences itself. If the keypad in the terminal can be turned on (made
to transmit) and off (made to work locally), turning on this option
causes the terminal keypad to be turned on when wgetch is called. The
default value for keypad is false.
通常,我在ncurses程序中做的第一件事是调用键盘(stdscr,true)来启用漂亮的键盘映射。
希望有所帮助。