Java虚拟游戏板
问题 我正在开发一个定制的硬件控制器,我想在用Java处理它之后,将它的输入映射到一个虚拟的XInput控制器。基本上出于所有目的,我想直接从java控制XInput控制器 我想到的解决方案Java虚拟游戏板,java,virtual,directinput,gamepad,xinput,Java,Virtual,Directinput,Gamepad,Xinput,问题 我正在开发一个定制的硬件控制器,我想在用Java处理它之后,将它的输入映射到一个虚拟的XInput控制器。基本上出于所有目的,我想直接从java控制XInput控制器 我想到的解决方案 编写一个设备驱动程序,这似乎是一个真正的麻烦,我很乐意避免。我以前从未编写过设备驱动程序,也不知道如何注册XInput控制器。这似乎需要很长时间才能完成,时间我既没有也不想花 使用PPJoy和library。我想避免这种情况,因为PPJoy非常过时(从我能找到的上一次更新至今已经超过10年),并且需要额外
- 编写一个设备驱动程序,这似乎是一个真正的麻烦,我很乐意避免。我以前从未编写过设备驱动程序,也不知道如何注册XInput控制器。这似乎需要很长时间才能完成,时间我既没有也不想花
- 使用PPJoy和library。我想避免这种情况,因为PPJoy非常过时(从我能找到的上一次更新至今已经超过10年),并且需要额外的一层来将DirectInput转换为XInput。图书馆也拒绝为我编译
- 为…开发一个包装器。然而,这需要从DirectInput到XInput的重新映射。我不熟悉C/C++包装,但到目前为止,这似乎是最好的选择
有人知道如何解决这个问题吗?我曾经考虑过跳过XInput,使用键盘/鼠标机器人(AWT)来完成它,但游戏拒绝接收软件输入,很可能它们只读取硬件数据。模拟键盘/鼠标会很好,但不是最佳的,因为它会相当尴尬,但我无法找到一种方法来做到这一点的方式,游戏承认。感谢大家的帮助写一个包装器,你不需要知道任何,我重复任何C++代码,如果你真的不想。简单使用。有很多例子,从一些事情开始。(注意,我不打算包括这个例子,因为已经有足够的东西了)。如果你有困难,请留言,我会帮你的 编辑 好的,我很好,快速举例,假设您有一个example.h文件,创建一个example.I,在同一位置:
%module example
%{
#include "example.h"
%}
%include "example.h"
确保swig在您的路径中,然后执行以下操作:
%swig -java example.i
然后,您需要构建一个本机java库,比如它是如何完成的(注意,您不需要做所有的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。< p>写一个包装器,你不需要知道任何,我重复任何C++代码,如果你真的不想这样做。简单使用。有很多例子,从一些事情开始。(注意,我不打算包括这个例子,因为已经有足够的东西了)。如果你有困难,请留言,我会帮你的 编辑 好的,我很好,快速举例,假设您有一个example.h文件,创建一个example.I,在同一位置:
%module example
%{
#include "example.h"
%}
%include "example.h"
确保swig在您的路径中,然后执行以下操作:
%swig -java example.i
然后,您需要构建一个本机java库,比如它是如何完成的(注意,您不需要做所有的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。谢谢:)我稍后会尝试,因为我似乎吃了不好的东西,所以我现在在床上,无法尝试。包装VJoy似乎是最好的选择。并不是说我不能读/写C++,我只是乐意避免这样做。制作包装纸似乎也是一门很有用的知识。谢谢:)我以后会试试看,好像我吃了不好的东西,所以我现在躺在床上,无法尝试。包装VJoy似乎是最好的选择。并不是说我不能读/写C++,我只是乐意避免这样做。制作包装似乎也是一门非常有用的知识。