在ARM Linux上从Mono访问Xbox控制器

本文关键字:访问 Xbox 控制器 Mono 上从 ARM Linux | 更新日期: 2023-09-27 18:12:36

我正在用c#/Mono编写一个在ARM计算机上运行的程序。它需要能够将Xbox控制器的状态插入到系统中。我已经尝试了许多不同的库(XInputDotNet,其中之一),但它们都有各种各样的问题(比如试图使用不兼容的本地c++ dll)。

我如何在ARM机器上读取Xbox控制器的状态?

注:虽然有类似的问题,但这不是重复的。以上问题的所有解决方案都因为这样或那样的原因在ARM上失败了。

在ARM Linux上从Mono访问Xbox控制器

要更直接地与您的任务交谈-您需要与USB设备接口。这通常意味着打开USB驱动程序的句柄,为您提供一个管道,通过该管道您可以向USB设备读取和写入数据。在Linux用户空间应用程序中,libusb是一个很好的方法。

如果你要在c# on mono上做这个,你将需要对libusb做pinvoke。如果你还不熟悉pinvoke,我建议你练习一些小的东西,因为它们很快就会变得复杂;特别是,阅读SafeHandles。

至少有一个现有的项目,你可以使用为基础的工作- xboxdrv,这是一个用户级的c++应用程序,建立在libusb之上,读取和写入控制器的数据,并将其呈现为一个标准的操纵杆,以便任何操纵杆感知程序可以利用它。

libusb库可以在任何Linux平台上编译,包括ARM,实际上有一个示例程序(xusb)可以报告XBox控制器的状态。

看到https://github.com/libusb/libusb/blob/master/examples/xusb.c L945 .