c/c++ でキー リーダー プログラムを実装しています。私はLinuxを使用しています。バッファリングされていない getchar 関数がキーのデータ値をほとんど返さないことはわかっています。すべての ASCII キー (az、AZ、1-9、句読点、Enter、Tab、および ESC) に対して、getchar() から返される単一の値があります。矢印キーなどの他のキーについては、ESC キーが読み取られますが、getchar() が再度呼び出されると、別の値 (A、B、C、または D) が取得されます。
A = 65
B = 66
上矢印 = 27 91 65
F5 = 27 91 49 53 126
ESC = 27
ここに完全なテーブル
読み取る文字が他にもあるのか、それとも 1 文字だけなのかを確認する方法はありますか? キーが読み取られ、その最初の値が ESC の場合、それが ESC で始まるファンクション キーなのか、それとも ESC キーなのかわかりません。
#include <stdlib.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <iostream>
#include <string>
#include <termios.h>
#include <unistd.h>
using namespace std;
int main(int argc, char *argv[]) {
int ch[5];
int i;
struct termios term;
tcgetattr( STDIN_FILENO, &term );
term.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &term );
ch[0] = getchar();
// If ch[0] = 27 and there is more data in the buffer
// printf("You pressed a function key");
// Else
// printf("You pressed ESC");
return 0;
}