This program is an On-Screen Display or a Heads-Up Display for keys. It displays every key press at a clearly visible text size. It is developed for people with poor eye sight. It is meant to aid desktop computer usage. It is especially useful while chatting or for occasional typing. The user no longer has to squint or zoom in the entire screen …
Latest commit 2dfaa81 Aug 8, 2018


KeyPress OSD: Presentation

Presentation video

To keep the development going, please donate using PayPal.

Please check the commercial edition as well.

This program is an On-Screen Display or a Heads-Up Display for keys. It displays every key or mouse button press at a clearly visible text size. I developed it for people like me, with poor eye sight or low vision. It is meant to aid desktop computer usage. It is especially useful while chatting or for occasional typing. The user no longer has to squint at the screen or zoom in the entire screen to see what s/he wrote for every text field.

This application can also be used for screen casts or presentations, by disabling the typing mode at Preferences. In its main menu, you can select Quick Start Presets to help you get started.

Numerous unique features, options and settings are available in the different Preferences windows provided in the program, such that everyone can find a way to adapt it to personal needs.

This application has support for Cyrillic and Latin-based keyboard layouts. I also did some limited testing with Indic layouts, e.g., Bengali, and as far as I can tell, KeyPress OSD works with these as well.

In recent versions, I implemented partial support for Right-to-Left [RTL] keyboard layouts, such as Arabic. Caret navigation is disabled for such layouts.

I did not test or developed this application having in mind support for Chinese or Japanese scripts. It would be too complex for me to implement support for such writing systems. On Windows, to type in such languages one makes use of IMEs [Input Method Editors] - additional typing aids that facilitate input of non-Latin texts using Latin keyboards.

If other programmers are willing to invest time in this application and to extend it, are welcomed to do so. Anyone is free to transform it into anything they wish. The source code is available. However, keep in mind, I am no programmer. I learned to code by developing this application. The code quality is definitely poor :-).

I coded the application as an AHK script for AutoHotkey_H v1.1.27. To execute/compile the source code one needs AutoHotkey_H v1.1+.

Through the development of this project, Drugwash (from the AHK forums) substantially contributed with code and feedback. Many thanks to you!

In addition, many thanks for the great support and help to the people on #ahk ( and from the AHK forum.

KeyPress OSD: Features

  • Support for at least 110 keyboard layouts covering about 55 languages. It recognizes keys with Shift, AltGr and dead keys for each of these layouts.
  • Automatic detection of keyboard layouts.
  • Show previously pressed key if fired quickly.
  • Count key presses or key fires and mouse clicks.
  • Indicators for Caps Lock, Num Lock and Scroll Lock states.
  • Typing mode. It shows what you are typing in an expanding text area.
  • Virtual caret/cursor navigation:
    • Navigate through typed text in the OSD in synch with the text field of the host application.
    • Basic support for copy, paste, cut and undo with Ctrl + A / Z / X / C / V.
    • Support for text selections.
    • Support for customizable automatic text expansion, e.g, 'btw' expands to 'by the way', or 'bbl' to 'be back later'.
    • Multi-Clipboard support. You can easily retrieve previous clipboard contents and text typed in the OSD. The texts stored in the clipboards retain their formatting.
    • Shortcuts to copy the text from the active text field into the OSD, or paste the OSD content to it.
  • Only typing mode option.
  • Typed text history with Page Up/Down. On pressing Enter or Escape, it records the written line and you can get back to it with Page Up.
  • Automatic resizing of OSD/HUD or fixed size.
  • Customizable size, position and colors.
  • The OSD can hide or switch position automatically when the mouse runs over it.
  • Customizable visual mouse clicks and mouse halo to indicate its location, and flash mouse cursor after idling.
  • Mouse keys. Move the mouse cursor with the numpad keys.
    • Ability to lock Left, Right and Middle clicks to facilitate drag-n-drop operations, using ScrollLock or numpad Enter.
    • Option to wrap / warp mouse movements at screen edges.
    • Ability to move in 16 different directions by combining two directions simultaneously.
    • Ease to alternate between cursor speeds using Capslock.
  • Distinct beepers for different types of keys and buttons or when typing with Capslock.
  • Clipboard monitor. It displays briefly texts copied to clipboard.
  • Multi-monitor support.
  • Portable. No need to install/uninstall. Settings stored in an easy to read INI file.
  • Easy to configure with many options in Settings windows to toggle features and customize behavior and look.
  • Option to update to the latest version.