JMRI® is...
Throttles
Tools
JMRI tools for working with your layout:
Layout Automation
Use JMRI to automate parts of your layout and operations:
Supported Hardware
JMRI supports a wide range of DCC systems, command stations and protocols.
Applications
By the community of JMRI.org:

JMRI Help:

Contents Index
Glossary FAQ

Donate to JMRI Donate to JMRI.org

Advanced Throttle Control

Keyboard Control of the Standard Throttle

You can operate your JMRI Throttle from the keyboard in addition to using a mouse.

Throttles keyboard shorcuts can be edited in the Keyboard controls pane of the Throttles Preferences.

Default controls

Speed

Increase Speed
Numeric keypad +
Left arrow
Decrease Speed
Numeric keypad -
Right arrow

Increase Speed by multiplicator (5 as a default (customisable in the Throttles Preferences))
Page up
Ctrl + Left arrow
Decrease Speed by multiplicator (5 as a default (customisable in the Throttles Preferences))
Page down
Ctrl + Right arrow

Idle Speed
Numeric keypad *
Space

Stop Speed
Numeric keypad /
Escape

Direction

Forward
Up arrow
Reverse
Down arrow

Switch direction
Not defined in defaults, but customisable in the Throttles Preferences.

Functions

F0
Numeric keypad 0

F1 → F9 (n)
Fn
Numeric keypad n

F10 → F19 (n)
Fn (if exist on keyboard)
Shift + Numeric keypad (n-10) (Shift+2 for F12 for instance)
Shift + F(n-10) (Shift+F3 for F13 for instance)

F20 → F28 (n)
Fn (if exist on keyboard)
Ctrl + Numeric keypad (n-20) (Ctrl+5 for F25 for instance)
Ctrl + F(n-20) (Ctrl+F8 for F28 for instance)

Throttle windows controls

Next throttle window
Insert
Previous throttle window
Delete

Next throttle frame
End of line
Previous throttle frame
Start of line

Next running throttle frame
Ctrl + End of line
Previous running throttle frame
Ctrl + Start of line

Focus next throttle internal window
K
Focus previous throttle internal window
L

Focus control panel
C
Focus function panel
F
Focus address panel
A

Custom Throttle with Jynstruments

Jynstruments are powerful tools for customizing JMRI Throttles. There's much more information on creating and customizing them on a separate page. Here, we focus on using the customized throttle control.

Jynstruments provided below are for controlling already assigned Throttles, the Throttle pane you will control has to be set up before. Then it's only a matter of drag'n dropping a folder on the Throttle Window toolbar.

Note that Throttle Window content is Jynstrumentable too, so here we drop the Jynstruments on the toolbar itself, not on the window content.

USB device (USBThrottle.jyn)

There is a Jynstrument named USBThrottle.jyn to be dropped on a Throttle Window toolbar to get control of that Window with a HID device (joypad, RailDriver ...). See the .py files for default button settings, and possible customizations.

Particularly you might want to define a "driver" file for your own device, start from default.py, copy it, rename it with the name of the device as seen by JMRI without any space or ".", then use the JMRI Jinput USB Input Control window (accessible from Debug menu) to get your Components names and value,

Default controls:

Browsing throttles:
To browse through the currently assigned throttles for the controlled window, the pov right and left buttons are used (the pov, also known as switch hat, is the four or eight directions button on the left of the pad).
Speed:
Speed is controlled by axis "x" which usually is found on the left stick.
Note that buttons 0 to 3 (or 1 to 4) are assigned to some speed presets, from idle (speed 0), to slow (speed 0,3), to cruise (speed 0,8), to max (speed 1). A double tap on the button for speed 0 will send an emergency stop.
Direction:
Direction is controlled by axis "z" which usually is found on right left stick
Functions buttons:
All remaining buttons are dedicated to functions (usually the one left on the side, under, and in the middle of the gamepad)

Note that joypads buttons layout, and even sticks events differ from one manufacturer to another, hence you should customize a driver.py for your own hardware.

DCCThrottle (DCCThrottle.jyn)

This one will listen for DCC throttle events for a specific DCC address and forward them to the current active throttle inside this JMRI throttle window.

Nintendo Wiimote (WiimoteThrottle.jyn)

There is a Jynstrument named WiimoteThrottle.jyn to be dropped on a Throttle Window toolbar to get control of that Window with a Nintendo Wiimote device. See the .py file for default button settings and set up (some jars are to be downloaded and copied in JMRI lib folder).

At the moment, none of the accelerometers of the Wiimote are used, hence it's only a kind of deluxe remote as we only use the buttons. But it fits very well in one hand and once you know the settings, you don't even have to look at it to use it.

Default controls:

Browsing throttles:
To browse through the currently assigned throttles for the controlled window, the left and right buttons are used.
Speed:
Speed is controlled by buttons A (decelerate) and B (accelerate)
Note that buttons 1 and 2 are used for some speed presets, from idle (speed 0 - button 2 twice), to slow (speed 0,3 - button 2 once), to cruise (speed 0,8 - button 1 once), to max (speed 1 - button 1 twice). Pressing buttons 1 and 2 will send an emergency stop and vibrate the Wiimote.
Direction:
Direction is controlled by buttons + and -.
Functions buttons:
Light (function 0) is controlled by Home button.
And as there is no more buttons available, no other function can be controlled by default, but as this is a Jython script, feel free to customize, and if somebody is able to do something with the accelerometers, you're very welcome!

RailDriver

See the RailDriver Hardware Help.

iPhone and iPod Touch

There's a third-party application called WiThrottle that works with JMRI to let you control trains with your iPhone or iPod Touch.

You can also browse the JMRI webserver from Safari on your iPhone or iPod Touch.