mwe-log-commands by MichaelWeber can be used to demo Emacs to an audience. When activated, keystrokes get logged into a designated buffer, along with the command bound to them.
LeWang I’ve forked this on github and made minor-mode and global-minor-mode for it: