# README
Joystick
You can use Gobot with any USB joystick or game controller that is compatible with Simple DirectMedia Layer.
Current configurations included:
- Dualshock3 game controller
- Dualshock4 game controller
- XBox360 game controller
How to Install
This package requires sdl2
to be installed on your system
OSX
To install sdl2
on OSX using Homebrew:
$ brew install sdl2
Ubuntu
$ sudo apt-get install libsdl2-2.0-0
Now you can install the package with
go get -d -u github.com/hybridgroup/gobot/... && go install github.com/hybridgroup/gobot/platforms/joystick
How to Use
Controller configurations are stored in JSON format. Here's an example configuration file for the Dualshock 3 controller
{
"name": "Sony PLAYSTATION(R)3 Controller",
"guid": "030000004c0500006802000011010000",
"axis": [
{
"name": "left_x",
"id": 0
},
{
"name": "left_y",
"id": 1
},
{
"name": "right_x",
"id": 2
},
{
"name": "right_y",
"id": 3
}
],
"buttons": [
{
"name": "square",
"id": 15
},
{
"name": "triangle",
"id": 12
},
{
"name": "circle",
"id": 13
},
{
"name": "x",
"id": 14
},
{
"name": "up",
"id": 4
},
{
"name": "down",
"id": 6
},
{
"name": "left",
"id": 7
},
{
"name": "right",
"id": 5
},
{
"name": "left_stick",
"id": 1
},
{
"name": "right_stick",
"id": 2
},
{
"name": "l1",
"id": 10
},
{
"name": "l2",
"id": 8
},
{
"name": "r1",
"id": 11
},
{
"name": "r2",
"id": 9
},
{
"name": "start",
"id": 3
},
{
"name": "select",
"id": 0
},
{
"name": "home",
"id": 16
}
]
}
How to Connect
Plug your USB joystick or game controller into your USB port. If your device is supported by SDL, you are now ready.
For the Dualshock4, you must pair the device with your computers Bluetooth interface first, before running your Gobot program.
Examples
This small program receives joystick and button press events from an PlayStation 3 game controller.
package main
import (
"fmt"
"github.com/hybridgroup/gobot"
"github.com/hybridgroup/gobot/platforms/joystick"
)
func main() {
gbot := gobot.NewGobot()
joystickAdaptor := joystick.NewJoystickAdaptor("ps3")
joystick := joystick.NewJoystickDriver(joystickAdaptor,
"ps3",
"./platforms/joystick/configs/dualshock3.json",
)
work := func() {
gobot.On(joystick.Event("square_press"), func(data interface{}) {
fmt.Println("square_press")
})
gobot.On(joystick.Event("square_release"), func(data interface{}) {
fmt.Println("square_release")
})
gobot.On(joystick.Event("triangle_press"), func(data interface{}) {
fmt.Println("triangle_press")
})
gobot.On(joystick.Event("triangle_release"), func(data interface{}) {
fmt.Println("triangle_release")
})
gobot.On(joystick.Event("left_x"), func(data interface{}) {
fmt.Println("left_x", data)
})
gobot.On(joystick.Event("left_y"), func(data interface{}) {
fmt.Println("left_y", data)
})
gobot.On(joystick.Event("right_x"), func(data interface{}) {
fmt.Println("right_x", data)
})
gobot.On(joystick.Event("right_y"), func(data interface{}) {
fmt.Println("right_y", data)
})
}
robot := gobot.NewRobot("joystickBot",
[]gobot.Connection{joystickAdaptor},
[]gobot.Device{joystick},
work,
)
gbot.AddRobot(robot)
gbot.Start()
}
# Functions
NewJoystickAdaptor returns a new JoystickAdaptor with specified name.
NewJoystickDriver returns a new JoystickDriver with a polling interval of 10 Milliseconds given a JoystickAdaptor, name and json button configuration file location.
# Constants
A button press event.
A button release event.
back button press event.
back button release event.
B button press event.
B button release event.
circle button press event.
circle button release event.
down gamepad event.
home button press event.
home button release event.
L1 button joystick event.
L2 joystick event.
lb button press event.
lb button release event.
left gamepad event.
left X joystick event.
left Y joystick event.
lt button press event.
lt button release event.
options button press event.
options button release event.
R1 button joystick event.
R2 joystick event.
rb button press event.
rb button release event.
right gamepad event.
right X joystick event.
right Y joystick event.
rt button press event.
rt button release event.
share button press event.
share button relase event.
square button press event.
square button release event.
start button press event.
start button release event.
triangle button press event.
triangle button release event.
up gamepad event.
X button press event.
X button release event.
Y button press event.
Y button release event.
# Structs
JoystickAdaptor represents a connection to a joystick.
JoystickDriver represents a joystick.