Ghosting occurs when an unintended signal/character is sent due to the maximum number of simultaneous key presses being reached.
Some keyboard keys don't work when multiple keys are pressed simultaneously. The key presses that don't show up on the computer or seem to have disappeared are said to have been "ghosted". On most keyboards, even some that are explicitly marketed as "Anti-Ghosting," this happens with many three key combinations. Imagine playing your favorite video game and not being able to, say, run diagonally and fire your weapon at the same time (say pressing a, w, and g simultaneously).
Typically, ghosting is the result of one or more of following three limitations: the hardware can't read the given key combination, the software on the computer doesn't support multiple simultaneous keys, or the communication protocol between the hardware and software limits the maximum number of simultaneous keys reported.
Anti-ghosting ensures that your key presses are sent without error and in the order pressed.
This is typically caused by 3 things:
1) Hardware Incompatibility
2) Software that does not support multiple keystrokes
3) Communication protocol that limits the number of keystrokes that can be transmitted simultaneously (USB) versus PS/2).
Why keyboards cannot read certain combinations
The contacts of a keyboard are not usually evaluated individually, but rather in their switching configuration, a kind of matrix of columns and rows (see illustration). This avoids having an individual lead for each button and recognizes keystrokes based on the pattern from the interconnected columns and rows. Let's look at some simple examples of how this method works:
1) One Individual keystroke
Pressing a single button can be seen as the result of a particular combination of column and row, in which the conductor of column X is circuited with the lead of row Y:
If the controller checks the keyboard to see which key is being pressed, input signal recognition on the basis of column and row clearly identifies the key in question. There is only one possible combination for each key, leaving no room for misinterpretation.
2) Simultaneous keystrokes of two (or more) keys in different columns and rows
Based on the different columns and rows, the two combinations remain easily distinguished and the logic is clear: each key has only one input recognition circuit, so no problems arise, so long as the keys in question fall into mutually discrete columns and rows.
3) Simultaneous keystrokes of two keys in the same column or row
The pattern still allows for a single clear identification of each key. Even if only one column with closed contacts is activated, the two rows allow for a clear distinction to be made. When two keys on the same line are struck, it is no longer four leads that are activated, but rather only three, because one lead is shared. This behavior is called co-linear.
4) Simultaneous keystrokes of three keys in the same block
Here we see a crack in the simple logic: the controller now registers two mutually circuited columns and rows. But by looking at the illustration, we see that there are four buttons on the grid that could have been pressed. The resulting pattern is therefore no longer unique. The following key combinations all seem identical to the controller:
For example, if W, S, and D are struck simultaneously, E appears as a ghost because the keyboard cannot distinguish between the four individual buttons.
This is not necessarily a USB problem, but it may also be a logical problem in the wiring of the keyboard. Some keyboards with Anti-Ghosing will only provide this functionality with the WASD block, along with surrounding keys, plus the direction keys. Some Keyboards will have real NKRO across the entire keyboard.