C++ sending Joystick directional input to program

左心房为你撑大大i 提交于 2019-12-08 03:56:46

问题


I'm trying to spoof a PS3 controller and send analog stick directional input to a specific program, but i can't figure out how the INPUT.hi struct works. I can send keypresses over with

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));

and i believe that sending over joystick commands would work similarly, something like

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));

but trying out different values for wParamL and wParamH doesnt do anything. Am i doing something wrong, and/or is there a way i can input specific angles, say, if i were to put in 45, i could generate a joystick signal that would correspond to that angle, much like i can do with keypresses?


回答1:


It looks like i cant do this with the winapi, but the joystick driver vJoy vjoystick.sourceforge.net/ works perfectly, and their sdk http://vjoystick.sourceforge.net/site/index.php/dev/87-writing-a-feeder-application2 clearly explains how to spoof joystick input.

Another option is http://developer.mbed.org/users/wim/notebook/usb-joystick-device/, which appears to work similarly.



来源:https://stackoverflow.com/questions/28662875/c-sending-joystick-directional-input-to-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!