1
A
回答
3
創建SDL_event
結構和作爲記錄在http://wiki.libsdl.org/SDL_KeyboardEvent和http://wiki.libsdl.org/SDL_Keysym然後用SDL_Pushevent()
把事件到事件隊列中的字段填寫: http://wiki.libsdl.org/SDL_PushEvent
SDL_Event event;
event.type = SDL_KEYDOWN;
event.timestamp = lastEvent.timestamp + 1;
event.windowID - lastEvent.windowID;
event.state = SDL_PRESSED;
event.keysym.scancode = SDL_SCANCODE_ESCAPE; // from SDL_Keysym
event.keysym.sym = SDLK_ESCAPE;
event.keysym.mod = 0; // from SDL_Keymod
SDL_PushEvent(&Event) // Inject key press of the Escape Key
做同樣的事情在任何其他事件包括鼠標事件的SDL_Event聯合:http://wiki.libsdl.org/SDL_MouseButtonEvent
0
該程序演示瞭如何在SDL程序中讀取鼠標和鍵盤輸入。它將運行幾秒鐘,當按下其中任何一個鍵時顯示「向上箭頭」或「向下箭頭」,並在點擊鼠標時顯示「鼠標點擊」和座標。
#include "SDL2/SDL.h"
#include <stdlib.h>
int main(){
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *window = SDL_CreateWindow("Keyboard and mouse input",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
500, 500, SDL_WINDOW_SHOWN);
int i;
for (i = 0; i< 3000; i++){
SDL_UpdateWindowSurface(window);
SDL_Event event;
while (SDL_PollEvent(&event)){//this is where the important stuff happens:
if(event.type == SDL_KEYDOWN) {
switch(event.key.keysym.sym) {
case SDLK_UP:
puts("up arrow");
break;
case SDLK_DOWN://for full list of key names, http://www.libsdl.org/release/SDL-1.2.15/docs/html/sdlkey.html
puts("down arrow");
break;
}
}
else if (event.type == SDL_MOUSEBUTTONDOWN){
int x, y;
SDL_GetMouseState(&x,&y);
printf("%s button mouse clicked at: (%d,%d)\n",
(event.button.button == SDL_BUTTON_LEFT)? "left" : "right",
x,y);
}
}
SDL_Delay(1);
}
SDL_DestroyWindow(window);
SDL_Quit();
}
這是SDL版本2
基本上,你需要調用SDL_PollEvent
,然後檢查所生成的SDL_Event struct
的信息,關於它是否是一個鍵盤或鼠標事件,如果是這樣,其中鼠標是或按了什麼按鈕。
1
從SDL 2.0.3開始,SDL不支持向其他應用程序發送輸入事件。在Windows上,您可以使用the SendInput
function將輸入事件發送到其他應用程序。使用X11,您可以使用the xcb_send_event
function。我不確定OS X,iOS或Android。
相關問題
- 1. 鍵盤/鼠標輸入C++
- 2. SDL(自動)鍵盤輸入
- 3. C++ SDL鍵盤響應
- 4. SDL使用現代OpenGL導航的鍵盤和鼠標事件
- 5. 簡化的鍵盤鼠標:輸入
- 6. C#WPF捕獲鍵盤和鼠標
- 7. 在c中禁用鍵盤/鼠標
- 8. SDL 2.0鍵盤輸入問題
- 9. SDL鍵盤輸入不觸發
- 10. 沒有鍵盤/鼠標輸入時的淡出控制
- 11. 如何阻止C#中的鍵盤和鼠標輸入?
- 12. 在C中捕獲和發送鍵盤/鼠標輸入#
- 13. 獲取控制檯中的鼠標和鍵盤輸入C++
- 14. 在C++中模擬鼠標和鍵盤輸入
- 15. 跨平臺鍵盤/鼠標輸入推薦
- 16. 禁用鍵盤和鼠標
- 17. SDL鼠標點擊
- 18. 如何在GTK中獲得鍵盤和鼠標輸入?
- 19. 如何模擬鍵盤/鼠標按鍵?
- 20. 嘗試從SDL中的鼠標指針獲取輸入C
- 21. SDL C++鼠標輸入處理切換效果
- 22. SendInput發送鼠標輸入和鍵盤輸入
- 23. 將觸摸輸入更改爲鼠標/鍵盤輸入
- 24. 經典鍵盤/鼠標輸入「轉換」爲Android觸摸輸入
- 25. 使用鍵盤按左鍵鼠標C#wpf
- 26. 第一次鼠標移動出乎意料地使用SDL(C++)
- 27. 當SDL不具備焦點時,SDL不停止移動鼠標 - SDL C++
- 28. 鼠標輸入/鼠標離開和鼠標左鍵按下
- 29. 鼠標/鼠標輸出的DIV
- 30. 如何讓SDL調用單獨的函數來處理主循環中的鍵盤/鼠標輸入
鼠標/鍵盤*輸出*?您是否嘗試將合成的鼠標/鍵盤事件發送到其他程序,類似於[AutoHotkey](http://en.wikipedia.org/wiki/AutoHotkey)之類的內容? – genpfault 2014-09-15 21:05:08