<Edit: For those new to the thread, this was my test to see if all 16 inputs could be used simultaneously and they can't
Test results are in. Thanks again to KevSteele for getting the unit to me so quickly.
NOTE: Comparisons to the KeyWiz are only because that is what I am familiar with.
METHODOLOGY: The test itself is unorthodox, but simple. I didn't have extra switches around or want to crimp connectors to an IDE cable, so I plan to use motherboard jumpers to simulate switch closures. I should be able to close all sixteen inputs with no missed or extra keypresses. If so, the unit passes, as far as I'm concerned. So let's see what happens.
RESULTS - This unit sucks. It sucks BAD. It is obvious that it uses a matrix, and also that it does not use diodes to prevent ghosting nor does it incorporate blocking. What it does do is exhibit ghosting. Lots of ghosting.
Before anyone claims I rigged the test b/c I wanted the TOKN to do badly, I actually thought it would do what it claimed. In fact, I'm surprised, both since $1.60 in diodes should cure the problems, and laying out the matrix better would have made them less noticeable (although it would have made the PCB layout less clean). (Also, I wrote everything down as I did it, and you can see the review starts much more favorable than it ends).
As it is, I can't recommend this unit for anything and will be giving the unit a negative rating on my review page. If you picked the inputs carefully, you probably could use half the inputs (an 8 by 1 matrix) with no problems, maybe (maybe not).
Here is how the testing went.
TESTING: I plugged the KB16 in and started the PC. The LED on the board flashed a couple of times during boot, then went out. I re-booted the PC for some non-related reasons and then hot plugged the device in. The PC speaker made a brief annoying beep and the LED again flashed and went out.
The PC cable jacks seem very tight on the board, but that may just be because it is not bolted down like the KeyWiz is. They are plastic instead of the metal the KeyWiz uses, though.
I next fired up KeyScan by Digital Genesis. I like this program because it has a numerical counter for keys depressed.
Next I individually jumpered keys - both to make sure my jumper theory worked, and also to make sure KeyScan was up to the task. The first time through both the Button 3 (Spacebar) and Button 5 (Z) inputs caused a pull-down menu to appear and KeyScan to beep at me. I went back to these keys and couldn't get the problem to repeat.
I did some testing with my regular keyboard and found KeyScan really dislikes having the Alt key held down. I decided to re-program Button 1 to B and Button 2 to N. This would give me a chance to test the programmability of the board and the pass-thru function.
The Pass-thru seems to be working, I am using it to type this.
I was unable to program the unit. I didn't bring the documentation with me, and what I thought I remembered reading about programming it failed. I am not faulting the board until I can verify with the documentation, though. <edit: I just reviewed the documentation. I was not pressing the Scroll Lock key first as I was supposed to. This is probably not a fault with the KB16.>
Back to testing, and here it get's ugly. (BTW, at this point, I unplugged the keyboard from the pass-thru, so I wasn't re-programming the board accidentally <edit: unnecessarily, as it turns out>. I also switched to handwriting notes as Word didn't like have a keyboard with stuck keys plugged in). I decided to save Alt for last since KeyScan doesn't like it. I then jumpered these keys in sequence, leaving the jumpers in place.
I jumpered Button 1
Keyscan keys displayed: Ctrl.
KeyScan Number of Keys Depressed: 1
Actual Number of Keys Depressed: 1
Okay.
I jumpered Button 3
Keyscan keys displayed: Ctrl Space.
KeyScan Number of Keys Depressed: 2
Actual Number of Keys Depressed: 2
Okay.
I jumpered Button 4
Keyscan keys displayed: Ctrl Alt Space Shift.
KeyScan Number of Keys Depressed: 4
Actual Number of Keys Depressed: 3
Uh-oh - I didn't press Alt.
I jumpered Button 5
Keyscan keys displayed: Ctrl Alt Space Shift Z X.
KeyScan Number of Keys Depressed: 6
Actual Number of Keys Depressed: 4
Uh-oh - This is starting to look REAL bad.
I jumpered Button 6
Keyscan keys displayed: Ctrl Alt Space Shift Z X.
KeyScan Number of Keys Depressed: 6
Actual Number of Keys Depressed: 5
Nothing added since the "ghost" X was already displayed.
I jumpered Button 7
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V.
KeyScan Number of Keys Depressed: 8
Actual Number of Keys Depressed: 6
Again, two keys added when only one is depressed.
I jumpered Button 8
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V.
KeyScan Number of Keys Depressed: 8
Actual Number of Keys Depressed: 7
Nothing added since the ghost V was already displayed.
I jumpered 1P Start
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2.
KeyScan Number of Keys Depressed: 10
Actual Number of Keys Depressed: 8
Again, two keys added when only one is depressed.
I jumpered 2P Start
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2.
KeyScan Number of Keys Depressed: 10
Actual Number of Keys Depressed: 9
Nothing added since the ghost 2 was already displayed.
I jumpered Coin 1
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc.
KeyScan Number of Keys Depressed: 12
Actual Number of Keys Depressed: 10
Again, two keys added when only one is depressed. Not a good situation when a coin entry can generate a ghosted Esc depress.
I jumpered Escape
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc.
KeyScan Number of Keys Depressed: 12
Actual Number of Keys Depressed: 11
Nothing added since the ghost Esc was already displayed.
I jumpered Up
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc Up Down.
KeyScan Number of Keys Depressed: 14
Actual Number of Keys Depressed: 12
Again, two keys when only one is depressed.
I jumpered Down
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc Up Down.
KeyScan Number of Keys Depressed: 14
Actual Number of Keys Depressed: 13
Nothing added since the ghost Down was already displayed.
I jumpered Left
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc Up Down Left Right.
KeyScan Number of Keys Depressed: 16
Actual Number of Keys Depressed: 14
Again, two keys when only one is depressed.
I jumpered Right
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc Up Down Left Right.
KeyScan Number of Keys Depressed: 16
Actual Number of Keys Depressed: 15
Nothing added since the ghost Right was already displayed.
I jumpered Alt
Keyscan keys displayed: Ctrl Alt Space Shift Z X C V 1 2 5 Esc Up Down Left Right.
KeyScan Number of Keys Depressed: 16
Actual Number of Keys Depressed: 16
Nothing added since the ghost Alt was already displayed.
At this point, I removed all the jumpers, closed KeyScan, and repeated the test, this time using GhostKey. I only ran down to about Button 6 and stopped because I was getting IDENTICAL results.
At this point, about the only positive thing I can say about the encoder (other than the compact size and the clearly labeled inputs) is "At least I didn't pay for it, and hopefully my experience tonight will keep others from getting RIPPED OFF. (Oh, and I guess it could be okay for a small jukebox controller, as it seems to work fine as long as you don't press more than two simultaneous inputs)."
CLOSING/SPECULATION: I did NOT actually use a multimeter or map out the matrix, but we can infer some things. Looking at the PCB, it appears that every other pin on each row of the IDE header goes to a common trace. This and the predictable behavior above (i.e. I could tell that adding a jumper would add the intended and the NEXT sequential input), I can say that the unit BEHAVES exactly like the matrix was simply laid out by adding the inputs in order: Up is Row 1, Column 1, Down is Row 1, Column 2, Left is Row 2, Column 1, Right is Row 2, Column 2, Button 1 is Row 3, Column 1, etc. This is disappointing, as the theories for adding diodes to prevent ghosting, or even for laying out the matrix to minimize it without using diodes have been around for years, but Mattp apparently chose not to avail himself of them. What it also means is it should be possible (not verified (yet)) to hook up a joystick and the Button 1, Button 3, Button 5, Button 7, 1P Start, and Coin 1 inputs as ACTION keys (after reprogramming) and have no ghosting with these keys. You would still have ghosting with the remaining keys, but this MIGHT be acceptable for a single player SF panel.
DISCLAIMER: Normally, I would say that my results may not be indicative of the results others may expect, YMMV, and that it is possible that some type of hardware conflict, background running software, damage in transit, voltage spike, etc. may have influenced my findings. In this case I am hesitant to do so, b/c everything I see points to the behavior of a matrix mode encoder with no diodes. Add to this the fact that we have reluctant (I wonder why?) statements by Mattp that the unit uses an 8x2 matrix, does not use diodes, <cough> does not produce ghosting <cough>, and . . . well, let's just say this unit waddles, quacks, flies, sleeps, and yes, especially poos like a duck, ermmn, poorly implemented matrix mode encoder. I welcome anyone else with one of these to repeat my test and post results here. I also welcome commentary on any reasons the test may not have been accurate, although I can't think of any.