NKRO and 6-Key Rollover on USB Test

User avatar
Hypersphere

24 Nov 2014, 01:53

Today I responded to an inquiry about 6-key rollover on the RF 87ub 55g from someone who did not have the keyboard and could not find 6KRO on USB data on it. He referred me to the Microsoft testing site:

http://www.microsoft.com/appliedscience ... gDemo.aspx

Using this site, I verified that the RF 87ub 55g consistently registered 6 keys over USB.

I got the same result with my IBM XT with Soarer's Converter.

However, when I tested a Kul ES-87 mx red and a WASD V2 87 mx brown, I got only 5 keys to register at the same time over USB.

I would be interested in hearing about results others have obtained with various keyboards using the MS testing site.

Parak

24 Nov 2014, 02:02

XT with Soarer's should be giving you NKRO.

User avatar
chzel

24 Nov 2014, 02:15

Parak wrote: XT with Soarer's should be giving you NKRO.
USB natively supports max. 6KRO, keyboards with NKRO over USB use trickery to achieve it!

Hyper, did you get any combination to register 6KRO on the Kul and Wasd? Maybe for some reason certain combinations fail.

User avatar
Hypersphere

24 Nov 2014, 03:20

chzel wrote:
Parak wrote: XT with Soarer's should be giving you NKRO.
USB natively supports max. 6KRO, keyboards with NKRO over USB use trickery to achieve it!

Hyper, did you get any combination to register 6KRO on the Kul and Wasd? Maybe for some reason certain combinations fail.
I was not systematic with key combinations, but all the combinations I tried with the Kul and WASD gave 5KRO instead of 6KRO. In contrast, with the XT and RF 87u, I got 6KRO consistently.

Parak

24 Nov 2014, 04:37

chzel wrote:
Parak wrote: XT with Soarer's should be giving you NKRO.
USB natively supports max. 6KRO, keyboards with NKRO over USB use trickery to achieve it!
Um.. no. There's no such restriction on the USB protocol. I'll defer any "trickery" discussions to someone that has actually coded NKRO support into a controller, however as far as Soarer's goes, I'm using it right now with an F122:

Image

At least as far as how much I could press while still taking a screenshot at the same time. Plus documentation on Soarer's mentions this as a feature. As such, any supported capsense type keyboard using Soarer's should be fully NKRO.

gioele

24 Nov 2014, 13:34

Parak wrote:
chzel wrote: USB natively supports max. 6KRO, keyboards with NKRO over USB use trickery to achieve it!
Um.. no. There's no such restriction on the USB protocol. I'll defer any "trickery" discussions to someone that has actually coded NKRO support into a controller,
Could someone chime in and give some low-level details about how xKRO works over USB?

Soarer on GH started explaining how NKRO over USB can work, but stopped after just few hints.

User avatar
Muirium
µ

24 Nov 2014, 14:30

Try piecing it together from all the bits and pieces around here too:

http://deskthority.net/search.php?keywo ... mit=Search

Very briefly: USB is *****not***** limited to 6KRO by any inherent flaw. But many old PC BIOSes are, and things get extra sticky when Windows is involved. So Soarer, Hasu and Xwhatsit send multiple "reports" of the keyboard state, including NKRO, 6KRO and a separate one for media keys (Windows again…). I believe that a single NKRO report would work perfectly at all times on the Mac and potentially Linux, with a modern EFI. But all I know is hearsay from reading these guys who've actually implemented controllers.

User avatar
Hypersphere

24 Nov 2014, 14:47

My XT keyboard has a Teensy and Soarer's Converter. I am connecting via USB to a USB hub and from there to my Mac computer. According to the System Report, my Mac "sees" the XT keyboard and it certainly works. However, according to the MS web site test, I am getting 6KRO rather than NKRO.

Using the same setup, the Kul and WASD keyboards are getting only 5KRO.

To conduct the test, should I connect the keyboard directly to the computer rather than using a hub? Would I expect to get different results under Windows or Linux?

User avatar
Muirium
µ

24 Nov 2014, 14:49

Hypersphere wrote: To conduct the test, should I connect the keyboard directly to the computer rather than using a hub?

Probably not. But some hubs are real bad news, so perhaps.
Hypersphere wrote: Would I expect to get different results under Windows or Linux?
Unfortunately, yes! Expect Windows to come out bottom of the heap. A lot of the complexity in controllers is there just to work around that one OS's legendary foibles.

User avatar
Khers

24 Nov 2014, 14:52

IIRC there are issues with some NKRO keyboards on the Mac, e.g the Noppoo Choc Mini has been reported as not working on a Mac, something that has been reported as being due to the NKRO-implementation or something like that. Don't know if that is specific to that keyboard or true for others as well.

