![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Мне нужно эмулировать нажатие нескольких кнопок на геймпаде для игры. То есть мы нажимаем, например, "V", и эмулируется нажатие клавиш "X, A, RB". Как это сделать? Желательна поддержка всех геймпадов, но можно только оригинального от xbox'а.
|
#2
|
|||
|
|||
![]() Есть идея. Я прочитал про имитацию нажатий на клавиатуре и увидел строку
Код:
keybd_event(VK_LCONTROL, 0, 0, 0); //Нажатие левого Ctrl Помогите, пожалуйста! Последний раз редактировалось serega6531, 08.07.2013 в 18:54. Причина: Идея |
#3
|
||||
|
||||
![]() Трясите драйвер вашей железки, должен ведь у неё быть что-то типа АПИ (игры-то его как-то обрабатывают), если узнаете константы жима кнопок, то тогда уже можно их эмульнуть и с клавиатуры. Это не проблема.
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
![]() Цитата:
UPD. Нашёл этот сайт. Буду разбираться. |
#5
|
||||
|
||||
![]() Будьте любезны, назовите пжлст геймпад (в смысле, что искать), у меня у ребёнка есть парочка Halо 4, это оно?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
|||
|
|||
![]() Цитата:
|
#7
|
|||
|
|||
![]() Есть одна функция - XInputSetState, но это не то. Это для вибрации. Как я понял, нет возможности отправить нажатие. Или как это сделать?
|
#8
|
||||
|
||||
![]() И так есть поддержка клавиатуры, в смысле GUID_SysKeyboardEm
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#10
|
||||
|
||||
![]() Смотрите здесь
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#11
|
|||
|
|||
![]() Цитата:
Код:
XINPUT_GAMEPAD_DPAD_UP 0x00000001 XINPUT_GAMEPAD_DPAD_DOWN 0x00000002 XINPUT_GAMEPAD_DPAD_LEFT 0x00000004 XINPUT_GAMEPAD_DPAD_RIGHT 0x00000008 XINPUT_GAMEPAD_START 0x00000010 XINPUT_GAMEPAD_BACK 0x00000020 XINPUT_GAMEPAD_LEFT_THUMB 0x00000040 XINPUT_GAMEPAD_RIGHT_THUMB 0x00000080 XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 XINPUT_GAMEPAD_A 0x1000 XINPUT_GAMEPAD_B 0x2000 XINPUT_GAMEPAD_X 0x4000 XINPUT_GAMEPAD_Y 0x8000 Вот так: Код:
keybd_event(XINPUT_GAMEPAD_START, 0, 0, 0); //Нажатие START |
#12
|
||||
|
||||
![]() Не всё так просто, это лишь возвращаемые значения структуры из GetState, к системе они отношения не имеют - надо задействовать XINPUT1_4.dll, но похоже, это передаётся только в одну сторону. См. исходники примера, хоть они и на Си++, но будет понятно, что нужно вызывать и можно ли это вообще делать.
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#13
|
|||
|
|||
![]() Цитата:
Итак, как же всё таки передать нажатия? |
#14
|
||||
|
||||
![]() Вот ещё по данной теме. А тут вообще шикарно описываются старый и новый DInput и XInput в подробностях, аж зачитался
![]() З.Ы. Наверное лучше использовать готовый эмулятор геймпада, чем его делать самому, как удалось понять, всё равно проблема решается пропатчиванием "родной" для xbox'а библиотеки контроллера, видимо там переназначаются кнопки на другие и в этом весь велосипед. Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 09.07.2013 в 17:08. |
#15
|
|||
|
|||
![]() Цитата:
|