update; use cross platform keyboard handler