problem is you got to multiplex 104 bits (one for each key) into what typically is around 32 i/o pins (minus the ones that are used for communication with the computer) on whatever mcu your keyboard uses. you do this with a scan matrix, usually 8*13 (which only requires 21 i/o pins) for 104 keys. a column or row was connected to outputs and the opposite was connected to outputs. you power one of the input lines and then read each of the output lines for a 1 or a 0, then you repeat this for all the other input lines. older keyboards had the issue where these matrices were not well distributed (they matrix was directly mapped to the physical layout of the keyboard), so groups of close together keys would share a row or column in the matrix, causing them to interfere with eachother. so they started interleaving the matrix lines so that keys sharing a row or column would be far apart. for descent and fps games i would use the keypad or arrows for movement because wasd would clash with itself. i dont even think i started using wsad until quake 3 came out, because i was so used to using the arrow keys.