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.

Once all the switches are removed you get access to the 4 switches and the small PCB with the Olympus electronics. It would be really easy to replace this with a small 32U4 based Arduino (Pro Micro / Micro) or similar board that can function as a HID device. Desolder the 4 switches, replace the PCB and cable with an arduino and USB cable, solder on the switches, upload a small sketch to the Arduino to match the ports you've soldered the switches on to and now the device can work as a joystick device, no more need for keyboard inputs, though you can program keyboard presses if you want instead. The difference is that you get way more control.

If I end up doing this mod myself (probably, some day anyway) I'll make a detailed blog post for the process so that basically anyone can follow it.

Thoughts on the device

The device has a nice weight to it, and mechanically it is fine. It feels sturdy enough, and having opened it up I think it's unlikely to physically break from normal use. The electronics are rather dumb and not flexible enough, the software isn't very polished plus Windows users are out of luck on setting up virtual function keys themselves unless they grab (and possibly manually modify) the premade template as above.

After my first hours with the device I had a bit of regret buying it as the need to use actual keyboard keys for the key bindings was frustrating me. But after a discussion on the Talon Slack we now have this virtual function key profile, and that has improved things a lot. Without the ability to use these virtual function keys I would've changed the electronics for an Arduino already.

For now I've set it up to have left- and right click on the side buttons, and scrolling up and down on the center buttons, and I find this to be really helpful.

So I do recommend the device, but you do need to do a little bit of setup work on the software side with the profile above (and the Talon setup; see Andreas's code) to make it worth having.

Hope this helps you in any way.

-- Lianna

Comments