2011-08-16 9 views
0

端末の機能を模倣したプログラムを作成しようとしていますが、ユーザーが押したときに再表示して、再入力せずに再実行できるように、配列に格納しますか?現在のキーボード入力を取得するためにCプログラミングでは、標準入力で上下矢印の押下を検出するにはどうすればいいですか?

char input = getch(); 

がある

+0

どのプラットフォームですか? – cnicutar

答えて

1

これはadd_history機能(really simple example hereがあります)を介してすぐに提供される機能の1つで、GNU Readlineを使用することをお勧めします。履歴をスクロールすると、デフォルトで上下の矢印にバインドされます。もちろん、これはLinuxベースのシステムを使用している場合にのみオプションです。

あなたはkbhit()getch()とそれをマニュアルの方法を行う必要がある場合は、それはまた、クロスプラットフォームになるとしません - それはしばらくしているが、 - 私はあなたが二回getch()を呼び出すために必要がある場合がありますことを思い出します。矢印キーにはASCIIコードがありませんので、矢印を押すと2文字になります。最初のもの(ヌルターミネータ'\0'でなければなりません)を破棄して、2番目のものに基づいて決定する必要があります。

if (kbhit()) 
{ 
    ch1 = getch(); 
    if (ch1 != '\0') 
    { 
     // not an arrow 
    } 
    else 
    { 
     ch2 = getch(); 
     switch(ch2) 
     { 
       // might be an arrow key, H - up, P - down, K - left, M - right 
     } 
    } 
} 

私が言いたいことは、できるだけReadlineを使用するということです。

0

HYありがとうございました。キーが押されたかどうか確認したい場合は、kbhit()で確認できます。矢印inputnumberは次のとおりです。 左:75 右:77 ダウン:80 アップ:72

ですから、入力に切り替え、矢印がクリックされるかどうかを確認することができます。

関連する問題