aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Dockerfile9
-rw-r--r--keyboards/amj60/amj60.h15
-rw-r--r--keyboards/amj60/keymaps/maximized/keymap.c61
-rw-r--r--keyboards/atomic/keymaps/pvc/keymap.c4
-rw-r--r--keyboards/atreus/keymaps/xyverz/keymap.c10
-rw-r--r--keyboards/atreus62/keymaps/xyverz/keymap.c10
-rw-r--r--keyboards/clueboard/keymaps/mac_optimized/keymap.c21
-rw-r--r--keyboards/clueboard/keymaps/shift_fn/keymap.c2
-rw-r--r--keyboards/clueboard/keymaps/skully/keymap.c2
-rw-r--r--keyboards/clueboard/keymaps/smt/keymap.c181
-rw-r--r--keyboards/clueboard/keymaps/smt/layout.pngbin0 -> 130672 bytes
-rw-r--r--keyboards/clueboard/keymaps/smt/readme.md30
-rw-r--r--keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c10
-rw-r--r--keyboards/ergodox/config.h4
-rw-r--r--keyboards/ergodox/ez/config.h2
-rw-r--r--keyboards/ergodox/ez/matrix.c62
-rw-r--r--keyboards/ergodox/keymaps/coderkun_neo2/keymap.c53
-rw-r--r--keyboards/ergodox/keymaps/coderkun_neo2/readme.md122
-rw-r--r--keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c331
-rw-r--r--keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md28
-rw-r--r--keyboards/ergodox/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/frosty_flake/keymaps/nikchi/Makefile23
-rw-r--r--keyboards/frosty_flake/keymaps/nikchi/config.h24
-rw-r--r--keyboards/frosty_flake/keymaps/nikchi/keymap.c224
-rw-r--r--keyboards/frosty_flake/keymaps/nikchi/readme.md24
-rw-r--r--keyboards/frosty_flake/rules.mk4
-rw-r--r--keyboards/gh60/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/handwired/atreus50/keymaps/default/keymap.c8
-rw-r--r--keyboards/handwired/ortho5x13/keymaps/default/keymap.c8
-rw-r--r--keyboards/handwired/promethium/color.h15
-rw-r--r--keyboards/handwired/promethium/config.h44
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/config.h1
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c169
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h1
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h36
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h36
-rw-r--r--keyboards/handwired/promethium/matrix.c4
-rw-r--r--keyboards/handwired/promethium/promethium.c6
-rw-r--r--keyboards/handwired/trackpoint/Makefile (renamed from keyboards/s60-x/default/Makefile)0
-rw-r--r--keyboards/handwired/trackpoint/README.md10
-rw-r--r--keyboards/handwired/trackpoint/config.h75
-rw-r--r--keyboards/handwired/trackpoint/keymaps/default/keymap.c7
-rw-r--r--keyboards/handwired/trackpoint/rules.mk25
-rw-r--r--keyboards/handwired/trackpoint/trackpoint.c5
-rw-r--r--keyboards/handwired/trackpoint/trackpoint.h13
-rw-r--r--keyboards/handwired/trackpoint/wiring.pngbin0 -> 7217 bytes
-rw-r--r--keyboards/hhkb/keymaps/cinaeco/Makefile23
-rw-r--r--keyboards/hhkb/keymaps/cinaeco/README.md23
-rw-r--r--keyboards/hhkb/keymaps/cinaeco/config.h20
-rw-r--r--keyboards/hhkb/keymaps/cinaeco/keymap.c186
-rw-r--r--keyboards/hhkb/keymaps/smt/keymap.c8
-rw-r--r--keyboards/hhkb/rules.mk2
-rw-r--r--keyboards/jd45/keymaps/jeebak/keymap.c2
-rw-r--r--keyboards/jd45/keymaps/jeebak/readme.md2
-rw-r--r--keyboards/kinesis/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/keymap.c8
-rw-r--r--keyboards/lets_split/keymaps/hexwire/keymap.c8
-rw-r--r--keyboards/lets_split/keymaps/i2c/keymap.c8
-rw-r--r--keyboards/lets_split/keymaps/serial/keymap.c8
-rw-r--r--keyboards/lets_split/keymaps/smt/keymap.c8
-rw-r--r--keyboards/lets_split/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/m10a/Makefile (renamed from keyboards/M10A/Makefile)0
-rw-r--r--keyboards/m10a/config.h (renamed from keyboards/M10A/config.h)0
-rw-r--r--keyboards/m10a/keymaps/default/Makefile (renamed from keyboards/M10A/keymaps/default/Makefile)0
-rw-r--r--keyboards/m10a/keymaps/default/keymap.c (renamed from keyboards/M10A/keymaps/default/keymap.c)2
-rw-r--r--keyboards/m10a/m10a.c (renamed from keyboards/M10A/M10A.c)2
-rw-r--r--keyboards/m10a/m10a.h (renamed from keyboards/M10A/M10A.h)0
-rw-r--r--keyboards/m10a/rules.mk (renamed from keyboards/M10A/rules.mk)0
-rw-r--r--keyboards/miuni32/config.h1
-rw-r--r--keyboards/miuni32/keymaps/adam-lee/Makefile21
-rw-r--r--keyboards/miuni32/keymaps/adam-lee/config.h8
-rw-r--r--keyboards/miuni32/keymaps/adam-lee/keymap.c119
-rw-r--r--keyboards/miuni32/keymaps/adam-lee/readme.md1
-rw-r--r--keyboards/miuni32/keymaps/default/keymap.c104
-rw-r--r--keyboards/miuni32/keymaps/ht_156/Makefile21
-rw-r--r--keyboards/miuni32/keymaps/ht_156/config.h8
-rw-r--r--keyboards/miuni32/keymaps/ht_156/keymap.c181
-rw-r--r--keyboards/miuni32/keymaps/ht_156/readme.md1
-rw-r--r--keyboards/miuni32/miuni32.h4
-rw-r--r--keyboards/phantom/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/planck/keymaps/ab/keymap.c4
-rw-r--r--keyboards/planck/keymaps/dbroqua/keymap.c4
-rw-r--r--keyboards/planck/keymaps/default/keymap.c8
-rw-r--r--keyboards/planck/keymaps/dshields/Makefile12
-rw-r--r--keyboards/planck/keymaps/dshields/config.h31
-rw-r--r--keyboards/planck/keymaps/dshields/keyboard-layout.jpgbin0 -> 50615 bytes
-rw-r--r--keyboards/planck/keymaps/dshields/keymap.c100
-rw-r--r--keyboards/planck/keymaps/dshields/readme.md12
-rw-r--r--keyboards/planck/keymaps/espynn/keymap.c4
-rw-r--r--keyboards/planck/keymaps/experimental/keymap.c8
-rw-r--r--keyboards/planck/keymaps/impossible/keymap.c8
-rw-r--r--keyboards/planck/keymaps/jeebak/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jeebak/readme.md2
-rw-r--r--keyboards/planck/keymaps/jhenahan/keymap.c6
-rw-r--r--keyboards/planck/keymaps/khord/keymap.c8
-rw-r--r--keyboards/planck/keymaps/pete/keymap.c8
-rw-r--r--keyboards/planck/keymaps/premek/keymap.c8
-rw-r--r--keyboards/planck/keymaps/pvc/keymap.c4
-rw-r--r--keyboards/planck/keymaps/sgoodwin/keymap.c6
-rw-r--r--keyboards/planck/keymaps/smt/keymap.c8
-rw-r--r--keyboards/planck/keymaps/thermal_printer/keymap.c8
-rw-r--r--keyboards/planck/keymaps/unicode/keymap.c8
-rw-r--r--keyboards/planck/keymaps/vifon/keymap.c3
-rw-r--r--keyboards/planck/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/planck/keymaps/zach/zach_common_functions.c6
-rw-r--r--keyboards/preonic/keymaps/0xdec/keymap.c6
-rw-r--r--keyboards/preonic/keymaps/CMD-Preonic/keymap.c14
-rw-r--r--keyboards/preonic/keymaps/default/keymap.c8
-rw-r--r--keyboards/preonic/keymaps/jacwib/keymap.c6
-rw-r--r--keyboards/preonic/keymaps/kinesis/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/nikchi/Makefile3
-rw-r--r--keyboards/preonic/keymaps/nikchi/config.h29
-rw-r--r--keyboards/preonic/keymaps/nikchi/keymap.c221
-rw-r--r--keyboards/preonic/keymaps/nikchi/readme.md1
-rw-r--r--keyboards/preonic/keymaps/smt/keymap.c8
-rw-r--r--keyboards/preonic/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/preonic/keymaps/zach/zach_common_functions.c6
-rw-r--r--keyboards/ps2avrGB/keymaps/default/keymap.c16
-rw-r--r--keyboards/ps2avrGB/ps2avrGB.h18
-rw-r--r--keyboards/roadkit/keymaps/default/keymap.c4
-rw-r--r--keyboards/roadkit/keymaps/singles/keymap.c6
-rw-r--r--keyboards/s60-x/s60-x.c1
-rw-r--r--keyboards/s60-x/s60-x_precompiled.zipbin276106 -> 0 bytes
-rw-r--r--keyboards/s60_x/Makefile (renamed from keyboards/s60-x/Makefile)0
-rw-r--r--keyboards/s60_x/config.h (renamed from keyboards/s60-x/config.h)13
-rw-r--r--keyboards/s60_x/default/Makefile3
-rw-r--r--keyboards/s60_x/default/config.h (renamed from keyboards/s60-x/default/config.h)0
-rw-r--r--keyboards/s60_x/default/default.c (renamed from keyboards/s60-x/default/default.c)0
-rw-r--r--keyboards/s60_x/default/default.h (renamed from keyboards/s60-x/default/default.h)0
-rw-r--r--keyboards/s60_x/default/rules.mk (renamed from keyboards/s60-x/default/rules.mk)0
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/Makefile (renamed from keyboards/s60-x/keymaps/ansi_qwertz/Makefile)0
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/config.h (renamed from keyboards/s60-x/keymaps/ansi_qwertz/config.h)0
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png)bin54748 -> 54748 bytes
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg)0
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg)0
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.png (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png)bin54041 -> 54041 bytes
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.svg (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg)0
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/base_layer.PNG (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG)bin29411 -> 29411 bytes
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/function_layer.PNG (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG)bin25567 -> 25567 bytes
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/docs/gaming_layer.PNG (renamed from keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG)bin17895 -> 17895 bytes
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/keymap.c (renamed from keyboards/s60-x/keymaps/ansi_qwertz/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/ansi_qwertz/readme.md (renamed from keyboards/s60-x/keymaps/ansi_qwertz/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/custom/keymap.c (renamed from keyboards/s60-x/keymaps/custom/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/custom/readme.md (renamed from keyboards/s60-x/keymaps/custom/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/dbroqua/keymap.c (renamed from keyboards/s60-x/keymaps/dbroqua/keymap.c)25
-rw-r--r--keyboards/s60_x/keymaps/default/keymap.c (renamed from keyboards/s60-x/keymaps/default/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/default/readme.md (renamed from keyboards/s60-x/keymaps/default/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/hasu/keymap.c (renamed from keyboards/s60-x/keymaps/hasu/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/hasu/readme.md (renamed from keyboards/s60-x/keymaps/hasu/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/hhkb/keymap.c (renamed from keyboards/s60-x/keymaps/hhkb/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/hhkb/readme.md (renamed from keyboards/s60-x/keymaps/hhkb/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/iso/keymap.c (renamed from keyboards/s60-x/keymaps/iso/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/iso/readme.md (renamed from keyboards/s60-x/keymaps/iso/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/jpec/keymap.c (renamed from keyboards/s60-x/keymaps/jpec/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/jpec/readme.md (renamed from keyboards/s60-x/keymaps/jpec/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/plain/keymap.c (renamed from keyboards/s60-x/keymaps/plain/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/plain/readme.md (renamed from keyboards/s60-x/keymaps/plain/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/poker/keymap.c (renamed from keyboards/s60-x/keymaps/poker/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/poker/readme.md (renamed from keyboards/s60-x/keymaps/poker/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/poker_bit/keymap.c (renamed from keyboards/s60-x/keymaps/poker_bit/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/poker_bit/readme.md (renamed from keyboards/s60-x/keymaps/poker_bit/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/poker_set/keymap.c (renamed from keyboards/s60-x/keymaps/poker_set/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/poker_set/readme.md (renamed from keyboards/s60-x/keymaps/poker_set/readme.md)0
-rw-r--r--keyboards/s60_x/keymaps/spacefn/keymap.c (renamed from keyboards/s60-x/keymaps/spacefn/keymap.c)2
-rw-r--r--keyboards/s60_x/keymaps/spacefn/readme.md (renamed from keyboards/s60-x/keymaps/spacefn/readme.md)0
-rw-r--r--keyboards/s60_x/readme.md (renamed from keyboards/s60-x/readme.md)5
-rw-r--r--keyboards/s60_x/rgb/Makefile (renamed from keyboards/s60-x/rgb/Makefile)0
-rw-r--r--keyboards/s60_x/rgb/config.h (renamed from keyboards/s60-x/rgb/config.h)6
-rw-r--r--keyboards/s60_x/rgb/rgb.c (renamed from keyboards/s60-x/rgb/rgb.c)0
-rw-r--r--keyboards/s60_x/rgb/rgb.h (renamed from keyboards/s60-x/rgb/rgb.h)0
-rw-r--r--keyboards/s60_x/rgb/rules.mk (renamed from keyboards/s60-x/rgb/rules.mk)0
-rw-r--r--keyboards/s60_x/rules.mk (renamed from keyboards/s60-x/rules.mk)0
-rw-r--r--keyboards/s60_x/s60_x.c1
-rw-r--r--keyboards/s60_x/s60_x.h (renamed from keyboards/s60-x/s60-x.h)0
-rw-r--r--keyboards/satan/keymaps/colemak/Makefile21
-rw-r--r--keyboards/satan/keymaps/colemak/keymap.c98
-rw-r--r--keyboards/satan/keymaps/colemak/readme.md1
-rw-r--r--keyboards/satan/keymaps/smt/keymap.c8
-rw-r--r--keyboards/subatomic/keymaps/default/keymap.c8
-rw-r--r--keyboards/tiger_lily/Makefile3
-rw-r--r--keyboards/tiger_lily/config.h147
-rw-r--r--keyboards/tiger_lily/keymaps/default/Makefile21
-rw-r--r--keyboards/tiger_lily/keymaps/default/config.h8
-rw-r--r--keyboards/tiger_lily/keymaps/default/keymap.c11
-rw-r--r--keyboards/tiger_lily/keymaps/default/readme.md1
-rw-r--r--keyboards/tiger_lily/matrix.c137
-rw-r--r--keyboards/tiger_lily/readme.md32
-rw-r--r--keyboards/tiger_lily/rules.mk71
-rw-r--r--keyboards/tiger_lily/tiger_lily.c63
-rw-r--r--keyboards/tiger_lily/tiger_lily.h50
-rw-r--r--keyboards/tv44/keymaps/default/keymap.c8
-rw-r--r--keyboards/tv44/keymaps/jeebak/keymap.c2
-rw-r--r--keyboards/tv44/keymaps/jeebak/readme.md2
-rw-r--r--keyboards/tv44/keymaps/smt/keymap.c8
-rw-r--r--keyboards/tv44/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/vision_division/keymaps/default/keymap.c4
-rw-r--r--keyboards/xd60/readme.md2
-rw-r--r--quantum/dynamic_macro.h82
-rw-r--r--quantum/process_keycode/process_unicodemap.c2
-rw-r--r--readme.md32
-rw-r--r--tmk_core/avr.mk42
-rw-r--r--tmk_core/chibios.mk4
-rw-r--r--tmk_core/common/action.c53
-rw-r--r--tmk_core/common/keyboard.c58
-rw-r--r--tmk_core/common/keyboard.h1
-rw-r--r--tmk_core/protocol/ps2_mouse.c29
-rw-r--r--util/ergodox_ez.html1
-rw-r--r--util/travis_compiled_push.sh13
208 files changed, 3750 insertions, 529 deletions
diff --git a/Dockerfile b/Dockerfile
index 744ded857..88da06f02 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,8 +1,7 @@
1FROM debian:jessie 1FROM debian:jessie
2MAINTAINER Erik Dasque <erik@frenchguys.com> 2MAINTAINER Erik Dasque <erik@frenchguys.com>
3 3
4RUN apt-get update 4RUN apt-get update && apt-get install --no-install-recommends -y build-essential \
5RUN apt-get install --no-install-recommends -y build-essential \
6 gcc \ 5 gcc \
7 unzip \ 6 unzip \
8 wget \ 7 wget \
@@ -15,10 +14,8 @@ RUN apt-get install --no-install-recommends -y build-essential \
15 gcc-arm-none-eabi \ 14 gcc-arm-none-eabi \
16 binutils-arm-none-eabi \ 15 binutils-arm-none-eabi \
17 libnewlib-arm-none-eabi \ 16 libnewlib-arm-none-eabi \
18 git 17 git \
19 18 && rm -rf /var/lib/apt/lists/*
20RUN apt-get clean
21RUN rm -rf /var/lib/apt/lists/*
22 19
23ENV keyboard=ergodox 20ENV keyboard=ergodox
24ENV subproject=ez 21ENV subproject=ez
diff --git a/keyboards/amj60/amj60.h b/keyboards/amj60/amj60.h
index a0cb47331..c508e479c 100644
--- a/keyboards/amj60/amj60.h
+++ b/keyboards/amj60/amj60.h
@@ -147,6 +147,21 @@
147 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ 147 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
148} 148}
149 149
150#define KEYMAP_MAX( \
151 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\
152 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
153 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
154 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \
155 k40, k41, k42, k45, k4a, k4b, k4c, k4d \
156) \
157{ \
158 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
159 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
160 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \
161 {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
162 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \
163}
164
150void matrix_init_user(void); 165void matrix_init_user(void);
151void matrix_scan_user(void); 166void matrix_scan_user(void);
152 167
diff --git a/keyboards/amj60/keymaps/maximized/keymap.c b/keyboards/amj60/keymaps/maximized/keymap.c
new file mode 100644
index 000000000..d2a4be59f
--- /dev/null
+++ b/keyboards/amj60/keymaps/maximized/keymap.c
@@ -0,0 +1,61 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3
4#include "amj60.h"
5
6// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name.
8// Layer names don't all need to be of the same length, obviously, and you can also skip them
9// entirely and just use numbers.
10#define _DEF 0
11#define _SPC 1
12
13// dual-role shortcuts
14#define SPACEDUAL LT(_SPC, KC_SPACE)
15
16
17// increase readability
18#define _______ KC_TRNS
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 /* Keymap _DEF: Default Layer
22 * ,-----------------------------------------------------------.
23 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ |
24 * |-----------------------------------------------------------|
25 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc|
26 * |-----------------------------------------------------------|
27 * |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return |
28 * |-----------------------------------------------------------|
29 * |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2|
30 * |-----------------------------------------------------------|
31 * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl|
32 * `-----------------------------------------------------------'
33 */
34 [_DEF] = KEYMAP_MAX(
35 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
36 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
37 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
38 KC_LSFT, F(0), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, F(1), \
39 KC_LCTL, KC_LALT, KC_LGUI, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)),
40
41 /* Keymap 1: F-and-vim Layer, modified with Space (by holding space)
42 * ,-----------------------------------------------------------.
43 * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
44 * |-----------------------------------------------------------|
45 * | |Paus| Up| [ | ] | | | | ( | ) | | | | Del |
46 * |-----------------------------------------------------------|
47 * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY |
48 * |-----------------------------------------------------------|
49 * | | | | | < | > | |M0 | | | | | Vol+ | |
50 * |-----------------------------------------------------------|
51 * | | | | |Alt |Prev|Vol-|Next|
52 * `-----------------------------------------------------------'
53 */
54 [_SPC] = KEYMAP_MAX(
55 KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
56 _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
57 _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \
58 _______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \
59 _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
60
61};
diff --git a/keyboards/atomic/keymaps/pvc/keymap.c b/keyboards/atomic/keymaps/pvc/keymap.c
index d10bfe3bf..c324078dd 100644
--- a/keyboards/atomic/keymaps/pvc/keymap.c
+++ b/keyboards/atomic/keymaps/pvc/keymap.c
@@ -255,7 +255,7 @@ float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
255 255
256#endif /* AUDIO_ENABLE */ 256#endif /* AUDIO_ENABLE */
257 257
258void persistant_default_layer_set(uint16_t default_layer) 258void persistent_default_layer_set(uint16_t default_layer)
259{ 259{
260 eeconfig_update_default_layer(default_layer); 260 eeconfig_update_default_layer(default_layer);
261 default_layer_set(default_layer); 261 default_layer_set(default_layer);
@@ -366,7 +366,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
366 case MACRO_QWERTY: 366 case MACRO_QWERTY:
367 if (record->event.pressed) 367 if (record->event.pressed)
368 { 368 {
369 persistant_default_layer_set(1UL<<LAYER_QWERTY); 369 persistent_default_layer_set(1UL<<LAYER_QWERTY);
370 } 370 }
371 break; 371 break;
372 372
diff --git a/keyboards/atreus/keymaps/xyverz/keymap.c b/keyboards/atreus/keymaps/xyverz/keymap.c
index ed943eb66..347445ef6 100644
--- a/keyboards/atreus/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus/keymaps/xyverz/keymap.c
@@ -168,7 +168,7 @@ const uint16_t PROGMEM fn_actions[] = {
168 168
169}; 169};
170 170
171void persistant_default_layer_set(uint16_t default_layer) { 171void persistent_default_layer_set(uint16_t default_layer) {
172 eeconfig_update_default_layer(default_layer); 172 eeconfig_update_default_layer(default_layer);
173 default_layer_set(default_layer); 173 default_layer_set(default_layer);
174} 174}
@@ -177,25 +177,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177 switch (keycode) { 177 switch (keycode) {
178 case QWERTY: 178 case QWERTY:
179 if (record->event.pressed) { 179 if (record->event.pressed) {
180 persistant_default_layer_set(1UL<<_QWERTY); 180 persistent_default_layer_set(1UL<<_QWERTY);
181 } 181 }
182 return false; 182 return false;
183 break; 183 break;
184 case COLEMAK: 184 case COLEMAK:
185 if (record->event.pressed) { 185 if (record->event.pressed) {
186 persistant_default_layer_set(1UL<<_COLEMAK); 186 persistent_default_layer_set(1UL<<_COLEMAK);
187 } 187 }
188 return false; 188 return false;
189 break; 189 break;
190 case DVORAK: 190 case DVORAK:
191 if (record->event.pressed) { 191 if (record->event.pressed) {
192 persistant_default_layer_set(1UL<<_DVORAK); 192 persistent_default_layer_set(1UL<<_DVORAK);
193 } 193 }
194 return false; 194 return false;
195 break; 195 break;
196 case DVORMAC: 196 case DVORMAC:
197 if (record->event.pressed) { 197 if (record->event.pressed) {
198 persistant_default_layer_set(1UL<<_DVORMAC); 198 persistent_default_layer_set(1UL<<_DVORMAC);
199 } 199 }
200 return false; 200 return false;
201 break; 201 break;
diff --git a/keyboards/atreus62/keymaps/xyverz/keymap.c b/keyboards/atreus62/keymaps/xyverz/keymap.c
index 7b7c69f57..67e66584a 100644
--- a/keyboards/atreus62/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus62/keymaps/xyverz/keymap.c
@@ -119,7 +119,7 @@ const uint16_t PROGMEM fn_actions[] = {
119 119
120}; 120};
121 121
122void persistant_default_layer_set(uint16_t default_layer) { 122void persistent_default_layer_set(uint16_t default_layer) {
123 eeconfig_update_default_layer(default_layer); 123 eeconfig_update_default_layer(default_layer);
124 default_layer_set(default_layer); 124 default_layer_set(default_layer);
125} 125}
@@ -128,25 +128,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
128 switch (keycode) { 128 switch (keycode) {
129 case QWERTY: 129 case QWERTY:
130 if (record->event.pressed) { 130 if (record->event.pressed) {
131 persistant_default_layer_set(1UL<<_QWERTY); 131 persistent_default_layer_set(1UL<<_QWERTY);
132 } 132 }
133 return false; 133 return false;
134 break; 134 break;
135 case COLEMAK: 135 case COLEMAK:
136 if (record->event.pressed) { 136 if (record->event.pressed) {
137 persistant_default_layer_set(1UL<<_COLEMAK); 137 persistent_default_layer_set(1UL<<_COLEMAK);
138 } 138 }
139 return false; 139 return false;
140 break; 140 break;
141 case DVORAK: 141 case DVORAK:
142 if (record->event.pressed) { 142 if (record->event.pressed) {
143 persistant_default_layer_set(1UL<<_DVORAK); 143 persistent_default_layer_set(1UL<<_DVORAK);
144 } 144 }
145 return false; 145 return false;
146 break; 146 break;
147 case WOW: 147 case WOW:
148 if (record->event.pressed) { 148 if (record->event.pressed) {
149 persistant_default_layer_set(1UL<<_WOW); 149 persistent_default_layer_set(1UL<<_WOW);
150 } 150 }
151 return false; 151 return false;
152 break; 152 break;
diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
index 7ea02d27e..e72733092 100644
--- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c
+++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c
@@ -50,35 +50,28 @@ const uint16_t PROGMEM fn_actions[] = {
50 50
51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { 51void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
52 static uint8_t mods_pressed; 52 static uint8_t mods_pressed;
53 static bool mod_flag;
54 53
55 switch (id) { 54 switch (id) {
56 case 0: 55 case 0:
57 /* Handle the combined Grave/Esc key 56 /* Handle the combined Grave/Esc key
58 */ 57 */
59 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
60
61 if (record->event.pressed) { 58 if (record->event.pressed) {
62 /* The key is being pressed. 59 /* The key is being pressed.
63 */ 60 */
61 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
64 if (mods_pressed) { 62 if (mods_pressed) {
65 mod_flag = true; 63 register_code(KC_GRV);
66 add_key(KC_GRV);
67 send_keyboard_report();
68 } else { 64 } else {
69 add_key(KC_ESC); 65 register_code(KC_ESC);
70 send_keyboard_report();
71 } 66 }
72 } else { 67 } else {
73 /* The key is being released. 68 /* The key is being released.
74 */ 69 */
75 if (mod_flag) { 70 if (mods_pressed) {
76 mod_flag = false; 71 mods_pressed = false;
77 del_key(KC_GRV); 72 unregister_code(KC_GRV);
78 send_keyboard_report();
79 } else { 73 } else {
80 del_key(KC_ESC); 74 unregister_code(KC_ESC);
81 send_keyboard_report();
82 } 75 }
83 } 76 }
84 break; 77 break;
diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c
index fdec37a54..83ae1d615 100644
--- a/keyboards/clueboard/keymaps/shift_fn/keymap.c
+++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25 /* Keymap _FL: Function Layer 25 /* Keymap _FL: Function Layer
26 */ 26 */
27[_FL] = KEYMAP( 27[_FL] = KEYMAP(
28 S(KC_GRV), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_GRV), KC_DEL, BL_STEP, \ 28 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_GRV), KC_DEL, BL_STEP, \
29 S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), \ 29 S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), \
30 S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), \ 30 S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), \
31 MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, \ 31 MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, \
diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c
index df7757a92..47dee8e6d 100644
--- a/keyboards/clueboard/keymaps/skully/keymap.c
+++ b/keyboards/clueboard/keymaps/skully/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25 /* Keymap _FL: Function Layer 25 /* Keymap _FL: Function Layer
26 */ 26 */
27[_FL] = KEYMAP( 27[_FL] = KEYMAP(
28 S(KC_GRV), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_GRV), KC_DEL, BL_STEP, \ 28 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_GRV), KC_DEL, BL_STEP, \
29 S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), \ 29 S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), \
30 S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), \ 30 S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), \
31 MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, \ 31 MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, \
diff --git a/keyboards/clueboard/keymaps/smt/keymap.c b/keyboards/clueboard/keymaps/smt/keymap.c
new file mode 100644
index 000000000..f097afaa8
--- /dev/null
+++ b/keyboards/clueboard/keymaps/smt/keymap.c
@@ -0,0 +1,181 @@
1#include "clueboard.h"
2
3// Each layer gets a name for readability, which is then used in the keymap matrix below.
4// The underscores don't mean anything - you can have a layer called STUFF or any other name.
5// Layer names don't all need to be of the same length, obviously, and you can also skip them
6// entirely and just use numbers.
7#define _QWERTY 0
8#define _COLEMAK 1
9#define _DVORAK 2
10#define _FL 3
11#define _CL 4
12
13enum planck_keycodes {
14 QWERTY = SAFE_RANGE,
15 COLEMAK,
16 DVORAK
17};
18
19// Helpful defines
20#define _______ KC_TRNS
21#define XXXXXXX KC_NO
22#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
23
24// Custom macros
25#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
26#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
27#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
28
29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31 /* Keymap _QWERTY: Base Layer (Default Layer)
32 * ,-----------------------------------------------------------. ,---.
33 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| |PgU|
34 * |-----------------------------------------------------------| |---|
35 * |HpTab| Q| W| E| R| T| Y| U| I| O| P| [| ]| BS| |PgD|
36 * |-----------------------------------------------------------| `---'
37 * |CtlEsc| A| S| D| F| G| H| J| K| L| ;| '| | Ent|
38 * |--------------------------------------------------------------.
39 * |Shift| | Z| X| C| V| B| N| M| ,| .| /|Shift| Fn| Up|
40 * |------------------------------------------------------------------.
41 * |Ctrl|Gui|Alt | | Space| Space| |Alt |Gui |Ctrl|Left|Down|Rgt|
42 * `------------------------------------------------------------------'
43 */
44[_QWERTY] = KEYMAP(
45 F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, \
46 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, \
47 CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, \
48 KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, MO(_FL), KC_UP, \
49 KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC,KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
50
51 /* Keymap _COLEMAK: Base Layer
52 * ,-----------------------------------------------------------. ,---.
53 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| |PgU|
54 * |-----------------------------------------------------------| |---|
55 * |HpTab| Q| W| F| P| G| J| L| U| Y| ;| [| ]| BS| |PgD|
56 * |-----------------------------------------------------------| `---'
57 * |CtlEsc| A| R| S| T| D| H| N| E| I| O| '| | Ent|
58 * |--------------------------------------------------------------.
59 * |Shift| | Z| X| C| V| B| K| M| ,| .| /|Shift| Fn| Up|
60 * |------------------------------------------------------------------.
61 * |Ctrl|Gui|Alt | | Space| Space| |Alt |Gui |Ctrl|Left|Down|Rgt|
62 * `------------------------------------------------------------------'
63 */
64[_COLEMAK] = KEYMAP(
65 F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP, \
66 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN, \
67 CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, XXXXXXX, KC_ENT, \
68 KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, MO(_FL), KC_UP, \
69 KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC,KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
70
71 /* Keymap _DVORAK: Base Layer
72 * ,-----------------------------------------------------------. ,---.
73 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| [| ]| \| `| |PgU|
74 * |-----------------------------------------------------------| |---|
75 * |HpTab| '| ,| .| P| Y| F| G| C| R| L| /| =| BS| |PgD|
76 * |-----------------------------------------------------------| `---'
77 * |CtlEsc| A| O| E| U| I| D| H| T| N| S| -| | Ent|
78 * |--------------------------------------------------------------.
79 * |Shift| | ;| Q| J| K| X| B| M| W| V| Z|Shift| Fn| Up|
80 * |------------------------------------------------------------------.
81 * |Ctrl|Gui|Alt | | Space| Space| |Alt |Gui |Ctrl|Left|Down|Rgt|
82 * `------------------------------------------------------------------'
83 */
84[_DVORAK] = KEYMAP(
85 F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, KC_PGUP, \
86 HPR_TAB, KC_QUOT, KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC, KC_PGDN, \
87 CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, XXXXXXX, KC_ENT, \
88 KC_LSFT, XXXXXXX, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, MO(_FL), KC_UP, \
89 KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC,KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
90
91 /* Keymap _FL: Function Layer
92 */
93[_FL] = KEYMAP(
94 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP, \
95 _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, KC_DEL, _______, \
96 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
97 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), KC_PGUP, \
98 _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END),
99
100 /* Keymap _CL: Control layer
101 */
102[_CL] = KEYMAP(
103 _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
104 _______, _______, _______,_______,RESET, _______,_______,QWERTY, COLEMAK,DVORAK, _______, _______, _______, _______, RGB_VAD, \
105 _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
106 MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
107 _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
108};
109
110/* This is a list of user defined functions. F(N) corresponds to item N
111 of this list.
112 */
113const uint16_t PROGMEM fn_actions[] = {
114 [0] = ACTION_FUNCTION(0), // Calls action_function()
115};
116
117void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
118 static uint8_t mods_pressed;
119 static bool mod_flag;
120
121 switch (id) {
122 case 0:
123 /* Handle the combined Grave/Esc key
124 */
125 mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
126
127 if (record->event.pressed) {
128 /* The key is being pressed.
129 */
130 if (mods_pressed) {
131 mod_flag = true;
132 add_key(KC_GRV);
133 send_keyboard_report();
134 } else {
135 add_key(KC_ESC);
136 send_keyboard_report();
137 }
138 } else {
139 /* The key is being released.
140 */
141 if (mod_flag) {
142 mod_flag = false;
143 del_key(KC_GRV);
144 send_keyboard_report();
145 } else {
146 del_key(KC_ESC);
147 send_keyboard_report();
148 }
149 }
150 break;
151 }
152}
153
154void persistent_default_layer_set(uint16_t default_layer) {
155 eeconfig_update_default_layer(default_layer);
156 default_layer_set(default_layer);
157}
158
159bool process_record_user(uint16_t keycode, keyrecord_t *record) {
160 switch (keycode) {
161 case QWERTY:
162 if (record->event.pressed) {
163 persistent_default_layer_set(1UL<<_QWERTY);
164 }
165 return false;
166 break;
167 case COLEMAK:
168 if (record->event.pressed) {
169 persistent_default_layer_set(1UL<<_COLEMAK);
170 }
171 return false;
172 break;
173 case DVORAK:
174 if (record->event.pressed) {
175 persistent_default_layer_set(1UL<<_DVORAK);
176 }
177 return false;
178 break;
179 }
180 return true;
181} \ No newline at end of file
diff --git a/keyboards/clueboard/keymaps/smt/layout.png b/keyboards/clueboard/keymaps/smt/layout.png
new file mode 100644
index 000000000..6c27277a9
--- /dev/null
+++ b/keyboards/clueboard/keymaps/smt/layout.png
Binary files differ
diff --git a/keyboards/clueboard/keymaps/smt/readme.md b/keyboards/clueboard/keymaps/smt/readme.md
new file mode 100644
index 000000000..6a8b3edb4
--- /dev/null
+++ b/keyboards/clueboard/keymaps/smt/readme.md
@@ -0,0 +1,30 @@
1```
2 ___ _____ _ _ _ __ __ _ __
3|__ \ / ____| | | | | | / / / /(_) / /
4 ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
5 |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
6 |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
7 (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
8```
9
10# smt Clueboard Layout (HHKB variant)
11
12![Clueboard Layout Image](layout.png)
13
14This is smt's HHKB variant layout, based on the default layout that comes
15flashed on every Clueboard. The primary differences from the default are:
16
17- The Backspace key is moved down into the traditional `\` position
18- `\` and `` ` `` are assigned to the "split-backspace" positions
19- The right Shift is split to allow for a Fn key to its right
20- The modifiers on the right side now mirror the left side (`Alt`/`Super`/`Ctrl`)
21
22For the most part, it's a straightforward and easy to follow layout. There
23are a few special keys:
24
25- The Esc key sends `Esc` when tapped, `` ` `` when `Alt`/`Super`/`Ctrl`/`Fn` is held, or `~` when `Shift` is held
26- The Tab key sends `Tab` when tapped, or `Super+Ctrl+Alt+Shift` (a.k.a. [Hyper]) when held
27- The key traditionally in the Caps-Lock position has been re-mapped to send `Esc` when tapped, or `Ctrl` when held
28- The left Shift key sends `Enter` when tapped, or `Shift` when held
29
30[Hyper]: http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
diff --git a/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c b/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c
index 592f7654b..47a5181dd 100644
--- a/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c
+++ b/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c
@@ -256,7 +256,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
256 */ 256 */
257}; 257};
258 258
259void persistant_default_layer_set(uint16_t default_layer) { 259void persistent_default_layer_set(uint16_t default_layer) {
260 eeconfig_update_default_layer(default_layer); 260 eeconfig_update_default_layer(default_layer);
261 default_layer_set(default_layer); 261 default_layer_set(default_layer);
262} 262}
@@ -266,25 +266,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
266 /* layout switcher */ 266 /* layout switcher */
267 case LAY_QWE: 267 case LAY_QWE:
268 if (record->event.pressed) { 268 if (record->event.pressed) {
269 persistant_default_layer_set(1UL<<QWE); 269 persistent_default_layer_set(1UL<<QWE);
270 } 270 }
271 return false; 271 return false;
272 break; 272 break;
273 case LAY_COL: 273 case LAY_COL:
274 if (record->event.pressed) { 274 if (record->event.pressed) {
275 persistant_default_layer_set(1UL<<COL); 275 persistent_default_layer_set(1UL<<COL);
276 } 276 }
277 return false; 277 return false;
278 break; 278 break;
279 case LAY_WOR: 279 case LAY_WOR:
280 if (record->event.pressed) { 280 if (record->event.pressed) {
281 persistant_default_layer_set(1UL<<WOR); 281 persistent_default_layer_set(1UL<<WOR);
282 } 282 }
283 return false; 283 return false;
284 break; 284 break;
285 case LAY_DVO: 285 case LAY_DVO:
286 if (record->event.pressed) { 286 if (record->event.pressed) {
287 persistant_default_layer_set(1UL<<DVO); 287 persistent_default_layer_set(1UL<<DVO);
288 } 288 }
289 return false; 289 return false;
290 break; 290 break;
diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h
index 994a8c643..e870835d8 100644
--- a/keyboards/ergodox/config.h
+++ b/keyboards/ergodox/config.h
@@ -3,8 +3,8 @@
3 3
4#define MOUSEKEY_INTERVAL 20 4#define MOUSEKEY_INTERVAL 20
5#define MOUSEKEY_DELAY 0 5#define MOUSEKEY_DELAY 0
6#define MOUSEKEY_TIME_TO_MAX 5 6#define MOUSEKEY_TIME_TO_MAX 40
7#define MOUSEKEY_MAX_SPEED 2 7#define MOUSEKEY_MAX_SPEED 7
8#define MOUSEKEY_WHEEL_DELAY 0 8#define MOUSEKEY_WHEEL_DELAY 0
9 9
10#define TAPPING_TOGGLE 1 10#define TAPPING_TOGGLE 1
diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h
index a3347de45..aa17c3e8d 100644
--- a/keyboards/ergodox/ez/config.h
+++ b/keyboards/ergodox/ez/config.h
@@ -58,7 +58,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
58#define RGBW 1 58#define RGBW 1
59 59
60/* Set 0 if debouncing isn't needed */ 60/* Set 0 if debouncing isn't needed */
61#define DEBOUNCE 5 61#define DEBOUNCE 15
62 62
63#define USB_MAX_POWER_CONSUMPTION 500 63#define USB_MAX_POWER_CONSUMPTION 500
64 64
diff --git a/keyboards/ergodox/ez/matrix.c b/keyboards/ergodox/ez/matrix.c
index 43f515259..21b60a542 100644
--- a/keyboards/ergodox/ez/matrix.c
+++ b/keyboards/ergodox/ez/matrix.c
@@ -53,11 +53,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
53#ifndef DEBOUNCE 53#ifndef DEBOUNCE
54# define DEBOUNCE 5 54# define DEBOUNCE 5
55#endif 55#endif
56static uint8_t debouncing = DEBOUNCE;
57 56
58/* matrix state(1:on, 0:off) */ 57/* matrix state(1:on, 0:off) */
59static matrix_row_t matrix[MATRIX_ROWS]; 58static matrix_row_t matrix[MATRIX_ROWS];
60static matrix_row_t matrix_debouncing[MATRIX_ROWS]; 59
60// Debouncing: store for each key the number of scans until it's eligible to
61// change. When scanning the matrix, ignore any changes in keys that have
62// already changed in the last DEBOUNCE scans.
63static uint8_t debounce_matrix[MATRIX_ROWS * MATRIX_COLS];
61 64
62static matrix_row_t read_cols(uint8_t row); 65static matrix_row_t read_cols(uint8_t row);
63static void init_cols(void); 66static void init_cols(void);
@@ -113,7 +116,9 @@ void matrix_init(void)
113 // initialize matrix state: all keys off 116 // initialize matrix state: all keys off
114 for (uint8_t i=0; i < MATRIX_ROWS; i++) { 117 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
115 matrix[i] = 0; 118 matrix[i] = 0;
116 matrix_debouncing[i] = 0; 119 for (uint8_t j=0; j < MATRIX_COLS; ++j) {
120 debounce_matrix[i * MATRIX_COLS + j] = 0;
121 }
117 } 122 }
118 123
119#ifdef DEBUG_MATRIX_SCAN_RATE 124#ifdef DEBUG_MATRIX_SCAN_RATE
@@ -134,14 +139,36 @@ void matrix_power_up(void) {
134 // initialize matrix state: all keys off 139 // initialize matrix state: all keys off
135 for (uint8_t i=0; i < MATRIX_ROWS; i++) { 140 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
136 matrix[i] = 0; 141 matrix[i] = 0;
137 matrix_debouncing[i] = 0;
138 } 142 }
139 143
140#ifdef DEBUG_MATRIX_SCAN_RATE 144#ifdef DEBUG_MATRIX_SCAN_RATE
141 matrix_timer = timer_read32(); 145 matrix_timer = timer_read32();
142 matrix_scan_count = 0; 146 matrix_scan_count = 0;
143#endif 147#endif
148}
149
150// Returns a matrix_row_t whose bits are set if the corresponding key should be
151// eligible to change in this scan.
152matrix_row_t debounce_mask(uint8_t row) {
153 matrix_row_t result = 0;
154 for (uint8_t j=0; j < MATRIX_COLS; ++j) {
155 if (debounce_matrix[row * MATRIX_COLS + j]) {
156 --debounce_matrix[row * MATRIX_COLS + j];
157 } else {
158 result |= (1 << j);
159 }
160 }
161 return result;
162}
144 163
164// Report changed keys in the given row. Resets the debounce countdowns
165// corresponding to each set bit in 'change' to DEBOUNCE.
166void debounce_report(matrix_row_t change, uint8_t row) {
167 for (uint8_t i = 0; i < MATRIX_COLS; ++i) {
168 if (change & (1 << i)) {
169 debounce_matrix[row * MATRIX_COLS + i] = DEBOUNCE;
170 }
171 }
145} 172}
146 173
147uint8_t matrix_scan(void) 174uint8_t matrix_scan(void)
@@ -178,26 +205,12 @@ uint8_t matrix_scan(void)
178 for (uint8_t i = 0; i < MATRIX_ROWS; i++) { 205 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
179 select_row(i); 206 select_row(i);
180 wait_us(30); // without this wait read unstable value. 207 wait_us(30); // without this wait read unstable value.
181 matrix_row_t cols = read_cols(i); 208 matrix_row_t mask = debounce_mask(i);
182 if (matrix_debouncing[i] != cols) { 209 matrix_row_t cols = (read_cols(i) & mask) | (matrix[i] & ~mask);
183 matrix_debouncing[i] = cols; 210 debounce_report(cols ^ matrix[i], i);
184 if (debouncing) { 211 matrix[i] = cols;
185 debug("bounce!: "); debug_hex(debouncing); debug("\n");
186 }
187 debouncing = DEBOUNCE;
188 }
189 unselect_rows();
190 }
191 212
192 if (debouncing) { 213 unselect_rows();
193 if (--debouncing) {
194 wait_us(1);
195 // this should be wait_ms(1) but has been left as-is at EZ's request
196 } else {
197 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
198 matrix[i] = matrix_debouncing[i];
199 }
200 }
201 } 214 }
202 215
203 matrix_scan_quantum(); 216 matrix_scan_quantum();
@@ -205,9 +218,8 @@ uint8_t matrix_scan(void)
205 return 1; 218 return 1;
206} 219}
207 220
208bool matrix_is_modified(void) 221bool matrix_is_modified(void) // deprecated and evidently not called.
209{ 222{
210 if (debouncing) return false;
211 return true; 223 return true;
212} 224}
213 225
diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c
index aaf75d58f..2d6f76856 100644
--- a/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c
+++ b/keyboards/ergodox/keymaps/coderkun_neo2/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
22 * ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤ 22 * ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
23 * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │ 23 * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
24 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ 24 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
25 * │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ Alt │ CTL │ 25 * │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ ALT │ CTL │
26 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ 26 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
27 * │ ← │ ↑ │ │ ↓ │ → │ 27 * │ ← │ ↑ │ │ ↓ │ → │
28 * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐ 28 * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46 KC_END, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_SS, 46 KC_END, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_SS,
47 NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R, 47 NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R,
48 TG(PMN), NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT, 48 TG(PMN), NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT,
49 NEO_L2_R,KC_RGUI,MO(FMU),KC_RALT,KC_RCTL, 49 NEO_L2_R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
50 KC_DOWN, KC_RGHT, 50 KC_DOWN, KC_RGHT,
51 KC_MINS, 51 KC_MINS,
52 MEH_T(KC_NO),KC_ENT,KC_SPC 52 MEH_T(KC_NO),KC_ENT,KC_SPC
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ 63 * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
64 * │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │ 64 * │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
65 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ 65 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
66 * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │ 66 * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ ALT │ CTL │
67 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ 67 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
68 * │ ← │ ↑ │ │ ↓ │ → │ 68 * │ ← │ ↑ │ │ ↓ │ → │
69 * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐ 69 * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
87 KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y, 87 KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y,
88 DE_U, DE_MINS,DE_Z, DE_E, DE_X, NEO_L1_R, 88 DE_U, DE_MINS,DE_Z, DE_E, DE_X, NEO_L1_R,
89 KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT, 89 KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT,
90 MO(NHL),KC_RGUI,MO(FMU),KC_RALT,KC_RCTL, 90 MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
91 KC_DOWN, KC_RGHT, 91 KC_DOWN, KC_RGHT,
92 KC_MINS, 92 KC_MINS,
93 MEH_T(KC_NO),KC_ENT,KC_SPC 93 MEH_T(KC_NO),KC_ENT,KC_SPC
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
104 * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ 104 * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
105 * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │ 105 * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
106 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ 106 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
107 * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │ 107 * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ ALT │ CTL │
108 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ 108 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
109 * │ ← │ ↑ │ │ ↓ │ → │ 109 * │ ← │ ↑ │ │ ↓ │ → │
110 * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐ 110 * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
@@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
127 KC_END, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS, 127 KC_END, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS,
128 DE_S, DE_N, DE_R, DE_T, DE_D, KC_NO, 128 DE_S, DE_N, DE_R, DE_T, DE_D, KC_NO,
129 KC_TRNS, DE_B, DE_M, KC_COMM,KC_DOT, DE_J, KC_RSFT, 129 KC_TRNS, DE_B, DE_M, KC_COMM,KC_DOT, DE_J, KC_RSFT,
130 MO(NHL),KC_RGUI,MO(FMU),KC_RALT,KC_RCTL, 130 MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
131 KC_DOWN, KC_RGHT, 131 KC_DOWN, KC_RGHT,
132 KC_MINS, 132 KC_MINS,
133 MEH_T(KC_NO),KC_ENT,KC_SPC 133 MEH_T(KC_NO),KC_ENT,KC_SPC
@@ -135,13 +135,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
135 135
136/* Layer 3: F-keys, Mouse and Unicode 136/* Layer 3: F-keys, Mouse and Unicode
137 * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐ 137 * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
138 * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 138 * │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
139 * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤ 139 * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
140 * │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ │ F9 │ F10 │ F11 │ F12 │ │ 140 * │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ ↔ │ ← │ → │ ↑ │ ↓ │ │
141 * ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤ 141 * ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
142 * │ │ ├ │ ┼ │ ┤ │ ✓ │ ✕ ├─────┤ ├─────┤ │ F5 │ F6 │ F7 │ F8 │ │ 142 * │ │ ├ │ ┼ │ ┤ │ 〈 │ 〉 ├─────┤ ├─────┤ │ ✓ │ ✕ │ • │ ∶ │ │
143 * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤ 143 * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
144 * │ │ └ │ ┴ │ ┘ │ ↔ │ ⇔ │ │ │ │ │ F1 │ F2 │ F3 │ F4 │ │ 144 * │ │ └ │ ┴ │ ┘ │ │ │ │ │ │ ⇔ │ ⇐ │ ⇒ │ ⇑ │ ⇓ │ │
145 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘ 145 * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
146 * │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │ 146 * │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
147 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘ 147 * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
@@ -154,23 +154,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
154 */ 154 */
155[FMU] = KEYMAP( 155[FMU] = KEYMAP(
156 // left hand 156 // left hand
157 KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 157 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
158 KC_TRNS, UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS, 158 KC_TRNS, UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS,
159 KC_TRNS, UC(0x251C),UC(0x253C),UC(0x2524),UC(0x2713),UC(0x2715), 159 KC_TRNS, UC(0x251C),UC(0x253C),UC(0x2524),UC(0x3008),UC(0x3009),
160 KC_TRNS, UC(0x2514),UC(0x2534),UC(0x2518),UC(0x2194),UC(0x21D4),KC_TRNS, 160 KC_TRNS, UC(0x2514),UC(0x2534),UC(0x2518),KC_TRNS, KC_TRNS, KC_TRNS,
161 KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 161 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
162 KC_MS_L, KC_MS_U, 162 KC_MS_L, KC_MS_U,
163 KC_BTN1, 163 KC_BTN1,
164 KC_TRNS,KC_TRNS, KC_TRNS, 164 KC_TRNS, KC_TRNS, KC_TRNS,
165 // right hand 165 // right hand
166 KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 166 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
167 KC_TRNS, KC_TRNS,KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, 167 KC_TRNS, UC(0x2194),UC(0x2190),UC(0x2192),UC(0x2191),UC(0x2193),KC_TRNS,
168 KC_TRNS,KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, 168 KC_TRNS, UC(0x2713),UC(0x2715),UC(0x2022),UC(0x2236),KC_TRNS,
169 KC_TRNS, KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, 169 KC_TRNS, UC(0x21D4),UC(0x21D0),UC(0x21D2),UC(0x21D1),UC(0x21D3),KC_TRNS,
170 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, 170 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
171 KC_MS_D, KC_MS_R, 171 KC_MS_D, KC_MS_R,
172 KC_BTN2, 172 KC_BTN2,
173 KC_TRNS, KC_TRNS,KC_TRNS 173 KC_TRNS, KC_TRNS, KC_TRNS
174 ), 174 ),
175 175
176/* Layer 4: Neo’s software layer 4 rebuilt in Hardware 176/* Layer 4: Neo’s software layer 4 rebuilt in Hardware
@@ -294,11 +294,10 @@ void unicode_input_start (void) {
294// Override method to use NEO_A instead of KC_A 294// Override method to use NEO_A instead of KC_A
295uint16_t hex_to_keycode(uint8_t hex) 295uint16_t hex_to_keycode(uint8_t hex)
296{ 296{
297 if (hex == 0x0) { 297 if(hex == 0x0) {
298 return KC_0; 298 return KC_0;
299 } else if (hex < 0xA) { 299 }
300 return KC_1 + (hex - 0x1); 300 else if(hex >= 0xA) {
301 } else {
302 switch(hex) { 301 switch(hex) {
303 case 0xA: 302 case 0xA:
304 return NEO_A; 303 return NEO_A;
@@ -316,4 +315,6 @@ uint16_t hex_to_keycode(uint8_t hex)
316 return KC_NO; 315 return KC_NO;
317 } 316 }
318 } 317 }
318
319 return KC_1 + (hex - 0x1);
319} 320}
diff --git a/keyboards/ergodox/keymaps/coderkun_neo2/readme.md b/keyboards/ergodox/keymaps/coderkun_neo2/readme.md
index 2a4d3a535..0c9290bf0 100644
--- a/keyboards/ergodox/keymaps/coderkun_neo2/readme.md
+++ b/keyboards/ergodox/keymaps/coderkun_neo2/readme.md
@@ -4,10 +4,18 @@ The idea of this layout is to use it for [Neo2](http://www.neo-layout.org) but a
4 4
5The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course). 5The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course).
6 6
7It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and (hopefully in the near future) some useful Unicode symbols. 7It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and some useful Unicode symbols.
8 8
9 9
10## Layers 10## Build
11
12 ```
13 make clean
14 make coderkun_neo2
15 ```
16
17
18## Keymap
11 19
120. Default layer for Neo2 200. Default layer for Neo2
131. Poor man’s QWERTZ 211. Poor man’s QWERTZ
@@ -16,16 +24,106 @@ It also features a layer for additional keys like F-keys (F1 – F12), some mous
164. Neo’s software layers 4 rebuilt in hardware 244. Neo’s software layers 4 rebuilt in hardware
17 25
18 26
19## Build 27### Layer 0: Default layer for Neo2
20 28
211. Enable Unicode in Makefile 29 ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
30 │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
31 ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
32 │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
33 ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
34 │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
35 ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
36 │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
37 └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
38 │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ Alt │ CTL │
39 └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
40 │ ← │ ↑ │ │ ↓ │ → │
41 ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
42 │ │ │ ─ │ │ ─ │ │ │
43 │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
44 │ │ │ HYP │ │ MEH │ │ │
45 └─────┴─────┴─────┘ └─────┴─────┴─────┘
22 46
23 ```
24 UNICODE_ENABLE = yes
25 ```
262. Build as usual
27 47
28 ``` 48### Layer 1: Poor man’s QWERTZ
29 make clean 49
30 make KEYMAP=coderkun_neo2 50 ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
31 ``` 51 │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
52 ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
53 │ C │ P │ T │ F │ K │ L │ HOM │ │ END │ B │ A │ S │ G │ V │ Y │
54 ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
55 │ Mod3 │ D │ H │ Ö │ O │ I ├─────┤ ├─────┤ U │ - │ Z │ E │ X │ Mod3 │
56 ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
57 │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
58 └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
59 │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
60 └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
61 │ ← │ ↑ │ │ ↓ │ → │
62 ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
63 │ │ │ ─ │ │ ─ │ │ │
64 │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
65 │ │ │ HYP │ │ MEH │ │ │
66 └─────┴─────┴─────┘ └─────┴─────┴─────┘
67
68
69### Layer 2: Poor man’s Neo
70
71 ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
72 │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
73 ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
74 │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
75 ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
76 │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
77 ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
78 │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
79 └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
80 │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
81 └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
82 │ ← │ ↑ │ │ ↓ │ → │
83 ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
84 │ │ │ ─ │ │ ─ │ │ │
85 │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
86 │ │ │ HYP │ │ MEH │ │ │
87 └─────┴─────┴─────┘ └─────┴─────┴─────┘
88
89
90### Layer 3: F-keys, mouse keys und Unicode symbols
91
92 ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
93 │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
94 ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
95 │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ ↔ │ ← │ → │ ↑ │ ↓ │ │
96 ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
97 │ │ ├ │ ┼ │ ┤ │ 〈 │ 〉 ├─────┤ ├─────┤ │ ✓ │ ✕ │ • │ ∶ │ │
98 ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
99 │ │ └ │ ┴ │ ┘ │ │ │ │ │ │ ⇔ │ ⇐ │ ⇒ │ ⇑ │ ⇓ │ │
100 └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
101 │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
102 └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
103 │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
104 ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
105 │ │ │ MLC │ │ MRC │ │ │
106 │ │ ├─────┤ ├─────┤ │ │
107 │ │ │ │ │ │ │ │
108 └─────┴─────┴─────┘ └─────┴─────┴─────┘
109
110
111### Layer 4: Neo’s software layers 4 rebuilt in hardware
112
113 ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
114 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
115 ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
116 │ │ PgUp│ BSpc│ ↑ │ Del │ PgDn│ │ │ │ │ 7 │ 8 │ 9 │ + │ − │
117 ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
118 │ │ Home│ ← │ ↓ │ → │ End ├─────┤ ├─────┤ │ 4 │ 5 │ 6 │ , │ . │
119 ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
120 │ │ Esc │ Tab │ Ins │ Ret │ Undo│ │ │ │ │ 1 │ 2 │ 3 │ │ │
121 └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
122 │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
123 └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
124 │ │ │ │ │ │
125 ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
126 │ │ │ │ │ │ │ │
127 │ │ ├─────┤ ├─────┤ │ │
128 │ │ │ │ │ │ │ │
129 └─────┴─────┴─────┘ └─────┴─────┴─────┘
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c
new file mode 100644
index 000000000..8d65f7c7a
--- /dev/null
+++ b/keyboards/ergodox/keymaps/dvorak_programmer_swe/keymap.c
@@ -0,0 +1,331 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "version.h"
5#include "keymap_nordic.h"
6#include "keymap_norwegian.h"
7
8#define BASE 0 // default layer
9#define SYMB 1 // symbols
10#define MDIA 2 // mouse keys
11#define DEVL 3 // dev keys
12
13#define MACRO_PUBLIC 10
14#define MACRO_PRIVATE 11
15#define MACRO_PROT 12
16
17#define MACRO_SHARED 13
18#define MACRO_CONST 14
19#define MACRO_DIM 15
20#define MACRO_STRING 16
21#define MACRO_INT 17
22#define MACRO_DEC 18
23#define MACRO_BOOL 19
24
25#define MACRO_RETURN 20
26#define MACRO_NOTHING 21
27#define MACRO_TODO 22
28
29#define MACRO_SAVE 24
30#define MACRO_BUILD 25
31#define MACRO_DEBUG 26
32
33
34
35const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36/* Keymap 0: Basic layer
37 *
38 * ,--------------------------------------------------. ,--------------------------------------------------.
39 * | L3 | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | \ |
40 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
41 * | Del | - | , | . | P | Y | LT1 | | LT1 | F | G | C | R | L | Å |
42 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
43 * | WIN | A | O | E | U | I |------| |------| D | H | T | N | S | Ä |
44 * |--------+------+------+------+------+------| LT2 | | LT2 |------+------+------+------+------+--------|
45 * | LShift | Ö | Q | J | K | X | | | | B | M | W | V |Z/Ctrl| RShift |
46 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
47 * | CTRL | L1 |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
48 * `----------------------------------' `----------------------------------'
49 * ,-------------. ,-------------.
50 * | App | LGui | | Alt |Ctrl/Esc|
51 * ,------|------|------| |------+--------+------.
52 * | | | Home | | PgUp | | |
53 * | Space|Backsp|------| |------| Tab |Enter |
54 * | |ace | End | | PgDn | | |
55 * `--------------------' `----------------------'
56 */
57// If it accepts an argument (i.e, is a function), it doesn't need KC_.
58// Otherwise, it needs KC_*
59[BASE] = KEYMAP( // layer 0 : default
60 // left hand
61 MO(DEVL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
62 KC_DELT, NO_MINS, KC_COMM, KC_DOT, KC_P, KC_Y, TG(SYMB),
63 KC_LGUI, KC_A, KC_O, KC_E, KC_U, KC_I,
64 KC_LSFT, CTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(MDIA),
65 CTL_T(KC_NO), MO(SYMB), LALT(KC_LSFT), KC_LEFT,KC_RGHT,
66 ALT_T(KC_APP), KC_LGUI,
67 KC_HOME,
68 KC_SPC,KC_BSPC,KC_END,
69 // right hand
70 KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLASH,
71 TG(1), KC_F, KC_G, KC_C, KC_R, KC_L, NO_AM,
72 KC_D, KC_H, KC_T, KC_N, KC_S, NO_AE,
73 TG(MDIA),KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSFT,
74 KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
75 KC_LALT, CTL_T(KC_ESC),
76 KC_PGUP,
77 KC_PGDN,KC_TAB, KC_ENT
78 ),
79/* Keymap 1: Symbol Layer
80 *
81 * ,--------------------------------------------------. ,--------------------------------------------------.
82 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
83 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
84 * | | @ | { | } | [ | ] | | | | < | 7 | 8 | 9 | * | F12 |
85 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
86 * | | # | ( | ) | \ | / |------| |------| > | 4 | 5 | 6 | + | |
87 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
88 * | | | UND | CUT | COP | PAS | | | | ? | 1 | 2 | 3 | % | |
89 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
90 * | | | | | | | . | 0 | = | | |
91 * `----------------------------------' `----------------------------------'
92 * ,-------------. ,-------------.
93 * | | | | | |
94 * ,------|------|------| |------+------+------.
95 * | | | | | | | |
96 * | | |------| |------| | |
97 * | | | | | | | |
98 * `--------------------' `--------------------'
99 */
100// SYMBOLS
101[SYMB] = KEYMAP(
102 // left hand
103 M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
104 KC_TRNS, NO_AT, ALGR(KC_7), ALGR(KC_0), NO_LBRC, NO_RBRC, KC_TRNS,
105 KC_TRNS, KC_HASH, NO_LPRN, NO_RPRN, ALGR(KC_MINS), NO_SLSH,
106 KC_TRNS, KC_TRNS, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_TRNS,
107 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
108 KC_TRNS,KC_TRNS,
109 KC_TRNS,
110 KC_TRNS,KC_TRNS,KC_TRNS,
111 // right hand
112 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
113 KC_TRNS, NO_LESS, KC_7, KC_8, KC_9, KC_KP_ASTERISK, KC_F12,
114 LSFT(NO_LESS), KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS,
115 KC_TRNS, NO_QUES, KC_1, KC_2, KC_3, LSFT(KC_5), KC_TRNS,
116 KC_DOT,KC_0, LSFT(KC_0), KC_TRNS, KC_TRNS,
117 KC_TRNS, KC_TRNS,
118 KC_TRNS,
119 KC_TRNS, KC_TRNS, KC_TRNS
120),
121/* Keymap 2: Media and mouse keys
122 *
123 * ,--------------------------------------------------. ,--------------------------------------------------.
124 * | | | | | | | | | | | | | | | |
125 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
126 * | | | | MsUp | | | | | | | | | | | |
127 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
128 * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | |
129 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
130 * | | | | | | | | | | | | | | | |
131 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
132 * | | | | Lclk | Rclk | | | | | | |
133 * `----------------------------------' `----------------------------------'
134 * ,-------------. ,-------------.
135 * | | | | | |
136 * ,------|------|------| |------+------+------.
137 * | | | | | | | |
138 * | | |------| |------| | |
139 * | | | | | | | |
140 * `--------------------' `--------------------'
141 */
142// MEDIA AND MOUSE
143[MDIA] = KEYMAP(
144 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
145 KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
146 KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
147 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
148 KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
149 KC_TRNS, KC_TRNS,
150 KC_TRNS,
151 KC_TRNS, KC_TRNS, KC_TRNS,
152 // right hand
153 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
154 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
155 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
156 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
157 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
158 KC_TRNS, KC_TRNS,
159 KC_TRNS,
160 KC_TRNS, KC_TRNS, KC_TRNS
161),
162/* Keymap 3: Developer keys in vb.net
163 * shortened in layout beneth, for example int-> integer
164 *
165 * ,--------------------------------------------------. ,--------------------------------------------------.
166 * | | | | | | | | | | | | | | | |
167 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
168 * | | Save |Build |Debug | | | | | | bool | int |string| dec | Todo | |
169 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
170 * | | | | | | |------| |------| priv | publ |shared| prot | | |
171 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
172 * | | | | | | | | | | const| dim |return|nothin| | |
173 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
174 * | | | | | | | | | | | |
175 * `----------------------------------' `----------------------------------'
176 * ,-------------. ,-------------.
177 * | | | | | |
178 * ,------|------|------| |------+------+------.
179 * | | | | | | | |
180 * | | |------| |------| | |
181 * | | | | | | | |
182 * `--------------------' `--------------------'
183 */
184// MEDIA AND MOUSE
185[DEVL] = KEYMAP(
186 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
187 KC_TRNS, M(MACRO_SAVE), M(MACRO_BUILD), M(MACRO_DEBUG), KC_TRNS, KC_TRNS, KC_TRNS,
188 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
189 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
190 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
191 KC_TRNS, KC_TRNS,
192 KC_TRNS,
193 KC_TRNS, KC_TRNS, KC_TRNS,
194 // right hand
195 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
196 KC_TRNS, M(MACRO_BOOL), M(MACRO_INT), M(MACRO_STRING), M(MACRO_DEC), M(MACRO_TODO), KC_TRNS,
197 M(MACRO_PRIVATE), M(MACRO_PUBLIC), M(MACRO_SHARED), M(MACRO_PROT), KC_TRNS, KC_TRNS,
198 KC_TRNS, M(MACRO_CONST), M(MACRO_DIM), M(MACRO_RETURN), M(MACRO_NOTHING), KC_TRNS, KC_TRNS,
199 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
200 KC_TRNS, KC_TRNS,
201 KC_TRNS,
202 KC_TRNS, KC_TRNS, KC_TRNS
203),
204};
205
206const uint16_t PROGMEM fn_actions[] = {
207 [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
208};
209
210const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
211{
212 // MACRODOWN only works in this function
213 switch(id) {
214 case 0:
215 if (record->event.pressed) {
216 register_code(KC_RSFT);
217 } else {
218 unregister_code(KC_RSFT);
219 }
220 break;
221 case MACRO_PUBLIC:
222 if (record->event.pressed) {
223 return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
224 }
225 break;
226 case MACRO_PRIVATE:
227 if (record->event.pressed) {
228 return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
229 }
230 break;
231 case MACRO_PROT:
232 if (record->event.pressed) {
233 return MACRO( T(P), T(R), T(O), T(T), T(E), T(C), T(T), T(E), T(D), T(SPACE),END);
234 }
235 break;
236 case MACRO_SHARED:
237 if (record->event.pressed) {
238 return MACRO( T(S), T(H), T(A), T(R), T(E), T(D), T(SPACE), END);
239 }
240 break;
241 case MACRO_CONST:
242 if (record->event.pressed) {
243 return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
244 }
245 break;
246 case MACRO_DIM:
247 if (record->event.pressed) {
248 return MACRO( T(D), T(I), T(M), T(SPACE), END);
249 }
250 break;
251 case MACRO_STRING:
252 if (record->event.pressed) {
253 return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
254 }
255 break;
256 case MACRO_BOOL:
257 if (record->event.pressed) {
258 return MACRO( T(B), T(O), T(O), T(L), T(E), T(A), T(N), T(SPACE), END);
259 }
260 break;
261 case MACRO_INT:
262 if (record->event.pressed) {
263 return MACRO( T(I), T(N), T(T), T(SPACE), END);
264 }
265 break;
266 case MACRO_DEC:
267 if (record->event.pressed) {
268 return MACRO( T(D), T(E), T(C), T(I), T(M), T(A), T(L), T(SPACE), END);
269 }
270 break;
271 case MACRO_RETURN:
272 if (record->event.pressed) {
273 return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), T(SPACE), END);
274 }
275 break;
276 case MACRO_NOTHING:
277 if (record->event.pressed) {
278 return MACRO( T(N), T(O), T(T), T(H), T(I), T(N), T(G), T(SPACE), END);
279 }
280 case MACRO_TODO:
281 if (record->event.pressed) {
282 return MACRO( KC_BSLASH, D(LSHIFT) ,T(T), T(O), T(D), T(O), KC_DOT, U(LSHIFT), T(SPACE),END);
283 }
284 break;
285 case MACRO_SAVE:
286 if (record->event.pressed) {
287 return MACRO( D(LCTL) ,T(S), U(LCTL),END);
288 }
289 break;
290 case MACRO_BUILD:
291 if (record->event.pressed) {
292 return MACRO( D(LCTL), D(LSHIFT) ,T(B), U(LSHIFT), U(LCTL),END);
293 }
294 break;
295 case MACRO_DEBUG:
296 if (record->event.pressed) {
297 return MACRO( KC_F5 ,END);
298 }
299 break;
300 }
301 return MACRO_NONE;
302};
303
304// Runs just one time when the keyboard initializes.
305void matrix_init_user(void) {
306
307};
308
309// Runs constantly in the background, in a loop.
310void matrix_scan_user(void) {
311
312 uint8_t layer = biton32(layer_state);
313
314 ergodox_board_led_off();
315 ergodox_right_led_1_off();
316 ergodox_right_led_2_off();
317 ergodox_right_led_3_off();
318 switch (layer) {
319 // TODO: Make this relevant to the ErgoDox EZ.
320 case 1:
321 ergodox_right_led_1_on();
322 break;
323 case 2:
324 ergodox_right_led_2_on();
325 break;
326 default:
327 // none
328 break;
329 }
330
331};
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md b/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md
new file mode 100644
index 000000000..552fa0e3a
--- /dev/null
+++ b/keyboards/ergodox/keymaps/dvorak_programmer_swe/readme.md
@@ -0,0 +1,28 @@
1# ErgoDox EZ Dvorak Programmer SWEDISH
2
3Dvorak layout adjusted for a suitable programmer layout and swedish special characters added:
4
5* åäö characters added
6* Layout for common vb.net keywords
7* Common Visual Studio commands like Save, Build, Debug
8
9TODO:
10
11* (Layer 4 is qwerty (for easier gaming & less fortunate keyboard users)) Like this idea, will add it later on
12
13Known issues:
14
15* Keymap 2 modifier has not gotten its place yet..
16* Print screen, where?
17
18
19## Changelog
20
21* 2017-05-16
22 * Initial release
23
24# Author
25Christian Westerlund
26cwesterlund @ github
27
28Thanks to the author of keymap csharp_dev for inspiration! \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/xyverz/keymap.c b/keyboards/ergodox/keymaps/xyverz/keymap.c
index ec909ec53..b186c70ba 100644
--- a/keyboards/ergodox/keymaps/xyverz/keymap.c
+++ b/keyboards/ergodox/keymaps/xyverz/keymap.c
@@ -254,7 +254,7 @@ const uint16_t PROGMEM fn_actions[] = {
254 254
255}; 255};
256 256
257void persistant_default_layer_set(uint16_t default_layer) { 257void persistent_default_layer_set(uint16_t default_layer) {
258 eeconfig_update_default_layer(default_layer); 258 eeconfig_update_default_layer(default_layer);
259 default_layer_set(default_layer); 259 default_layer_set(default_layer);
260} 260}
@@ -265,17 +265,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
265 switch(id) { 265 switch(id) {
266 case _DV: 266 case _DV:
267 if (record->event.pressed) { 267 if (record->event.pressed) {
268 persistant_default_layer_set(1UL<<_DV); 268 persistent_default_layer_set(1UL<<_DV);
269 } 269 }
270 break; 270 break;
271 case _QW: 271 case _QW:
272 if (record->event.pressed) { 272 if (record->event.pressed) {
273 persistant_default_layer_set(1UL<<_QW); 273 persistent_default_layer_set(1UL<<_QW);
274 } 274 }
275 break; 275 break;
276 case _CM: 276 case _CM:
277 if (record->event.pressed) { 277 if (record->event.pressed) {
278 persistant_default_layer_set(1UL<<_CM); 278 persistent_default_layer_set(1UL<<_CM);
279 } 279 }
280 break; 280 break;
281 } 281 }
diff --git a/keyboards/frosty_flake/keymaps/nikchi/Makefile b/keyboards/frosty_flake/keymaps/nikchi/Makefile
new file mode 100644
index 000000000..ad86e82d2
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/nikchi/Makefile
@@ -0,0 +1,23 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = no # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15UNICODEMAP_ENABLE = yes # unicodemap
16BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
17RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
18SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
19TAP_DANCE_ENABLE = yes
20
21ifndef QUANTUM_DIR
22 include ../../../../Makefile
23endif
diff --git a/keyboards/frosty_flake/keymaps/nikchi/config.h b/keyboards/frosty_flake/keymaps/nikchi/config.h
new file mode 100644
index 000000000..e91d082c8
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/nikchi/config.h
@@ -0,0 +1,24 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#define TAPPING_TERM 300
7#define LEADER_TIMEOUT 400
8
9#define DISABLE_SPACE_CADET_ROLLOVER
10
11#define UNICODE_TYPE_DELAY 0
12
13#define LSPO_KEY KC_9
14#define RSPC_KEY KC_0
15
16#define MOUSEKEY_INTERVAL 20
17#define MOUSEKEY_DELAY 0
18#define MOUSEKEY_TIME_TO_MAX 60
19#define MOUSEKEY_MAX_SPEED 7
20#define MOUSEKEY_WHEEL_DELAY 0
21// place overrides here
22
23#endif
24
diff --git a/keyboards/frosty_flake/keymaps/nikchi/keymap.c b/keyboards/frosty_flake/keymaps/nikchi/keymap.c
new file mode 100644
index 000000000..c9e220721
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/nikchi/keymap.c
@@ -0,0 +1,224 @@
1#include "frosty_flake.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4#include "process_unicode.h"
5#include "process_unicodemap.h"
6#include "quantum.h"
7
8#define _______ KC_TRNS
9
10
11//declarations for tap dancing emojis
12void register_hex32(uint32_t hex);
13void cycleEmojis(qk_tap_dance_state_t *state, void *user_data);
14void cycleAnimals(qk_tap_dance_state_t *state, void *user_data);
15void cycleHands(qk_tap_dance_state_t *state, void *user_data);
16
17void tap(uint16_t keycode){
18 register_code(keycode);
19 unregister_code(keycode);
20};
21
22//Tap Dance Declarations
23enum taps{
24 TD_CTCPS = 0,
25 EMOJIS,
26 ANIMAL,
27 HAND
28};
29
30enum unicode_name { // split every five emojis
31 THINK = 1, // thinking face 🤔
32 GRIN, // grinning face 😊
33 SMRK, // smirk 😏
34 WEARY, // good shit 😩
35 UNAMU, // unamused 😒
36
37 SNEK, // snke 🐍
38 PENGUIN, // 🐧
39 DRAGON, // 🐉
40 MONKEY, // 🐒
41 CHICK, // 🐥
42
43 OKOK, // 👌
44 EFFU, // 🖕
45 INUP, // 👆
46 THUP, // 👍
47 THDN, // 👎
48
49 BBB, // dat B 🅱
50 POO, // poop 💩
51 HUNDR, // 100 💯
52 EGGPL, // EGGPLANT 🍆
53 WATER, // wet 💦
54
55 LIT // fire 🔥
56
57};
58
59enum my_macros {
60 NEWDESK = 0,
61 LEFTDESK,
62 RIGHTDESK,
63 CLOSEDESK
64};
65enum quick {
66 DISFACE = 0,
67 TFLIP,
68 TPUT,
69 SHRUG,
70 FACE,
71 RANDIG
72};
73
74// Tap Dance Definitions
75qk_tap_dance_action_t tap_dance_actions[] = {
76 // Tap once for CTRL, twice for Caps Lock
77 [TD_CTCPS] = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, KC_CAPS),
78 [EMOJIS] = ACTION_TAP_DANCE_FN_ADVANCED(cycleEmojis, NULL, NULL),
79 [ANIMAL] = ACTION_TAP_DANCE_FN_ADVANCED(cycleAnimals, NULL, NULL),
80 [HAND] = ACTION_TAP_DANCE_FN_ADVANCED(cycleHands, NULL, NULL)
81// Other declarations would go here, separated by commas, if you have them
82};
83
84// macros
85const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
86 switch(id) {
87 case NEWDESK: // this would trigger when you hit a key mapped as M(0)
88 if (record->event.pressed) {
89 return MACRO( I(1), D(LGUI), D(LCTL), D(D), U(LGUI), U(LCTL), U(D), END ); // NEW DESKTOP
90 }
91 break;
92 case LEFTDESK: // this would trigger when you hit a key mapped as M(0)
93 if (record->event.pressed) {
94 return MACRO( I(1), D(LGUI), D(LCTL), D(LEFT), U(LGUI), U(LCTL), U(LEFT), END ); // LEFT DESKTOP
95 }
96 break;
97 case RIGHTDESK: // this would trigger when you hit a key mapped as M(0)
98 if (record->event.pressed) {
99 return MACRO( I(1), D(LGUI), D(LCTL), D(RGHT), U(LGUI), U(LCTL), U(RGHT), END ); // RIGHT DESKTOP
100 }
101 break;
102 case CLOSEDESK: // this would trigger when you hit a key mapped as M(0)
103 if (record->event.pressed) {
104 return MACRO( I(1), D(LGUI), D(LCTL), D(F4), U(LGUI), U(LCTL), U(F4), END ); // CLOSE DESKTOP
105 }
106 break;
107 }
108 return MACRO_NONE;
109};
110
111// emojis in unicode
112const uint32_t PROGMEM unicode_map[] = {
113 [THINK] = 0x1F914,
114 [GRIN] = 0x1F600,
115 [BBB] = 0x1F171,
116 [POO] = 0x1F4A9,
117 [HUNDR] = 0x1F4AF,
118 [SMRK] = 0x1F60F,
119 [WEARY] = 0x1F629,
120 [EGGPL] = 0x1F346,
121 [WATER] = 0x1F4A6,
122 [LIT] = 0x1F525,
123 [UNAMU] = 0x1F612,
124 [SNEK] = 0x1F40D,
125 [PENGUIN] = 0x1F427,
126 [MONKEY] = 0x1F412,
127 [CHICK] = 0x1F425,
128 [DRAGON] = 0x1F409,
129 [OKOK] = 0x1F44C,
130 [EFFU] = 0x1F595,
131 [INUP] = 0x1F446,
132 [THDN] = 0x1F44E,
133 [THUP] = 0x1F44D
134 };
135// Layouts
136const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
137[0] = KEYMAP(\
138 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
139 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
140 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
141 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
142 KC_LSPO,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
143 TD(TD_CTCPS),KC_LGUI,KC_LALT, KC_SPC, KC_LEAD,KC_RGUI, KC_APP,MO(1) , KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT),
144[1] = KEYMAP(\
145 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
146 TD(EMOJIS),TD(ANIMAL),TD(HAND),X(SMRK),X(WEARY),X(UNAMU), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC, KC_MPRV,KC_MPLY,KC_MNXT, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
147 KC_TAB, KC_Q, M(0), KC_E, KC_R,X(EGGPL),X(WATER), KC_U, KC_I, KC_O, KC_P, KC_UP ,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \
148 KC_LCTL, M(1), M(3), M(2), KC_F, X(LIT), X(SNEK), KC_J, KC_K, KC_L,KC_LEFT,KC_RGHT, KC_ENT, KC_P4, KC_P5, KC_P6, \
149 KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, X(HUNDR), X(BBB), X(POO), KC_M,KC_COMM, KC_DOT,KC_DOWN, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \
150 KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, TG(2),_______ , KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT),
151[2] = KEYMAP(\
152 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
153 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_MPRV,KC_MPLY,KC_MNXT, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
154 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_MUTE,KC_VOLD,KC_VOLU, KC_P7, KC_P8, KC_P9,KC_PPLS, \
155 KC_LCTL, KC_D, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
156 KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_MS_U, KC_P1, KC_P2, KC_P3,KC_PENT, \
157 KC_BTN1,KC_BTN3,KC_BTN2, KC_SPC, KC_RALT,KC_RGUI, _______, _______, KC_MS_L,KC_MS_D,KC_MS_R, KC_P0,KC_PDOT),
158};
159
160LEADER_EXTERNS();
161
162void matrix_scan_user(void) {
163 LEADER_DICTIONARY() {
164 leading = false;
165 leader_end();
166
167 SEQ_TWO_KEYS(KC_A, KC_A) { // select all and copy
168 register_code(KC_LCTL);
169 tap(KC_A);
170 tap(KC_C);
171 unregister_code(KC_LCTL);
172 }
173
174 }
175}
176
177void matrix_init_user(void) {
178 _delay_ms(500);
179 set_unicode_input_mode(UC_WINC);
180};
181
182
183void cycleEmojis(qk_tap_dance_state_t *state, void *user_data) {
184 if(state->count == 1) {
185 unicode_input_start();
186 register_hex32(pgm_read_dword(&unicode_map[state->count]));
187 unicode_input_finish();
188 }
189 else if(state->count <= 5) {
190 tap(KC_BSPC);
191 unicode_input_start();
192 register_hex32(pgm_read_dword(&unicode_map[state->count]));
193 unicode_input_finish();
194 }
195};
196
197void cycleAnimals(qk_tap_dance_state_t *state, void *user_data) {
198 if(state->count == 1) {
199 unicode_input_start();
200 register_hex32(pgm_read_dword(&unicode_map[state->count+5]));
201 unicode_input_finish();
202 }
203 else if(state->count <= 5) {
204 tap(KC_BSPC);
205 unicode_input_start();
206 register_hex32(pgm_read_dword(&unicode_map[state->count+5]));
207 unicode_input_finish();
208 }
209};
210
211void cycleHands(qk_tap_dance_state_t *state, void *user_data) {
212 if(state->count == 1) {
213 unicode_input_start();
214 register_hex32(pgm_read_dword(&unicode_map[state->count+10]));
215 unicode_input_finish();
216 }
217 else if(state->count <= 5) {
218 tap(KC_BSPC);
219 unicode_input_start();
220 register_hex32(pgm_read_dword(&unicode_map[state->count+10]));
221 unicode_input_finish();
222 }
223};
224
diff --git a/keyboards/frosty_flake/keymaps/nikchi/readme.md b/keyboards/frosty_flake/keymaps/nikchi/readme.md
new file mode 100644
index 000000000..0b01f9dbf
--- /dev/null
+++ b/keyboards/frosty_flake/keymaps/nikchi/readme.md
@@ -0,0 +1,24 @@
1# The Nikchi's keymap for frosty_flake
2
3### FEATURING
4-SPACE CADET
5-Caps Lock is now LCTRL
6-LCTRL is Tap(LCTRL, Caps Lock)
7
8### LEADER KEY - RALT
9COMBOS
10-a,a => Select All, Copy
11
12
13
14### FN REBINDS for Windows
15```
16 [W] [New Desktop]
17[A][S][D] [Left Desk][Delete Desk][Right Desk]
18
19[Ins][Hom][PUp] [RW][PP][FF]
20[Del][End][PDn] [MU][VD][VU]
21
22Arrows are Mouskeys, left three mods are clicks
23
24``` \ No newline at end of file
diff --git a/keyboards/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk
index dd2f4b6ee..f878533fe 100644
--- a/keyboards/frosty_flake/rules.mk
+++ b/keyboards/frosty_flake/rules.mk
@@ -54,8 +54,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
54BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) 54BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) 55MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) 56EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
57CONSOLE_ENABLE ?= yes # Console for debug(+400) 57CONSOLE_ENABLE ?= no # Console for debug(+400)
58COMMAND_ENABLE ?= yes # Commands for debug and configuration 58COMMAND_ENABLE ?= no # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend 60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/gh60/keymaps/xyverz/keymap.c b/keyboards/gh60/keymaps/xyverz/keymap.c
index e83a7f5a3..6d1d8ab27 100644
--- a/keyboards/gh60/keymaps/xyverz/keymap.c
+++ b/keyboards/gh60/keymaps/xyverz/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM fn_actions[] = {
121 121
122}; 122};
123 123
124void persistant_default_layer_set(uint16_t default_layer) { 124void persistent_default_layer_set(uint16_t default_layer) {
125 eeconfig_update_default_layer(default_layer); 125 eeconfig_update_default_layer(default_layer);
126 default_layer_set(default_layer); 126 default_layer_set(default_layer);
127} 127}
@@ -131,17 +131,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
131 switch(id) { 131 switch(id) {
132 case _DV: 132 case _DV:
133 if (record->event.pressed) { 133 if (record->event.pressed) {
134 persistant_default_layer_set(1UL<<_DV); 134 persistent_default_layer_set(1UL<<_DV);
135 } 135 }
136 break; 136 break;
137 case _QW: 137 case _QW:
138 if (record->event.pressed) { 138 if (record->event.pressed) {
139 persistant_default_layer_set(1UL<<_QW); 139 persistent_default_layer_set(1UL<<_QW);
140 } 140 }
141 break; 141 break;
142 case _CM: 142 case _CM:
143 if (record->event.pressed) { 143 if (record->event.pressed) {
144 persistant_default_layer_set(1UL<<_CM); 144 persistent_default_layer_set(1UL<<_CM);
145 } 145 }
146 break; 146 break;
147 } 147 }
diff --git a/keyboards/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
index 77cf942c3..739fb2685 100644
--- a/keyboards/handwired/atreus50/keymaps/default/keymap.c
+++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c
@@ -147,7 +147,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
147float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 147float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
148#endif 148#endif
149 149
150void persistant_default_layer_set(uint16_t default_layer) { 150void persistent_default_layer_set(uint16_t default_layer) {
151 eeconfig_update_default_layer(default_layer); 151 eeconfig_update_default_layer(default_layer);
152 default_layer_set(default_layer); 152 default_layer_set(default_layer);
153} 153}
@@ -159,7 +159,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
159 #ifdef AUDIO_ENABLE 159 #ifdef AUDIO_ENABLE
160 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 160 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
161 #endif 161 #endif
162 persistant_default_layer_set(1UL<<_QWERTY); 162 persistent_default_layer_set(1UL<<_QWERTY);
163 } 163 }
164 return false; 164 return false;
165 break; 165 break;
@@ -168,7 +168,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
168 #ifdef AUDIO_ENABLE 168 #ifdef AUDIO_ENABLE
169 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 169 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
170 #endif 170 #endif
171 persistant_default_layer_set(1UL<<_COLEMAK); 171 persistent_default_layer_set(1UL<<_COLEMAK);
172 } 172 }
173 return false; 173 return false;
174 break; 174 break;
@@ -177,7 +177,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177 #ifdef AUDIO_ENABLE 177 #ifdef AUDIO_ENABLE
178 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 178 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
179 #endif 179 #endif
180 persistant_default_layer_set(1UL<<_DVORAK); 180 persistent_default_layer_set(1UL<<_DVORAK);
181 } 181 }
182 return false; 182 return false;
183 break; 183 break;
diff --git a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
index c1262a83d..971099747 100644
--- a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
+++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
@@ -186,7 +186,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
186float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 186float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
187#endif 187#endif
188 188
189void persistant_default_layer_set(uint16_t default_layer) { 189void persistent_default_layer_set(uint16_t default_layer) {
190 eeconfig_update_default_layer(default_layer); 190 eeconfig_update_default_layer(default_layer);
191 default_layer_set(default_layer); 191 default_layer_set(default_layer);
192} 192}
@@ -198,7 +198,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
198 #ifdef AUDIO_ENABLE 198 #ifdef AUDIO_ENABLE
199 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 199 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
200 #endif 200 #endif
201 persistant_default_layer_set(1UL<<_QWERTY); 201 persistent_default_layer_set(1UL<<_QWERTY);
202 } 202 }
203 return false; 203 return false;
204 break; 204 break;
@@ -207,7 +207,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
207 #ifdef AUDIO_ENABLE 207 #ifdef AUDIO_ENABLE
208 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 208 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
209 #endif 209 #endif
210 persistant_default_layer_set(1UL<<_COLEMAK); 210 persistent_default_layer_set(1UL<<_COLEMAK);
211 } 211 }
212 return false; 212 return false;
213 break; 213 break;
@@ -216,7 +216,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
216 #ifdef AUDIO_ENABLE 216 #ifdef AUDIO_ENABLE
217 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 217 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
218 #endif 218 #endif
219 persistant_default_layer_set(1UL<<_DVORAK); 219 persistent_default_layer_set(1UL<<_DVORAK);
220 } 220 }
221 return false; 221 return false;
222 break; 222 break;
diff --git a/keyboards/handwired/promethium/color.h b/keyboards/handwired/promethium/color.h
new file mode 100644
index 000000000..077242d5f
--- /dev/null
+++ b/keyboards/handwired/promethium/color.h
@@ -0,0 +1,15 @@
1#define COLOR_BLANK 0, 0, 0
2
3#define COLOR_BLACK 0, 0, 0
4#define COLOR_WHITE 15,15,15
5#define COLOR_GRAY 7, 7, 7
6
7#define COLOR_RED 15, 0, 0
8#define COLOR_GREEN 0,15, 0
9#define COLOR_BLUE 0, 0,15
10
11#define COLOR_YELLOW 15,15, 0
12#define COLOR_MAGENTA 15, 0,15
13#define COLOR_CYAN 0,15,15
14
15#define COLOR_ORANGE 15, 5, 0 \ No newline at end of file
diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h
index a13406b0d..efb9ebdd7 100644
--- a/keyboards/handwired/promethium/config.h
+++ b/keyboards/handwired/promethium/config.h
@@ -153,7 +153,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
153//#define NO_ACTION_MACRO 153//#define NO_ACTION_MACRO
154//#define NO_ACTION_FUNCTION 154//#define NO_ACTION_FUNCTION
155 155
156#define PS2_INIT_DELAY 3000 156#define PS2_MOUSE_INIT_DELAY 2000
157#define BATTERY_PIN 9 157#define BATTERY_PIN 9
158#define BATTERY_POLL 30000 158#define BATTERY_POLL 30000
159#define MAX_VOLTAGE 4.2 159#define MAX_VOLTAGE 4.2
@@ -205,7 +205,7 @@ enum led_sequence {
205 LED_RSFT, 205 LED_RSFT,
206 LED_RCTL, 206 LED_RCTL,
207 207
208 LED_RGUI, 208 LED_RALT,
209 LED_SLSH, 209 LED_SLSH,
210 LED_SCLN, 210 LED_SCLN,
211 LED_P, 211 LED_P,
@@ -213,9 +213,9 @@ enum led_sequence {
213 LED_O, 213 LED_O,
214 LED_L, 214 LED_L,
215 LED_DOT, 215 LED_DOT,
216 LED_RALT, 216 LED_RGUI,
217 217
218 LED_EMOJI, 218 LED_GREEK,
219 LED_COMM, 219 LED_COMM,
220 LED_K, 220 LED_K,
221 LED_I, 221 LED_I,
@@ -234,35 +234,35 @@ enum led_sequence {
234 LED_TRACKPOINT2, 234 LED_TRACKPOINT2,
235 LED_TRACKPOINT1, 235 LED_TRACKPOINT1,
236 236
237 LED_LSPC,
238 LED_B,
239 LED_G,
240 LED_T, 237 LED_T,
238 LED_G,
239 LED_B,
240 LED_LSPC,
241 241
242 LED_R,
243 LED_F,
244 LED_V,
245 LED_NUM, 242 LED_NUM,
243 LED_V,
244 LED_F,
245 LED_R,
246 246
247 LED_PUNC,
248 LED_C,
249 LED_D,
250 LED_E, 247 LED_E,
248 LED_D,
249 LED_C,
250 LED_EMPTY,
251 251
252 LED_W, 252 LED_LGUI,
253 LED_S,
254 LED_X, 253 LED_X,
255 LED_LALT, 254 LED_S,
255 LED_W,
256 256
257 LED_LGUI,
258 LED_Z,
259 LED_A,
260 LED_Q, 257 LED_Q,
258 LED_A,
259 LED_Z,
260 LED_LALT,
261 261
262 LED_TAB,
263 LED_ESC,
264 LED_LSFT,
265 LED_LCTL, 262 LED_LCTL,
263 LED_LSFT,
264 LED_ESC,
265 LED_TAB,
266 266
267 LED_TOTAL 267 LED_TOTAL
268}; 268};
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h
index 3f5dd5817..fa86e2247 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/config.h
+++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h
@@ -14,6 +14,7 @@
14#define PREVENT_STUCK_MODIFIERS 14#define PREVENT_STUCK_MODIFIERS
15 15
16#define RGBSPS_ENABLE 16#define RGBSPS_ENABLE
17#define RGBSPS_DEMO_ENABLE
17 18
18#define UNICODE_TYPE_DELAY 0 19#define UNICODE_TYPE_DELAY 0
19 20
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index efa5d9756..763fa5a27 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -31,6 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
31#include "quantum.h" 31#include "quantum.h"
32#ifdef RGBSPS_ENABLE 32#ifdef RGBSPS_ENABLE
33#include "rgbsps.h" 33#include "rgbsps.h"
34#include "rgbtheme.h"
34#endif 35#endif
35#ifdef PS2_MOUSE_ENABLE 36#ifdef PS2_MOUSE_ENABLE
36#include "ps2_mouse.h" 37#include "ps2_mouse.h"
@@ -42,13 +43,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
42#undef FAUXCLICKY_OFF 43#undef FAUXCLICKY_OFF
43#define FAUXCLICKY_OFF do { \ 44#define FAUXCLICKY_OFF do { \
44 fauxclicky_enabled = false; \ 45 fauxclicky_enabled = false; \
45 rgbsps_set(LED_AUDIO, 0, 0, 0); \ 46 rgbsps_set(LED_AUDIO, COLOR_BLANK); \
46 fauxclicky_stop(); \ 47 fauxclicky_stop(); \
47} while (0) 48} while (0)
48#undef FAUXCLICKY_ON 49#undef FAUXCLICKY_ON
49#define FAUXCLICKY_ON do { \ 50#define FAUXCLICKY_ON do { \
50 fauxclicky_enabled = true; \ 51 fauxclicky_enabled = true; \
51 rgbsps_set(LED_AUDIO, 8, 0, 8); \ 52 rgbsps_set(LED_AUDIO, THEME_COLOR_AUDIO); \
52} while (0) 53} while (0)
53#endif 54#endif
54#endif 55#endif
@@ -144,6 +145,7 @@ enum planck_keycodes {
144#ifndef MODULE_ADAFRUIT_BLE 145#ifndef MODULE_ADAFRUIT_BLE
145 OUT_BT, 146 OUT_BT,
146#endif 147#endif
148 RGBDEMO,
147 KEYCODE_END 149 KEYCODE_END
148}; 150};
149 151
@@ -434,10 +436,10 @@ const uint8_t PROGMEM LED_MODS[] = {
434}; 436};
435 437
436const uint8_t PROGMEM LED_FN[] = { 438const uint8_t PROGMEM LED_FN[] = {
437 LED_PUNC, 439 LED_EMPTY,
438 LED_NUM, 440 LED_NUM,
439 LED_FUN, 441 LED_FUN,
440 LED_EMOJI 442 LED_GREEK
441}; 443};
442 444
443const uint8_t PROGMEM LED_INDICATORS[] = { 445const uint8_t PROGMEM LED_INDICATORS[] = {
@@ -468,16 +470,37 @@ const uint8_t PROGMEM LED_TRACKPOINT[] = {
468 470
469void led_turnoff_keys(void) { 471void led_turnoff_keys(void) {
470 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 472 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
471 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); 473 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), COLOR_BLACK);
472 } 474 }
473 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { 475 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
474 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 0, 0); 476 rgbsps_set(pgm_read_byte(&LED_MODS[i]), COLOR_BLACK);
475 } 477 }
476 for(uint8_t i = 0; i < COUNT(LED_FN); i++) { 478 for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
477 rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 0); 479 rgbsps_set(pgm_read_byte(&LED_FN[i]), COLOR_BLACK);
478 } 480 }
479} 481}
480 482
483#ifdef RGBSPS_DEMO_ENABLE
484void led_demo(void) {
485 rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
486 rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
487 rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
488 rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
489 rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT);
490 rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
491 rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH);
492 rgbsps_set(LED_IND_USB, THEME_COLOR_USB);
493 rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
494 rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI);
495 rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN);
496 rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM);
497 rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC);
498 rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK);
499 rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI);
500 rgbsps_send();
501}
502#endif
503
481void led_reset(void) { 504void led_reset(void) {
482 switch (glow_mode) { 505 switch (glow_mode) {
483 case GLOW_NONE: 506 case GLOW_NONE:
@@ -486,26 +509,26 @@ void led_reset(void) {
486 case GLOW_MIN: 509 case GLOW_MIN:
487 led_turnoff_keys(); 510 led_turnoff_keys();
488 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { 511 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
489 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 8, 8, 8); 512 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW1_HOME);
490 } 513 }
491 rgbsps_set(LED_F, 15, 0, 0); 514 rgbsps_set(LED_F, THEME_COLOR_GLOW1_HOMING);
492 rgbsps_set(LED_J, 15, 0, 0); 515 rgbsps_set(LED_J, THEME_COLOR_GLOW1_HOMING);
493 break; 516 break;
494 case GLOW_FULL: 517 case GLOW_FULL:
495 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 518 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
496 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 8, 8, 8); 519 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), THEME_COLOR_GLOW2_ALPHA);
497 } 520 }
498 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { 521 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
499 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 15, 0); 522 rgbsps_set(pgm_read_byte(&LED_MODS[i]), THEME_COLOR_GLOW2_MODS);
500 } 523 }
501 for(uint8_t i = 0; i < COUNT(LED_FN); i++) { 524 for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
502 rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 15); 525 rgbsps_set(pgm_read_byte(&LED_FN[i]), THEME_COLOR_GLOW2_FN);
503 } 526 }
504 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { 527 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
505 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 15, 0, 0); 528 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW2_HOME);
506 } 529 }
507 rgbsps_set(LED_F, 15, 15, 0); 530 rgbsps_set(LED_F, THEME_COLOR_GLOW2_HOMING);
508 rgbsps_set(LED_J, 15, 15, 0); 531 rgbsps_set(LED_J, THEME_COLOR_GLOW2_HOMING);
509 break; 532 break;
510 } 533 }
511} 534}
@@ -513,11 +536,11 @@ void led_reset(void) {
513void led_set_default_layer_indicator(void) { 536void led_set_default_layer_indicator(void) {
514 uint8_t default_layer = biton32(default_layer_state); 537 uint8_t default_layer = biton32(default_layer_state);
515 if (default_layer == _QWERTY) { 538 if (default_layer == _QWERTY) {
516 rgbsps_set(LED_IND_QWERTY, 15, 10, 0); 539 rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
517 rgbsps_set(LED_IND_ALT, 0, 0, 0); 540 rgbsps_set(LED_IND_ALT, COLOR_BLANK);
518 } else { 541 } else {
519 rgbsps_set(LED_IND_QWERTY, 0, 0, 0); 542 rgbsps_set(LED_IND_QWERTY, COLOR_BLANK);
520 rgbsps_set(LED_IND_ALT, 15, 10, 0); 543 rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT);
521 } 544 }
522 rgbsps_send(); 545 rgbsps_send();
523 return; 546 return;
@@ -528,12 +551,12 @@ void led_set_layer_indicator(void) {
528 551
529 led_reset(); 552 led_reset();
530 553
531 rgbsps_set(LED_IND_GUI, 0, 0, 0); 554 rgbsps_set(LED_IND_GUI, COLOR_BLANK);
532 rgbsps_set(LED_IND_FUN, 0, 0, 0); 555 rgbsps_set(LED_IND_FUN, COLOR_BLANK);
533 rgbsps_set(LED_IND_NUM, 0, 0, 0); 556 rgbsps_set(LED_IND_NUM, COLOR_BLANK);
534 rgbsps_set(LED_IND_PUNC, 0, 0, 0); 557 rgbsps_set(LED_IND_PUNC, COLOR_BLANK);
535 rgbsps_set(LED_IND_GREEK, 0, 0, 0); 558 rgbsps_set(LED_IND_GREEK, COLOR_BLANK);
536 rgbsps_set(LED_IND_EMOJI, 0, 0, 0); 559 rgbsps_set(LED_IND_EMOJI, COLOR_BLANK);
537 560
538 uint8_t layer = biton32(layer_state); 561 uint8_t layer = biton32(layer_state);
539 if (oldlayer == layer) { 562 if (oldlayer == layer) {
@@ -549,71 +572,71 @@ void led_set_layer_indicator(void) {
549 572
550 switch(layer) { 573 switch(layer) {
551 case _GUI: 574 case _GUI:
552 rgbsps_set(LED_IND_GUI, 15, 0, 15); 575 rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI);
553 break; 576 break;
554 case _FUN: 577 case _FUN:
555 rgbsps_set(LED_IND_FUN, 15, 0, 0); 578 rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN);
556 break; 579 break;
557 case _NUM: 580 case _NUM:
558 rgbsps_set(LED_IND_NUM, 0, 0, 15); 581 rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM);
559 break; 582 break;
560 case _PUNC: 583 case _PUNC:
561 rgbsps_set(LED_IND_PUNC, 0, 15, 0); 584 rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC);
562 break; 585 break;
563 case _GREEKL: 586 case _GREEKL:
564 case _GREEKU: 587 case _GREEKU:
565 rgbsps_set(LED_IND_GREEK, 0, 15, 15); 588 rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK);
566 break; 589 break;
567 case _EMOJI: 590 case _EMOJI:
568 rgbsps_set(LED_IND_EMOJI, 15, 15, 0); 591 rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI);
569 break; 592 break;
570 default: 593 default:
571 rgbsps_set(LED_IND_GUI, 3, 3, 3); 594 rgbsps_set(LED_IND_GUI, THEME_COLOR_OTHERLAYER);
572 rgbsps_set(LED_IND_FUN, 3, 3, 3); 595 rgbsps_set(LED_IND_FUN, THEME_COLOR_OTHERLAYER);
573 rgbsps_set(LED_IND_NUM, 3, 3, 3); 596 rgbsps_set(LED_IND_NUM, THEME_COLOR_OTHERLAYER);
574 rgbsps_set(LED_IND_PUNC, 3, 3, 3); 597 rgbsps_set(LED_IND_PUNC, THEME_COLOR_OTHERLAYER);
575 rgbsps_set(LED_IND_GREEK, 3, 3, 3); 598 rgbsps_set(LED_IND_GREEK, THEME_COLOR_OTHERLAYER);
576 rgbsps_set(LED_IND_EMOJI, 3, 3, 3); 599 rgbsps_set(LED_IND_EMOJI, THEME_COLOR_OTHERLAYER);
577 } 600 }
578 601
579 rgbsps_send(); 602 rgbsps_send();
580} 603}
581 604
582void led_set_unicode_input_mode(void) { 605void led_set_unicode_input_mode(void) {
583 rgbsps_set(LED_IND_LINUX, 0, 0, 0); 606 rgbsps_set(LED_IND_LINUX, COLOR_BLANK);
584 rgbsps_set(LED_IND_APPLE, 0, 0, 0); 607 rgbsps_set(LED_IND_APPLE, COLOR_BLANK);
585 rgbsps_set(LED_IND_WINDOWS, 0, 0, 0); 608 rgbsps_set(LED_IND_WINDOWS, COLOR_BLANK);
586 609
587 switch (get_unicode_input_mode()) { 610 switch (get_unicode_input_mode()) {
588 case UC_LNX: 611 case UC_LNX:
589 rgbsps_set(LED_IND_LINUX, 15, 15, 15); 612 rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
590 break; 613 break;
591 case UC_OSX: 614 case UC_OSX:
592 rgbsps_set(LED_IND_APPLE, 15, 15, 15); 615 rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
593 break; 616 break;
594 case UC_WIN: 617 case UC_WIN:
595 case UC_WINC: 618 case UC_WINC:
596 rgbsps_set(LED_IND_WINDOWS, 15, 15, 15); 619 rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
597 break; 620 break;
598 } 621 }
599 rgbsps_send(); 622 rgbsps_send();
600} 623}
601 624
602void led_set_output_ble(void) { 625void led_set_output_ble(void) {
603 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15); 626 rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH);
604 rgbsps_set(LED_IND_USB, 0, 0, 0); 627 rgbsps_set(LED_IND_USB, COLOR_BLANK);
605 rgbsps_send(); 628 rgbsps_send();
606} 629}
607 630
608void led_set_output_usb(void) { 631void led_set_output_usb(void) {
609 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); 632 rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK);
610 rgbsps_set(LED_IND_USB, 15, 15, 15); 633 rgbsps_set(LED_IND_USB, THEME_COLOR_USB);
611 rgbsps_send(); 634 rgbsps_send();
612} 635}
613 636
614void led_set_output_none(void) { 637void led_set_output_none(void) {
615 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); 638 rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK);
616 rgbsps_set(LED_IND_USB, 0, 0, 0); 639 rgbsps_set(LED_IND_USB, COLOR_BLANK);
617 rgbsps_send(); 640 rgbsps_send();
618} 641}
619 642
@@ -622,9 +645,9 @@ void led_init(void) {
622 rgbsps_turnoff(); 645 rgbsps_turnoff();
623 646
624 // set trackpoint color 647 // set trackpoint color
625 rgbsps_set(LED_TRACKPOINT1, 15, 0, 0); 648 rgbsps_set(LED_TRACKPOINT1, THEME_COLOR_TP1);
626 rgbsps_set(LED_TRACKPOINT2, 0, 0, 15); 649 rgbsps_set(LED_TRACKPOINT2, THEME_COLOR_TP2);
627 rgbsps_set(LED_TRACKPOINT3, 15, 0, 0); 650 rgbsps_set(LED_TRACKPOINT3, THEME_COLOR_TP3);
628 651
629 // unicode input mode 652 // unicode input mode
630 led_set_unicode_input_mode(); 653 led_set_unicode_input_mode();
@@ -632,6 +655,17 @@ void led_init(void) {
632 // layer indicator 655 // layer indicator
633 led_set_layer_indicator(); 656 led_set_layer_indicator();
634 led_set_default_layer_indicator(); 657 led_set_default_layer_indicator();
658
659 // clicky
660#ifdef FAUXCLICKY_ENABLE
661 if (fauxclicky_enabled) {
662 rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
663 } else {
664 rgbsps_set(LED_IND_AUDIO, COLOR_BLANK);
665 }
666#endif
667
668 rgbsps_send();
635} 669}
636 670
637 671
@@ -911,7 +945,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
911 * `-----------------------------------------------------------------------------------' 945 * `-----------------------------------------------------------------------------------'
912 */ 946 */
913[_SYS] = KEYMAP( 947[_SYS] = KEYMAP(
914 DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 948 DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
915 XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX, 949 XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
916 XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 950 XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
917 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, 951 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
@@ -921,7 +955,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
921 955
922}; 956};
923 957
924void persistant_default_layer_set(uint16_t default_layer) { 958void persistent_default_layer_set(uint16_t default_layer) {
925 eeconfig_update_default_layer(default_layer); 959 eeconfig_update_default_layer(default_layer);
926 default_layer_set(default_layer); 960 default_layer_set(default_layer);
927#ifdef RGBSPS_ENABLE 961#ifdef RGBSPS_ENABLE
@@ -1100,14 +1134,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1100 // layout switchers 1134 // layout switchers
1101 case QWERTY: 1135 case QWERTY:
1102 if (record->event.pressed) { 1136 if (record->event.pressed) {
1103 persistant_default_layer_set(1UL<<_QWERTY); 1137 persistent_default_layer_set(1UL<<_QWERTY);
1104 } 1138 }
1105 return false; 1139 return false;
1106 break; 1140 break;
1107#ifdef LAYOUT_DVORAK 1141#ifdef LAYOUT_DVORAK
1108 case DVORAK: 1142 case DVORAK:
1109 if (record->event.pressed) { 1143 if (record->event.pressed) {
1110 persistant_default_layer_set(1UL<<_DVORAK); 1144 persistent_default_layer_set(1UL<<_DVORAK);
1111 } 1145 }
1112 return false; 1146 return false;
1113 break; 1147 break;
@@ -1115,7 +1149,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1115#ifdef LAYOUT_COLEMAK 1149#ifdef LAYOUT_COLEMAK
1116 case COLEMAK: 1150 case COLEMAK:
1117 if (record->event.pressed) { 1151 if (record->event.pressed) {
1118 persistant_default_layer_set(1UL<<_COLEMAK); 1152 persistent_default_layer_set(1UL<<_COLEMAK);
1119 } 1153 }
1120 return false; 1154 return false;
1121 break; 1155 break;
@@ -1123,7 +1157,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1123#ifdef LAYOUT_WORKMAN 1157#ifdef LAYOUT_WORKMAN
1124 case WORKMAN: 1158 case WORKMAN:
1125 if (record->event.pressed) { 1159 if (record->event.pressed) {
1126 persistant_default_layer_set(1UL<<_WORKMAN); 1160 persistent_default_layer_set(1UL<<_WORKMAN);
1127 } 1161 }
1128 return false; 1162 return false;
1129 break; 1163 break;
@@ -1131,7 +1165,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1131#ifdef LAYOUT_NORMAN 1165#ifdef LAYOUT_NORMAN
1132 case NORMAN: 1166 case NORMAN:
1133 if (record->event.pressed) { 1167 if (record->event.pressed) {
1134 persistant_default_layer_set(1UL<<_NORMAN); 1168 persistent_default_layer_set(1UL<<_NORMAN);
1135 } 1169 }
1136 return false; 1170 return false;
1137 break; 1171 break;
@@ -1211,15 +1245,22 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1211 case FC_TOG: 1245 case FC_TOG:
1212#ifdef RGBSPS_ENABLE 1246#ifdef RGBSPS_ENABLE
1213 if (fauxclicky_enabled) { 1247 if (fauxclicky_enabled) {
1214 rgbsps_set(LED_IND_AUDIO, 0, 0, 0); 1248 rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
1215 } else { 1249 } else {
1216 rgbsps_set(LED_IND_AUDIO, 5, 11, 13); 1250 rgbsps_set(LED_IND_AUDIO, COLOR_BLANK);
1217 } 1251 }
1218 rgbsps_send(); 1252 rgbsps_send();
1219#endif 1253#endif
1220 return true; 1254 return true;
1221 break; 1255 break;
1222#endif 1256#endif
1257
1258#ifdef RGBSPS_DEMO_ENABLE
1259 case RGBDEMO:
1260 led_demo();
1261 return false;
1262 break;
1263#endif
1223 } 1264 }
1224 return true; 1265 return true;
1225} 1266}
@@ -1280,9 +1321,9 @@ void turn_off_capslock() {
1280 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK); 1321 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
1281 if (new_capslock ^ capslock) { // capslock state is different 1322 if (new_capslock ^ capslock) { // capslock state is different
1282 if ((capslock = new_capslock)) { 1323 if ((capslock = new_capslock)) {
1283 rgbsps_set(LED_IND_CAPSLOCK, 15, 0, 0); 1324 rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
1284 } else { 1325 } else {
1285 rgbsps_set(LED_IND_CAPSLOCK, 0, 0, 0); 1326 rgbsps_set(LED_IND_CAPSLOCK, COLOR_BLANK);
1286 } 1327 }
1287 rgbsps_send(); 1328 rgbsps_send();
1288 } 1329 }
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h
new file mode 100644
index 000000000..e60971035
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h
@@ -0,0 +1 @@
#include "rgbtheme_default.h"
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h
new file mode 100644
index 000000000..8e0a98b09
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h
@@ -0,0 +1,36 @@
1#include "color.h"
2
3#define THEME_COLOR_LINUX COLOR_WHITE
4#define THEME_COLOR_APPLE COLOR_WHITE
5#define THEME_COLOR_WINDOWS COLOR_WHITE
6
7#define THEME_COLOR_QWERTY COLOR_RED
8#define THEME_COLOR_ALT COLOR_RED
9
10#define THEME_COLOR_AUDIO COLOR_GREEN
11
12#define THEME_COLOR_BLUETOOTH 7,7,15
13#define THEME_COLOR_USB COLOR_WHITE
14
15#define THEME_COLOR_CAPSLOCK COLOR_RED
16
17#define THEME_COLOR_GUI COLOR_MAGENTA
18#define THEME_COLOR_FUN COLOR_RED
19#define THEME_COLOR_NUM 7,7,15
20#define THEME_COLOR_PUNC COLOR_GREEN
21#define THEME_COLOR_GREEK COLOR_CYAN
22#define THEME_COLOR_EMOJI COLOR_YELLOW
23#define THEME_COLOR_OTHERLAYER COLOR_GRAY
24
25#define THEME_COLOR_GLOW1_HOME COLOR_ORANGE
26#define THEME_COLOR_GLOW1_HOMING COLOR_RED
27
28#define THEME_COLOR_GLOW2_ALPHA COLOR_ORANGE
29#define THEME_COLOR_GLOW2_MODS COLOR_ORANGE
30#define THEME_COLOR_GLOW2_FN COLOR_ORANGE
31#define THEME_COLOR_GLOW2_HOME COLOR_ORANGE
32#define THEME_COLOR_GLOW2_HOMING COLOR_RED
33
34#define THEME_COLOR_TP1 COLOR_ORANGE
35#define THEME_COLOR_TP2 COLOR_RED
36#define THEME_COLOR_TP3 COLOR_ORANGE \ No newline at end of file
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h
new file mode 100644
index 000000000..4c3fb1369
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h
@@ -0,0 +1,36 @@
1#include "color.h"
2
3#define THEME_COLOR_LINUX COLOR_WHITE
4#define THEME_COLOR_APPLE COLOR_WHITE
5#define THEME_COLOR_WINDOWS COLOR_WHITE
6
7#define THEME_COLOR_QWERTY COLOR_RED
8#define THEME_COLOR_ALT COLOR_RED
9
10#define THEME_COLOR_AUDIO COLOR_GREEN
11
12#define THEME_COLOR_BLUETOOTH COLOR_BLUE
13#define THEME_COLOR_USB COLOR_WHITE
14
15#define THEME_COLOR_CAPSLOCK COLOR_RED
16
17#define THEME_COLOR_GUI COLOR_MAGENTA
18#define THEME_COLOR_FUN COLOR_RED
19#define THEME_COLOR_NUM COLOR_BLUE
20#define THEME_COLOR_PUNC COLOR_GREEN
21#define THEME_COLOR_GREEK COLOR_CYAN
22#define THEME_COLOR_EMOJI COLOR_YELLOW
23#define THEME_COLOR_OTHERLAYER COLOR_GRAY
24
25#define THEME_COLOR_GLOW1_HOME COLOR_GRAY
26#define THEME_COLOR_GLOW1_HOMING COLOR_RED
27
28#define THEME_COLOR_GLOW2_ALPHA COLOR_GRAY
29#define THEME_COLOR_GLOW2_MODS COLOR_GREEN
30#define THEME_COLOR_GLOW2_FN COLOR_BLUE
31#define THEME_COLOR_GLOW2_HOME COLOR_RED
32#define THEME_COLOR_GLOW2_HOMING COLOR_YELLOW
33
34#define THEME_COLOR_TP1 COLOR_RED
35#define THEME_COLOR_TP2 COLOR_BLUE
36#define THEME_COLOR_TP3 COLOR_RED \ No newline at end of file
diff --git a/keyboards/handwired/promethium/matrix.c b/keyboards/handwired/promethium/matrix.c
index 2b7ce2bf5..72dbe8d4d 100644
--- a/keyboards/handwired/promethium/matrix.c
+++ b/keyboards/handwired/promethium/matrix.c
@@ -133,8 +133,8 @@ void matrix_init(void) {
133 matrix_init_quantum(); 133 matrix_init_quantum();
134} 134}
135 135
136uint8_t matrix_scan(void 136uint8_t matrix_scan(void)
137){ 137{
138 // Set row, read cols 138 // Set row, read cols
139 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { 139 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
140# if (DEBOUNCING_DELAY > 0) 140# if (DEBOUNCING_DELAY > 0)
diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c
index 8b1a0c71f..3cc0f5a8c 100644
--- a/keyboards/handwired/promethium/promethium.c
+++ b/keyboards/handwired/promethium/promethium.c
@@ -4,9 +4,9 @@
4#include "matrix.h" 4#include "matrix.h"
5#include "musical_notes.h" 5#include "musical_notes.h"
6 6
7float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_F3, .03125); 7float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A4, 0.0625);
8float fauxclicky_released_note[2] = MUSICAL_NOTE(_C3, .03125); 8float fauxclicky_released_note[2] = MUSICAL_NOTE(_A4, 0.0625);
9float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C3, .03125); 9float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C6, 0.25);
10 10
11// cubic fit {3.3, 0}, {3.5, 2.9}, {3.6, 5}, {3.7, 8.6}, {3.8, 36}, {3.9, 62}, {4.0, 73}, {4.05, 83}, {4.1, 89}, {4.15, 94}, {4.2, 100} 11// cubic fit {3.3, 0}, {3.5, 2.9}, {3.6, 5}, {3.7, 8.6}, {3.8, 36}, {3.9, 62}, {4.0, 73}, {4.05, 83}, {4.1, 89}, {4.15, 94}, {4.2, 100}
12 12
diff --git a/keyboards/s60-x/default/Makefile b/keyboards/handwired/trackpoint/Makefile
index 191c6bb66..191c6bb66 100644
--- a/keyboards/s60-x/default/Makefile
+++ b/keyboards/handwired/trackpoint/Makefile
diff --git a/keyboards/handwired/trackpoint/README.md b/keyboards/handwired/trackpoint/README.md
new file mode 100644
index 000000000..a22fca295
--- /dev/null
+++ b/keyboards/handwired/trackpoint/README.md
@@ -0,0 +1,10 @@
1# IBM Trackpoint demonstration
2
3This is just a simple demo to show how to integrate IBM Trackpoint in QMK.
4
5Wiring used in the demonstration:
6![Wiring example](./wiring.png)
7
8Some documentation:
9* [How to wire IBM Trackpoint](https://github.com/alonswartz/trackpoint)
10* [QMK documentation](https://docs.qmk.fm/)
diff --git a/keyboards/handwired/trackpoint/config.h b/keyboards/handwired/trackpoint/config.h
new file mode 100644
index 000000000..7558c03bf
--- /dev/null
+++ b/keyboards/handwired/trackpoint/config.h
@@ -0,0 +1,75 @@
1#ifndef CONFIG_H
2 #define CONFIG_H
3
4 #include "config_common.h"
5
6 #define VENDOR_ID 0x1234
7 #define PRODUCT_ID 0x5678
8 #define DEVICE_VER 0x0001
9 #define MANUFACTURER QMK
10 #define PRODUCT TRACKPOINT-DEMO
11 #define DESCRIPTION Simple demonstration for IBM Trackpoint integration
12
13 #define MATRIX_ROWS 1
14 #define MATRIX_COLS 3
15
16 #ifdef PS2_USE_USART
17 #define PS2_CLOCK_PORT PORTD
18 #define PS2_CLOCK_PIN PIND
19 #define PS2_CLOCK_DDR DDRD
20 #define PS2_CLOCK_BIT 5
21 #define PS2_DATA_PORT PORTD
22 #define PS2_DATA_PIN PIND
23 #define PS2_DATA_DDR DDRD
24 #define PS2_DATA_BIT 2
25
26 /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
27 /* set DDR of CLOCK as input to be slave */
28 #define PS2_USART_INIT() do { \
29 PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
30 PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
31 UCSR1C = ((1 << UMSEL10) | \
32 (3 << UPM10) | \
33 (0 << USBS1) | \
34 (3 << UCSZ10) | \
35 (0 << UCPOL1)); \
36 UCSR1A = 0; \
37 UBRR1H = 0; \
38 UBRR1L = 0; \
39 } while (0)
40 #define PS2_USART_RX_INT_ON() do { \
41 UCSR1B = ((1 << RXCIE1) | \
42 (1 << RXEN1)); \
43 } while (0)
44 #define PS2_USART_RX_POLL_ON() do { \
45 UCSR1B = (1 << RXEN1); \
46 } while (0)
47 #define PS2_USART_OFF() do { \
48 UCSR1C = 0; \
49 UCSR1B &= ~((1 << RXEN1) | \
50 (1 << TXEN1)); \
51 } while (0)
52 #define PS2_USART_RX_READY (UCSR1A & (1<<RXC1))
53 #define PS2_USART_RX_DATA UDR1
54 #define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
55 #define PS2_USART_RX_VECT USART1_RX_vect
56 #endif
57
58 #define MATRIX_COL_PINS { F1, F4, F5 }
59 #define MATRIX_ROW_PINS { F0 }
60 #define UNUSED_PINS
61
62 /* COL2ROW or ROW2COL */
63 #define DIODE_DIRECTION COL2ROW
64
65 #define DEBOUNCING_DELAY 5
66
67 #define LOCKING_SUPPORT_ENABLE
68 #define LOCKING_RESYNC_ENABLE
69
70 /* key combination for command */
71 #define IS_COMMAND() ( \
72 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
73 )
74
75#endif
diff --git a/keyboards/handwired/trackpoint/keymaps/default/keymap.c b/keyboards/handwired/trackpoint/keymaps/default/keymap.c
new file mode 100644
index 000000000..22e46d98a
--- /dev/null
+++ b/keyboards/handwired/trackpoint/keymaps/default/keymap.c
@@ -0,0 +1,7 @@
1#include "trackpoint.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [0] = KEYMAP(
5 KC_BTN1, KC_BTN3, KC_BTN2 \
6 )
7};
diff --git a/keyboards/handwired/trackpoint/rules.mk b/keyboards/handwired/trackpoint/rules.mk
new file mode 100644
index 000000000..0609dd304
--- /dev/null
+++ b/keyboards/handwired/trackpoint/rules.mk
@@ -0,0 +1,25 @@
1MCU = atmega32u4
2F_CPU = 16000000
3ARCH = AVR8
4F_USB = $(F_CPU)
5OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
6OPT_DEFS += -DBOOTLOADER_SIZE=512
7BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
8MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
9EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
10CONSOLE_ENABLE ?= yes # Console for debug(+400)
11COMMAND_ENABLE ?= yes # Commands for debug and configuration
12SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
13NKRO_ENABLE ?= no # USB Nkey Rollover
14BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
15MIDI_ENABLE ?= no # MIDI controls
16UNICODE_ENABLE ?= no # Unicode
17BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
18AUDIO_ENABLE ?= no # Audio output on port C6
19
20PS2_MOUSE_ENABLE ?= yes
21PS2_USE_USART ?= yes
22
23ifndef QUANTUM_DIR
24 include ../../Makefile
25endif
diff --git a/keyboards/handwired/trackpoint/trackpoint.c b/keyboards/handwired/trackpoint/trackpoint.c
new file mode 100644
index 000000000..124995a64
--- /dev/null
+++ b/keyboards/handwired/trackpoint/trackpoint.c
@@ -0,0 +1,5 @@
1#include "trackpoint.h"
2
3void matrix_init_kb(void) {
4
5}
diff --git a/keyboards/handwired/trackpoint/trackpoint.h b/keyboards/handwired/trackpoint/trackpoint.h
new file mode 100644
index 000000000..b5d73d7db
--- /dev/null
+++ b/keyboards/handwired/trackpoint/trackpoint.h
@@ -0,0 +1,13 @@
1#ifndef TRACKPOINT_H
2#define TRACKPOINT_H
3
4#include "quantum.h"
5
6#define KEYMAP( \
7 k00, k01, k02 \
8) \
9{ \
10 { k00, k01, k02} \
11}
12
13#endif
diff --git a/keyboards/handwired/trackpoint/wiring.png b/keyboards/handwired/trackpoint/wiring.png
new file mode 100644
index 000000000..45806e007
--- /dev/null
+++ b/keyboards/handwired/trackpoint/wiring.png
Binary files differ
diff --git a/keyboards/hhkb/keymaps/cinaeco/Makefile b/keyboards/hhkb/keymaps/cinaeco/Makefile
new file mode 100644
index 000000000..05b724051
--- /dev/null
+++ b/keyboards/hhkb/keymaps/cinaeco/Makefile
@@ -0,0 +1,23 @@
1# cinaeco's HHKB firmware
2
3# Build Options
4# change to "no" to disable the options, or define them in the Makefile in
5# the appropriate keymap folder that will get included automatically
6#
7BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
8MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
9EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
10CONSOLE_ENABLE = no # Console for debug(+400)
11COMMAND_ENABLE = yes # Commands for debug and configuration
12NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
13BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
14MIDI_ENABLE = no # MIDI controls
15AUDIO_ENABLE = no # Audio output on port C6
16UNICODE_ENABLE = no # Unicode
17BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
18RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20
21ifndef QUANTUM_DIR
22 include ../../../../Makefile
23endif
diff --git a/keyboards/hhkb/keymaps/cinaeco/README.md b/keyboards/hhkb/keymaps/cinaeco/README.md
new file mode 100644
index 000000000..c1c48e609
--- /dev/null
+++ b/keyboards/hhkb/keymaps/cinaeco/README.md
@@ -0,0 +1,23 @@
1# QMK Keyboard Firmware for HHKB
2
3## Modifications
4
5### HHKB Fn Layer
6
7Added some Media keys.
8
9### Utility Layer (SpaceFN)
10
11Hold `Space` for:
12
13- Vi-style direction keys.
14- WASD-style mouse keys.
15- Dynamic macro playback on `1` and `2`.
16- Qwerty/Colemak/Dvorak layout selection on `-`, `=` and `\ `
17
18### Dynamic Macros
19
20Hold `q` and press:
21
22- `1` or `2` to record macro 1 or 2.
23- `s` to stop recording.
diff --git a/keyboards/hhkb/keymaps/cinaeco/config.h b/keyboards/hhkb/keymaps/cinaeco/config.h
new file mode 100644
index 000000000..c7b4c784c
--- /dev/null
+++ b/keyboards/hhkb/keymaps/cinaeco/config.h
@@ -0,0 +1,20 @@
1#ifndef CONFIG_CINAECO_H
2#define CONFIG_CINAECO_H
3
4#include "../../config.h"
5
6#undef MANUFACTURER
7#undef PRODUCT
8#undef DESCRIPTION
9#define MANUFACTURER QMK
10#define PRODUCT HHKB QMK cinaeco
11#define DESCRIPTION HHKB on QMK Firmware with cinaeco keymap
12
13// Increase "Tap" detection window. Avoid missing 'q' or 'z' when typing slowly.
14#undef TAPPING_TERM
15#define TAPPING_TERM 230
16
17// Uncomment to enable NKRO by default. May cause issues with KVM switches.
18//#define FORCE_NKRO
19
20#endif
diff --git a/keyboards/hhkb/keymaps/cinaeco/keymap.c b/keyboards/hhkb/keymaps/cinaeco/keymap.c
new file mode 100644
index 000000000..0b204600d
--- /dev/null
+++ b/keyboards/hhkb/keymaps/cinaeco/keymap.c
@@ -0,0 +1,186 @@
1/* -*- eval: (turn-on-orgtbl); -*-
2 * cinaeco's HHKB Layout
3 */
4#include "hhkb.h"
5
6// Layers.
7#define QWER 0
8#define COLE 1
9#define DVOR 2
10#define HHKB 3
11#define UTIL 4
12#define MREC 5
13
14// Easier-to-read Layer Arrays.
15#define ____ KC_TRNS
16
17enum hhkb_keycodes {
18 DYNAMIC_MACRO_RANGE = SAFE_RANGE,
19};
20
21#include "dynamic_macro.h"
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24
25
26 /* QWER Layer: Qwerty Default
27 *
28 * ,--------------------------------------------------------------.
29 * |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
30 * |--------------------------------------------------------------|
31 * |Tab |Q/MREC| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
32 * |--------------------------------------------------------------|
33 * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Ent/Ctrl|
34 * |--------------------------------------------------------------|
35 * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0|
36 * `--------------------------------------------------------------'
37 * |Alt|Gui | Space/UTIL |Gui |Alt|
38 * `-------------------------------------------'
39 *
40 */
41
42 [QWER] = KEYMAP(
43 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
44 KC_TAB, LT(MREC, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
45 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, CTL_T(KC_ENT), \
46 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
47 KC_LALT, KC_LGUI, LT(UTIL, KC_SPC), KC_RGUI, KC_RALT),
48
49
50 /* COLE Layer: Colemak
51 *
52 * ,--------------------------------------------------------------.
53 * |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
54 * |--------------------------------------------------------------|
55 * |Tab |Q/MREC| W| F| P| G| J| L| U| Y| ;| [| ]|Backs|
56 * |--------------------------------------------------------------|
57 * |Ctrl | A| R| S| T| D| H| N| E| I| O| '|Ent/Ctrl|
58 * |--------------------------------------------------------------|
59 * |Shift | Z| X| C| V| K| B| M| ,| .| /|Shift |Fn0|
60 * `--------------------------------------------------------------'
61 * |Alt|Gui | Space/UTIL |Gui |Alt|
62 * `-------------------------------------------'
63 *
64 */
65
66 [COLE] = KEYMAP(
67 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
68 KC_TAB, LT(MREC, KC_Q), KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, \
69 KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, CTL_T(KC_ENT), \
70 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_K, KC_B, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \
71 KC_LALT, KC_LGUI, LT(UTIL, KC_SPC), KC_RGUI, KC_RALT),
72
73
74 /* DVOR Layer: Dvorak
75 *
76 * ,--------------------------------------------------------------.
77 * |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| [| ]| \| `|
78 * |--------------------------------------------------------------|
79 * |Tab |'/MREC| ,| .| P| Y| F| G| C| R| L| /| =|Backs|
80 * |--------------------------------------------------------------|
81 * |Ctrl | A| O| E| U| I| D| H| T| N| S| -|Ent/Ctrl|
82 * |--------------------------------------------------------------|
83 * |Shift | ;| Q| J| K| X| B| M| W| V| Z|Shift |Fn0|
84 * `--------------------------------------------------------------'
85 * |Alt|Gui | Space/UTIL |Gui |Alt|
86 * `-------------------------------------------'
87 *
88 */
89
90 [DVOR] = KEYMAP(
91 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, \
92 KC_TAB, LT(MREC, KC_QUOT), KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC, \
93 KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, CTL_T(KC_ENT), \
94 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, MO(HHKB), \
95 KC_LALT, KC_LGUI, LT(UTIL, KC_SPC), KC_RGUI, KC_RALT),
96
97
98 /* HHKB Layer: HHKB mode (HHKB Fn)
99 *
100 * ,-----------------------------------------------------------.
101 * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
102 * |-----------------------------------------------------------|
103 * |Caps |PLA|PRV|NXT| | | | |Psc|Slk|Pus|Up | |Backs|
104 * |-----------------------------------------------------------|
105 * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter |
106 * |-----------------------------------------------------------|
107 * | | | | | | | +| -|End|PgD|Dow| | |
108 * `-----------------------------------------------------------'
109 * | | | |STOP | |
110 * `-------------------------------------------'
111 */
112
113 [HHKB] = KEYMAP(
114 KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
115 KC_CAPS, KC_MPLY, KC_MPRV, KC_MNXT, ____, ____, ____, ____, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ____, KC_BSPC, \
116 ____, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, ____, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
117 ____, ____, ____, ____, ____, ____, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, ____, ____, \
118 ____, ____, ____, KC_MSTP, ____),
119
120
121 /* UTIL Layer: Extra utilities
122 *
123 * ,-------------------------------------------------------------.
124 * |DFU|PLY1|PLY2| | | | | | | | |QWE|COL|DVO|DBG|
125 * |-------------------------------------------------------------|
126 * | |MLB |M-Up|MRB|MwU| |Hom|PgD|PgU|End| | | | |
127 * |-------------------------------------------------------------|
128 * | |M-Lt|M-Dn|M-R|MwD| |LEF|DOW|UP |RIG| | | |
129 * |-------------------------------------------------------------|
130 * | | | | | |SPC| | | | | | | |
131 * `-------------------------------------------------------------'
132 * | | | | | |
133 * `-------------------------------------------'
134 *
135 */
136
137 [UTIL] = KEYMAP(
138 RESET, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, ____, ____, ____, ____, ____, ____, ____, ____, DF(QWER), DF(COLE), DF(DVOR), DEBUG, \
139 ____, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, ____, KC_HOME, KC_PGDN, KC_PGUP, KC_END, ____, ____, ____, ____, \
140 ____, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ____, ____, ____, \
141 ____, ____, ____, ____, ____, KC_SPC, ____, ____, ____, ____, ____, ____, ____, \
142 ____, ____, ____, ____, ____),
143
144
145 /* MREC Layer: Record macros with `q`
146 *
147 * ,-------------------------------------------------------------.
148 * | |REC1|REC2| | | | | | | | | | | | |
149 * |-------------------------------------------------------------|
150 * | | | | | | | | | | | | | | |
151 * |-------------------------------------------------------------|
152 * | | |RSTP| | | | | | | | | | |
153 * |-------------------------------------------------------------|
154 * | | | | | | | | | | | | | |
155 * `-------------------------------------------------------------'
156 * | | | | | |
157 * `-------------------------------------------'
158 *
159 */
160
161 [MREC] = KEYMAP(
162 ____, DYN_REC_START1, DYN_REC_START2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
163 ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
164 ____, ____, DYN_REC_STOP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
165 ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \
166 ____, ____, ____, ____, ____)
167
168};
169
170
171
172const uint16_t PROGMEM fn_actions[] = {
173
174};
175
176const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
177 return MACRO_NONE;
178};
179
180// For Dynamic Macros.
181bool process_record_user(uint16_t keycode, keyrecord_t *record) {
182 if (!process_record_dynamic_macro(keycode, record)) {
183 return false;
184 }
185 return true;
186}
diff --git a/keyboards/hhkb/keymaps/smt/keymap.c b/keyboards/hhkb/keymaps/smt/keymap.c
index a7ea54de8..484df851a 100644
--- a/keyboards/hhkb/keymaps/smt/keymap.c
+++ b/keyboards/hhkb/keymaps/smt/keymap.c
@@ -146,7 +146,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
146 return MACRO_NONE; 146 return MACRO_NONE;
147}; 147};
148 148
149void persistant_default_layer_set(uint16_t default_layer) { 149void persistent_default_layer_set(uint16_t default_layer) {
150 eeconfig_update_default_layer(default_layer); 150 eeconfig_update_default_layer(default_layer);
151 default_layer_set(default_layer); 151 default_layer_set(default_layer);
152} 152}
@@ -155,19 +155,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
155 switch (keycode) { 155 switch (keycode) {
156 case QWERTY: 156 case QWERTY:
157 if (record->event.pressed) { 157 if (record->event.pressed) {
158 persistant_default_layer_set(1UL<<_QWERTY); 158 persistent_default_layer_set(1UL<<_QWERTY);
159 } 159 }
160 return false; 160 return false;
161 break; 161 break;
162 case COLEMAK: 162 case COLEMAK:
163 if (record->event.pressed) { 163 if (record->event.pressed) {
164 persistant_default_layer_set(1UL<<_COLEMAK); 164 persistent_default_layer_set(1UL<<_COLEMAK);
165 } 165 }
166 return false; 166 return false;
167 break; 167 break;
168 case DVORAK: 168 case DVORAK:
169 if (record->event.pressed) { 169 if (record->event.pressed) {
170 persistant_default_layer_set(1UL<<_DVORAK); 170 persistent_default_layer_set(1UL<<_DVORAK);
171 } 171 }
172 return false; 172 return false;
173 break; 173 break;
diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk
index a46271f02..e4190039f 100644
--- a/keyboards/hhkb/rules.mk
+++ b/keyboards/hhkb/rules.mk
@@ -53,7 +53,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
53#OPT_DEFS += -DBOOTLOADER_SIZE=4096 53#OPT_DEFS += -DBOOTLOADER_SIZE=4096
54 54
55# as per original hasu settings 55# as per original hasu settings
56OPT_DEFS += -DBOOTLOADER_SIZE=512 56OPT_DEFS += -DBOOTLOADER_SIZE=4096
57 57
58# Build Options 58# Build Options
59# comment out to disable the options. 59# comment out to disable the options.
diff --git a/keyboards/jd45/keymaps/jeebak/keymap.c b/keyboards/jd45/keymaps/jeebak/keymap.c
index 8d26cbde1..0da114a1e 100644
--- a/keyboards/jd45/keymaps/jeebak/keymap.c
+++ b/keyboards/jd45/keymaps/jeebak/keymap.c
@@ -283,7 +283,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
283/*`----------+-----------+-----------+-----------+----^^^----+----^^^----+-----------+-----------+-----------+--------'*/ 283/*`----------+-----------+-----------+-----------+----^^^----+----^^^----+-----------+-----------+-----------+--------'*/
284}; 284};
285 285
286void persistant_default_layer_set(uint16_t default_layer) { 286void persistent_default_layer_set(uint16_t default_layer) {
287 eeconfig_update_default_layer(default_layer); 287 eeconfig_update_default_layer(default_layer);
288 default_layer_set(default_layer); 288 default_layer_set(default_layer);
289} 289}
diff --git a/keyboards/jd45/keymaps/jeebak/readme.md b/keyboards/jd45/keymaps/jeebak/readme.md
index 2e45a46d9..216519614 100644
--- a/keyboards/jd45/keymaps/jeebak/readme.md
+++ b/keyboards/jd45/keymaps/jeebak/readme.md
@@ -8,7 +8,7 @@ needed, they will be mapped to home row keys. The `keymap.c` file will contain
8the exact changes. The diagrams in this README shows the highlights of the 8the exact changes. The diagrams in this README shows the highlights of the
9changes from the default mappings. 9changes from the default mappings.
10 10
11I also decided to change all calls to `persistant_default_layer_set()` to 11I also decided to change all calls to `persistent_default_layer_set()` to
12`default_layer_set()` since this is my personal perference. 12`default_layer_set()` since this is my personal perference.
13 13
14## Macros 14## Macros
diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index 62f47773c..fa181e039 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -269,7 +269,7 @@ const uint16_t PROGMEM fn_actions[] = {
269 269
270}; 270};
271 271
272void persistant_default_layer_set(uint16_t default_layer) { 272void persistent_default_layer_set(uint16_t default_layer) {
273 eeconfig_update_default_layer(default_layer); 273 eeconfig_update_default_layer(default_layer);
274 default_layer_set(default_layer); 274 default_layer_set(default_layer);
275} 275}
@@ -279,17 +279,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
279 switch(id) { 279 switch(id) {
280 case _DV: 280 case _DV:
281 if (record->event.pressed) { 281 if (record->event.pressed) {
282 persistant_default_layer_set(1UL<<_DV); 282 persistent_default_layer_set(1UL<<_DV);
283 } 283 }
284 break; 284 break;
285 case _QW: 285 case _QW:
286 if (record->event.pressed) { 286 if (record->event.pressed) {
287 persistant_default_layer_set(1UL<<_QW); 287 persistent_default_layer_set(1UL<<_QW);
288 } 288 }
289 break; 289 break;
290 case _CM: 290 case _CM:
291 if (record->event.pressed) { 291 if (record->event.pressed) {
292 persistant_default_layer_set(1UL<<_CM); 292 persistent_default_layer_set(1UL<<_CM);
293 } 293 }
294 break; 294 break;
295 } 295 }
diff --git a/keyboards/lets_split/keymaps/OLED_sample/keymap.c b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
index 493ebcd3f..274f917e2 100644
--- a/keyboards/lets_split/keymaps/OLED_sample/keymap.c
+++ b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
@@ -186,7 +186,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
186bool TOG_STATUS = false; 186bool TOG_STATUS = false;
187int RGB_current_mode; 187int RGB_current_mode;
188 188
189void persistant_default_layer_set(uint16_t default_layer) { 189void persistent_default_layer_set(uint16_t default_layer) {
190 eeconfig_update_default_layer(default_layer); 190 eeconfig_update_default_layer(default_layer);
191 default_layer_set(default_layer); 191 default_layer_set(default_layer);
192} 192}
@@ -208,7 +208,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
208 #ifdef AUDIO_ENABLE 208 #ifdef AUDIO_ENABLE
209 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 209 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
210 #endif 210 #endif
211 persistant_default_layer_set(1UL<<_QWERTY); 211 persistent_default_layer_set(1UL<<_QWERTY);
212 } 212 }
213 return false; 213 return false;
214 break; 214 break;
@@ -217,7 +217,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
217 #ifdef AUDIO_ENABLE 217 #ifdef AUDIO_ENABLE
218 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 218 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
219 #endif 219 #endif
220 persistant_default_layer_set(1UL<<_COLEMAK); 220 persistent_default_layer_set(1UL<<_COLEMAK);
221 } 221 }
222 return false; 222 return false;
223 break; 223 break;
@@ -226,7 +226,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
226 #ifdef AUDIO_ENABLE 226 #ifdef AUDIO_ENABLE
227 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 227 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
228 #endif 228 #endif
229 persistant_default_layer_set(1UL<<_DVORAK); 229 persistent_default_layer_set(1UL<<_DVORAK);
230 } 230 }
231 return false; 231 return false;
232 break; 232 break;
diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c
index fcf3cde75..245834204 100644
--- a/keyboards/lets_split/keymaps/hexwire/keymap.c
+++ b/keyboards/lets_split/keymaps/hexwire/keymap.c
@@ -138,7 +138,7 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
138float tone_colemak[][2] = SONG(COLEMAK_SOUND); 138float tone_colemak[][2] = SONG(COLEMAK_SOUND);
139#endif 139#endif
140 140
141void persistant_default_layer_set(uint16_t default_layer) { 141void persistent_default_layer_set(uint16_t default_layer) {
142 eeconfig_update_default_layer(default_layer); 142 eeconfig_update_default_layer(default_layer);
143 default_layer_set(default_layer); 143 default_layer_set(default_layer);
144} 144}
@@ -150,7 +150,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
150 #ifdef AUDIO_ENABLE 150 #ifdef AUDIO_ENABLE
151 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 151 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
152 #endif 152 #endif
153 persistant_default_layer_set(1UL<<_QWERTY); 153 persistent_default_layer_set(1UL<<_QWERTY);
154 } 154 }
155 return false; 155 return false;
156 break; 156 break;
@@ -159,7 +159,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
159 #ifdef AUDIO_ENABLE 159 #ifdef AUDIO_ENABLE
160 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 160 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
161 #endif 161 #endif
162 persistant_default_layer_set(1UL<<_COLEMAK); 162 persistent_default_layer_set(1UL<<_COLEMAK);
163 } 163 }
164 return false; 164 return false;
165 break; 165 break;
@@ -168,7 +168,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
168 #ifdef AUDIO_ENABLE 168 #ifdef AUDIO_ENABLE
169 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 169 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
170 #endif 170 #endif
171 persistant_default_layer_set(1UL<<_DVORAK); 171 persistent_default_layer_set(1UL<<_DVORAK);
172 } 172 }
173 return false; 173 return false;
174 break; 174 break;
diff --git a/keyboards/lets_split/keymaps/i2c/keymap.c b/keyboards/lets_split/keymaps/i2c/keymap.c
index 0d2d94b67..936312b2e 100644
--- a/keyboards/lets_split/keymaps/i2c/keymap.c
+++ b/keyboards/lets_split/keymaps/i2c/keymap.c
@@ -147,7 +147,7 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
147float tone_colemak[][2] = SONG(COLEMAK_SOUND); 147float tone_colemak[][2] = SONG(COLEMAK_SOUND);
148#endif 148#endif
149 149
150void persistant_default_layer_set(uint16_t default_layer) { 150void persistent_default_layer_set(uint16_t default_layer) {
151 eeconfig_update_default_layer(default_layer); 151 eeconfig_update_default_layer(default_layer);
152 default_layer_set(default_layer); 152 default_layer_set(default_layer);
153} 153}
@@ -159,7 +159,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
159 #ifdef AUDIO_ENABLE 159 #ifdef AUDIO_ENABLE
160 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 160 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
161 #endif 161 #endif
162 persistant_default_layer_set(1UL<<_QWERTY); 162 persistent_default_layer_set(1UL<<_QWERTY);
163 } 163 }
164 return false; 164 return false;
165 break; 165 break;
@@ -168,7 +168,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
168 #ifdef AUDIO_ENABLE 168 #ifdef AUDIO_ENABLE
169 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 169 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
170 #endif 170 #endif
171 persistant_default_layer_set(1UL<<_COLEMAK); 171 persistent_default_layer_set(1UL<<_COLEMAK);
172 } 172 }
173 return false; 173 return false;
174 break; 174 break;
@@ -177,7 +177,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177 #ifdef AUDIO_ENABLE 177 #ifdef AUDIO_ENABLE
178 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 178 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
179 #endif 179 #endif
180 persistant_default_layer_set(1UL<<_DVORAK); 180 persistent_default_layer_set(1UL<<_DVORAK);
181 } 181 }
182 return false; 182 return false;
183 break; 183 break;
diff --git a/keyboards/lets_split/keymaps/serial/keymap.c b/keyboards/lets_split/keymaps/serial/keymap.c
index 0d2d94b67..936312b2e 100644
--- a/keyboards/lets_split/keymaps/serial/keymap.c
+++ b/keyboards/lets_split/keymaps/serial/keymap.c
@@ -147,7 +147,7 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
147float tone_colemak[][2] = SONG(COLEMAK_SOUND); 147float tone_colemak[][2] = SONG(COLEMAK_SOUND);
148#endif 148#endif
149 149
150void persistant_default_layer_set(uint16_t default_layer) { 150void persistent_default_layer_set(uint16_t default_layer) {
151 eeconfig_update_default_layer(default_layer); 151 eeconfig_update_default_layer(default_layer);
152 default_layer_set(default_layer); 152 default_layer_set(default_layer);
153} 153}
@@ -159,7 +159,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
159 #ifdef AUDIO_ENABLE 159 #ifdef AUDIO_ENABLE
160 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 160 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
161 #endif 161 #endif
162 persistant_default_layer_set(1UL<<_QWERTY); 162 persistent_default_layer_set(1UL<<_QWERTY);
163 } 163 }
164 return false; 164 return false;
165 break; 165 break;
@@ -168,7 +168,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
168 #ifdef AUDIO_ENABLE 168 #ifdef AUDIO_ENABLE
169 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 169 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
170 #endif 170 #endif
171 persistant_default_layer_set(1UL<<_COLEMAK); 171 persistent_default_layer_set(1UL<<_COLEMAK);
172 } 172 }
173 return false; 173 return false;
174 break; 174 break;
@@ -177,7 +177,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177 #ifdef AUDIO_ENABLE 177 #ifdef AUDIO_ENABLE
178 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 178 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
179 #endif 179 #endif
180 persistant_default_layer_set(1UL<<_DVORAK); 180 persistent_default_layer_set(1UL<<_DVORAK);
181 } 181 }
182 return false; 182 return false;
183 break; 183 break;
diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c
index c4bdb7ebc..18d409f08 100644
--- a/keyboards/lets_split/keymaps/smt/keymap.c
+++ b/keyboards/lets_split/keymaps/smt/keymap.c
@@ -152,7 +152,7 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND);
152float tone_colemak[][2] = SONG(COLEMAK_SOUND); 152float tone_colemak[][2] = SONG(COLEMAK_SOUND);
153#endif 153#endif
154 154
155void persistant_default_layer_set(uint16_t default_layer) { 155void persistent_default_layer_set(uint16_t default_layer) {
156 eeconfig_update_default_layer(default_layer); 156 eeconfig_update_default_layer(default_layer);
157 default_layer_set(default_layer); 157 default_layer_set(default_layer);
158} 158}
@@ -164,7 +164,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
164 #ifdef AUDIO_ENABLE 164 #ifdef AUDIO_ENABLE
165 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 165 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
166 #endif 166 #endif
167 persistant_default_layer_set(1UL<<_QWERTY); 167 persistent_default_layer_set(1UL<<_QWERTY);
168 } 168 }
169 return false; 169 return false;
170 break; 170 break;
@@ -173,7 +173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
173 #ifdef AUDIO_ENABLE 173 #ifdef AUDIO_ENABLE
174 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 174 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
175 #endif 175 #endif
176 persistant_default_layer_set(1UL<<_COLEMAK); 176 persistent_default_layer_set(1UL<<_COLEMAK);
177 } 177 }
178 return false; 178 return false;
179 break; 179 break;
@@ -182,7 +182,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
182 #ifdef AUDIO_ENABLE 182 #ifdef AUDIO_ENABLE
183 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 183 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
184 #endif 184 #endif
185 persistant_default_layer_set(1UL<<_DVORAK); 185 persistent_default_layer_set(1UL<<_DVORAK);
186 } 186 }
187 return false; 187 return false;
188 break; 188 break;
diff --git a/keyboards/lets_split/keymaps/xyverz/keymap.c b/keyboards/lets_split/keymaps/xyverz/keymap.c
index 216e94696..45edf78c8 100644
--- a/keyboards/lets_split/keymaps/xyverz/keymap.c
+++ b/keyboards/lets_split/keymaps/xyverz/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
141 141
142}; 142};
143 143
144void persistant_default_layer_set(uint16_t default_layer) { 144void persistent_default_layer_set(uint16_t default_layer) {
145 eeconfig_update_default_layer(default_layer); 145 eeconfig_update_default_layer(default_layer);
146 default_layer_set(default_layer); 146 default_layer_set(default_layer);
147} 147}
@@ -150,19 +150,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
150 switch (keycode) { 150 switch (keycode) {
151 case QWERTY: 151 case QWERTY:
152 if (record->event.pressed) { 152 if (record->event.pressed) {
153 persistant_default_layer_set(1UL<<_QWERTY); 153 persistent_default_layer_set(1UL<<_QWERTY);
154 } 154 }
155 return false; 155 return false;
156 break; 156 break;
157 case COLEMAK: 157 case COLEMAK:
158 if (record->event.pressed) { 158 if (record->event.pressed) {
159 persistant_default_layer_set(1UL<<_COLEMAK); 159 persistent_default_layer_set(1UL<<_COLEMAK);
160 } 160 }
161 return false; 161 return false;
162 break; 162 break;
163 case DVORAK: 163 case DVORAK:
164 if (record->event.pressed) { 164 if (record->event.pressed) {
165 persistant_default_layer_set(1UL<<_DVORAK); 165 persistent_default_layer_set(1UL<<_DVORAK);
166 } 166 }
167 return false; 167 return false;
168 break; 168 break;
diff --git a/keyboards/M10A/Makefile b/keyboards/m10a/Makefile
index 4e2a6f00f..4e2a6f00f 100644
--- a/keyboards/M10A/Makefile
+++ b/keyboards/m10a/Makefile
diff --git a/keyboards/M10A/config.h b/keyboards/m10a/config.h
index f052ab629..f052ab629 100644
--- a/keyboards/M10A/config.h
+++ b/keyboards/m10a/config.h
diff --git a/keyboards/M10A/keymaps/default/Makefile b/keyboards/m10a/keymaps/default/Makefile
index 457a3d01d..457a3d01d 100644
--- a/keyboards/M10A/keymaps/default/Makefile
+++ b/keyboards/m10a/keymaps/default/Makefile
diff --git a/keyboards/M10A/keymaps/default/keymap.c b/keyboards/m10a/keymaps/default/keymap.c
index 75abeb5b7..97434a461 100644
--- a/keyboards/M10A/keymaps/default/keymap.c
+++ b/keyboards/m10a/keymaps/default/keymap.c
@@ -1,7 +1,7 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard, 1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate. 2// this is the style you want to emulate.
3 3
4#include "M10A.h" 4#include "m10a.h"
5#include "action_layer.h" 5#include "action_layer.h"
6#include "eeconfig.h" 6#include "eeconfig.h"
7 7
diff --git a/keyboards/M10A/M10A.c b/keyboards/m10a/m10a.c
index 9a3bd15e1..9cc7f069a 100644
--- a/keyboards/M10A/M10A.c
+++ b/keyboards/m10a/m10a.c
@@ -1,4 +1,4 @@
1#include "M10A.h" 1#include "m10a.h"
2 2
3void matrix_init_kb(void) { 3void matrix_init_kb(void) {
4 matrix_init_user(); 4 matrix_init_user();
diff --git a/keyboards/M10A/M10A.h b/keyboards/m10a/m10a.h
index 6ec334fb3..6ec334fb3 100644
--- a/keyboards/M10A/M10A.h
+++ b/keyboards/m10a/m10a.h
diff --git a/keyboards/M10A/rules.mk b/keyboards/m10a/rules.mk
index f5a785dbc..f5a785dbc 100644
--- a/keyboards/M10A/rules.mk
+++ b/keyboards/m10a/rules.mk
diff --git a/keyboards/miuni32/config.h b/keyboards/miuni32/config.h
index 4f9b68551..9f26b2291 100644
--- a/keyboards/miuni32/config.h
+++ b/keyboards/miuni32/config.h
@@ -163,6 +163,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
163#define RGB_DI_PIN D0 // The pin your RGB strip is wired to 163#define RGB_DI_PIN D0 // The pin your RGB strip is wired to
164#define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio) 164#define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio)
165#define RGBLED_NUM 7 // Number of LEDs 165#define RGBLED_NUM 7 // Number of LEDs
166#define RGBLIGHT_ANIMATIONS
166#define RGBLIGHT_HUE_STEP 10 167#define RGBLIGHT_HUE_STEP 10
167#define RGBLIGHT_SAT_STEP 17 168#define RGBLIGHT_SAT_STEP 17
168#define RGBLIGHT_VAL_STEP 17 169#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/miuni32/keymaps/adam-lee/Makefile b/keyboards/miuni32/keymaps/adam-lee/Makefile
new file mode 100644
index 000000000..88a3aea74
--- /dev/null
+++ b/keyboards/miuni32/keymaps/adam-lee/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/miuni32/keymaps/adam-lee/config.h b/keyboards/miuni32/keymaps/adam-lee/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/miuni32/keymaps/adam-lee/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/miuni32/keymaps/adam-lee/keymap.c b/keyboards/miuni32/keymaps/adam-lee/keymap.c
new file mode 100644
index 000000000..f799b8929
--- /dev/null
+++ b/keyboards/miuni32/keymaps/adam-lee/keymap.c
@@ -0,0 +1,119 @@
1#include "miuni32.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 /* Level 0: Default Layer
5 * ,---------------------------------------------------------------------------------------.
6 * | Q | W | E | R | T | Y | U | I | O | P | BSP |
7 * |---------------------------------------------------------------------------------------|
8 * | A | S | D | F | G | H | J | K | L | ENT |LT(1|,)|
9 * |---------------------------------------------------------------------------------------|
10 * |LT(3|Z)| X | C | V | NO | SPC | B | N | M | RSFT |LT(2|.)|
11 * |---------------------------------------------------------------------------------------|
12 */
13 [0] ={
14 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
15 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, LT(1, KC_COMMA)},
16 {LT(3, KC_Z), KC_X, KC_C, KC_V, KC_NO, KC_SPC, KC_B, KC_N, KC_M, KC_RSFT, LT(2, KC_DOT)}
17 },
18 /* Level 1: Numbers Layer
19 * ,---------------------------------------------------------------------------------------.
20 * | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
21 * |---------------------------------------------------------------------------------------|
22 * | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | PGUP | TRNS |
23 * |---------------------------------------------------------------------------------------|
24 * | LATL | 1 | 2 | 3 | 0 | NO | LEFT | DOWN | RGHT | PGDN | RSHFT |
25 * |---------------------------------------------------------------------------------------|
26 */
27 [1] ={
28 {KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
29 {KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS},
30 {KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_RSFT}
31 },
32 /* Level 2: Symbols Layer
33 * ,---------------------------------------------------------------------------------------.
34 * | ! | @ | # | $ | % | ^ | & | * | - | + | = |
35 * |---------------------------------------------------------------------------------------|
36 * | { | } | [ | ] | TRNS | TRNS | \ | ; | : | ` | ? |
37 * |---------------------------------------------------------------------------------------|
38 * | LSFT | LCTL | L | T | TRNS | TAB | N | TRNS | TRNS | RCTL | TRNS |
39 * |---------------------------------------------------------------------------------------|
40 */
41 [2] ={
42 {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_PLUS, KC_EQL},
43 {KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_BSLS, KC_SCLN, KC_COLN, KC_GRV, KC_QUES},
44 {KC_LSFT, KC_LCTL, KC_L, KC_T, KC_TRNS, KC_TAB, KC_N, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS}
45 },
46 /* Level 3: RGB Layer
47 * ,---------------------------------------------------------------------------------------.
48 * | RESET | TRNS | TRNS | TRNS | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
49 * |---------------------------------------------------------------------------------------|
50 * |RGB_TOG|RGB_MOD|RGB_HUI|RGB_HUD| NO |RGB_SAI|RGB_SAD|RGB_VAI|RGB_VAD| TRNS | TRNS |
51 * |---------------------------------------------------------------------------------------|
52 * | TRNS | TRNS | TRNS | TRNS | NO | F7 | F8 | F9 | F10 | F11 | F12 |
53 * |---------------------------------------------------------------------------------------|
54 */
55 [3] ={
56 {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6},
57 {RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_NO, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS},
58 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}
59 }
60};
61
62const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
63{
64 // MACRODOWN only works in this function
65 switch(id) {
66 case 0:
67 if (record->event.pressed) {
68 register_code(KC_RSFT);
69 } else {
70 unregister_code(KC_RSFT);
71 }
72 break;
73 }
74 return MACRO_NONE;
75};
76
77void matrix_init_user(void) {
78}
79
80void matrix_scan_user(void) {
81}
82
83bool process_record_user(uint16_t keycode, keyrecord_t *record) {
84 return true;
85}
86
87void led_set_user(uint8_t usb_led) {
88
89 if (usb_led & (1 << USB_LED_NUM_LOCK)) {
90
91 } else {
92
93 }
94
95 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
96
97 } else {
98
99 }
100
101 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
102
103 } else {
104
105 }
106
107 if (usb_led & (1 << USB_LED_COMPOSE)) {
108
109 } else {
110
111 }
112
113 if (usb_led & (1 << USB_LED_KANA)) {
114
115 } else {
116
117 }
118
119}
diff --git a/keyboards/miuni32/keymaps/adam-lee/readme.md b/keyboards/miuni32/keymaps/adam-lee/readme.md
new file mode 100644
index 000000000..4cff8ef5a
--- /dev/null
+++ b/keyboards/miuni32/keymaps/adam-lee/readme.md
@@ -0,0 +1 @@
# The default keymap for miuni32 \ No newline at end of file
diff --git a/keyboards/miuni32/keymaps/default/keymap.c b/keyboards/miuni32/keymaps/default/keymap.c
index 15e2fa45c..f799b8929 100644
--- a/keyboards/miuni32/keymaps/default/keymap.c
+++ b/keyboards/miuni32/keymaps/default/keymap.c
@@ -1,19 +1,62 @@
1#include "miuni32.h" 1#include "miuni32.h"
2 2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4[0] ={ 4 /* Level 0: Default Layer
5 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 5 * ,---------------------------------------------------------------------------------------.
6 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_RSFT, KC_ENT}, 6 * | Q | W | E | R | T | Y | U | I | O | P | BSP |
7 {KC_Z, KC_X, KC_C, KC_V, KC_V, KC_SPC, KC_B, KC_N, KC_M , MO(1), KC_RCTL} 7 * |---------------------------------------------------------------------------------------|
8 }, 8 * | A | S | D | F | G | H | J | K | L | ENT |LT(1|,)|
9[1] ={ 9 * |---------------------------------------------------------------------------------------|
10 {KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL}, 10 * |LT(3|Z)| X | C | V | NO | SPC | B | N | M | RSFT |LT(2|.)|
11 {KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_END, KC_TRNS}, 11 * |---------------------------------------------------------------------------------------|
12 {RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, KC_TRNS, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, RGB_MOD}, 12 */
13 } 13 [0] ={
14}; 14 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
15const uint16_t PROGMEM fn_actions[] = { 15 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, LT(1, KC_COMMA)},
16 16 {LT(3, KC_Z), KC_X, KC_C, KC_V, KC_NO, KC_SPC, KC_B, KC_N, KC_M, KC_RSFT, LT(2, KC_DOT)}
17 },
18 /* Level 1: Numbers Layer
19 * ,---------------------------------------------------------------------------------------.
20 * | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
21 * |---------------------------------------------------------------------------------------|
22 * | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | PGUP | TRNS |
23 * |---------------------------------------------------------------------------------------|
24 * | LATL | 1 | 2 | 3 | 0 | NO | LEFT | DOWN | RGHT | PGDN | RSHFT |
25 * |---------------------------------------------------------------------------------------|
26 */
27 [1] ={
28 {KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
29 {KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS},
30 {KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_RSFT}
31 },
32 /* Level 2: Symbols Layer
33 * ,---------------------------------------------------------------------------------------.
34 * | ! | @ | # | $ | % | ^ | & | * | - | + | = |
35 * |---------------------------------------------------------------------------------------|
36 * | { | } | [ | ] | TRNS | TRNS | \ | ; | : | ` | ? |
37 * |---------------------------------------------------------------------------------------|
38 * | LSFT | LCTL | L | T | TRNS | TAB | N | TRNS | TRNS | RCTL | TRNS |
39 * |---------------------------------------------------------------------------------------|
40 */
41 [2] ={
42 {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_PLUS, KC_EQL},
43 {KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_BSLS, KC_SCLN, KC_COLN, KC_GRV, KC_QUES},
44 {KC_LSFT, KC_LCTL, KC_L, KC_T, KC_TRNS, KC_TAB, KC_N, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS}
45 },
46 /* Level 3: RGB Layer
47 * ,---------------------------------------------------------------------------------------.
48 * | RESET | TRNS | TRNS | TRNS | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
49 * |---------------------------------------------------------------------------------------|
50 * |RGB_TOG|RGB_MOD|RGB_HUI|RGB_HUD| NO |RGB_SAI|RGB_SAD|RGB_VAI|RGB_VAD| TRNS | TRNS |
51 * |---------------------------------------------------------------------------------------|
52 * | TRNS | TRNS | TRNS | TRNS | NO | F7 | F8 | F9 | F10 | F11 | F12 |
53 * |---------------------------------------------------------------------------------------|
54 */
55 [3] ={
56 {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6},
57 {RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_NO, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS},
58 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}
59 }
17}; 60};
18 61
19const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 62const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -31,19 +74,46 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
31 return MACRO_NONE; 74 return MACRO_NONE;
32}; 75};
33 76
34
35void matrix_init_user(void) { 77void matrix_init_user(void) {
36
37} 78}
38 79
39void matrix_scan_user(void) { 80void matrix_scan_user(void) {
40
41} 81}
42 82
43bool process_record_user(uint16_t keycode, keyrecord_t *record) { 83bool process_record_user(uint16_t keycode, keyrecord_t *record) {
44 return true; 84 return true;
45} 85}
46 86
47void led_set_user(uint8_t usb_led) { 87void led_set_user(uint8_t usb_led) {
48 88
89 if (usb_led & (1 << USB_LED_NUM_LOCK)) {
90
91 } else {
92
93 }
94
95 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
96
97 } else {
98
99 }
100
101 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
102
103 } else {
104
105 }
106
107 if (usb_led & (1 << USB_LED_COMPOSE)) {
108
109 } else {
110
111 }
112
113 if (usb_led & (1 << USB_LED_KANA)) {
114
115 } else {
116
117 }
118
49} 119}
diff --git a/keyboards/miuni32/keymaps/ht_156/Makefile b/keyboards/miuni32/keymaps/ht_156/Makefile
new file mode 100644
index 000000000..88a3aea74
--- /dev/null
+++ b/keyboards/miuni32/keymaps/ht_156/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/miuni32/keymaps/ht_156/config.h b/keyboards/miuni32/keymaps/ht_156/config.h
new file mode 100644
index 000000000..df06a2620
--- /dev/null
+++ b/keyboards/miuni32/keymaps/ht_156/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif \ No newline at end of file
diff --git a/keyboards/miuni32/keymaps/ht_156/keymap.c b/keyboards/miuni32/keymaps/ht_156/keymap.c
new file mode 100644
index 000000000..e40180d49
--- /dev/null
+++ b/keyboards/miuni32/keymaps/ht_156/keymap.c
@@ -0,0 +1,181 @@
1#include "miuni32.h"
2
3// Keyboard layer definitions
4#define BASE 0
5#define NUMBERS 1
6#define SYMBOLS 2
7#define MEDIA 3
8
9// Keyboard macro defintions
10#define GIT_ST M(0)
11#define GIT_PU M(1)
12#define GIT_CM M(2)
13#define HM_DIR M(3)
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Level 0: Default Layer
17 * ,---------------------------------------------------------------------------------------.
18 * | Q | W | E | R | T | Y | U | I | O | P | BSP |
19 * |---------------------------------------------------------------------------------------|
20 * | A | S | D | F | G | H | J | K | L | ENT | RSFT |
21 * |---------------------------------------------------------------------------------------|
22 * |LT(2|Z)|LT(3|X)| C | V | B | SPC | N | M | , |LT(1|.)| RCTL |
23 * |---------------------------------------------------------------------------------------|
24 */
25 [BASE] ={
26 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
27 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_RSFT},
28 {LT(2, KC_Z), LT(3, KC_X), KC_C, KC_V, KC_B, KC_SPC, KC_N, KC_M, KC_COMMA, LT(1, KC_DOT), KC_RCTL}
29 },
30 /* Level 1: Numbers Layer
31 * ,---------------------------------------------------------------------------------------.
32 * | ESC | 7 | 8 | 9 | / | * | . | , | ( | ) | DEL |
33 * |---------------------------------------------------------------------------------------|
34 * | TAB | 4 | 5 | 6 | - | + | HOME | UP | END | INS | PGUP |
35 * |---------------------------------------------------------------------------------------|
36 * | LATL | 1 | 2 | 3 | 0 | ENT | LEFT | DOWN | RGHT | !TRNS!| PGDN |
37 * |---------------------------------------------------------------------------------------|
38 */
39 [NUMBERS] ={
40 {KC_ESC, KC_7, KC_8, KC_9, KC_SLSH, KC_ASTR, KC_DOT, KC_COMM, KC_LPRN, KC_RPRN, KC_DEL},
41 {KC_TAB, KC_4, KC_5, KC_6, KC_MINS, KC_PLUS, KC_HOME, KC_UP, KC_END, KC_INSERT, KC_PGUP},
42 {KC_LALT, KC_1, KC_2, KC_3, KC_0, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_PGDN}
43 },
44 /* Level 2: Symbols Layer
45 * ,---------------------------------------------------------------------------------------.
46 * | ! | @ | # | $ | % | ^ | & | * | _ | = | ? |
47 * |---------------------------------------------------------------------------------------|
48 * | RESET | LSFT | ~ | { | } | \ | | | ; | : | ` | " |
49 * |---------------------------------------------------------------------------------------|
50 * | !TRNS!| LCTL | TRNS | [ | ] | TAB | < | > | TRNS | RCTL | TRNS |
51 * |---------------------------------------------------------------------------------------|
52 */
53 [SYMBOLS] ={
54 {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_EQL, KC_QUES},
55 {RESET, KC_LSFT, KC_TILD, KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, KC_GRV, KC_DQUO},
56 {KC_TRNS, KC_LCTL, KC_TRNS, KC_LBRC, KC_RBRC, KC_TAB, KC_LABK, KC_RABK, KC_TRNS, KC_RCTL, KC_TRNS}
57 },
58 /* Level 3: Media Layer
59 * ,---------------------------------------------------------------------------------------.
60 * |RGB_TOG|RGB_HUI|RGB_SAI|RGB_VAI| GIT_CM| CALC | WREF | WFAV | MUTE | VOLD | VOLU |
61 * |---------------------------------------------------------------------------------------|
62 * |RGB_MOD|RGB_HUD|RGB_SAD|RGB_VAD| GIT_ST| WHOM | WBAK | WFWD | TRNS | STOP | PLAY |
63 * |---------------------------------------------------------------------------------------|
64 * | TRNS | !TRNS!| TRNS | HM_DIR| GIT_PU| MYCM | WSTP | WSCH | MSEL | MPRV | MNXT |
65 * |---------------------------------------------------------------------------------------|
66 */
67 [MEDIA] ={
68 {RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, GIT_CM, KC_CALC, KC_WREF, KC_WFAV, KC_MUTE, KC_VOLD, KC_VOLU},
69 {RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, GIT_ST, KC_WHOM, KC_WBAK, KC_WFWD, KC_TRNS, KC_MSTP, KC_MPLY},
70 {KC_TRNS, KC_TRNS, KC_TRNS, HM_DIR, GIT_PU, KC_MYCM, KC_WSTP, KC_WSCH, KC_MSEL, KC_MPRV, KC_MNXT}
71 }
72};
73
74void press_and_release_key(uint8_t code)
75{
76 register_code(code);
77 unregister_code(code);
78}
79
80void press_and_release_mod_key(uint8_t mod, uint8_t code)
81{
82 register_code(mod);
83 register_code(code);
84 unregister_code(code);
85 unregister_code(mod);
86}
87
88const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
89{
90 // MACRODOWN only works in this function
91 switch(id)
92 {
93 case 0:
94 if (record->event.pressed)
95 {
96 return MACRO(T(G), T(I), T(T), T(SPC),
97 T(S), T(T), T(A), T(T), T(U), T(S), END);
98 }
99 break;
100 case 1:
101 if (record->event.pressed)
102 {
103 return MACRO(T(G), T(I), T(T), T(SPC),
104 T(P), T(U), T(L), T(L), END);
105 }
106 break;
107 case 2:
108 if (record->event.pressed)
109 {
110 return MACRO(T(G), T(I), T(T), T(SPC),
111 T(C), T(O), T(M), T(M), T(I), T(T), END);
112 }
113 break;
114 case 3:
115 if (record->event.pressed)
116 {
117 /*press_and_release_key(KC_C);
118 press_and_release_key(KC_D);
119 press_and_release_key(KC_SPC);
120 press_and_release_mod_key(KC_LSFT, KC_GRV);
121 press_and_release_key(KC_SLSH);
122 press_and_release_key(KC_Q);
123 press_and_release_key(KC_M);
124 press_and_release_key(KC_K);
125 press_and_release_mod_key(KC_LSFT, KC_MINS);*/
126 return MACRO(I(0),
127 T(C), T(D), T(SPC),
128 D(LSFT), T(GRV), U(LSFT), T(SLSH),
129 T(Q), T(M), T(K), D(LSFT), T(MINS), U(LSFT),
130 T(F), T(I), T(R), T(M), T(W), T(A), T(R), T(E), T(SLSH),
131 T(K), T(E), T(Y), T(B), T(O), T(A), T(R), T(D), T(S), T(SLSH),
132 T(M), T(I), T(U), T(N), T(I), T(3), T(2), T(SLSH),
133 T(K), T(E), T(Y), T(M), T(A), T(P), T(S), END);
134 }
135 }
136 return MACRO_NONE;
137};
138
139void matrix_init_user(void) {
140}
141
142void matrix_scan_user(void) {
143}
144
145bool process_record_user(uint16_t keycode, keyrecord_t *record) {
146 return true;
147}
148
149void led_set_user(uint8_t usb_led) {
150
151 if (usb_led & (1 << USB_LED_NUM_LOCK)) {
152
153 } else {
154
155 }
156
157 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
158
159 } else {
160
161 }
162
163 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
164
165 } else {
166
167 }
168
169 if (usb_led & (1 << USB_LED_COMPOSE)) {
170
171 } else {
172
173 }
174
175 if (usb_led & (1 << USB_LED_KANA)) {
176
177 } else {
178
179 }
180
181}
diff --git a/keyboards/miuni32/keymaps/ht_156/readme.md b/keyboards/miuni32/keymaps/ht_156/readme.md
new file mode 100644
index 000000000..e46cc6d53
--- /dev/null
+++ b/keyboards/miuni32/keymaps/ht_156/readme.md
@@ -0,0 +1 @@
# ht_156's keymap for miuni32, using 33 keys
diff --git a/keyboards/miuni32/miuni32.h b/keyboards/miuni32/miuni32.h
index eecb17f81..8e1b4a38c 100644
--- a/keyboards/miuni32/miuni32.h
+++ b/keyboards/miuni32/miuni32.h
@@ -6,10 +6,10 @@
6#define KEYMAP( \ 6#define KEYMAP( \
7 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 7 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
8 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 8 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
9 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A ) { \ 9 K20, K21, K22, K23, K25, K26, K27, K28, K29, K2A ) { \
10 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A }, \ 10 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A }, \
11 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A }, \ 11 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A }, \
12 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A } \ 12 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_NO, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A } \
13} 13}
14 14
15#endif 15#endif
diff --git a/keyboards/phantom/keymaps/xyverz/keymap.c b/keyboards/phantom/keymaps/xyverz/keymap.c
index 4a1522638..621271f9f 100644
--- a/keyboards/phantom/keymaps/xyverz/keymap.c
+++ b/keyboards/phantom/keymaps/xyverz/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM fn_actions[] = {
76 76
77}; 77};
78 78
79void persistant_default_layer_set(uint16_t default_layer) { 79void persistent_default_layer_set(uint16_t default_layer) {
80 eeconfig_update_default_layer(default_layer); 80 eeconfig_update_default_layer(default_layer);
81 default_layer_set(default_layer); 81 default_layer_set(default_layer);
82} 82}
@@ -86,17 +86,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
86 switch(id) { 86 switch(id) {
87 case _DV: 87 case _DV:
88 if (record->event.pressed) { 88 if (record->event.pressed) {
89 persistant_default_layer_set(1UL<<_DV); 89 persistent_default_layer_set(1UL<<_DV);
90 } 90 }
91 break; 91 break;
92 case _QW: 92 case _QW:
93 if (record->event.pressed) { 93 if (record->event.pressed) {
94 persistant_default_layer_set(1UL<<_QW); 94 persistent_default_layer_set(1UL<<_QW);
95 } 95 }
96 break; 96 break;
97 case _CM: 97 case _CM:
98 if (record->event.pressed) { 98 if (record->event.pressed) {
99 persistant_default_layer_set(1UL<<_CM); 99 persistent_default_layer_set(1UL<<_CM);
100 } 100 }
101 break; 101 break;
102 } 102 }
diff --git a/keyboards/planck/keymaps/ab/keymap.c b/keyboards/planck/keymaps/ab/keymap.c
index 8e1d28a65..f3a9333e0 100644
--- a/keyboards/planck/keymaps/ab/keymap.c
+++ b/keyboards/planck/keymaps/ab/keymap.c
@@ -80,8 +80,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
80} 80}
81}; 81};
82 82
83// Set a layer persistantly. 83// Set a layer persistently.
84void persistant_default_layer_set(uint16_t default_layer) { 84void persistent_default_layer_set(uint16_t default_layer) {
85 eeconfig_update_default_layer(default_layer); 85 eeconfig_update_default_layer(default_layer);
86 default_layer_set(default_layer); 86 default_layer_set(default_layer);
87} 87}
diff --git a/keyboards/planck/keymaps/dbroqua/keymap.c b/keyboards/planck/keymaps/dbroqua/keymap.c
index 33929cb3a..975017161 100644
--- a/keyboards/planck/keymaps/dbroqua/keymap.c
+++ b/keyboards/planck/keymaps/dbroqua/keymap.c
@@ -149,7 +149,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
149#endif 149#endif
150 150
151 151
152void persistant_default_layer_set(uint16_t default_layer) { 152void persistent_default_layer_set(uint16_t default_layer) {
153 eeconfig_update_default_layer(default_layer); 153 eeconfig_update_default_layer(default_layer);
154 default_layer_set(default_layer); 154 default_layer_set(default_layer);
155} 155}
@@ -161,7 +161,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
161 #ifdef AUDIO_ENABLE 161 #ifdef AUDIO_ENABLE
162 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 162 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
163 #endif 163 #endif
164 persistant_default_layer_set(1UL<<_QWERTY); 164 persistent_default_layer_set(1UL<<_QWERTY);
165 } 165 }
166 return false; 166 return false;
167 break; 167 break;
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index d149019fe..61275cb26 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -186,7 +186,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
186#endif 186#endif
187 187
188 188
189void persistant_default_layer_set(uint16_t default_layer) { 189void persistent_default_layer_set(uint16_t default_layer) {
190 eeconfig_update_default_layer(default_layer); 190 eeconfig_update_default_layer(default_layer);
191 default_layer_set(default_layer); 191 default_layer_set(default_layer);
192} 192}
@@ -198,7 +198,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
198 #ifdef AUDIO_ENABLE 198 #ifdef AUDIO_ENABLE
199 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 199 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
200 #endif 200 #endif
201 persistant_default_layer_set(1UL<<_QWERTY); 201 persistent_default_layer_set(1UL<<_QWERTY);
202 } 202 }
203 return false; 203 return false;
204 break; 204 break;
@@ -207,7 +207,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
207 #ifdef AUDIO_ENABLE 207 #ifdef AUDIO_ENABLE
208 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 208 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
209 #endif 209 #endif
210 persistant_default_layer_set(1UL<<_COLEMAK); 210 persistent_default_layer_set(1UL<<_COLEMAK);
211 } 211 }
212 return false; 212 return false;
213 break; 213 break;
@@ -216,7 +216,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
216 #ifdef AUDIO_ENABLE 216 #ifdef AUDIO_ENABLE
217 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 217 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
218 #endif 218 #endif
219 persistant_default_layer_set(1UL<<_DVORAK); 219 persistent_default_layer_set(1UL<<_DVORAK);
220 } 220 }
221 return false; 221 return false;
222 break; 222 break;
diff --git a/keyboards/planck/keymaps/dshields/Makefile b/keyboards/planck/keymaps/dshields/Makefile
new file mode 100644
index 000000000..9e18a3542
--- /dev/null
+++ b/keyboards/planck/keymaps/dshields/Makefile
@@ -0,0 +1,12 @@
1ifndef QUANTUM_DIR
2 include ../../../../Makefile
3endif
4
5MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
6COMMAND_ENABLE = yes # Commands for debug and configuration
7BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
8# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
9SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
10TAP_DANCE_ENABLE = yes
11AUDIO_ENABLE = no
12API_SYSEX_ENABLE = no
diff --git a/keyboards/planck/keymaps/dshields/config.h b/keyboards/planck/keymaps/dshields/config.h
new file mode 100644
index 000000000..4d5be0a26
--- /dev/null
+++ b/keyboards/planck/keymaps/dshields/config.h
@@ -0,0 +1,31 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#define _______ KC_TRNS
7#define XXXXXXX KC_NO
8
9#define ONESHOT_TAP_TOGGLE 2
10#define ONESHOT_TIMEOUT 500
11
12#define MOUSEKEY_INTERVAL 20
13#define MOUSEKEY_DELAY 0
14#define MOUSEKEY_TIME_TO_MAX 60
15#define MOUSEKEY_MAX_SPEED 7
16#define MOUSEKEY_WHEEL_DELAY 0
17
18#define DM_PLAY DYN_MACRO_PLAY1
19#define DM_STRT DYN_REC_START1
20#define DM_STOP DYN_REC_STOP
21
22#define OSL_RSE OSL(RSE)
23#define OSL_LWR OSL(LWR)
24#define OSL_FUN OSL(FUN)
25
26#define OSM_CTL OSM(MOD_LCTL)
27#define OSM_ALT OSM(MOD_LALT)
28#define OSM_SFT OSM(MOD_LSFT)
29
30#endif
31
diff --git a/keyboards/planck/keymaps/dshields/keyboard-layout.jpg b/keyboards/planck/keymaps/dshields/keyboard-layout.jpg
new file mode 100644
index 000000000..142f82130
--- /dev/null
+++ b/keyboards/planck/keymaps/dshields/keyboard-layout.jpg
Binary files differ
diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c
new file mode 100644
index 000000000..ed7621c77
--- /dev/null
+++ b/keyboards/planck/keymaps/dshields/keymap.c
@@ -0,0 +1,100 @@
1#include "planck.h"
2#include "backlight.h"
3#include "config.h"
4#include "action_layer.h"
5#include "eeconfig.h"
6
7extern keymap_config_t keymap_config;
8
9enum planck_layers { DEF, LWR, RSE, FUN };
10enum planck_keycodes { DYNAMIC_MACRO_RANGE = SAFE_RANGE };
11enum tap_dance_keys { TD_SCLN };
12
13#include "dynamic_macro.h"
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /* Default
17 * ,-----------------------------------------------------------------------------------.
18 * | Q | W | E | R | T | Esc | Bksp | Y | U | I | O | P |
19 * |------+------+------+------+------+-------------+------+------+------+------+------|
20 * | A | S | D | F | G | Tab | Enter| H | J | K | L | ; |
21 * |------+------+------+------+------+------|------+------+------+------+------+------|
22 * | Z | X | C | V | B | Shift|DmPlay| N | M | , | . | / |
23 * |------+------+------+------+------+------+------+------+------+------+------+------|
24 * | Ctrl | Super| Alt | Fun | Lower| Space | Raise| Left | Down | Up |Right |
25 * `-----------------------------------------------------------------------------------'
26 */
27 [DEF] = {
28 {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P},
29 {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, TD(TD_SCLN)},
30 {KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
31 {OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, KC_SPC, KC_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
32 },
33 /* Lower
34 * ,-----------------------------------------------------------------------------------.
35 * | ! | @ | # | $ | % | | | ^ | & | * | ( | ) |
36 * |------+------+------+------+------+-------------+------+------+------+------+------|
37 * | ~ | | | | | | | _ | + | | { | } |
38 * |------+------+------+------+------+------|------+------+------+------+------+------|
39 * | | | | | | | | | | | " | | |
40 * |------+------+------+------+------+------+------+------+------+------+------+------|
41 * | | | | | | | | Home | PgDn | PgUp | End |
42 * `-----------------------------------------------------------------------------------'
43 */
44 [LWR] = {
45 {KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN},
46 {S(KC_GRV), _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, S(KC_LBRC), S(KC_RBRC)},
47 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, S(KC_QUOT), S(KC_BSLS)},
48 {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
49 },
50 /* Raise
51 * ,-----------------------------------------------------------------------------------.
52 * | 1 | 2 | 3 | 4 | 5 | | | 6 | 7 | 8 | 9 | 0 |
53 * |------+------+------+------+------+-------------+------+------+------+------+------|
54 * | ` | | | | | | | - | = | | [ | ] |
55 * |------+------+------+------+------+------|------+------+------+------+------+------|
56 * | | | | | | | | | | | ' | \ |
57 * |------+------+------+------+------+------+------+------+------+------+------+------|
58 * | | | | | | | | Home | PgDn | PgUp | End |
59 * `-----------------------------------------------------------------------------------'
60 */
61 [RSE] = {
62 {KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0},
63 {KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC},
64 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS},
65 {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
66 },
67 /* Function
68 * ,-----------------------------------------------------------------------------------.
69 * | F1 | F2 | F3 | F4 | F5 | Reset|Delete| F6 | F7 | F8 | F9 | F10 |
70 * |------+------+------+------+------+-------------+------+------+------+------+------|
71 * | F11 | F12 | F13 | F14 | F15 | | | |MsWhLt|MsWhDn|MsWhUp|MsWhRt|
72 * |------+------+------+------+------+------|------+------+------+------+------+------|
73 * |BlTggl|BlStep| | | |DmStrt|DmStop| | |MsBtn1|MsBtn2|MsBtn3|
74 * |------+------+------+------+------+------+------+------+------+------+------+------|
75 * | | | | | | | |MsLeft|MsDown| MsUp |MsRght|
76 * `-----------------------------------------------------------------------------------'
77 */
78 [FUN] = {
79 {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10},
80 {KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R},
81 {BL_TOGG, BL_STEP, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3},
82 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R}
83 },
84
85};
86
87qk_tap_dance_action_t tap_dance_actions[] = {
88 [TD_SCLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, S(KC_SCLN)) // once for semi-colon, twice for colon
89};
90
91bool process_record_user(uint16_t keycode, keyrecord_t *record) {
92 if (!process_record_dynamic_macro(keycode, record)) {
93 return false;
94 }
95 return true;
96}
97
98void matrix_init_user(void) {
99}
100
diff --git a/keyboards/planck/keymaps/dshields/readme.md b/keyboards/planck/keymaps/dshields/readme.md
new file mode 100644
index 000000000..447eaae97
--- /dev/null
+++ b/keyboards/planck/keymaps/dshields/readme.md
@@ -0,0 +1,12 @@
1
2About
3------
4
5A simple split qwerty Planck layout that makes use of one-shot modifiers,
6one-shot layers, tap-dance keys and dynamic macros.
7
8Layout
9-------
10
11![Layout](keyboard-layout.jpg "Keyboard Layout")
12
diff --git a/keyboards/planck/keymaps/espynn/keymap.c b/keyboards/planck/keymaps/espynn/keymap.c
index a24ad9d48..feb962331 100644
--- a/keyboards/planck/keymaps/espynn/keymap.c
+++ b/keyboards/planck/keymaps/espynn/keymap.c
@@ -88,8 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
88} 88}
89}; 89};
90 90
91// Set a layer persistantly. 91// Set a layer persistently.
92void persistant_default_layer_set(uint16_t default_layer) { 92void persistent_default_layer_set(uint16_t default_layer) {
93 eeconfig_update_default_layer(default_layer); 93 eeconfig_update_default_layer(default_layer);
94 default_layer_set(default_layer); 94 default_layer_set(default_layer);
95} 95}
diff --git a/keyboards/planck/keymaps/experimental/keymap.c b/keyboards/planck/keymaps/experimental/keymap.c
index 569dbcc8a..17fad784e 100644
--- a/keyboards/planck/keymaps/experimental/keymap.c
+++ b/keyboards/planck/keymaps/experimental/keymap.c
@@ -204,7 +204,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
204 204
205 205
206 206
207void persistant_default_layer_set(uint16_t default_layer) { 207void persistent_default_layer_set(uint16_t default_layer) {
208 eeconfig_update_default_layer(default_layer); 208 eeconfig_update_default_layer(default_layer);
209 default_layer_set(default_layer); 209 default_layer_set(default_layer);
210} 210}
@@ -217,7 +217,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
217 #ifdef AUDIO_ENABLE 217 #ifdef AUDIO_ENABLE
218 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 218 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
219 #endif 219 #endif
220 persistant_default_layer_set(1UL<<_QWERTY); 220 persistent_default_layer_set(1UL<<_QWERTY);
221 } 221 }
222 break; 222 break;
223 return false; 223 return false;
@@ -226,7 +226,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
226 #ifdef AUDIO_ENABLE 226 #ifdef AUDIO_ENABLE
227 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 227 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
228 #endif 228 #endif
229 persistant_default_layer_set(1UL<<_COLEMAK); 229 persistent_default_layer_set(1UL<<_COLEMAK);
230 } 230 }
231 break; 231 break;
232 return false; 232 return false;
@@ -235,7 +235,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
235 #ifdef AUDIO_ENABLE 235 #ifdef AUDIO_ENABLE
236 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 236 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
237 #endif 237 #endif
238 persistant_default_layer_set(1UL<<_DVORAK); 238 persistent_default_layer_set(1UL<<_DVORAK);
239 } 239 }
240 break; 240 break;
241 return false; 241 return false;
diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c
index 503976fa2..6a649f2c8 100644
--- a/keyboards/planck/keymaps/impossible/keymap.c
+++ b/keyboards/planck/keymaps/impossible/keymap.c
@@ -164,7 +164,7 @@ float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
164#endif 164#endif
165 165
166 166
167void persistant_default_layer_set(uint16_t default_layer) { 167void persistent_default_layer_set(uint16_t default_layer) {
168 eeconfig_update_default_layer(default_layer); 168 eeconfig_update_default_layer(default_layer);
169 default_layer_set(default_layer); 169 default_layer_set(default_layer);
170} 170}
@@ -176,7 +176,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
176 #ifdef AUDIO_ENABLE 176 #ifdef AUDIO_ENABLE
177 PLAY_NOTE_ARRAY(tone_workman, false, 0); 177 PLAY_NOTE_ARRAY(tone_workman, false, 0);
178 #endif 178 #endif
179 persistant_default_layer_set(1UL<<_WORKMAN); 179 persistent_default_layer_set(1UL<<_WORKMAN);
180 } 180 }
181 return false; 181 return false;
182 break; 182 break;
@@ -185,7 +185,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
185 #ifdef AUDIO_ENABLE 185 #ifdef AUDIO_ENABLE
186 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 186 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
187 #endif 187 #endif
188 persistant_default_layer_set(1UL<<_QWERTY); 188 persistent_default_layer_set(1UL<<_QWERTY);
189 } 189 }
190 return false; 190 return false;
191 break; 191 break;
@@ -200,7 +200,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
200 keymap_config.raw = eeconfig_read_keymap(); 200 keymap_config.raw = eeconfig_read_keymap();
201 keymap_config.nkro = 1; 201 keymap_config.nkro = 1;
202 eeconfig_update_keymap(keymap_config.raw); 202 eeconfig_update_keymap(keymap_config.raw);
203 persistant_default_layer_set(1UL<<_PLOVER); 203 persistent_default_layer_set(1UL<<_PLOVER);
204 } 204 }
205 return false; 205 return false;
206 break; 206 break;
diff --git a/keyboards/planck/keymaps/jeebak/keymap.c b/keyboards/planck/keymaps/jeebak/keymap.c
index cb7ccb588..7b9a68113 100644
--- a/keyboards/planck/keymaps/jeebak/keymap.c
+++ b/keyboards/planck/keymaps/jeebak/keymap.c
@@ -270,7 +270,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
270#endif 270#endif
271 271
272 272
273void persistant_default_layer_set(uint16_t default_layer) { 273void persistent_default_layer_set(uint16_t default_layer) {
274 eeconfig_update_default_layer(default_layer); 274 eeconfig_update_default_layer(default_layer);
275 default_layer_set(default_layer); 275 default_layer_set(default_layer);
276} 276}
diff --git a/keyboards/planck/keymaps/jeebak/readme.md b/keyboards/planck/keymaps/jeebak/readme.md
index e1dd1dca5..7c4bf908c 100644
--- a/keyboards/planck/keymaps/jeebak/readme.md
+++ b/keyboards/planck/keymaps/jeebak/readme.md
@@ -6,7 +6,7 @@ needed, they will be mapped to home row keys. The `keymap.c` file will contain
6the exact changes. The diagrams in this README shows the highlights of the 6the exact changes. The diagrams in this README shows the highlights of the
7changes from the default mappings. 7changes from the default mappings.
8 8
9I also decided to change all calls to `persistant_default_layer_set()` to 9I also decided to change all calls to `persistent_default_layer_set()` to
10`default_layer_set()` since this is my personal perference. 10`default_layer_set()` since this is my personal perference.
11 11
12## Macros 12## Macros
diff --git a/keyboards/planck/keymaps/jhenahan/keymap.c b/keyboards/planck/keymaps/jhenahan/keymap.c
index 2bda4b695..bf9735be8 100644
--- a/keyboards/planck/keymaps/jhenahan/keymap.c
+++ b/keyboards/planck/keymaps/jhenahan/keymap.c
@@ -183,7 +183,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
183#endif 183#endif
184 184
185 185
186void persistant_default_layer_set(uint16_t default_layer) { 186void persistent_default_layer_set(uint16_t default_layer) {
187 eeconfig_update_default_layer(default_layer); 187 eeconfig_update_default_layer(default_layer);
188 default_layer_set(default_layer); 188 default_layer_set(default_layer);
189} 189}
@@ -195,7 +195,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
195 #ifdef AUDIO_ENABLE 195 #ifdef AUDIO_ENABLE
196 PLAY_NOTE_ARRAY(tone_workman, false, 0); 196 PLAY_NOTE_ARRAY(tone_workman, false, 0);
197 #endif 197 #endif
198 persistant_default_layer_set(1UL<<_WORKMAN); 198 persistent_default_layer_set(1UL<<_WORKMAN);
199 } 199 }
200 return false; 200 return false;
201 break; 201 break;
@@ -212,7 +212,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
212 #ifdef AUDIO_ENABLE 212 #ifdef AUDIO_ENABLE
213 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 213 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
214 #endif 214 #endif
215 persistant_default_layer_set(1UL<<_QWERTY); 215 persistent_default_layer_set(1UL<<_QWERTY);
216 } 216 }
217 return false; 217 return false;
218 break; 218 break;
diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index e371e5b70..f9fa7318a 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -213,7 +213,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
213#endif 213#endif
214 214
215 215
216void persistant_default_layer_set(uint16_t default_layer) { 216void persistent_default_layer_set(uint16_t default_layer) {
217 eeconfig_update_default_layer(default_layer); 217 eeconfig_update_default_layer(default_layer);
218 default_layer_set(default_layer); 218 default_layer_set(default_layer);
219} 219}
@@ -251,7 +251,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
251 #ifdef AUDIO_ENABLE 251 #ifdef AUDIO_ENABLE
252 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 252 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
253 #endif 253 #endif
254 persistant_default_layer_set(1UL<<_QWERTY); 254 persistent_default_layer_set(1UL<<_QWERTY);
255 } 255 }
256 return false; 256 return false;
257 break; 257 break;
@@ -260,7 +260,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
260 #ifdef AUDIO_ENABLE 260 #ifdef AUDIO_ENABLE
261 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 261 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
262 #endif 262 #endif
263 persistant_default_layer_set(1UL<<_COLEMAK); 263 persistent_default_layer_set(1UL<<_COLEMAK);
264 } 264 }
265 return false; 265 return false;
266 break; 266 break;
@@ -269,7 +269,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
269 #ifdef AUDIO_ENABLE 269 #ifdef AUDIO_ENABLE
270 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 270 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
271 #endif 271 #endif
272 persistant_default_layer_set(1UL<<_DVORAK); 272 persistent_default_layer_set(1UL<<_DVORAK);
273 } 273 }
274 return false; 274 return false;
275 break; 275 break;
diff --git a/keyboards/planck/keymaps/pete/keymap.c b/keyboards/planck/keymaps/pete/keymap.c
index 38275b403..d991bece1 100644
--- a/keyboards/planck/keymaps/pete/keymap.c
+++ b/keyboards/planck/keymaps/pete/keymap.c
@@ -143,7 +143,7 @@ float goodbye[][2] = SONG(GOODBYE_SOUND);
143#endif 143#endif
144 144
145 145
146void persistant_default_layer_set(uint16_t default_layer) { 146void persistent_default_layer_set(uint16_t default_layer) {
147 eeconfig_update_default_layer(default_layer); 147 eeconfig_update_default_layer(default_layer);
148 default_layer_set(default_layer); 148 default_layer_set(default_layer);
149} 149}
@@ -156,7 +156,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
156 #ifdef AUDIO_ENABLE 156 #ifdef AUDIO_ENABLE
157 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 157 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
158 #endif 158 #endif
159 persistant_default_layer_set(1UL<<_QWERTY); 159 persistent_default_layer_set(1UL<<_QWERTY);
160 } 160 }
161 break; 161 break;
162 case _COLEMAK: 162 case _COLEMAK:
@@ -164,7 +164,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
164 #ifdef AUDIO_ENABLE 164 #ifdef AUDIO_ENABLE
165 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 165 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
166 #endif 166 #endif
167 persistant_default_layer_set(1UL<<_COLEMAK); 167 persistent_default_layer_set(1UL<<_COLEMAK);
168 } 168 }
169 break; 169 break;
170 case _DVORAK: 170 case _DVORAK:
@@ -172,7 +172,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
172 #ifdef AUDIO_ENABLE 172 #ifdef AUDIO_ENABLE
173 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 173 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
174 #endif 174 #endif
175 persistant_default_layer_set(1UL<<_DVORAK); 175 persistent_default_layer_set(1UL<<_DVORAK);
176 } 176 }
177 break; 177 break;
178 case _LOWER: 178 case _LOWER:
diff --git a/keyboards/planck/keymaps/premek/keymap.c b/keyboards/planck/keymaps/premek/keymap.c
index 9b212ab25..0eb35a9f8 100644
--- a/keyboards/planck/keymaps/premek/keymap.c
+++ b/keyboards/planck/keymaps/premek/keymap.c
@@ -100,7 +100,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
100#endif 100#endif
101 101
102 102
103void persistant_default_layer_set(uint16_t default_layer) { 103void persistent_default_layer_set(uint16_t default_layer) {
104 eeconfig_update_default_layer(default_layer); 104 eeconfig_update_default_layer(default_layer);
105 default_layer_set(default_layer); 105 default_layer_set(default_layer);
106} 106}
@@ -112,7 +112,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
112 #ifdef AUDIO_ENABLE 112 #ifdef AUDIO_ENABLE
113 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 113 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
114 #endif 114 #endif
115 persistant_default_layer_set(1UL<<_QWERTY); 115 persistent_default_layer_set(1UL<<_QWERTY);
116 } 116 }
117 return false; 117 return false;
118 break; 118 break;
@@ -121,7 +121,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
121 #ifdef AUDIO_ENABLE 121 #ifdef AUDIO_ENABLE
122 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 122 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
123 #endif 123 #endif
124 persistant_default_layer_set(1UL<<_COLEMAK); 124 persistent_default_layer_set(1UL<<_COLEMAK);
125 } 125 }
126 return false; 126 return false;
127 break; 127 break;
@@ -130,7 +130,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
130 #ifdef AUDIO_ENABLE 130 #ifdef AUDIO_ENABLE
131 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 131 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
132 #endif 132 #endif
133 persistant_default_layer_set(1UL<<_DVORAK); 133 persistent_default_layer_set(1UL<<_DVORAK);
134 } 134 }
135 return false; 135 return false;
136 break; 136 break;
diff --git a/keyboards/planck/keymaps/pvc/keymap.c b/keyboards/planck/keymaps/pvc/keymap.c
index 6ad95832d..741e8e650 100644
--- a/keyboards/planck/keymaps/pvc/keymap.c
+++ b/keyboards/planck/keymaps/pvc/keymap.c
@@ -233,7 +233,7 @@ float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
233 233
234#endif /* AUDIO_ENABLE */ 234#endif /* AUDIO_ENABLE */
235 235
236void persistant_default_layer_set(uint16_t default_layer) 236void persistent_default_layer_set(uint16_t default_layer)
237{ 237{
238 eeconfig_update_default_layer(default_layer); 238 eeconfig_update_default_layer(default_layer);
239 default_layer_set(default_layer); 239 default_layer_set(default_layer);
@@ -344,7 +344,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
344 case MACRO_QWERTY: 344 case MACRO_QWERTY:
345 if (record->event.pressed) 345 if (record->event.pressed)
346 { 346 {
347 persistant_default_layer_set(1UL<<LAYER_QWERTY); 347 persistent_default_layer_set(1UL<<LAYER_QWERTY);
348 } 348 }
349 break; 349 break;
350 350
diff --git a/keyboards/planck/keymaps/sgoodwin/keymap.c b/keyboards/planck/keymaps/sgoodwin/keymap.c
index 4d5d3d7ef..bf8249cc8 100644
--- a/keyboards/planck/keymaps/sgoodwin/keymap.c
+++ b/keyboards/planck/keymaps/sgoodwin/keymap.c
@@ -139,7 +139,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
139#endif 139#endif
140 140
141 141
142void persistant_default_layer_set(uint16_t default_layer) { 142void persistent_default_layer_set(uint16_t default_layer) {
143 eeconfig_update_default_layer(default_layer); 143 eeconfig_update_default_layer(default_layer);
144 default_layer_set(default_layer); 144 default_layer_set(default_layer);
145} 145}
@@ -151,7 +151,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
151 #ifdef AUDIO_ENABLE 151 #ifdef AUDIO_ENABLE
152 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 152 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
153 #endif 153 #endif
154 persistant_default_layer_set(1UL<<_QWERTY); 154 persistent_default_layer_set(1UL<<_QWERTY);
155 } 155 }
156 return false; 156 return false;
157 break; 157 break;
@@ -160,7 +160,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
160 #ifdef AUDIO_ENABLE 160 #ifdef AUDIO_ENABLE
161 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 161 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
162 #endif 162 #endif
163 persistant_default_layer_set(1UL<<_COLEMAK); 163 persistent_default_layer_set(1UL<<_COLEMAK);
164 } 164 }
165 return false; 165 return false;
166 break; 166 break;
diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c
index 708f699da..8cf24d472 100644
--- a/keyboards/planck/keymaps/smt/keymap.c
+++ b/keyboards/planck/keymaps/smt/keymap.c
@@ -162,7 +162,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
162#endif 162#endif
163 163
164 164
165void persistant_default_layer_set(uint16_t default_layer) { 165void persistent_default_layer_set(uint16_t default_layer) {
166 eeconfig_update_default_layer(default_layer); 166 eeconfig_update_default_layer(default_layer);
167 default_layer_set(default_layer); 167 default_layer_set(default_layer);
168} 168}
@@ -174,7 +174,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
174 #ifdef AUDIO_ENABLE 174 #ifdef AUDIO_ENABLE
175 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 175 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
176 #endif 176 #endif
177 persistant_default_layer_set(1UL<<_QWERTY); 177 persistent_default_layer_set(1UL<<_QWERTY);
178 } 178 }
179 return false; 179 return false;
180 break; 180 break;
@@ -183,7 +183,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
183 #ifdef AUDIO_ENABLE 183 #ifdef AUDIO_ENABLE
184 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 184 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
185 #endif 185 #endif
186 persistant_default_layer_set(1UL<<_COLEMAK); 186 persistent_default_layer_set(1UL<<_COLEMAK);
187 } 187 }
188 return false; 188 return false;
189 break; 189 break;
@@ -192,7 +192,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
192 #ifdef AUDIO_ENABLE 192 #ifdef AUDIO_ENABLE
193 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 193 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
194 #endif 194 #endif
195 persistant_default_layer_set(1UL<<_DVORAK); 195 persistent_default_layer_set(1UL<<_DVORAK);
196 } 196 }
197 return false; 197 return false;
198 break; 198 break;
diff --git a/keyboards/planck/keymaps/thermal_printer/keymap.c b/keyboards/planck/keymaps/thermal_printer/keymap.c
index e88059731..c047d56b3 100644
--- a/keyboards/planck/keymaps/thermal_printer/keymap.c
+++ b/keyboards/planck/keymaps/thermal_printer/keymap.c
@@ -183,7 +183,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
183#endif 183#endif
184 184
185 185
186void persistant_default_layer_set(uint16_t default_layer) { 186void persistent_default_layer_set(uint16_t default_layer) {
187 eeconfig_update_default_layer(default_layer); 187 eeconfig_update_default_layer(default_layer);
188 default_layer_set(default_layer); 188 default_layer_set(default_layer);
189} 189}
@@ -195,7 +195,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
195 #ifdef AUDIO_ENABLE 195 #ifdef AUDIO_ENABLE
196 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 196 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
197 #endif 197 #endif
198 persistant_default_layer_set(1UL<<_QWERTY); 198 persistent_default_layer_set(1UL<<_QWERTY);
199 } 199 }
200 return false; 200 return false;
201 break; 201 break;
@@ -204,7 +204,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
204 #ifdef AUDIO_ENABLE 204 #ifdef AUDIO_ENABLE
205 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 205 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
206 #endif 206 #endif
207 persistant_default_layer_set(1UL<<_COLEMAK); 207 persistent_default_layer_set(1UL<<_COLEMAK);
208 } 208 }
209 return false; 209 return false;
210 break; 210 break;
@@ -213,7 +213,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
213 #ifdef AUDIO_ENABLE 213 #ifdef AUDIO_ENABLE
214 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 214 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
215 #endif 215 #endif
216 persistant_default_layer_set(1UL<<_DVORAK); 216 persistent_default_layer_set(1UL<<_DVORAK);
217 } 217 }
218 return false; 218 return false;
219 break; 219 break;
diff --git a/keyboards/planck/keymaps/unicode/keymap.c b/keyboards/planck/keymaps/unicode/keymap.c
index 1b4ca8ed7..51b980e08 100644
--- a/keyboards/planck/keymaps/unicode/keymap.c
+++ b/keyboards/planck/keymaps/unicode/keymap.c
@@ -209,7 +209,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
209 209
210 210
211 211
212void persistant_default_layer_set(uint16_t default_layer) { 212void persistent_default_layer_set(uint16_t default_layer) {
213 eeconfig_update_default_layer(default_layer); 213 eeconfig_update_default_layer(default_layer);
214 default_layer_set(default_layer); 214 default_layer_set(default_layer);
215} 215}
@@ -222,7 +222,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
222 #ifdef AUDIO_ENABLE 222 #ifdef AUDIO_ENABLE
223 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 223 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
224 #endif 224 #endif
225 persistant_default_layer_set(1UL<<_QWERTY); 225 persistent_default_layer_set(1UL<<_QWERTY);
226 } 226 }
227 break; 227 break;
228 case _COLEMAK: 228 case _COLEMAK:
@@ -230,7 +230,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
230 #ifdef AUDIO_ENABLE 230 #ifdef AUDIO_ENABLE
231 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 231 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
232 #endif 232 #endif
233 persistant_default_layer_set(1UL<<_COLEMAK); 233 persistent_default_layer_set(1UL<<_COLEMAK);
234 } 234 }
235 break; 235 break;
236 case _DVORAK: 236 case _DVORAK:
@@ -238,7 +238,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
238 #ifdef AUDIO_ENABLE 238 #ifdef AUDIO_ENABLE
239 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 239 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
240 #endif 240 #endif
241 persistant_default_layer_set(1UL<<_DVORAK); 241 persistent_default_layer_set(1UL<<_DVORAK);
242 } 242 }
243 break; 243 break;
244 case _LOWER: 244 case _LOWER:
diff --git a/keyboards/planck/keymaps/vifon/keymap.c b/keyboards/planck/keymaps/vifon/keymap.c
index ee0c0ac36..ecd5c2cc4 100644
--- a/keyboards/planck/keymaps/vifon/keymap.c
+++ b/keyboards/planck/keymaps/vifon/keymap.c
@@ -107,7 +107,8 @@ const uint16_t PROGMEM fn_actions[] = {
107bool process_record_user(uint16_t keycode, keyrecord_t *record) { 107bool process_record_user(uint16_t keycode, keyrecord_t *record) {
108 static uint16_t key_timer; 108 static uint16_t key_timer;
109 109
110 if (!process_record_dynamic_macro(keycode, record)) { 110 uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode);
111 if (!process_record_dynamic_macro(macro_kc, record)) {
111 return false; 112 return false;
112 } 113 }
113 114
diff --git a/keyboards/planck/keymaps/xyverz/keymap.c b/keyboards/planck/keymaps/xyverz/keymap.c
index 329bb043a..c60c6e719 100644
--- a/keyboards/planck/keymaps/xyverz/keymap.c
+++ b/keyboards/planck/keymaps/xyverz/keymap.c
@@ -159,7 +159,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
159#endif 159#endif
160 160
161 161
162void persistant_default_layer_set(uint16_t default_layer) { 162void persistent_default_layer_set(uint16_t default_layer) {
163 eeconfig_update_default_layer(default_layer); 163 eeconfig_update_default_layer(default_layer);
164 default_layer_set(default_layer); 164 default_layer_set(default_layer);
165} 165}
@@ -171,7 +171,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
171 #ifdef AUDIO_ENABLE 171 #ifdef AUDIO_ENABLE
172 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 172 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
173 #endif 173 #endif
174 persistant_default_layer_set(1UL<<_QWERTY); 174 persistent_default_layer_set(1UL<<_QWERTY);
175 } 175 }
176 return false; 176 return false;
177 break; 177 break;
@@ -180,7 +180,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
180 #ifdef AUDIO_ENABLE 180 #ifdef AUDIO_ENABLE
181 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 181 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
182 #endif 182 #endif
183 persistant_default_layer_set(1UL<<_COLEMAK); 183 persistent_default_layer_set(1UL<<_COLEMAK);
184 } 184 }
185 return false; 185 return false;
186 break; 186 break;
@@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
189 #ifdef AUDIO_ENABLE 189 #ifdef AUDIO_ENABLE
190 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 190 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
191 #endif 191 #endif
192 persistant_default_layer_set(1UL<<_DVORAK); 192 persistent_default_layer_set(1UL<<_DVORAK);
193 } 193 }
194 return false; 194 return false;
195 break; 195 break;
diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c
index 2c47b2289..0b1dd7619 100644
--- a/keyboards/planck/keymaps/zach/zach_common_functions.c
+++ b/keyboards/planck/keymaps/zach/zach_common_functions.c
@@ -16,7 +16,7 @@ void tap(uint16_t keycode){
16 unregister_code(keycode); 16 unregister_code(keycode);
17}; 17};
18 18
19void persistant_default_layer_set(uint16_t default_layer){ 19void persistent_default_layer_set(uint16_t default_layer){
20 eeconfig_update_default_layer(default_layer); 20 eeconfig_update_default_layer(default_layer);
21 default_layer_set(default_layer); 21 default_layer_set(default_layer);
22}; 22};
@@ -200,7 +200,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
200 switch (keycode) { 200 switch (keycode) {
201 case COLEMAK: 201 case COLEMAK:
202 if(record->event.pressed){ 202 if(record->event.pressed){
203 persistant_default_layer_set(1UL<<_COLEMAK); 203 persistent_default_layer_set(1UL<<_COLEMAK);
204 #ifdef AUDIO_ENABLE 204 #ifdef AUDIO_ENABLE
205 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 205 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
206 #endif 206 #endif
@@ -209,7 +209,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
209 break; 209 break;
210 case SWCOLE: 210 case SWCOLE:
211 if(record->event.pressed){ 211 if(record->event.pressed){
212 persistant_default_layer_set(1UL<<_SWCOLE); 212 persistent_default_layer_set(1UL<<_SWCOLE);
213 #ifdef AUDIO_ENABLE 213 #ifdef AUDIO_ENABLE
214 PLAY_NOTE_ARRAY(tone_swcole, false, 0); 214 PLAY_NOTE_ARRAY(tone_swcole, false, 0);
215 #endif 215 #endif
diff --git a/keyboards/preonic/keymaps/0xdec/keymap.c b/keyboards/preonic/keymaps/0xdec/keymap.c
index 6c4b8a6fa..2f06c8c31 100644
--- a/keyboards/preonic/keymaps/0xdec/keymap.c
+++ b/keyboards/preonic/keymaps/0xdec/keymap.c
@@ -134,7 +134,7 @@ void matrix_init_user(void) {
134 #endif 134 #endif
135} 135}
136 136
137void persistant_default_layer_set(uint16_t default_layer) { 137void persistent_default_layer_set(uint16_t default_layer) {
138 eeconfig_update_default_layer(default_layer); 138 eeconfig_update_default_layer(default_layer);
139 default_layer_set(default_layer); 139 default_layer_set(default_layer);
140} 140}
@@ -146,7 +146,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
146 #ifdef AUDIO_ENABLE 146 #ifdef AUDIO_ENABLE
147 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 147 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
148 #endif 148 #endif
149 persistant_default_layer_set(1UL<<_COLEMAK); 149 persistent_default_layer_set(1UL<<_COLEMAK);
150 } 150 }
151 break; 151 break;
152 case GAME: 152 case GAME:
@@ -154,7 +154,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
154 #ifdef AUDIO_ENABLE 154 #ifdef AUDIO_ENABLE
155 PLAY_NOTE_ARRAY(tone_game, false, STACCATO); 155 PLAY_NOTE_ARRAY(tone_game, false, STACCATO);
156 #endif 156 #endif
157 persistant_default_layer_set(1UL<<_GAME); 157 persistent_default_layer_set(1UL<<_GAME);
158 } 158 }
159 break; 159 break;
160 case RAISE: 160 case RAISE:
diff --git a/keyboards/preonic/keymaps/CMD-Preonic/keymap.c b/keyboards/preonic/keymaps/CMD-Preonic/keymap.c
index a500a3649..7b5be0734 100644
--- a/keyboards/preonic/keymaps/CMD-Preonic/keymap.c
+++ b/keyboards/preonic/keymaps/CMD-Preonic/keymap.c
@@ -225,7 +225,7 @@ float tone_colemak[][2] = SONG(COLEMAK_SOUND);
225float goodbye[][2] = SONG(GOODBYE_SOUND); 225float goodbye[][2] = SONG(GOODBYE_SOUND);
226#endif 226#endif
227 227
228void persistant_default_layer_set(uint16_t default_layer) { 228void persistent_default_layer_set(uint16_t default_layer) {
229 eeconfig_update_default_layer(default_layer); 229 eeconfig_update_default_layer(default_layer);
230 default_layer_set(default_layer); 230 default_layer_set(default_layer);
231} 231}
@@ -238,7 +238,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
238 #ifdef AUDIO_ENABLE 238 #ifdef AUDIO_ENABLE
239 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 239 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
240 #endif 240 #endif
241 persistant_default_layer_set(1UL<<_QWERTY); 241 persistent_default_layer_set(1UL<<_QWERTY);
242 } 242 }
243 break; 243 break;
244 case _COLEMAK: 244 case _COLEMAK:
@@ -246,7 +246,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
246 #ifdef AUDIO_ENABLE 246 #ifdef AUDIO_ENABLE
247 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 247 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
248 #endif 248 #endif
249 persistant_default_layer_set(1UL<<_COLEMAK); 249 persistent_default_layer_set(1UL<<_COLEMAK);
250 } 250 }
251 break; 251 break;
252 case _DVORAK: 252 case _DVORAK:
@@ -254,7 +254,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
254 #ifdef AUDIO_ENABLE 254 #ifdef AUDIO_ENABLE
255 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 255 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
256 #endif 256 #endif
257 persistant_default_layer_set(1UL<<_DVORAK); 257 persistent_default_layer_set(1UL<<_DVORAK);
258 } 258 }
259 break; 259 break;
260 case _GAME: 260 case _GAME:
@@ -262,7 +262,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
262 #ifdef AUDIO_ENABLE 262 #ifdef AUDIO_ENABLE
263 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 263 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
264 #endif 264 #endif
265 persistant_default_layer_set(1UL<<_GAME); 265 persistent_default_layer_set(1UL<<_GAME);
266 } 266 }
267 break; 267 break;
268 case _NUMPAD: 268 case _NUMPAD:
@@ -270,7 +270,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
270 #ifdef AUDIO_ENABLE 270 #ifdef AUDIO_ENABLE
271 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 271 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
272 #endif 272 #endif
273 persistant_default_layer_set(1UL<<_NUMPAD); 273 persistent_default_layer_set(1UL<<_NUMPAD);
274 } 274 }
275 break; 275 break;
276 case _ARROW: 276 case _ARROW:
@@ -278,7 +278,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
278 #ifdef AUDIO_ENABLE 278 #ifdef AUDIO_ENABLE
279 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 279 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
280 #endif 280 #endif
281 persistant_default_layer_set(1UL<<_LOWER); 281 persistent_default_layer_set(1UL<<_LOWER);
282 } 282 }
283 break; 283 break;
284 case _LOWER: 284 case _LOWER:
diff --git a/keyboards/preonic/keymaps/default/keymap.c b/keyboards/preonic/keymaps/default/keymap.c
index 3313af945..2516a726b 100644
--- a/keyboards/preonic/keymaps/default/keymap.c
+++ b/keyboards/preonic/keymaps/default/keymap.c
@@ -180,7 +180,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
180float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 180float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
181#endif 181#endif
182 182
183void persistant_default_layer_set(uint16_t default_layer) { 183void persistent_default_layer_set(uint16_t default_layer) {
184 eeconfig_update_default_layer(default_layer); 184 eeconfig_update_default_layer(default_layer);
185 default_layer_set(default_layer); 185 default_layer_set(default_layer);
186} 186}
@@ -192,7 +192,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
192 #ifdef AUDIO_ENABLE 192 #ifdef AUDIO_ENABLE
193 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 193 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
194 #endif 194 #endif
195 persistant_default_layer_set(1UL<<_QWERTY); 195 persistent_default_layer_set(1UL<<_QWERTY);
196 } 196 }
197 return false; 197 return false;
198 break; 198 break;
@@ -201,7 +201,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
201 #ifdef AUDIO_ENABLE 201 #ifdef AUDIO_ENABLE
202 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 202 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
203 #endif 203 #endif
204 persistant_default_layer_set(1UL<<_COLEMAK); 204 persistent_default_layer_set(1UL<<_COLEMAK);
205 } 205 }
206 return false; 206 return false;
207 break; 207 break;
@@ -210,7 +210,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
210 #ifdef AUDIO_ENABLE 210 #ifdef AUDIO_ENABLE
211 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 211 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
212 #endif 212 #endif
213 persistant_default_layer_set(1UL<<_DVORAK); 213 persistent_default_layer_set(1UL<<_DVORAK);
214 } 214 }
215 return false; 215 return false;
216 break; 216 break;
diff --git a/keyboards/preonic/keymaps/jacwib/keymap.c b/keyboards/preonic/keymaps/jacwib/keymap.c
index 72ccc86cd..09f465de1 100644
--- a/keyboards/preonic/keymaps/jacwib/keymap.c
+++ b/keyboards/preonic/keymaps/jacwib/keymap.c
@@ -196,7 +196,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
196float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 196float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
197#endif 197#endif
198 198
199void persistant_default_layer_set(uint16_t default_layer) { 199void persistent_default_layer_set(uint16_t default_layer) {
200 eeconfig_update_default_layer(default_layer); 200 eeconfig_update_default_layer(default_layer);
201 default_layer_set(default_layer); 201 default_layer_set(default_layer);
202} 202}
@@ -205,7 +205,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
205 switch (keycode) { 205 switch (keycode) {
206 case QWERTY: 206 case QWERTY:
207 if (record->event.pressed) { 207 if (record->event.pressed) {
208 persistant_default_layer_set(1UL<<_QWERTY); 208 persistent_default_layer_set(1UL<<_QWERTY);
209 } 209 }
210 return false; 210 return false;
211 break; 211 break;
@@ -231,7 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
231 break; 231 break;
232 case MQWERTY: 232 case MQWERTY:
233 if (record->event.pressed) { 233 if (record->event.pressed) {
234 persistant_default_layer_set(1UL<<_MQWERTY); 234 persistent_default_layer_set(1UL<<_MQWERTY);
235 } 235 }
236 return false; 236 return false;
237 break; 237 break;
diff --git a/keyboards/preonic/keymaps/kinesis/keymap.c b/keyboards/preonic/keymaps/kinesis/keymap.c
index 9691be91d..214f51a46 100644
--- a/keyboards/preonic/keymaps/kinesis/keymap.c
+++ b/keyboards/preonic/keymaps/kinesis/keymap.c
@@ -82,7 +82,7 @@ float tone_startup[][2] = {
82float tone_goodbye[][2] = SONG(GOODBYE_SOUND); 82float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
83float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 83float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
84 84
85void persistant_default_layer_set(uint16_t default_layer) { 85void persistent_default_layer_set(uint16_t default_layer) {
86 eeconfig_update_default_layer(default_layer); 86 eeconfig_update_default_layer(default_layer);
87 default_layer_set(default_layer); 87 default_layer_set(default_layer);
88} 88}
diff --git a/keyboards/preonic/keymaps/nikchi/Makefile b/keyboards/preonic/keymaps/nikchi/Makefile
new file mode 100644
index 000000000..3d4659ceb
--- /dev/null
+++ b/keyboards/preonic/keymaps/nikchi/Makefile
@@ -0,0 +1,3 @@
1ifndef QUANTUM_DIR
2 include ../../../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/nikchi/config.h b/keyboards/preonic/keymaps/nikchi/config.h
new file mode 100644
index 000000000..4c6158199
--- /dev/null
+++ b/keyboards/preonic/keymaps/nikchi/config.h
@@ -0,0 +1,29 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6/*
7 * MIDI options
8 */
9
10/* Prevent use of disabled MIDI features in the keymap */
11//#define MIDI_ENABLE_STRICT 1
12
13/* enable basic MIDI features:
14 - MIDI notes can be sent when in Music mode is on
15*/
16#define MIDI_BASIC
17
18/* enable advanced MIDI features:
19 - MIDI notes can be added to the keymap
20 - Octave shift and transpose
21 - Virtual sustain, portamento, and modulation wheel
22 - etc.
23*/
24//#define MIDI_ADVANCED
25
26/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
27//#define MIDI_TONE_KEYCODE_OCTAVES 2
28
29#endif \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/nikchi/keymap.c b/keyboards/preonic/keymaps/nikchi/keymap.c
new file mode 100644
index 000000000..249dd1e64
--- /dev/null
+++ b/keyboards/preonic/keymaps/nikchi/keymap.c
@@ -0,0 +1,221 @@
1#include "preonic.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4#ifdef AUDIO_ENABLE
5 #include "audio.h"
6#endif
7
8// Each layer gets a name for readability, which is then used in the keymap matrix below.
9// The underscores don't mean anything - you can have a layer called STUFF or any other name.
10// Layer names don't all need to be of the same length, obviously, and you can also skip them
11// entirely and just use numbers.
12
13enum preonic_layers {
14 _QWERTY,
15 _COLEMAK,
16 _DVORAK,
17 _LOWER,
18 _RAISE,
19 _ADJUST
20};
21
22enum preonic_keycodes {
23 QWERTY = SAFE_RANGE,
24 LOWER,
25 RAISE,
26 BACKLIT
27};
28
29// Fillers to make layering more clear
30#define _______ KC_TRNS
31#define XXXXXXX KC_NO
32
33const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34
35/* Qwerty
36 * ,-----------------------------------------------------------------------------------.
37 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
38 * |------+------+------+------+------+------+------+------+------+------+------+------|
39 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
40 * |------+------+------+------+------+-------------+------+------+------+------+------|
41 * | CTRL | A | S | D | F | G | H | J | K | L | ; | " |
42 * |------+------+------+------+------+------|------+------+------+------+------+------|
43 * | Lower| Z | X | C | V | B | N | M | , | . | / |Raise |
44 * |------+------+------+------+------+------+------+------+------+------+------+------|
45 * | Brite| Ctrl | Alt | GUI |BKSP |SHIFT |ENTER |SPC | Left | Down | Up |Right |
46 * `-----------------------------------------------------------------------------------'
47 */
48[_QWERTY] = {
49 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
50 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL},
51 {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
52 {LOWER , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RAISE },
53 {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, KC_LSFT, KC_ENT, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
54},
55
56/* Lower
57 * ,-----------------------------------------------------------------------------------.
58 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
59 * |------+------+------+------+------+-------------+------+------+------+------+------|
60 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
61 * |------+------+------+------+------+-------------+------+------+------+------+------|
62 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
63 * |------+------+------+------+------+------|------+------+------+------+------+------|
64 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
65 * |------+------+------+------+------+------+------+------+------+------+------+------|
66 * | | | | | | | | Next | Vol- | Vol+ | Play |
67 * `-----------------------------------------------------------------------------------'
68 */
69[_LOWER] = {
70 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
71 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL},
72 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
73 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______},
74 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
75},
76
77/* Raise
78 * ,-----------------------------------------------------------------------------------.
79 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
80 * |------+------+------+------+------+------+------+------+------+------+------+------|
81 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
82 * |------+------+------+------+------+-------------+------+------+------+------+------|
83 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
84 * |------+------+------+------+------+------|------+------+------+------+------+------|
85 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
86 * |------+------+------+------+------+------+------+------+------+------+------+------|
87 * | | | | | | | | Next | Vol- | Vol+ | Play |
88 * `-----------------------------------------------------------------------------------'
89 */
90[_RAISE] = {
91 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
92 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
93 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
94 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______},
95 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
96},
97
98/* Adjust (Lower + Raise)
99 * ,-----------------------------------------------------------------------------------.
100 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
101 * |------+------+------+------+------+------+------+------+------+------+------+------|
102 * | | Reset| | | | | | | | | | Del |
103 * |------+------+------+------+------+-------------+------+------+------+------+------|
104 * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
105 * |------+------+------+------+------+------|------+------+------+------+------+------|
106 * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
107 * |------+------+------+------+------+------+------+------+------+------+------+------|
108 * | | | | | | | | | | | |
109 * `-----------------------------------------------------------------------------------'
110 */
111[_ADJUST] = {
112 {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
113 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
114 {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______},
115 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
116 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
117}
118
119
120};
121
122#ifdef AUDIO_ENABLE
123float tone_startup[][2] = {
124 {NOTE_B5, 20},
125 {NOTE_B6, 8},
126 {NOTE_DS6, 20},
127 {NOTE_B6, 8}
128};
129
130float tone_qwerty[][2] = SONG(QWERTY_SOUND);
131float tone_dvorak[][2] = SONG(DVORAK_SOUND);
132float tone_colemak[][2] = SONG(COLEMAK_SOUND);
133
134float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
135
136float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
137#endif
138
139void persistent_default_layer_set(uint16_t default_layer) {
140 eeconfig_update_default_layer(default_layer);
141 default_layer_set(default_layer);
142}
143
144bool process_record_user(uint16_t keycode, keyrecord_t *record) {
145 switch (keycode) {
146 case QWERTY:
147 if (record->event.pressed) {
148 #ifdef AUDIO_ENABLE
149 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
150 #endif
151 persistent_default_layer_set(1UL<<_QWERTY);
152 }
153 return false;
154 break;
155 case LOWER:
156 if (record->event.pressed) {
157 layer_on(_LOWER);
158 update_tri_layer(_LOWER, _RAISE, _ADJUST);
159 } else {
160 layer_off(_LOWER);
161 update_tri_layer(_LOWER, _RAISE, _ADJUST);
162 }
163 return false;
164 break;
165 case RAISE:
166 if (record->event.pressed) {
167 layer_on(_RAISE);
168 update_tri_layer(_LOWER, _RAISE, _ADJUST);
169 } else {
170 layer_off(_RAISE);
171 update_tri_layer(_LOWER, _RAISE, _ADJUST);
172 }
173 return false;
174 break;
175 case BACKLIT:
176 if (record->event.pressed) {
177 register_code(KC_RSFT);
178 #ifdef BACKLIGHT_ENABLE
179 backlight_step();
180 #endif
181 } else {
182 unregister_code(KC_RSFT);
183 }
184 return false;
185 break;
186 }
187 return true;
188};
189
190void matrix_init_user(void) {
191 #ifdef AUDIO_ENABLE
192 startup_user();
193 #endif
194}
195
196#ifdef AUDIO_ENABLE
197
198void startup_user()
199{
200 _delay_ms(20); // gets rid of tick
201 PLAY_NOTE_ARRAY(tone_startup, false, 0);
202}
203
204void shutdown_user()
205{
206 PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
207 _delay_ms(150);
208 stop_all_notes();
209}
210
211void music_on_user(void)
212{
213 music_scale_user();
214}
215
216void music_scale_user(void)
217{
218 PLAY_NOTE_ARRAY(music_scale, false, 0);
219}
220
221#endif
diff --git a/keyboards/preonic/keymaps/nikchi/readme.md b/keyboards/preonic/keymaps/nikchi/readme.md
new file mode 100644
index 000000000..e911968dd
--- /dev/null
+++ b/keyboards/preonic/keymaps/nikchi/readme.md
@@ -0,0 +1 @@
# The default Preonic layout - largely based on the Planck's \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c
index a10deb750..5972e918c 100644
--- a/keyboards/preonic/keymaps/smt/keymap.c
+++ b/keyboards/preonic/keymaps/smt/keymap.c
@@ -183,7 +183,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
183float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 183float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
184#endif 184#endif
185 185
186void persistant_default_layer_set(uint16_t default_layer) { 186void persistent_default_layer_set(uint16_t default_layer) {
187 eeconfig_update_default_layer(default_layer); 187 eeconfig_update_default_layer(default_layer);
188 default_layer_set(default_layer); 188 default_layer_set(default_layer);
189} 189}
@@ -195,7 +195,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
195 #ifdef AUDIO_ENABLE 195 #ifdef AUDIO_ENABLE
196 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 196 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
197 #endif 197 #endif
198 persistant_default_layer_set(1UL<<_QWERTY); 198 persistent_default_layer_set(1UL<<_QWERTY);
199 } 199 }
200 return false; 200 return false;
201 break; 201 break;
@@ -204,7 +204,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
204 #ifdef AUDIO_ENABLE 204 #ifdef AUDIO_ENABLE
205 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 205 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
206 #endif 206 #endif
207 persistant_default_layer_set(1UL<<_COLEMAK); 207 persistent_default_layer_set(1UL<<_COLEMAK);
208 } 208 }
209 return false; 209 return false;
210 break; 210 break;
@@ -213,7 +213,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
213 #ifdef AUDIO_ENABLE 213 #ifdef AUDIO_ENABLE
214 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 214 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
215 #endif 215 #endif
216 persistant_default_layer_set(1UL<<_DVORAK); 216 persistent_default_layer_set(1UL<<_DVORAK);
217 } 217 }
218 return false; 218 return false;
219 break; 219 break;
diff --git a/keyboards/preonic/keymaps/xyverz/keymap.c b/keyboards/preonic/keymaps/xyverz/keymap.c
index c8457cda1..1275aa18f 100644
--- a/keyboards/preonic/keymaps/xyverz/keymap.c
+++ b/keyboards/preonic/keymaps/xyverz/keymap.c
@@ -177,7 +177,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
177float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 177float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
178#endif 178#endif
179 179
180void persistant_default_layer_set(uint16_t default_layer) { 180void persistent_default_layer_set(uint16_t default_layer) {
181 eeconfig_update_default_layer(default_layer); 181 eeconfig_update_default_layer(default_layer);
182 default_layer_set(default_layer); 182 default_layer_set(default_layer);
183} 183}
@@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
189 #ifdef AUDIO_ENABLE 189 #ifdef AUDIO_ENABLE
190 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 190 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
191 #endif 191 #endif
192 persistant_default_layer_set(1UL<<_QWERTY); 192 persistent_default_layer_set(1UL<<_QWERTY);
193 } 193 }
194 return false; 194 return false;
195 break; 195 break;
@@ -198,7 +198,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
198 #ifdef AUDIO_ENABLE 198 #ifdef AUDIO_ENABLE
199 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 199 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
200 #endif 200 #endif
201 persistant_default_layer_set(1UL<<_COLEMAK); 201 persistent_default_layer_set(1UL<<_COLEMAK);
202 } 202 }
203 return false; 203 return false;
204 break; 204 break;
@@ -207,7 +207,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
207 #ifdef AUDIO_ENABLE 207 #ifdef AUDIO_ENABLE
208 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 208 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
209 #endif 209 #endif
210 persistant_default_layer_set(1UL<<_DVORAK); 210 persistent_default_layer_set(1UL<<_DVORAK);
211 } 211 }
212 return false; 212 return false;
213 break; 213 break;
diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c
index 2c47b2289..0b1dd7619 100644
--- a/keyboards/preonic/keymaps/zach/zach_common_functions.c
+++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c
@@ -16,7 +16,7 @@ void tap(uint16_t keycode){
16 unregister_code(keycode); 16 unregister_code(keycode);
17}; 17};
18 18
19void persistant_default_layer_set(uint16_t default_layer){ 19void persistent_default_layer_set(uint16_t default_layer){
20 eeconfig_update_default_layer(default_layer); 20 eeconfig_update_default_layer(default_layer);
21 default_layer_set(default_layer); 21 default_layer_set(default_layer);
22}; 22};
@@ -200,7 +200,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
200 switch (keycode) { 200 switch (keycode) {
201 case COLEMAK: 201 case COLEMAK:
202 if(record->event.pressed){ 202 if(record->event.pressed){
203 persistant_default_layer_set(1UL<<_COLEMAK); 203 persistent_default_layer_set(1UL<<_COLEMAK);
204 #ifdef AUDIO_ENABLE 204 #ifdef AUDIO_ENABLE
205 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 205 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
206 #endif 206 #endif
@@ -209,7 +209,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
209 break; 209 break;
210 case SWCOLE: 210 case SWCOLE:
211 if(record->event.pressed){ 211 if(record->event.pressed){
212 persistant_default_layer_set(1UL<<_SWCOLE); 212 persistent_default_layer_set(1UL<<_SWCOLE);
213 #ifdef AUDIO_ENABLE 213 #ifdef AUDIO_ENABLE
214 PLAY_NOTE_ARRAY(tone_swcole, false, 0); 214 PLAY_NOTE_ARRAY(tone_swcole, false, 0);
215 #endif 215 #endif
diff --git a/keyboards/ps2avrGB/keymaps/default/keymap.c b/keyboards/ps2avrGB/keymaps/default/keymap.c
index 5c66cde59..3e4cebc81 100644
--- a/keyboards/ps2avrGB/keymaps/default/keymap.c
+++ b/keyboards/ps2avrGB/keymaps/default/keymap.c
@@ -18,14 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
18#include "ps2avrGB.h" 18#include "ps2avrGB.h"
19 19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 KEYMAP( \ 21 KC_KEYMAP(
22 ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,HOME,END, \ 22 ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,HOME,END,
23 GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, DEL, \ 23 GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, DEL,
24 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, INS, \ 24 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, INS,
25 CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, PGUP,\ 25 CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, PGUP,
26 LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, UP, PGDN,\ 26 LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, UP, PGDN,
27 LCTL,LALT,LGUI, SPC, RGUI,RALT,RCTL,LEFT,DOWN,RGHT \ 27 LCTL,LALT,LGUI, SPC, RGUI,RALT,RCTL,LEFT,DOWN,RGHT
28 ), 28 )
29}; 29};
30 30
31const uint16_t PROGMEM fn_actions[] = { 31const uint16_t PROGMEM fn_actions[] = {
diff --git a/keyboards/ps2avrGB/ps2avrGB.h b/keyboards/ps2avrGB/ps2avrGB.h
index 6432e3be9..813f31f80 100644
--- a/keyboards/ps2avrGB/ps2avrGB.h
+++ b/keyboards/ps2avrGB/ps2avrGB.h
@@ -22,6 +22,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22#include "action.h" 22#include "action.h"
23 23
24#define KEYMAP( \ 24#define KEYMAP( \
25 K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \
26 K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \
27 K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \
28 K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, KE0, \
29 K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, K86, K77, \
30 K00, K10, K20, K56, K57, KB0, KC0, K66, K76, K96 \
31){ \
32 { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB0, KC0, KD0, KE0 }, \
33 { K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC_NO, KD1, KE1 }, \
34 { K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC_NO, KD2, KE2 }, \
35 { K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KD3, KC_NO }, \
36 { K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \
37 { K05, KC_NO, K25, K35, K45, K55, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KC5, KD5, KE5 }, \
38 { K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6, KE6 }, \
39 { K07, K17, K27, K37, K47, K57, K67, K77, KC_NO, KC_NO, KA7, KB7, KC7, KD7, KE7 } \
40}
41
42#define KC_KEYMAP( \
25 K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \ 43 K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \
26 K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \ 44 K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \
27 K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \ 45 K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \
diff --git a/keyboards/roadkit/keymaps/default/keymap.c b/keyboards/roadkit/keymaps/default/keymap.c
index 3fc18915a..048e80748 100644
--- a/keyboards/roadkit/keymaps/default/keymap.c
+++ b/keyboards/roadkit/keymaps/default/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM fn_actions[] = {
31 31
32}; 32};
33 33
34void persistant_default_layer_set(uint16_t default_layer) { 34void persistent_default_layer_set(uint16_t default_layer) {
35 eeconfig_update_default_layer(default_layer); 35 eeconfig_update_default_layer(default_layer);
36 default_layer_set(default_layer); 36 default_layer_set(default_layer);
37} 37}
@@ -41,7 +41,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
41 switch(id) { 41 switch(id) {
42 case _NP: 42 case _NP:
43 if (record->event.pressed) { 43 if (record->event.pressed) {
44 persistant_default_layer_set(1UL<<_NP); 44 persistent_default_layer_set(1UL<<_NP);
45 } 45 }
46 break; 46 break;
47 } 47 }
diff --git a/keyboards/roadkit/keymaps/singles/keymap.c b/keyboards/roadkit/keymaps/singles/keymap.c
index 5ee7a752b..1c6aa7883 100644
--- a/keyboards/roadkit/keymaps/singles/keymap.c
+++ b/keyboards/roadkit/keymaps/singles/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM fn_actions[] = {
38 38
39}; 39};
40 40
41void persistant_default_layer_set(uint16_t default_layer) { 41void persistent_default_layer_set(uint16_t default_layer) {
42 eeconfig_update_default_layer(default_layer); 42 eeconfig_update_default_layer(default_layer);
43 default_layer_set(default_layer); 43 default_layer_set(default_layer);
44} 44}
@@ -48,12 +48,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
48 switch(id) { 48 switch(id) {
49 case _L1: 49 case _L1:
50 if (record->event.pressed) { 50 if (record->event.pressed) {
51 persistant_default_layer_set(1UL<<_L1); 51 persistent_default_layer_set(1UL<<_L1);
52 } 52 }
53 break; 53 break;
54 case _NP: 54 case _NP:
55 if (record->event.pressed) { 55 if (record->event.pressed) {
56 persistant_default_layer_set(1UL<<_NP); 56 persistent_default_layer_set(1UL<<_NP);
57 } 57 }
58 break; 58 break;
59 } 59 }
diff --git a/keyboards/s60-x/s60-x.c b/keyboards/s60-x/s60-x.c
deleted file mode 100644
index f031dd770..000000000
--- a/keyboards/s60-x/s60-x.c
+++ /dev/null
@@ -1 +0,0 @@
1#include "s60-x.h" \ No newline at end of file
diff --git a/keyboards/s60-x/s60-x_precompiled.zip b/keyboards/s60-x/s60-x_precompiled.zip
deleted file mode 100644
index 00d99ca8a..000000000
--- a/keyboards/s60-x/s60-x_precompiled.zip
+++ /dev/null
Binary files differ
diff --git a/keyboards/s60-x/Makefile b/keyboards/s60_x/Makefile
index 879e493a2..879e493a2 100644
--- a/keyboards/s60-x/Makefile
+++ b/keyboards/s60_x/Makefile
diff --git a/keyboards/s60-x/config.h b/keyboards/s60_x/config.h
index 8e7bc78be..8b97b3c81 100644
--- a/keyboards/s60-x/config.h
+++ b/keyboards/s60_x/config.h
@@ -32,6 +32,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
32#define MATRIX_ROWS 5 32#define MATRIX_ROWS 5
33#define MATRIX_COLS 15 33#define MATRIX_COLS 15
34 34
35/* number of backlight levels */
36#define BACKLIGHT_PIN B7
37#ifdef BACKLIGHT_PIN
38#define BACKLIGHT_LEVELS 3
39#endif
40
35/* COL2ROW or ROW2COL */ 41/* COL2ROW or ROW2COL */
36#define DIODE_DIRECTION COL2ROW 42#define DIODE_DIRECTION COL2ROW
37 43
@@ -43,4 +49,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
43 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ 49 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
44) 50)
45 51
52#ifdef SUBPROJECT_default
53 #include "default/config.h"
54#endif
55#ifdef SUBPROJECT_rgb
56 #include "rgb/config.h"
57#endif
58
46#endif 59#endif
diff --git a/keyboards/s60_x/default/Makefile b/keyboards/s60_x/default/Makefile
new file mode 100644
index 000000000..191c6bb66
--- /dev/null
+++ b/keyboards/s60_x/default/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/s60-x/default/config.h b/keyboards/s60_x/default/config.h
index 436c6fa8b..436c6fa8b 100644
--- a/keyboards/s60-x/default/config.h
+++ b/keyboards/s60_x/default/config.h
diff --git a/keyboards/s60-x/default/default.c b/keyboards/s60_x/default/default.c
index 253f5495c..253f5495c 100644
--- a/keyboards/s60-x/default/default.c
+++ b/keyboards/s60_x/default/default.c
diff --git a/keyboards/s60-x/default/default.h b/keyboards/s60_x/default/default.h
index 86233ef7e..86233ef7e 100644
--- a/keyboards/s60-x/default/default.h
+++ b/keyboards/s60_x/default/default.h
diff --git a/keyboards/s60-x/default/rules.mk b/keyboards/s60_x/default/rules.mk
index aaa3764df..aaa3764df 100644
--- a/keyboards/s60-x/default/rules.mk
+++ b/keyboards/s60_x/default/rules.mk
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/Makefile b/keyboards/s60_x/keymaps/ansi_qwertz/Makefile
index 6a078bcc3..6a078bcc3 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/Makefile
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/Makefile
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/config.h b/keyboards/s60_x/keymaps/ansi_qwertz/config.h
index 6c01d579f..6c01d579f 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/config.h
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/config.h
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png
index 168780c82..168780c82 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png
Binary files differ
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg
index f03858993..f03858993 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg
index 2304b2a4c..2304b2a4c 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.png
index 875eb3652..875eb3652 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.png
Binary files differ
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.svg
index 1ca6a9c87..1ca6a9c87 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.svg
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG b/keyboards/s60_x/keymaps/ansi_qwertz/docs/base_layer.PNG
index c730c2d65..c730c2d65 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/base_layer.PNG
Binary files differ
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG b/keyboards/s60_x/keymaps/ansi_qwertz/docs/function_layer.PNG
index fae2439ca..fae2439ca 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/function_layer.PNG
Binary files differ
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG b/keyboards/s60_x/keymaps/ansi_qwertz/docs/gaming_layer.PNG
index 59b202be2..59b202be2 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/docs/gaming_layer.PNG
Binary files differ
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c b/keyboards/s60_x/keymaps/ansi_qwertz/keymap.c
index 317a245be..ebb3aece3 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/keymap.c
@@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License
14along with this program. If not, see <http://www.gnu.org/licenses/>. 14along with this program. If not, see <http://www.gnu.org/licenses/>.
15*/ 15*/
16 16
17#include "s60-x.h" 17#include "s60_x.h"
18 18
19//make keymap a little easier to read 19//make keymap a little easier to read
20#define _______ KC_TRNS 20#define _______ KC_TRNS
diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60_x/keymaps/ansi_qwertz/readme.md
index b22010612..b22010612 100644
--- a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/readme.md
diff --git a/keyboards/s60-x/keymaps/custom/keymap.c b/keyboards/s60_x/keymaps/custom/keymap.c
index fb2a40b85..66eac3335 100644
--- a/keyboards/s60-x/keymaps/custom/keymap.c
+++ b/keyboards/s60_x/keymaps/custom/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* Main layer: Test layout, using all keys. 3/* Main layer: Test layout, using all keys.
4 4
diff --git a/keyboards/s60-x/keymaps/custom/readme.md b/keyboards/s60_x/keymaps/custom/readme.md
index cf87bd915..cf87bd915 100644
--- a/keyboards/s60-x/keymaps/custom/readme.md
+++ b/keyboards/s60_x/keymaps/custom/readme.md
diff --git a/keyboards/s60-x/keymaps/dbroqua/keymap.c b/keyboards/s60_x/keymaps/dbroqua/keymap.c
index 0a714445c..8d1887e75 100644
--- a/keyboards/s60-x/keymaps/dbroqua/keymap.c
+++ b/keyboards/s60_x/keymaps/dbroqua/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3#define _DEFAULT 0 3#define _DEFAULT 0
4#define _FN 1 4#define _FN 1
@@ -73,12 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
73 ) 73 )
74}; 74};
75 75
76const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { 76const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
77 keyevent_t event = record->event;
78
79 switch (id) {
80
81 }
82 return MACRO_NONE; 77 return MACRO_NONE;
83} 78}
84 79
@@ -108,42 +103,58 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
108 switch (id) { 103 switch (id) {
109 case RGBLED_TOGGLE: 104 case RGBLED_TOGGLE:
110 if (record->event.pressed) { 105 if (record->event.pressed) {
106 #ifdef RGB_ENABLE
111 rgblight_toggle(); 107 rgblight_toggle();
108 #endif
112 } 109 }
113 break; 110 break;
114 case RGBLED_INCREASE_HUE: 111 case RGBLED_INCREASE_HUE:
115 if (record->event.pressed) { 112 if (record->event.pressed) {
113 #ifdef RGB_ENABLE
116 rgblight_increase_hue(); 114 rgblight_increase_hue();
115 #endif
117 } 116 }
118 break; 117 break;
119 case RGBLED_DECREASE_HUE: 118 case RGBLED_DECREASE_HUE:
120 if (record->event.pressed) { 119 if (record->event.pressed) {
120 #ifdef RGB_ENABLE
121 rgblight_decrease_hue(); 121 rgblight_decrease_hue();
122 #endif
122 } 123 }
123 break; 124 break;
124 case RGBLED_INCREASE_SAT: 125 case RGBLED_INCREASE_SAT:
125 if (record->event.pressed) { 126 if (record->event.pressed) {
127 #ifdef RGB_ENABLE
126 rgblight_increase_sat(); 128 rgblight_increase_sat();
129 #endif
127 } 130 }
128 break; 131 break;
129 case RGBLED_DECREASE_SAT: 132 case RGBLED_DECREASE_SAT:
130 if (record->event.pressed) { 133 if (record->event.pressed) {
134 #ifdef RGB_ENABLE
131 rgblight_decrease_sat(); 135 rgblight_decrease_sat();
136 #endif
132 } 137 }
133 break; 138 break;
134 case RGBLED_INCREASE_VAL: 139 case RGBLED_INCREASE_VAL:
135 if (record->event.pressed) { 140 if (record->event.pressed) {
141 #ifdef RGB_ENABLE
136 rgblight_increase_val(); 142 rgblight_increase_val();
143 #endif
137 } 144 }
138 break; 145 break;
139 case RGBLED_DECREASE_VAL: 146 case RGBLED_DECREASE_VAL:
140 if (record->event.pressed) { 147 if (record->event.pressed) {
148 #ifdef RGB_ENABLE
141 rgblight_decrease_val(); 149 rgblight_decrease_val();
150 #endif
142 } 151 }
143 break; 152 break;
144 case RGBLED_STEP_MODE: 153 case RGBLED_STEP_MODE:
145 if (record->event.pressed) { 154 if (record->event.pressed) {
155 #ifdef RGB_ENABLE
146 rgblight_step(); 156 rgblight_step();
157 #endif
147 } 158 }
148 break; 159 break;
149 } 160 }
diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60_x/keymaps/default/keymap.c
index eb0c6b056..a616e79b3 100644
--- a/keyboards/s60-x/keymaps/default/keymap.c
+++ b/keyboards/s60_x/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* 0: Main layer 3/* 0: Main layer
4┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 4┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
diff --git a/keyboards/s60-x/keymaps/default/readme.md b/keyboards/s60_x/keymaps/default/readme.md
index 01cda9df9..01cda9df9 100644
--- a/keyboards/s60-x/keymaps/default/readme.md
+++ b/keyboards/s60_x/keymaps/default/readme.md
diff --git a/keyboards/s60-x/keymaps/hasu/keymap.c b/keyboards/s60_x/keymaps/hasu/keymap.c
index cbeaae028..ac90dc6b2 100644
--- a/keyboards/s60-x/keymaps/hasu/keymap.c
+++ b/keyboards/s60_x/keymaps/hasu/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* 3/*
4 * Hasu 4 * Hasu
diff --git a/keyboards/s60-x/keymaps/hasu/readme.md b/keyboards/s60_x/keymaps/hasu/readme.md
index 64969b616..64969b616 100644
--- a/keyboards/s60-x/keymaps/hasu/readme.md
+++ b/keyboards/s60_x/keymaps/hasu/readme.md
diff --git a/keyboards/s60-x/keymaps/hhkb/keymap.c b/keyboards/s60_x/keymaps/hhkb/keymap.c
index 9afd1247f..dc1bfffc4 100644
--- a/keyboards/s60-x/keymaps/hhkb/keymap.c
+++ b/keyboards/s60_x/keymaps/hhkb/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* 3/*
4 * HHKB Layout 4 * HHKB Layout
diff --git a/keyboards/s60-x/keymaps/hhkb/readme.md b/keyboards/s60_x/keymaps/hhkb/readme.md
index 2bceb26dd..2bceb26dd 100644
--- a/keyboards/s60-x/keymaps/hhkb/readme.md
+++ b/keyboards/s60_x/keymaps/hhkb/readme.md
diff --git a/keyboards/s60-x/keymaps/iso/keymap.c b/keyboards/s60_x/keymaps/iso/keymap.c
index 43a9c48b0..f6fc74172 100644
--- a/keyboards/s60-x/keymaps/iso/keymap.c
+++ b/keyboards/s60_x/keymaps/iso/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* 0: Main layer 3/* 0: Main layer
4┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 4┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
diff --git a/keyboards/s60-x/keymaps/iso/readme.md b/keyboards/s60_x/keymaps/iso/readme.md
index 2c06bf86f..2c06bf86f 100644
--- a/keyboards/s60-x/keymaps/iso/readme.md
+++ b/keyboards/s60_x/keymaps/iso/readme.md
diff --git a/keyboards/s60-x/keymaps/jpec/keymap.c b/keyboards/s60_x/keymaps/jpec/keymap.c
index c8fc13328..21e77c10b 100644
--- a/keyboards/s60-x/keymaps/jpec/keymap.c
+++ b/keyboards/s60_x/keymaps/jpec/keymap.c
@@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License
14along with this program. If not, see <http://www.gnu.org/licenses/>. 14along with this program. If not, see <http://www.gnu.org/licenses/>.
15*/ 15*/
16 16
17#include "s60-x.h" 17#include "s60_x.h"
18 18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 /* Layout 0: Default Layer 20 /* Layout 0: Default Layer
diff --git a/keyboards/s60-x/keymaps/jpec/readme.md b/keyboards/s60_x/keymaps/jpec/readme.md
index 73318dad7..73318dad7 100644
--- a/keyboards/s60-x/keymaps/jpec/readme.md
+++ b/keyboards/s60_x/keymaps/jpec/readme.md
diff --git a/keyboards/s60-x/keymaps/plain/keymap.c b/keyboards/s60_x/keymaps/plain/keymap.c
index 790ac88e7..d5075a07b 100644
--- a/keyboards/s60-x/keymaps/plain/keymap.c
+++ b/keyboards/s60_x/keymaps/plain/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* Main layer: 3/* Main layer:
4┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 4┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
diff --git a/keyboards/s60-x/keymaps/plain/readme.md b/keyboards/s60_x/keymaps/plain/readme.md
index ab13323e3..ab13323e3 100644
--- a/keyboards/s60-x/keymaps/plain/readme.md
+++ b/keyboards/s60_x/keymaps/plain/readme.md
diff --git a/keyboards/s60-x/keymaps/poker/keymap.c b/keyboards/s60_x/keymaps/poker/keymap.c
index 0a8691792..5b917704e 100644
--- a/keyboards/s60-x/keymaps/poker/keymap.c
+++ b/keyboards/s60_x/keymaps/poker/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 /* 0: qwerty 4 /* 0: qwerty
diff --git a/keyboards/s60-x/keymaps/poker/readme.md b/keyboards/s60_x/keymaps/poker/readme.md
index 0d8be9d0f..0d8be9d0f 100644
--- a/keyboards/s60-x/keymaps/poker/readme.md
+++ b/keyboards/s60_x/keymaps/poker/readme.md
diff --git a/keyboards/s60-x/keymaps/poker_bit/keymap.c b/keyboards/s60_x/keymaps/poker_bit/keymap.c
index 7626038f4..1f7b1b633 100644
--- a/keyboards/s60-x/keymaps/poker_bit/keymap.c
+++ b/keyboards/s60_x/keymaps/poker_bit/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3// Poker fix with toggle and bit operation 3// Poker fix with toggle and bit operation
4// Fn + Esc = ` 4// Fn + Esc = `
diff --git a/keyboards/s60-x/keymaps/poker_bit/readme.md b/keyboards/s60_x/keymaps/poker_bit/readme.md
index 0d8be9d0f..0d8be9d0f 100644
--- a/keyboards/s60-x/keymaps/poker_bit/readme.md
+++ b/keyboards/s60_x/keymaps/poker_bit/readme.md
diff --git a/keyboards/s60-x/keymaps/poker_set/keymap.c b/keyboards/s60_x/keymaps/poker_set/keymap.c
index 09423e75b..52eee5321 100644
--- a/keyboards/s60-x/keymaps/poker_set/keymap.c
+++ b/keyboards/s60_x/keymaps/poker_set/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3// Poker fix with set(state transition) 3// Poker fix with set(state transition)
4// Fn + Esc = ` 4// Fn + Esc = `
diff --git a/keyboards/s60-x/keymaps/poker_set/readme.md b/keyboards/s60_x/keymaps/poker_set/readme.md
index 0d8be9d0f..0d8be9d0f 100644
--- a/keyboards/s60-x/keymaps/poker_set/readme.md
+++ b/keyboards/s60_x/keymaps/poker_set/readme.md
diff --git a/keyboards/s60-x/keymaps/spacefn/keymap.c b/keyboards/s60_x/keymaps/spacefn/keymap.c
index b6dc7ca7e..28369580e 100644
--- a/keyboards/s60-x/keymaps/spacefn/keymap.c
+++ b/keyboards/s60_x/keymaps/spacefn/keymap.c
@@ -1,4 +1,4 @@
1#include "s60-x.h" 1#include "s60_x.h"
2 2
3/* 3/*
4 * SpaceFN 4 * SpaceFN
diff --git a/keyboards/s60-x/keymaps/spacefn/readme.md b/keyboards/s60_x/keymaps/spacefn/readme.md
index d04bd9486..d04bd9486 100644
--- a/keyboards/s60-x/keymaps/spacefn/readme.md
+++ b/keyboards/s60_x/keymaps/spacefn/readme.md
diff --git a/keyboards/s60-x/readme.md b/keyboards/s60_x/readme.md
index 408ad13ac..e30b2f76c 100644
--- a/keyboards/s60-x/readme.md
+++ b/keyboards/s60_x/readme.md
@@ -5,11 +5,6 @@ DIY compact keyboard designed by VinnyCordeiro for Sentraq. Most of the keymaps
5## S60X Resources 5## S60X Resources
6- [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open) 6- [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open)
7 7
8## Quickstart
9
10If you just want to test a few layouts, the archive [s60-x_precompiled.zip](s60-x_precompiled.zip) contains pre-compiled .hex-files for all available keymaps. Not all of them are tested.
11You only need to flash them onto your keyboard, which is explained below, there's no need to setup a build environment. For a full list
12
13## Flashing your keyboard 8## Flashing your keyboard
14The recommended programs for flashing your keyboard are [Atmel FLIP](http://www.atmel.com/tools/FLIP.aspx) (Windows) and [dfu-programmer](http://dfu-programmer.sourceforge.net/) (Linux/Windows). 9The recommended programs for flashing your keyboard are [Atmel FLIP](http://www.atmel.com/tools/FLIP.aspx) (Windows) and [dfu-programmer](http://dfu-programmer.sourceforge.net/) (Linux/Windows).
15 10
diff --git a/keyboards/s60-x/rgb/Makefile b/keyboards/s60_x/rgb/Makefile
index bd09e5885..bd09e5885 100644
--- a/keyboards/s60-x/rgb/Makefile
+++ b/keyboards/s60_x/rgb/Makefile
diff --git a/keyboards/s60-x/rgb/config.h b/keyboards/s60_x/rgb/config.h
index fbc143487..81efc87d5 100644
--- a/keyboards/s60-x/rgb/config.h
+++ b/keyboards/s60_x/rgb/config.h
@@ -11,12 +11,6 @@
11#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 } 11#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
12#define UNUSED_PINS 12#define UNUSED_PINS
13 13
14/* number of backlight levels */
15#define BACKLIGHT_PIN B7
16#ifdef BACKLIGHT_PIN
17#define BACKLIGHT_LEVELS 3
18#endif
19
20/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 14/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
21#define LOCKING_SUPPORT_ENABLE 15#define LOCKING_SUPPORT_ENABLE
22 16
diff --git a/keyboards/s60-x/rgb/rgb.c b/keyboards/s60_x/rgb/rgb.c
index 0117e14ae..0117e14ae 100644
--- a/keyboards/s60-x/rgb/rgb.c
+++ b/keyboards/s60_x/rgb/rgb.c
diff --git a/keyboards/s60-x/rgb/rgb.h b/keyboards/s60_x/rgb/rgb.h
index cb7a5f567..cb7a5f567 100644
--- a/keyboards/s60-x/rgb/rgb.h
+++ b/keyboards/s60_x/rgb/rgb.h
diff --git a/keyboards/s60-x/rgb/rules.mk b/keyboards/s60_x/rgb/rules.mk
index 6953cc6d6..6953cc6d6 100644
--- a/keyboards/s60-x/rgb/rules.mk
+++ b/keyboards/s60_x/rgb/rules.mk
diff --git a/keyboards/s60-x/rules.mk b/keyboards/s60_x/rules.mk
index 0c568efe9..0c568efe9 100644
--- a/keyboards/s60-x/rules.mk
+++ b/keyboards/s60_x/rules.mk
diff --git a/keyboards/s60_x/s60_x.c b/keyboards/s60_x/s60_x.c
new file mode 100644
index 000000000..595418bfa
--- /dev/null
+++ b/keyboards/s60_x/s60_x.c
@@ -0,0 +1 @@
#include "s60_x.h" \ No newline at end of file
diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60_x/s60_x.h
index 5bf8cfcef..5bf8cfcef 100644
--- a/keyboards/s60-x/s60-x.h
+++ b/keyboards/s60_x/s60_x.h
diff --git a/keyboards/satan/keymaps/colemak/Makefile b/keyboards/satan/keymaps/colemak/Makefile
new file mode 100644
index 000000000..2a7ff2779
--- /dev/null
+++ b/keyboards/satan/keymaps/colemak/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/satan/keymaps/colemak/keymap.c b/keyboards/satan/keymaps/colemak/keymap.c
new file mode 100644
index 000000000..ffb0d10c0
--- /dev/null
+++ b/keyboards/satan/keymaps/colemak/keymap.c
@@ -0,0 +1,98 @@
1#include "satan.h"
2
3
4// Used for SHIFT_ESC
5#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _BL 0
12#define _FL 1
13
14#define _______ KC_TRNS
15
16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
17 /* Keymap _BL: (Base Layer) Default Layer
18 * ,-----------------------------------------------------------.
19 * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
20 * |-----------------------------------------------------------|
21 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
22 * |-----------------------------------------------------------|
23 * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
24 * |-----------------------------------------------------------|
25 * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |
26 * |-----------------------------------------------------------|
27 * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl |
28 * `-----------------------------------------------------------'
29 */
30[_BL] = KEYMAP_ANSI(
31 F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
32 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC,KC_BSLS, \
33 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,KC_QUOT, KC_ENT, \
34 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
35 KC_LCTL, MO(_FL), KC_LGUI, KC_SPC, KC_RALT,KC_RGUI, MO(_FL),KC_RCTL),
36
37 /* Keymap _FL: Function Layer
38 * ,-----------------------------------------------------------.
39 * | | | | | | | | | | | | | | RESET|
40 * |-----------------------------------------------------------|
41 * | | | | | | | | | | | |BL-|BL+|BL |
42 * |--------------------------------------------ΩΩ---------------|
43 * | | | | | | | | | | | | |
44 * |-----------------------------------------------------------|
45 * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | |
46 * |-----------------------------------------------------------|
47 * | | | | | | | | |
48 * `-----------------------------------------------------------'
49 */
50[_FL] = KEYMAP_ANSI(
51 #ifdef RGBLIGHT_ENABLE
52 KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \
53 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG, \
54 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
55 _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______, \
56 _______,_______,_______, _______, _______,_______,_______, _______),
57 #else
58 KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \
59 _______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, BL_DEC, BL_INC,BL_TOGG, \
60 KC_DEL, KC_VOLD,KC_MUTE,KC_VOLU,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,_______,_______, \
61 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
62 _______,_______,_______, _______, _______,_______,_______,_______),
63 #endif
64};
65
66enum function_id {
67 SHIFT_ESC,
68};
69
70const uint16_t PROGMEM fn_actions[] = {
71 [0] = ACTION_FUNCTION(SHIFT_ESC),
72};
73
74void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
75 static uint8_t shift_esc_shift_mask;
76 switch (id) {
77 case SHIFT_ESC:
78 shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
79 if (record->event.pressed) {
80 if (shift_esc_shift_mask) {
81 add_key(KC_GRV);
82 send_keyboard_report();
83 } else {
84 add_key(KC_ESC);
85 send_keyboard_report();
86 }
87 } else {
88 if (shift_esc_shift_mask) {
89 del_key(KC_GRV);
90 send_keyboard_report();
91 } else {
92 del_key(KC_ESC);
93 send_keyboard_report();
94 }
95 }
96 break;
97 }
98}
diff --git a/keyboards/satan/keymaps/colemak/readme.md b/keyboards/satan/keymaps/colemak/readme.md
new file mode 100644
index 000000000..59bd4d124
--- /dev/null
+++ b/keyboards/satan/keymaps/colemak/readme.md
@@ -0,0 +1 @@
# Colemak layout for GH60 Satan
diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c
index d90849914..bf919da87 100644
--- a/keyboards/satan/keymaps/smt/keymap.c
+++ b/keyboards/satan/keymaps/smt/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
111 ) 111 )
112}; 112};
113 113
114void persistant_default_layer_set(uint16_t default_layer) { 114void persistent_default_layer_set(uint16_t default_layer) {
115 eeconfig_update_default_layer(default_layer); 115 eeconfig_update_default_layer(default_layer);
116 default_layer_set(default_layer); 116 default_layer_set(default_layer);
117} 117}
@@ -120,19 +120,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
120 switch (keycode) { 120 switch (keycode) {
121 case QWERTY: 121 case QWERTY:
122 if (record->event.pressed) { 122 if (record->event.pressed) {
123 persistant_default_layer_set(1UL<<_QWERTY); 123 persistent_default_layer_set(1UL<<_QWERTY);
124 } 124 }
125 return false; 125 return false;
126 break; 126 break;
127 case COLEMAK: 127 case COLEMAK:
128 if (record->event.pressed) { 128 if (record->event.pressed) {
129 persistant_default_layer_set(1UL<<_COLEMAK); 129 persistent_default_layer_set(1UL<<_COLEMAK);
130 } 130 }
131 return false; 131 return false;
132 break; 132 break;
133 case DVORAK: 133 case DVORAK:
134 if (record->event.pressed) { 134 if (record->event.pressed) {
135 persistant_default_layer_set(1UL<<_DVORAK); 135 persistent_default_layer_set(1UL<<_DVORAK);
136 } 136 }
137 return false; 137 return false;
138 break; 138 break;
diff --git a/keyboards/subatomic/keymaps/default/keymap.c b/keyboards/subatomic/keymaps/default/keymap.c
index 628ade9b6..f4aa50eba 100644
--- a/keyboards/subatomic/keymaps/default/keymap.c
+++ b/keyboards/subatomic/keymaps/default/keymap.c
@@ -177,7 +177,7 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
177float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); 177float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
178#endif 178#endif
179 179
180void persistant_default_layer_set(uint16_t default_layer) { 180void persistent_default_layer_set(uint16_t default_layer) {
181 eeconfig_update_default_layer(default_layer); 181 eeconfig_update_default_layer(default_layer);
182 default_layer_set(default_layer); 182 default_layer_set(default_layer);
183} 183}
@@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
189 #ifdef AUDIO_ENABLE 189 #ifdef AUDIO_ENABLE
190 PLAY_NOTE_ARRAY(tone_qwerty, false, 0); 190 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
191 #endif 191 #endif
192 persistant_default_layer_set(1UL<<_QWERTY); 192 persistent_default_layer_set(1UL<<_QWERTY);
193 } 193 }
194 return false; 194 return false;
195 break; 195 break;
@@ -198,7 +198,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
198 #ifdef AUDIO_ENABLE 198 #ifdef AUDIO_ENABLE
199 PLAY_NOTE_ARRAY(tone_colemak, false, 0); 199 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
200 #endif 200 #endif
201 persistant_default_layer_set(1UL<<_COLEMAK); 201 persistent_default_layer_set(1UL<<_COLEMAK);
202 } 202 }
203 return false; 203 return false;
204 break; 204 break;
@@ -207,7 +207,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
207 #ifdef AUDIO_ENABLE 207 #ifdef AUDIO_ENABLE
208 PLAY_NOTE_ARRAY(tone_dvorak, false, 0); 208 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
209 #endif 209 #endif
210 persistant_default_layer_set(1UL<<_DVORAK); 210 persistent_default_layer_set(1UL<<_DVORAK);
211 } 211 }
212 return false; 212 return false;
213 break; 213 break;
diff --git a/keyboards/tiger_lily/Makefile b/keyboards/tiger_lily/Makefile
new file mode 100644
index 000000000..57b2ef62e
--- /dev/null
+++ b/keyboards/tiger_lily/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../Makefile
3endif
diff --git a/keyboards/tiger_lily/config.h b/keyboards/tiger_lily/config.h
new file mode 100644
index 000000000..490819290
--- /dev/null
+++ b/keyboards/tiger_lily/config.h
@@ -0,0 +1,147 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Bathroom Epiphanies
28#define PRODUCT tiger_lily
29#define DESCRIPTION Tiger Lily controller for the Filco Majestouch 2
30
31/*
32 * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
33 * Ported from the Bathroom Epiphanies TMK Firmware:
34 * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers
35 *
36 */
37
38/* key matrix size */
39#define MATRIX_ROWS 8 // Row0 - Row7 in the schematic
40#define MATRIX_COLS 18 // ColA - ColR in the schematic
41
42/*
43 * Keyboard Matrix Assignments
44 */
45#define UNUSED_PINS { B0, C4, D3 }
46
47/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
48#define DEBOUNCING_DELAY 5
49
50/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
51#define LOCKING_SUPPORT_ENABLE
52/* Locking resynchronize hack */
53#define LOCKING_RESYNC_ENABLE
54
55/*
56 * Force NKRO
57 *
58 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
59 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
60 * makefile for this to work.)
61 *
62 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
63 * until the next keyboard reset.
64 *
65 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
66 * fully operational during normal computer usage.
67 *
68 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
69 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
70 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
71 * power-up.
72 *
73 */
74//#define FORCE_NKRO
75
76/*
77 * Magic Key Options
78 *
79 * Magic keys are hotkey commands that allow control over firmware functions of
80 * the keyboard. They are best used in combination with the HID Listen program,
81 * found here: https://www.pjrc.com/teensy/hid_listen.html
82 *
83 * The options below allow the magic key functionality to be changed. This is
84 * useful if your keyboard/keypad is missing keys and you want magic key support.
85 *
86 */
87
88/* key combination for magic key command */
89#define IS_COMMAND() ( \
90 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
91)
92
93/* control how magic key switches layers */
94//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
95//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
96//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
97
98/* override magic key keymap */
99//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
100//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
101//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
102//#define MAGIC_KEY_HELP1 H
103//#define MAGIC_KEY_HELP2 SLASH
104//#define MAGIC_KEY_DEBUG D
105//#define MAGIC_KEY_DEBUG_MATRIX X
106//#define MAGIC_KEY_DEBUG_KBD K
107//#define MAGIC_KEY_DEBUG_MOUSE M
108//#define MAGIC_KEY_VERSION V
109//#define MAGIC_KEY_STATUS S
110//#define MAGIC_KEY_CONSOLE C
111//#define MAGIC_KEY_LAYER0_ALT1 ESC
112//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
113//#define MAGIC_KEY_LAYER0 0
114//#define MAGIC_KEY_LAYER1 1
115//#define MAGIC_KEY_LAYER2 2
116//#define MAGIC_KEY_LAYER3 3
117//#define MAGIC_KEY_LAYER4 4
118//#define MAGIC_KEY_LAYER5 5
119//#define MAGIC_KEY_LAYER6 6
120//#define MAGIC_KEY_LAYER7 7
121//#define MAGIC_KEY_LAYER8 8
122//#define MAGIC_KEY_LAYER9 9
123//#define MAGIC_KEY_BOOTLOADER PAUSE
124//#define MAGIC_KEY_LOCK CAPS
125//#define MAGIC_KEY_EEPROM E
126//#define MAGIC_KEY_NKRO N
127//#define MAGIC_KEY_SLEEP_LED Z
128
129/*
130 * Feature disable options
131 * These options are also useful to firmware size reduction.
132 */
133
134/* disable debug print */
135//#define NO_DEBUG
136
137/* disable print */
138//#define NO_PRINT
139
140/* disable action features */
141//#define NO_ACTION_LAYER
142//#define NO_ACTION_TAPPING
143//#define NO_ACTION_ONESHOT
144//#define NO_ACTION_MACRO
145//#define NO_ACTION_FUNCTION
146
147#endif
diff --git a/keyboards/tiger_lily/keymaps/default/Makefile b/keyboards/tiger_lily/keymaps/default/Makefile
new file mode 100644
index 000000000..9d3df5964
--- /dev/null
+++ b/keyboards/tiger_lily/keymaps/default/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/tiger_lily/keymaps/default/config.h b/keyboards/tiger_lily/keymaps/default/config.h
new file mode 100644
index 000000000..8893d122e
--- /dev/null
+++ b/keyboards/tiger_lily/keymaps/default/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif
diff --git a/keyboards/tiger_lily/keymaps/default/keymap.c b/keyboards/tiger_lily/keymaps/default/keymap.c
new file mode 100644
index 000000000..f4526dc59
--- /dev/null
+++ b/keyboards/tiger_lily/keymaps/default/keymap.c
@@ -0,0 +1,11 @@
1#include "tiger_lily.h"
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4[0] = KEYMAP(\
5 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
6 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
7 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
8 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
9 KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
10 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT)
11}; \ No newline at end of file
diff --git a/keyboards/tiger_lily/keymaps/default/readme.md b/keyboards/tiger_lily/keymaps/default/readme.md
new file mode 100644
index 000000000..4626859df
--- /dev/null
+++ b/keyboards/tiger_lily/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for tiger_lily
diff --git a/keyboards/tiger_lily/matrix.c b/keyboards/tiger_lily/matrix.c
new file mode 100644
index 000000000..d3a0d7ebd
--- /dev/null
+++ b/keyboards/tiger_lily/matrix.c
@@ -0,0 +1,137 @@
1/*
2 Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include <stdint.h>
19#include <stdbool.h>
20#include <avr/io.h>
21#include <util/delay.h>
22#include "print.h"
23#include "debug.h"
24#include "util.h"
25#include "matrix.h"
26
27#ifndef DEBOUNCING_DELAY
28# define DEBOUNCING_DELAY 5
29#endif
30static uint8_t debouncing = DEBOUNCING_DELAY;
31
32static matrix_row_t matrix[MATRIX_ROWS];
33static matrix_row_t matrix_debouncing[MATRIX_ROWS];
34
35static matrix_row_t scan_col(void) {
36 return (
37 (PINC&(1<<2) ? 0 : ((matrix_row_t)1<<0)) | \
38 (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<1)) | \
39 (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \
40 (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<3)) | \
41 (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \
42 (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<5)) | \
43 (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<6)) | \
44 (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<7))
45 );
46}
47
48static void select_col(uint8_t col) {
49 switch (col) {
50 case 0: PORTD = (PORTD & ~0b01110111) | 0b01110110; break; \
51 case 1: PORTD = (PORTD & ~0b01110111) | 0b01100001; break; \
52 case 2: PORTD = (PORTD & ~0b01110111) | 0b01100101; break; \
53 case 3: PORTD = (PORTD & ~0b01110111) | 0b00000011; break; \
54 case 4: PORTD = (PORTD & ~0b01110111) | 0b00000111; break; \
55 case 5: PORTD = (PORTD & ~0b01110111) | 0b00010011; break; \
56 case 6: PORTD = (PORTD & ~0b01110111) | 0b00010111; break; \
57 case 7: PORTD = (PORTD & ~0b01110111) | 0b00100011; break; \
58 case 8: PORTD = (PORTD & ~0b01110111) | 0b00100111; break; \
59 case 9: PORTD = (PORTD & ~0b01110111) | 0b00110011; break; \
60 case 10: PORTD = (PORTD & ~0b01110111) | 0b01110010; break; \
61 case 11: PORTD = (PORTD & ~0b01110111) | 0b01100110; break; \
62 case 12: PORTD = (PORTD & ~0b01110111) | 0b01110000; break; \
63 case 13: PORTD = (PORTD & ~0b01110111) | 0b01100100; break; \
64 case 14: PORTD = (PORTD & ~0b01110111) | 0b01100000; break; \
65 case 15: PORTD = (PORTD & ~0b01110111) | 0b01000111; break; \
66 case 16: PORTD = (PORTD & ~0b01110111) | 0b01000011; break; \
67 case 17: PORTD = (PORTD & ~0b01110111) | 0b00110111; break;
68 }
69}
70
71void matrix_init(void) {
72 /* Column output pins */ \
73 DDRD |= 0b01110111; \
74 /* Row input pins */ \
75 DDRC &= ~0b10000100; \
76 DDRB &= ~0b01111110; \
77 PORTC |= 0b10000100; \
78 PORTB |= 0b01111110;
79
80 for (uint8_t i=0; i < MATRIX_ROWS; i++)
81 matrix[i] = matrix_debouncing[i] = 0;
82
83 matrix_init_quantum();
84}
85
86uint8_t matrix_scan(void) {
87 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
88 select_col(col);
89 _delay_us(3);
90 matrix_row_t col_scan = scan_col();
91 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
92 bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
93 bool curr_bit = col_scan & (1<<row);
94 if (prev_bit != curr_bit) {
95 matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
96 debouncing = DEBOUNCING_DELAY;
97 }
98 }
99 }
100
101 if (debouncing) {
102 if (--debouncing)
103 _delay_ms(1);
104 else
105 for (uint8_t i = 0; i < MATRIX_ROWS; i++)
106 matrix[i] = matrix_debouncing[i];
107 }
108
109 matrix_scan_quantum();
110 return 1;
111}
112
113inline matrix_row_t matrix_get_row(uint8_t row) {
114 return matrix[row];
115}
116
117void matrix_print(void) {
118 #ifndef NO_PRINT
119 print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
120 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
121 matrix_row_t matrix_row = matrix_get_row(row);
122 xprintf("%02X: ", row);
123 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
124 bool curr_bit = matrix_row & (1<<col);
125 xprintf("%c", curr_bit ? '*' : '.');
126 }
127 print("\n");
128 }
129 #endif
130}
131
132uint8_t matrix_key_count(void) {
133 uint8_t count = 0;
134 for (uint8_t row = 0; row < MATRIX_ROWS; row++)
135 count += bitpop32(matrix[row]);
136 return count;
137} \ No newline at end of file
diff --git a/keyboards/tiger_lily/readme.md b/keyboards/tiger_lily/readme.md
new file mode 100644
index 000000000..b5f30f2e1
--- /dev/null
+++ b/keyboards/tiger_lily/readme.md
@@ -0,0 +1,32 @@
1tiger_lily keyboard firmware
2======================
3
4This is the firmware for Rev. 20161114 of the Tiger Lily controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Filco Majestouch 2 104 key](https://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=1819). Bathroom Epiphanies has advised that the source is also compatible with the Black Petal controller, however I do not own an example to test against.
5
6The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers).
7
8## Quantum MK Firmware
9
10For the full Quantum feature list, see [the parent readme](/).
11
12## Building
13
14Download or clone the whole firmware and navigate to the keyboards/tiger_lily folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
15
16Depending on which keymap you would like to use, you will have to compile slightly differently.
17
18### Default
19
20To build with the default keymap, simply run `make default`.
21
22### Other Keymaps
23
24Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
25
26To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
27
28```
29$ make [default|jack|<name>]
30```
31
32Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboards/tiger_lily/rules.mk b/keyboards/tiger_lily/rules.mk
new file mode 100644
index 000000000..dd2f4b6ee
--- /dev/null
+++ b/keyboards/tiger_lily/rules.mk
@@ -0,0 +1,71 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u2
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49
50
51# Build Options
52# change yes to no to disable
53#
54BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
56EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
57CONSOLE_ENABLE ?= yes # Console for debug(+400)
58COMMAND_ENABLE ?= yes # Commands for debug and configuration
59# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
60SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
61# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
62NKRO_ENABLE ?= no # USB Nkey Rollover
63BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
64MIDI_ENABLE ?= no # MIDI controls
65UNICODE_ENABLE ?= no # Unicode
66BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
67AUDIO_ENABLE ?= no # Audio output on port C6
68FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
69
70CUSTOM_MATRIX = yes
71SRC += matrix.c \ No newline at end of file
diff --git a/keyboards/tiger_lily/tiger_lily.c b/keyboards/tiger_lily/tiger_lily.c
new file mode 100644
index 000000000..d2e7ba709
--- /dev/null
+++ b/keyboards/tiger_lily/tiger_lily.c
@@ -0,0 +1,63 @@
1#include "tiger_lily.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 DDRB |= (1<<7);
26 DDRC |= (1<<5) | (1<<6);
27
28 print_dec(usb_led);
29
30 if (usb_led & (1<<USB_LED_NUM_LOCK))
31 PORTC &= ~(1<<5);
32 else
33 PORTC |= (1<<5);
34
35 if (usb_led & (1<<USB_LED_SCROLL_LOCK))
36 PORTB &= ~(1<<7);
37 else
38 PORTB |= (1<<7);
39
40 if (usb_led & (1<<USB_LED_CAPS_LOCK))
41 PORTC &= ~(1<<6);
42 else
43 PORTC |= (1<<6);
44
45 led_set_user(usb_led);
46}
47
48__attribute__ ((weak))
49void matrix_init_user(void) {
50}
51
52__attribute__ ((weak))
53void matrix_scan_user(void) {
54}
55
56__attribute__ ((weak))
57bool process_record_user(uint16_t keycode, keyrecord_t *record) {
58 return true;
59}
60
61__attribute__ ((weak))
62void led_set_user(uint8_t usb_led) {
63} \ No newline at end of file
diff --git a/keyboards/tiger_lily/tiger_lily.h b/keyboards/tiger_lily/tiger_lily.h
new file mode 100644
index 000000000..a1b226558
--- /dev/null
+++ b/keyboards/tiger_lily/tiger_lily.h
@@ -0,0 +1,50 @@
1#ifndef TIGER_LILY_H
2#define TIGER_LILY_H
3
4#include "quantum.h"
5
6// This a shortcut to help you visually see your layout.
7// The following is an example using the Planck MIT layout
8// The first section contains all of the arguements
9// The second converts the arguments into a two-dimensional array
10
11/*
12 Matrix col/row mapping
13
14 ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------.
15 | J6 | | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
16 `----' `-------------------' `-------------------' `-------------------' `--------------'
17 ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
18 | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 | B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
19 |-------------------------------------------------------------------------| |--------------| |-------------------|
20 | J2 | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 | B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
21 |-------------------------------------------------------------------------| '--------------' |-------------- |
22 | O5 | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 | B1 | | K2 | L2 | Q2 | |
23 |-------------------------------------------------------------------------| ,----. |-------------------|
24 | N2 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 | N3 | | O6 | | K3 | L3 | Q3 | O3 |
25 |-------------------------------------------------------------------------| ,--------------. |-------------- |
26 | A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | |
27 `-------------------------------------------------------------------------' `--------------' `-------------------'
28*/
29#define KEYMAP( \
30 KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
31 KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
32 KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
33 KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
34 KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
35 KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
36) \
37{ \
38/* Columns and rows need to be swapped in the below definition */ \
39/* A B C D E F G H I J K L M N O P Q R */ \
40/* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \
41/* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \
42/* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \
43/* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \
44/* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \
45/* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \
46/* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \
47/* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \
48}
49
50#endif
diff --git a/keyboards/tv44/keymaps/default/keymap.c b/keyboards/tv44/keymaps/default/keymap.c
index b9fe33a7c..b4a32d6f6 100644
--- a/keyboards/tv44/keymaps/default/keymap.c
+++ b/keyboards/tv44/keymaps/default/keymap.c
@@ -69,7 +69,7 @@ const uint16_t PROGMEM fn_actions[] = {
69 69
70}; 70};
71 71
72void persistant_default_layer_set(uint16_t default_layer) { 72void persistent_default_layer_set(uint16_t default_layer) {
73 eeconfig_update_default_layer(default_layer); 73 eeconfig_update_default_layer(default_layer);
74 default_layer_set(default_layer); 74 default_layer_set(default_layer);
75} 75}
@@ -79,17 +79,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
79 switch(id) { 79 switch(id) {
80 case _DV: 80 case _DV:
81 if (record->event.pressed) { 81 if (record->event.pressed) {
82 persistant_default_layer_set(1UL<<_DV); 82 persistent_default_layer_set(1UL<<_DV);
83 } 83 }
84 break; 84 break;
85 case _QW: 85 case _QW:
86 if (record->event.pressed) { 86 if (record->event.pressed) {
87 persistant_default_layer_set(1UL<<_QW); 87 persistent_default_layer_set(1UL<<_QW);
88 } 88 }
89 break; 89 break;
90 case _CM: 90 case _CM:
91 if (record->event.pressed) { 91 if (record->event.pressed) {
92 persistant_default_layer_set(1UL<<_CM); 92 persistent_default_layer_set(1UL<<_CM);
93 } 93 }
94 break; 94 break;
95 } 95 }
diff --git a/keyboards/tv44/keymaps/jeebak/keymap.c b/keyboards/tv44/keymaps/jeebak/keymap.c
index 1bb1015c3..0d0c07164 100644
--- a/keyboards/tv44/keymaps/jeebak/keymap.c
+++ b/keyboards/tv44/keymaps/jeebak/keymap.c
@@ -285,7 +285,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
285/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/ 285/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
286}; 286};
287 287
288void persistant_default_layer_set(uint16_t default_layer) { 288void persistent_default_layer_set(uint16_t default_layer) {
289 eeconfig_update_default_layer(default_layer); 289 eeconfig_update_default_layer(default_layer);
290 default_layer_set(default_layer); 290 default_layer_set(default_layer);
291} 291}
diff --git a/keyboards/tv44/keymaps/jeebak/readme.md b/keyboards/tv44/keymaps/jeebak/readme.md
index 43d20958a..f781d5555 100644
--- a/keyboards/tv44/keymaps/jeebak/readme.md
+++ b/keyboards/tv44/keymaps/jeebak/readme.md
@@ -8,7 +8,7 @@ needed, they will be mapped to home row keys. The `keymap.c` file will contain
8the exact changes. The diagrams in this README shows the highlights of the 8the exact changes. The diagrams in this README shows the highlights of the
9changes from the default mappings. 9changes from the default mappings.
10 10
11I also decided to change all calls to `persistant_default_layer_set()` to 11I also decided to change all calls to `persistent_default_layer_set()` to
12`default_layer_set()` since this is my personal perference. 12`default_layer_set()` since this is my personal perference.
13 13
14## Macros 14## Macros
diff --git a/keyboards/tv44/keymaps/smt/keymap.c b/keyboards/tv44/keymaps/smt/keymap.c
index 532e74de0..dfd624466 100644
--- a/keyboards/tv44/keymaps/smt/keymap.c
+++ b/keyboards/tv44/keymaps/smt/keymap.c
@@ -171,7 +171,7 @@ ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _____
171/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/ 171/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
172}; 172};
173 173
174void persistant_default_layer_set(uint16_t default_layer) { 174void persistent_default_layer_set(uint16_t default_layer) {
175 eeconfig_update_default_layer(default_layer); 175 eeconfig_update_default_layer(default_layer);
176 default_layer_set(default_layer); 176 default_layer_set(default_layer);
177} 177}
@@ -180,19 +180,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
180 switch (keycode) { 180 switch (keycode) {
181 case QWERTY: 181 case QWERTY:
182 if (record->event.pressed) { 182 if (record->event.pressed) {
183 persistant_default_layer_set(1UL<<_QWERTY); 183 persistent_default_layer_set(1UL<<_QWERTY);
184 } 184 }
185 return false; 185 return false;
186 break; 186 break;
187 case COLEMAK: 187 case COLEMAK:
188 if (record->event.pressed) { 188 if (record->event.pressed) {
189 persistant_default_layer_set(1UL<<_COLEMAK); 189 persistent_default_layer_set(1UL<<_COLEMAK);
190 } 190 }
191 return false; 191 return false;
192 break; 192 break;
193 case DVORAK: 193 case DVORAK:
194 if (record->event.pressed) { 194 if (record->event.pressed) {
195 persistant_default_layer_set(1UL<<_DVORAK); 195 persistent_default_layer_set(1UL<<_DVORAK);
196 } 196 }
197 return false; 197 return false;
198 break; 198 break;
diff --git a/keyboards/tv44/keymaps/xyverz/keymap.c b/keyboards/tv44/keymaps/xyverz/keymap.c
index 3ff16de35..d710d8024 100644
--- a/keyboards/tv44/keymaps/xyverz/keymap.c
+++ b/keyboards/tv44/keymaps/xyverz/keymap.c
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
71 } 71 }
72}; 72};
73 73
74void persistant_default_layer_set(uint16_t default_layer) { 74void persistent_default_layer_set(uint16_t default_layer) {
75 eeconfig_update_default_layer(default_layer); 75 eeconfig_update_default_layer(default_layer);
76 default_layer_set(default_layer); 76 default_layer_set(default_layer);
77} 77}
@@ -80,19 +80,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
80 switch (keycode) { 80 switch (keycode) {
81 case QWERTY: 81 case QWERTY:
82 if (record->event.pressed) { 82 if (record->event.pressed) {
83 persistant_default_layer_set(1UL<<_QWERTY); 83 persistent_default_layer_set(1UL<<_QWERTY);
84 } 84 }
85 return false; 85 return false;
86 break; 86 break;
87 case COLEMAK: 87 case COLEMAK:
88 if (record->event.pressed) { 88 if (record->event.pressed) {
89 persistant_default_layer_set(1UL<<_COLEMAK); 89 persistent_default_layer_set(1UL<<_COLEMAK);
90 } 90 }
91 return false; 91 return false;
92 break; 92 break;
93 case DVORAK: 93 case DVORAK:
94 if (record->event.pressed) { 94 if (record->event.pressed) {
95 persistant_default_layer_set(1UL<<_DVORAK); 95 persistent_default_layer_set(1UL<<_DVORAK);
96 } 96 }
97 return false; 97 return false;
98 break; 98 break;
diff --git a/keyboards/vision_division/keymaps/default/keymap.c b/keyboards/vision_division/keymaps/default/keymap.c
index 3282761c0..15ce68897 100644
--- a/keyboards/vision_division/keymaps/default/keymap.c
+++ b/keyboards/vision_division/keymaps/default/keymap.c
@@ -299,7 +299,7 @@ float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
299 299
300#endif /* AUDIO_ENABLE */ 300#endif /* AUDIO_ENABLE */
301 301
302void persistant_default_layer_set(uint16_t default_layer) 302void persistent_default_layer_set(uint16_t default_layer)
303{ 303{
304 eeconfig_update_default_layer(default_layer); 304 eeconfig_update_default_layer(default_layer);
305 default_layer_set(default_layer); 305 default_layer_set(default_layer);
@@ -427,7 +427,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
427 case MACRO_QWERTY: 427 case MACRO_QWERTY:
428 if (record->event.pressed) 428 if (record->event.pressed)
429 { 429 {
430 persistant_default_layer_set(1UL<<LAYER_QWERTY); 430 persistent_default_layer_set(1UL<<LAYER_QWERTY);
431 } 431 }
432 break; 432 break;
433 433
diff --git a/keyboards/xd60/readme.md b/keyboards/xd60/readme.md
index 224498caa..dcc45ead2 100644
--- a/keyboards/xd60/readme.md
+++ b/keyboards/xd60/readme.md
@@ -1,6 +1,6 @@
1# QMK Firmware for XIUDI's 60% XD60 PCB 1# QMK Firmware for XIUDI's 60% XD60 PCB
2 2
3![Top View of a pair of XD60 Keyboard](./xd60.JPG) 3![Top View of a pair of XD60 Keyboard](./xd60.jpg)
4 4
5## Quantum MK Firmware 5## Quantum MK Firmware
6For the full Quantum feature list, see [the parent readme.md](/readme.md). 6For the full Quantum feature list, see [the parent readme.md](/readme.md).
diff --git a/quantum/dynamic_macro.h b/quantum/dynamic_macro.h
index 64093f293..f242405de 100644
--- a/quantum/dynamic_macro.h
+++ b/quantum/dynamic_macro.h
@@ -40,6 +40,7 @@
40enum dynamic_macro_keycodes { 40enum dynamic_macro_keycodes {
41 DYN_REC_START1 = DYNAMIC_MACRO_RANGE, 41 DYN_REC_START1 = DYNAMIC_MACRO_RANGE,
42 DYN_REC_START2, 42 DYN_REC_START2,
43 DYN_REC_STOP,
43 DYN_MACRO_PLAY1, 44 DYN_MACRO_PLAY1,
44 DYN_MACRO_PLAY2, 45 DYN_MACRO_PLAY2,
45}; 46};
@@ -47,11 +48,22 @@ enum dynamic_macro_keycodes {
47/* Blink the LEDs to notify the user about some event. */ 48/* Blink the LEDs to notify the user about some event. */
48void dynamic_macro_led_blink(void) 49void dynamic_macro_led_blink(void)
49{ 50{
51#ifdef BACKLIGHT_ENABLE
50 backlight_toggle(); 52 backlight_toggle();
51 _delay_ms(100); 53 _delay_ms(100);
52 backlight_toggle(); 54 backlight_toggle();
55#endif
53} 56}
54 57
58/* Convenience macros used for retrieving the debug info. All of them
59 * need a `direction` variable accessible at the call site.
60 */
61#define DYNAMIC_MACRO_CURRENT_SLOT() (direction > 0 ? 1 : 2)
62#define DYNAMIC_MACRO_CURRENT_LENGTH(BEGIN, POINTER) \
63 ((int)(direction * ((POINTER) - (BEGIN))))
64#define DYNAMIC_MACRO_CURRENT_CAPACITY(BEGIN, END2) \
65 ((int)(direction * ((END2) - (BEGIN)) + 1))
66
55/** 67/**
56 * Start recording of the dynamic macro. 68 * Start recording of the dynamic macro.
57 * 69 *
@@ -61,6 +73,8 @@ void dynamic_macro_led_blink(void)
61void dynamic_macro_record_start( 73void dynamic_macro_record_start(
62 keyrecord_t **macro_pointer, keyrecord_t *macro_buffer) 74 keyrecord_t **macro_pointer, keyrecord_t *macro_buffer)
63{ 75{
76 dprintln("dynamic macro recording: started");
77
64 dynamic_macro_led_blink(); 78 dynamic_macro_led_blink();
65 79
66 clear_keyboard(); 80 clear_keyboard();
@@ -78,6 +92,8 @@ void dynamic_macro_record_start(
78void dynamic_macro_play( 92void dynamic_macro_play(
79 keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction) 93 keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction)
80{ 94{
95 dprintf("dynamic macro: slot %d playback\n", DYNAMIC_MACRO_CURRENT_SLOT());
96
81 uint32_t saved_layer_state = layer_state; 97 uint32_t saved_layer_state = layer_state;
82 98
83 clear_keyboard(); 99 clear_keyboard();
@@ -96,35 +112,68 @@ void dynamic_macro_play(
96/** 112/**
97 * Record a single key in a dynamic macro. 113 * Record a single key in a dynamic macro.
98 * 114 *
115 * @param macro_buffer[in] The start of the used macro buffer.
99 * @param macro_pointer[in,out] The current buffer position. 116 * @param macro_pointer[in,out] The current buffer position.
100 * @param macro_end2[in] The end of the other macro which shouldn't be overwritten. 117 * @param macro2_end[in] The end of the other macro.
101 * @param direction[in] Either +1 or -1, which way to iterate the buffer. 118 * @param direction[in] Either +1 or -1, which way to iterate the buffer.
102 * @param record[in] The current keypress. 119 * @param record[in] The current keypress.
103 */ 120 */
104void dynamic_macro_record_key( 121void dynamic_macro_record_key(
122 keyrecord_t *macro_buffer,
105 keyrecord_t **macro_pointer, 123 keyrecord_t **macro_pointer,
106 keyrecord_t *macro_end2, 124 keyrecord_t *macro2_end,
107 int8_t direction, 125 int8_t direction,
108 keyrecord_t *record) 126 keyrecord_t *record)
109{ 127{
110 if (*macro_pointer + direction != macro_end2) { 128 /* If we've just started recording, ignore all the key releases. */
129 if (!record->event.pressed && *macro_pointer == macro_buffer) {
130 dprintln("dynamic macro: ignoring a leading key-up event");
131 return;
132 }
133
134 /* The other end of the other macro is the last buffer element it
135 * is safe to use before overwriting the other macro.
136 */
137 if (*macro_pointer - direction != macro2_end) {
111 **macro_pointer = *record; 138 **macro_pointer = *record;
112 *macro_pointer += direction; 139 *macro_pointer += direction;
113 } else { 140 } else {
114 /* Notify about the end of buffer. The blinks are paired 141 dynamic_macro_led_blink();
115 * because they should happen on both down and up events. */
116 backlight_toggle();
117 } 142 }
143
144 dprintf(
145 "dynamic macro: slot %d length: %d/%d\n",
146 DYNAMIC_MACRO_CURRENT_SLOT(),
147 DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, *macro_pointer),
148 DYNAMIC_MACRO_CURRENT_CAPACITY(macro_buffer, macro2_end));
118} 149}
119 150
120/** 151/**
121 * End recording of the dynamic macro. Essentially just update the 152 * End recording of the dynamic macro. Essentially just update the
122 * pointer to the end of the macro. 153 * pointer to the end of the macro.
123 */ 154 */
124void dynamic_macro_record_end(keyrecord_t *macro_pointer, keyrecord_t **macro_end) 155void dynamic_macro_record_end(
156 keyrecord_t *macro_buffer,
157 keyrecord_t *macro_pointer,
158 int8_t direction,
159 keyrecord_t **macro_end)
125{ 160{
126 dynamic_macro_led_blink(); 161 dynamic_macro_led_blink();
127 162
163 /* Do not save the keys being held when stopping the recording,
164 * i.e. the keys used to access the layer DYN_REC_STOP is on.
165 */
166 while (macro_pointer != macro_buffer &&
167 (macro_pointer - direction)->event.pressed) {
168 dprintln("dynamic macro: trimming a trailing key-down event");
169 macro_pointer -= direction;
170 }
171
172 dprintf(
173 "dynamic macro: slot %d saved, length: %d\n",
174 DYNAMIC_MACRO_CURRENT_SLOT(),
175 DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, macro_pointer));
176
128 *macro_end = macro_pointer; 177 *macro_end = macro_pointer;
129} 178}
130 179
@@ -152,7 +201,7 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
152 * &macro_buffer macro_end 201 * &macro_buffer macro_end
153 * v v 202 * v v
154 * +------------------------------------------------------------+ 203 * +------------------------------------------------------------+
155 * |>>>>>> MACRO1 >>>>>>| |<<<<<<<<<<<<< MACRO2 <<<<<<<<<<<<<| 204 * |>>>>>> MACRO1 >>>>>> <<<<<<<<<<<<< MACRO2 <<<<<<<<<<<<<|
156 * +------------------------------------------------------------+ 205 * +------------------------------------------------------------+
157 * ^ ^ 206 * ^ ^
158 * r_macro_end r_macro_buffer 207 * r_macro_end r_macro_buffer
@@ -209,18 +258,17 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
209 } else { 258 } else {
210 /* A macro is being recorded right now. */ 259 /* A macro is being recorded right now. */
211 switch (keycode) { 260 switch (keycode) {
212 case MO(_DYN): 261 case DYN_REC_STOP:
213 /* Use the layer key used to access the macro recording as 262 /* Stop the macro recording. */
214 * a stop button. */
215 if (record->event.pressed) { /* Ignore the initial release 263 if (record->event.pressed) { /* Ignore the initial release
216 * just after the recoding 264 * just after the recoding
217 * starts. */ 265 * starts. */
218 switch (macro_id) { 266 switch (macro_id) {
219 case 1: 267 case 1:
220 dynamic_macro_record_end(macro_pointer, &macro_end); 268 dynamic_macro_record_end(macro_buffer, macro_pointer, +1, &macro_end);
221 break; 269 break;
222 case 2: 270 case 2:
223 dynamic_macro_record_end(macro_pointer, &r_macro_end); 271 dynamic_macro_record_end(r_macro_buffer, macro_pointer, -1, &r_macro_end);
224 break; 272 break;
225 } 273 }
226 macro_id = 0; 274 macro_id = 0;
@@ -230,10 +278,10 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
230 /* Store the key in the macro buffer and process it normally. */ 278 /* Store the key in the macro buffer and process it normally. */
231 switch (macro_id) { 279 switch (macro_id) {
232 case 1: 280 case 1:
233 dynamic_macro_record_key(&macro_pointer, r_macro_end, +1, record); 281 dynamic_macro_record_key(macro_buffer, &macro_pointer, r_macro_end, +1, record);
234 break; 282 break;
235 case 2: 283 case 2:
236 dynamic_macro_record_key(&macro_pointer, macro_end, -1, record); 284 dynamic_macro_record_key(r_macro_buffer, &macro_pointer, macro_end, -1, record);
237 break; 285 break;
238 } 286 }
239 return true; 287 return true;
@@ -244,4 +292,8 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record)
244 return true; 292 return true;
245} 293}
246 294
295#undef DYNAMIC_MACRO_CURRENT_SLOT
296#undef DYNAMIC_MACRO_CURRENT_LENGTH
297#undef DYNAMIC_MACRO_CURRENT_CAPACITY
298
247#endif 299#endif
diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c
index 0227fbdd7..75f35112b 100644
--- a/quantum/process_keycode/process_unicodemap.c
+++ b/quantum/process_keycode/process_unicodemap.c
@@ -49,7 +49,7 @@ bool process_unicode_map(uint16_t keycode, keyrecord_t *record) {
49 if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { 49 if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) {
50 const uint32_t* map = unicode_map; 50 const uint32_t* map = unicode_map;
51 uint16_t index = keycode - QK_UNICODE_MAP; 51 uint16_t index = keycode - QK_UNICODE_MAP;
52 uint32_t code = pgm_read_dword_far(&map[index]); 52 uint32_t code = pgm_read_dword(&map[index]);
53 if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) { 53 if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) {
54 // Convert to UTF-16 surrogate pair 54 // Convert to UTF-16 surrogate pair
55 code -= 0x10000; 55 code -= 0x10000;
diff --git a/readme.md b/readme.md
index f7bf14b6a..6db2f8d9f 100644
--- a/readme.md
+++ b/readme.md
@@ -1,18 +1,21 @@
1# Quantum Mechanical Keyboard Firmware 1# Quantum Mechanical Keyboard Firmware
2 2
3[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 3[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
4[![Gitter](https://img.shields.io/gitter/room/qmk/qmk_firmware.js.svg)](https://gitter.im/qmk/qmk_firmware)
5[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
6[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
7[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
4 8
5This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). 9This is a keyboard firmware based on the [tmk\_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR and ARM controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/).
6 10
7## Official website (currently under construction with the move to the wiki) 11## Official website
8 12
9For an easy-to-read version of this document and the repository, check out [http://qmk.fm](http://qmk.fm). Nicely formatted keyboard and keymap listings are also available there, along with the ability to download .hex files instead of having to setup a build environment and compile them. 13[http://qmk.fm](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.
10 14
11## Included Keyboards 15## Supported Keyboards
12 16
13* [Planck](/keyboards/planck/) 17* [Planck](/keyboards/planck/)
14* [Preonic](/keyboards/preonic/) 18* [Preonic](/keyboards/preonic/)
15* [Atomic](/keyboards/atomic/)
16* [ErgoDox EZ](/keyboards/ergodox/) 19* [ErgoDox EZ](/keyboards/ergodox/)
17* [Clueboard](/keyboards/clueboard/) 20* [Clueboard](/keyboards/clueboard/)
18* [Cluepad](/keyboards/cluepad/) 21* [Cluepad](/keyboards/cluepad/)
@@ -21,19 +24,8 @@ The project also includes community support for [lots of other keyboards](/keybo
21 24
22## Maintainers 25## Maintainers
23 26
24QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, [Hasu](https://github.com/tmk). This repo used to be a fork of [TMK](https://github.com/tmk/tmk_keyboard), and we are incredibly grateful for his founding contributions to the firmware. We've had to break the fork due to purely technical reasons - it simply became too different over time, and we've had to start refactoring some of the basic bits and pieces. We are huge fans of TMK and Hasu :) 27QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, [Hasu](https://github.com/tmk). The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/jackhumbert), the Ergodox EZ by [Erez Zukerman](https://github.com/ezuk), and the Clueboard by [Zach White](https://github.com/skullydazed).
25 28
26This documentation is edited and maintained by Erez Zukerman of ErgoDox EZ. If you spot any typos or inaccuracies, please [open an issue](https://github.com/qmk/qmk_firmware/issues/new). 29## Documentation
27 30
28The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/jackhumbert), the Ergodox EZ by [Erez Zukerman](https://github.com/ezuk), and the Clueboard by [Zach White](https://github.com/skullydazed). 31[https://docs.qmk.fm](https://docs.qmk.fm) is hosted on [Gitbook](https://www.gitbook.com/book/qmk/firmware/details) and [Github](https://github.com/qmk/qmk_firmware_docs/) (they are synced). You can request changes by making a fork and [pull request](https://github.com/qmk/qmk_firmware_docs/pulls), or by clicking the "suggest an edit" link on any page of the Docs.
29
30## Documentation roadmap
31
32This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest:
33
34* [**The Wiki**](https://github.com/qmk/qmk_firmware/wiki) - the entirety of the readme has been moved here
35* The readme for your own keyboard: This is found under `keyboards/<your keyboards's name>/`. So for the ErgoDox, it's [here](keyboards/ergodox/); for the Planck, it's [here](keyboards/planck/) and so on.
36* The list of possible keycodes you can use in your keymap is actually spread out in a few different places:
37 * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes.
38 * [quantum/quantum_keycodes.h](quantum/quantum_keycodes.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `quantum_keycodes.h` is where they're actually defined.
39* The [TMK documentation](doc/TMK_README.md). QMK is based on TMK, and this explains how it works internally.
diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index 5df539def..ccecdb192 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -89,9 +89,9 @@ DEBUG_HOST = localhost
89#============================================================================ 89#============================================================================
90# Autodecct teensy loader 90# Autodecct teensy loader
91ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) 91ifneq (, $(shell which teensy-loader-cli 2>/dev/null))
92 TEENSY_LOADER_CLI = teensy-loader-cli 92 TEENSY_LOADER_CLI ?= teensy-loader-cli
93else 93else
94 TEENSY_LOADER_CLI = teensy_loader_cli 94 TEENSY_LOADER_CLI ?= teensy_loader_cli
95endif 95endif
96 96
97# Program the device. 97# Program the device.
@@ -100,43 +100,47 @@ program: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
100 100
101teensy: $(BUILD_DIR)/$(TARGET).hex 101teensy: $(BUILD_DIR)/$(TARGET).hex
102 $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex 102 $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
103
104BATCHISP ?= batchisp
103 105
104flip: $(BUILD_DIR)/$(TARGET).hex 106flip: $(BUILD_DIR)/$(TARGET).hex
105 batchisp -hardware usb -device $(MCU) -operation erase f 107 $(BATCHISP) -hardware usb -device $(MCU) -operation erase f
106 batchisp -hardware usb -device $(MCU) -operation loadbuffer $(BUILD_DIR)/$(TARGET).hex program 108 $(BATCHISP) -hardware usb -device $(MCU) -operation loadbuffer $(BUILD_DIR)/$(TARGET).hex program
107 batchisp -hardware usb -device $(MCU) -operation start reset 0 109 $(BATCHISP) -hardware usb -device $(MCU) -operation start reset 0
110
111DFU_PROGRAMMER ?= dfu-programmer
108 112
109dfu: $(BUILD_DIR)/$(TARGET).hex sizeafter 113dfu: $(BUILD_DIR)/$(TARGET).hex sizeafter
110 until dfu-programmer $(MCU) get bootloader-version; do\ 114 until $(DFU_PROGRAMMER) $(MCU) get bootloader-version; do\
111 echo "Error: Bootloader not found. Trying again in 5s." ;\ 115 echo "Error: Bootloader not found. Trying again in 5s." ;\
112 sleep 5 ;\ 116 sleep 5 ;\
113 done 117 done
114ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1))) 118ifneq (, $(findstring 0.7, $(shell $(DFU_PROGRAMMER) --version 2>&1)))
115 dfu-programmer $(MCU) erase --force 119 $(DFU_PROGRAMMER) $(MCU) erase --force
116else 120else
117 dfu-programmer $(MCU) erase 121 $(DFU_PROGRAMMER) $(MCU) erase
118endif 122endif
119 dfu-programmer $(MCU) flash $(BUILD_DIR)/$(TARGET).hex 123 $(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex
120 dfu-programmer $(MCU) reset 124 $(DFU_PROGRAMMER) $(MCU) reset
121 125
122dfu-start: 126dfu-start:
123 dfu-programmer $(MCU) reset 127 $(DFU_PROGRAMMER) $(MCU) reset
124 dfu-programmer $(MCU) start 128 $(DFU_PROGRAMMER) $(MCU) start
125 129
126flip-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep 130flip-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
127 $(COPY) $(BUILD_DIR)/$(TARGET).eep $(BUILD_DIR)/$(TARGET)eep.hex 131 $(COPY) $(BUILD_DIR)/$(TARGET).eep $(BUILD_DIR)/$(TARGET)eep.hex
128 batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase 132 $(BATCHISP) -hardware usb -device $(MCU) -operation memory EEPROM erase
129 batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(BUILD_DIR)/$(TARGET)eep.hex program 133 $(BATCHISP) -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(BUILD_DIR)/$(TARGET)eep.hex program
130 batchisp -hardware usb -device $(MCU) -operation start reset 0 134 $(BATCHISP) -hardware usb -device $(MCU) -operation start reset 0
131 $(REMOVE) $(BUILD_DIR)/$(TARGET)eep.hex 135 $(REMOVE) $(BUILD_DIR)/$(TARGET)eep.hex
132 136
133dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep 137dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
134ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1))) 138ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1)))
135 dfu-programmer $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep 139 $(DFU_PROGRAMMER) $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep
136else 140else
137 dfu-programmer $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep 141 $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep
138endif 142endif
139 dfu-programmer $(MCU) reset 143 $(DFU_PROGRAMMER) $(MCU) reset
140 144
141# Convert hex to bin. 145# Convert hex to bin.
142flashbin: $(BUILD_DIR)/$(TARGET).hex 146flashbin: $(BUILD_DIR)/$(TARGET).hex
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
index eb0c40138..2a8d32fb9 100644
--- a/tmk_core/chibios.mk
+++ b/tmk_core/chibios.mk
@@ -151,5 +151,7 @@ endif
151# List any extra directories to look for libraries here. 151# List any extra directories to look for libraries here.
152EXTRALIBDIRS = $(RULESPATH)/ld 152EXTRALIBDIRS = $(RULESPATH)/ld
153 153
154DFU_UTIL ?= dfu-util
155
154dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter 156dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter
155 dfu-util $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin 157 $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index 4ba1cc251..f73b0fe80 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
26#include "action_macro.h" 26#include "action_macro.h"
27#include "action_util.h" 27#include "action_util.h"
28#include "action.h" 28#include "action.h"
29#include "wait.h"
29 30
30#ifdef DEBUG_ACTION 31#ifdef DEBUG_ACTION
31#include "debug.h" 32#include "debug.h"
@@ -33,6 +34,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
33#include "nodebug.h" 34#include "nodebug.h"
34#endif 35#endif
35 36
37int tp_buttons;
38
36#ifdef FAUXCLICKY_ENABLE 39#ifdef FAUXCLICKY_ENABLE
37#include <fauxclicky.h> 40#include <fauxclicky.h>
38#endif 41#endif
@@ -310,11 +313,35 @@ void process_action(keyrecord_t *record, action_t action)
310 /* Mouse key */ 313 /* Mouse key */
311 case ACT_MOUSEKEY: 314 case ACT_MOUSEKEY:
312 if (event.pressed) { 315 if (event.pressed) {
313 mousekey_on(action.key.code); 316 switch (action.key.code) {
314 mousekey_send(); 317 case KC_MS_BTN1:
318 tp_buttons |= (1<<0);
319 break;
320 case KC_MS_BTN2:
321 tp_buttons |= (1<<1);
322 break;
323 case KC_MS_BTN3:
324 tp_buttons |= (1<<2);
325 break;
326 default:
327 mousekey_on(action.key.code);
328 mousekey_send();
329 }
315 } else { 330 } else {
316 mousekey_off(action.key.code); 331 switch (action.key.code) {
317 mousekey_send(); 332 case KC_MS_BTN1:
333 tp_buttons &= ~(1<<0);
334 break;
335 case KC_MS_BTN2:
336 tp_buttons &= ~(1<<1);
337 break;
338 case KC_MS_BTN3:
339 tp_buttons &= ~(1<<2);
340 break;
341 default:
342 mousekey_off(action.key.code);
343 mousekey_send();
344 }
318 } 345 }
319 break; 346 break;
320#endif 347#endif
@@ -438,6 +465,9 @@ void process_action(keyrecord_t *record, action_t action)
438 } else { 465 } else {
439 if (tap_count > 0) { 466 if (tap_count > 0) {
440 dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n"); 467 dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n");
468 if (action.layer_tap.code == KC_CAPS) {
469 wait_ms(80);
470 }
441 unregister_code(action.layer_tap.code); 471 unregister_code(action.layer_tap.code);
442 } else { 472 } else {
443 dprint("KEYMAP_TAP_KEY: No tap: Off on release\n"); 473 dprint("KEYMAP_TAP_KEY: No tap: Off on release\n");
@@ -537,6 +567,21 @@ void process_action(keyrecord_t *record, action_t action)
537 break; 567 break;
538 } 568 }
539 569
570#ifndef NO_ACTION_LAYER
571 // if this event is a layer action, update the leds
572 switch (action.kind.id) {
573 case ACT_LAYER:
574 #ifndef NO_ACTION_TAPPING
575 case ACT_LAYER_TAP:
576 case ACT_LAYER_TAP_EXT:
577 #endif
578 led_set(host_keyboard_leds());
579 break;
580 default:
581 break;
582 }
583#endif
584
540#ifndef NO_ACTION_ONESHOT 585#ifndef NO_ACTION_ONESHOT
541 /* Because we switch layers after a oneshot event, we need to release the 586 /* Because we switch layers after a oneshot event, we need to release the
542 * key before we leave the layer or no key up event will be generated. 587 * key before we leave the layer or no key up event will be generated.
diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c
index eac1f1dd8..97a8f1cd8 100644
--- a/tmk_core/common/keyboard.c
+++ b/tmk_core/common/keyboard.c
@@ -61,23 +61,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
61# include "visualizer/visualizer.h" 61# include "visualizer/visualizer.h"
62#endif 62#endif
63 63
64#ifdef MATRIX_HAS_GHOST
65extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
66static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata){
67 matrix_row_t out = 0;
68 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
69 //read each key in the row data and check if the keymap defines it as a real key
70 if (pgm_read_byte(&keymaps[0][row][col]) && (rowdata & (1<<col))){
71 //this creates new row data, if a key is defined in the keymap, it will be set here
72 out |= 1<<col;
73 }
74 }
75 return out;
76}
64 77
78static inline bool popcount_more_than_one(matrix_row_t rowdata)
79{
80 rowdata &= rowdata-1; //if there are less than two bits (keys) set, rowdata will become zero
81 return rowdata;
82}
65 83
66#ifdef MATRIX_HAS_GHOST 84static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata)
67static bool has_ghost_in_row(uint8_t row)
68{ 85{
69 matrix_row_t matrix_row = matrix_get_row(row); 86 /* No ghost exists when less than 2 keys are down on the row.
70 // No ghost exists when less than 2 keys are down on the row 87 If there are "active" blanks in the matrix, the key can't be pressed by the user,
71 if (((matrix_row - 1) & matrix_row) == 0) 88 there is no doubt as to which keys are really being pressed.
89 The ghosts will be ignored, they are KC_NO. */
90 rowdata = get_real_keys(row, rowdata);
91 if ((popcount_more_than_one(rowdata)) == 0){
72 return false; 92 return false;
73 93 }
74 // Ghost occurs when the row shares column line with other row 94 /* Ghost occurs when the row shares a column line with other row,
95 and two columns are read on each row. Blanks in the matrix don't matter,
96 so they are filtered out.
97 If there are two or more real keys pressed and they match columns with
98 at least two of another row's real keys, the row will be ignored. Keep in mind,
99 we are checking one row at a time, not all of them at once.
100 */
75 for (uint8_t i=0; i < MATRIX_ROWS; i++) { 101 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
76 if (i != row && (matrix_get_row(i) & matrix_row)) 102 if (i != row && popcount_more_than_one(get_real_keys(i, matrix_get_row(i)) & rowdata)){
77 return true; 103 return true;
104 }
78 } 105 }
79 return false; 106 return false;
80} 107}
108
81#endif 109#endif
82 110
83__attribute__ ((weak)) 111__attribute__ ((weak))
@@ -127,7 +155,7 @@ void keyboard_task(void)
127{ 155{
128 static matrix_row_t matrix_prev[MATRIX_ROWS]; 156 static matrix_row_t matrix_prev[MATRIX_ROWS];
129#ifdef MATRIX_HAS_GHOST 157#ifdef MATRIX_HAS_GHOST
130 static matrix_row_t matrix_ghost[MATRIX_ROWS]; 158 // static matrix_row_t matrix_ghost[MATRIX_ROWS];
131#endif 159#endif
132 static uint8_t led_status = 0; 160 static uint8_t led_status = 0;
133 matrix_row_t matrix_row = 0; 161 matrix_row_t matrix_row = 0;
@@ -139,18 +167,18 @@ void keyboard_task(void)
139 matrix_change = matrix_row ^ matrix_prev[r]; 167 matrix_change = matrix_row ^ matrix_prev[r];
140 if (matrix_change) { 168 if (matrix_change) {
141#ifdef MATRIX_HAS_GHOST 169#ifdef MATRIX_HAS_GHOST
142 if (has_ghost_in_row(r)) { 170 if (has_ghost_in_row(r, matrix_row)) {
143 /* Keep track of whether ghosted status has changed for 171 /* Keep track of whether ghosted status has changed for
144 * debugging. But don't update matrix_prev until un-ghosted, or 172 * debugging. But don't update matrix_prev until un-ghosted, or
145 * the last key would be lost. 173 * the last key would be lost.
146 */ 174 */
147 if (debug_matrix && matrix_ghost[r] != matrix_row) { 175 //if (debug_matrix && matrix_ghost[r] != matrix_row) {
148 matrix_print(); 176 // matrix_print();
149 } 177 //}
150 matrix_ghost[r] = matrix_row; 178 //matrix_ghost[r] = matrix_row;
151 continue; 179 continue;
152 } 180 }
153 matrix_ghost[r] = matrix_row; 181 //matrix_ghost[r] = matrix_row;
154#endif 182#endif
155 if (debug_matrix) matrix_print(); 183 if (debug_matrix) matrix_print();
156 for (uint8_t c = 0; c < MATRIX_COLS; c++) { 184 for (uint8_t c = 0; c < MATRIX_COLS; c++) {
diff --git a/tmk_core/common/keyboard.h b/tmk_core/common/keyboard.h
index 7738251b6..f17003c2f 100644
--- a/tmk_core/common/keyboard.h
+++ b/tmk_core/common/keyboard.h
@@ -57,7 +57,6 @@ static inline bool IS_RELEASED(keyevent_t event) { return (!IS_NOEVENT(event) &&
57 .time = (timer_read() | 1) \ 57 .time = (timer_read() | 1) \
58} 58}
59 59
60
61/* it runs once at early stage of startup before keyboard_init. */ 60/* it runs once at early stage of startup before keyboard_init. */
62void keyboard_setup(void); 61void keyboard_setup(void);
63/* it runs once after initializing host side protocol, debug and MCU peripherals. */ 62/* it runs once after initializing host side protocol, debug and MCU peripherals. */
diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c
index d9ccbecb4..4ed3cae1f 100644
--- a/tmk_core/protocol/ps2_mouse.c
+++ b/tmk_core/protocol/ps2_mouse.c
@@ -72,12 +72,13 @@ void ps2_mouse_init_user(void) {
72 72
73void ps2_mouse_task(void) { 73void ps2_mouse_task(void) {
74 static uint8_t buttons_prev = 0; 74 static uint8_t buttons_prev = 0;
75 extern int tp_buttons;
75 76
76 /* receives packet from mouse */ 77 /* receives packet from mouse */
77 uint8_t rcv; 78 uint8_t rcv;
78 rcv = ps2_host_send(PS2_MOUSE_READ_DATA); 79 rcv = ps2_host_send(PS2_MOUSE_READ_DATA);
79 if (rcv == PS2_ACK) { 80 if (rcv == PS2_ACK) {
80 mouse_report.buttons = ps2_host_recv_response(); 81 mouse_report.buttons = ps2_host_recv_response() | tp_buttons;
81 mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER; 82 mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER;
82 mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER; 83 mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER;
83#ifdef PS2_MOUSE_ENABLE_SCROLLING 84#ifdef PS2_MOUSE_ENABLE_SCROLLING
@@ -106,34 +107,34 @@ void ps2_mouse_task(void) {
106#endif 107#endif
107 host_mouse_send(&mouse_report); 108 host_mouse_send(&mouse_report);
108 } 109 }
109 110
110 ps2_mouse_clear_report(&mouse_report); 111 ps2_mouse_clear_report(&mouse_report);
111} 112}
112 113
113void ps2_mouse_disable_data_reporting(void) { 114void ps2_mouse_disable_data_reporting(void) {
114 PS2_MOUSE_SEND(PS2_MOUSE_DISABLE_DATA_REPORTING, "ps2 mouse disable data reporting"); 115 PS2_MOUSE_SEND(PS2_MOUSE_DISABLE_DATA_REPORTING, "ps2 mouse disable data reporting");
115} 116}
116 117
117void ps2_mouse_enable_data_reporting(void) { 118void ps2_mouse_enable_data_reporting(void) {
118 PS2_MOUSE_SEND(PS2_MOUSE_ENABLE_DATA_REPORTING, "ps2 mouse enable data reporting"); 119 PS2_MOUSE_SEND(PS2_MOUSE_ENABLE_DATA_REPORTING, "ps2 mouse enable data reporting");
119} 120}
120 121
121void ps2_mouse_set_remote_mode(void) { 122void ps2_mouse_set_remote_mode(void) {
122 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_REMOTE_MODE, "ps2 mouse set remote mode"); 123 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_REMOTE_MODE, "ps2 mouse set remote mode");
123 ps2_mouse_mode = PS2_MOUSE_REMOTE_MODE; 124 ps2_mouse_mode = PS2_MOUSE_REMOTE_MODE;
124} 125}
125 126
126void ps2_mouse_set_stream_mode(void) { 127void ps2_mouse_set_stream_mode(void) {
127 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_STREAM_MODE, "ps2 mouse set stream mode"); 128 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_STREAM_MODE, "ps2 mouse set stream mode");
128 ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; 129 ps2_mouse_mode = PS2_MOUSE_STREAM_MODE;
129} 130}
130 131
131void ps2_mouse_set_scaling_2_1(void) { 132void ps2_mouse_set_scaling_2_1(void) {
132 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_2_1, "ps2 mouse set scaling 2:1"); 133 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_2_1, "ps2 mouse set scaling 2:1");
133} 134}
134 135
135void ps2_mouse_set_scaling_1_1(void) { 136void ps2_mouse_set_scaling_1_1(void) {
136 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_1_1, "ps2 mouse set scaling 1:1"); 137 PS2_MOUSE_SEND_SAFE(PS2_MOUSE_SET_SCALING_1_1, "ps2 mouse set scaling 1:1");
137} 138}
138 139
139void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution) { 140void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution) {
@@ -204,9 +205,9 @@ static inline void ps2_mouse_enable_scrolling(void) {
204#define PRESS_SCROLL_BUTTONS mouse_report->buttons |= (PS2_MOUSE_SCROLL_BTN_MASK) 205#define PRESS_SCROLL_BUTTONS mouse_report->buttons |= (PS2_MOUSE_SCROLL_BTN_MASK)
205#define RELEASE_SCROLL_BUTTONS mouse_report->buttons &= ~(PS2_MOUSE_SCROLL_BTN_MASK) 206#define RELEASE_SCROLL_BUTTONS mouse_report->buttons &= ~(PS2_MOUSE_SCROLL_BTN_MASK)
206static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) { 207static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) {
207 static enum { 208 static enum {
208 SCROLL_NONE, 209 SCROLL_NONE,
209 SCROLL_BTN, 210 SCROLL_BTN,
210 SCROLL_SENT, 211 SCROLL_SENT,
211 } scroll_state = SCROLL_NONE; 212 } scroll_state = SCROLL_NONE;
212 static uint16_t scroll_button_time = 0; 213 static uint16_t scroll_button_time = 0;
@@ -228,10 +229,10 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) {
228 mouse_report->y = 0; 229 mouse_report->y = 0;
229 } 230 }
230 } else if (0 == (PS2_MOUSE_SCROLL_BTN_MASK & mouse_report->buttons)) { 231 } else if (0 == (PS2_MOUSE_SCROLL_BTN_MASK & mouse_report->buttons)) {
231 // None of the scroll buttons are pressed 232 // None of the scroll buttons are pressed
232 233
233#if PS2_MOUSE_SCROLL_BTN_SEND 234#if PS2_MOUSE_SCROLL_BTN_SEND
234 if (scroll_state == SCROLL_BTN 235 if (scroll_state == SCROLL_BTN
235 && timer_elapsed(scroll_button_time) < PS2_MOUSE_SCROLL_BTN_SEND) { 236 && timer_elapsed(scroll_button_time) < PS2_MOUSE_SCROLL_BTN_SEND) {
236 PRESS_SCROLL_BUTTONS; 237 PRESS_SCROLL_BUTTONS;
237 host_mouse_send(mouse_report); 238 host_mouse_send(mouse_report);
diff --git a/util/ergodox_ez.html b/util/ergodox_ez.html
deleted file mode 100644
index 8e9286607..000000000
--- a/util/ergodox_ez.html
+++ /dev/null
@@ -1 +0,0 @@
1<html><head><meta http-equiv="refresh" content="0; url=http://qmk.fm/keyboards/ergodox/" /></head></html> \ No newline at end of file
diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh
index 58334cb1f..718daaa29 100644
--- a/util/travis_compiled_push.sh
+++ b/util/travis_compiled_push.sh
@@ -33,18 +33,19 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
33 33
34 make ergodox-ez AUTOGEN=true 34 make ergodox-ez AUTOGEN=true
35 35
36 find . -name ".build" | xargs rm -rf
37 cd .. 36 cd ..
38 git clone https://$GH_TOKEN@github.com/jackhumbert/qmk.fm.git 37 git clone https://$GH_TOKEN@github.com/jackhumbert/qmk.fm.git
39 cd qmk.fm 38 cd qmk.fm
40 git submodule update --init --recursive 39 #git submodule update --init --recursive
41 #rm -rf keyboard 40 #rm -rf keyboard
42 #rm -rf keyboards 41 #rm -rf keyboards
43 yes | cp -rf ../qmk_firmware/keyboards . 42 #yes | cp -rf ../qmk_firmware/keyboards .
44 #mkdir keyboards/ergodox_ez/ 43 #mkdir keyboards/ergodox_ez/
45 cp ../qmk_firmware/util/ergodox_ez.html keyboards/ergodox_ez/index.html 44 #cp ../qmk_firmware/util/ergodox_ez.html keyboards/ergodox_ez/index.html
46 cp ../qmk_firmware/readme.md qmk_readme.md 45 #cp ../qmk_firmware/readme.md qmk_readme.md
47 ./generate.sh 46 #./generate.sh
47 rm -f _compiled/*.hex
48 for file in ../qmk_firmware/keyboards/*/keymaps/*/*.hex; do mv -v "$file" "_compiled/${file##*/}"; done
48 49
49 git add -A 50 git add -A
50 git commit -m "generated from qmk/qmk_firmware@${rev}" 51 git commit -m "generated from qmk/qmk_firmware@${rev}"