Giter VIP home page Giter VIP logo

keymeleon's Introduction

Keymeleon

An adaptive keyboard RGB controller that changes the keyboard's appearance to display user-defined layouts depending on both which software is in focus and user keypresses, making remembering keybindings and shortcuts easier. Or mimics the average screen colour for an immersive media / gaming experience.

This software is not official software and therefore is not supported by the manufacturer nor the hardware in any way. As the software interacts directly with the hardware using reverse engineered protocols, there is a risk of damage. Though the software has been used and tested, these methods may not have been extensive. No warranty is provided, especially for hardware damages, for using this software

No irreversible damage has occurred during development or testing, but discretion is still advised.

Overview

  • Application\ contains the C# WPF Application Project. This is the main project.
  • kym-Library\ contains a C++ Dynamic-link Library Project which is used by the main application. The application will not function without this.
  • Tests\ contains an NUnit Tests project for automated testing of some of the application's functions
  • examples\ contains some example layout files.

Supported Keyboards

  • Tecware Phantom RGB ISO 105-key 0x652f

In theory the software should work with other keyboards with VID 0x0c45, but has not been tested on any beyond the above list.

If your device is not listed, but works with the software, please do contact me to help expand the list.

Installation

Pre-built Windows binaries for both 32 and 64-bit systems are available here. However, the source code is available to build, as explained below.

Prerequisites

for kym-Library
  1. hidapi is required. Static library builds for Windows (both x86 and x64) are included and can be found in: \kym-Library\dependencies\hidapi Official (dynamic) releases can be found here.
for Application
  1. ColorPicker is required. Is available via a NuGet package.

  2. System.Drawing.Common is required. Is available via a NuGet package.

Building

Both the application and C++ library are projects under a single Visual Studio solution and so can easily be built using VS, as it should handle the whole process for you. If however it fails, or should you wish to build the project independently, the steps to install are:

  • Ensure the prerequisites are met
  • Set Solution Platforms (Visual Studio taskbar) and Platform target (Keymeleon.csproj) to either x64 or x86. These must match.
  • Build kym.dll from \kym-Library
  • Build Keymeleon.exe from \Application
  • Move kym.dll into the build location of the application.

Optional (but advised):

  • Move examples\Default.base (and any .layer files you wish) into BUILD_LOCATION\layouts

The application will only work on Windows devices. However, the C++ Library should work on other platforms, provided the correct version of hidapi is present.

Usage

Run the executable to start the program. When running for the first time, the editor and settings menu will open, allowing you to enable startup, etc. To use the editor, simply select the layer you wish to edit in the top left (base, application, hotkey), select the colour using the tool in the top right, and click on the key buttons to colour them. (When creating a new layer, the editor will only allow you to select applications which are currently open.). Keys can be set to automatically chose their colour based off of the colour of an area of the screen. These can be set and altered from the autokey editor menu, which is accessible from the primary interface (or Ctrl + Alt + K when Keymeleon is closed).

Upon closing the editor, or on subsequent launches, the program will automatically detect the keyboard and begin responding to window changes as described by any .layer and .conf files in the application's layouts/ folder. You can reopen the editor via the shortcut Alt + K, or via the system tray icon (double or right click).

From the tray icon's right-click context menu you can switch between Mode 1 (user-defined layouts) and Mode 2 (average screen colour).

Notes

  • Running an x86 build on a x64 machine can lead to unusual application names (i.e. Microsoft Visual Studio 2022 will just be seen as devenv).
  • The same is true if trying to monitor an elevated application without Keymeleon being elevated.
  • Mode 2 / AutoColour keys will only for the primary screen (no support for additional monitors).
  • Mode 2 / AutoColour keys will not function for applications that use DRM capture-prevention (such as Netflix).
  • As macros are currently unsupported, any existing macros will remain on their current profile. Keymeleon makes use of all 3 of the keyboard's profiles to 'cache' layouts, and minimize writes to the device's flash, making it unclear which profile is currently in use, and therefore which macros are enabled at any given time. Currently, the best solution to this problem is to (using the official software) set all profiles to have identical macro layouts.

License

GNU GPLv3

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See LICENSE.md for details.

Acknowledgments

keymeleon's People

Contributors

razzula avatar

Stargazers

 avatar

Watchers

 avatar

keymeleon's Issues

UWP App Support

All UWP apps are seen as Application Frame Host and will all use the same single layout.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.