8

したがって、キーボードのアップ キーの場合は 27 になり、驚くべきことにダウン キーの場合も 27 になります。プログラムがアップ キーとダウン キーで異なる動作をする必要がありますが、それを理解できないようです。Linux を使用していますが、Linux で動作する必要があります。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    int c = getchar();

    if(c==27)
    {
        printf("UP");
    }

    if(c==28)
    {
        printf("DOWN");
    }

} 
4

4 に答える 4

14

これ27は、矢印の ANSI エスケープ シーケンスを取得していることを意味します。これらは 3 文字のシーケンスになります: 27、91、次に 65、66、67、68 (IIRC) で上、下、右、左です。27への呼び出しからを取得した場合はgetchar()、さらに 2 回呼び出して91と、どの矢印キーが押されたかを決定する番号を取得します。

他の誰かが言ったように、これはプラットフォーム固有のものですが、気にしないかもしれません。

于 2013-03-09T02:31:45.990 に答える
5

これは ncurses ライブラリを使用するように書かれたプログラムで、押された矢印キーを表示します。

#include<ncurses.h>

int main()
{
int ch;

/* Curses Initialisations */
initscr();
raw();
keypad(stdscr, TRUE);
noecho();

printw("Press E to Exit\n");

while((ch = getch()) != 'E')
{
    switch(ch)
    {
    case KEY_UP:         printw("\nUp Arrow");
                break;
    case KEY_DOWN:      printw("\nDown Arrow");
                break;
    case KEY_LEFT:      printw("\nLeft Arrow");
                break;
    case KEY_RIGHT:     printw("\nRight Arrow");
                break;
    default:    
                printw("\nThe pressed key is %c",ch);

    }
}

printw("\n\Exiting Now\n");
endwin();

return 0;
}

コンパイル中に、ncurses ライブラリにリンクする必要があります。

gcc main.c -lncurses

これは、ncurses を使い始めるのに役立つチュートリアルです。

于 2013-03-09T03:05:52.333 に答える
1

http://www.gnu.org/software/ncurses/で ncurses ライブラリを確認してください。それをプログラムにリンクすると、重要なイベントを使用してあらゆる種類の優れた処理を実行できるようになります。ドキュメントを読んで、使用するかどうかを確認してください。探していると言う機能を正確に提供します。

ハッピーコーディング!

于 2013-03-09T02:49:31.823 に答える
0

押したときに生成される文字と押したキーを混同しています。Shift キーを押したときに 1 文字が返されると思いますか? このプログラムを試してください:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    do
    {
        int c = getchar();
        printf("c=%d\n", c);
    }
    while (1);
}

上矢印を押してから入力してみてください。次に、下矢印を押してから入力してください。キーから文字への変換は単純ではないことがわかります。

于 2013-03-09T02:31:25.260 に答える