Try the following: (setq unread-post-input-method-events '(?a ?b ?c)) (sit-for 0.1) (Note: This is not a test for the test, this is an actual problem with input methods and sit-for) It will result in the unexpected behavior that events are processed as « bca ». IIUC, this is how it happens : - Sit-for takes the `a' with its `read-event' - Sit-for stores it back in `unread-command-events' _and it seems normal_: I think that users are expected to use that var, especially because the docstring says this is the FIRST input var processed. - read_char is made three times: for the two first times it will take events from post-input, then for the third, from unread-command-events, because post-input is processed BEFORE unread-command-events. I think Handa's changes 2006-08-21 (fixing the docstring of post-input that indicated that it was processed AFTER unread-command-events, whilst it was the contrary) wasn't the good one. I propose to revert the docstring and make the code respect both this one and unread-command-events' one.