Plugin for the Kaleidoscope keyboard firmware that forces the use of modifier keys on the opposite side of the keyboard from the modified key.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
John SJ Anderson 4a07f404dd test moving modifier detection into onKeyswitchEvent() 3 months ago
examples/ModRight Update documentation 3 months ago
src test moving modifier detection into onKeyswitchEvent() 3 months ago
.editorconfig cleanup 3 months ago
.gitignore initial commit 2 years ago
LICENSE cleanup 3 months ago
Makefile initial commit 2 years ago Properly mark up code example 3 months ago Update project metadata. 3 months ago


A Kaleidoscope plugin that forces you to use the “correct” modifiers to alter a key. (E.g., this plugin will force you to use the right shift key to produce an “A”, if you use the provided example configuration.)

Optionally, the plugin will also flash the entire keyboard red when you use a forbidden modifier combination.

Using the plugin

To use this plugin, you need to include the plugin header in your sketch file, tell the firmware to use the plugin, and provide lists of which modifier keys and regular keys you want to be forced to respect. Optionally, if you don’t want the keyboard to flash when you make a mistake, you can disable that with the appropriate boolean.

#include <Kaleidoscope.h>
#include <Kaleidoscope-LEDControl.h>
#include <Kaleidoscope-ModRight.h>

// note that each of these lists _must_ end with Key_NoKey. Failure to
// do that will probably lead to an inoperative keyboard!

const static Key mods_left[] PROGMEM     = { Key_LeftShift, Key_NoKey };
const static Key mods_right[] PROGMEM    = { Key_RightShift, Key_NoKey };
const static Key require_left[] PROGMEM  = { Key_M, Key_NoKey };
const static Key require_right[] PROGMEM = { Key_A, Key_NoKey };


void setup() {

  ModRight.mods_left     = mods_left;
  ModRight.mods_right    = mods_right;
  ModRight.require_left  = require_left;
  ModRight.require_right = require_right;

  // if you don't want the "flash on error" behavior, uncomment
  // ModRight.flash_on_error = false;


Further reading

Starting from the example is the recommended way of getting started with the plugin.