Formatting and changelog updates. (#14)

Reviewed-on: https://codeberg.org/annabunches/joyful/pulls/14
This commit is contained in:
Anna Rose Wiggins 2026-09-12 16:29:51 +02:00 committed by annabunches
parent 7e4d4f3c20
commit b80c5e3032
4 changed files with 24 additions and 19 deletions

View file

@ -2,6 +2,7 @@
### Added ### Added
- Add `hold` parameter for button-to-axis mappings. - Add `hold` parameter for button-to-axis mappings.
- Add ability to set VendorId and ProductId on virtual devices.
### Fixed ### Fixed
- Fixed possible crash when TTS is disabled. (thanks [Tsudico](https://codeberg.org/Tsudico)) - Fixed possible crash when TTS is disabled. (thanks [Tsudico](https://codeberg.org/Tsudico))

View file

@ -10,9 +10,11 @@ type Config struct {
// TODO: configure custom unmarshaling so we can overload Buttons, Axes, and RelativeAxes... // TODO: configure custom unmarshaling so we can overload Buttons, Axes, and RelativeAxes...
type DeviceConfigVirtual struct { type DeviceConfigVirtual struct {
Name string Name string
VendorId string `yaml:"vendor_id,omitempty"` // VendorId is the uint16 vendor id, for default see internal/virtualdevice/variables.go
DeviceId string `yaml:"device_id,omitempty"` VendorId string `yaml:"vendor_id,omitempty"`
// DeviceId is the uint16 device id, for default see internal/virtualdevice/variables.go
DeviceId string `yaml:"device_id,omitempty"`
Preset string Preset string
NumButtons int `yaml:"num_buttons,omitempty"` NumButtons int `yaml:"num_buttons,omitempty"`
NumAxes int `yaml:"num_axes,omitempty"` NumAxes int `yaml:"num_axes,omitempty"`

View file

@ -3,22 +3,23 @@ package virtualdevice
import ( import (
"fmt" "fmt"
"strconv"
"git.annabunches.net/annabunches/joyful/internal/configparser" "git.annabunches.net/annabunches/joyful/internal/configparser"
"git.annabunches.net/annabunches/joyful/internal/eventcodes" "git.annabunches.net/annabunches/joyful/internal/eventcodes"
"git.annabunches.net/annabunches/joyful/internal/logger" "git.annabunches.net/annabunches/joyful/internal/logger"
"github.com/holoplot/go-evdev" "github.com/holoplot/go-evdev"
"strconv"
) )
func ParseUInt16(s string, def uint16) uint16 { func ParseUInt16(s string, def uint16) uint16 {
if s == "" { if s == "" {
return def return def
} }
v, err := strconv.ParseUint(s, 0, 16) v, err := strconv.ParseUint(s, 0, 16)
if err != nil { if err != nil {
return def return def
} }
return uint16(v) return uint16(v)
} }
// NewEventBuffer takes a virtual device config specification, creates the underlying // NewEventBuffer takes a virtual device config specification, creates the underlying
@ -50,11 +51,11 @@ func NewEventBuffer(config configparser.DeviceConfigVirtual) (*EventBuffer, erro
device, err := evdev.CreateDevice( device, err := evdev.CreateDevice(
name, name,
// TODO: placeholders. BusType = differentiate between input bus (3 = usb), Vendor = uint16 vendor id, Product: uint16 devoce id, Version = device version (differentiate between differing versions of exact same device)
evdev.InputID{ evdev.InputID{
// 3 specifies USB bus type
BusType: 0x03, BusType: 0x03,
Vendor: ParseUInt16(config.VendorId, VirtualDeviceVendorId), Vendor: ParseUInt16(config.VendorId, VirtualDeviceDefaultVendorId),
Product: ParseUInt16(config.DeviceId, VirtualDeviceDeviceId), Product: ParseUInt16(config.DeviceId, VirtualDeviceDefaultDeviceId),
Version: 1, Version: 1,
}, },
capabilities, capabilities,

View file

@ -8,9 +8,10 @@ const (
DevicePresetJoystick = "joystick" DevicePresetJoystick = "joystick"
DevicePresetMouse = "mouse" DevicePresetMouse = "mouse"
VirtualDeviceVendorId = 0x4711 // These defaults are taken or inferred from the go-evdev library
VirtualDeviceDeviceId = 0x0816 VirtualDeviceDefaultVendorId = 0x4711
VirtualDeviceMaxButtons = 74 VirtualDeviceDefaultDeviceId = 0x0816
VirtualDeviceMaxButtons = 74
) )
// Device Presets // Device Presets