端末の機能を模倣したプログラムを作成しようとしていますが、ユーザーが押したときに再表示して、再入力せずに再実行できるように、配列に格納しますか?現在のキーボード入力を取得するためにCプログラミングでは、標準入力で上下矢印の押下を検出するにはどうすればいいですか?
char input = getch();
がある
端末の機能を模倣したプログラムを作成しようとしていますが、ユーザーが押したときに再表示して、再入力せずに再実行できるように、配列に格納しますか?現在のキーボード入力を取得するためにCプログラミングでは、標準入力で上下矢印の押下を検出するにはどうすればいいですか?
char input = getch();
がある
これは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を使用するということです。
HYありがとうございました。キーが押されたかどうか確認したい場合は、kbhit()
で確認できます。矢印inputnumberは次のとおりです。 左:75 右:77 ダウン:80 アップ:72
ですから、入力に切り替え、矢印がクリックされるかどうかを確認することができます。
どのプラットフォームですか? – cnicutar