我想在GTK +中接收键盘和鼠标输入。对于键盘输入,我尝试使用加速组,但它不像SDL或SFML那样流畅。当我按下一个键。它响应,暂停了一段时间,再次作出反应,停顿了一段时间,等等。通过鼠标输入我的意思是在给定的时间获取鼠标的位置以及是否单击鼠标按钮。通过键盘输入,我想跟踪按键和释放。我正在使用GTK +和开罗进行教育图形计划。有点像海龟图形。任何帮助?或任何与GTK +一起使用并跟踪键盘和鼠标输入的第三方库(C或C++)?如何在GTK中获得键盘和鼠标输入?
回答
你想要做的是比较复杂的。看看
http://developer.gnome.org/gtk-tutorial/2.90/
和特别是在
http://developer.gnome.org/gtk-tutorial/2.90/x344.html
和
http://developer.gnome.org/gtk-tutorial/2.90/c2422.html
第二个环节有一个键盘回调,似乎做你想做的源代码。第三个链接是使用鼠标的简单绘图程序教程的开始。
编辑:为了完整起见,我会提到gtkglext库支持在GTK +中使用OpenGL。见
呃,你可能想提一下,gtkglext只是Gtk2。 Gtk2不再维护,和/或ApprenticeHacker可能会使用Gtk3。 [GtkGLArea](https://developer.gnome.org/gtk3/stable/GtkGLArea.html)是当前使用GL与Gtk一起使用的方式。 – theGtknerd
根据文档] 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();
由此我的意思是关键重复是不一致的,就像在SFML和SDL中一样。如果您在SDL中移动精灵,它会一致移动,因为isKeyPressed()总是计算为true,直到您释放该键为止。但是在GTK +中,如果你持有一个键,它会移动,然后停止,然后再次移动,然后停止,然后移动......即isKeyPressed()的结果为真,然后是假,然后是真。然后假一秒,然后再次为真。我知道,很难解释对不起。 – ApprenticeHacker
- 1. 键盘/鼠标输入C++
- 2. 在C中捕获和发送键盘/鼠标输入#
- 3. 如何阻止C#中的键盘和鼠标输入?
- 4. 获取控制台中的鼠标和键盘输入C++
- 5. 如何在鼠标点击时获得鼠标位置 - Python Gtk
- 6. 如何检测Windows Mobile上的键盘和/或鼠标输入?
- 7. 如何禁用JSpinner的键盘和鼠标输入?
- 8. 如何设置鼠标和键盘输入
- 9. 在Ubuntu中使用Python获得的鼠标和键盘事件
- 10. SendInput发送鼠标输入和键盘输入
- 11. 在C++中模拟鼠标和键盘输入
- 12. 简化的键盘鼠标:输入
- 13. 如何在鼠标输入事件中触发鼠标中键?
- 14. 获取Java中的键盘/鼠标输入
- 15. 在LINUX上获取设备输入(鼠标,键盘...)
- 16. PCL展台例如:无法获得键盘和鼠标事件
- 17. 在python中,你如何获得它来输入键盘按?
- 18. 如何在C++中获得直接键盘输入?
- 19. 如何在自制操作系统中获得键盘输入?
- 20. 如何在VB.NET中获得原始键盘输入?
- 21. 如何自动化鼠标和键盘?
- 22. C#WPF捕获键盘和鼠标
- 23. 禁用键盘和鼠标
- 24. 将触摸输入更改为鼠标/键盘输入
- 25. 经典键盘/鼠标输入“转换”为Android触摸输入
- 26. 在Java中模拟用户输入(键盘,鼠标)?
- 27. 在WPF中模拟鼠标/键盘输入
- 28. 鼠标输入/鼠标离开和鼠标左键按下
- 29. Genymotion鼠标和键盘输入不起作用
- 30. 使用了BlockInput到方框键盘和鼠标输入
我认为GTK可能是这个职位的错误的工具......听起来像你应该寻找游戏编程库。 – ptomato
@DeMix对不起,对标签。自从我提到第三方_C_或_C++ _库以来,我认为应该包含C++和C标记。 – ApprenticeHacker
如果你不太深入这个项目,你可以看看Qt。它没有任何问题(不是我所知道的)将它用作游戏引擎。 – RushPL