OSX上的SDL2将Nintendo Joy-Con的模拟摇杆读作帽子,只给出方向而不是模拟值。如何切换此控制器上的模式以获得模拟输入?
我正在使用SDL 2.0.9版。
JoyCon似乎没有SDL 2.0.9中的特殊支持。开箱即用的JoyCon只是作为操纵杆处理,没有API发送特殊配置命令,但支持JoyCon的基础设施出现在源代码中; SDL确实对Switch Pro控制器有特殊支持。
提到JoyCon的文件是Game Controller API的一部分。该API旨在支持与XBOX 360类似的控制器。单个JoyCon没有足够的输入来适应该类别,这可能是它仅在默认情况下在Joystick而不是GameController API下可用的原因。
SDL的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)
但是,https://github.com/spurious/SDL-mirror/blob/master/src/joystick/hidapi/SDL_hidapi_switch.c支持Switch Pro控制器;它似乎能够使用HID支持所有交换机控制器功能,即使它们并非全部暴露给SDL。这可能通过取消评论几行来命令JoyCon。
还可以添加控制器映射以将单个joycon用作SDL游戏控制器,这可以使模拟棒“帽子”看起来像数字操纵杆。
(可能是在Nintendo Switch上运行的NDA'd SDL2端口完全支持JoyCons)