User avatar
Muirium
µ

24 Nov 2014, 14:55

Yup. Noppoo chose to do a hack where the keyboard is "split" into several separate USB keyboards, which appear in parallel to the OS, so that all the 6KROs add up. This only works on Windows, which merges all connected keyboards together into one logical keyboard; while every other OS treats them as separate, independent, input devices. So on Mac and Linux, that trick results in mods firing on "different" keyboards than the alphas they're modifying, so even basic capitalisation gets broke!

One NKRO hack gives all NKRO a bad name, unfortunately. Thanks again Windows! This simple stuff really shouldn't be hard, but to work with Microsoft, it has to be…

User avatar
chzel

24 Nov 2014, 15:10

According to http://www.usb.org/developers/hidpage/HID1_11.pdf, Appendix C, states that
The limit is six non-modifier keys when using the keyboard descriptor
in Appendix B. Additionally, a keyboard may report the phantom condition
when an invalid or unrecognizable combination of keys is pressed.
and as far as I understand App. B is the standard descriptor required for Boot compatibility of the keyboard.
So if the board uses another descriptor to overcome this, OS permitting ofc, it might not work on boot.
Hence my reference to "trickery".

Mind you, I am not a programmer, so I might be wildly mistaken!

User avatar
Hypersphere

24 Nov 2014, 16:47

This is all quite interesting.

