Code Monkey home page Code Monkey logo

ckb's Introduction

ckb: Corsair K65/K70/K95 Driver for Linux and OSX

ckb is an open-source driver for Corsair RGB keyboards. It aims to bring the functionality of their proprietary Corsair Utility Engine software to the Linux and Mac operating systems. This project is currently a work in progress, but several features are already complete and the software has full RGB animation support. More features are coming soon. Testing feedback and bug reports are very much appreciated!

ckb currently does not support non-RGB Corsair keyboards, but if you have one and are willing to do some tests, don't hesitate to contact me. I'm intrested in adding support for them.

Disclaimer: ckb comes with no warranty and is not an official Corsair product. It is licensed under the GNU General Public License (version 2) in the hope that it will be useful for those of us wishing to take advantage of the keyboard's features on non-Windows OSes.

If you use and enjoy this project, I'd greatly appreciate it if you could spare a few dollars for a donation. This is completely voluntary, of course - the project will remain free and open source regardless. :)

I accept donations through PayPal: Click here

Or through Bitcoin: 1LDHCfyDqAziUPtp3a4BdUaKmwphG1yroQ (click for QR code)

Building

Pre-built binaries will be available at a later date. For now, follow the instructions below to compile from source. The project contains two main applications: ckb-daemon, which runs in the background and provides the actual driver, and ckb, which provides the user interface.

Note: When downloading a new version of ckb, please delete your old download first and build it again from scratch. This helps ensure there are no problems lingering from an old build.

Linux instructions

Requires Qt5 and libudev (Ubuntu: qt5-default and libudev-dev. Qt5 packages may also be under qt5-base or libqt5*-devel). gcc, g++, and glibc are also required. Check with your package manager to make sure you have the correct libraries/headers installed.

You can build the project by running qmake-qt5 && make in the directory you downloaded it to. If you don't have qmake-qt5 (e.g. Ubuntu), run qmake && make instead. The binaries will be placed in a new bin directory assuming they compile successfully. To start the daemon, run sudo bin/ckb-daemon. After that, open the ckb binary as a normal user to start the user interface.

Note: If you have problems connecting the keyboard to your system, try adding the following to your kernel's cmdline:

  • K65: usbhid.quirks=0x1B1C:0x1B17:0x20000000
  • K70: usbhid.quirks=0x1B1C:0x1B13:0x20000000
  • K95: usbhid.quirks=0x1B1C:0x1B11:0x20000000

For instructions on adding cmdline parameters in Ubuntu, see https://wiki.ubuntu.com/Kernel/KernelBootParameters

OSX instructions

Install the latest version of Xcode from the App Store. Then install Qt5 from here: http://www.qt.io/download-open-source/

Open ckb.pro in Qt Creator. You should be prompted to configure the project (the default settings should work). Once it's finished loading the project, press Cmd+B or select Build > Build Project "ckb" from the menu bar. The binaries should be placed in a newly-created bin directory assuming they compile successfully. Exit Qt Creator.

ckb-daemon needs to be run as root. Open the bin directory in a Terminal window and run sudo ./ckb-daemon. Then open ckb.app as a normal application to start the user interface.

If you've rebound your modifier keys in System Preferences, those changes won't work anymore. You have to switch them using ckb-daemon's bind command. For instance, to switch Cmd and Ctrl, run: echo bind lctrl:lwin lwin:lctrl rctrl:rwin rwin:rctrl > /tmp/ckb1/cmd. This functionality is coming to the user interface soon.

Usage

See DAEMON.md for info about the daemon program.

The user interface is still a work in progress.

Major features:

  • Control multiple keyboards independently (note: not tested)
  • United States and European keyboard layouts
  • Per-key lighting and animation
  • Reactive lighting
  • Multiple profiles/modes with hardware save function

Roadmap (roughly in order)

  • v0.1 release:
  • (Daemon) Allow the daemon to disconnect all keyboards without shutting down, reconnect later. This way ckb can soft stop/soft start the daemon, because using the daemon without ckb running isn't very useful.
  • (Daemon) Indicator (Num Lock, etc) notifications
  • System service files so that ckb-daemon can be run at system start.
  • v0.2 release:
  • Key rebinding in ckb
  • More functions for the Win Lock key
  • v0.3 release:
  • (Daemon) Repeatable key macros, notification macros
  • (Daemon) Ability to generate mouse press/release events
  • Key combos
  • Key macros, other advanced keypress features like running a custom command
  • v0.4 release:
  • Ability to tie profiles to which application has focus, or switch them with keys
  • Timers
  • v1.0 release:
  • OSD? (Not sure if this can actually be done)
  • Extra settings?
  • ????

Closing ckb will actually minimize it to the system tray. Use the Quit option from the tray icon or the settings screen to exit the application.

Known issues

  • The system tray icon doesn't always appear in Linux. Apparently this is a known Qt bug. To bring ckb back after hiding it, re-run the application.

ckb's People

Contributors

bmerrison avatar ccmsc avatar lewisacidic avatar

Watchers

 avatar

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.