Olympus RS31H Hardware with Talon Voice

Olympus RS31H Foot Switch for PC

Now that I've started using the fantastic Talon Voice to relieve the stress on my hands from typing, I also wanted a foot pedal to help me. I arrived at the Olympus RS31H because of its 4 switches and its overall form factor, and I knew some other Talon users were also using this.

However I could not find much information about the device itself beforehand, particularly how it works (software etc), nor any images of the inside with the idea of perhaps modifying it to improve it.

But I have now been using it for a while and in a position to help others with these questions, should they have them. It's also a bit of a review. So, here we go.

The software

The software to program the device is rather plain. The manual mentions a link which does not work, so you need to search for it. The software doesn't need installation, it just needs to be extracted somewhere and to be run. You get the option of "Keyboard mode" or "Olympus mode", but after many hours of reverse engineering it seems the only practical difference there is which keys are being sent by default. It always acts as a HID (Human Interface Device), and the only thing you can really change is which keys are being sent.

And that is really the weak point of the device. By default it uses media playback keys such as play and pause, or next and previous track. It is easy to hit these buttons by accident, so you do not want them to have side effects on top of your intended action.

Then, if you use the numpad number keys then your numlock always needs to be on, or it will act as the cursor keys instead just like your keyboard would. Unusuable, in my opinion. Or you can use the numpad symbol keys (/, *, etc), but if you hit the switches by accident while in some text input, these symbols will then show. Really no key on any existing keyboard is a good choice for such a foot pedal, unless it is really that key that you need all the time and nothing else.

Virtual Function Keys

A better choice are virtual function keys, perhaps not that well known, but they are F13 to F35 (Talon supports all these). These keys exist only in software so they are hard to program generally (you need something like a stream deck that can send these keypresses, and that only goes up to F25). And unfortunately, binding these in the Olympus tool does not work at all on Windows. But, in the Mac OS version of the app the virtual function keys can be set and assigned, and this profile can be exported and loaded in the Windows app, and saved to the device even if the keybindings aren't showing.

F16-F19 function key template

Copy and save the XML below to a file such as Template\Template F16-F19.xml, then load the template in the tool and save it to the foot switch. Note that in the Windows tool these bindings won't show (entirely blank), but they'll still save to the device just fine. 

<?xml version="1.0" encoding="UTF-8"?>
<FTSWTool>
    <CurrentDevice>RS31H</CurrentDevice>
    <Template version="1.0.0.0"/>
    <DeviceList>
        <Device name="RS27H">
            <DefaultUsbMode>24</DefaultUsbMode>
            <Button id="0">
                <ShortCut modifierKeys="0" type="1" page="12">
                    <KeyCode>182</KeyCode>
                    <KeyCode>0</KeyCode>
                </ShortCut>
            </Button>
            <Button id="2">
                <ShortCut modifierKeys="0" type="1" page="12">
                    <KeyCode>205</KeyCode>
                    <KeyCode>0</KeyCode>
                </ShortCut>
            </Button>
            <Button id="1">
                <ShortCut modifierKeys="0" type="1" page="12">
                    <KeyCode>181</KeyCode>
                    <KeyCode>0</KeyCode>
                </ShortCut>
            </Button>
        </Device>
        <Device name="RS28H">
            <DefaultUsbMode>24</DefaultUsbMode>
            <Button id="0">
                <ShortCut modifierKeys="0" type="1" page="12">
                    <KeyCode>182</KeyCode>
                    <KeyCode>0</KeyCode>
                </ShortCut>
            </Button>
            <Button id="2">
                <ShortCut modifierKeys="0" type="1" page="12">
                    <KeyCode>181</KeyCode>
                    <KeyCode>0</KeyCode>
                </ShortCut>
            </Button>
            <Button id="1">
                <ShortCut modifierKeys="0" type="1" page="12">
                    <KeyCode>205</KeyCode>
                    <KeyCode>0</KeyCode>
                </ShortCut>
            </Button>
        </Device>
        <Device name="RS31H">
            <DefaultUsbMode>24</DefaultUsbMode>
            <Button id="0">
                <ShortCut modifierKeys="0" type="0" page="7">
                    <KeyCode>107</KeyCode>
                </ShortCut>
            </Button>
            <Button id="2">
                <ShortCut modifierKeys="0" type="0" page="7">
                    <KeyCode>108</KeyCode>
                </ShortCut>
            </Button>
            <Button id="1">
                <ShortCut modifierKeys="0" type="0" page="7">
                    <KeyCode>109</KeyCode>
                </ShortCut>
            </Button>
            <Button id="3">
                <ShortCut modifierKeys="0" type="0" page="7">
                    <KeyCode>110</KeyCode>
                </ShortCut>
            </Button>
        </Device>
    </DeviceList>
</FTSWTool>

Here is what the Mac version of the tool shows for reference:

Reverse Engineering and Modding Potential

I've done a lot of reverse engineering of the USB communication and this is really the best the device can do; basic keypresses, and that's it. No other modes of operation are available on the USB bus. The issue is that even these virtual function keys that Talon fully supports can collide with any others that are in use, and they're a hassle to manage in general.

If you know your way around an Arduino it is easily moddable though. Or perhaps you know someone who can do this for you. Some initial notes on this below, possibly a future blog post (particularly if there is demand for that).

Teardown

The device is fairly easy to take apart with not much risk of really damaging anything. Six phillips screws release the weighty metal base plate, and removing that plate gives access to the three white retention clips that keep the switches in place. There are also six square holes that offer access to the the clips near the springs that allow the switches to move but not pop out.

Note that one of these three white retention clips is most easily taken out with the help of something sticky (e.g. blu-tack or tape) as there's no room around it to lift it.

Once the white retention clips are removed and the switches can slide sideways and be taken out (you'll likely need to push the clip near the spring too). You need to take out the two side switches first before the center and top switches can move.

I did not take pictures of the process yet, but I could add more if there is a demand.