a03aa301de
* disambiguate Bootmagic rules in keymaps The files edited by this commit were added at a point in time where `BOOTMAGIC_ENABLE = yes` enabled full Bootmagic. This commit edits the files to specify that full Bootmagic is intended. * remove BOOTMAGIC_ENABLE=full setting * unify commented BOOTMAGIC_ENABLE rules in keyboards Explicitly sets `BOOTMAGIC_ENABLE = no` in keyboards where the rule was commented out. Command: ``` find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#[ \t]*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-zA-Z]\+\).*;\1 = no # Virtual DIP switch configuration;g' {} + ``` * remove commented Bootmagic rules from keymap/user level Command: ``` find keyboards/ layouts/ users/ -type f -name 'rules.mk' -exec sed -i -e '/#.*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*/d' {} + ``` * update keyboard BOOTMAGIC_ENABLE rule formatting Sets the formatting of BOOTMAGIC_ENABLE rules to `BOOTMAGIC_ENABLE = [value]`, without the inline comments (which will be replaced later). Command: ``` find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' + ``` * update keyboards' BOOTMAGIC_ENABLE settings Updates keyboard `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used. Command: ``` find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = \)full;\1lite;g' '{}' + ``` * update keymap/user BOOTMAGIC_ENABLE settings Updates keymap/user `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used. Commands: ``` find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' + find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' + ``` * remove and replace inline comments in keyboards and keymap/user files Removes and replaces the inline comments, which have been updated to read `Enable Bootmagic Lite`. Commands: ``` find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' + find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' + find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = lite\);\1 # Enable Bootmagic Lite;g' '{}' + find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = yes\);\1 # Enable Bootmagic Lite;g' '{}' + find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = no\);\1 # Enable Bootmagic Lite;g' '{}' + ``` * rename improperly named makefiles Some files intended to be used as makefiles had improper names causing them to not be used as intended when building. This commit corrects the filenames of the affected files. * update renamed file with new rule formatting * update QMK's template files Updates QMK's `rules.mk` templates to use the new inline comment. * update QMK Docs - remove documentation of full Bootmagic - update links to Bootmagic Lite doc - add doc for Magic Keycodes * rules.mk patch for coarse/ixora and coarse/vinta |
||
---|---|---|
.. | ||
keymaps | ||
terrazzo_effects | ||
config.h | ||
info.json | ||
readme.md | ||
rules.mk | ||
terrazzo.c | ||
terrazzo.h |
readme.md
Terrazzo
Terrazzo is a 40% pro micro keyboard kit with a fun, hot-swapable LED module. It is offered in both staggered and ortholinear variations, each with multiple layout options. A left hand macro column has 4 positions for switches or rotary encoders.
Extended layout options and multiple encoder support will require use of an Elite-C controller. Key switch support is MX soldered only.
- Keyboard Maintainer: MsMustard, Anne Demey
- Hardware Supported: Terrazzo v1 & v2 PCB in staggered and ortholinear
Make example for this keyboard (after setting up your build environment):
make terrazzo:default
Split spacebar staggered layoutmake terrazzo:ortho
2 x 2u spacebar ortho layoutmake terrazzo:ortho_mit
2u spacebar ortho layoutmake terrazzo:ortho_all
All 1u ortho layout
See the build environment setup and the make instructions for more information. Brand new to QMK? Start with our Complete Newbs Guide.
Parts List
- 1 PCB (staggered or ortho)
- 1 LED module (red, green, yellow, blue, or white)
- 1 Rotary encoder
- 1 Knurled knob (black or silver)
- SMD diodes
- Reset switch
- Mill-max female headers (12 & 5 pins) and through-hole diodes to aid in socketing a pro micro
- Mill-max male & female headers for LED module
Custom Keycodes
Terrazzo has several custom keycodes for LED control.
Key | Description |
---|---|
TZ_NXT |
Next Animation |
TZ_PRV |
Previous Animation |
TZ_OFF |
LED Off |
LED Animations
LED animations for Terrazzo are reactive to keyboard input. Each key press or encoder turn increments an internal counter, looping through the number of individual LEDs.
This counter (terrazzo_led_index
) is used as a seed for the animation functions, along with a boolean indicating the direction. Turning the encoder counter-clockwise, or pressing backspace will decrement the counter, allowing for animations to reverse or display alternative frames.
The current animations are:
- DINO: It's like your internet went out
- DOT: Just a single led at a time, for debugging
- HEART: Love you too
- OUTRUN: Driving into the sunset
- PAC_DUDE: Vintage arcade fun
- STRIPES: Just a nice gradient
- WPM_CHART: 2 digit readout with lights indicating speed, each pixel = 2 wpm
Not all animations are enabled by default. You can enable or disable animations in the config.h
file to limit firmware size.
// #define DISABLE_TERRAZZO_EFFECT_STRIPES
// #define DISABLE_TERRAZZO_EFFECT_DINO
// #define DISABLE_TERRAZZO_EFFECT_OUTRUN
#define DISABLE_TERRAZZO_EFFECT_PAC_DUDE
#define DISABLE_TERRAZZO_EFFECT_HEART
// #define DISABLE_TERRAZZO_EFFECT_WPM_CHART
#define DISABLE_TERRAZZO_EFFECT_DOT
Microcontroller Support
Terrazzo is designed for use with a Pro Micro (or compatible, like Bit-C), or an Elite-C. The extra pinouts of an Elite-C are required for the ortho MIT and ALL layouts and multiple encoders. By default the firmware is set up for an Elite-C. For a Pro Micro some changes to config.h
are needed.
Change number of rows from 9 to 8.
#define MATRIX_ROWS 8
Change pinouts, Pro Micro does not have the "F0" pin.
#define MATRIX_ROW_PINS { D2, D7, E6, B4, B5, B6, B2, B3 }
Set encoder to just top or bottom position.
#define ENCODERS_PAD_A { C6 }
#define ENCODERS_PAD_B { D4 }
Encoder Setup
Terrazzo has 4 positions for encoders in the left-hand column. Up to 3 may be used at a time, but this requires the extra pins of an Elite-C. Please refer to config.h
for examples of pin configurations.
The default keymaps are setup for one encoder. Encoders can change behavior based on the current layer. Here, on the "NAV" layer, the encoder changes volume instead of scrolling.
bool encoder_update_user(uint8_t index, bool clockwise) {
terrazzo_scroll_pixel(clockwise);
switch(get_highest_layer(layer_state)) {
case _NAV:
// Change volume when on nav layer
clockwise ? tap_code(KC_AUDIO_VOL_UP) : tap_code(KC_AUDIO_VOL_DOWN);
break;
default:
// Default encoder behavior of Page Up and Down
clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
break;
}
return true;
}
If using multiple encoders, the index
param can be used to distingish which is providing input.
bool encoder_update_user(uint8_t index, bool clockwise) {
terrazzo_scroll_pixel(clockwise);
switch(index) {
case 0:
clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
break;
case 1:
clockwise ? tap_code(KC_AUDIO_VOL_UP) : tap_code(KC_AUDIO_VOL_DOWN);
break;
}
return true;
}