読者です 読者をやめる 読者になる 読者になる

glfw3 のインプットコールバックに関するメモ

参考 GLFW: Input handling

ここにメモする他にもたくさんあるが上のレファレンスやヘッダファイルを参照

  • キーボードコールバックを登録する関数
glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun)

登録するコールバック関数 cbfun は次の型を持たねばならない(関数名は任意)

void cbfun(GLFWwindow* window, int key, int scancode, int action, int mods)

ここで
key は GLFW_KEY_* たくさんあるので以下を参照 GLFW: Keyboard keys
scancode はキーのシステム固有のスキャンコード(何のことやら分からない)
action は GLFW_{PRESS,RELEASE,REPEAT}
mods は GLFW_MOD_{SHIFT,CONTROL,ALT,SUPER}

  • マウスコールバックを登録する関数
glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun) 	

登録するコールバック関数 cbfun は次の型を持たねばならない(関数名は任意)

void cbfun(GLFWwindow* window, int button, int action, int mods)

ここで
button は GLFW_MOUSE_BUTTON_{LEFT,RIGHT,MIDLE} など その他は以下を参照 GLFW: Mouse buttons
action は GLFW_{PRESS,RELEASE}
mods は GLFW_MOD_{SHIFT,CONTROL,ALT,SUPER}

ついでに言えばこのコールバック関数の中では次の関数が必要になることが多い

void glfwGetCursorPos(GLFWwindow* window, double* xpos, double*	ypos) 		

これは左上隅を原点とするマウスカーソルのウインドウ座標を xpos, ypos に代入する関数(xpos, ypos は int 型でないことに注意)

  • マウスの動きに関するコールバックを登録する関数
glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun)

登録するコールバック関数 cbfun は次の型を持たねばならない(関数名は任意)

void cbfun(GLFWwindow* window, double xpos, double ypos)

ここで xpos,ypos は左上隅を原点とするマウスカーソルのウインドウ座標(xpos, ypos は int 型でないことに注意)