PC Push-To-Talk is a Nightmare
By Thom McGrath on
Configuring your VOIP client such as Mumble, Ventrillo, or TeamSpeak to use Push-To-Talk (PTT) is a reasonable tradeoff between your convenience and the satisfaction of the other people you are talking to. Especially if you have a mouse with extra buttons.
But doing so is a massive pain-in-the-ass. Every key on your keyboard serves a purpose. Even binding to something obscure like the "End" key will still interact with your system in some way. The goal is to find a true PTT that does not affect anything on the system.
Attempt 1: Mouse4 and Mouse5
Most gaming mice these days have at least two additional buttons whose default action is simply Mouse4 and Mouse5. In games, these buttons are basically "free" buttons that can be assigned to actions.
Outside of games though, these Mouse4 and Mouse5 are (in Windows) permanently bound to Browser Back and Browser Forward actions. If you try to search for a solution, most replies will tell you to use your drivers to rebind the buttons to different actions. Unfortunately, those replies don't understand the problem. The problem is not that the drivers are sending the browser actions, the drivers are sending actions for Mouse4 and Mouse5, just like it does for Mouse1, Mouse2, and Mouse3. There is no magic here. Instead, it is Windows (or its HID drivers) that interprets the Mouse4 and Mouse5 actions as browser actions. In all my searching, I couldn't find way to break this behavior.
The problem then is that using the PTT key outside a game will have dual actions. It will both open the talk channel and send your browser forward or back. This isn't good enough.
In some clients, such as Mumble, the shortcut bound to Mouse4 or Mouse5 can be suppressed from other applications. In theory, Mumble will receive the action first and stop anything else from being able to act on it. If this works for you, then the solution is simple. Check the "Suppress" checkbox next to a Mumble shortcut definition.
Attempt 2: F13 to F24
There are scan codes for more keys on your keyboard than you have physical buttons for. It is possible to download a jar file to send these special codes and simulate the keyboard pressing buttons it does not have. Using this technique, it is possible to bind the two side mouse buttons to function keys such as F23 and F24. These keys have no alternative function, so they're safe to use. In fact, most games don't even recognize them.
And that's the problem. Mumble simply does not notice that F13+ was even pressed. It just sits there waiting for an action. Source games and Steam itself will see the key press, but not know what to do with it, and ignore it. Battlefield 4 recognizes the key, but the developers didn't prepare for it, so their key enumeration doesn't list the value. PlanetSide 2 and Nvidia's ShadowPlay both support the key flawlessly.
Since Mumble cannot see the key, this solution is dead in the water.
Attempt 3: Registry Keyboard Layout
There is a registry key that maps the scan codes from the keyboard to keys in the system. This registry key can be modified to break scan codes you don't really need, such as Scroll Lock. By breaking the scan code for that key, it becomes a "blank" key. You can still press it, the scan code still gets sent, but the system does not treat it as a scroll lock key. It's just a generic key.
To do this, download KeyTweak. Changing values will require a restart though.
In KeyTweak, choose the key you want to break and press the "Disable Key" button. Press Apply and restart the computer. When the system is ready to go, you can press your Scroll Lock key and hopefully, the keyboard's scroll lock light will not change state.
Now you can bind one of your mouse buttons and your VOIP PTT key to the scroll lock key. You now have a system-wide PTT key that carriers no secondary action.
However, this technique does not work in all games. Steam and Source games still won't like this. They require a "real" key. My recommendation is to use this technique for the VOIP PTT on one mouse button, with the other button bound to something simple like Alt. The second button never needs to be used outside of a game anyway, so Alt will work fine. This setup allows you to talk to your VOIP server using one button, and your in-game chat using a different button. This works great if the VOIP server has players on both teams. It becomes the option to transmit to everybody, and the in-game option works for chatting for only the your time.
There are so many ways to configure VOIP solutions, it is impossible to enumerate all of them. My first attempt will work for some people assuming the VOIP program can correctly suppress the key. If not, my third attempt is nearly bulletproof. How you use this knowledge to setup your VOIP server is up to you. Some servers can automatically place players into separate channels depending on the team, so maybe you don't want any in-game chat key, and would rather have a shout key instead. This is just another example.
Hopefully I've helped you get to PTT bliss.