Jonathan Guberman from the Site 3 coLaboratory in Toronto made the "Automatypewriter," an Arduino-controlled typewriter that acts as both input and output device. He's rigged it to play Zork!
Each key is attached by fishing line to a solenoid, an electromechanical device that pulls down when electric current is passed through it. The solenoids sit behind and underneath the typewriter in a multi-layer structure. The solenoids are connected to a MOSFET, which allows the lower-power parts of the circuit to control the high-power solenoids.
The MOSFETs are connected in sets of eight to shift registers (integrated circuits that can, amongst other things, expand the number of outputs on a microcontroller). The shift registers are connected to an Arduino, which is connected to a computer via USB. When the computer sends a character to the Arduino, the Arduino chooses which solenoid to fire and sends that information to the shift registers.