기본적으로 콘솔 응용 프로그램의 키 감지 기능이 있습니다. 기능 키가 감지되지 않습니다.GNU 컴파일러 KEY_F가 기능 키를 감지하지 못합니다.
여기 내 코드입니다, 리눅스에서 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;
}
여기서 'KEY_x'값은 # 어디에 정의되어 있습니까? 'KEY_F (num) '가 맞습니까? 기능 키를 누를 때 무슨 일이 일어나는가?'key '는 어떤 가치가 있는가? 자, 이건 꽤 표준 디버깅입니다. – Konrad
이 코드는 (n) 저주입니까? 기능 키를 누를 때'key' 값을 검사하여 얻고 자하는 값과 비교하여 디버깅을 시작해야한다고 생각합니다. 나는 당신이 의미한다고 생각하는 것을 의미하지 않는 기능 키를 가진 이상한 것을 가지고있는 저주를 기억하는 것 같다. –
콘라드, 너의 오만함이 나를 도와주지 않는다. 이미 언급 한 모든 작업을 수행했습니다. 예 R ()입니다. 어떤 이유로 '~'을 매번 반환합니다. 출력 값을 출력하기 위해 별도의 작은 앱을 만들었습니다. 각 기능 키마다 126을 반환합니다. 나는이 시점에서 꽤 혼란 스럽다. –
Marcin