2009-05-22 8 views
2

私はread()システムコールを使って標準入力から読み込んでいますが、気になる小さなものがあります。私は矢印キーを使用することはできません...私が本当にやりたいことは、入力されたテキスト内を前後に移動するために矢印キーを使用することでしたが、それは簡単ではないと思います...だから、少なくとも私がしたいことそれらを無視することです。Cでstdinから矢印キーを無視するには?

今、矢印キーのいずれかを押すと奇妙な出力が発生し、標準出力に何も書き込まれないようにします(結果的に私のread()システムコールの標準入力から読み込まれます)。

これは簡単に実現できますか、それほど簡単ではありませんか?

答えて

4

矢印キーを理想的には(つまり前後に移動して入力を編集する)ように解釈するには、一般にライブラリを使用する必要があります。 Linuxの場合、標準はGNU Readlineです。うまくいけば、誰かがあなたが通常Windows CLIアプリケーションのために使用すると言うことができます。

+0

これはおそらく私が笑を必要とする唯一の答えです... –

0

答えは最終的にキーがどこから来るかによって決まります。私はCygwinの下でこのプログラムを実行しました:

int main(void) 
{ 
    int c=0; 

    while(c != 'X') { 
     c = getchar(); 
     printf("\nc=%d", c); 
    } 
} 

カーソルキーが表示されるたびに、エスケープ(27)、ブラケット、および別の文字が表示されます。 そのような結果が得られた場合は、27の度に3つのキーをスキップすることができます。また、それらを見て、それらを利用することもできます!

前述したように、YMMVは、特にO.S.のために、そしてあなたが呼ぶ実際のキー取得機能です。

関連する問題