キーボード入力

2010年1月4日

ファイル

03-key.tar.gz

使い方

ウインドウにフォーカスしてキーボードのキーを押すと、メッセージが表示されます。

内容

GLUT を使ってキーボード入力を拾います。コールバック関数を使います。

キーボード入力を拾うコールバック関数を設定する関数は、以下の二つです。

  • glutKeyboardFunc() : 普通のキーが押されたときのコールバック関数

  • glutSpecialFunc() : 矢印キーなどの特殊なキーが押されたときのコールバック関数

glutKeyboardFunc(), glutSpecialFunc() それぞれに設定するコールバック関数の定義は、次のようにします。

void key(unsigned char key, int x, int y);
void special(int key, int x, int y);

引数の key にはキーの種類、x, y にはウインドウ上のマウスの位置が入ります。key() の引数 key の値は、押されたキーの文字が入ってきます。ESC など文字のキーでないものの場合は、それ相当の値が入ります。たとえば、以下の値が入ってきます (printf 調べ)。

#define KEY_ESC 0x1b
#define KEY_DELETE 0x7f
#define KEY_BACKSPACE 0x08
#define KEY_ENTER 0x0d

special() の引数 key には、次のような値が入ります。

  • GLUT_KEY_LEFT : ←ボタン
  • GLUT_KEY_UP : ↑ボタン
  • GLUT_KEY_RIGHT : →ボタン
  • GLUT_KEY_DOWN : ↓ボタン

以上のほかに、Shift, Ctrl, Alt キーが押されているかどうかを glutGetModifiers() で調べることができます。この関数は引数を取らず、以下の値を返します。

  • GLUT_ACTIVE_SHIFT : Shift キーが押されている
  • GLUT_ACTIVE_CTRL : Ctrl キーが押されている
  • GLUT_ACTIVE_ALT : Alt キーが押されている

OpenGL プログラミング 目次へ