Help with KVM keyboard port issue?

I just started using this KVM:

and have found that my Model 01 doesn’t work when plugged in to the “keyboard” port on the KVM. The LEDs light up, but keystrokes don’t make it to my laptop / desktop. Model 01 works fine when plugged into my USB hub.

My HHKB Lite 2 works just fine so I know it’s not the KVM. When I unplug Model 01, then plug the HHKB into the same port on the KVM, keystrokes work.

I’m a bit at a loss for how to start debugging this. It’s important for me to be able to use the keyboard via the KVM’s “keyboard” port because otherwise I can’t use the “switch to other computer” hotkey that the KVM supports. Any thoughts?

I suspect this has to do with N-key rollover. If you’re using the factory firmware, try pressing Left Fn + Esc + Shift when the keyboard is plugged into the KVM. That will toggle it to the simpler, non-NKRO mode, which the KVM should be able to handle.

If that doesn’t work, you may need to update your firmware to the latest one. Not sure which version of the firmware keyboards ship with, they might be older than this feature.

1 Like

Thanks for the reply!

I’m running the latest version of the factory firmware installed via the Arduino IDE.

I tried that key combo but wasn’t able to get the keyboard working with the KVM. Should I see any kind of visual indicator on the keyboard after the mode switch? To make sure I was doing it correctly, I tried pressing Left Fn + Prog + LED to switch the keyboard into hardware test mode, and that seems to work (all keys light up white).

There is no indicator (perhaps there should be…). The OS should detect the keyboard disconnecting and reconnecting.

I am having the same issue with

Did you arrive to any conclusion?

I did a little bit of further experimentation:

I hacked the library to set the keyboard in non-NKRO mode by default and uploaded that. It still didn’t work. As before, the led button would work and I could switch color leds, but nothing else.

I then tried to remove some of the unnecesary plugins and heavy loading on setup, but also had no luck.

I am not sure how to debug that. If you have good instructions on how to get an idea on what’s going, I can dig a bit deeper.


How exactly did you try to hack the library?

During my tests, the following two lines at the top of setup() in my own sketch made the keyboard come up as 6KRO by default:

BootKeyboard.default_protocol = HID_BOOT_PROTOCOL;

Mind you, I do not have a KVM switch to test if this works, the best I can do at the moment is to test if this puts the keyboard into boot mode by default, which, for me, it does.

This will still present two HID descriptors, one for a 6KRO and one for an NKRO keyboard, but will default to the former. The KVM switch might be confused by this, so in this case, the best course of action would be to completely remove the NKRO parts. That is currently not easily possible, but you can hack up Kaleidoscope-HIDAdaptor-KeyboardioHID and remove or comment out all references to Keyboard.

1 Like