Jump to content
Corsair Community

Can I get a list of all the supported "keys?"


TaranVH
 Share

Recommended Posts

I'm new to this, so bear with me...

Looking through an exported .cueprofile file... I see this:

7axATIa.png

Basically, a list of the "keys" that this keyboard (The K95 RGB) can use.

It goes all the way up to <value107>Stop</value107>

But, I know that it's incomplete. F13, F14, F15... up to F24, are also supported. But they are not listed here.

 

I am trying to find out if there are any MORE unlisted keys.

 

Specifically, I am looking for "unassigned" scan codes:

nsxBrMT.png

 

Can anyone help?

Link to comment
Share on other sites

Adding to what Darth said, there are not technically scan codes that are put out without CUE running when you hit the macro keys. Maybe that is what you were curious about.

 

you may want to read this, although admittedly i have not yet:

http://www.quadibloc.com/comp/scan.htm

 

I am sure we can point you in the right direction. Darth Affee helped me a great deal

Link to comment
Share on other sites

I'm not sure what you're trying to achieve, but a list of everything supported is returned by the SDK if you call "CorsairGetLedPositions" (it's all in the documentation).

 

Oh, great!

Big favor: Can you get that list for me?

Sorry! I would do it myself, but I [currently] have no idea how to use an SDK. I'm not a programmer... just a macro enthusiast who uses AutoHotkey for nearly everything.

I'm only posting in the SDK forum because you guys were far more likely to understand my question.

 

Sooooo, can you get that list, and post it to pastebin or something? Even just a screenshot would be enough. I just need to know all the available "key" names.

Link to comment
Share on other sites

Adding to what Darth said, there are not technically scan codes that are put out without CUE running when you hit the macro keys. Maybe that is what you were curious about.

 

you may want to read this, although admittedly i have not yet:

http://www.quadibloc.com/comp/scan.htm

 

I am sure we can point you in the right direction. Darth Affee helped me a great deal

 

It's a loooooong story. which you can watch here. If you have like 50 minutes to waste:

[ame]

[/ame]

 

Basically, I'm going to have three Corsair K95s on my desk. I pioneered the practice of "wrapping" all the keystrokes from a keyboard inside of one other keystroke, as a means of communicating to AutoHotKey as to exactly which keyboard any particular keypress had come from. It works best if you use F13-F24 as the wrapper. But wrapping does NOT work very well for the MODIFIER keys. So I have to use some other key... but there ARE no other keys. (F13-F24 are being used for other important things) Thus, I am trying to use unassigned scan codes.

I'll use SC05A in place of LeftShift, SC05B in place of LeftControl, and so on, all the way down to the appskey.

In this way, I can convert two K95s into fully functional macro keyboards.

Link to comment
Share on other sites

Basically, I'm going to have three Corsair K95s on my desk. I pioneered the practice of "wrapping" all the keystrokes from a keyboard inside of one other keystroke, as a means of communicating to AutoHotKey as to exactly which keyboard any particular keypress had come from. It works best if you use F13-F24 as the wrapper. But wrapping does NOT work very well for the MODIFIER keys. So I have to use some other key... but there ARE no other keys. (F13-F24 are being used for other important things) Thus, I am trying to use unassigned scan codes.

I'll use SC05A in place of LeftShift, SC05B in place of LeftControl, and so on, all the way down to the appskey.

In this way, I can convert two K95s into fully functional macro keyboards.

 

Are you saying you are the taran? The guy from the youtube videos and were you part of linus tech tips or whatever? Of course I have seen that video since like forever ago, but if you want to use the register_callback example in the corsair SDK, you can definitely register and take action on the mouse buttons on the scimitar and the macro keys on the k95 separately, but if you are looking to use the Hid to register two K95's it is a different animal and you might have to sniff USB Hid events.

 

I have no problem registering Modifier keys WITH the K95 G and Scimitar M keys, so that is like (18+12)*6 (or times 3 in applications in windows that do not place nice with Alt). In AHK you can recognize all of them, so for me, application specificity, that is plenty, but I get that it is cool to know how to do because...well why not.

 

You may find these helpful (99% credit to Darth Affee and the Corsair team):

http://forum.corsair.com/v3/showthread.php?t=172374&page=2

 

http://www.smithany.com/register_callback.cpp

 

If you would care to post your progress, I would definitely be into it, maybe give me a reason to buy that lap-style K63 wireless:sunglasse

Link to comment
Share on other sites

Are you saying you are the taran? The guy from the youtube videos and were you part of linus tech tips or whatever? Of course I have seen that video since like forever ago, but if you want to use the register_callback example in the corsair SDK, you can definitely register and take action on the mouse buttons on the scimitar and the macro keys on the k95 separately, but if you are looking to use the Hid to register two K95's it is a different animal and you might have to sniff USB Hid events.

 

I have no problem registering Modifier keys WITH the K95 G and Scimitar M keys, so that is like (18+12)*6 (or times 3 in applications in windows that do not place nice with Alt). In AHK you can recognize all of them, so for me, application specificity, that is plenty, but I get that it is cool to know how to do because...well why not.

 

You may find these helpful (99% credit to Darth Affee and the Corsair team):

http://forum.corsair.com/v3/showthread.php?t=172374&page=2

 

http://www.smithany.com/register_callback.cpp

 

If you would care to post your progress, I would definitely be into it, maybe give me a reason to buy that lap-style K63 wireless:sunglasse

 

I am indeed THE Taran. All bow to the macro king! Who else would be crazy enough to have three K95s on one desk? I should have gotten 4...

 

Looks like the playlist link didn't work. Here is the follow-up to that video: [ame]

[/ame] which also has its own follow-up...

You don't really need to watch it. Basically, I've been using some fancy drivers (not programmed by me) to intercept keypresses from other keyboards, block them, and then send a 'wrapped' keypress instead, which AutoHotKey can easily listen for, and then execute whatever function I like.

 

But Hategag, my man, you're overthinking this. Talkin' about register_callback, M keys, G keys, sniffing USB Hid events... You know too much. Pretend you don't know all that. Consider this image of a doorstop not even taken out of its packaging. Lazy? Brilliant? I say, both.

IwB5Kk4.jpg

 

I don't know how to even open the SDK. I don't know how to fiddle with drivers and HIDs. I'm just using CUE 2 in ways that nobody ever expected.

 

Here's what I'm trying to do:

C5KwByN.png

 

So, to get that, as a test, I exported a .cueprofile file, opened it in notepad++, and changed only 4 things:

 

F12

c

c

F12

 

became:

 

F24

0xD1

0xD1

F24

 

Note that the first two are DOWN events, and the second two are UP events.

 

"F24" actually WORKS in a macro like this, even though you can't create it inside the CUE 2 software. You have to export, change it, and re-import.

"0xD1" was the string I was looking for. I had previously been writing in "SCD1," but that didn't work.

Unfortunately, "0xD1" doesn't seem to work either. It only ever shows up as hid_0, which doesn't seem to do anything.

And, hmmm, I just tried the same thing with "0x76" , which is the scan code for F24. It ALSO resulted in HID_0, and doesn't seem to work as F24.

 

So, IS the K95 keyboard capable of outputting pure scan codes, or not?

If it is, can I do it using the CUE 2 software like I am here? Or will i actually NEED to delve into the SDK?

I do NOT want to have to mess about with drivers anymore. CUE already does that stuff. I just want to assign every single key on those other two keyboards, to something unique, which AHK will be able to listen for.

Link to comment
Share on other sites

PS: the reason I don't want to 'wrap' LCTRL or RCTRL or LALT or LWIN or CAPS LOCK, etc?

 

Two words:

Cross talk.

 

Trust me, it becomes an absolute nightmare. I've got to keep the modifier keys as pure as possible. Like, have you SEEN how many keys I have bound to various combinations of modifier keys? I'm literally running out. That's why I need more keyboards in the first place.

 

Like, the shortcut "CTRL SHIFT" to change languages in Windows.... just pisses me off. Like, bitch, what if I want to use CTRL SHIFT F ? You're going to change languages on me as well? Yes. Yes it will.

 

CROSS TALK = BAD NEWS.

Link to comment
Share on other sites

So, to get that, as a test, I exported a .cueprofile file, opened it in notepad++, and changed only 4 things:

 

F12

c

c

F12

 

became:

 

F24

0xD1

0xD1

F24

 

Note that the first two are DOWN events, and the second two are UP events.

 

"F24" actually WORKS in a macro like this, even though you can't create it inside the CUE 2 software. You have to export, change it, and re-import.

"0xD1" was the string I was looking for. I had previously been writing in "SCD1," but that didn't work.

Unfortunately, "0xD1" doesn't seem to work either. It only ever shows up as hid_0, which doesn't seem to do anything.

And, hmmm, I just tried the same thing with "0x76" , which is the scan code for F24. It ALSO resulted in HID_0, and doesn't seem to work as F24.

 

So, IS the K95 keyboard capable of outputting pure scan codes, or not?

If it is, can I do it using the CUE 2 software like I am here? Or will i actually NEED to delve into the SDK?

I do NOT want to have to mess about with drivers anymore. CUE already does that stuff. I just want to assign every single key on those other two keyboards, to something unique, which AHK will be able to listen for.

 

So yes, you probably will need the SDK, but I bet we can figure it out. To clarify, CUE 2 will in fact let you register off keyboard items such as F13 - F24, you just need to do either with remap key or check the macro options with advanced settings on.

 

In remap, go to key function, select typing key, select function keys under key section. Language keys can buy you a little room. I think you're going to run out of recognized VK or scan code keys.

 

For me, i referenced this https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx in the modified register callback example and used the following (all of which appear to work alongside and be recognized in autohotkey and i out them with a single VK):

 

0xC1

0xC2

0xC3

0xC4

0xC5

0xC6

0xC7

0xC8

0xC9

0xCA

0xCB

0xCC

0xCD

0xCE

0xCF

0xD0

0xD1

0xD2

0xD3

0xD4

0xD5

0xD6

0xD7

0xD8

0xD9

0xDA

0xE9

0xEA

0xEB

0xEC

//there are others, but this was suitable for my needs.

 

Basically I think since it only seems to go up to approximately 0xFF you only have 255ish to begin with and each keyboard must have 100+18 G keys + media keys right? So then you're at 3 keyboards, you are at well over 255 meaning you need to bind these with modifier keys (which AHK plays nice with in the above list). Not sure of the math on all this, but the issue is going to be telling CUE or the SDK to know which keyboard is hitting the button and then put out a different modifier state on the above, or some arbitrary filesaved bucky bit combined with an autohotkey fileread like you did in the first video.

 

Maybe Autohotkey can distinguish them with AHKHid easily?

 

I think it is all very doable. If you want to try running the SDK, get the free microsoft studio 2017 and update the net targets. Be sure you are not downloading the old SDK (the old one is linked in a sticky and does not have a lot of what you will need, the corsair website has the latest one).

 

Keep us posted, im happy to help and am interested. I have not checked your subsequent videos yet, but I am going to look into it later to see if my wireless non corsair keyboard can work as an extra macro-key board out of curiosity.

 

just wanted to get this out there.

Link to comment
Share on other sites

Awwwwww, craaaap!

I thought I had checked it. but I hadn't.

I just tried plugging in two Corsair keyboards at the same time. I thought, SURELY I will be able to assign different profiles to each of them.

Nope. They all go to the same profile, no matter what.

DkIlnF7.png

 

I definitely need you guys' help, now. All I need is to be able to have my 2nd (and 3rd) Corsair keyboards on profiles of their own.

 

Can this be done with the CUE SDK?

 

I've been using Interception drivers, but they're limited to 10 keyboard devices. (Unless you pay over $2000.) My K95 takes up FOUR of those just on its own. I'm at the limit.

 

AHKHid is useless. It can only identify the keyboard of origin. It cannot BLOCK that keypress.

 

I've been all over the internet. Tried tons of methods. There's a trick where you can use rawInput AND a keyboard hook at the same time... it ALSO has issues. (There are links to two separate articles about this, in that 2nd video I linked to.)

 

An "all-Corsair solution" was my last hope for being able to do this easily.

 

Forget about the key list and the scancodes for the moment. I can always just use "launch application" to run scripts directly.

 

Can I use the CUE SDK to assign different profiles to different keyboards?

Edited by TaranVH
Link to comment
Share on other sites

int CorsairGetDeviceCount()

Description: returns number of connected Corsair devices. Returns not

more than one device of each type (keyboard, mouse, mouse mat, headset,

headset stand) in case if there are multiple devices of the same type

connected to the system.

Use CorsairGetDeviceInfo() to get information about a certain device.

Input arguments: no.

Returns: integer value. -1 in case of error. [0..5] are possible values.

...

CorsairDeviceInfo *CorsairGetDeviceInfo(int deviceIndex)

Description: returns information about a device based on provided index.

Input arguments:

• int deviceIndex - zero-based index of device. Should be strictly less than a

value returned by CorsairGetDeviceInfo()

Returns: pointer to CorsairDeviceInfo structure that contains information

about device or NULL pointer if error has occurred.

 

The above quote is from the documentation, I have yet to test, but I am not optimistic given the fact that the get device count returns only one of each attached device. Currently CUE is not setup to do different profiles across each device, the software is more intended to sync the device lighting and functionality across their ecosystem.

 

I may tinker with the above and see what CorsairDeviceInfo returns, but my only other corsair keyboard is at the office so soonest answer realistically I can have on that is tomorrow or Monday.

 

something tells me theres a short circuit way to do it all, like get ahkhid or some type of USB PCAP sniffing to id the device putting out the key and then evaluate && / AND type logic with your manually programmed key from within CUE2

Link to comment
Share on other sites

I'd be okay with it being unable to distinguish between two of the exact same model of Corsair keyboard. We have lots of different ones in the office. I could use a K95 RGB as my "normal" keyboard, and a K70 and K95 Platinum as my macro keyboards.

But, are you saying that it can't even distinguish different models of keyboards from one another?

 

Thanks a ton for your help thus far!

Link to comment
Share on other sites

I'd be okay with it being unable to distinguish between two of the exact same model of Corsair keyboard. We have lots of different ones in the office. I could use a K95 RGB as my "normal" keyboard, and a K70 and K95 Platinum as my macro keyboards.

But, are you saying that it can't even distinguish different models of keyboards from one another?

 

I did some very brief digging in the ahkhid, it is lovely, but because of the TLC or whatever they call it, windows lumps keyboards and like devices together and you need to go deep-er or maybe you can do it with AHKhid but i have not seen exactly how yet.

 

That said, I think the below is the best solution path, this seems to work so far with what I have tested to actually distinguish between separate input keyboards, although again, I did not have access to my other k95 yet to see if it might not be different.

 

Adjusting the code should get what you'd need at least as far as a proof of concept (and I'm not saying there are not easier ways, but this noticed the difference between two separate keyboards):

 

