Screenkey is a screencast tool that displays the keys you press on screen, in real time. It is made for the situation every tutorial author knows: you record a demo of a command line session, a keyboard shortcut or a coding trick, and the recording shows only the result — the viewers never see what was actually typed. Screenkey fixes that by putting a configurable keystroke overlay on top of the screen while you record.
The current program is an almost-complete rewrite of the original screenkey 0.2 and was inspired by Screenflick. It is written in Python with GTK 3 and talks to X11 directly, so it does not need a compositor, a desktop environment or any integration from the applications you are recording: it watches the keyboard at the X server level, which means it can display keys for any X11 program — a terminal, an editor, a browser, a game.
Everything about the overlay is configurable: font, size, colours, opacity, position, how long the keys stay on screen, how modifiers and repeated keys are shown, and whether the overlay is always visible or only appears while you type. It is a small, single-purpose tool that does one thing well rather than a full screen recorder.
slop region selector.A screencast that shows only the outcome is hard to follow when the interesting part is the input. Adding keystrokes afterwards means editing the video, syncing captions and re-rendering; Screenkey simply shows them while you record, in the same take, with no post-production. Because it captures at the X11 level it works with every application at once, so you can switch between a terminal, an editor and a browser during a demo and the overlay keeps working.
It is also light enough to leave running in the background: no video processing, no recording of the screen itself, just a small overlay drawn when keys arrive. Combined with an ordinary screen recorder, it turns a plain desktop capture into a tutorial.
Ctrl+Alt+T so viewers can copy them.Screenkey needs an X11 session: it uses low-level X11 functions directly, so applications running natively under Wayland are not captured — a common example is GNOME Terminal on a Wayland session. Run the target program under XWayland, or use an X11 session, if the keys must be shown. It is packaged by Debian and Ubuntu (apt install screenkey), Arch, Fedora/EPEL and Gentoo, and the current upstream release is 1.5 from December 2021, which is also what the distributions ship. Building from source needs Python 3 with PyGObject, GTK 3, Pycairo, python-dbus, slop and the FontAwesome font, plus an AppIndicator GIR package on Unity or GNOME Shell.
Open source. Screenkey is distributed under the GNU GPL v3 or later (GPL-3.0-or-later), as stated on the project site, without any warranty.