gobot: gobot.io/x/gobot/platforms/joystick Index | Files

package joystick

import "gobot.io/x/gobot/platforms/joystick"

Package joystick provides the Gobot adaptor and drivers for game controllers that are compatible with SDL.


This package requires `sdl2` to be installed on your system Then install package with:

go get gobot.io/x/gobot/platforms/joystick


package main

import (


func main() {
	joystickAdaptor := joystick.NewAdaptor()
	joystick := joystick.NewDriver(joystickAdaptor,

	work := func() {
		joystick.On(joystick.Event("square_press"), func(data interface{}) {
		joystick.On(joystick.Event("square_release"), func(data interface{}) {
		joystick.On(joystick.Event("triangle_press"), func(data interface{}) {
		joystick.On(joystick.Event("triangle_release"), func(data interface{}) {
		joystick.On(joystick.Event("left_x"), func(data interface{}) {
			fmt.Println("left_x", data)
		joystick.On(joystick.Event("left_y"), func(data interface{}) {
			fmt.Println("left_y", data)
		joystick.On(joystick.Event("right_x"), func(data interface{}) {
			fmt.Println("right_x", data)
		joystick.On(joystick.Event("right_y"), func(data interface{}) {
			fmt.Println("right_y", data)

	robot := gobot.NewRobot("joystickBot",


For further information refer to joystick README: https://github.com/hybridgroup/gobot/blob/master/platforms/joystick/README.md


Package Files

doc.go events.go joystick_adaptor.go joystick_driver.go joystick_dualshock3.go joystick_dualshock4.go joystick_shield.go joystick_tflight_hotas_x.go joystick_xbox360.go joystick_xbox360_rock_band_drums.go test_helper.go


const (
    // left X joystick event
    LeftX = "left_x"
    // left Y joystick event
    LeftY = "left_y"
    // right X joystick event
    RightX = "right_x"
    // right Y joystick event
    RightY = "right_y"
    // L1 button joystick event
    L1  = "l1"
    // L1 button press event
    L1Press = "l1_press"
    // L1 button release event
    L1Release = "l1_release"
    // L2 joystick event
    L2  = "l2"
    // L2 button press event
    L2Press = "l2_press"
    // L2 button release event
    L2Release = "l2_release"
    // L3 button press event
    L3Press = "l3_press"
    // L3 button release event
    L3Release = "l3_release"
    // R1 button joystick event
    R1  = "r1"
    // R1 button press event
    R1Press = "r1_press"
    // R1 button release event
    R1Release = "r1_release"
    // R2 joystick event
    R2  = "r2"
    // R2 button press event
    R2Press = "r2_press"
    // R1 button release event
    R2Release = "r2_release"
    // R3 button press event
    R3Press = "r3_press"
    // R1 button release event
    R3Release = "r3_release"
    // up gamepad press event
    UpPress = "up_press"
    // up gamepad release event
    UpRelease = "up_release"
    // down gamepad press event
    DownPress = "down_press"
    // down gamepad release event
    DownRelease = "down_release"
    // left gamepad press event
    LeftPress = "left_press"
    // left gamepad release event
    LeftRelease = "left_release"
    // right gamepad press event
    RightPress = "right_press"
    // right gamepad release event
    RightRelease = "right_release"
    // square button press event
    SquarePress = "square_press"
    // square button release event
    SquareRelease = "square_release"
    // circle button press event
    CirclePress = "circle_press"
    // circle button release event
    CircleRelease = "circle_release"
    // triangle button press event
    TrianglePress = "triangle_press"
    // triangle button release event
    TriangleRelease = "triangle_release"
    // X button press event
    XPress = "x_press"
    // X button release event
    XRelease = "x_release"
    // share button press event
    SharePress = "share_press"
    // share button relase event
    ShareRelease = "share_release"
    // options button press event
    OptionsPress = "options_press"
    // options button release event
    OptionsRelease = "options_release"
    // home button press event
    HomePress = "home_press"
    // home button release event
    HomeRelease = "home_release"
    // start button press event
    StartPress = "start_press"
    // start button release event
    StartRelease = "start_release"
    // select button press event
    SelectPress = "select_press"
    // select button release event
    SelectRelease = "select_release"
    // rt button press event
    RTPress = "rt_press"
    // rt button release event
    RTRelease = "rt_release"
    // lt button press event
    LTPress = "lt_press"
    // lt button release event
    LTRelease = "lt_release"
    // Y button press event
    YPress = "y_press"
    // Y button release event
    YRelease = "y_release"
    // A button press event
    APress = "a_press"
    // A button release event
    ARelease = "a_release"
    // B button press event
    BPress = "b_press"
    // B button release event
    BRelease = "b_release"
    // rb button press event
    RBPress = "rb_press"
    // rb button release event
    RBRelease = "rb_release"
    // lb button press event
    LBPress = "lb_press"
    // lb button release event
    LBRelease = "lb_release"
    // back button press event
    BackPress = "back_press"
    // back button release event
    BackRelease = "back_release"
    // red pad press event
    RedPress = "red_press"
    // red pad release event
    RedRelease = "red_release"
    // yellow pad press event
    YellowPress = "yellow_press"
    // yellow pad release event
    YellowRelease = "yellow_release"
    // blue pad press event
    BluePress = "blue_press"
    // blue pad release event
    BlueRelease = "blue_release"
    // green pad press event
    GreenPress = "green_press"
    // green pad release event
    GreenRelease = "green_release"
    // pedal press event
    PedalPress = "pedal_press"
    // pedal release event
    PedalRelease = "pedal_release"
const (
    // Dualshock3 joystick configuration.
    Dualshock3 = "dualshock3"

    // Dualshock4 joystick configuration.
    Dualshock4 = "dualshock4"

    // TFlightHotasX flight stick configuration.
    TFlightHotasX = "tflightHotasX"

    // Xbox360 joystick configuration.
    Xbox360 = "xbox360"

    // Xbox360RockBandDrums controller configuration.
    Xbox360RockBandDrums = "xbox360RockBandDrums"

    // Nvidia Shield TV Controller
    Shield = "shield"

type Adaptor Uses

type Adaptor struct {
    // contains filtered or unexported fields

Adaptor represents a connection to a joystick

func NewAdaptor Uses

func NewAdaptor() *Adaptor

NewAdaptor returns a new Joystick Adaptor.

func (*Adaptor) Connect Uses

func (j *Adaptor) Connect() (err error)

Connect connects to the joystick

func (*Adaptor) Finalize Uses

func (j *Adaptor) Finalize() (err error)

Finalize closes connection to joystick

func (*Adaptor) Name Uses

func (j *Adaptor) Name() string

Name returns the Adaptors name

func (*Adaptor) SetName Uses

func (j *Adaptor) SetName(n string)

SetName sets the Adaptors name

type Driver Uses

type Driver struct {
    // contains filtered or unexported fields

Driver represents a joystick

func NewDriver Uses

func NewDriver(a *Adaptor, config string, v ...time.Duration) *Driver

NewDriver returns a new Driver with a polling interval of 10 Milliseconds given a Joystick Adaptor and json button configuration file location.

Optionally accepts:

time.Duration: Interval at which the Driver is polled for new information

func (*Driver) Connection Uses

func (j *Driver) Connection() gobot.Connection

Connection returns the Drivers connection

func (*Driver) Halt Uses

func (j *Driver) Halt() (err error)

Halt stops joystick driver

func (*Driver) Name Uses

func (j *Driver) Name() string

Name returns the Drivers name

func (*Driver) SetName Uses

func (j *Driver) SetName(n string)

SetName sets the Drivers name

func (*Driver) Start Uses

func (j *Driver) Start() (err error)

Start and polls the state of the joystick at the given interval.

Emits the Events:

Error error - On button error
Events defined in the json button configuration file.
They will have the format:

Package joystick imports 7 packages (graph) and is imported by 2 packages. Updated 2020-12-01. Refresh now. Tools for package owners.