我想在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