리눅스에서 ncurses를 사용하고 있습니다. getch()를 사용하여 입력 스트림에서 누른 다음 키를 가져 오지만 문자가 아닌 숫자를 반환합니다.아스키 문자에 대한 getch() 응답
Google에서 연구를 수행 한 후 getch()가 표준이 아니므로해야 할 일을 잃었습니다.
0xff, 0x4F00, 0x4700, 0x4800뿐만 아니라 0-9, 탭, ctrl, p, v, m, l, a, b, c, d, e, f 및 화살표 키가 필요합니다. , 0x5000, 0x4D00 :, 0x4B00, 0x4900, 0x5100. 이것들은 getch()의 반환 된 valus에 대한 구문 인 경우에 사용됩니다.
이것은 프로그램의 Windows 버전에서 코드를 다시 만들려고합니다.
unsigned long nr;
if(GetNumberOfConsoleInputEvents(ConH,&nr))
{
if(nr > 0)
{
INPUT_RECORD ipr;
ReadConsoleInput(ConH,&ipr,1,&nr);
if(ipr.EventType == KEY_EVENT && ipr.Event.KeyEvent.bKeyDown)
{
int key = ipr.Event.KeyEvent.uChar.AsciiChar;
if(key == 0) key = ipr.Event.KeyEvent.wVirtualScanCode<<8;
return key;
}
}
}
return 0;
내가 getch의 결과에 사용할 수있는 기능이 있나요() 그래서 내가 위에서 본 .AsciiChar 같은 실제 누른 키, 뭔가를 얻을 수 있나요?
값을 char에 할당하고 출력했는지 확인 했습니까? – PlasmaHH
@PlasmaHH 예, 글자, 숫자 및 탭 키는 단일 숫자로 인쇄되고, 화살표 키는 세 개의 숫자로 인쇄됩니다. – Skeith
그런 다음 int를 출력합니다. 그것들을 char 변수에 할당하고 char을 char처럼 출력하십시오 :'char c = getch(); std :: cout << c;' – PlasmaHH