OpenGLの入力関係

opengl-input.png

glutForceJoystickFunc,
glutSpaceballButtonFunc,
glutSpaceballMotionFunc,
glutButtonBoxFunc,
glutTabletButtonFunc,
glutDeviceGet
glutGetModifiers…..keyboardやmouse関数が呼ばれてる間にShiftとかCtrlが認識できるらしい。
glutSpecialFunc….F1,F2,UP,DOWNなどの特殊キーが押された時に呼び出される。Esc, Backspace, deleteは通常キー扱い。

List of pages tagged with opengl-input:

// キーボードに関するコールバック
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
void glutSpecialFunc(void (*func)(int key, int x, int y));
一般的なキーは、glutKeyboardFuncで。F1~F12、矢印キー、PageUp、PageDown、Home、End、Insertに関してはglutSpecialFuncを使う。

エスケープ,バックスペース,デリートキーに関しては、specialFuncでは無く、glutKeyboardFuncを使う。

エスケープは'\033'、バックスペースは、'\010'、デリートは'\177'

(ただ、バックスペースは、Macbookに無いキーなので、使いたくない。)

ALT、CTRL、SHIFTキーは、コールバックでは無くて、
int glutGetModifiers(void);
を読んで返値を調べることで判別する。

// マウスに関するコールバック
void glutMouseFunc(void (*func)(int button, int state, int x, int y));
void glutMotionFunc(void (*func)(int x, int y));
void glutPassiveMotionFunc(void (*func)(int x, int y));
void glutEntryFunc(void (*func)(int state));
コールバックの引数、buttonは、GLUT_LEFT_BUTTON、GLUT_MIDDLE_BUTTON、GLUT_RIGHT_BUTTONのどれか。

stateはGLUT_UPかGLUT_DOWN。

glutEntryFuncのstateは、GLUT_LEFTかGLUT_ENTERED。

マウスの利用時にも、キーボードのALT、SHIFT、CTRLの状態は、glutGetModifiersで取得可能。


gui input

サポートサイト Wikidot.com guiinput