Как в SDL2 на OSX переключить джойстики Joy-Con из «шляпного» в «аналоговый» режим? - PullRequest
0 голосов
/ 05 апреля 2019

SDL2 в OSX считывает аналоговую флешку Nintendo Joy-Con как шляпу, давая только направление вместо аналогового значения.Как мне переключить режимы на этом контроллере, чтобы получить аналоговый вход?

Я использую SDL версии 2.0.9.

1 Ответ

0 голосов
/ 06 апреля 2019

JoyCon не имеет специальной поддержки в SDL 2.0.9. Из коробки JoyCon просто рассматривается как джойстик, и нет API для отправки ему специальных команд настройки, но инфраструктура для поддержки JoyCon появляется в исходном коде; SDL имеет специальную поддержку контроллера Switch Pro.

Файлы, в которых упоминается JoyCon, являются частью Game Controller API. Этот API предназначен для поддержки контроллеров, похожих на XBOX 360. У одного JoyCon недостаточно входных данных, чтобы вписаться в эту категорию, поэтому, вероятно, он доступен только по умолчанию в Joystick, а не в GameController API.

SDL's controllertype.h говорит:

// We currently don't support using a pair of Switch Joy-Con's as a single
// controller and we don't want to support using them individually for the
// time being, so these should be disabled until one of the above is true
// { MAKE_CONTROLLER_ID( 0x057e, 0x2006 ), k_eControllerType_SwitchJoyConLeft },    // Nintendo Switch Joy-Con (Left)
// { MAKE_CONTROLLER_ID( 0x057e, 0x2007 ), k_eControllerType_SwitchJoyConRight },   // Nintendo Switch Joy-Con (Right)

Однако имеется поддержка контроллера Switch Pro в https://github.com/spurious/SDL-mirror/blob/master/src/joystick/hidapi/SDL_hidapi_switch.c; кажется, что он может поддерживать все функции контроллера коммутатора с использованием HID, даже если они не все подвержены SDL. Вероятно, это может дать команду JoyCon, не комментируя несколько строк.

Также возможно добавить сопоставление контроллера для использования одного джойкона в качестве игрового контроллера SDL, который может сделать аналоговый джойстик «шляпкой» похожим на цифровой джойстик.

(Предположительно, порт NDA SDL2, который работает на коммутаторе Nintendo, имеет отличную поддержку JoyCons)

...