gpt4 book ai didi

c - GNU 编译器 KEY_F 未检测到功能键

转载 作者:太空宇宙 更新时间:2023-11-04 03:07:18 24 4
gpt4 key购买 nike

基本上,我对我的控制台应用程序进行了按键检测,由于某种原因它没有检测到功能键。

这是我的代码,我在 Linux 上使用 GNU 编译器。任何帮助或想法将不胜感激。

        refresh();
key = getch();
switch(key) {
case KEY_HOME: key = HOME; break;
case KEY_END: key = END; break;
case KEY_UP: key = UP; break;
case KEY_DOWN: key = DOWN; break;
case KEY_LEFT: key = LEFT; break;
case KEY_RIGHT: key = RIGHT; break;
case KEY_NPAGE: key = PGDN; break;
case KEY_PPAGE: key = PGUP; break;
case KEY_DC: key = DEL; break;
case KEY_IC: key = INSERT; break;
case KEY_F(1): key = F(1); break;
case KEY_F(2): key = F(2); break;
case KEY_F(3): key = F(3); break;
case KEY_F(4): key = F(4); break;
case KEY_F(5): key = F(5); break;
case KEY_F(6): key = F(6); break;
case KEY_F(7): key = F(7); break;
case KEY_F(8): key = F(8); break;
case KEY_F(9): key = F(9); break;
case KEY_F(10): key = F(10); break;
case KEY_F(11): key = F(11); break;
case KEY_F(12): key = F(12); break;
case KEY_ENTER: key = ENTER; break;
case KEY_BACKSPACE: key = BACKSPACE; break;
default:
//key = F(2); //For any function keypress, it jumps to default
if (NON_ASCII(key) != 0)
key = UNKNOWN;
}

最佳答案

我不是 curses 专家,但是通过阅读手册页我得到了这个程序:

#include <curses.h>

int main()
{
int key;

initscr(); cbreak(); noecho();

while (1)
{

key = getch();
printw ("%u\n", key);
}

return 0;
}

当我按下 F 键时,我得到一个 3 个字符的序列:27、79、(80 + N-1),其中 N 是 F 键的编号。我认为您的开关必须识别出该键是一个转义序列并对其进行特殊处理。

编辑:该模式仅适用于 F1-F4。 F5 改变它。您可能希望合并来自 curses 的 F(n) 宏。

关于c - GNU 编译器 KEY_F 未检测到功能键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com