https://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

 

the above compiles right out of the box beautifully without a hiccup.

 

On line 158 of RawKeyboard.cs in their work, I tried inserting this, but cannot figure out yet how to de-reference the intPointer to the arbitrary integer of my example keyboard handle. I had a logitech wireless board laying around and my K95 refurb which had different targets / handles and I was assuming if i checked if there was a device of a specific handle firing the a key for example, I could do something different between the keyboards and go from there.

 

            /*if (keyPressEvent.KeyPressState == "BREAK" && (_rawBuffer.header.hDevice == 7471889))
           {
               //Do the laying around Logitech Wireless board stuff
           }
           if (keyPressEvent.KeyPressState == "BREAK" && (_rawBuffer.header.hDevice == 65620))
           {
               //Do the Corsair k95 board stuff
           }*/

 

I'm ultra out of my depth with csharp and even with c, but I assuming there is a way to grab the number the form shows under Handle under device details when the keypress events are called. The below is not real obvious but as i understand it the intpointer is more flexible and you need some function or static conversion that says this is what the number is so you can make that comparison...

https://msdn.microsoft.com/en-us/library/9a8d37fb(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1

 

 

I am unfortunately pretty sure for the time being this would be the best bet, then again, I have yet to try getdevicedetails in the SDK as mentioned above. I'm optimistic.

