TOKN KB16 Keyboard Encoder
Review by Kevin Steele
NOTE: This is a significantly revised review, based on findings by Marshall Brooks (Tiger-Heli) on the BYOAC forums, and my own second look at this encoder (thanks to a generous donation of another TOKN16 by Darren Staley, aka Monkeybomb). I'd like to say the problems with this encoder were hard to find, but that isn't the case and I have no idea how I missed them. My apologies for not getting it right the first time!
UPDATE (7/1/05): TOKN Media is now shipping diodes with the TOKN16 encoder, which can be used to minimize or eliminate the ghosting problems mentioned in this review. They have also updated their documents to reflect new wiring setups that help minimize the ghosting conflicts. It doesn't change the conclusions of this review, however: there are better encoders out there, with more inputs and no ghosting problems, that actually cost less than the TOKN16.
It's been an exciting couple of years for MAME cabinet builders, with new products showing up every month, including products such as the TOKN KB16 keyboard encoder. The new kid on the MAME keyboard encoder scene, KB16 is a compact, inexpensive programmable encoder with some nice features, but how does it measure up? Let's take a look.
TOKN KB16 Features
The KB16, as the name implies, is a 16-input encoder: the headers are labeled for a joystick, 8 player buttons, player 1 & 2 start buttons, a coin button, and escape, although you can change these as needed for your panel.
Obviously this will not be enough inputs for a "frankenpanel" two-player layout, but it should adequate for a single player panel or a simple two-player layout. If you do need additional inputs, KB16 encoders can be "daisy-chained." Also, a 32-input version of the KB16 (the KB32) is also available:
The KB16 encoder features "on-the-fly" programmability, a diagnostic LED, and a keyboard passthrough (the keyboard is used to program the encoder). Note that it is a PS/2-based encoder, not USB. It does not support "shift" key functions, nor does it include software for reprogramming the keys.
At 2.25" x 1.25", it is a very compact encoder, in part because it does not include screw terminals for hooking up the button wiring. The KB16 uses a floppy-style 2x16 pin header for wiring: basically, you plug in a floppy drive cable and use it as your wiring.
The diagnostic LED is not just a power indicator — it blinks whenever a key is being pressed, and is also used to indicate when key reprogramming is complete.
Speaking of programming, the "on-the-fly" programmability is very handy. While the KB16 comes pre-configured to standard MAME key presses, you can change the key assignments at any time using an attached keyboard. Saving or exchanging complete sets of key assignments is not supported.
To program a key, you press the Scroll Lock button on the attached keyboard, press and hold the button you want to assign, then press the key on the keyboard you wish to assign to that button. Once the button is programmed, the LED will blink. Your settings are preserved even if power is removed.
The KB16's feature list does not include anything particularly unique: all of the encoder features can be found, here and there, amongst the other encoders on the market. Still, it has a nice selection of some of the most useful encoder features out there.
Hooking It Up
As I mentioned, the KB16 is designed to use a PC floppy drive cable for wiring. This connection method has both good and bad points.
The good points are easy plug-and-go connection to the encoder, plus a fairly clean wiring layout since you can keep sections of the ribbon cable together as you route the wires to the buttons.
The bad points? Well, you're limited to the length of a floppy cable for starters (unless you want to solder on extension wires), and floppy cable wires are very thin, making for a somewhat weak connection to .187 quick-disconnects, in my opinion.
One design feature that can be either a good or bad point (depending on your own preference) is the fact that the KB16 provides a ground wire for every button, rather than a shared ground method. Basically, every other wire on the cable is used as a ground. The encoder design uses a 2x8 matrix, with two sets of grounds. This can cause some really nasty problems, which I'll cover in the testing section.
Wiring buttons consists basically of splitting the cable into pairs of wires and routing each pair to a button, and crimping on some quick-disconnect tabs to the wires.
Testing and Conclusions
Testing revealed some really nasty surprises: basically, I was unable to get more than two simultaneous keypresses without getting ghost keypresses. For example, in I pressed buttons 1, 2, and 3 simultaneously, and should have gotten LCtrl, LAlt, and Space keypresses. What I got was those three keys plus a phantom LShift key as well. Buttons 4, 5, and 6 should have yielded LShift, Z, and X: what I got was LShift, Z, X, and Space.
The encoder works fine, as long as you don't press more than two buttons at the same time, including joystick movements (I tried joystick up with buttons 1 and 2 and got a phantom "down" keypress at the same time). To say that this encoder is messed up is something of an understatement, it seems.
A revised "readme" file on the TOKN Media web site mentions that the Ctrl key should not be mapped to any of the inputs. I re-mapped the Player 1 Button 1 from LCtrl to the "9" key, but it did not affect the results: the vast majority of 3-key combos produced ghosting, with or without the Ctrl key.
How does the TOKN16 stack up against the competition's "economy encoders"? Here's a chart of some of the basic features:
In the end, I have to say I'm very disappointed with the performance of the TOKN16. It includes a couple of features that I really appreciate: a live keyboard passthrough, nonvolatile memory, and on-the-fly reprogramming. That's the good part.
It doesn't include some of the nifty features available on other encoders, such as shift key functions, software reprogramming, or multiple key sets. In addition, the limit of 16 inputs may be a hindrance depending on your panel design.
What really kills this encoder, however, is the performance. While I could possibly tolerate ghosting with multiple keys, I really could only consider it acceptable if you were pressing more keys at once than would normally be encountered during gameplay (let's say, for academic purposes, 7 inputs per player: two joystick directions and five buttons, which is as many fingers as most humans have).
Unfortunately, aside from playing PacMan, this encoder is going to show ghosting, and that, in the end, means that this encoder is useless for MAME. There are far better encoders out there that cost less, have more features, and work as advertised.