add kbd_event_handler to deal with the keyboard event
f
add single fire mode
fix some bug