NKRO and 6-Key Rollover on USB Test
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Try holding Shift on one keyboard and nkro on another, to spell out "NKRO". I gather Mac and Linux behave as they should, but Windows apparently mushes all connected keyboards together into one logical keyboard, which enables said hatchet job of a dumb man's NKRO…
- vvp
- Main keyboard: Katy/K84CS
- Main mouse: symetric 5-buttons + wheel
- Favorite switch: Cherry MX
- DT Pro Member: -
This produces "NKRO" on linux too. So using two low speed (1.5 Mb/s) endpoints (to achieve NKRO) would work for both linux and windows.Muirium wrote: ↑Try holding Shift on one keyboard and nkro on another, to spell out "NKRO".
As soon as the keyboard uses full speed (12 Mb/s), then there is no need for hacks to have an NKRO keyboard. And as you pointed out, full speed is available on USB 1.1 too.
- Hypersphere
- Location: USA
- Main keyboard: Silenced & Lubed HHKB (Black)
- Main mouse: Logitech G403
- Favorite switch: Topre 45/55g Silenced; Various Alps; IBM Model F
- DT Pro Member: 0038
My non-converted XT is in storage until I can find the time to do another restoration, complete with Teensy and Soarer's Converter; therefore, I haven't tested rollover yet with a Hagstrom converter.Muirium wrote: ↑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?
However, I just now plugged my converted XT directly into my Mac and, voilà! I get NKRO! It works with both, the Mac keyboard viewer or the MS ghosting demo site.
Let this be added to the list of caveats regarding the use of USB Hubs. However, with my setup, I will probably keep hubs in the circuit as a matter of convenience. I need the convenience of my USB hubs far more than I need NKRO. The 6KRO I get with most of my keyboards and even the 5KRO I get with my Cherry mx keyboard is more than enough for my daily needs.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Hubs are such a mystery! Anyway, you've got what you wanted: confirmation of native NKRO, even if it is inconveniently absorbed by the hub. Ack!
But those mods? All 3 keyboards are treated separately, as I heard. So if I hold Shift on one, and type on either of the others, lowercase characters result. Same for cursor control with all mods. In fact, it even applies to the Caps Lock keys. All 3 keyboards have integrated LEDs to indicate Caps Lock, and only the Caps state of the keyboard a character is typed on has any effect. I have two caps locks engaged right now, and see what I mean? Three logically independent keyboards. The LEDs speak the truth.
I just hooked up both my NovaTouches (ISO prototype and ANSI final version) to my MacBook Pro to verify this. That's 3 keyboards in all (the Mac's own is internally connected by USB I've heard). The NovaTouches are 6KRO, as is the Mac's. Amusingly, I get 12KRO by typing on two boards simultaneously, just like Noppoo's great realisation! And I suspect I'd get 18KRO if I had 3 hands.
But those mods? All 3 keyboards are treated separately, as I heard. So if I hold Shift on one, and type on either of the others, lowercase characters result. Same for cursor control with all mods. In fact, it even applies to the Caps Lock keys. All 3 keyboards have integrated LEDs to indicate Caps Lock, and only the Caps state of the keyboard a character is typed on has any effect. I have two caps locks engaged right now, and see what I mean? Three logically independent keyboards. The LEDs speak the truth.
- Hypersphere
- Location: USA
- Main keyboard: Silenced & Lubed HHKB (Black)
- Main mouse: Logitech G403
- Favorite switch: Topre 45/55g Silenced; Various Alps; IBM Model F
- DT Pro Member: 0038
Fascinating. At the moment, I have two RF 87u connected to my Mac Pro via USB hubs. I am using Karabiner remapping software. If I activate Caps Lock (via Fn + Tab), the Caps Lock LED lights up on both keyboards (I've remapped Caps Lock as Control; the Caps Lock LED lights up under the lower right Control, which has an LED window). And just as indicated by the Caps Lock LED on both keyboards, when I type on either one, I get CAPS.Muirium wrote: ↑Hubs are such a mystery! Anyway, you've got what you wanted: confirmation of native NKRO, even if it is inconveniently absorbed by the hub. Ack!
I just hooked up both my NovaTouches (ISO prototype and ANSI final version) to my MacBook Pro to verify this. That's 3 keyboards in all (the Mac's own is internally connected by USB I've heard). The NovaTouches are 6KRO, as is the Mac's. Amusingly, I get 12KRO by typing on two boards simultaneously, just like Noppoo's great realisation! And I suspect I'd get 18KRO if I had 3 hands.
But those mods? All 3 keyboards are treated separately, as I heard. So if I hold Shift on one, and type on either of the others, lowercase characters result. Same for cursor control with all mods. In fact, it even applies to the Caps Lock keys. All 3 keyboards have integrated LEDs to indicate Caps Lock, and only the Caps state of the keyboard a character is typed on has any effect. I have two caps locks engaged right now, and see what I mean? Three logically independent keyboards. The LEDs speak the truth.
However, if I activate the embedded numeric keypad on one keyboard (Fn + Esc), the Num Lock LED lights up only on the keyboard on which I activated Num Lock. And, just as indicated by the LED, I get numeric characters only on the keyboard on which the Num Lock LED is on.
If I use a Shift key on either keyboard, I get CAPS on both keyboards.
And if I mash keys on both keyboards, I get 6KRO on each and 12KRO total.
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
On my Linux box, the Caps Lock state is global but only the keyboard where the key was pressed gets its light updated to indicate the state change.Muirium wrote: ↑I just hooked up both my NovaTouches (ISO prototype and ANSI final version) to my MacBook Pro to verify this.
[...]
All 3 keyboards are treated separately, as I heard.
[...]In fact, it even applies to the Caps Lock keys. All 3 keyboards have integrated LEDs to indicate Caps Lock, and only the Caps state of the keyboard a character is typed on has any effect.
This is in X, BTW..
- vvp
- Main keyboard: Katy/K84CS
- Main mouse: symetric 5-buttons + wheel
- Favorite switch: Cherry MX
- DT Pro Member: -
That is interesting. On my linux, the two separate keybords look just like one keyboard. CapsLock, NumLock, and Shifts work like it would be one keyboard. Using them on one keyboard lits the leds on both keyboards and modifiers from one keyboard have influence on both of them.
The only exception is NumLock. It does not lit the led on both keyboards but it influences both of them (i.e. changes the behaviour of the key presses on both keyboards (despite liting led on only one of them)).
This is: Linux 3.17.3-1-ARCH and Xorg 1.16.2-1.
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
You would have to run the 6-KRO protocol on an endpoint to retain compatibility with bad hosts, and it needs to be alone on the endpoint because the report format does not include its report ID.
If you then want NKRO, support for media or power/shutdown keys, scrollwheel or a pointing device etc., then you would need to put those reports on other endpoints.
If you then want NKRO, support for media or power/shutdown keys, scrollwheel or a pointing device etc., then you would need to put those reports on other endpoints.
- vvp
- Main keyboard: Katy/K84CS
- Main mouse: symetric 5-buttons + wheel
- Favorite switch: Cherry MX
- DT Pro Member: -
Ok, I do not have much experience with this. 6KRO in LUFA is perfectly enough for me.
But I thought that changes between boot protocol and report protocol happen within one endpoint using set protocol request. I do not understand why a separate report ID would be needed in the report format. The current active protocol can be queried with get protocol request. Is that right?
As for as mouse functionality then (of course) it needs a different endpoint. But as far as I understand it, boot 6KRO and full featured NKRO keyboard do not need a separate endpoint.
But I thought that changes between boot protocol and report protocol happen within one endpoint using set protocol request. I do not understand why a separate report ID would be needed in the report format. The current active protocol can be queried with get protocol request. Is that right?
As for as mouse functionality then (of course) it needs a different endpoint. But as far as I understand it, boot 6KRO and full featured NKRO keyboard do not need a separate endpoint.
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
That is what should be sent by all BIOS:es but doesn't.vvp wrote: ↑But I thought that changes between boot protocol and report protocol happen within one endpoint using set protocol request.
- vvp
- Main keyboard: Katy/K84CS
- Main mouse: symetric 5-buttons + wheel
- Favorite switch: Cherry MX
- DT Pro Member: -
Ok, so it is solved by keyboards with two endpoints of keyboard type. A user then selects with a special keystroke combination which endpoint is silent and which is actually sending keystroke data.
Or more stupid keyboards have only one keyboard endpoint and a hardware switch which selects what kind the endpoint is. Not as flexible but probably good enough.
And "bad hosts" are computers which do not send set protocol request to switch keyboard to bios (6KRO) protocol when entering bios.
Thanks.
Or more stupid keyboards have only one keyboard endpoint and a hardware switch which selects what kind the endpoint is. Not as flexible but probably good enough.
And "bad hosts" are computers which do not send set protocol request to switch keyboard to bios (6KRO) protocol when entering bios.
Thanks.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Actually, Xwhatsit does it without user intervention. He's described his various techniques as they developed, here on the forum, likely in his Grand Unified Capsense thread. Not a read for the faint hearted! From what I remember, he sends three of them in parallel. One full NKRO, one 6KRO, and another one just with media keys for Windows alone. Some cunning is involved in the process of how they're presented to the host, which I didn't understand well enough to recall. But the end result is exactly what we want: seamless NKRO on all platforms, with a working keyboard in dodgy BIOS too; no user action required.
PM him, I'm sure he'll amuse you with a tale of his lessons at the school of USB HID hard knocks!
PM him, I'm sure he'll amuse you with a tale of his lessons at the school of USB HID hard knocks!
- dorkvader
- Main keyboard: Unicomp
- Main mouse: CST 1550
- Favorite switch: Buckling Spring over Capacitave. (Model F)
- DT Pro Member: -
The soarer can be configured to be set to either "normal" 6KRO (+4 mods) or NKRO mode. Check your config file and change it if you want NKRO.
- Hypersphere
- Location: USA
- Main keyboard: Silenced & Lubed HHKB (Black)
- Main mouse: Logitech G403
- Favorite switch: Topre 45/55g Silenced; Various Alps; IBM Model F
- DT Pro Member: 0038
I didn't see an entry in my config file pertaining to NKRO. However, when I connected my XT directly to my computer instead of connecting through a USB hub, I got NKRO instead of 6KRO.dorkvader wrote: ↑The soarer can be configured to be set to either "normal" 6KRO (+4 mods) or NKRO mode. Check your config file and change it if you want NKRO.
6KRO is more than enough for me. I was pursuing NKRO just out of curiosity.