- Braille Input
N-Key Rollover Explained
What is it?
N-key rollover, often referred to as NKRO for short, is a term that is known and appreciated by many gaming enthusiasts but may not be as widely known as another term, anti-ghosting. Anti-ghosting is a term frequently used by Microsoft, Logitech, and other popular keyboard manufacturers when marketing their products. It is important to know the difference between the two terms:
- N-Key Rollover - The press of each key on a keyboard can be detected individually, which means that each key you press will be seen by your operating system no matter how many keys you are holding down simultaneously (hence the variable 'n' in n-key to refer to as many keys as are possible to press on a keyboard).
- Anti-Ghosting - This can refer to the ability of a keyboard to recognize 3 or more key presses at once. The main thing to point out is that anti-ghosting usually implies that there is a limit on which combinations of keys and how many of them can be pressed simultaneously, while n-key rollover keyboards have no such limit (except when using USB, see 'PS/2 vs USB Technical Limitations' below). The number of simultaneously recognized key presses varies between each model of keyboard that does not have full n-key rollover. In some ways, you can think of anti-ghosting as an attempt by manufacturers to improve functionality of cheaply made rubber dome keyboards, without having to implement proper n-key rollover functionality.
Note: Although this is how the term anti-ghosting is usually used, ghosting on a keyboard actually refers to something else. "Ghosting is when you press two keys on the keyboard, and a 3rd key - which you didn't press - gets sent to the PC as well. This is very rarely seen on even the cheapest modern boards, because manufacturers have the habit of limiting the rollover so that ghost keys are always blocked." -Overclock.net Forums
If you'd like to explore this topic in greater depth, I highly recommend starting with the following:
- Technological Background Information - Even though this is on a braille-oriented site, skip to the section titled 'Technological Background Information' for an excellent discussion on n-key rollover (which most keyboards had in the early days of computing before keyboards became cheap commodity items).
- Wikipedia - Explanation of keyboard rollover.
- Microsoft Applied Sciences - Explanation of keyboard ghosting.
Why Should I Care About It?
It is probably about time to give an example to bring things into context. The Microsoft Sidewinder X6 keyboard is a fairly recent gaming keyboard that is frequently criticized for its anti-ghosting capabilities or lack thereof. With this particular keyboard, the common complaint is that gamers can't press certain 3-key combinations like:
- Ctrl + W + R (Crouch + Forward + Reload)
My intent is not to single out the Microsoft keyboard, but to demonstrate that you may run into issues like this if you don't have a keyboard that has full n-key rollover support.
PS/2 vs USB Technical Limitations
Keep the following in mind if you have an n-key rollover keyboard that can be hooked up to your computer through either USB or a PS/2 port:
- USB protocol limitation - A max of 10 simultaneous key presses are recognized, 6 non-modifier keys ('w', 'a', 's', 'd', etc) + 4 modifier keys (Shift, Caps, Ctrl, etc). Although you are limited to 6 regular keys you are still guaranteed that any combination of keys will be recognized properly if you have an n-key rollover keyboard. I would guess that most people would not need support for more keys than this. I would also guess that the 6 key limit may have had something to do with braille input requirements rather than someone choosing an arbitrary limit (although that doesn't explain why the limit exists in the first place).
- PS/2 - There are no limitations when using a PS/2 connection with your keyboard. You will truly get full n-key rollover support.
When given the choice between using PS/2 or USB, it is generally recommended to choose PS/2 since it doesn't have the rollover limitations. However, if you enjoy hotplug support which PS/2 doesn't have, USB may very well be the better choice for you.
Testing Your Keyboard's Rollover Behavior
There are several ways you can test rollover behavior on your keyboard. Among those I list below are:
- Manual Typing Test
- Web-based Tests/Demonstrations
- Desktop Software (both Linux and Windows examples)
Test: Manual Typing
Often you'll see people mention the double shift-key typing test. It is a basic test for demonstrating the problems that arise when keyboards don't support n-key rollover. The test involves holding down both the left and right shift keys and typing the following sentence while still holding down both shift keys:
the quick brown fox jumps over the lazy dog
Use the following text input field to test it out yourself:
With most keyboards, you will see something like the following which was typed on a wireless Logitech keyboard (this will vary for each keyboard since each keyboard is optimized for different key combinations):
TE UIC RWN JUS VER TE LAY DG
You can see that a lot of characters were dropped during the test. This is what you should see:
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
Most consumer keyboards will not pass this test, so don't feel too bad that you have a crappy keyboard...because most keyboards are crappy like this. :-P
Microsoft Ghosting Demonstration
You can use the demonstration directly below or by going to the Microsoft Applied Science ghosting demo page here. Click within the demo and start pressing key combinations...
Tests: Desktop Software
Here are several desktop applications you can use to test n-key rollover functionality. The first one is Linux-based while the remaining ones are Windows-based.
Gnome Keyboard Properties (Linux-based)
Gnome is one of the desktop window managers for Linux and it has a great tool for testing n-key rollover even though that isn't its primary purpose. You can open the Gnome keyboard properties with one of the following methods:
- Run 'gnome-keyboard-properties' from a terminal
- Go to the System toolbar menu on the desktop > then select Preferences > then select Keyboard
Once the keyboard properties window is open, go to the Layouts tab and click on the Add... button to open up the on-screen keyboard. Be sure to select the correct Country and Variant, then click within the keyboard area to start using it.
If you regularly use Windows, you can still use the utility without having to install Linux. Just download an Ubuntu CD image (.iso file) from Ubuntu and either burn it to CD and run the Ubuntu desktop from the CD or install and run it from a USB stick...all without having to install Ubuntu on your hard drive. Further instructions for downloading and running it are on the Ubuntu website.
Aqua Key Test (Windows-based)
Aqua Key Test is a GUI application that shows an on-screen keyboard indicating the key presses that are being recognized. This is a small standalone executable that comes from Korea.
"Unlike ALL other keytest applications that I have tested (including commercial ones like PassMark KeyboardTest) this one is not tricked by fake strokes and checks only the real signals sent from your keyboard. What does this mean? This means that scripts and macro programs like AutoHotKey or AutoIt which generate keystrokes using the Windows API do not get picked up." -Geekhack.org Forums
You can download it here.
Passmark KeyboardTest (Windows-based)
This is another GUI application that shows an on-screen keyboard indicating current key presses. However, this one is trial-limited to 30 days after which you need to pay for the software. You can go to the Passmark website to download it.