Link to comment
Share on other sites

            if (keyPressEvent.KeyPressState == "BREAK" && (_rawBuffer.header.hDevice.ToInt32() == 240386673))
           {
               //Do the laying around Logitech Wireless board stuff
               Debug.WriteLine("Ltech");
           }
           if (keyPressEvent.KeyPressState == "BREAK" && (_rawBuffer.header.hDevice.ToInt32() == 65620))
           {
               //Do the Corsair k95 board stuff
               Debug.WriteLine("k95");
           }

ok figured that part out...it is a moving target unless the devices stay plugged in, but this is technically a proof of concept i would say as i am pretty sure this will work with the two k95s

 

I will try to get a better understanding of how it all works and see about making it global etc.

 

I think ctrl alt o makes the output window come up which is way helpful

 

https://stackoverflow.com/questions/1159755/where-does-system-diagnostics-debug-write-output-appear

Link to comment
Share on other sites

No. The SDK has absolutely nothing to do with profiles. You can control the leds, and you can hook the G-keys. That's it.

 

Have you tried http://www.oblita.com/interception.html? I don't see any reason why this should have a device-limit.

 

Yes. I've been using Interception for over a year now.

To get past the 10-device limit, you must pay $2200. Drivers (the best solution for multiple keyboards) must be licensed from Microsoft, and are not cheap.

 

