I think I have found two regressions that were introduced some time ago by commit 30a6b1f81412044a, affecting keyboard macros. One is severely affecting calc to the point of leading to completely wrong results -- if not stopped by an error first. The other is affecting how dribble writes out recorded keys. Calc: I stumbled across the following bug using calc -- see also https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37057: 90 S I S This calculates the sine and inverse sine of 90 -- with a result of 90. It also records "IS" as a keyboard macro. Now, let's use the macro to complete the same calculation: 90 S This worked until emacs-24.5 but is broken since emacs-25.1 where "ISS" is recorded as a keyboard macro -- now leading to a result of 1. It seems all macros that involve calc's prefix keys (e.g. "I" or "H") have the following key recorded twice in last-kbd-macro. E.g. "IHP" is recorded as "IHHPP", pushing GAMMA and PI on the stack instead of one constant, namely PHI. Hopefully, the calculation breaks due to an error -- otherwise, you get nonsense results which might be hard to debug, if noticed at all. Dribble: According to the documentation in open-dribble-file, this starts 'writing all keyboard characters to a dribble file'. However, the keys being recorded changed with commit 30a6b1f81412044a when a keyboard macro is involved. Prior, the key "" was recorded when a macro was replayed. With the patch, the recording contains "" and additionally all characters that were replayed by the macro. This gets ugly quickly, e.g. when was used in the macro to insert a counter. I am not suggesting that reverting commit 30a6b1f81412044a is the final and right solution, but it does resolve the two issues in calc and dribble in emacs-26.3. I stumbled across the mail thread https://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00193.html where there were some doubts whether the quick fix could break something else. Keyboard.c seems highly complex and magic to me. I first thought that sit-for in subr.el might have something to do with it as it has fixme comments mentioning unread-command-events. Just a wild guess...