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

C++ sending Joystick directional input to program

我试图欺骗 PS3 控制器并将模拟摇杆定向输入发送到特定程序,但我无法弄清楚 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 尝试不同的值没有任何作用。我做错了什么吗,and/or 有没有办法输入特定的角度,比如说,如果我输入 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/,它的工作方式似乎类似。