https://github.com/oblitum/Interception/issues/25#issuecomment-308619787

 

That's why I'm here. Since Corsair CUE is able to tell the difference between one of its own keyboards, and another manufacturer's keyboard, I thought it'd be able to tell the difference between two different Corsair keyboards.

Link to comment
Share on other sites

@Taran I may be missing something, I get that you need to block the input from the multiply registered keyboards, and that Inception does the job up to ten, but it is based on the number of hid devices attached not keyboards, but I seem to think that Autohotkey could individually block each key's output prefixing the hotkey with ~, and I have not tested, but that should block regardless of where it came from?

 

Then inside of that blocking hotkey, first either readfile some state from a text file, or also check for the existence of a depressed off keyboard key (some arbitrary "modifier/meta/bucky/super" whatever you want to call it state).

 

The code I linked to above, if modified slightly could write to, or have some additional key depressed at the same time as each keyboard event and be executing specific code based on what keyboard handle the event came from.

 

Then autohotkey does the rest of the magic. I think that could work? I didn't get my 2nd k95 yet, busy day, but tomorrow, I am hopeful to get after it, but it should work and be nearly limitless in quantity? The only question would be if AHK blocks it quickly enough and reliably enough and implementing each specific handle dynamically and some other nuances.

Link to comment
Share on other sites

