Для взаимодействия с игровыми контроллерами в Windows существует два API: новый XInput и старый DirectInput. Некоторые игры поддерживают только XInput-совместимые устройства. Для того чтобы контроллер, который не поддерживает XInput, работал в этих играх, необходимо использовать эмулятор контроллера Xbox 360.
лазил на сайте wwwdefender.ru/ и нашел там интересную документину в формате pdf
ее содержание на текущую дату тут опубликую:
История изменений
Версия 1.0 от 24.08.2011
Документ создан.
Версия 1.1 от 22.09.2011
Замена «элемент управления» на «орган управления».
Добавлены более подробные инструкции по вызову системного диалогового окна
«Игровые устройства».
Эмуляция «Xbox 360»-совместимого игрового контроллера при
помощи PC-совместимого игрового контроллера
1. Скачать по адресу http://virusdev.ovh.org/files/ последнюю версию программного
обеспечения для эмуляции «Xbox 360»-совместимого игрового контроллера. Во
время написания этой статьи, это был файл «x360ce vibmod 3.1.4.1.zip».
2. Скопировать xinput dll и «x360ce.ini» в папку, в которой находится исполняемый
файл игры, при помощи которого она запускается.
xinput dll может называться по разному, поэтому можно переименовывать ее в
любой из предложенных ниже вариантов до тех пор, пока не будет найден
работающий:
· «xinput9_1_0.dll»;
· «xinput1_3.dll»;
· «xinput1_2.dll»;
· «xinput1_1.dll».
3. Получить VID и PID игрового контроллера для чего, открыть «Диспетчер
устройств». Развернуть узел «Устройства HID (Human Interface Devices)».
Открыть свойства «HID-совместимого игрового контроллера». Открыть вкладку
«Сведения». В выпадающем списке выбрать «ИД оборудования». Вы увидите
список идентификаторов, например: «HID\VID_044F&PID_B323». VID — это
шестнадцатеричное число после «VID_», PID — это шестнадцатеричное число
после «PID_». Для приведенного выше примера это «044F» и «B323»
соответственно.
Рисунок 1. Окна «Диспетчера устройств» и «Свойств: HID-совместимого игрового контроллера».
4. Скопировать VID и PID игрового контроллера в файл «x360ce.ini». Для
приведенного выше примера соответствующие строчки файла «x360ce.ini»
будут выглядеть так:
VID=0x044F
PID=0xB323
5. Протестировать правильность сопоставления органов управления Вашего
игрового контроллера с органами управления «Xbox 360»-совместимого
игрового контроллера при помощи утилиты «XInputTest.exe». В случае
несоответствия, узнать номер кнопки или другого органа управления, который
должен быть справа от знака равенства в файле «x360ce.ini», можно
следующим образом:
· вызвать системное диалоговое окно «Игровые устройства», если на Вашем
компьютере установлена операционная система Windows 7, через меню
«Пуск» -> «Устройства и принтеры» -> «USB Joystick/Gamepad/Wheel», если
же на Вашем компьютере установлена операционная система Windows
Vista или XP, через меню «Пуск» -> «Панель управления» -> «Игровые
устройства»;
· выбрать интересующее устройство;
· нажать кнопку «Свойства»;
· нажимая на кнопку или пользуясь другим органом управления, смотреть
номер подсвечиваемой кнопки или оси (оси нумеруются следующим
образом: ось X — это ось номер 1, ось Y — это ось номер 2 и т.д.).
Рисунок 2. Ярлык «DEFENDER Wheel» на рабочем столе, системные диалоговые окна «Игровых
устройств» и «Свойств: DEFENDER Wheel». В окне «Свойств: DEFENDER Wheel» подсвечен
поворот руля, нажатая педаль и кнопка номер 5.
Узнать название кнопки или другого органа управления «Xbox 360»-
совместимого игрового контроллера, которая должна быть слева от знака
равенства в файле «x360ce.ini», можно по рисунку 3.
Рисунок 3. Диалоговое окно утилиты «XInputTest.exe» с подписанными названиями кнопок и других
органов управления.
6. Запустить игру и проверить, что эмуляция работает.
7. В случае если эмуляция не работает, использовать установку «FakeAPI=1» в
файле «x360ce.ini».
Приложение. Перевод комментариев файла «x360ce.ini».
[Options]
UseInitBeep=1 #использовать 0 или 1; по умолчанию 1;
#пищать при старте
Log=0 #использовать 0 или 1; создать
#лог-файл в папке «x360ce logs»
FakeAPI=0 #использовать исправления API
[PAD1]
Index=0 #номер контроллера в системном списке
#игровых контроллеров; 0 - первый; -1
# - игнорировать это устройство
Native=0 #экспериментальный режим «родных»
#вызовов, вызывать системную
#«xinput1_3.dll» для поддержки xinput-
#совместимых контроллеров вместе с
#эмулируемыми
VID=0x0810 #VID контроллера
PID=0x0003 #PID контроллера
Left Analog X=1 #номер оси; используйте: «-» для
#инвертирования; предшествующую «s»
#для ползунков, например, «s-1»; 7 для
#отключения
Left Analog Y=-2 #номер оси; используйте: «-» для
#инвертирования; предшествующую «s»
#для ползунков, например, «s-1»; 7 для
#отключения
Right Analog X=6 #номер оси; используйте: «-» для
#инвертирования; предшествующую «s»
#для ползунков, например, «s-1»; 7 для
#отключения
Right Analog Y=-3 #номер оси; используйте: «-» для
#инвертирования; предшествующую «s»
#для ползунков, например, «s-1»; 7 для
#отключения
Left Analog X+ Button=0 #номер кнопки; 0 для отключения
Left Analog X- Button=0 #номер кнопки; 0 для отключения
Left Analog Y+ Button=0 #номер кнопки; 0 для отключения
Left Analog Y- Button=0 #номер кнопки; 0 для отключения
Right Analog X+ Button=0 #номер кнопки; 0 для отключения
Right Analog X- Button=0 #номер кнопки; 0 для отключения
Right Analog Y+ Button=0 #номер кнопки; 0 для отключения
Right Analog Y- Button=0 #номер кнопки; 0 для отключения
D-pad POV=1 #номер переключателя видов; 0 для
#отключения
D-pad Up=0 #номер кнопки; 0 для отключения
D-pad Down=0 #номер кнопки; 0 для отключения
D-pad Left=0 #номер кнопки; 0 для отключения
D-pad Right=0 #номер кнопки; 0 для отключения
A=3 #номер кнопки; 0 для отключения
B=2 #номер кнопки; 0 для отключения
X=4 #номер кнопки; 0 для отключения
Y=1 #номер кнопки; 0 для отключения
Left Shoulder=5 #номер кнопки; 0 для отключения
Right Shoulder=6 #номер кнопки; 0 для отключения
Back=9 #номер кнопки; 0 для отключения
Start=10 #номер кнопки; 0 для отключения
Left Thumb=11 #номер кнопки; 0 для отключения
Right Thumb=12 #номер кнопки; 0 для отключения
TriggerDeadzone=5 #используйте значения от 0 до 255; по
#умолчанию 0; добавить «мертвую зону»
#к триггеру
Left Trigger=7 #номер кнопки; используйте
#предшествующие: «a» для осей; «s» для
#ползунков; «x» для спаренных осей;
#«h» для спаренных слайдеров; «-» для
#инвертирования, например, «x-2»
Right Trigger=8 #номер кнопки; используйте
#предшествующие: «a» для осей; «s» для
#ползунков; «x» для спаренных осей;
#«h» для спаренных слайдеров; «-» для
#инвертирования, например, «x-2»
UseForceFeedback=1 #использовать 0 или 1; по умолчанию 0
SwapMotor=0 #использовать 0 или 1; по умолчанию 0
ForcePercent=100 #использовать значения от 0 до 100;
#по умолчанию 100
ControllerType=1 #геймпад 1; руль 2; рычаг/джойстик 3;
#авиационный джойстик 4; танцевальный
#коврик 5; гитара 6; барабаны 8
AxisToDPad=0 #Использовать ось для контроля
#переключателя видов (0 - отключить, 1
# - включить)
AxisToDPadDeadZone=256 #Мертвые зоны для оси
AxisToDPadOffset=0 #Смещение для оси
POVXReverse=0 #инвертировать вертикальную ось
#переключателя видов
POVYReverse=0 #инвертировать горизонтальную ось
#переключателя видов
Отредактировано 7755 (2012-05-21 02:47:11)