diff options
author | Manassarn Manoonchai <nazzarn@gmail.com> | 2017-10-25 23:11:07 +0700 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2017-10-25 06:11:07 -1000 |
commit | a3f53aeaa12e6e6ce9b5087ded35f5e3af4f3190 (patch) | |
tree | 5d83282f56ab08f97509f430eb4996ce2a23e4cb /keyboards/ergodox/keymaps/narze/visualizer.c | |
parent | 6c4639bfac98e327fd395898e63670c38cb7721f (diff) |
Add narze keymaps for Ergodox & Planck with SuperDuper mode implementation (#1883)
* Fork default planck keymap
* Esc -> CapsLock
* Swap Tilde & Grave in Lower & Raise
* Replace Blacklight key with Raise
* Add Hyper/Esc & Shift/Enter key
* Add super duper mode using S+D combo
* Change superduper mode sound
* Add more functionality to superduper mode
* Fork default
* Replace all left shift to shift/parensopen (space cadet)
* Super / Underscore
* Try superduper on z/slash held
* Use function/macro instead, LGUI_UNDS alone not working
* ✨ Add mouse layer 🐭
* 🐛 Fix superduper
* :sparkles: Fix GUI_UNDS
* :bug: Fix registering underscore when releasing too fast
* :bug: Fix Shift/( with LT z
* ✨ Add superduper for colemak
* ✨ Add Qwerty on software Colemak layout & make Superduper available on multile layouts
* ✨ Enable/disable superduper mode & fix layer switching
* 🐛 Fix superduper not unregister mods
* ✨ Update planck-like ergodox (wip)
* :bug: Fix return before changing tap count & modify comments
* :sparkles: Replace with planck code
* 📝 Update readme
* ✨ Fix SuperDuper by using intermediate layers
* Remove LT from inner lower & raise for ease of use
* Change TG to LG
* Add options & disable audio
* :wrench: Enable ignore mod tap interrupt & shorting tapping term
* :memo: Update readme
* Remove including quantum makefile
* :memo: Update readme
* Rename Makefiles
Diffstat (limited to 'keyboards/ergodox/keymaps/narze/visualizer.c')
-rw-r--r-- | keyboards/ergodox/keymaps/narze/visualizer.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/keyboards/ergodox/keymaps/narze/visualizer.c b/keyboards/ergodox/keymaps/narze/visualizer.c new file mode 100644 index 0000000000..88f658d6b9 --- /dev/null +++ b/keyboards/ergodox/keymaps/narze/visualizer.c @@ -0,0 +1,94 @@ +/* +Copyright 2017 Fred Sundvik + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "simple_visualizer.h" +#include "util.h" + +// Copied from keymap.c +enum ergodox_layers { + _QWERTY, + _COLEMAK, + _QWOC, + _LOWER, + _RAISE, + _PLOVER, +// Intermediate layers for SuperDuper (Combo keys does not work on Infinity yet) + _SUPER, + _DUPER, + _SUPERDUPER, + _MOUSE, + _ADJUST, + _MDIA, + _SYMB, +}; + +// This function should be implemented by the keymap visualizer +// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing +// that the simple_visualizer assumes that you are updating +// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is +// stopped. This can be done by either double buffering it or by using constant strings +static void get_visualizer_layer_and_color(visualizer_state_t* state) { + uint8_t saturation = 255; + + uint8_t layer = biton32(state->status.layer); + state->target_lcd_color = LCD_COLOR(layer << 2, saturation, 0xFF); + + switch(layer) { + case _QWERTY: + state->layer_text = "QWERTY"; + break; + case _COLEMAK: + state->layer_text = "COLEMAK"; + break; + case _QWOC: + state->layer_text = "QWERTY on COLEMAK"; + break; + case _LOWER: + state->layer_text = "LOWER"; + break; + case _RAISE: + state->layer_text = "RAISE"; + break; + case _PLOVER: + state->layer_text = "PLOVER"; + break; + case _SUPERDUPER: + state->layer_text = "SUPERDUPER"; + break; + case _SUPER: + state->layer_text = "SUPER"; + break; + case _DUPER: + state->layer_text = "DUPER"; + break; + case _MOUSE: + state->layer_text = "MOUSE"; + break; + case _ADJUST: + state->layer_text = "ADJUST"; + break; + case _MDIA: + state->layer_text = "MDIA"; + break; + case _SYMB: + state->layer_text = "SYMB"; + break; + default: + state->layer_text = "NONE"; + break; + } +} |