@Taran I may be missing something, I get that you need to block the input from the multiply registered keyboards, and that Inception does the job up to ten, but it is based on the number of hid devices attached not keyboards, but I seem to think that Autohotkey could individually block each key's output prefixing the hotkey with ~, and I have not tested, but that should block regardless of where it came from?

 

The ~ prefix actually allows a key's normal function to pass through. It deliberately does NOT block the keypress.

 

In extreme cases, you can block ALL non-physical keyboard events if you really want to, but this has major drawbacks: https://autohotkey.com/board/topic/38015-ahkhid-an-ahk-implementation-of-the-hid-functions/

 

I'm 99% sure that this solution would not work for me. Especially since I have like 200+ AHK functions, many of which are running continuously.

Link to comment
Share on other sites

 

Adjusting the code should get what you'd need at least as far as a proof of concept (and I'm not saying there are not easier ways, but this noticed the difference between two separate keyboards):

 

https://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

 

the above compiles right out of the box beautifully without a hiccup.

 

I had that linked to from part 3 of my video series.

 

but I also had a link to this:

https://www.codeproject.com/Articles/716591/Combining-Raw-Input-and-keyboard-Hook-to-selective#Chap5

 

Take a look at the serious problems that can arise from this solution...:

-Delay/desync between hook and rawinput messages

