func DualAxis(name string) DualAxisID {
	if internal.Running {
		setErr(errors.New("input dual-axis declaration: declarations must happen before starting the framework"))
		return noDualAxis
	}
	_, ok := actions.name[name]
	if ok {
		setErr(errors.New("input dual-axis declaration: name already taken by another action"))
		return noDualAxis
	}
	a := len(dualaxes.name)
	if a >= maxID {
		setErr(errors.New("input dual-axis declaration: too many dual-axis actions"))
		return noDualAxis
	}
	actions.name[name] = DualAxisID(a)
	actions.list = append(actions.list, DualAxisID(a))
	dualaxes.name = append(dualaxes.name, name)
	return DualAxisID(a)
}
DualAxis declares a new two-dimensional analog action, and returns its ID.
package input
import (
	"errors"
	"github.com/cozely/cozely/coord"
	"github.com/cozely/cozely/internal"
)
type DualAxisID uint32
const noDualAxis = DualAxisID(maxID)
var dualaxes struct {
	name []string
}
type dualaxis struct {
	value    coord.XY
	previous coord.XY
}