- if {$value < 0} {
- speedw-userinput-tractbrake $in(speedw) [expr {-$value}] 0
- } {
- speedw-userinput-tractbrake $in(speedw) 0 $value
+ debug [format "ib-gamepad-main %s %s %6.4f,%6.4f %s %s" \
+ $devid $xy $in(main_x) $in(main_y) $in(main_active) $active]
+ if {![string length $active]} {
+ if {[string length $in(main_active)]} {
+ speedw-userinput-tractbrake $in(speedw) 0 0
+ }
+ } else {
+ if {[string length $in(main_active)] &&
+ [string compare $active $in(main_active)]} {
+ return
+ }
+ set value $in(main_$active)
+ switch -exact $active {
+ y {
+ if {$value < 0} {
+ speedw-userinput-tractbrake $in(speedw) [expr {-$value}] 0
+ } {
+ speedw-userinput-tractbrake $in(speedw) 0 $value
+ }
+ }
+ x {
+ if { abs($value) < 0.75 } return
+ if {[string length $in(main_active)]} return
+ speedw-train-direction $in(speedw) \
+ [expr { $value < 0 ? "backwards" : "forwards" }]
+ }
+ default {
+ error "$active ?"
+ }
+ }