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。
我需要使用 -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。