An open API service indexing awesome lists of open source software.

https://github.com/r57zone/DSAdvance

Advanced Xbox controller emulation for DualSense, DualShock 4, Pro Controller, Joy-Cons / Продвинутая эмуляция Xbox геймпада для DualSense, DualShock 4, Pro контроллера, Джойконов
https://github.com/r57zone/DSAdvance

digispark dualsense dualshock4 game-accessibility gamepad gamepads gyro gyro-aiming gyroscope joy-con joy-cons joycons left-handed motion-aiming motion-control motion-driving motion-gaming pro-controller vigem windows

Last synced: 2 days ago
JSON representation

Advanced Xbox controller emulation for DualSense, DualShock 4, Pro Controller, Joy-Cons / Продвинутая эмуляция Xbox геймпада для DualSense, DualShock 4, Pro контроллера, Джойконов

Awesome Lists containing this project

README

          

[![EN](https://user-images.githubusercontent.com/9499881/33184537-7be87e86-d096-11e7-89bb-f3286f752bc6.png)](https://github.com/r57zone/DSAdvance/)
[![RU](https://user-images.githubusercontent.com/9499881/27683795-5b0fbac6-5cd8-11e7-929c-057833e01fb1.png)](https://github.com/r57zone/DSAdvance/blob/master/README.RU.md)

# DSAdvance
Продвинутая эмуляция Xbox геймпада для Sony DualSense, DualSense Edge, DualShock 4, Nintendo Pro контроллера или Джойконов. Поддерживается прицеливание и вождение наклонами геймпада, эмуляция стиков на тачпаде, эмуляция клавиатуры и мыши, а также [внешние педали](https://github.com/r57zone/GamepadExternalPedals), с дополнительными кнопками и другие джойстики Digispark. Работает на базе драйвера [ViGEm](https://github.com/nefarius/ViGEmBus).

[![](https://user-images.githubusercontent.com/9499881/164945071-5b9f86dd-c396-45a5-817b-fc7068450f02.gif)](https://youtu.be/gkyqO_HuPnk)
[![](https://user-images.githubusercontent.com/9499881/164945073-cfa1bfb7-cb82-4714-b2ad-7ecd84a5bcfc.gif)](https://youtu.be/gkyqO_HuPnk)

# Особенности
✔️ Поддержка вождения наклонами и прицеливания (гироскоп, без каких-либо настроек);

✔️ Простое переключение между режимами вождения и прицеливания (максимум инновационного геймплея);

✔️ Управление Windows, изменение громкости, создание скриншотов, видео, с помощью геймпада;

✔️ Переназначение кнопок Xbox контроллера, различные профили. Поддерживается "колесо жестов", наклонами геймпада, +8 доп. кнопок;

✔️ Эмуляция клавиатуру и мыши для старых игр, а также профили. Поддерживается "колесо жестов", наклонами геймпада +8 доп. кнопок;

✔️ Поддержка адаптивных триггеров для Sony DualSense (пистолет, автомат, винтовка, лук, педаль авто);

✔️ Различные режимы эмуляции для игр с адаптивными триггерами;

✔️ Поддержка двух геймпадов, первый с полным функционалом, а второй с упрощённым (необходимо включить в конфиге);

✔️ Поддержка игры на одном Джойконе, с полноценной эмуляцией всех кнопок, с помощью "колеса жестов" (наклоны геймпада);

✔️ Показ заряда батареи на световой панели и индикаторах игрока (для геймпадов Sony);

✔️ Выключение подсветки для полного погружения в темноте;

✔️ Поддержка внешних модифицированных педалей для гонок с любыми 16 кнопками;

✔️ Поддержка эмуляции нажатий любых кнопок Xbox-контроллера, с помощью Digispark джойстиков (до 16 кнопок);

✔️ Поддерживается режим для левшей, в котором кнопки отзеркалены справо налево, переключите профиль Xbox на `Left-Handed`;

Поддерживается несколько режимов работы, переключаются они нажатими по тачпаду на DualSene и DualShock 4, кнопками `Capture`, и `Home` для Pro контроллера, и Джойконов (повторное нажатие `Home` переключает режим прицеливания - всегда/L2), а также нажатием тачпада для геймпадов совместимых с DualShock 4, но без сенсороной панели (если изменить параметр `ChangeModesWithoutAreas` на `1`). Также можно изменять режимы работы на `ALT` + `1/2`, повторное нажатие на `ALT + 1` выключает вождение, а `ALT + 2` переключает режим прицеливания (всегда/L2).

![](https://github.com/user-attachments/assets/c8a02f77-8b66-43bf-b1dd-676b2b84cbca)

Изменить цвет геймпада по умолчанию и цвета областей можно в конфигурационном файле.

Для включения прицеливания по кнопке `L1` или любой другой кнопке измените параметр `AimingButton` на нужную кнопку, например, на `L1`, в конфиге.

По умолчанию внизу по центру находится область управления компьютером. Чтобы включить тач-стики, измените параметр `TouchSticksOn` на `1` — вместо управления рабочим столом появится область тач-стиков. Для выхода из режима эмуляции стиков нажмите на кнопку режима по умолчанию.

Нажимая на профиль по умолчанию, на DualSense, белые светодиоды отображают текущий статус заряда аккумулятора (1 - 0..25%, 2 - 26..50%, 3 - 51..75%, 4 - 76..100%), также на DualSense и DualShock 4 показывается статус батареи на световой панели (зелёный - 100..30%, жёлтый - 29..10%, красный - 9..1%), отключается в конфиге, параметр `ShowBatteryStatusOnLightBar`. Также статус батареи отображается в самой программе на `ALT + I`.

Дважды нажмите на область яркости, затем проведите по ней влево или вправо, чтобы изменить яркость подсветки. Повторное двойное нажатие заблокирует случайные изменения.

Есть 5 режимов эмуляции:
* Эмуляция Xbox геймпада с расширенными функциями;
* Эмуляция Xbox геймпада только для режима вождения и прицеливание мышью (для игр с адаптивными триггерами);
* Только мышь (если хотите использовать родную поддержку геймпада, но с более точным прицеливанием);
* Эмуляция клавиатуры и мыши для управления Windows;
* Эмуляция клавиатуры и мыши для старых, ретро игр;

Переключение режимов эмуляции происходит на `ALT + Q`, `ALT + ←/→` или `PS/Home + ←/→`. Режим игровой эмуляции клавиатуры и мыши переключается клавишами клавиатуры только при активном окне, чтобы предотвратить случайные переключения. Эмуляция клавиатуры и мыши поддерживает разные профили, выберите нужный профиль или [создайте новый профиль](https://github.com/r57zone/DSAdvance/blob/master/BINDINGS.RU.md). Профиль по умолчанию позволяет работать в Windows. Также имеются Xbox профили, для изменения раскладки кнопок. Подробнее о создании профилей Xbox [тут](https://github.com/r57zone/DSAdvance/blob/master/XBOX_BINDINGS.RU.md). Профили переключаются на клавиши `ALT + ↑/↓`, если окно активно или на геймпаде, с помощью `PS/Home + ↑/↓`.

Поддерживается "колесо жестов", которое позволяет назначить до 9 кнопок на одну. Эмуляция происходит путем нажатия специальной кнопки `WHEEL-ACTIVATION` и наклоном в одну из 4 или 8 областей (если задано 4 кнопки, то 4 направления, если 8, то 8 направлений). Параметры "колеса жестов" можно найти в разделе `MOTION`, в файлах профилей клавиатуры и мыши или Xbox. Мертвую зону можно изменить в параметре `MotionWheelButtonsDeadZone`.

Поддержаются адаптивные триггеры для Sony DualSense, переключаться между различными режимами можно на `ALT + 3/4`.

Поддерживаются дополнительные кнопки Sony DualSense Edge (L4, R4) и Джойконов (SL, SR), изменить их можно в профиле Xbox `XboxProfiles\Default.ini`, подробнее [тут](https://github.com/r57zone/DSAdvance/blob/master/XBOX_BINDINGS.RU.md).

Поддерживается игра на одном Джойконе, с эмуляцией всех кнопок, с помощью "колеса жестов", наклонами геймпада. Для правильной, усредненной вибрации на одном Джойконе необходимо изменить параметр `JoyconRumbleMerge` на `1`, в конфиге. Также переключите Xbox профиль на `Joycon Left/Right Only`. Для использования возможности переключения режимов вождения и прицеливания на одну кнопку измените параметр `JoyconChangeModesWithButton` на `HOME` или `CAPTURE`. При создании Xbox профилей можно поменять стики и триггеры местами, изменив параметры `SWAP-STICKS` и `SWAP-TRIGGERS` на `1`.

Для подключения [внешних педалей (DInput)](https://github.com/r57zone/GamepadExternalPedals#setup-dinput-pedals-mh-et-live-board) и устройств на базе Digispark джойстиков, измените параметр `DInput` на `1`, в разделе `ExternalPedals`. Для подключения [внешних педалей на Arduino](https://github.com/r57zone/GamepadExternalPedals#setup-arduino-pedals) измените номер COM-порта, изменив параметр `COMPort`.













Есть 2 режима:
1. "Всегда педали" - оси педалей всегда привязаны к триггерам контроллера.
2. "Зависимый (вождение/прицеливание)" - в режиме вождения оси педалей привязаны к триггерам, в режиме прицеливания можно привязать на оси нажатие кнопок. Степень силы определяется параметром `PedalValuePress`.
Переключить режимы можно, с помощью клавиш `ALT + E`. Задать режим по умолчанию можно изменив параметр `DefaultMode`.

Также можно задать у педалей или других устройств может быть до 16 кнопок, на которые можно задать любые кнопки Xbox геймпада, изменив параметр `Button1..16`.

Для выключения DualSense или DualShock 4 удерживайте кнопку PS, для выключения Nintendo контроллеров удерживайте кнопку Capture или Home, в течении 10-15 секунд, пока контроллеры не выключиться.

### Горячие клавиши
Действие | Кнопки Sony | Кнопки Nintendo | Windows
------------ | ------------- | ------------- | -------------
Сброс/поиска контроллеров | - | - | `CTRL + R` или `Numpad 0` (по умолчанию, можно изменить)
Обменять первый и второй контроллер местами | - | - | `ALT + V`
Переключение режимов эмуляции (геймпад, клавиатура и мышь и т.д.) | `PS + ←/→` | `Home + ←/→` | `ALT + Q`, `ALT + ←/→`
Переключение профилей Xbox / Клавиатура и мышь | `PS+ ↑/↓` | `Home + ↑/↓` | `ALT + ↑/↓`
Открытие игровой панели Xbox (нажатие `Win + G`) | `PS` | `Capture + Home` | -
Уменьшение и увеличение громкости Windows | `PS + □` и `PS + ○` | `Capture + Y` и `Capture + A` | -
Скриншот (нажатие `Win + ALT + PrtScn`) | Кнопка микрофона или `PS + X` | `Capture + B` | -
Запись видео (нажатие `Win + ALT + R`) | Удерживайте кнопку микрофона или `PS + X` | Удерживайте `Capture + B` | -
Режим прицеливания: эмуляция мыши или смещение правого стика | `PS + R1` | `Capture + R1` | `ALT + A`
Режим работы (вождение или прицелинваие) | Области тачпад или нажатие тачпада (для контроллеров без тач панели, необходимо включить в конфиге) | `Capture/Home` (повторно `Capture` - сброс, повторно `Home` переключение прицеливания - всегда/L2) | `ALT + 1`, `ALT + 2` (повторно `ALT + 1` - сброс, повторно `ALT + 2` переключение прицеливания - всегда/L2)
Включение/выключение вождения и прицеливания | - | - | `ALT + 5/6` (значение по умолчанию в конфигурационном файле)
Изменение чувствительности прицеливания: увеличение и затем уменьшение | `PS + △` | `Capture + X` | -
Сброс чувствительности прицеливания | `PS + RS` | `Capture + RS` | -
Изменение силы вибрации или её отключение | `PS + Options` | `Capture + Плюс` | `ALT + >`
Выключение и включение нажатия тачпада для переключения режимов (Sony) | `PS + Share` | - | `ALT + W`
Автонажатие стика при определённом наклоне (значение в конфигурационном файле), единажды или постоянно | `PS + LS` | `HOME + LS` | `ALT + S`
Режимы скриншота: Игровая панель Xbox, Steam, Игровая панель Xbox + Steam, заданная кнопка в конфиге (параметру `MicCustomKey` задать [нужное значение кнопки](https://github.com/r57zone/DSAdvance/blob/master/BINDINGS.RU.md) | - | - | `ALT + X`
Выключение подсветки (Sony) | `PS + L1` или 2 раза нажмите на область яркости тапада и проведите пальцем влево или вправо. Если изменение яркости заблокировано `LockChangeBrightness`, то подсветка будет выключаться по двойному клику. | - | `ALT + B`

## Настройка
1. Изучите документацию, чтобы быть в курсе всех фишек и особенностей.
2. Установите [ViGEmBus](https://github.com/nefarius/ViGEmBus/releases).
3. Установите Microsoft Visual C++ Redistributable 2017 или новее.
4. Подключите геймпад Sony DualSense, DualShock 4, Nintendo Pro контроллер или JoyCon-ы.
5. Распакуйте и запустите DSAdvance.
6. При необходимости измените мёртвые зоны стиков, триггеров или другие параметры, в конфигурационном файле `Config.ini`.
7. (Необязательно) Для включения работы двух геймпадов измените параметр `Enabled` на `1`, в разделе `SecondaryGamepad`. Также можете изменить мёртвые зоны стиков, триггеров и цвет.
8. При использовании со Steam играми, в настройках контроллера, выключите `Поддержку контроллеров Playstation` или снимите галочку с `Включить систему ввода Steam для контроллеров Switch Pro`.
9. Также рекомендуется скрыть контроллер для современных игр, чтобы игры видели только эмулируемый, продвинутый Xbox 360 контроллер. Для этого необходимо установить [HidHide](https://github.com/nefarius/HidHide/releases), после чего в `HidHide Configuration Client`, в разделе `Applications` нужно добавить `DSAdvance.exe`, а в разделе `Devices` отметить галочкой ваш контроллер (например, Sony Wireless контроллер) и включить параметр `Enable device hiding` (если выключен). Можно также посмотреть [эту инструкцию](https://github.com/user-attachments/assets/13ad8583-4b32-4a0d-b9a6-8e6c5bfcca71), где показано куда нажимать. Через Launcher можно проделать все тоже самое, кроме добавления геймпада в список для скрытия.
10. (Необязательно) Для запуска из области уведомлений (tray), по двойному клику, можно добавить ярлык на `Launcher.exe` в автозагрузку Windows `%AppData%\Microsoft\Windows\Start Menu\Programs\Startup`.
11. (Необязательно) Для запуска сторонних утилит через Launcher укажатие имя и путь до приложения в конфигурационном файле.

## Загрузка
>Версия для Windows 10, 11.

**[Загрузить](https://github.com/r57zone/DSAdvance/releases)**

## Возможные проблемы
• **Игра видит 2 геймпада одновременно (DualSense / DualShock 4 / Nintendo Pro контроллер или JoyCon-ы и Xbox)**

Если игра поддерживает современный геймпад можно выключить эмуляцию Xbox геймпада на клавиши `ALT + Q` или вовсе скрыть этот геймпад, с помощью программы [HidHide](https://github.com/ViGEm/HidHide), или попробовать в беспроводном режиме.

• **Постоянное изменение значков клавиатуры и геймпада**

Можно изменить режим прицеливания на `Mouse-Joystick`, в программе или используйте прицеливание, с помощью левого триггера.

• **Не работают адаптивые триггеры или световая панель в игре**

Добавьте игру в список исключений программы `HidHide` и измените режим DSAdvance на `только мышь` или `Xbox геймпад (только вождение) и прицеливание мышкой`.

• **Не работает вождение, в играх с поддержкой DualSense (без HidHide)**

Сначала запустите DSAdvance, а только потом саму игру, игра может отдать приоритет эмулируемому геймпаду Xbox и вождение будет работать. Также можно включить режим эмуляции `Xbox геймпад (только вождение) и прицеливание мышкой`, чтобы геймпад включался только в режиме вождения.

• **Nintendo Pro контроллер или Джойконы постоянно вибрируют после старта программы**

К сожалению, на некоторых геймпадах вибрация может работать некоректно, выключите геймпад и отключите вибрацию в конфигурационном файле, изменив параметр `RumbleStrength` на `0`.

• **Nintendo контроллеры не вибрируют в проводном режиме**

К сожалению, это не реализовано.

## Благодарности
* Sony и Nintendo за самые продвинутые геймпады и инвестирование в инновации, а также за продвижение инноваций в игры.
* [ViGEm](https://github.com/nefarius/ViGEmBus) за возможность эмуляции разных геймпадов и [HidHide](https://github.com/nefarius/HidHide/) за их скрытие.
* [HIDAPI library](https://github.com/signal11/hidapi), с [исправлениями](https://github.com/libusb/hidapi), за библиотеку для работы с USB устройства. В проекте используется этот [форк](https://github.com/r57zone/hidapi).
* [JoyShockLibrary](https://github.com/JibbSmart/JoyShockLibrary) за классную библиотеку геймпадов, позволяющую легко получить вращение контроллера. Также используется некоторый код из этой библиотеки и [пример JibbSmart](https://gist.github.com/JibbSmart/8cbaba568c1c2e1193771459aa5385df) для прицеливания.
* DS4Windows[[1]](https://github.com/Jays2Kings/DS4Windows)[[2]](https://github.com/Ryochan7/DS4Windows) за уровень заряда батареи.
* [JoyCon-Driver](https://github.com/fossephate/JoyCon-Driver/blob/main/joycon-driver/include/Joycon.hpp) за вибрацию джойконов.
* [Valkirie](https://github.com/Valkirie/JoyShockLibrary/commits/HDRumble) за адаптивные триггеры по Bluetooth.

## Сборка
1. Загрузите исходники и распакуйте.
2. [Загрузите Microsoft Visual Studio Code 2017+](https://visualstudio.microsoft.com/) и [установите](https://github.com/r57zone/RE4ExtendedControl/assets/9499881/69dafce6-fd57-4768-83eb-c1bb69901f07).
3. Измените в свойствах проекта набор инструментов и SDK на ваш.
4. Выберите тип сборки `Release` (если установлен `Debug`) и `x86`, после чего скомплириуйте проект.

## Обратная связь
`r57zone[собака]gmail.com`