0

This question has been nagging me for a while.

I have the following keyboard :

enter image description here

On the left, there are the keys that I can not detect using any of the standard methods for getting input from a keyboard. The same thing applies to a row of keys just above my F1-F12 keys. The keys are labeled as follows :

Left Side:

L1   L2
L3   L4

MX1  MX6
MX2  MX7
MX3  MX8
MX4  MX9
MX5  MX10

Above the F1-F12 keys

M1  M2  M3  M4  M5  M6  M7  M8  M9 M10 M11 M12

When I called Steelseries and asked if they had a library, the said there is none and that I need to filter on USB for the keypresses. I am not entirely sure how to specifically target this device, and listen for the standard events to translate them into KeyUp / KeyDown / KeyPress / etc events.

Could you provide an example on how I can begin this endeavor as I would really like to use these keys within applications of my design, and have so far - hit a wall.

Kraang Prime
  • 9,981
  • 10
  • 58
  • 124
  • http://stackoverflow.com/q/68749/495455 – Jeremy Thompson Dec 30 '16 at 03:49
  • @JeremyThompson - thank you for the attempt, however none of those solutions apply to this. They pretty much dance around either hardware specific libraries already built, dated generic libraries with no real outlying use of them, or simple "is it plugged in" detection. I am looking to filter on the key-presses -- and should not require a custom hack in the form of a driver to read the input. The data is coming into the machine, so I should be able to read it pro grammatically without having to mess with 3rd party stuff. I am looking for an example on how to do it in the context of my Q – Kraang Prime Dec 30 '16 at 04:26

1 Answers1

0

If I'm not mistaken those are macro keys. They allow you to run specific custom apps(i.e. calc.exe) The configuration app that came with the keyboard, should be able to show you more.

tinstaafl
  • 6,908
  • 2
  • 15
  • 22
  • Steelseries told me that in order to use them programmatically, I need to filter for them via raw input through USB. Unlike most keyboards with macro-keys, these keys are off-map - as in they are real fresh individual keys like the `A` key is not the `DEL` key. Most hybrid into a blended key or a hack sometimes overriding other keys like numeric keypad. – Kraang Prime Dec 30 '16 at 04:26
  • @KraangPrime - You will probably need to look at [this post](http://stackoverflow.com/questions/2694804/reading-from-usb-device-and-sending-queries-to-it-in-c-sharp). It has some links that should help – tinstaafl Dec 30 '16 at 04:29
  • WinUSB - requires it's own driver. SharpUSBLib - requires the driver by http://libusb.info/ . The one on CodeProject, will need to mess around with it, but I still have no idea what to filter on for those specific keys, or how to translate them into proper `keyup`/`keydown`/etc events. As for the `lvr.com` link -- seems to be some shopping site for skirts or whatever now. (dead link) – Kraang Prime Dec 30 '16 at 05:00
  • Once you get communication set up, press a key and see what data comes through. This [developer site](http://developer.steelseries.com/gamesense/) might help. It appears there is an API. – tinstaafl Dec 30 '16 at 05:16
  • Ya, been through the dev docs, apparently it's a nodejs server that runs local that you can send triggers to change the way the keyboard reacts to game events -- it's not really for the reverse which imo is rather silly lol. Whats frustrating is there is a lot of hardware with api's to it, i was really just checking here before i reverse engineered their software to hack an API out of it the way i did in the past with other API-less software. I tried inspecting the IO with .NET's com component (serial as usb) as a hack and none of the low level keys come through. – Kraang Prime Dec 30 '16 at 05:57