direct keyboard input through evdev
some improvements here and there