


Here are a few good examples explaining how does ghosting happen and how to prevent it (using diodes). To get to NKRO, we need to first prevent ghosting which can occur in the keyboard’s matrix. 4 pairs of modifiers (Shift, Control, Alt and Windows/Command).The HID USB boot protocol operates in 6KRO which imposes a limit of six concurrent keys plus modifiers: BIOS, bootloaders and KVM switches), the USB HID standard specifies that keyboards and mice can declare themselves to be “boot-capable” (source). To avoid complexity in simpler USB stacks (e.g. Here are some information regarding the different operating modes of a typical/gaming keyboard. booloader is around 4KB and the ATMega32U4 has rougly 32KB of programmable memory.Max firmware size of ~28KB (will affect how much custom code you can write).Media/System control keys and Fn keys are not recognized.it is possible to get NKRO, but we would have to write our own HID report.6KRO (because it operates in HID USB boot protocol mode).The limitations of the USB converter includes: Geekhack - USB to USB keyboard converter build log(Pro Micro 3.3v with mini host shield)Ī rough idea of how it works is that a USB host controller chip ( MAX3421E) will communicate with an AVR microcontroller ( ATMega32U4) via SPI.īefore we get to building it, there are some minor limitations to the USB converter. geekhack - Review: hasu’s TMK USB to USB Converterĭigging further, I found out that there is a way to DIY the converter with just:.geekhack - USB to USB keyboard converter.Here are some reviews on Hasu’s implementation: Well, turns out there is already such implementation out there (Hasu’s USB to USB converter), but it is too expensive for me. To reprogram a “dumb” keyboard we need to connect it to a converter, where the converter is loaded with QMK Firmware. Unfortunately, most off-the-shelf keyboards do not come with a programmable firmware (like my keyboard). So QMK allows me to program a keyboard by adding custom functionality (keymaps and macros, etc), and that is good news. When you build your custom keymap, you are creating an executable program for your keyboard. QMK Firmware fills the role of that software, detecting button presses and passing that information on to the host computer. This processor runs software that is responsible for detecting button presses and informing the computer when keys are pressed.

Your computer keyboard has a processor inside of it, similar to the one inside your computer. The main motivation to build this converter came from this video by Linus Tech Tips where I found out that I can convert almost any USB keyboard into a fully programmable keyboard using QMK firmware.Īfter spending some time on /r/mechanicalkeyboards and /r/olkb I found out that custom mechanical keyboards are typically programmable via QMK firmware.
