Massdrop-Ctrl-Keyboard-Ripple-LED
Massdrop-Ctrl-Keyboard-Ripple-LED copied to clipboard
adding LED splash effect with the provide QMK firmware, by editing matrix_init_user(), matrix_scan_user(), process_record_user(), led_instructions[]
Massdrop CTRL Keyboard Splash LED
The rainbow color is now made brighter! (closer to what the default pattern looks)
(but because I quite like the original one, I am going to add toggle switch)
adding LED Splash effect with the provided QMK software.
demo video: https://youtu.be/W3U1SDztx1I
installing video: https://youtu.be/TsPV_rCVT-k (or more recommanded to use the simple installer)
feel free to leave comments or feature request.
How to use:
simple installer
- download the
download_and_install.bat
file and just execute (double click) it
qmk toolbox
- bin file inside /.build/
(Currently Available) Settings
Key Combos:
-
Hold(Fn + P) + A
,Hold(Fn + P) + D
: Previous/Next dripple effect- 0: None
- 1: background off wave on (default)
- 2: background on wave off
- 3: rainbow wave :rainbow:
- 4: rainbow wave on rotate background
-
Hold(Fn + P) + W
,Hold(Fn + P) + S
: Increase/Decrease dripple wave width (default: 2, 10 on rainbow and 5 on wave off, set to >10 and press space to see true rainbow!) -
Hold(Fn + P) + Q
,Hold(Fn + P) + E
: Decrease/Increase wave speed (actually it's wave period, default: 30~50ms, 10ms per incre/decre, lowest(fastest): 10ms) -
Hold(Fn) + Up
,Hold(Fn) + Down
: scroll up and down (implemented with MOUSEKEY, because page up/down scrolls too fast) -
Hold(Fn + P) + Tab
: Toggle between two rainbow color preset
UIO
are equivalent to QWE
(the keys will light up after pressing Fn + P
JKL
are equivalent to ASD
so as to allow one hand switching
TODO:
-
add indicator
-
check out the functions from
https://beta.docs.qmk.fm/features/feature_rgblight
Implementation:
basically all changes happen only in /keyboards/massdrop/ctrl/keymaps/custom/keymap.c
:
Inspired by LastContinue's Post,
by abusing led_instructions_t
to set the led of each individual key only in keymap.c
(It is understood to be very inefficient, but one benefit of this is being more prone to future changes (if any, ok I know there is very little) and slightly more portable (more below)).
one core function is unsigned char ktli(uint16_t keycode);
where you input the keycode to return the id of the led light that key correspond to (as mentioned in the post).
Therefore, ideally, changing this function alone is enough to use the code on other QMK 87 keyboards (assumption is made that the parent project from massdrop is identical to QMK's, but that's not true, I am unable to compile the code with QMK's firmware fork, didn't bother to debug).
another core function is matrix_scan_user()
This is provided in the specification. This function is invoked after every
small period, to check the time passed after a key press registered as in
process_record_user(keycode)
(which stores information in KEY_STROKES
),
against the distance between the registered key and the targeted led key.
The DISTANCE_MAP[][]
(as initialized from matrix_init_user()
)
recorded the distances (adjacent key as 1 unit) between each of the two keys.
While additional algorithm is used to calibrate the distance between two keys
which appears to be distinct in a 2D array, but adjacent in reality. (
This process could have been cached before compiling)
Known bugs/limitations
- please raise a ticket if you find one
This project is just for fun and please don't be serious :blush:.
What's different (or added) from the forked project: (root as project folder)
+ /hid_listen.exe
+ /key_distance.py
+ /.build/*
+ /keyboards/massdrop/ctrl/keymaps/custom/*
+ /keyboards/massdrop/ctrl/keymaps/custom_activate_on_press/*
! /keyboards/massdrop/ctrl/keymaps/config.h
# adding parameters for MOUSEKEY
! /keyboards/massdrop/ctrl/keymaps/rules.mk
# changing MOUSEKEY_ENABLE = yes
other changes are unintentional or not important.
~~a copy of the above readme is in /keyboards/massdrop/ctrl/
, NO~~
below is the content from the original readme
Quantum Mechanical Keyboard Firmware
This is a keyboard firmware based on the tmk_keyboard firmware with some useful features for Atmel AVR and ARM controllers, and more specifically, the OLKB product line, the ErgoDox EZ keyboard, and the Clueboard product line.
Documentation
The docs are hosted on Gitbook and GitHub (they are synced). You can request changes by making a fork and pull request, or by clicking the "suggest an edit" link on any page of the docs.
Supported Keyboards
- Planck
- Preonic
- ErgoDox EZ
- Clueboard
- Cluepad
- Atreus
The project also includes community support for lots of other keyboards.
Maintainers
QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, Hasu. The OLKB product firmwares are maintained by Jack Humbert, the Ergodox EZ by Erez Zukerman, the Clueboard by Zach White, and the Atreus by Phil Hagelberg.
Official website
http://qmk.fm is the official website of QMK, where you can find links to this page, the documentation, and the keyboards supported by QMK.