How NOT to control our Gaming Keyboards, from a Linux computer.

One of the commodities which serious computer enthusiasts might want to buy, is a gaming keyboard. One reason may be the fact that by coincidence, gaming keyboards tend to be sound mechanical keyboards as well, which have per-key switches, which in turn have the desired tactile response, which bubble-keyboards today often lack.

But then, one of the features which gaming keyboards may add, is the ability to store and play back macros when in gaming-mode, those macros being key-sequences which a player needs to enter repeatedly, but tires of typing each time.

Another feature gaming keyboards can have, is fancy LED back-lights, which can even be customized to highlight different groups of keys, depending on how those groups of keys are important to certain uses of the KB. ( :1 )

I just bought the “ThermalTake eSports Poseidon Z RGB”, with Blue Key-Switches. The blue key-switches are switches that not only give good tactile feedback, but also make a distinct, high-pitched clicking sound, at exactly the right instant, during a key-press.

They have mechanical hysteresis.

One less-optimistic side-effect for this, under Linux, is the fact that some of the customization of this KB requires that proprietary software be used, of which there only exists the Windows version. The main functioning of the KB will work under Linux (Debian / Stretch), but if we want to program the layout-coloring / highlighting, then we need to use the proprietary software. These layouts can then be stored in 1 out of 5 Profiles, on the KB itself, which has its own 32-bit embedded micro-controller (i.e., this KB has its own CPU).

I tried to find out, whether I could install the software under a specific Wine folder, and then create symlinks to various device-files that exist natively under Linux, so that those device-files will appear as generic, DOS-type serial ports. Since Wine, by default, does not have direct access to the host machine’s USB-connected hardware.

The result was, that I bricked the keyboard. I needed some support from the retailer who sold me the keyboard, to recover a fully-functional instance.

The sum total of what this means, is that I can use this KB under Linux. I must just store its customizations using an old Windows laptop I have – a dual-boot ‘Acer Aspire 5020′ – after which I can disconnect the KB from that laptop, and connect it to my main (Linux) desktop again.

(Edit 04/05/2018 : )


(One problem with trying to photograph this keyboard with a simple phone-cam is, the fact that the LEDs produce light with high intensity. This light tends to saturate the light-sensor in a conventional camera-phone, which in turn results in a reduction, to the recorded color saturation. I.e., when the BG light-level is normalized by a camera-phone, the brightest primary colors are off-the-scale, but limited to scale as encoded.

Therefore, Blues will seem to look similar to Greens, and Yellows look similar to Whites.

When seen with the naked eye, all these colors look very deep. )



The additional capability this KB has, to allow the user to record keystroke-macros on-the-fly, is of limited use to me, due to one basic flaw in how it works: The macro will not only store key-event-sequences, but also their exact timing. This means that if, in defining a macro, the user spends several seconds to find each key, then when playing back the macro, the KB will spend the same number of seconds, as were spent recording it. This can only be corrected using the GUI of the proprietary software, in which the timing information can be edited. But then again, being able to record macros was not a feature which I was seeking, when I chose to buy this KB.

I suppose that one complicated thought I can have from this experience is, that the KB will remember its settings fine. And if it should not, only my Windows-based laptop will be able to straighten it out again. :(


1: )

There is an additional family of effects, which the ‘Poseidon Z, RGB’ Keyboard offers, but in which I can see no purpose for the most part. Its LED back-lights can play animations, either in response to the user typing on a key, or just as a background-pattern.

There are only two variants of these effects which I’d see as remotely useful, even though they make up 3 categories – tabs in the GUI of the software:

  1. When each key has been typed, it glows in a certain color, which makes its image highly visible and notable. That glow next decays over a few seconds time, even as more keys are being typed.
  2. In response to any keys being typed, a razzle-dazzle of some kind can radiate throughout the keyboard’s keys, which could confuse a second person in the room, who might be trying to recognize a password being typed in.

What the first example will ‘accomplish’ most efficiently, is that anybody peering over the main user’s shoulder will be able to follow exactly what he typed. This also happens to be the exact opposite, of what most Linux-users want, most of the time. I.e., we’re usually more concerned that if we need to type one of our passwords, while there is somebody else in the room, that person might be able to ‘see our passwords’, ?

Yet, If the purpose was to give some sort of lesson in-person, then it might be a goal that the other person be able to follow exactly what the main user is typing… Further, the way this KB is designed, if the main users needs to type in his password after all, and has the presence of mind, he can switch the KB to a different Profile first, that no longer highlights.

As far as I’m concerned, the non-practicality of these effects for the most part is a plus, because this way, I only need to program one additional KB Profile, that performs this ‘indicate and decay’ behavior 100% . And then I also don’t need more of these Profiles, for use with different applications…



Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>