Why is NKRO useful?

User avatar
IonutZ

12 Oct 2013, 22:54

So I'm planning to mod my QFR by adding a USB hub inside to which I'm gonna connect a Teensy and the keyboard... now if I connect the keyboard via USB I lose NKRO to 6KRO. (The Teensy is controlling some RGB SMB LEDs which are gonna go in some Cherry MX switches with modified housing to accommodate the SMB). I type at an average speed of 100wpm with a top speed of 120wpm... I can't recall having a problem with keys not registering... so then why is there so much hype about N key rollover?

User avatar
Muirium
µ

12 Oct 2013, 23:01

Because it's a good bullet point feature to put on the box.

USB can support NKRO if you do it right. My IBM PC/XT Model F is NKRO thanks to Soarer's converter. A much better solution for me than a PS/2 adapter. Especially as I haven't a PS/2 port on my machines these days.

For practical purposes though, I don't think 6KRO is a problem at all. NKRO is nice to have, and certainly something to show off about, but I've never found it vital in any realistic situation. It's just a matter of engineering excellence!

Say, what are you up to with that Teensy? You could have NKRO over USB if you want it.

User avatar
IonutZ

12 Oct 2013, 23:08

I had an idea at first, to throw a Soarer's converter in the chain after reading your reply... but I don't know how this would work, basically, CM says that if you run the QFR with the included PS/2 adapter you'll get NKRO. We're going from USB to PS/2 in this case... Soarer's is PS/2 to USB so I don't see how that would change the whole situation?

With the Teensy I plan on rerouting the Insert button to it, and I plan on powering several SMD RGB LEDs on a few keys. The insert button will switch between modes on the LED depending on short vs long press (brightness, color, on/off)

So the idea was to have the USB connector from the QFR connect to a USB hub (inside the keyboard), connect the actual keyboard to one of the ports and the teensy to another one of the ports so that I can upload code to it without having to take the keyboard apart.

User avatar
fifted

13 Oct 2013, 01:09

NKRO seems to be a niche feature right now, but it is very useful in stenography, e.g. using Plover. I agree that it is probably not worth seeking out if you don't have a special need for it.

User avatar
IonutZ

13 Oct 2013, 02:05

It seems like I could implement Soarer's (NKRO solution) into my Teensy plan :D so I'll have a USB NKRO QFR

User avatar
webwit
Wild Duck

13 Oct 2013, 02:21

NKRO is important because it is a failproof method to implement all possible combinations. Otherwise there's usually some sub-optimized matrix which by wild guessing tries to allow some combinations on popular keystrokes. I don't think it's important that USB restricts it to 6KRO, I don't need more, what's important is that no weird stuff happens because of the limitations of the matrix and its logic, and the NKRO design provides that.

User avatar
Cafeine

13 Oct 2013, 02:45

Mmm sorry posted 2 times for no reasons. -_-
Last edited by Cafeine on 13 Oct 2013, 03:19, edited 1 time in total.

User avatar
Cafeine

13 Oct 2013, 03:17

It's only useful in videogames IMHO. Where you can have to crouch faster while leaning or whatever. Latest Illuminated batch from Logitech was notorious to LOWER the NKRO so you couldn't actually do that or sprint / move forward and jump at the same time for example.

User avatar
Vierax

13 Oct 2013, 06:07

NKRO is also a need for a chording keyboard. But IMHO the 6KRO limitation of the standard USB rate is quite enough for gaming. The most important is the matrix design which must prevent ghosting and missing keys.

Findecanor

13 Oct 2013, 06:46

Unless you have NKRO in the matrix, there will be one or more key combinations where you will get blocking.
If you have an office-optimized matrix, you may get blocking when gaming. If you have a gaming-optimized matrix, then you may get blocking when playing a retro game that uses the numeric keypad as gamepad.
The only way to be sure that you never hit the limit, is to have NKRO in the matrix, and that requires diodes.

User avatar
Muirium
µ

13 Oct 2013, 11:56

Fortunately, the QFR has an NKRO matrix, or it couldn't do NKRO over PS/2. So NKRO is indeed on the table here. (Soarer's converter is only as NKRO as the keyboard that's hooked up to it. No way to bring those blocked signals back, further down the chain.)

Using Soarer's converter, you'd be doing one simple conversion: PS/2 >> USB. The QFR's built in controller outputs both directly, there's not a conversion going on to get PS/2 output. Soarer's solution gives you NKRO over USB and a ton of programmability if you need it, including macros. With an XT, you better believe I use the hell out of all that!

Also, I think you could do your Insert key based lighting control using just one Teensy that way, if you're happy coding AVR C. The only snag I know of is that Soarer hasn't quite released his own code yet! Which, admittedly, is a show stopper until he does.

User avatar
damorgue

13 Oct 2013, 12:47

Muirium wrote:snip
Soarer's converter can give any keyboard which has NKRO over PS/2 NKRO over USB as well. Wow, I had actually never realized that. Now I wish I had ordered more Teensy boards.

User avatar
daedalus
Buckler Of Springs

13 Oct 2013, 12:54

The USB spec allows for up to 6 standard keys and 4 modifiers to be pressed at the same time. This, perhaps coincidentally, adds up to the total number of fingers that the average person has between their two hands. Of course, one may wish to use more regular keys and less modifiers at once, but that seems like a bit of an edge case to me.

User avatar
Muirium
µ

13 Oct 2013, 13:18

The spec is reasonable enough. In fact, it's so reasonable that they left other routes available, which is how Soarer gets NKRO over USB: by sending a complete bitmap of the keyboard state. It just fits within the broader confines of the spec.

Webwit's answer to the original question is the best. 6KRO is one thing, but which keys? A compromised matrix is the worst of all, because no external fix can work. For what little effort it takes (in diodes and using other people's code!) NKRO is a simple run right around every edge case.

User avatar
IonutZ

13 Oct 2013, 17:08

Daedalus, I like to have full functionality when punching my keyboard edsxrz4z sedazwxr dsxzecrfef as you can see i need between 8-10 keys functional at a time. tguyjhrfr oik8uyh7l8 uyjhgikmgi rt5uyh67r5u6 - well even upwards of 12.

Muirium I'm pretty sure I saw Soarer's on GH, version 1.12 in his guide to making his converters - surely I can use that, don't you think?

User avatar
Muirium
µ

13 Oct 2013, 17:25

Soarer has a hex file for version 1.12 (the compiled binary you upload to your Teensy) but to do what you want with Insert and lighting, you would need to modify his code, which isn't open source yet the last I checked. His converter is currently only freeware. Though Soarer says it will be open sourced when he's happy with it.

User avatar
IonutZ

13 Oct 2013, 17:39

I sent him a message, let's see what he says.

User avatar
Vierax

13 Oct 2013, 18:13

I think he will open the source when he feel ready, instead maybe he'll give you a customised hex file.

User avatar
beltet

23 Oct 2013, 02:02

I usally say to regular users that you only need NKRO if you type with your forehead aswell...

User avatar
Daniel

23 Oct 2013, 11:08

I need NKRO because I use a strange key combination to control my window manager: To move a window onto workspace 2 i use: Caps Lock + Shift + 2. This combination isn't supported on most keyboards without NKRO because the combination is uncommon.
Therefore I'm happier with NKRO, because I don't have to use the right shift to enter above key combination.
This is in fact a keyboard matrix problem and not a NKRO problem, but on most modern keyboards the matrices don't support this exact combination and NKRO solves my problem :)

Post Reply

Return to “Keyboards”