-Missing raw input messages

-Missing hook messages

-"Senseless" hook messages

-Multiplied hook messages

-The "altgr" problem

 

For these reasons, I've been pursuing a driver-based solution for quite some time now. Can we not just use the existing Corsair drivers.... somehow?

Link to comment
Share on other sites

For these reasons, I've been pursuing a driver-based solution for quite some time now. Can we not just use the existing Corsair drivers.... somehow?

 

My bad I clearly did not do my homework.

 

I tested it out today (finally), but I only tried with three keyboards. I simultaneously maxed out my Hid devices for the purpose of worst case scenario-ing

 

http://www.smithany.com/cewcew.jpg

http://www.smithany.com/3kb1.jpg

http://www.smithany.com/3kb2.jpg

http://www.smithany.com/rearloadout.jpg

 

 

I was able to run the intercept exe successfully with many hid keyboard devices showing up, but again that was only three keyboards.

 

I was able to confirm that the SDK was not able to determine the number of keyboards plugged in, so as of the time being, CUE or the SDK are not able to handle this.

 

Maybe this could be added in CUE 3 as that is on the horizon.

 

You mention the ten device limit and earlier in a post saying the corsair devices take up multiple hid slots. were you actually plugging in ten keyboards? or just like four? Maybe three corsair devices will exceed the allowable as i tested only with two corsair keyboards and one logitech.

Link to comment
Share on other sites

My bad I clearly did not do my homework.

 

I tested it out today (finally), but I only tried with three keyboards. I simultaneously maxed out my Hid devices for the purpose of worst case scenario-ing

 

http://www.smithany.com/cewcew.jpg

http://www.smithany.com/3kb1.jpg

http://www.smithany.com/3kb2.jpg

http://www.smithany.com/rearloadout.jpg

 

 

I was able to run the intercept exe successfully with many hid keyboard devices showing up, but again that was only three keyboards.

 

I was able to confirm that the SDK was not able to determine the number of keyboards plugged in, so as of the time being, CUE or the SDK are not able to handle this.

 

Maybe this could be added in CUE 3 as that is on the horizon.

 

You mention the ten device limit and earlier in a post saying the corsair devices take up multiple hid slots. were you actually plugging in ten keyboards? or just like four? Maybe three corsair devices will exceed the allowable as i tested only with two corsair keyboards and one logitech.

 

Well, thanks a lot for your help. Looks like only Corsair can save us now.

I've already scripted a video: "An open letter to Corsair," asking them to add this feature, and explaining why it's even a good business idea.

 

Indeed, I only have 4 keyboards plugged in, and I already hit interception's limit. The K95 uses up 4 device drivers just on its own.

Then I have a numpad, the K120, and and Azio keyboard. That's 3 more.

The Palette Gear uses up another one.

Every MOUSE I've tried ALSO uses up a keyboard device driver...

So that's 9.

I keep #10 open so that I can plug in my ubikey when I need it. But sometimes, even that fails to work.

If you unplug a keyboard and plug it back in, that also counts as an additional device driver.

 

---------------------------

 

For future generations, I did find the key list I was looking for:

