Window 使用 ncursesw 获取未显示的 getch 输入,但使用 ncurses

Window for taking getch input not showing using ncursesw but works with ncurses

我需要使用 -lncursesw 来打印出 unicode 字符,否则它不会工作,但是在用它编译之后,用户输入的 window 出现了,但是当我向它输入字符时,它没有'显示但仍然可以输入。老实说,我不知道如何进行这项工作,我已经使用 setlocale(LC_ALL, ""); 设置了区域设置

这是输入代码:

while ((ch = getch()) != KEY_F(9)) driver(ch);

和一段用于处理输入的示例代码(使用 switch cases)这是默认的:

    default:
        form_driver(commandForm, ch);
        showGrid();
        wrefresh(mainScreen);
        break;

这是它的样子,第一张图片使用 -lncursesw,第二张图片使用 -lncurses。

您正在使用函数

form_driver(commandForm, ch);

不会处理 wide-characters。此外,getch 不处理 wide-characters(提示:尝试 select/paste 屏幕截图中显示的那些 double-line 框字符到输入字段)。

如果您打算处理 Unicode (wide-characters),您应该使用 get_wch。还, ncurses 有一个备用函数 form_driver_w(当然在 ncursesw 库中)这可能有助于解决您的问题。

不使用 -lform,而是使用 -lformw。