2015-02-22 4 views
0

Я пытаюсь обмануть контроллер PS3 и отправить аналоговый ввод направленного ввода в определенную программу, но я не могу понять, как работает структура INPUT.hi. Я могу послать нажатия клавиш более сC++ отправка джойстика направленный вход в программу

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, я мог бы генерировать сигнал джойстика, который соответствовал бы этому углу, как я могу делать с нажатиями клавиш?

+0

Значения 'wParamL' и' wParamH' объединяются для формирования 'wParam' для указанного' uMsg'. К сожалению, для 'WM_INPUT' это либо' RIM_INPUT', либо 'RIM_INPUTSINK', с фактическими входными данными, отправленными в' lParam'. У меня такое чувство, что либо: a) 'WM_INPUT' не является правильным сообщением для' SendInput() ', или b) хуже, что вы не сможете подделать контроллер PS3 с помощью' SendInput() '. К сожалению, я не знаю точно; Я только основываю это на MSDN, и у меня нет опыта здесь, извините. Удачи. – andlabs

ответ

1

Похоже, что я не могу сделать это с помощью 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/, который, похоже, работает аналогичным образом.