You don't see me much in here, but I was looking into the Hornz and Bellz issue, and wanted to know how to get them to work the way I want. As for the Hornz.......
We all know that Railways in america use the horn similar to Morse Code, which is made up of -'s and . or Longs and shorts. Now since I am not familiar with scripting in trains, don't blame me if I am speaking out of turn. But I would suggest something like this.
A new Hornz routine which will allow an input of the type of Horn/Whistle you want. ie...A Xing whistle.
Input "--.- for a crossing
When a command for the horn is requested, a loop like this... Pardon me if I try to use Visual Basic type of Scripting
String Input "--.-"
For I = 1 to len(Input)
If mid$(Input$,I,1) = "-" then gosub Long else if
Mid$(Input$,I,1="." then gosub short
End if
next I
Exit
Sub Short
For I = 1 to (the number of seconds to hold the H key down)
Press Key "H"
Next I
Return
Sub Long
For I = 1 to (the number of seconds to hold the H key down)
Press Key "H"
Next I
return
Limit the length of the input string and you can set up any number of Coding for a whistle for just about any situation.
I know my VB is rusty since it has been a long time since using it, but I am sure you get the idea. The same could possibly be done for Bellz as was already suggested.