|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
Цитата:
|