如何从Linux中的Mono / C#访问操纵杆/游戏手柄?

时间:2013-03-20 20:38:39

标签: c# linux mono joystick gamepad

我正在使用运行Debian的Raspberry Pi上的C#进行机器人项目。我已经将PS3 DualShock控制器与操作系统配对,因此它显示为操纵杆设备/ dev / input / js0。

现在我想从C#代码访问DualShock游戏杆和按钮。这似乎比我预期的更难(或至少更加模糊) - 我发现了对OpenTK的引用,即使没有死亡,它似乎至少处于昏迷状态;和XNA,可能会这样做,但包含的方式超出了我的需要(我担心让所有工作在我的RPi上工作),以及其他各种不太受支持的小包装项目。

作为Mono,C#和Linux的新手,我在这里有点过头了......关于在这种环境下读取DualShock状态最简单/最好的方法的任何建议?

3 个答案:

答案 0 :(得分:1)

Monogame是XNA的开源实现。它是跨平台的,并且确实以Linux为目标。你可以看看框架的Input Source Code,看看他们是如何做到的。

答案 1 :(得分:0)

单声道游戏手柄事件通常是轮询的。下面是一个非常基本的代码,用于演示检查按钮“A”状态。

GamePadState gamePadState;

gamePadState = GamePad.GetState((PlayerIndex)0); //Palyer indices are from 0-3, basically indicate the gamepad index

if (gamePadState.Buttons.A == ButtonState.Pressed)
{
    //take action for button "A"
} 

在访问其按钮/触发器/拇指杆状态值之前检查游戏手柄连接状态始终是一个好主意。

if (gamePadState.IsConnected)
{
    //check for button/trigger/thumbstick status
}

答案 2 :(得分:-1)

你应该看一下directinput,但是对于windows来说,有一个现在的库将它包装到c#。它叫做slimDX,也许你可以让它工作