https://i.imgur.com/qNR9dhZ.png

 

You can go to Actions > Macro > Inert New Event > Keyboard Event > Keystroke > and then you can select a key from a big scrolly list. Here are the extra keys that I was looking for:

 

Application

NonUS_\

NonUS_~

Lang1

Lang2

Lang3

Lang4

Lang5

Lang6

Lang7

Lang8

Lang9

International1

International2

International3

International4

International5

International6

International7

International8

International9

 

And of course, it's got all the keys for both possible states of the numpad, (numlock on or off) and every function key all the way from F1 to F24.

I do NOT see any scan codes in there. Bummer.

 

When is CUE 3 going to be released?

Link to comment
Share on other sites

  • 2 months later...
When is CUE 3 going to be released?

iCUE is out now, but does not appear (yet) to be able to force different registration between multiple keyboards unless I am missing something. Again i think that is due to the windows TLC with USB and Keyboards getting lumped into a single group regardless of the balance of their HID ids.

 

I just ordered an Infinitton to sit next to my corsair stuffs (hasn't arrived yet) which may further broaden my horizons. Hoping they have an integration with their ISE so i can slap a button on the scimitar mouse or the k95 and switch Infinitton's modes without changing focus on an application. Now I have to make a bunch of 72^2 icons tho...

Link to comment
Share on other sites

  • 1 month later...

Just posting an update to this thread, for the benefit of all future people with the same obscure needs as I.

 

I figured out most of the stuff that I was trying to figure out. I was able to find 11 EXTRA keys that can be sent from a Corsair keyboard, and picked up by AutoHotkey, which can then run any script you like, of course.

 

Corsair's exact name for those extra keys are:

 

Keyboard Intl' 6

Keyboard Intl' 2

Keyboard Lang 2

Keyboard Lang 1

Keyboard Intl' 1

Keyboard Lang 4

keyboard Lang 3

Keyboard Intl' 4

Keyboard Intl' 5

Keyboard Intl' 3

Keypad , (Brazilian Keypad)

 

These are in a weird order, because I've ordered them by Scan Code. The scan codes for those keys are:

 

SC05C

SC070

SC071

SC072

SC073

SC077

SC078

SC079

SC07B

SC07D

SC07E

 

This and much more has all been documented by yours truly in a spreadsheet. Also, I found something disturbing: "Keyboard Lang 5" and "F24" both use the exact same scan code AND virtual key. Meaning that they are the exact same key. Meaning that "Keyboard Lang 5" it totally in the wrong spot. SC076 is totally reserved for F24. The Corsair dudes should probably look into this.

 

There are also 7 keys that a Corsair keyboard can send, that AHK seemingly does not notice at all. (making them useless for my purposes.)

 

Here's a screenshot of my findings:

 

cY31tS4.png

 

You can download the entire excel document here:

https://github.com/TaranVH/2nd-keyboard/blob/master/FYI/Table_of_all_scan_codes.xlsx

 

By the way, if anyone knows what the heck the Keyboard Lang and Keyboard Intl' keys are actually FOR, please do let me know.

Link to comment
Share on other sites

@TaranVH

Thank you for fighting the good fight!

 

I just bought a third k95 with 18 macro keys and even though it was more generally for "insurance" if i ruin my existing boards, it'd be dope to see if the codeproject article from Vít Blecha alongside the SDK could do something special with 2, even if it disregarded alt but tell the difference between the 2 kbs.

 

As i posted above, it can tell the difference between 2 kbs, so there has to be a different polling method that can set something whether a key is pressed on a certain USB device which can perform additional distinguishing tests.

 

I'm a week or two out on delivery of that third kb and explaining it to the intern (he's a smart kid and Im certainly not so swift) so i'm optimistic.

 

Like the Codeproject thing can save out a pointer to a location and say "I am device X" and something else can read it and say it was device X and if Y happens and it was device X instead of device Z, lets do this...

Link to comment
Share on other sites

 Share

×
×
  • Create New...