Skip to content

GooseClip/pi-gamepad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pi Gamepad

Simplified event-driven gamepad library for interacting with a Raspberry Pi - tested using the PiHut gamepad.

Example

    import (
        . "github.com/gooseclip/pi-gamepad"
    )
    
    ...

	gamepad, err := NewGamepad(context.Background())
	if err != nil {
		panic(err)
	}

	// Handle navigation
	gamepad.OnDPad(func(x, y float32) {
		log.Printf("DPad, x: %v, y: %v\n", x, y)
	})

	gamepad.OnLeftJoystick(func(x, y float32) {
		log.Printf("Left Joystick, x: %v, y: %v\n", x, y)
	})

	gamepad.OnRightJoystick(func(x, y float32) {
		log.Printf("Right Joystick, x: %v, y: %v\n", x, y)
	})

	// Handle triggers
	gamepad.OnL1(func(event ButtonCallbackType) {
		log.Printf("L1 %v\n", event)
	})
	
	gamepad.OnR1(func(event ButtonCallbackType) {
		log.Printf("R1 %v\n", event)
	})

	gamepad.OnL2(func(event ButtonCallbackType) {
		log.Printf("L2 %v\n", event)
	})

	gamepad.OnR2(func(event ButtonCallbackType) {
		log.Printf("R2 %v\n", event)
	})

	// Handle action buttons
	gamepad.OnCross(func(event ButtonCallbackType) {
		log.Printf("Cross %v\n", event)
	})

	gamepad.OnCircle(func(event ButtonCallbackType) {
		log.Printf("Circle %v\n", event)
	})

	gamepad.OnSquare(func(event ButtonCallbackType) {
		log.Printf("Square %v\n", event)
	})

	gamepad.OnTriangle(func(event ButtonCallbackType) {
		log.Printf("Triangle %v\n", event)
	})

	// Handle special buttons
	gamepad.OnSelect(func(event ButtonCallbackType) {
		log.Printf("Select %v\n", event)
	})

	gamepad.OnStart(func(event ButtonCallbackType) {
		log.Printf("Start %v\n", event)
	})

	gamepad.OnAnalog(func(event ButtonCallbackType) {
		log.Printf("Analog %v\n", event)
	})

	gamepad.OnLJ(func(event ButtonCallbackType) {
		log.Printf("Left Joystick Click %v\n", event)
	})

	gamepad.OnRJ(func(event ButtonCallbackType) {
		log.Printf("Right Joystick Click %v\n", event)
	})

	<-make(chan struct{})

Using a different gamepad type

See examples/custom

PiHut link


About

An event driven implementation for a Raspberry Pi gamepad

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages