All credit to Andrew Muck
To convert from serial to parallel a 4094 shift register [can] be used to provide 4 data lines and a register select line. Test C code For Shift register version. Linux driver C Code. See also: http://lcdproc.omnipotent.net/
A minimal keyboard circuit would be the 4094 shift register that talks to the LCD would also form part of a keyboard matrix; isolated by small signal diodes (anode end to the switch matrix) the eight outputs can be used to scan across momentary switches. On a parallel port there are 6 inputs, with a 10k resistor pulling up to 5volts the scan lines can be lowered in turn while monitoring the input. If it goes low then the corresponding key has been pressed. A single monitored line provides for eight keys If a scroll/select type menu structure is used, this should be enough.
If you really must have more keys but dont want six input wires running all the way to the key pad then consider an input shift register the 4014 sharing the clock signal of the 4094 output register and using one input line on the parallel port, many registers in series could be used if you hundreds of keys. ie 2x4014's gives 128 keys, but just one is needed to allow up to 64 keys.
See also: