SDL游戏摇杆(Joy Stick)开发
时间:2010-08-21 来源:bluedrum
一直以为LINUX下SDL游戏摇杆(JoyStick)编程好象没有什么含意,没有什么合适的硬件来测试。近日去找华强北找实验模块,偶然找到USB的游戏摇杆.买来来一试,插上Linux直接支持,并且以在支持JoyStick的游戏可以直接操作。(比如SDLPAL). 这个外设解决了我一直头痛的问题--在开发板上如何方便打游戏。触摸屏太慢,不方便,USB键盘不能移动。USB鼠标就更不方便了。Joy Stick完美解决这个问题。在开发板,甚至是手机或者MID都可以用它来做外设。
一.JoyStick的硬件安装 -------------------------------------------------------------- 将USB的接口的JoyStick 插RHEL 5的主机上。可以直接被识别。 用dmesg | tail 查看
usb 3-2: new low speed USB device using uhci_hcd and address 3 usb 3-2: configuration #1 chosen from 1 choice input: DragonRise Inc. Generic USB Joystick as /class/input/input3 input: USB HID v1.10 Joystick [DragonRise Inc. Generic USB Joystick ] on usb-0000:00:1d.1-2 |
event0 event1 event2 event3 js0 mice mouse0 |
二.SDL Joy Stick编程 --------------------------------------------------------------- SDL的Joy Stick编程相当简单。 2.1 首先在初始化时要初始化Joy Stick模块 用SDL_Init(SDL_INIT_JOYSTICK | ...) 或者 SDL_Init(SDL_INIT_EVERYTHING); 2.2 初始化游戏摇杆设备 定义Joy Stick 数据结构 SDL_Joystick *g_pJoy; 检测Joy Stick设备是否存在 SDL_NumJoysticks() 打开JoyStick设备 SDL_JoystickOpen(0); #0表示第一个设备 设置JoyStick事件生效 SDL_JoystickEventState(SDL_ENABLE);
if (SDL_NumJoysticks() > 0) |
2.3 在事件处理函数加入对游戏摇杆事件处理。 对Joy Stick事件处理主要如下几个事件. SDL_JOYAXISMOTION : Joy移动事件 SDL_Event.jaxis.axis 表示移动方向,0 ,X方向移动,1,Y方向移动 SDL_Event.jaxis.value 表示移动位移 SDL_JOYBUTTONDOWN: Joy Stick几个标准按键事件 SDL_Event.jbutton.button 表明是按下哪一个按键 2.4 关闭Joy Stick设备 用 SDL_JoystickClose(g_pJoy);关闭
if (SDL_JoystickOpened(0)) |
三.下一阶段工作 ----------------------------------------------------------------- 1.将不支持Joy Stick的游戏加入相关支持。 2.在开发板加入Joy Stick支持 3.在MID上加入Joy Stick支持