Java 虚拟手柄

Java Virtual Gamepad

问题 我正在开发一个自定义硬件控制器,我想在 Java 中对其进行处理后将其输入映射到虚拟 XInput 控制器。基本上出于所有意图和目的,我想直接从 java.

控制 XInput 控制器

我想到的解决方法

有没有人知道如何解决这个问题?我考虑过跳过 XInput 并使用 Robot (AWT) keyboard/mouse 来完成它,但游戏拒绝获取软件输入,很可能它们只读取硬件数据。模拟 keyboard/mouse 会很好,但不是最佳选择,因为它会很尴尬,但是我无法找到一种游戏可以识别的方法。感谢所有帮助!

写一个包装器,你不需要知道任何,如果你真的不想,我会重复任何 C++ 代码。只需使用 swig. There are plenty of examples, start with something basic。 (请注意,我不打算包括示例,因为那里已经有足够的东西了)。有问题可以留言,我会帮你解决的。

编辑 好的,我会很好,简单的例子,假设你有一个 example.h 文件,在相同的位置创建一个 example.i:

%module example

%{
#include "example.h"
%}

%include "example.h"

确保 swig 在你的路径中,然后执行:

%swig -java example.i

然后你需要构建一个原生的java库,比如它是如何完成的here,(注意你不需要做所有javah的东西),但基本上:

% g++ -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" 
  -shared -o example.dll example.c example.cpp

它为您提供了您的 dll,当 运行 您的 java 程序时,您必须将其与任何其他依赖库保持一致。请注意,如果您编译 32 位库,则需要使用 32 位 jvm。