问题 我正在开发一个自定义硬件控制器,我希望在用Java处理后将其输入映射到虚拟XInput控制器。基本上对于所有意图和目的,我想直接从java控制一个XInput控制器。
我想到的解决方案
有谁有个好主意如何解决这个问题?我考虑过使用机器人(AWT)跳过XInput并使用键盘/鼠标进行操作,但是游戏拒绝接收软件输入,很可能他们只读取硬件数据。仿真键盘/鼠标会很好,但不是最佳的,因为它会相当尴尬,但我无法找到以游戏识别方式进行操作的方法。所有帮助表示赞赏!
答案 0 :(得分:0)
写一个包装器,你不需要知道任何,我重复任何C ++代码,如果你真的不想。只需使用swig即可。有很多例子,从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。