Since I found the Screencast Keys addon, I had a very strong feeling that there were a few aspects on which to improve it. Initially I just added a fade-out for the text and included a basic mouse widget. But I kept thinking it could be improved even more. After seeing what it has become after many additions, I concluded it had become very cluttered; thus, I decided to work on redesigning it, and that redesign just ended in an almost full rewrite.
The current version of the addon is not wrong as such, it does its job and it does it correctly. My biggest concern is that the way the information is presented is not well suited for reading at-a-glance.
Starting from my experience learning basic OpenGL for the mouse widget used in the current version (which, by the way, has now an ugly error in the lower part) I started toying with the idea of drawing arbitrary shapes instead of leveraging too much on text. I also thought a lot about the inconvenience of looking at the corner of the screen when wanting to read the last key/mouse combo, since it can easily cause the viewer to loose track of what is being taught. Finally, some details that are simply extraneous (a box surrounding the command history) made me feel that was not the way I would like to present my own screencasts.
Long story short: I rewrote it almost entirely and used this rewrite as the opportunity to strip out all the clutter. The current proof of concept uses two displays: one for the mouse (pointer follower, fully working) and one for the keyboard (fixed at the bottom-center of the 3D View, only alphanumeric widgets for now). I also decided to practice OOP on this project and ended up enjoying Python coding. The end result is a very simplified (IMHO) way to show the key/mouse combos which, at the same time, does a better job to reflect the "grammar" we use for key/mouse combos in Blender (the mouse display has its own widgets for the modifier keys).
The first working version is available in the github repo that I created for this project. From there you can grab the addon, load it in the text editor, run it (Alt+P) and try it (Alt+Shift+C, on the 3D View). Remember the keyboard display only works fully for alphanumeric keys. It looks as shown:
Of course, the current widgets can be swapped for better ones if needed. I wrote a separate helper addon to aid in generating code representation of bezier curves and I plan to include it in the repo so that anyone can create custom widgets directly in Blender.
I hope this addon will improve the learning experience for those watching screencasts that use it. It's just missing some work, but the hardest part is already sorted out.