2011-10-08 5 views
2

GTK +에서 키보드 및 마우스 입력을 받고 싶습니다. 키보드 입력의 경우 accelgroup을 사용해 보았지만 SDL 또는 SFML처럼 부드럽지 않았습니다. 열쇠를 눌렀을 때. 응답하고 잠시 멈추고 다시 응답하고 잠시 멈추었습니다. 마우스 입력이란 주어진 시간에 마우스의 위치를 ​​얻고 마우스 버튼을 클릭했는지 여부를 의미합니다. 키보드 입력에 의해 키 누름과 릴리즈를 추적하고 싶습니다. 나는 Educational Graphics Program을 위해 GTK +와 cairo를 사용하고 있습니다. 종류의 거북이 그래픽. 어떤 도움? 또는 GTK + 및 키보드 및 마우스 입력을 추적하는 제 3 자 라이브러리 (C 또는 C++)?GTK에서 키보드 및 마우스 입력을 얻으려면 어떻게해야합니까?

+0

를 참조하십시오 ... 소리가 난다. – ptomato

+0

@DeadMG 태그 죄송합니다. 제 3 자 _C_ 또는 _C++ _ 라이브러리를 언급 한 이후 C++ 및 C 태그가 포함되어야한다고 생각했습니다. – ApprenticeHacker

+0

이 프로젝트에 너무 열심이 없다면 Qt를 살펴볼 수 있습니다. 그것을 게임 엔진으로 활용하면 아무런 문제가 없습니다. – RushPL

답변

2

. 특히

http://developer.gnome.org/gtk-tutorial/2.90/x344.html

과에서

http://developer.gnome.org/gtk-tutorial/2.90/

과를 살펴 보자

http://developer.gnome.org/gtk-tutorial/2.90/c2422.html

두 번째 링크는 당신이 원하는 것을 할 것 같다 키보드 콜백에 ​​대한 소스 코드가 있습니다. 세 번째 링크는 마우스를 사용하는 간단한 그리기 프로그램에 대한 자습서의 시작입니다.

편집 : gtkglext 라이브러리는 GTK +에서 OpenGL을 사용할 수 있도록 지원합니다. 당신은 게임 프로그래밍 라이브러리를보고해야처럼 내가 GTK는이 작업에 대한 잘못된 도구가 될 수 있다고 생각

http://projects.gnome.org/gtkglext/

+0

음, gtkglext는 Gtk2 만 언급 할 수 있습니다. Gtk2는 더 이상 유지 관리되지 않으며 ApprenticeHacker는 Gtk3을 사용 중일 수 있습니다. [GtkGLArea] (https://developer.gnome.org/gtk3/stable/GtkGLArea.html)는 Gtk에서 GL을 사용하기 위해 현재 유지 관리되고있는 방법입니다. – theGtknerd

0

문서에 따르면 1 마우스 모션 이벤트를 GDK_POINTER_MOTION_MASK 마스크로 설정하면 해당 버튼을 누르지 않아도 모션 이벤트가 발생합니다. 또한, Gtk+ tutorials은 마우스 모션 이벤트를 활용한다는 개념을 보여줍니다.

키를 눌렀을 때. 응답하고 잠시 멈추고 다시 응답하고 잠시 멈추었습니다.

이게 무슨 뜻인가요? 나는 당신이 'A'를 눌러를 개최 할 때, 당신은 'aaaaaaaaaaaaa'를 얻을 키 반복 동작 (텍스트 편집기에서와 같은을 설명하는 생각 To disable it in your app :. 당신이 원하는 것은 적당히 복잡

XKeyboardControl control; 
control.auto_repeat_mode = 0; 

gdk_error_trap_push(); 
XChangeKeyboardControl (GDK_DISPLAY(), KBAutoRepeatMode, &control); 
gdk_error_trap_pop(); 
+0

이것은 SFML 및 SDL 에서처럼 키 반복이 일관성이 없음을 의미합니다. SDL에서 스프라이트를 움직이면 키를 놓을 때까지 isKeyPressed()가 항상 true로 평가되기 때문에 균일하게 이동합니다. 그러나 GTK +에서 키를 누르면 스프라이트가 움직이며 초 단위로 정지 한 다음 다시 이동하고 정지 한 다음 이동합니다. 즉 isKeyPressed()는 true, false, 그리고 true로 평가됩니다. 마이크로 초 동안 거짓, 그 다음 다시 참. 죄송합니다. 설명하기가 어렵습니다. – ApprenticeHacker

관련 문제