Skip to main content

Privacy-first keyboard usage heatmap and statistics CLI tool.

Project description

KeyGlow

License: MIT

Privacy-first keyboard usage heatmap and statistics CLI tool.

KeyGlow is a lightweight command-line application that tracks keyboard usage statistics, generates keyboard heatmaps, and helps you understand your typing habits.

Unlike keyloggers, KeyGlow does not record what you type (typing sequences)

It only stores anonymous key frequency counters:

{
    "A": 245,
    "SPACE": 1200,
    "ENTER": 83
}

It does not save typed text, passwords, or key sequences. Only keyboard usage statistics.

Features

  • Keyboard usage heatmap
  • Real-time keyboard monitoring
  • Keyboard and mouse inactivity detection
  • Keyboard statistics
  • Total key press counter
  • JSON / CSV / TXT exports
  • Local only data storage in ~/KeyGlow/ directory.
  • Automated Saving
  • Automatic inactivity shutdown after certain time passed in a parameter

Installation

Requirements

  • Python 3.10+
  • pip

Install keyglow:

pip install keyglow

Run:

keyglow --help

Commands

version

Show KeyGlow version.

keyglow version

privacy

Display KeyGlow privacy model.

keyglow privacy

monitor

Start keyboard monitoring.

keyglow monitor

Keyglow tracks keyboard and mouse inactivity.

Default inactivity timeout:

10 minutes

Change timeout:

keyglow monitor --timeout 30

Disable automatic shutdown:

keyglow monitor --timeout 0

stats

Show keyboard statistics.

keyglow stats

Example:

KeyGlow Keyboard Statistics

Key     Presses     Usage

SPACE   5420        ██████████

E       3120        ███████

ENTER   430         █

map

Display keyboard primitive heatmap. Displayed keyboard may not recreate your keyboard's alignment the same way, but it does contain most of commonly used keys.

keyglow map

total

Show total recorded key presses.

keyglow total

Example:

KeyGlow Total Key Presses
Total Presses: 125,340

export

Export collected statistics.

JSON:

keyglow export json

CSV:

keyglow export csv

TXT:

keyglow export txt

Exports are stored in:

~/KeyGlow/Exports/

reset

Delete all collected statistics. (It does not delete exported files though)

keyglow reset

KeyGlow asks for confirmation before deleting data.

man

Display the KeyGlow manual.

keyglow man

joke

Display a random (really funny trust me) joke about keyboard.

keyglow joke

info

Show informations about the version, amount of stored keys, total key presses, storage file size and path to export folder.

keyglow info

logo

Show a KeyGlow logo.

keyglow logo

Privacy Model

KeyGlow was designed with privacy as a priority.

Collected

Only anonymous key frequency counters.

Example:

{
    "A": 500,
    "CTRL": 120,
    "SPACE": 900
}

Never Collected

  • Typed text sequences
  • Passwords
  • Sentences
  • Data stored in Clipboard
  • Websites
  • Apps

Data Storage

KeyGlow stores all the data locally.

Main database:

~/KeyGlow/keyglow_data.json

Exports:

~/Keyglow/Exports/

No cloud synchronization, no external servers, no network needed

Supported Keys

Letters

A-Z

Numbers

0-9

Function Keys

F1-F12

Special Keys

  • ESC
  • TAB
  • ENTER
  • BACKSPACE
  • CAPSLOCK
  • SPACE

Modifiers

  • SHIFT
  • CTRL
  • ALT
  • SYSTEM

Navigation

  • UP
  • DOWN
  • LEFT
  • RIGHT

Technologies

KeyGlow is built with:

  • Python
  • Typer
  • Rich
  • Pynput

Files:

keyglow/

    - main.py
    - monitor.py
    - storage.py
    - export.py
    - map.py
    - keyboard.py
    - data.py
    - joke.py
    - logo.py

Development

Clone repo:

git clone https://github.com/aerissdev-dotcom/KeyGlow.git

Install dependencies:

pip install -r requirements.txt

Run:

python main.py --help

License

MIT License

Author

aeriss-dev

GitHub:

https://github.com/aerissdev-dotcom

Version

0.1.0

Testing and developing OS:

KeyGlow was fully tested and developed on macOS. The author does not guarantee this tool will work on other operating systems.

OS Compatibility

macOS

KeyGlow requires Accessibility permission.

System Settings: Privacy & Security -> Accessibility

Add your Terminal application.

Windows

No additional permissions are normally required.

Linux

Works best on X11 sessions. Wayland sessions may require additional configuration due to system restrictions.

Conclusion

It's a free, silly little tool that might brighten someone's day, and for some specific people, give interesting statistics.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keyglow-0.1.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keyglow-0.1.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file keyglow-0.1.0.tar.gz.

File metadata

  • Download URL: keyglow-0.1.0.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for keyglow-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1938776c70e6355e45edd16f8873a701ab2bd3dd3888bdfe2fe3f7bc270c8020
MD5 25dcc4a211ccd03fa4ef9419f05df0e1
BLAKE2b-256 d1b03afc5e9c80381b9fb271b9296d014b22104d15d06d69cd4ab7f1e38cfc22

See more details on using hashes here.

File details

Details for the file keyglow-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: keyglow-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for keyglow-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 136920a54a6e8bde4b27117400c26921ce734e655ddf1669e1b721cf12eec943
MD5 b0b72ef0cf8727aa956527c2098c5fb8
BLAKE2b-256 e64a13376c080435e6089bc3221ae408362e8f7b1a065de71f88d2ca9fd9c653

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page