Initial commit.

This commit is contained in:
Anna Rose Wiggins 2025-06-27 12:18:21 -04:00
commit 309b3d3984
3 changed files with 82 additions and 0 deletions

75
cmd/joyful/main.go Normal file
View file

@ -0,0 +1,75 @@
package main
import (
"fmt"
"syscall"
"time"
"github.com/holoplot/go-evdev"
)
func main() {
// Define virtual device
vDevice, err := evdev.CreateDevice(
"joyful-joystick",
evdev.InputID{
BusType: 0x03,
Vendor: 0x4711,
Product: 0x0816,
Version: 1,
},
map[evdev.EvType][]evdev.EvCode{
evdev.EV_KEY: jsButtons(),
evdev.EV_ABS: {
evdev.ABS_X,
evdev.ABS_Y,
evdev.ABS_Z,
evdev.ABS_RX,
evdev.ABS_RY,
evdev.ABS_RZ,
evdev.ABS_THROTTLE,
evdev.ABS_WHEEL,
},
},
)
if err != nil {
fmt.Printf("Failed to create vDevice: %s", err.Error())
}
var value int32 = 1
for {
eventTime := syscall.NsecToTimeval(int64(time.Now().Nanosecond()))
vDevice.WriteOne(&evdev.InputEvent{
Time: eventTime,
Type: evdev.EV_KEY,
Code: evdev.BTN_TRIGGER,
Value: value,
})
if value == 0 {
value = 1
} else {
value = 0
}
time.Sleep(1000)
}
}
func jsButtons() []evdev.EvCode {
buttons := make([]evdev.EvCode, 80)
i := 0
for code := 0x120; code <= 0x12f; code++ {
buttons[i] = evdev.EvCode(code)
i++
}
for code := 0x2c0; code <= 0x2ff; code++ {
buttons[i] = evdev.EvCode(code)
i++
}
return buttons
}

5
go.mod Normal file
View file

@ -0,0 +1,5 @@
module git.annabunches.net/annabunches/joyful
go 1.24.4
require github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1

2
go.sum Normal file
View file

@ -0,0 +1,2 @@
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1 h1:92OsBIf5KB1Tatx+uUGOhah73jyNUrt7DmfDRXXJ5Xo=
github.com/holoplot/go-evdev v0.0.0-20240306072622-217e18f17db1/go.mod h1:iHAf8OIncO2gcQ8XOjS7CMJ2aPbX2Bs0wl5pZyanEqk=