An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          





OverKeys Logo

OverKeys






Release (Inverted)


Downloads (Inverted)


License (Inverted)


GitHub stars (Inverted)

An open-source keyboard layout visualizer for Windows


Install Now
·
Report Bug
·
Request a Feature
·
Ask a Question


Table of Contents


  1. About The Project

  2. Features

  3. Getting Started

  4. Documentation

  5. Contributing

  6. Building from Source

  7. License

  8. Contact

  9. Acknowledgments

## About The Project

![OverKeys Demo](https://github.com/conventoangelo/OverKeys/blob/main/assets/images/OverKeysDemo.gif)

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 cover

OverKeys Default






aurora dark background

Aurora (On Dark Background)




aurora light background

Aurora (On Light Background)






custom dark background

Custom (On Dark Background)




custom light background

Custom (On Light Background)






catpuccin

Catppuccin




split matrix

Red Samurai






red samurai

Split Matrix Style




matrix

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.

(back to top)

## 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).

(back to top)

## 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).

(back to top)

## 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)

(back to top)

## 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


contrib.rocks image

## 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`
```

(back to top)

## License

Distributed under the GPL-3.0 License. See `LICENSE` file for more information.

(back to top)

## 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.



Support me on Ko-fi

  

Buy Me A Coffee

(back to top)

## 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.

(back to top)