From c9a91720ea5a11634f5443ee2afd6806853f9d68 Mon Sep 17 00:00:00 2001 From: Andrew Regner Date: Thu, 23 Mar 2023 11:14:02 -0700 Subject: [PATCH] Add configuration for Nintendo Switch controllers (#903) --- platforms/joystick/README.md | 1 + .../configs/{sheild.json => shield.json} | 0 platforms/joystick/joystick_driver.go | 10 ++ .../joystick/joystick_nintendo_joycon.go | 115 ++++++++++++++++++ 4 files changed, 126 insertions(+) rename platforms/joystick/configs/{sheild.json => shield.json} (100%) create mode 100644 platforms/joystick/joystick_nintendo_joycon.go diff --git a/platforms/joystick/README.md b/platforms/joystick/README.md index b41b058a..de3e1a05 100644 --- a/platforms/joystick/README.md +++ b/platforms/joystick/README.md @@ -9,6 +9,7 @@ Current configurations included: - Thrustmaster T-Flight Hotas X Joystick - XBox360 game controller - XBox360 "Rock Band" drum controller +- Nintendo Switch Joy-Con controller pair ## How to Install diff --git a/platforms/joystick/configs/sheild.json b/platforms/joystick/configs/shield.json similarity index 100% rename from platforms/joystick/configs/sheild.json rename to platforms/joystick/configs/shield.json diff --git a/platforms/joystick/joystick_driver.go b/platforms/joystick/joystick_driver.go index 3d57ddb5..d88dbcf6 100644 --- a/platforms/joystick/joystick_driver.go +++ b/platforms/joystick/joystick_driver.go @@ -31,6 +31,12 @@ const ( // Configuration for the Xbox One controller. XboxOne = "xboxOne" + + // Nvidia Shield TV Controller + Shield = "shield" + + // Nintendo Switch Joycon Controller Pair + NintendoSwitchPair = "joyconPair" ) // Driver represents a joystick @@ -135,6 +141,10 @@ func (j *Driver) Start() (err error) { j.config = xbox360RockBandDrumsConfig case XboxOne: j.config = xboxOneConfig + case Shield: + j.config = shieldConfig + case NintendoSwitchPair: + j.config = joyconPairConfig default: err := j.loadFile() if err != nil { diff --git a/platforms/joystick/joystick_nintendo_joycon.go b/platforms/joystick/joystick_nintendo_joycon.go new file mode 100644 index 00000000..c9fa67be --- /dev/null +++ b/platforms/joystick/joystick_nintendo_joycon.go @@ -0,0 +1,115 @@ +package joystick + +var joyconPairConfig = joystickConfig{ + Name: "Nintendo Switch Joycon Controller Pair", + GUID: "5555", + Axis: []pair{ + pair{ + Name: "left_x", + ID: 0, + }, + pair{ + Name: "left_y", + ID: 1, + }, + pair{ + Name: "right_x", + ID: 2, + }, + pair{ + Name: "right_y", + ID: 3, + }, + pair{ + Name: "lt", + ID: 4, + }, + pair{ + Name: "rt", + ID: 5, + }, + }, + Buttons: []pair{ + pair{ + Name: "a", + ID: 0, + }, + pair{ + Name: "b", + ID: 1, + }, + pair{ + Name: "x", + ID: 2, + }, + pair{ + Name: "y", + ID: 3, + }, + pair{ + Name: "up", + ID: 11, + }, + pair{ + Name: "down", + ID: 12, + }, + pair{ + Name: "left", + ID: 13, + }, + pair{ + Name: "right", + ID: 14, + }, + pair{ + Name: "lb", + ID: 9, + }, + pair{ + Name: "rb", + ID: 10, + }, + pair{ + Name: "right_stick", + ID: 8, + }, + pair{ + Name: "left_stick", + ID: 7, + }, + pair{ + Name: "options", + ID: 15, + }, + pair{ + Name: "home", + ID: 5, + }, + pair{ + Name: "sr_left", + ID: 17, + }, + pair{ + Name: "sl_left", + ID: 19, + }, + pair{ + Name: "sr_right", + ID: 16, + }, + pair{ + Name: "sl_right", + ID: 18, + }, + pair{ + Name: "minus", + ID: 4, + }, + pair{ + Name: "plus", + ID: 6, + }, + }, + Hats: []hat{}, +}