https://github.com/conventoangelo/overkeys
An open-source keyboard layout visualizer for Windows. Learn and practice alternative layouts, personalize appearance, and improve your typing.
https://github.com/conventoangelo/overkeys
flutter hacktoberfest kanata keyboard keyboard-layout keymap qmk via win32 windows zmk
Last synced: 14 days ago
JSON representation
An open-source keyboard layout visualizer for Windows. Learn and practice alternative layouts, personalize appearance, and improve your typing.
- Host: GitHub
- URL: https://github.com/conventoangelo/overkeys
- Owner: conventoangelo
- License: gpl-3.0
- Created: 2024-09-19T15:22:57.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-14T03:49:35.000Z (30 days ago)
- Last Synced: 2026-02-14T10:54:08.326Z (30 days ago)
- Topics: flutter, hacktoberfest, kanata, keyboard, keyboard-layout, keymap, qmk, via, win32, windows, zmk
- Language: Dart
- Homepage:
- Size: 55.8 MB
- Stars: 185
- Watchers: 2
- Forks: 18
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
OverKeys
An open-source keyboard layout visualizer for Windows
Install Now
·
Report Bug
·
Request a Feature
·
Ask a Question
Table of Contents
- About The Project
- Features
- Getting Started
- Documentation
- Contributing
- Building from Source
- License
- Contact
- Acknowledgments
## About The Project

