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++ SDL键盘响应
- 2. SDL使用现代OpenGL导航的键盘和鼠标事件
- 3. SDL键盘输入不触发
- 4. 如何阻止C#中的键盘和鼠标输入?
- 5. 在C中捕获和发送键盘/鼠标输入#
- 6. 获取控制台中的鼠标和键盘输入C++
- 7. 在C++中模拟鼠标和键盘输入
- 8. 跨平台键盘/鼠标输入推荐
- 9. 禁用键盘和鼠标
- 10. 如何在GTK中获得键盘和鼠标输入?
- 11. 如何模拟键盘/鼠标按键?
- 12. 将触摸输入更改为鼠标/键盘输入
- 13. 第一次鼠标移动出乎意料地使用SDL(C++)
- 14. 当SDL不具备焦点时,SDL不停止移动鼠标 - SDL C++
- 15. 鼠标输入/鼠标离开和鼠标左键按下
- 16. 鼠标/鼠标输出的DIV
- 17. Pygame鼠标/键盘控制条件
- 18. 发送鼠标和键盘事件
- 19. LWJGL键盘和鼠标检测按
- 20. 如何自动化鼠标和键盘?
- 21. 控制鼠标和键盘Golang?
- 22. 在Java中禁用键盘/鼠标
- 23. 查找键盘事件设备,鼠标
- 24. Sikuli不牺牲鼠标和键盘
- 25. Autohotkey结合鼠标和键盘?
- 26. 由鼠标引起的键盘输入延迟
- 27. 鼠标点击有时会导致键盘输入,怎么样?
- 28. 如何检测Windows Mobile上的键盘和/或鼠标输入?
- 29. TPopup子控件不接受键盘/鼠标输入 - (Delphi XE7 FireMonkey)
- 30. 在Java中模拟用户输入(键盘,鼠标)?
鼠标/键盘*输出*?您是否尝试将合成的鼠标/键盘事件发送到其他程序,类似于[AutoHotkey](http://en.wikipedia.org/wiki/AutoHotkey)之类的内容? – genpfault 2014-09-15 21:05:08