I just unboxed my Novatouch to give it a try on the MS site. I consistently get 6KRO. Same with my XT (with Soarer's) and RF 87ub 55.

However, with my two Cherry mx boards (WASD V2 87 and Kul ES-87), I get 5KRO.

Not that I mind. I am not a gamer, and I can't think of situations where I would need more than 2KRO, but now I am curious about the apparent discrepancies I am seeing with the MS test site and some keyboards.

(BTW, off-topic, while doing these tests, I noticed that the stabilizers on my WASD V2 87 are completely quiet, whereas I can hear a bit of stabilizer rattle in my Novatouch).

User avatar
ماء

24 Nov 2014, 16:52

i've read to test NKRO press both shift+press letter :P

User avatar
Hypersphere

24 Nov 2014, 16:58

ماء wrote: i've read to test NKRO press both shift+press letter :P
I've tried this, and I still get a maximum of only 6 non-modifier keys registering.

User avatar
Muirium
µ

24 Nov 2014, 17:43

Well, my lying eyes must deceive me because I see NKRO all the way with Soarer's Converter and a naturally NKRO board like my XT. Try OS X's Keyboard Viewer to confirm this yourself. You can mash as many keys as you like.

The NovaTouch seems 6KRO. While my IBM 122 key Model M really is 2KRO and gets in my way when I've tried to work on it. I really do need three simultaneous mods quite routinely. It will often fail at two!

User avatar
Hypersphere

24 Nov 2014, 18:58

Muirium wrote: Well, my lying eyes must deceive me because I see NKRO all the way with Soarer's Converter and a naturally NKRO board like my XT. Try OS X's Keyboard Viewer to confirm this yourself. You can mash as many keys as you like.

The NovaTouch seems 6KRO. While my IBM 122 key Model M really is 2KRO and gets in my way when I've tried to work on it. I really do need three simultaneous mods quite routinely. It will often fail at two!
Are you basing your findings on the MS web site test or on observing the number of keys that register on the Mac keyboard viewer?

User avatar
Muirium
µ

25 Nov 2014, 00:23

Same NKRO goodness in both, you'll be pleased to know! XT + Soarer + Yosemite. Boom.

User avatar
Hypersphere

25 Nov 2014, 00:55

I wonder what is going on with my setup? My XT with Teensy and Soarer's Converter is giving me 6KRO. This is more than enough for me, but if it should be NKRO, it disturbs me not to understand why this is not so in my case.

User avatar
Muirium
µ

25 Nov 2014, 01:25

No problem in Chrome either. (I usually use Safari.) For what it's worth, I hook my Soarer's straight into a USB port. There's some chance that's your weak link.

What rollover do you get from the XT with your Hagstrom?

User avatar
Khers

25 Nov 2014, 14:13

I've tested my HHKB with both the MS web test and keyboard viewer on my mac and with the MS web test on a win PC. I get 6KRO on all. Don't quite get why you would need more than that though, I'm completely happy with the ~2KRO I get on my model M's. Also, it's difficult enough to press 6 keys simultaneously. Then again, I'm not a gamer...

User avatar
Laser
emacs -nw

25 Nov 2014, 15:24

Maybe you need a full-speed USB port or something for NKRO, and it's either not it, or disabled in BIOS?

User avatar
Muirium
µ

25 Nov 2014, 15:29

Nope! Even USB 1.1 is enough for NKRO. My old PowerBook gets NKRO with Soarer and a Model F.

The HHKB is 6KRO, from what I've heard, so that's accurate. I think Realforces are all 6KRO on USB as well. Haven't heard about the PS/2 ones.

6KRO is fine for me in all normal circumstances (besides bragging). The one time I go beyond that is when playing a virtual piano keyboard (in GarageBand and other music apps) but I should really just get a real MIDI keyboard, I know!

2KRO, however, is a nightmare. I use Shift + Option + Arrows very frequently indeed when working with text. (Try the same yourself, it's Alt instead of Option I think on Windows and Linux.) Consumer Model Ms, including my SSK, are good with multiple mods so rollover isn't generally an issue there. But my 122 key Model M is horrendous! Rollover is so much worse when the matrix isn't optimised well to hide it.

I dare say even most gamers would never notice 6KRO. But even on a good Model M, WASD ghost badly with other keys. IBM never knew those would be hijacked for navigation!

User avatar
Hypersphere

25 Nov 2014, 15:44

I thought that mods didn't count in the rollover number. Is this a misconception?

Findecanor

25 Nov 2014, 16:12

chzel wrote: USB natively supports max. 6KRO, keyboards with NKRO over USB use trickery to achieve it!
That's a myth. I wrote a long explanation of the actual situation in the Wiki.

User avatar
Halvar

25 Nov 2014, 16:15

Hypersphere wrote: I thought that mods didn't count in the rollover number. Is this a misconception?
On most keyboards that don't have NKRO, modifiers sit on sparsely populated rows or columns in the matrix, which means that you generally get a higher number of discernible keys for combinations that include modifiers than between simple alphanumeric keys. So the rollover number n is not actually constant for a keyboard, and for most modifiers you will get a higher n than for combinations of other keys. So in that sense you are right, the rollover number is normally meant for combinations between arbitrary keys, not combinations with modifiers.

Findecanor

25 Nov 2014, 16:29

Hypersphere wrote: I thought that mods didn't count in the rollover number.
That is true for USB's 6KRO protocol (the "Boot Protocol"), but only because it has eight special bits for the left and right modifiers: Shift, Control, Alt and GUI (GUI = Windows, Command, Meta or Super depending on your OS and configuration).
Then there are six bytes that each can contain a codes for the other keys - and that is where the number in 6KRO comes from.
Some other protocol might be done differently.

The rollover number counts the smallest number of arbitrarily chosen keys that you can register at the same time.
When a keyboard has xKRO then that means that there is some combination of x+1 keys that does not work.

User avatar
chzel

25 Nov 2014, 16:41

Findecanor wrote: That's a myth. I wrote a long explanation of the actual situation in the Wiki.
So, if I understand correctly, for the keyboard to adhere to the standard, it must declare what report format it will use, and if requested switch to "Boot protocol" for use in BIOS.
If one where to implement an NKRO report format, Windows/Linux/MacOS should be able understand it but do not? Is that the reason for workarounds (what I called trickery)?

User avatar
Muirium
µ

25 Nov 2014, 16:49

The trickery is just done by nincompoops without technical chops as refined as Hasu, Soarer and Xwhatsit. Noppoo's notorious "split up into a whole bunch of keyboards" hack is worse than dirty, it is entirely needless.

Findecanor

25 Nov 2014, 17:02

Muirium wrote: Yup. Noppoo chose to do a hack where the keyboard is "split" into several separate USB keyboards, which appear in parallel to the OS, so that all the 6KROs add up.
I don't think that Noppoo's protocol is that simple. They must have done something more unusual. I would love to see its "Report Descriptor"...

I am typing this reply using four keyboards connected all at once to my Linux box. My HHKB Lite has a hub with a Cherry G80-3000 and a Topre Realforce. Then my Dolch (Cherry G80-1800) is connected through a USB-to-PS/2 converter that also accepts a mouse.
This works fine: even key combinations of Shift, Ctrl or Alt. However ... the Dolch does not work through the converter when connected via the HHKB's hub - it must be connected via its own USB port.
From what I have heard HHKB, Realforce and G80-3000 all use the 6KRO protocol, and I suspect that the protocol converter provides a combined keyboard/mouse protocol.
A couple of years ago, I did test two Apple keyboards (a modified 6KRO protocol) on a single Mac and that worked fine. I don't own a Mac any more.
Last edited by Findecanor on 25 Nov 2014, 17:25, edited 1 time in total.

Post Reply

Return to “Keyboards”