(unlock_display): If adding to kbd_queue, set kbd_queue_has_data.
(read_char): Set and clear kbd_queue_has_data appropriately, but leave it unset when we push back an incomplete sequence. (read_char): Take the longjmp even if current_perdisplay was null. (readable_events): Check kbd_queue_has_data instead of kbd_queue. (init_perdisplay): Initialize kbd_queue_has_data.
Showing with 16 additions and 8 deletions