Control Kaleidoscope-powered devices from the comfort of your Emacs.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


MELPA: kaleidoscope MELPA: kaleidoscope-evil-state-flash

An Emacs interface to Kaleidoscope powered devices, such as the Model01. It requires appropriate hardware, and a customised firmware that allows bi-directional communication (the Kaleidoscope-Focus plugin does just this).


There are two parts for this package, kaleidoscope.el and kaleidoscope-evil-state-flash.el. The former implements the lower level communication, and the rest is an example of what can be built upon this foundation.

To use either, one needs to require kaleidoscope, and start the communication as such:

(require 'kaleidoscope)

To stop talking to the keyboard, and release the device lock, one can call (kaleidoscope-quit).

While the channel is active, the kaleidoscope-send-command function can be used to send commands to the keyboard. The results will appear in the *kaleidoscope* buffer.

(kaleidoscope-send-command :help)
(kaleidoscope-send-command :led/setAll "255 0 0")

Using kaleidoscope-evil-state-flash

The kaleidoscope-evil-state-flash package ships with a function that sets up hooks so that whenever Evil changes state, the keyboard will briefly flash in a color configured for the target state. Assuming the keyboard is set to a LED mode that allows this (such as LEDOff).

To enable or disable this flashing, call kaleidoscope-evil-state-flash-setup or kaleidoscope-evil-state-flash-teardown respectively.

Note that for the LED Control to work, your Kaleidoscope firmware must have the FOCUS_HOOK_LEDCONTROL enabled on top of enabling the Focus plugin.



A short, video of the package (showing kaleidoscope-evil-state-flash in action) can be found here.

Copyright & License

Copyright (c) 2017 Gergely Nagy, released under the terms of the GNU GPLv3+.