winapi - C++ 将操纵杆方向输入发送到程序

标签 winapi controller joystick

我正在尝试欺骗 PS3 Controller 并将模拟摇杆方向输入发送到特定程序,但我无法弄清楚 INPUT.hi 结构是如何工作的。我可以发送按键信息

INPUT keys;
keys.type = INPUT_KEYBOARD;
keys.ki.dwFlags = KEYEVENTF_SCANCODE;
keys.ki.wScan = 0x11;//hex for 'w' key
SendInput(1, &keys, sizeof(INPUT));
Sleep(60);//delay to ensure game doesnt drop keypress
keys.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &keys, sizeof(INPUT));

我相信发送操纵杆命令也会类似地工作,比如

INPUT analogSticks;
analogSticks.type = INPUT_HARDWARE;
analogSticks.hi.uMsg = WM_INPUT;
analogSticks.hi.wParamL = //what are the values for these?
analogSticks.hi.wParamH = //what are the values for these?
SendInput(1, &analogSticks, sizeof(INPUT));

但是尝试 wParamL 和 wParamH 的不同值没有任何作用。我是否做错了什么,和/或者有没有一种方法可以输入特定的角度,比如说,如果我输入 45,我可以生成一个与该角度相对应的操纵杆信号,就像我可以用按键做的那样?

最佳答案

看起来我不能用 winapi 做到这一点,但是操纵杆驱动程序 vJoy vjoystick.sourceforge.net/工作得很好,而且他们的 sdk http://vjoystick.sourceforge.net/site/index.php/dev/87-writing-a-feeder-application2清楚地解释了如何欺骗操纵杆输入。

另一个选项是 http://developer.mbed.org/users/wim/notebook/usb-joystick-device/ ,其工作原理似乎类似。

关于winapi - C++ 将操纵杆方向输入发送到程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662875/

相关文章:

c++ - 为什么 std::mutex 比 CRITICAL_SECTION 慢两倍

c - c中串口读取,使用WinApi函数; WaitCommEvent 失败

c - 未声明变量的操纵杆代码错误

ubuntu - SDL2 看不到操纵杆,但操作系统可以

c++ - win32 C++ 在屏幕上放置图像

c++ - 光标位置 c++ GetCursorPos 方法

model-view-controller - Spring Controller 的 URL 请求映射未按预期工作

java - responseEntity 的问题。即使 ResponseEntity.HttpStatus 为 201,MockMvc.Perform() 也会给出 200 状态代码

angularjs - 如何从 Angular JS 中的另一个 Controller 成功回调调用 Controller 服务