need to interpret ->state along with keycode