Originally Posted by PaulHDietz
While this technique theoretically allows the system to see any number of simultaneous key presses, internal processing and the USB interface set some practical limits. We play some tricks with the USB protocol to send extra data in fairly elegant way.
Interesting. So you're not doing anything to change the USB keyboard protocol or anything, so the board will still function in BIOS or without a driver. I'm assuming that there's some neat work going on behind the scenes with the controller and driver. I'll hazard a guess that the anti-ghosting does not
work without a driver, ie. in BIOS or before a driver is installed/loaded. You don't need those capabilities then anyway.
I understand if some of this info is confidential, but I'm curious:
Does the keyboard send additional information per packet, or does it send additional packets following the first one to account for the additional keypresses? Any more information would be fascinating, but again I respect that some of this may be stuff you don't want leaking to competitors.
Also, the pressure touch system... I think I see what you did. The pressure touch system allowed voltage to vary continuously, rather than the standard on/off system. That way pressing harder caused a higher voltage (or capacitance.... not an EE
) to reach the controller, which detects it and outputs the correct information on how hard the key is pressed, which can be picked up by a program, yadda yadda. In the case of the X4 I'm guessing you put that varying voltage concept to a different use: determining which keys were actually pressed, and which are an artifact of the circuit layout. The keyboard's controller can thus figure out which keys the user meant to send, and which were a result of ghosting (the original definition). Probably ghosted keys have a higher/lower voltage... Say each keypress gives X voltage, so three keys would give 3X while two keys and a ghost would give 2X. The controller can see the difference there and figure out what the user actually intended to send. There's probably more to it, and there's obviously the usual amount of engineering detail work, but I'm guessing that's the general concept.
But it isn't perfect, right? There's uncertainty involved. As the number of keys pressed increases the voltage variability probably increases as well. Say that twenty six keys are pressed... Multiple circuits, so let's say one line has 10X volts. Maybe the sensor or the controller can't tell which keypresses are real and which are ghosts. The margin of error increases. And past a certain point you have to start blocking keys again. Which is why you still can't claim NKRO.
Is that about right?Edited by Phaedrus2129 - 2/27/10 at 12:46pm