OverKeys is a free and open-source keyboard layout visualizer designed for users to practice alternative keyboard layouts, such as **Colemak**, **Dvorak**, **Graphite**, **Focal**, and many more. Learn and practice your layouts system-wide, personalize keyboard appearance, and improve your typing.
This project was initially developed to help with the creator's system-wide practice of the **Canary layout**, but has since evolved to support user-defined layouts, layer switching integration, and customization options.
### Samples
OverKeys Default
Aurora (On Dark Background)
Aurora (On Light Background)
Custom (On Dark Background)
Custom (On Light Background)
Catppuccin
Red Samurai
Split Matrix Style
Matrix Style
Note: The themes are not provided by default and were instead manually configured. Colors were based on the MonkeyType themes of the same name.
## Features
- **Multi-layout support**: The following layouts are currently natively supported.
Layouts
- QWERTY
- Colemak
- Dvorak
- Canaria
- Canary
- Canary Matrix
- Colemak DH
- Colemak DH Matrix
- Engram
- Focal
- Gallium (Col-Stag)
- Gallium V2 (Row-Stag)
- Graphite
- Halmak
- Hands Down
- NERPS
- Norman
- Sturdy
- Sturdy Angle (Staggered)
- Workman
- Greek
- Arabic
- Russian
- **Customizable styles**: Change colors, fonts, sizes, offsets, and key styles
- **Auto-hide**: The keyboard hides automatically when not in use
- **Keymap styles**: Supports staggered, matrix, and split matrix (5-col and [6-col](/docs/advanced/6-column-layouts.md)) styles
- **User configurations**: Add and use [custom keyboard layouts](/docs/advanced/custom-layouts.md) through configuration files
- **Side-by-side layouts**: Display [alternative layouts](/docs/advanced/alternative-layouts.md) alongside the default layout
- **Top row/Number row**: Optional row above the main keyboard for numbers or user-configured keys
- **[Layer switching](/docs/advanced/layer-switching.md)**: Switch between multiple custom keyboard layers for QMK, ZMK, or other programmable keyboard firmware using configurable triggers and toggle modes
- **[Layer switching (Kanata)](./docs/advanced/kanata-integration.md)**: Connect to [Kanata](https://github.com/jtroo/kanata) through TCP to dynamically display the active layer
- **[Ignored Keys](/docs/advanced/ignored-keys.md)**: Prevent specific keys from triggering the keyboard overlay (e.g., Print Screen, layer triggers)
- **[Learning Mode](/docs/user-guide/learning-mode.md)**: Color-code keys based on proper finger positions for touch typing
- **[Reactive Shift Mapping](/docs/advanced/shift-mappings.md)**: Display alternate key symbols when Shift key is pressed
- **[Locales](/docs/advanced/locales.md)**: Add locale-specific keys in user configuration for key press recognition
For complete feature details, see the [documentation](docs/index.md).
## Getting Started
### Installation
OverKeys can be installed through several methods:
1. **Using Winget (Recommended)**
```pwsh
winget install AngeloConvento.OverKeys
```
Note: Please check if `winget` version is updated to the latest version as in the repo. Otherwise, use the [installer](https://github.com/conventoangelo/OverKeys/releases/latest) to have the latest version.
2. **Using the Installer**
- Download and run the latest [EXE installer](https://github.com/conventoangelo/OverKeys/releases/latest).
3. **Portable Version**
- Downloade and extract the [portable ZIP file](https://github.com/conventoangelo/OverKeys/releases/latest)
For detailed installation instructions, see the [Installation Guide](/docs/getting-started/installation.md).
## Documentation
Complete documentation for OverKeys is available in the [docs](docs/index.md) folder:
### Getting Started (Docs)
- [Installation Guide](/docs/getting-started/installation.md)
- [Basic Usage](/docs/getting-started/basic-usage.md)
### User Guide
- [Preferences](/docs/user-guide/preferences.md)
- [Learning Mode](/docs/user-guide/learning-mode.md)
- [Built-in Layouts](#features)
### Advanced Features
- [Custom Font](/docs/advanced/custom-font.md)
- [Custom Layouts](/docs/advanced/custom-layouts.md)
- [Alternative Layouts](/docs/advanced/alternative-layouts.md)
- [6-Column Layouts](/docs/advanced/6-column-layouts.md)
- [Layer Switching](/docs/advanced/layer-switching.md)
- [Kanata Integration](/docs/advanced/kanata-integration.md)
- [Shift Mappings](/docs/advanced/shift-mappings.md)
- [Supported Keys](/docs/advanced/supported-keys.md)
- [Locales](/docs/advanced/locales.md)
## Contributing
Contributions are what make the open-source community such an amazing place to learn and collaborate. Any contributions to **OverKeys** are greatly appreciated.
1. Fork the Project.
2. Create your Feature Branch (`git checkout -b feat/amazing-feature`).
3. Commit your Changes (`git commit -m 'feat: add some amazing feature'`).
4. Push to the Branch (`git push origin feat/amazing-feature`).
5. Open a Pull Request.
### Top contributors
## Building from Source
1. **Prerequisites**:
- Install [Flutter](https://flutter.dev/docs/get-started/install)
- Install [Git](https://git-scm.com/downloads/win)
2. **Clone and Build**:
```pwsh
git clone https://github.com/conventoangelo/OverKeys.git
cd OverKeys
flutter pub get
flutter run -d windows # For testing
# OR
flutter build windows # For release build
# Release executable is located at `build\windows\x64\runner\Release`
```
## License
Distributed under the GPL-3.0 License. See `LICENSE` file for more information.
## Contact
### Angelo Convento
GitHub: [conventoangelo](https://github.com/conventoangelo)
Email:
Project Link: [https://github.com/conventoangelo/OverKeys](https://github.com/conventoangelo/OverKeys)
## Supporting
If you'd like to support the development of OverKeys, I accept contributions through Ko-fi and BuyMeACoffee. Thank you — your support helps fund development and living costs.
## Acknowledgments
- [win32](https://win32.pub/) - Enable direct Win32 API access from Dart using FFI without requiring C code
- [leanflutter.dev](https://leanflutter.dev/our-packages/) - Provider of several essential Flutter desktop packages used in this project
- [desktop_multi_window](https://pub.dev/packages/desktop_multi_window) - Flutter plugin for creating and managing multiple windows in desktop applications
- [flex_color_picker](https://github.com/rydmike/flex_color_picker) - Highly customizable and versatile color picker for Flutter applications
- Alaine - for creating the beautiful OverKeys logo with love and care.