support artificial keyboard events

one possible approach to supporting artificial keyboard events. Fixes #6