tractbrake-userinput $s(train) $tract $brake $w
}
+proc speedw-uninhibit-tractbrake {w} {
+ upvar #0 speed/$w s
+ speedw-uninhibit $w 2
+ if {![string length $s(train)]} return
+ tractbrake-reset-speed $s(train)
+}
+
proc speedws-train-problem {train} {
speedws-fortrain $train speedw-inhibit
}
[list tractbrake-update $train]]
}
+proc tractbrake-reset-speed {train} {
+ upvar #0 tractbrake/$train tb
+ if {![info exists tb]} return
+ upvar #0 speedcurve/$train sc
+ upvar #0 train_commanded($train) gcommanded
+ setexpr tb(v) {[lindex $sc $gcommanded] / [lindex $sc 126]}
+}
proc tractbrake-attach {train speedw} {
# can safely be called when already attached
upvar #0 tractbrake/$train tb
- upvar #0 speedcurve/$train sc
set tb(speedw) $speedw
if {[info exists tb(queued)]} return
- upvar #0 train_commanded($train) gcommanded
- setexpr tb(v) {[lindex $sc $gcommanded] / [lindex $sc 126]}
+ tractbrake-reset-speed $train
tractbrake-queue-update $train
}
proc tractbrake-detach {train} {
set in(main_active) $active
}
+proc ib-ev/gamepad/EV_KEY/BTN_TOP2 {devid value} {
+ upvar #0 input/$devid in
+ if {!$value} return
+ if {[string length $in(main_active)]} return
+ speedw-uninhibit-tractbrake $in(speedw)
+}
+
#----- ebuyer wireless keyboard
proc ib-create/ebwikeb {devid wunique} {