Skip to content
Simple application to display keystrokes during screencasts or presentations.
C Makefile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
tests Moved examples to tests directory Nov 19, 2011
.gitignore Added code to keep list of keys in a queue Nov 11, 2011
LICENSE Added LICENSE, README and other miscellanea. Nov 19, 2011
Makefile Working version of showkeys with Record. Display problem Nov 19, 2011 improve Oct 4, 2019
config.h added config.h for easier customization. Aug 1, 2017
keystack.c added config.h for easier customization. Aug 1, 2017
keystack.h Added LICENSE, README and other miscellanea. Nov 19, 2011
showkeys.c Stops unnecessary prints Aug 9, 2017
showkeys.h Added LICENSE, README and other miscellanea. Nov 19, 2011


Showkeys is a simple program to display keys being pressed on the screen.

It is useful while making presentations and screencasts. The audience will be able to see the keys being pressed.

It is similar to key-mon. Key-mon has more features than showkeys. The advantages of showkeys are

  1. Doesn't use gtk/gnome.
  2. Uses libxosd to display keys directly onto the screen.
  3. No floating windows that always need to be on top. This is very useful if you're using a tiling WM like Xmonad.
  4. Keystroke history. key-mon has this but doesn't show modifiers. showkeys does this using an Emacs style key notation.

The list of things which key-mon does better than showkeys is far longer but I wanted something that fixed these specific issues.


You will need

  1. The Xlib development libraries. (available as libx11-dev on Debian).
  2. The libxosd development libraries (available as libxosd-dev on Debian).
  3. The libXtst development libraries (available as libxtst-dev on Debian).
  4. Your X server should have the record extension enabled. You can check if this is enabled by running xdpyinfo and searching the list of extensions for RECORD. The command itself is part of the x11-utils package (alteast on Debian which I run).


  1. Unzip the tarball.
  2. Edit the file config.h configure showkeys.
  3. Run make showkeys. It should create the executable.

This program uses some Gnu extensions to libc so might not work with a pure POSIX libc.


The project is on Github. Please report bugs using the issue tracker.

You can’t perform that action at this time.