diff --git a/examples/joystick_ps4.go b/examples/joystick_ps4.go new file mode 100644 index 00000000..99fcf453 --- /dev/null +++ b/examples/joystick_ps4.go @@ -0,0 +1,69 @@ +package main + +import ( + "fmt" + + "github.com/hybridgroup/gobot" + "github.com/hybridgroup/gobot/platforms/joystick" +) + +func main() { + gbot := gobot.NewGobot() + + joystickAdaptor := joystick.NewJoystickAdaptor("ps4") + joystick := joystick.NewJoystickDriver(joystickAdaptor, + "ps4", + "./platforms/joystick/configs/dualshock4.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("circle_press"), func(data interface{}) { + fmt.Println("circle_press") + }) + gobot.On(joystick.Event("circle_release"), func(data interface{}) { + fmt.Println("circle_release") + }) + gobot.On(joystick.Event("x_press"), func(data interface{}) { + fmt.Println("x_press") + }) + gobot.On(joystick.Event("x_release"), func(data interface{}) { + fmt.Println("x_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() +} diff --git a/platforms/joystick/configs/dualshock4.json b/platforms/joystick/configs/dualshock4.json new file mode 100644 index 00000000..f5435f64 --- /dev/null +++ b/platforms/joystick/configs/dualshock4.json @@ -0,0 +1,92 @@ +{ + "name": "Sony PLAYSTATION(R)4 Controller", + "guid": "1234", + "axis": [ + { + "name": "left_x", + "id": 0 + }, + { + "name": "left_y", + "id": 1 + }, + { + "name": "right_x", + "id": 2 + }, + { + "name": "right_y", + "id": 5 + }, + { + "name": "l2", + "id": 3 + }, + { + "name": "r2", + "id": 4 + }, + { + "name": "up", + "id": 7 + }, + { + "name": "down", + "id": 6 + }, + { + "name": "left", + "id": 7 + }, + { + "name": "right", + "id": 8 + } + ], + "buttons": [ + { + "name": "square", + "id": 0 + }, + { + "name": "triangle", + "id": 3 + }, + { + "name": "circle", + "id": 2 + }, + { + "name": "x", + "id": 1 + }, + { + "name": "l1", + "id": 4 + }, + { + "name": "l2", + "id": 6 + }, + { + "name": "r2", + "id": 7 + }, + { + "name": "r1", + "id": 5 + }, + { + "name": "share", + "id": 8 + }, + { + "name": "options", + "id": 9 + }, + { + "name": "home", + "id": 12 + } + ] +}