From b1ed85587161e8352d136fcc4876a52b33328b01 Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Fri, 4 Jan 2019 07:24:45 -0800
Subject: [PATCH 01/29] Dichotomy: fix info.json mismatch (#4771)
The info.json file was missing the two keys that correspond to the
rotary encoders.
---
keyboards/dichotomy/info.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/dichotomy/info.json b/keyboards/dichotomy/info.json
index aeb00edce70..4008ce18b75 100644
--- a/keyboards/dichotomy/info.json
+++ b/keyboards/dichotomy/info.json
@@ -6,7 +6,7 @@
"height": 6,
"layouts": {
"LAYOUT": {
- "layout": [{"label":"k00", "x":0, "y":0.5}, {"label":"k01", "x":1, "y":0.5}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.5}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.5}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k0A", "x":11, "y":0.5}, {"label":"k0B", "x":12, "y":0.5}, {"label":"k10", "x":0, "y":1.5}, {"label":"k11", "x":1, "y":1.5}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1.5}, {"label":"k15", "x":5, "y":1.5}, {"label":"k16", "x":7, "y":1.5}, {"label":"k17", "x":8, "y":1.5}, {"label":"k18", "x":9, "y":1}, {"label":"k19", "x":10, "y":1.25}, {"label":"k1A", "x":11, "y":1.5}, {"label":"k1B", "x":12, "y":1.5}, {"label":"k20", "x":0, "y":2.5}, {"label":"k21", "x":1, "y":2.5}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2.5}, {"label":"k25", "x":5, "y":2.5}, {"label":"k26", "x":7, "y":2.5}, {"label":"k27", "x":8, "y":2.5}, {"label":"k28", "x":9, "y":2}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2A", "x":11, "y":2.5}, {"label":"k2B", "x":12, "y":2.5}, {"label":"k33", "x":3, "y":4}, {"label":"k34", "x":4, "y":4}, {"label":"k35", "x":5, "y":4}, {"label":"k36", "x":7, "y":4}, {"label":"k37", "x":8, "y":4}, {"label":"k38", "x":9, "y":4}, {"label":"k43", "x":3, "y":5}, {"label":"k44", "x":4, "y":5}, {"label":"k45", "x":5, "y":5}, {"label":"k46", "x":7, "y":5}, {"label":"k47", "x":8, "y":5}, {"label":"k48", "x":9, "y":5}]
+ "layout": [{"label":"k00", "x":0, "y":0.5}, {"label":"k01", "x":1, "y":0.5}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.5}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.5}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k0A", "x":11, "y":0.5}, {"label":"k0B", "x":12, "y":0.5}, {"label":"k10", "x":0, "y":1.5}, {"label":"k11", "x":1, "y":1.5}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1.5}, {"label":"k15", "x":5, "y":1.5}, {"label":"k16", "x":7, "y":1.5}, {"label":"k17", "x":8, "y":1.5}, {"label":"k18", "x":9, "y":1}, {"label":"k19", "x":10, "y":1.25}, {"label":"k1A", "x":11, "y":1.5}, {"label":"k1B", "x":12, "y":1.5}, {"label":"k20", "x":0, "y":2.5}, {"label":"k21", "x":1, "y":2.5}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2.5}, {"label":"k25", "x":5, "y":2.5}, {"label":"k26", "x":7, "y":2.5}, {"label":"k27", "x":8, "y":2.5}, {"label":"k28", "x":9, "y":2}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2A", "x":11, "y":2.5}, {"label":"k2B", "x":12, "y":2.5}, {"label":"k33", "x":3, "y":4}, {"label":"k34", "x":4, "y":4}, {"label":"k35", "x":5, "y":4}, {"label":"k36", "x":7, "y":4}, {"label":"k37", "x":8, "y":4}, {"label":"k38", "x":9, "y":4}, {"label":"k42", "x":2, "y":5}, {"label":"k43", "x":3, "y":5}, {"label":"k44", "x":4, "y":5}, {"label":"k45", "x":5, "y":5}, {"label":"k46", "x":7, "y":5}, {"label":"k47", "x":8, "y":5}, {"label":"k48", "x":9, "y":5}, {"label":"k49", "x":10, "y":5}]
}
}
}
From 7f4f0f7685cef421df4c07b0982c1905fb57a736 Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Fri, 4 Jan 2019 07:25:48 -0800
Subject: [PATCH 02/29] Remove deprecated QUANTUM_DIR code blocks from
makefiles (#4754)
* Remove QUANTUM_DIR code blocks from keyboard rules
This commit removes the deprecated "QUANTUM_DIR" code block from
rules.mk files that affect entire keyboards.
* remove QUANTUM_DIR code blocks from rules for default keymaps
This commit removes the deprecated "QUANTUM_DIR" code block from
rules.mk files that affect default keymaps.
* remove QUANTUM_DIR code blocks from rules for user keymaps
This commit removes the deprecated "QUANTUM_DIR" code block from
rules.mk files that affect "user" keymaps. (It's actually any keymap
that isn't named `default`.)
* remove QUANTUM_DIR code blocks from rules for community layouts
This commit removes the deprecated "QUANTUM_DIR" code block from
rules.mk files for community layouts.
* remove QUANTUM_DIR code blocks from rules for userspaces
This commit removes the deprecated "QUANTUM_DIR" code block from
rules.mk files for userspaces.
---
keyboards/6ball/keymaps/default/rules.mk | 3 ---
keyboards/9key/keymaps/default/rules.mk | 3 ---
keyboards/alu84/keymaps/turbomech/rules.mk | 3 ---
keyboards/amj40/keymaps/default/rules.mk | 4 ----
keyboards/amj60/keymaps/iso_split_rshift/rules.mk | 3 ---
keyboards/atreus/keymaps/xk/rules.mk | 3 ---
keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk | 3 ---
.../bpiphany/tiger_lily/keymaps/default_ansi/rules.mk | 3 ---
keyboards/chocopad/keymaps/default/rules.mk | 3 ---
keyboards/chocopad/keymaps/khord/rules.mk | 3 ---
keyboards/christmas_tree/keymaps/default/rules.mk | 3 ---
keyboards/clueboard/66/keymaps/xyverz/rules.mk | 3 ---
keyboards/clueboard/card/keymaps/default/rules.mk | 3 ---
keyboards/clueboard/card/keymaps/rgb_effects/rules.mk | 3 ---
keyboards/comet46/keymaps/satt/rules.mk | 1 +
keyboards/contra/keymaps/dana/rules.mk | 3 ---
keyboards/contra/keymaps/losinggeneration/rules.mk | 3 ---
keyboards/contra/keymaps/maxr1998/rules.mk | 3 ---
keyboards/cu75/keymaps/default/rules.mk | 4 ----
keyboards/cu75/keymaps/iso/rules.mk | 4 ----
keyboards/deltasplit75/keymaps/itsaferbie/rules.mk | 3 ---
keyboards/eco/keymaps/default/rules.mk | 3 ---
keyboards/eco/keymaps/hexwire/rules.mk | 3 ---
keyboards/eco/keymaps/that_canadian/rules.mk | 3 ---
keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk | 3 ---
keyboards/fourier/keymaps/valgrahf/rules.mk | 3 ---
keyboards/gh60/keymaps/dbroqua/rules.mk | 4 ----
keyboards/gh60/keymaps/dbroqua_7U/rules.mk | 3 ---
keyboards/gh60/keymaps/robotmaxtron/rules.mk | 4 ----
keyboards/gh60/keymaps/sethbc/rules.mk | 3 ---
keyboards/gonnerd/keymaps/default/rules.mk | 3 ---
keyboards/gonnerd/keymaps/gam3cat/rules.mk | 1 +
keyboards/gonnerd/keymaps/mauin/rules.mk | 3 ---
keyboards/gonnerd/keymaps/tkl/rules.mk | 3 ---
keyboards/hadron/ver2/keymaps/side_numpad/rules.mk | 3 ---
keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk | 4 ----
.../dactyl_manuform/4x5/keymaps/default/rules.mk | 3 ---
.../dactyl_manuform/4x5/keymaps/dvorak/rules.mk | 3 ---
keyboards/handwired/frenchdev/rules.mk | 3 ---
keyboards/handwired/woodpad/keymaps/default/rules.mk | 3 ---
keyboards/handwired/woodpad/keymaps/drashna/rules.mk | 3 ---
keyboards/helix/pico/keymaps/default/rules.mk | 4 ----
keyboards/helix/pico/keymaps/mtei/rules.mk | 4 ----
keyboards/helix/rev1/keymaps/default/rules.mk | 3 ---
keyboards/helix/rev2/keymaps/default/rules.mk | 4 ----
keyboards/helix/rev2/keymaps/edvorakjp/rules.mk | 4 ----
keyboards/helix/rev2/keymaps/five_rows/rules.mk | 4 ----
keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk | 4 ----
keyboards/helix/rev2/keymaps/froggy/rules.mk | 4 ----
keyboards/helix/rev2/keymaps/led_test/rules.mk | 4 ----
keyboards/hhkb/keymaps/cinaeco/rules.mk | 3 ---
keyboards/iris/keymaps/davidrambo/rules.mk | 3 ---
keyboards/iris/keymaps/dvp-zjpxshade/rules.mk | 3 ---
keyboards/iris/keymaps/hag/rules.mk | 3 ---
keyboards/iris/keymaps/hexwire/rules.mk | 3 ---
keyboards/iris/keymaps/impstyle/rules.mk | 3 ---
keyboards/iris/keymaps/krusli/rules.mk | 3 ---
keyboards/iris/keymaps/lewisridden/rules.mk | 3 ---
keyboards/iris/keymaps/mtdjr/rules.mk | 4 +---
keyboards/iris/keymaps/rdhaene/rules.mk | 3 ---
keyboards/iris/keymaps/swedish/rules.mk | 3 ---
keyboards/iris/keymaps/transmogrified/rules.mk | 3 ---
keyboards/iris/keymaps/yanfali/rules.mk | 3 ---
keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk | 1 +
keyboards/jd40/keymaps/vanagon/rules.mk | 3 ---
keyboards/jd45/keymaps/mjt6u/rules.mk | 3 ---
keyboards/jj40/keymaps/ajp10304/rules.mk | 5 +----
keyboards/jj40/keymaps/fun40/rules.mk | 3 ---
keyboards/jj50/rules.mk | 4 ----
keyboards/kc60/keymaps/stanleylai/rules.mk | 3 ---
keyboards/kc60/keymaps/wigguno/rules.mk | 3 ---
keyboards/kc60/keymaps/ws2812/rules.mk | 3 ---
keyboards/kinesis/keymaps/carpalx/rules.mk | 3 ---
keyboards/kinesis/keymaps/default/rules.mk | 3 ---
keyboards/kinesis/keymaps/default_pretty/rules.mk | 3 ---
keyboards/kinesis/keymaps/dvorak/rules.mk | 3 ---
keyboards/kinesis/keymaps/insertsnideremarks/rules.mk | 3 ---
keyboards/kinesis/keymaps/milestogo/rules.mk | 3 ---
keyboards/kinesis/keymaps/xyverz/rules.mk | 3 ---
keyboards/kmac/keymaps/default/rules.mk | 3 ---
keyboards/kmac/keymaps/winkeyless/rules.mk | 3 ---
keyboards/kona_classic/keymaps/ansi/rules.mk | 3 ---
keyboards/kona_classic/keymaps/ansi_arrows/rules.mk | 3 ---
keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk | 3 ---
keyboards/kona_classic/keymaps/ansi_split/rules.mk | 3 ---
.../kona_classic/keymaps/ansi_split_arrows/rules.mk | 3 ---
keyboards/kona_classic/keymaps/default/rules.mk | 3 ---
keyboards/kona_classic/keymaps/iso/rules.mk | 3 ---
keyboards/kona_classic/keymaps/iso_arrows/rules.mk | 3 ---
keyboards/kona_classic/keymaps/iso_split/rules.mk | 3 ---
keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk | 3 ---
keyboards/laplace/keymaps/bakingpy/rules.mk | 3 ---
keyboards/laplace/keymaps/default/rules.mk | 3 ---
keyboards/launchpad/keymaps/default/rules.mk | 3 ---
keyboards/lets_split/keymaps/bbaserdem/rules.mk | 3 ---
keyboards/lets_split/keymaps/bbaserdem_right/rules.mk | 3 ---
keyboards/lets_split/keymaps/cpeters1982/rules.mk | 9 ++-------
keyboards/lets_split/keymaps/fabian/rules.mk | 3 ---
keyboards/lets_split/keymaps/heartrobotninja/rules.mk | 3 ---
keyboards/lets_split/keymaps/khord/rules.mk | 3 ---
keyboards/lets_split/keymaps/mbsurfer/rules.mk | 3 ---
keyboards/lets_split/keymaps/mjt/rules.mk | 3 ---
keyboards/lets_split/keymaps/mtdjr/rules.mk | 5 +----
keyboards/lets_split/keymaps/pitty/rules.mk | 3 ---
keyboards/lets_split/keymaps/poker/rules.mk | 3 ---
keyboards/lets_split/keymaps/waples/rules.mk | 3 ---
keyboards/lets_split/keymaps/xk/rules.mk | 3 ---
keyboards/lets_split/keymaps/zer09/rules.mk | 3 ---
keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk | 3 ---
keyboards/lets_split_eh/keymaps/that_canadian/rules.mk | 3 ---
keyboards/levinson/keymaps/drogglbecher/rules.mk | 3 ---
keyboards/levinson/keymaps/losinggeneration/rules.mk | 3 ---
keyboards/lfkeyboards/mini1800/rules.mk | 4 ----
keyboards/lfkeyboards/smk65/keymaps/default/rules.mk | 5 +----
keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk | 5 +----
keyboards/m10a/keymaps/default/rules.mk | 3 ---
keyboards/m10a/keymaps/gam3cat/rules.mk | 1 +
keyboards/minidox/keymaps/that_canadian/rules.mk | 3 ---
keyboards/mitosis/keymaps/mjt/rules.mk | 3 ---
keyboards/miuni32/keymaps/adam-lee/rules.mk | 3 ---
keyboards/miuni32/keymaps/default/rules.mk | 3 ---
keyboards/miuni32/keymaps/ht_156/rules.mk | 3 ---
keyboards/miuni32/keymaps/ki/rules.mk | 3 ---
keyboards/niu_mini/keymaps/planck/rules.mk | 3 ---
keyboards/niu_mini/keymaps/xtonhasvim/rules.mk | 5 +----
keyboards/nyquist/keymaps/jojiichan/rules.mk | 3 ---
keyboards/nyquist/keymaps/kim-kim/rules.mk | 3 ---
keyboards/nyquist/keymaps/losinggeneration/rules.mk | 3 ---
keyboards/nyquist/keymaps/pitty/rules.mk | 3 ---
keyboards/org60/keymaps/boardy/rules.mk | 5 -----
keyboards/phantom/keymaps/default/rules.mk | 3 ---
keyboards/phantom/keymaps/rgbmod/rules.mk | 3 ---
keyboards/planck/keymaps/ab/rules.mk | 3 ---
keyboards/planck/keymaps/ajp10304/rules.mk | 5 +----
keyboards/planck/keymaps/alexey/rules.mk | 3 ---
keyboards/planck/keymaps/altgr/rules.mk | 3 ---
keyboards/planck/keymaps/angerthosenear/rules.mk | 3 ---
keyboards/planck/keymaps/austin/rules.mk | 3 ---
keyboards/planck/keymaps/basic/rules.mk | 3 ---
keyboards/planck/keymaps/bone2planck/rules.mk | 3 ---
keyboards/planck/keymaps/brandon/rules.mk | 3 ---
keyboards/planck/keymaps/callum/rules.mk | 3 ---
keyboards/planck/keymaps/cbbrowne/rules.mk | 3 ---
keyboards/planck/keymaps/chance/rules.mk | 3 ---
keyboards/planck/keymaps/charlie/rules.mk | 3 ---
keyboards/planck/keymaps/circuit/rules.mk | 3 ---
keyboards/planck/keymaps/coloneljesus/rules.mk | 3 ---
keyboards/planck/keymaps/daniel/rules.mk | 3 ---
keyboards/planck/keymaps/david/rules.mk | 3 ---
keyboards/planck/keymaps/davidrambo/rules.mk | 3 ---
keyboards/planck/keymaps/dc/rules.mk | 7 ++-----
keyboards/planck/keymaps/dcompact/rules.mk | 5 +----
keyboards/planck/keymaps/dlaroe/rules.mk | 3 ---
keyboards/planck/keymaps/dr_notsokind/rules.mk | 3 ---
keyboards/planck/keymaps/dshields/rules.mk | 4 ----
keyboards/planck/keymaps/dudeofawesome/rules.mk | 5 +----
keyboards/planck/keymaps/dzobert/rules.mk | 3 ---
keyboards/planck/keymaps/espynn/rules.mk | 3 ---
keyboards/planck/keymaps/experimental/rules.mk | 3 ---
keyboards/planck/keymaps/gabriel/rules.mk | 3 ---
keyboards/planck/keymaps/grahampheath/rules.mk | 4 +---
keyboards/planck/keymaps/gunp/rules.mk | 3 ---
keyboards/planck/keymaps/handwired_binaryplease/rules.mk | 7 +------
keyboards/planck/keymaps/hiea/rules.mk | 3 ---
keyboards/planck/keymaps/hieax/rules.mk | 3 ---
keyboards/planck/keymaps/ishtob/rule.mk | 3 ---
keyboards/planck/keymaps/jacob/rules.mk | 3 ---
keyboards/planck/keymaps/jirgn/rules.mk | 3 ---
keyboards/planck/keymaps/johannes/rules.mk | 3 ---
keyboards/planck/keymaps/khord/rules.mk | 3 ---
keyboards/planck/keymaps/kmontag42/rules.mk | 3 ---
keyboards/planck/keymaps/kyle/rules.mk | 3 ---
keyboards/planck/keymaps/lae3/rules.mk | 3 ---
keyboards/planck/keymaps/lukas/rules.mk | 3 ---
keyboards/planck/keymaps/luke/rules.mk | 3 ---
keyboards/planck/keymaps/max/rules.mk | 3 ---
keyboards/planck/keymaps/mitch/rules.mk | 3 ---
keyboards/planck/keymaps/mjt/rules.mk | 3 ---
keyboards/planck/keymaps/mjtnumsym/rules.mk | 3 ---
keyboards/planck/keymaps/myoung34/rules.mk | 5 +----
keyboards/planck/keymaps/neo2planck/rules.mk | 3 ---
keyboards/planck/keymaps/not-quite-neo/rules.mk | 3 ---
keyboards/planck/keymaps/originerd/rules.mk | 3 ---
keyboards/planck/keymaps/paget/rules.mk | 3 ---
keyboards/planck/keymaps/pete/rules.mk | 3 ---
keyboards/planck/keymaps/phreed/rules.mk | 3 ---
keyboards/planck/keymaps/piemod/rules.mk | 3 ---
keyboards/planck/keymaps/priyadi/rules.mk | 3 ---
keyboards/planck/keymaps/rai-suta/rules.mk | 3 ---
keyboards/planck/keymaps/sdothum/rules.mk | 3 ---
keyboards/planck/keymaps/smt/rules.mk | 3 ---
keyboards/planck/keymaps/steno/rules.mk | 5 +----
keyboards/planck/keymaps/tehwalris/rules.mk | 3 ---
keyboards/planck/keymaps/tong92/rules.mk | 3 ---
keyboards/planck/keymaps/unicode/rules.mk | 3 ---
keyboards/planck/keymaps/vifon/rules.mk | 3 ---
keyboards/planck/keymaps/yale/rules.mk | 3 ---
keyboards/planck/keymaps/yang/rules.mk | 3 ---
keyboards/planck/keymaps/zach/rules.mk | 3 ---
keyboards/planck/keymaps/zrichard/rules.mk | 3 ---
keyboards/preonic/keymaps/0xdec/rules.mk | 3 ---
keyboards/preonic/keymaps/bucktooth/rules.mk | 3 ---
keyboards/preonic/keymaps/dlaroe/rules.mk | 3 ---
keyboards/preonic/keymaps/jacwib/rules.mk | 3 ---
keyboards/preonic/keymaps/kinesis/rules.mk | 3 ---
keyboards/preonic/keymaps/nikchi/rules.mk | 3 ---
keyboards/preonic/keymaps/smt/rules.mk | 3 ---
keyboards/preonic/keymaps/that_canadian/Makefile | 3 ---
keyboards/preonic/keymaps/zach/rules.mk | 3 ---
keyboards/redox/keymaps/default/rules.mk | 3 ---
keyboards/redox/keymaps/italian/rules.mk | 3 ---
keyboards/s60_x/keymaps/ansi_qwertz/rules.mk | 3 ---
keyboards/satan/keymaps/admiralStrokers/rules.mk | 4 +---
keyboards/satan/keymaps/ben_iso/rules.mk | 3 ---
keyboards/satan/keymaps/chaser/rules.mk | 3 ---
keyboards/satan/keymaps/colemak/rules.mk | 3 ---
keyboards/satan/keymaps/default/rules.mk | 3 ---
keyboards/satan/keymaps/dende_iso/rules.mk | 3 ---
keyboards/satan/keymaps/denolfe/rules.mk | 3 ---
keyboards/satan/keymaps/dkrieger/rules.mk | 3 ---
keyboards/satan/keymaps/fakb/rules.mk | 3 ---
keyboards/satan/keymaps/isoHHKB/rules.mk | 3 ---
keyboards/satan/keymaps/iso_split_rshift/rules.mk | 3 ---
keyboards/satan/keymaps/lepa/rules.mk | 3 ---
keyboards/satan/keymaps/midi/rules.mk | 3 ---
keyboards/satan/keymaps/sethbc/rules.mk | 3 ---
keyboards/satan/keymaps/smt/rules.mk | 3 ---
keyboards/satan/keymaps/unxmaal/rules.mk | 3 ---
keyboards/tada68/keymaps/ardakilic/rules.mk | 3 ---
keyboards/tada68/keymaps/default/rules.mk | 3 ---
keyboards/tada68/keymaps/fakb/rules.mk | 3 ---
keyboards/tada68/keymaps/fezzant/rules.mk | 3 ---
keyboards/tada68/keymaps/iso-nor/rules.mk | 3 ---
keyboards/tada68/keymaps/iso-uk/rules.mk | 3 ---
keyboards/tada68/keymaps/isoish/rules.mk | 3 ---
keyboards/tada68/keymaps/mattdicarlo/rules.mk | 3 ---
keyboards/tada68/keymaps/mlechner/rules.mk | 3 ---
keyboards/tada68/keymaps/mtdjr/rules.mk | 3 ---
keyboards/tada68/keymaps/pascamel/rules.mk | 3 ---
keyboards/tada68/keymaps/raylas/rules.mk | 3 ---
keyboards/tada68/keymaps/rgb/rules.mk | 3 ---
keyboards/tada68/keymaps/stephengrier/rules.mk | 3 ---
keyboards/tada68/keymaps/trashcat/rules.mk | 3 ---
keyboards/tada68/keymaps/tshack/rules.mk | 3 ---
keyboards/tada68/keymaps/unix/rules.mk | 3 ---
keyboards/tada68/keymaps/wamsm_tada/rules.mk | 3 ---
keyboards/tanuki/rules.mk | 3 ---
keyboards/the_ruler/keymaps/default/rules.mk | 3 ---
.../thevankeyboards/bananasplit/keymaps/0010/rules.mk | 3 ---
.../bananasplit/keymaps/coloneljesus/rules.mk | 3 ---
.../thevankeyboards/bananasplit/keymaps/default/rules.mk | 3 ---
.../thevankeyboards/bananasplit/keymaps/kamon/rules.mk | 3 ---
keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk | 3 ---
keyboards/thevankeyboards/minivan/keymaps/core/rules.mk | 3 ---
.../thevankeyboards/minivan/keymaps/default/rules.mk | 3 ---
.../thevankeyboards/minivan/keymaps/jeebak/rules.mk | 3 ---
keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk | 3 ---
keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk | 3 ---
.../thevankeyboards/minivan/keymaps/tong92/rules.mk | 3 ---
.../thevankeyboards/minivan/keymaps/xyverz/rules.mk | 3 ---
.../thevankeyboards/roadkit/keymaps/default/rules.mk | 3 ---
.../thevankeyboards/roadkit/keymaps/flipphone/rules.mk | 3 ---
keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk | 3 ---
keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk | 3 ---
.../thevankeyboards/roadkit/keymaps/singles/rules.mk | 3 ---
.../roadkit/keymaps/singlesBrent/rules.mk | 3 ---
keyboards/vision_division/keymaps/default/rules.mk | 3 ---
keyboards/whitefox/keymaps/jetpacktuxedo/rules.mk | 5 +----
keyboards/xd75/keymaps/adi/rules.mk | 3 ---
keyboards/xd75/keymaps/atomic_style/rules.mk | 3 ---
keyboards/xd75/keymaps/bbaserdem/rules.mk | 3 ---
keyboards/xd75/keymaps/default/rules.mk | 3 ---
keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk | 5 +----
keyboards/xd75/keymaps/emilyh/rules.mk | 3 ---
keyboards/xd75/keymaps/fabian/rules.mk | 3 ---
keyboards/xd75/keymaps/french/rules.mk | 3 ---
keyboards/xd75/keymaps/germanized/rules.mk | 3 ---
keyboards/xd75/keymaps/kim-kim-xd73/rules.mk | 3 ---
keyboards/xd75/keymaps/kim-kim/rules.mk | 3 ---
keyboards/xd75/keymaps/kloki/rules.mk | 3 ---
keyboards/xd75/keymaps/markus/rules.mk | 3 ---
keyboards/xd75/keymaps/mtdjr/rules.mk | 5 +----
keyboards/xd75/keymaps/skewwhiffy/rules.mk | 3 ---
keyboards/xd75/keymaps/tdl-jturner/rules.mk | 5 +----
keyboards/ymd75/rules.mk | 4 ----
keyboards/zen/keymaps/default/rules.mk | 3 ---
keyboards/zen/keymaps/jwlawrence/rules.mk | 3 ---
keyboards/zen/keymaps/xyverz/rules.mk | 3 ---
keyboards/zinc/keymaps/monks/rules.mk | 5 +----
layouts/community/ergodox/berfarah/rules.mk | 3 ---
layouts/community/ortho_4x12/grahampheath/rules.mk | 3 ---
layouts/community/ortho_4x12/xyverz/rules.mk | 3 ---
users/losinggeneration/rules.mk | 3 ---
293 files changed, 27 insertions(+), 911 deletions(-)
diff --git a/keyboards/6ball/keymaps/default/rules.mk b/keyboards/6ball/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/6ball/keymaps/default/rules.mk
+++ b/keyboards/6ball/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/9key/keymaps/default/rules.mk b/keyboards/9key/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/9key/keymaps/default/rules.mk
+++ b/keyboards/9key/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/alu84/keymaps/turbomech/rules.mk b/keyboards/alu84/keymaps/turbomech/rules.mk
index ff8b4b2e643..c8b74bfc9a0 100644
--- a/keyboards/alu84/keymaps/turbomech/rules.mk
+++ b/keyboards/alu84/keymaps/turbomech/rules.mk
@@ -10,6 +10,3 @@ AUDIO_ENABLE ?= no
RGBLIGHT_ENABLE ?= yes
UNICODE_ENABLE ?= yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/amj40/keymaps/default/rules.mk b/keyboards/amj40/keymaps/default/rules.mk
index fe986722010..cbfa35e6310 100644
--- a/keyboards/amj40/keymaps/default/rules.mk
+++ b/keyboards/amj40/keymaps/default/rules.mk
@@ -18,7 +18,3 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/amj60/keymaps/iso_split_rshift/rules.mk b/keyboards/amj60/keymaps/iso_split_rshift/rules.mk
index 931affcd563..1b34f4f6060 100644
--- a/keyboards/amj60/keymaps/iso_split_rshift/rules.mk
+++ b/keyboards/amj60/keymaps/iso_split_rshift/rules.mk
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/atreus/keymaps/xk/rules.mk b/keyboards/atreus/keymaps/xk/rules.mk
index 2e76f9da5dd..5b69426acab 100644
--- a/keyboards/atreus/keymaps/xk/rules.mk
+++ b/keyboards/atreus/keymaps/xk/rules.mk
@@ -13,6 +13,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
index 93f927c7d0a..7a331cd530c 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
index 93f927c7d0a..7a331cd530c 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/chocopad/keymaps/default/rules.mk b/keyboards/chocopad/keymaps/default/rules.mk
index 1e576127880..a81250cdf6d 100644
--- a/keyboards/chocopad/keymaps/default/rules.mk
+++ b/keyboards/chocopad/keymaps/default/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/chocopad/keymaps/khord/rules.mk b/keyboards/chocopad/keymaps/khord/rules.mk
index 1e576127880..a81250cdf6d 100644
--- a/keyboards/chocopad/keymaps/khord/rules.mk
+++ b/keyboards/chocopad/keymaps/khord/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/christmas_tree/keymaps/default/rules.mk b/keyboards/christmas_tree/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/christmas_tree/keymaps/default/rules.mk
+++ b/keyboards/christmas_tree/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/clueboard/66/keymaps/xyverz/rules.mk b/keyboards/clueboard/66/keymaps/xyverz/rules.mk
index fc02ecb7ef9..6fa110a7b66 100644
--- a/keyboards/clueboard/66/keymaps/xyverz/rules.mk
+++ b/keyboards/clueboard/66/keymaps/xyverz/rules.mk
@@ -44,6 +44,3 @@
#
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/clueboard/card/keymaps/default/rules.mk b/keyboards/clueboard/card/keymaps/default/rules.mk
index 8ee841da020..ed7eceea090 100644
--- a/keyboards/clueboard/card/keymaps/default/rules.mk
+++ b/keyboards/clueboard/card/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk
index 00670c0cf43..1418ba1bf4f 100644
--- a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk
+++ b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/comet46/keymaps/satt/rules.mk b/keyboards/comet46/keymaps/satt/rules.mk
index 5839b778b88..91609dd4fdf 100644
--- a/keyboards/comet46/keymaps/satt/rules.mk
+++ b/keyboards/comet46/keymaps/satt/rules.mk
@@ -5,3 +5,4 @@ SRC += ./lib/glcdfont.c \
./lib/keylogger.c \
./lib/modifier_state_reader.c \
./lib/host_led_state_reader.c
+
diff --git a/keyboards/contra/keymaps/dana/rules.mk b/keyboards/contra/keymaps/dana/rules.mk
index 1198f378a8e..cf891fad353 100644
--- a/keyboards/contra/keymaps/dana/rules.mk
+++ b/keyboards/contra/keymaps/dana/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/contra/keymaps/losinggeneration/rules.mk b/keyboards/contra/keymaps/losinggeneration/rules.mk
index ea2b7165d9b..17ef684830f 100644
--- a/keyboards/contra/keymaps/losinggeneration/rules.mk
+++ b/keyboards/contra/keymaps/losinggeneration/rules.mk
@@ -12,6 +12,3 @@ MIDI_ENABLE = no # MIDI controls
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/contra/keymaps/maxr1998/rules.mk b/keyboards/contra/keymaps/maxr1998/rules.mk
index 75a476114fe..e1ba074290b 100644
--- a/keyboards/contra/keymaps/maxr1998/rules.mk
+++ b/keyboards/contra/keymaps/maxr1998/rules.mk
@@ -9,6 +9,3 @@ MOUSEKEY_ENABLE = no
CONSOLE_ENABLE = no # yes
COMMAND_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/cu75/keymaps/default/rules.mk b/keyboards/cu75/keymaps/default/rules.mk
index 39f6eca8b04..fd26d69fb6e 100644
--- a/keyboards/cu75/keymaps/default/rules.mk
+++ b/keyboards/cu75/keymaps/default/rules.mk
@@ -23,10 +23,6 @@ ISSI_ENABLE = yes # If the I2C pullup resistors aren't install thi
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
ifeq ($(strip $(ISSI_ENABLE)), yes)
TMK_COMMON_DEFS += -DISSI_ENABLE
endif
diff --git a/keyboards/cu75/keymaps/iso/rules.mk b/keyboards/cu75/keymaps/iso/rules.mk
index f8b4d556897..9407f110346 100644
--- a/keyboards/cu75/keymaps/iso/rules.mk
+++ b/keyboards/cu75/keymaps/iso/rules.mk
@@ -23,10 +23,6 @@ ISSI_ENABLE = no # If the I2C pullup resistors aren't install this
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
ifeq ($(strip $(ISSI_ENABLE)), yes)
TMK_COMMON_DEFS += -DISSI_ENABLE
endif
diff --git a/keyboards/deltasplit75/keymaps/itsaferbie/rules.mk b/keyboards/deltasplit75/keymaps/itsaferbie/rules.mk
index 75db99ebece..92f24224c78 100644
--- a/keyboards/deltasplit75/keymaps/itsaferbie/rules.mk
+++ b/keyboards/deltasplit75/keymaps/itsaferbie/rules.mk
@@ -2,6 +2,3 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
AUDIO_ENABLE = no # Audio disabled while using RGB underlight.
EXTRAKEY_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/eco/keymaps/default/rules.mk b/keyboards/eco/keymaps/default/rules.mk
index 0996602325b..83d1175db99 100644
--- a/keyboards/eco/keymaps/default/rules.mk
+++ b/keyboards/eco/keymaps/default/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/eco/keymaps/hexwire/rules.mk b/keyboards/eco/keymaps/hexwire/rules.mk
index 0996602325b..83d1175db99 100644
--- a/keyboards/eco/keymaps/hexwire/rules.mk
+++ b/keyboards/eco/keymaps/hexwire/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/eco/keymaps/that_canadian/rules.mk b/keyboards/eco/keymaps/that_canadian/rules.mk
index 0996602325b..83d1175db99 100644
--- a/keyboards/eco/keymaps/that_canadian/rules.mk
+++ b/keyboards/eco/keymaps/that_canadian/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk b/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk
index db5e5d15587..6f40259b61c 100644
--- a/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk
+++ b/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk
@@ -30,6 +30,3 @@ KEYMAP_BRANCH = $(shell \
OPT_DEFS += -DKEYMAP_VERSION=\"$(KEYMAP_VERSION)\\\#$(KEYMAP_BRANCH)\"
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/fourier/keymaps/valgrahf/rules.mk b/keyboards/fourier/keymaps/valgrahf/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/fourier/keymaps/valgrahf/rules.mk
+++ b/keyboards/fourier/keymaps/valgrahf/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/gh60/keymaps/dbroqua/rules.mk b/keyboards/gh60/keymaps/dbroqua/rules.mk
index 31c63ffd841..5c6afa226f4 100644
--- a/keyboards/gh60/keymaps/dbroqua/rules.mk
+++ b/keyboards/gh60/keymaps/dbroqua/rules.mk
@@ -106,7 +106,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: htt
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
diff --git a/keyboards/gh60/keymaps/dbroqua_7U/rules.mk b/keyboards/gh60/keymaps/dbroqua_7U/rules.mk
index e5460196922..e4269566d28 100644
--- a/keyboards/gh60/keymaps/dbroqua_7U/rules.mk
+++ b/keyboards/gh60/keymaps/dbroqua_7U/rules.mk
@@ -106,6 +106,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: htt
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable RGB Underglow
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/gh60/keymaps/robotmaxtron/rules.mk b/keyboards/gh60/keymaps/robotmaxtron/rules.mk
index 2b80ea00e38..6e5d6e1ec24 100644
--- a/keyboards/gh60/keymaps/robotmaxtron/rules.mk
+++ b/keyboards/gh60/keymaps/robotmaxtron/rules.mk
@@ -106,7 +106,3 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
diff --git a/keyboards/gh60/keymaps/sethbc/rules.mk b/keyboards/gh60/keymaps/sethbc/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/gh60/keymaps/sethbc/rules.mk
+++ b/keyboards/gh60/keymaps/sethbc/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/gonnerd/keymaps/default/rules.mk b/keyboards/gonnerd/keymaps/default/rules.mk
index e34aba6927f..6de64fcf894 100644
--- a/keyboards/gonnerd/keymaps/default/rules.mk
+++ b/keyboards/gonnerd/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/gonnerd/keymaps/gam3cat/rules.mk b/keyboards/gonnerd/keymaps/gam3cat/rules.mk
index 6eab033cc0c..55e681efb8d 100644
--- a/keyboards/gonnerd/keymaps/gam3cat/rules.mk
+++ b/keyboards/gonnerd/keymaps/gam3cat/rules.mk
@@ -22,3 +22,4 @@ FAUXCLICKY_ENABLE = no # Uses buzzer to emulate clicky switches. By defaul
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390)
KEY_LOCK_ENABLE = no # This enables key lock(+260)
SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common
+
diff --git a/keyboards/gonnerd/keymaps/mauin/rules.mk b/keyboards/gonnerd/keymaps/mauin/rules.mk
index e34aba6927f..6de64fcf894 100644
--- a/keyboards/gonnerd/keymaps/mauin/rules.mk
+++ b/keyboards/gonnerd/keymaps/mauin/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/gonnerd/keymaps/tkl/rules.mk b/keyboards/gonnerd/keymaps/tkl/rules.mk
index b96663efe6c..09b51e5a093 100644
--- a/keyboards/gonnerd/keymaps/tkl/rules.mk
+++ b/keyboards/gonnerd/keymaps/tkl/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk b/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk
index 687c285bdb9..79be3bb87ef 100644
--- a/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk
+++ b/keyboards/hadron/ver2/keymaps/side_numpad/rules.mk
@@ -21,6 +21,3 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk b/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk
index f2a91de8971..fc5d9ba1aa5 100644
--- a/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk
+++ b/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk
@@ -1,7 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
AUDIO_ENABLE = no
MOUSEKEY_ENABLE = yes
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk
index 2b70ae564e9..c82bf4a389d 100644
--- a/keyboards/handwired/frenchdev/rules.mk
+++ b/keyboards/handwired/frenchdev/rules.mk
@@ -87,6 +87,3 @@ AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = no
API_SYSEX_ENABLE = no
-#ifndef QUANTUM_DIR
-# include ../../../Makefile
-#endif
diff --git a/keyboards/handwired/woodpad/keymaps/default/rules.mk b/keyboards/handwired/woodpad/keymaps/default/rules.mk
index f060db79c0b..fce19bfaa8f 100644
--- a/keyboards/handwired/woodpad/keymaps/default/rules.mk
+++ b/keyboards/handwired/woodpad/keymaps/default/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
index ed7d2e7c6d4..7f7f30e2ad4 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
+++ b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
@@ -8,6 +8,3 @@ MOUSEKEY_ENABLE = no
EXTRAFLAGS = -flto
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk
index c5ee8acb2ac..3b518ff8813 100644
--- a/keyboards/helix/pico/keymaps/default/rules.mk
+++ b/keyboards/helix/pico/keymaps/default/rules.mk
@@ -119,10 +119,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/pico/keymaps/mtei/rules.mk b/keyboards/helix/pico/keymaps/mtei/rules.mk
index c5ee8acb2ac..3b518ff8813 100644
--- a/keyboards/helix/pico/keymaps/mtei/rules.mk
+++ b/keyboards/helix/pico/keymaps/mtei/rules.mk
@@ -119,10 +119,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/rev1/keymaps/default/rules.mk b/keyboards/helix/rev1/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/helix/rev1/keymaps/default/rules.mk
+++ b/keyboards/helix/rev1/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk
index 3f84b895aaa..37ef8632dee 100644
--- a/keyboards/helix/rev2/keymaps/default/rules.mk
+++ b/keyboards/helix/rev2/keymaps/default/rules.mk
@@ -118,10 +118,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
index 4257d004da4..9d3743995ac 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
@@ -121,10 +121,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index bd7130cfc66..a0bf21917b1 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -125,10 +125,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
index 3f84b895aaa..37ef8632dee 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
@@ -118,10 +118,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/rev2/keymaps/froggy/rules.mk b/keyboards/helix/rev2/keymaps/froggy/rules.mk
index f4601707114..8cd0efdd4d9 100644
--- a/keyboards/helix/rev2/keymaps/froggy/rules.mk
+++ b/keyboards/helix/rev2/keymaps/froggy/rules.mk
@@ -118,10 +118,6 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/helix/rev2/keymaps/led_test/rules.mk b/keyboards/helix/rev2/keymaps/led_test/rules.mk
index a9cd251bc5f..2062d348d1f 100644
--- a/keyboards/helix/rev2/keymaps/led_test/rules.mk
+++ b/keyboards/helix/rev2/keymaps/led_test/rules.mk
@@ -120,10 +120,6 @@ SRC += led_test_init.c
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/hhkb/keymaps/cinaeco/rules.mk b/keyboards/hhkb/keymaps/cinaeco/rules.mk
index efed95492f7..a85669aa2f2 100644
--- a/keyboards/hhkb/keymaps/cinaeco/rules.mk
+++ b/keyboards/hhkb/keymaps/cinaeco/rules.mk
@@ -18,6 +18,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/davidrambo/rules.mk b/keyboards/iris/keymaps/davidrambo/rules.mk
index 0b7e7b9057f..1e3473a1af6 100644
--- a/keyboards/iris/keymaps/davidrambo/rules.mk
+++ b/keyboards/iris/keymaps/davidrambo/rules.mk
@@ -2,6 +2,3 @@ RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = no
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/dvp-zjpxshade/rules.mk b/keyboards/iris/keymaps/dvp-zjpxshade/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/iris/keymaps/dvp-zjpxshade/rules.mk
+++ b/keyboards/iris/keymaps/dvp-zjpxshade/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/hag/rules.mk b/keyboards/iris/keymaps/hag/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/iris/keymaps/hag/rules.mk
+++ b/keyboards/iris/keymaps/hag/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/hexwire/rules.mk b/keyboards/iris/keymaps/hexwire/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/iris/keymaps/hexwire/rules.mk
+++ b/keyboards/iris/keymaps/hexwire/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/impstyle/rules.mk b/keyboards/iris/keymaps/impstyle/rules.mk
index 4db5ef00d26..ef4a383d31c 100644
--- a/keyboards/iris/keymaps/impstyle/rules.mk
+++ b/keyboards/iris/keymaps/impstyle/rules.mk
@@ -3,6 +3,3 @@ BACKLIGHT_ENABLE = no
TAP_DANCE_ENABLE = no
MOUSEKEY_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/krusli/rules.mk b/keyboards/iris/keymaps/krusli/rules.mk
index c5e16f13695..b0e37ec2f4a 100644
--- a/keyboards/iris/keymaps/krusli/rules.mk
+++ b/keyboards/iris/keymaps/krusli/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/lewisridden/rules.mk b/keyboards/iris/keymaps/lewisridden/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/iris/keymaps/lewisridden/rules.mk
+++ b/keyboards/iris/keymaps/lewisridden/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/mtdjr/rules.mk b/keyboards/iris/keymaps/mtdjr/rules.mk
index a1b884e4dea..7f8c630d8b1 100644
--- a/keyboards/iris/keymaps/mtdjr/rules.mk
+++ b/keyboards/iris/keymaps/mtdjr/rules.mk
@@ -1,6 +1,4 @@
RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = no
#AUDIO_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+
diff --git a/keyboards/iris/keymaps/rdhaene/rules.mk b/keyboards/iris/keymaps/rdhaene/rules.mk
index d87ba791336..4bfbfb2ae26 100644
--- a/keyboards/iris/keymaps/rdhaene/rules.mk
+++ b/keyboards/iris/keymaps/rdhaene/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = no
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/swedish/rules.mk b/keyboards/iris/keymaps/swedish/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/iris/keymaps/swedish/rules.mk
+++ b/keyboards/iris/keymaps/swedish/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/transmogrified/rules.mk b/keyboards/iris/keymaps/transmogrified/rules.mk
index c248822b231..444fa38a932 100644
--- a/keyboards/iris/keymaps/transmogrified/rules.mk
+++ b/keyboards/iris/keymaps/transmogrified/rules.mk
@@ -1,6 +1,3 @@
BACKLIGHT_ENABLE = yes
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/iris/keymaps/yanfali/rules.mk b/keyboards/iris/keymaps/yanfali/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/iris/keymaps/yanfali/rules.mk
+++ b/keyboards/iris/keymaps/yanfali/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk b/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk
index 85b2b41a6bc..4086c15d4fe 100644
--- a/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk
+++ b/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk
@@ -22,3 +22,4 @@ FAUXCLICKY_ENABLE = no # Uses buzzer to emulate clicky switches. By defaul
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390)
KEY_LOCK_ENABLE = no # This enables key lock(+260)
SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common
+
diff --git a/keyboards/jd40/keymaps/vanagon/rules.mk b/keyboards/jd40/keymaps/vanagon/rules.mk
index 63aac4e597d..e69de29bb2d 100644
--- a/keyboards/jd40/keymaps/vanagon/rules.mk
+++ b/keyboards/jd40/keymaps/vanagon/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/jd45/keymaps/mjt6u/rules.mk b/keyboards/jd45/keymaps/mjt6u/rules.mk
index 1df8b9754b6..2cf0221ed77 100644
--- a/keyboards/jd45/keymaps/mjt6u/rules.mk
+++ b/keyboards/jd45/keymaps/mjt6u/rules.mk
@@ -18,6 +18,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
DEBUG_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/jj40/keymaps/ajp10304/rules.mk b/keyboards/jj40/keymaps/ajp10304/rules.mk
index dc6ab13e89f..4dee01cd5b1 100644
--- a/keyboards/jj40/keymaps/ajp10304/rules.mk
+++ b/keyboards/jj40/keymaps/ajp10304/rules.mk
@@ -1,6 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
AUDIO_ENABLE = no
MOUSEKEY_ENABLE = yes
+
diff --git a/keyboards/jj40/keymaps/fun40/rules.mk b/keyboards/jj40/keymaps/fun40/rules.mk
index 6fe3b051542..92f168a16d7 100644
--- a/keyboards/jj40/keymaps/fun40/rules.mk
+++ b/keyboards/jj40/keymaps/fun40/rules.mk
@@ -19,6 +19,3 @@ DISABLE_WS2812 = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/jj50/rules.mk b/keyboards/jj50/rules.mk
index 4cc90185938..1a18ec4fe4f 100644
--- a/keyboards/jj50/rules.mk
+++ b/keyboards/jj50/rules.mk
@@ -57,10 +57,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC = matrix.c i2c.c backlight.c
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# programming options
PROGRAM_CMD = ./keyboards/ps2avrGB/program $(TARGET).hex
diff --git a/keyboards/kc60/keymaps/stanleylai/rules.mk b/keyboards/kc60/keymaps/stanleylai/rules.mk
index 9a381d2e78f..a826c2bf269 100644
--- a/keyboards/kc60/keymaps/stanleylai/rules.mk
+++ b/keyboards/kc60/keymaps/stanleylai/rules.mk
@@ -20,6 +20,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kc60/keymaps/wigguno/rules.mk b/keyboards/kc60/keymaps/wigguno/rules.mk
index 1f8d1506f82..db084a76a32 100644
--- a/keyboards/kc60/keymaps/wigguno/rules.mk
+++ b/keyboards/kc60/keymaps/wigguno/rules.mk
@@ -19,6 +19,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kc60/keymaps/ws2812/rules.mk b/keyboards/kc60/keymaps/ws2812/rules.mk
index a8c93bcf595..5d5a6f8abec 100644
--- a/keyboards/kc60/keymaps/ws2812/rules.mk
+++ b/keyboards/kc60/keymaps/ws2812/rules.mk
@@ -20,6 +20,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/carpalx/rules.mk b/keyboards/kinesis/keymaps/carpalx/rules.mk
index c7753fae05f..63f52ac18e7 100644
--- a/keyboards/kinesis/keymaps/carpalx/rules.mk
+++ b/keyboards/kinesis/keymaps/carpalx/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/default/rules.mk b/keyboards/kinesis/keymaps/default/rules.mk
index 93f927c7d0a..7a331cd530c 100644
--- a/keyboards/kinesis/keymaps/default/rules.mk
+++ b/keyboards/kinesis/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/default_pretty/rules.mk b/keyboards/kinesis/keymaps/default_pretty/rules.mk
index 93f927c7d0a..7a331cd530c 100644
--- a/keyboards/kinesis/keymaps/default_pretty/rules.mk
+++ b/keyboards/kinesis/keymaps/default_pretty/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/dvorak/rules.mk b/keyboards/kinesis/keymaps/dvorak/rules.mk
index 93f927c7d0a..7a331cd530c 100644
--- a/keyboards/kinesis/keymaps/dvorak/rules.mk
+++ b/keyboards/kinesis/keymaps/dvorak/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk b/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk
index 24b16ba9b76..d2e362886a5 100644
--- a/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk
+++ b/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk
@@ -19,6 +19,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # Enable Tap Dancing function
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/milestogo/rules.mk b/keyboards/kinesis/keymaps/milestogo/rules.mk
index 93f927c7d0a..7a331cd530c 100644
--- a/keyboards/kinesis/keymaps/milestogo/rules.mk
+++ b/keyboards/kinesis/keymaps/milestogo/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kinesis/keymaps/xyverz/rules.mk b/keyboards/kinesis/keymaps/xyverz/rules.mk
index 94dc4cdfeae..f21a27feaca 100644
--- a/keyboards/kinesis/keymaps/xyverz/rules.mk
+++ b/keyboards/kinesis/keymaps/xyverz/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kmac/keymaps/default/rules.mk b/keyboards/kmac/keymaps/default/rules.mk
index 8e2d011b342..128487947ea 100644
--- a/keyboards/kmac/keymaps/default/rules.mk
+++ b/keyboards/kmac/keymaps/default/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kmac/keymaps/winkeyless/rules.mk b/keyboards/kmac/keymaps/winkeyless/rules.mk
index 8e2d011b342..128487947ea 100644
--- a/keyboards/kmac/keymaps/winkeyless/rules.mk
+++ b/keyboards/kmac/keymaps/winkeyless/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/ansi/rules.mk b/keyboards/kona_classic/keymaps/ansi/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/ansi/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/ansi_split/rules.mk b/keyboards/kona_classic/keymaps/ansi_split/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/ansi_split/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_split/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/default/rules.mk b/keyboards/kona_classic/keymaps/default/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/default/rules.mk
+++ b/keyboards/kona_classic/keymaps/default/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/iso/rules.mk b/keyboards/kona_classic/keymaps/iso/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/iso/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/iso_split/rules.mk b/keyboards/kona_classic/keymaps/iso_split/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/iso_split/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_split/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/laplace/keymaps/bakingpy/rules.mk b/keyboards/laplace/keymaps/bakingpy/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/laplace/keymaps/bakingpy/rules.mk
+++ b/keyboards/laplace/keymaps/bakingpy/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/laplace/keymaps/default/rules.mk b/keyboards/laplace/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/laplace/keymaps/default/rules.mk
+++ b/keyboards/laplace/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/launchpad/keymaps/default/rules.mk b/keyboards/launchpad/keymaps/default/rules.mk
index 9bf35a59d09..d1fa27f41ef 100644
--- a/keyboards/launchpad/keymaps/default/rules.mk
+++ b/keyboards/launchpad/keymaps/default/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/bbaserdem/rules.mk b/keyboards/lets_split/keymaps/bbaserdem/rules.mk
index 4159db3fee5..7a37e989d87 100755
--- a/keyboards/lets_split/keymaps/bbaserdem/rules.mk
+++ b/keyboards/lets_split/keymaps/bbaserdem/rules.mk
@@ -6,6 +6,3 @@ RGBLIGHT_ENABLE = yes # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk b/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk
index 36b4b8fc255..d0b69206105 100755
--- a/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk
+++ b/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk
@@ -21,6 +21,3 @@ KEY_LOCK_ENABLE = no # Allows locking any key. Not used
UNICODE_ENABLE = no # Used for unicode character emulation
EXTRAKEY_ENABLE = no # OS signals like volume control
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/cpeters1982/rules.mk b/keyboards/lets_split/keymaps/cpeters1982/rules.mk
index f2fde785d4e..87136eef03e 100644
--- a/keyboards/lets_split/keymaps/cpeters1982/rules.mk
+++ b/keyboards/lets_split/keymaps/cpeters1982/rules.mk
@@ -1,8 +1,3 @@
+AUTO_SHIFT_ENABLE = yes
+RGBLIGHT_ENABLE = yes
-
-
-ifndef QUANTUM_DIR
- include ../../../../Makefile
- AUTO_SHIFT_ENABLE = yes
- RGBLIGHT_ENABLE = yes
-endif
diff --git a/keyboards/lets_split/keymaps/fabian/rules.mk b/keyboards/lets_split/keymaps/fabian/rules.mk
index b8c82cb99d3..316a4b9cbf4 100644
--- a/keyboards/lets_split/keymaps/fabian/rules.mk
+++ b/keyboards/lets_split/keymaps/fabian/rules.mk
@@ -4,6 +4,3 @@
#
# UNICODE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/heartrobotninja/rules.mk b/keyboards/lets_split/keymaps/heartrobotninja/rules.mk
index 36f5e5b6d55..21aae31dbab 100644
--- a/keyboards/lets_split/keymaps/heartrobotninja/rules.mk
+++ b/keyboards/lets_split/keymaps/heartrobotninja/rules.mk
@@ -20,6 +20,3 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/khord/rules.mk b/keyboards/lets_split/keymaps/khord/rules.mk
index c90523e5d64..32b6edc121a 100644
--- a/keyboards/lets_split/keymaps/khord/rules.mk
+++ b/keyboards/lets_split/keymaps/khord/rules.mk
@@ -2,6 +2,3 @@ TAP_DANCE_ENABLE = yes
RGBLIGHT_ENABLE = yes
USE_I2C = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/mbsurfer/rules.mk b/keyboards/lets_split/keymaps/mbsurfer/rules.mk
index c90523e5d64..32b6edc121a 100644
--- a/keyboards/lets_split/keymaps/mbsurfer/rules.mk
+++ b/keyboards/lets_split/keymaps/mbsurfer/rules.mk
@@ -2,6 +2,3 @@ TAP_DANCE_ENABLE = yes
RGBLIGHT_ENABLE = yes
USE_I2C = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/mjt/rules.mk b/keyboards/lets_split/keymaps/mjt/rules.mk
index a14e84d4e5c..a43a9a1daa0 100644
--- a/keyboards/lets_split/keymaps/mjt/rules.mk
+++ b/keyboards/lets_split/keymaps/mjt/rules.mk
@@ -20,6 +20,3 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/lets_split/keymaps/mtdjr/rules.mk b/keyboards/lets_split/keymaps/mtdjr/rules.mk
index 75e9c6503e8..a81250cdf6d 100644
--- a/keyboards/lets_split/keymaps/mtdjr/rules.mk
+++ b/keyboards/lets_split/keymaps/mtdjr/rules.mk
@@ -1,5 +1,2 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
RGBLIGHT_ENABLE = yes
+
diff --git a/keyboards/lets_split/keymaps/pitty/rules.mk b/keyboards/lets_split/keymaps/pitty/rules.mk
index 8ebc85a44b4..53a426157e8 100644
--- a/keyboards/lets_split/keymaps/pitty/rules.mk
+++ b/keyboards/lets_split/keymaps/pitty/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
NKRO_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/poker/rules.mk b/keyboards/lets_split/keymaps/poker/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/lets_split/keymaps/poker/rules.mk
+++ b/keyboards/lets_split/keymaps/poker/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/waples/rules.mk b/keyboards/lets_split/keymaps/waples/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/lets_split/keymaps/waples/rules.mk
+++ b/keyboards/lets_split/keymaps/waples/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/xk/rules.mk b/keyboards/lets_split/keymaps/xk/rules.mk
index 195f0157789..8aafefa64f2 100644
--- a/keyboards/lets_split/keymaps/xk/rules.mk
+++ b/keyboards/lets_split/keymaps/xk/rules.mk
@@ -14,6 +14,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split/keymaps/zer09/rules.mk b/keyboards/lets_split/keymaps/zer09/rules.mk
index d8adc708826..d2259fe9d5b 100644
--- a/keyboards/lets_split/keymaps/zer09/rules.mk
+++ b/keyboards/lets_split/keymaps/zer09/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk b/keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk
index 4159db3fee5..7a37e989d87 100755
--- a/keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk
+++ b/keyboards/lets_split_eh/keymaps/bbaserdem/rules.mk
@@ -6,6 +6,3 @@ RGBLIGHT_ENABLE = yes # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lets_split_eh/keymaps/that_canadian/rules.mk b/keyboards/lets_split_eh/keymaps/that_canadian/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/lets_split_eh/keymaps/that_canadian/rules.mk
+++ b/keyboards/lets_split_eh/keymaps/that_canadian/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/levinson/keymaps/drogglbecher/rules.mk b/keyboards/levinson/keymaps/drogglbecher/rules.mk
index b223b71abaf..b2a5451c82d 100644
--- a/keyboards/levinson/keymaps/drogglbecher/rules.mk
+++ b/keyboards/levinson/keymaps/drogglbecher/rules.mk
@@ -5,6 +5,3 @@ BACKLIGHT_ENABLE = no
UNICODE_ENABLE = yes
DEFAULT_FOLDER = levinson/rev2
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/levinson/keymaps/losinggeneration/rules.mk b/keyboards/levinson/keymaps/losinggeneration/rules.mk
index c8eef2cb3f1..ee3ea67f7d8 100644
--- a/keyboards/levinson/keymaps/losinggeneration/rules.mk
+++ b/keyboards/levinson/keymaps/losinggeneration/rules.mk
@@ -12,6 +12,3 @@ MIDI_ENABLE = no # MIDI controls
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/lfkeyboards/mini1800/rules.mk b/keyboards/lfkeyboards/mini1800/rules.mk
index 022b21924fb..be670b9b48b 100644
--- a/keyboards/lfkeyboards/mini1800/rules.mk
+++ b/keyboards/lfkeyboards/mini1800/rules.mk
@@ -52,10 +52,6 @@ F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-# ifndef QUANTUM_DIR
-# include ../../Makefile
-# endif
-
ifeq ($(strip $(ISSI_ENABLE)), yes)
# TMK_COMMON_DEFS += -DISSI_ENABLE
diff --git a/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk b/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk
index 14ceebb77c4..b5310da58d3 100644
--- a/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/smk65/keymaps/default/rules.mk
@@ -23,10 +23,6 @@ ISSI_ENABLE = yes # If the I2C pullup resistors aren't install thi
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
ifeq ($(strip $(ISSI_ENABLE)), yes)
TMK_COMMON_DEFS += -DISSI_ENABLE
endif
@@ -34,3 +30,4 @@ endif
ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
endif
+
diff --git a/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk b/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
index f8b4d556897..f1814cf4852 100644
--- a/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
+++ b/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
@@ -23,10 +23,6 @@ ISSI_ENABLE = no # If the I2C pullup resistors aren't install this
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
ifeq ($(strip $(ISSI_ENABLE)), yes)
TMK_COMMON_DEFS += -DISSI_ENABLE
endif
@@ -51,3 +47,4 @@ endif
# endif
# OPT_DEFS += -DLFK_REV_$(LFK_REV)
# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
+
diff --git a/keyboards/m10a/keymaps/default/rules.mk b/keyboards/m10a/keymaps/default/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/m10a/keymaps/default/rules.mk
+++ b/keyboards/m10a/keymaps/default/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/m10a/keymaps/gam3cat/rules.mk b/keyboards/m10a/keymaps/gam3cat/rules.mk
index 00515a31e9e..b09c2904f0d 100644
--- a/keyboards/m10a/keymaps/gam3cat/rules.mk
+++ b/keyboards/m10a/keymaps/gam3cat/rules.mk
@@ -22,3 +22,4 @@ FAUXCLICKY_ENABLE = no # Uses buzzer to emulate clicky switches. By defaul
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390)
KEY_LOCK_ENABLE = no # This enables key lock(+260)
SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common
+
diff --git a/keyboards/minidox/keymaps/that_canadian/rules.mk b/keyboards/minidox/keymaps/that_canadian/rules.mk
index 7637dfc09a9..f1ef68387f4 100644
--- a/keyboards/minidox/keymaps/that_canadian/rules.mk
+++ b/keyboards/minidox/keymaps/that_canadian/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/mitosis/keymaps/mjt/rules.mk b/keyboards/mitosis/keymaps/mjt/rules.mk
index a4137ad00e6..0259657677b 100644
--- a/keyboards/mitosis/keymaps/mjt/rules.mk
+++ b/keyboards/mitosis/keymaps/mjt/rules.mk
@@ -12,6 +12,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
API_SYSEX_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/miuni32/keymaps/adam-lee/rules.mk b/keyboards/miuni32/keymaps/adam-lee/rules.mk
index 3138ab57f73..3a741d20a7c 100644
--- a/keyboards/miuni32/keymaps/adam-lee/rules.mk
+++ b/keyboards/miuni32/keymaps/adam-lee/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/miuni32/keymaps/default/rules.mk b/keyboards/miuni32/keymaps/default/rules.mk
index 3138ab57f73..3a741d20a7c 100644
--- a/keyboards/miuni32/keymaps/default/rules.mk
+++ b/keyboards/miuni32/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/miuni32/keymaps/ht_156/rules.mk b/keyboards/miuni32/keymaps/ht_156/rules.mk
index 3138ab57f73..3a741d20a7c 100644
--- a/keyboards/miuni32/keymaps/ht_156/rules.mk
+++ b/keyboards/miuni32/keymaps/ht_156/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/miuni32/keymaps/ki/rules.mk b/keyboards/miuni32/keymaps/ki/rules.mk
index 7639c2b3f14..15d3cfff2ca 100644
--- a/keyboards/miuni32/keymaps/ki/rules.mk
+++ b/keyboards/miuni32/keymaps/ki/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/niu_mini/keymaps/planck/rules.mk b/keyboards/niu_mini/keymaps/planck/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/niu_mini/keymaps/planck/rules.mk
+++ b/keyboards/niu_mini/keymaps/planck/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/niu_mini/keymaps/xtonhasvim/rules.mk b/keyboards/niu_mini/keymaps/xtonhasvim/rules.mk
index 359f94f1e46..00946ff227e 100644
--- a/keyboards/niu_mini/keymaps/xtonhasvim/rules.mk
+++ b/keyboards/niu_mini/keymaps/xtonhasvim/rules.mk
@@ -1,8 +1,5 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
MOUSEKEY_ENABLE = yes
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no
CONSOLE_ENABLE = no # Console for debug(+400)
+
diff --git a/keyboards/nyquist/keymaps/jojiichan/rules.mk b/keyboards/nyquist/keymaps/jojiichan/rules.mk
index 1e576127880..a81250cdf6d 100644
--- a/keyboards/nyquist/keymaps/jojiichan/rules.mk
+++ b/keyboards/nyquist/keymaps/jojiichan/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/nyquist/keymaps/kim-kim/rules.mk b/keyboards/nyquist/keymaps/kim-kim/rules.mk
index 1e576127880..a81250cdf6d 100644
--- a/keyboards/nyquist/keymaps/kim-kim/rules.mk
+++ b/keyboards/nyquist/keymaps/kim-kim/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/nyquist/keymaps/losinggeneration/rules.mk b/keyboards/nyquist/keymaps/losinggeneration/rules.mk
index ea2b7165d9b..17ef684830f 100644
--- a/keyboards/nyquist/keymaps/losinggeneration/rules.mk
+++ b/keyboards/nyquist/keymaps/losinggeneration/rules.mk
@@ -12,6 +12,3 @@ MIDI_ENABLE = no # MIDI controls
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/nyquist/keymaps/pitty/rules.mk b/keyboards/nyquist/keymaps/pitty/rules.mk
index 8ebc85a44b4..53a426157e8 100644
--- a/keyboards/nyquist/keymaps/pitty/rules.mk
+++ b/keyboards/nyquist/keymaps/pitty/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
NKRO_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/org60/keymaps/boardy/rules.mk b/keyboards/org60/keymaps/boardy/rules.mk
index 0755d500937..88ac79ecad5 100644
--- a/keyboards/org60/keymaps/boardy/rules.mk
+++ b/keyboards/org60/keymaps/boardy/rules.mk
@@ -8,8 +8,3 @@ COMMAND_ENABLE = no # Commands for debug and configuration
TAP_DANCE_ENABLE = no # Tap Dance skills
UNICODE_ENABLE = no # Unicode
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
-
diff --git a/keyboards/phantom/keymaps/default/rules.mk b/keyboards/phantom/keymaps/default/rules.mk
index 555ac79fa71..597d4046a13 100644
--- a/keyboards/phantom/keymaps/default/rules.mk
+++ b/keyboards/phantom/keymaps/default/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/phantom/keymaps/rgbmod/rules.mk b/keyboards/phantom/keymaps/rgbmod/rules.mk
index 38c23a1b897..2892bb424dc 100644
--- a/keyboards/phantom/keymaps/rgbmod/rules.mk
+++ b/keyboards/phantom/keymaps/rgbmod/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/ab/rules.mk b/keyboards/planck/keymaps/ab/rules.mk
index 0b025a2313e..c4dc26dc2b3 100644
--- a/keyboards/planck/keymaps/ab/rules.mk
+++ b/keyboards/planck/keymaps/ab/rules.mk
@@ -58,6 +58,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/ajp10304/rules.mk b/keyboards/planck/keymaps/ajp10304/rules.mk
index dc6ab13e89f..4dee01cd5b1 100644
--- a/keyboards/planck/keymaps/ajp10304/rules.mk
+++ b/keyboards/planck/keymaps/ajp10304/rules.mk
@@ -1,6 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
AUDIO_ENABLE = no
MOUSEKEY_ENABLE = yes
+
diff --git a/keyboards/planck/keymaps/alexey/rules.mk b/keyboards/planck/keymaps/alexey/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/alexey/rules.mk
+++ b/keyboards/planck/keymaps/alexey/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/altgr/rules.mk b/keyboards/planck/keymaps/altgr/rules.mk
index 40f153844c1..a722766296d 100644
--- a/keyboards/planck/keymaps/altgr/rules.mk
+++ b/keyboards/planck/keymaps/altgr/rules.mk
@@ -21,6 +21,3 @@ SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
-ifndef QUANTUM_DIR
-include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/angerthosenear/rules.mk b/keyboards/planck/keymaps/angerthosenear/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/angerthosenear/rules.mk
+++ b/keyboards/planck/keymaps/angerthosenear/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/austin/rules.mk b/keyboards/planck/keymaps/austin/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/austin/rules.mk
+++ b/keyboards/planck/keymaps/austin/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/basic/rules.mk b/keyboards/planck/keymaps/basic/rules.mk
index 6f88a28d508..a31025bc33d 100644
--- a/keyboards/planck/keymaps/basic/rules.mk
+++ b/keyboards/planck/keymaps/basic/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/bone2planck/rules.mk b/keyboards/planck/keymaps/bone2planck/rules.mk
index 699726948df..fc0bbe9e749 100644
--- a/keyboards/planck/keymaps/bone2planck/rules.mk
+++ b/keyboards/planck/keymaps/bone2planck/rules.mk
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/brandon/rules.mk b/keyboards/planck/keymaps/brandon/rules.mk
index 6df206578c4..30275cf1f6e 100644
--- a/keyboards/planck/keymaps/brandon/rules.mk
+++ b/keyboards/planck/keymaps/brandon/rules.mk
@@ -10,6 +10,3 @@ MOUSEKEY_ENABLE = yes
CONSOLE_ENABLE = no
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/callum/rules.mk b/keyboards/planck/keymaps/callum/rules.mk
index 67fe8d284d5..25d398f0806 100644
--- a/keyboards/planck/keymaps/callum/rules.mk
+++ b/keyboards/planck/keymaps/callum/rules.mk
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/cbbrowne/rules.mk b/keyboards/planck/keymaps/cbbrowne/rules.mk
index c7cef55a9af..45d6837399a 100644
--- a/keyboards/planck/keymaps/cbbrowne/rules.mk
+++ b/keyboards/planck/keymaps/cbbrowne/rules.mk
@@ -19,6 +19,3 @@ API_SYSEX_ENABLE = no # Enable SYSEX API (+5390)
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/chance/rules.mk b/keyboards/planck/keymaps/chance/rules.mk
index 5c9798a5726..2febfd96992 100644
--- a/keyboards/planck/keymaps/chance/rules.mk
+++ b/keyboards/planck/keymaps/chance/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
AUDIO_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/charlie/rules.mk b/keyboards/planck/keymaps/charlie/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/charlie/rules.mk
+++ b/keyboards/planck/keymaps/charlie/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/circuit/rules.mk b/keyboards/planck/keymaps/circuit/rules.mk
index e9a02e31e20..b527d82971d 100644
--- a/keyboards/planck/keymaps/circuit/rules.mk
+++ b/keyboards/planck/keymaps/circuit/rules.mk
@@ -20,6 +20,3 @@ TAP_DANCE_ENABLE = yes # Enables the double-tap functionality of keys
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/coloneljesus/rules.mk b/keyboards/planck/keymaps/coloneljesus/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/coloneljesus/rules.mk
+++ b/keyboards/planck/keymaps/coloneljesus/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/daniel/rules.mk b/keyboards/planck/keymaps/daniel/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/daniel/rules.mk
+++ b/keyboards/planck/keymaps/daniel/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/david/rules.mk b/keyboards/planck/keymaps/david/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/david/rules.mk
+++ b/keyboards/planck/keymaps/david/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/davidrambo/rules.mk b/keyboards/planck/keymaps/davidrambo/rules.mk
index ffa9b870afe..5e5ab384581 100644
--- a/keyboards/planck/keymaps/davidrambo/rules.mk
+++ b/keyboards/planck/keymaps/davidrambo/rules.mk
@@ -1,6 +1,3 @@
TAP_DANCE_ENABLE = yes
MOUSEKEY_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/dc/rules.mk b/keyboards/planck/keymaps/dc/rules.mk
index ea4341b4fd2..07da5f19442 100644
--- a/keyboards/planck/keymaps/dc/rules.mk
+++ b/keyboards/planck/keymaps/dc/rules.mk
@@ -1,7 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
@@ -21,4 +17,5 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
diff --git a/keyboards/planck/keymaps/dcompact/rules.mk b/keyboards/planck/keymaps/dcompact/rules.mk
index d7eff1adc6f..12b4e44c2b7 100644
--- a/keyboards/planck/keymaps/dcompact/rules.mk
+++ b/keyboards/planck/keymaps/dcompact/rules.mk
@@ -1,7 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# https://beta.docs.qmk.fm/reference/config-options#feature-options
# Features Specifically Wanted
EXTRAKEY_ENABLE = yes
@@ -13,3 +9,4 @@ AUDIO_ENABLE = yes
MOUSEKEY_ENABLE = no
MIDI_ENABLE = no
CONSOLE_ENABLE = no
+
diff --git a/keyboards/planck/keymaps/dlaroe/rules.mk b/keyboards/planck/keymaps/dlaroe/rules.mk
index 0064f622b76..7ff90237a78 100644
--- a/keyboards/planck/keymaps/dlaroe/rules.mk
+++ b/keyboards/planck/keymaps/dlaroe/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/dr_notsokind/rules.mk b/keyboards/planck/keymaps/dr_notsokind/rules.mk
index eea90f8e6a4..91156b6b465 100644
--- a/keyboards/planck/keymaps/dr_notsokind/rules.mk
+++ b/keyboards/planck/keymaps/dr_notsokind/rules.mk
@@ -20,6 +20,3 @@ TAP_DANCE_ENABLE = yes # Enables the double-tap functionality of keys
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/dshields/rules.mk b/keyboards/planck/keymaps/dshields/rules.mk
index a526c5a31ad..a2bec433576 100644
--- a/keyboards/planck/keymaps/dshields/rules.mk
+++ b/keyboards/planck/keymaps/dshields/rules.mk
@@ -1,7 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = no # Console for debug(+400)
diff --git a/keyboards/planck/keymaps/dudeofawesome/rules.mk b/keyboards/planck/keymaps/dudeofawesome/rules.mk
index edeab164393..eeee270d5e0 100644
--- a/keyboards/planck/keymaps/dudeofawesome/rules.mk
+++ b/keyboards/planck/keymaps/dudeofawesome/rules.mk
@@ -1,10 +1,7 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
AUDIO_ENABLE = yes # Audio output on port C6
CONSOLE_ENABLE = no # Console for debug(+400)
MIDI_ENABLE = no # MIDI controls
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+
diff --git a/keyboards/planck/keymaps/dzobert/rules.mk b/keyboards/planck/keymaps/dzobert/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/dzobert/rules.mk
+++ b/keyboards/planck/keymaps/dzobert/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/espynn/rules.mk b/keyboards/planck/keymaps/espynn/rules.mk
index 0b025a2313e..c4dc26dc2b3 100644
--- a/keyboards/planck/keymaps/espynn/rules.mk
+++ b/keyboards/planck/keymaps/espynn/rules.mk
@@ -58,6 +58,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/experimental/rules.mk b/keyboards/planck/keymaps/experimental/rules.mk
index 721e887b98c..e5db0554369 100644
--- a/keyboards/planck/keymaps/experimental/rules.mk
+++ b/keyboards/planck/keymaps/experimental/rules.mk
@@ -23,6 +23,3 @@ LEADER_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/gabriel/rules.mk b/keyboards/planck/keymaps/gabriel/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/gabriel/rules.mk
+++ b/keyboards/planck/keymaps/gabriel/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/grahampheath/rules.mk b/keyboards/planck/keymaps/grahampheath/rules.mk
index 2ff606255ed..e84f6d5e6da 100644
--- a/keyboards/planck/keymaps/grahampheath/rules.mk
+++ b/keyboards/planck/keymaps/grahampheath/rules.mk
@@ -1,9 +1,7 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
NKRO_ENABLE = yes # N-Key rollover.
# MOUSEKEY_ENABLE = yes # Mouse mode.
TAP_DANCE_ENABLE = no # Tap dance enabled.
UNICODEMAP_ENABLE = no # Unicode keymap (sucks on osx).
AUDIO_ENABLE = yes # Audio output on port C6
+
diff --git a/keyboards/planck/keymaps/gunp/rules.mk b/keyboards/planck/keymaps/gunp/rules.mk
index 7d03482abc6..ec69d6e78f3 100644
--- a/keyboards/planck/keymaps/gunp/rules.mk
+++ b/keyboards/planck/keymaps/gunp/rules.mk
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/handwired_binaryplease/rules.mk b/keyboards/planck/keymaps/handwired_binaryplease/rules.mk
index 248fe2bb74a..efe0c7a5dd9 100644
--- a/keyboards/planck/keymaps/handwired_binaryplease/rules.mk
+++ b/keyboards/planck/keymaps/handwired_binaryplease/rules.mk
@@ -1,9 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
-
-
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@@ -72,3 +66,4 @@ API_SYSEX_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
diff --git a/keyboards/planck/keymaps/hiea/rules.mk b/keyboards/planck/keymaps/hiea/rules.mk
index 40f153844c1..a722766296d 100644
--- a/keyboards/planck/keymaps/hiea/rules.mk
+++ b/keyboards/planck/keymaps/hiea/rules.mk
@@ -21,6 +21,3 @@ SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
-ifndef QUANTUM_DIR
-include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/hieax/rules.mk b/keyboards/planck/keymaps/hieax/rules.mk
index 40f153844c1..a722766296d 100644
--- a/keyboards/planck/keymaps/hieax/rules.mk
+++ b/keyboards/planck/keymaps/hieax/rules.mk
@@ -21,6 +21,3 @@ SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
-ifndef QUANTUM_DIR
-include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/ishtob/rule.mk b/keyboards/planck/keymaps/ishtob/rule.mk
index c0d38aaa14a..0f71be62b73 100755
--- a/keyboards/planck/keymaps/ishtob/rule.mk
+++ b/keyboards/planck/keymaps/ishtob/rule.mk
@@ -18,6 +18,3 @@ ENCODER_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/jacob/rules.mk b/keyboards/planck/keymaps/jacob/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/jacob/rules.mk
+++ b/keyboards/planck/keymaps/jacob/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/jirgn/rules.mk b/keyboards/planck/keymaps/jirgn/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/jirgn/rules.mk
+++ b/keyboards/planck/keymaps/jirgn/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/johannes/rules.mk b/keyboards/planck/keymaps/johannes/rules.mk
index 6f88a28d508..a31025bc33d 100644
--- a/keyboards/planck/keymaps/johannes/rules.mk
+++ b/keyboards/planck/keymaps/johannes/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/khord/rules.mk b/keyboards/planck/keymaps/khord/rules.mk
index c248822b231..444fa38a932 100644
--- a/keyboards/planck/keymaps/khord/rules.mk
+++ b/keyboards/planck/keymaps/khord/rules.mk
@@ -1,6 +1,3 @@
BACKLIGHT_ENABLE = yes
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/kmontag42/rules.mk b/keyboards/planck/keymaps/kmontag42/rules.mk
index 0c100076bea..5712a735d1e 100644
--- a/keyboards/planck/keymaps/kmontag42/rules.mk
+++ b/keyboards/planck/keymaps/kmontag42/rules.mk
@@ -1,6 +1,3 @@
UNICODE_ENABLE = yes
LEADER_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/kyle/rules.mk b/keyboards/planck/keymaps/kyle/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/kyle/rules.mk
+++ b/keyboards/planck/keymaps/kyle/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/lae3/rules.mk b/keyboards/planck/keymaps/lae3/rules.mk
index 89b147f8191..4d91a120c66 100644
--- a/keyboards/planck/keymaps/lae3/rules.mk
+++ b/keyboards/planck/keymaps/lae3/rules.mk
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/lukas/rules.mk b/keyboards/planck/keymaps/lukas/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/lukas/rules.mk
+++ b/keyboards/planck/keymaps/lukas/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/luke/rules.mk b/keyboards/planck/keymaps/luke/rules.mk
index 76ed281c11e..e04815e2caf 100644
--- a/keyboards/planck/keymaps/luke/rules.mk
+++ b/keyboards/planck/keymaps/luke/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/max/rules.mk b/keyboards/planck/keymaps/max/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/max/rules.mk
+++ b/keyboards/planck/keymaps/max/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/mitch/rules.mk b/keyboards/planck/keymaps/mitch/rules.mk
index 7955003d47e..32dc2acc676 100644
--- a/keyboards/planck/keymaps/mitch/rules.mk
+++ b/keyboards/planck/keymaps/mitch/rules.mk
@@ -1,5 +1,2 @@
SUBPROJECT = rev3
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/mjt/rules.mk b/keyboards/planck/keymaps/mjt/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/mjt/rules.mk
+++ b/keyboards/planck/keymaps/mjt/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/mjtnumsym/rules.mk b/keyboards/planck/keymaps/mjtnumsym/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/mjtnumsym/rules.mk
+++ b/keyboards/planck/keymaps/mjtnumsym/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/myoung34/rules.mk b/keyboards/planck/keymaps/myoung34/rules.mk
index b1aaafd3a4d..0560de1dc4b 100644
--- a/keyboards/planck/keymaps/myoung34/rules.mk
+++ b/keyboards/planck/keymaps/myoung34/rules.mk
@@ -1,7 +1,3 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
AUDIO_ENABLE = yes # Audio output on port C6
CONSOLE_ENABLE = no # Console for debug(+400)
MIDI_ENABLE = no # MIDI controls
@@ -9,3 +5,4 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
BACKLIGHT_ENABLE = yes
+
diff --git a/keyboards/planck/keymaps/neo2planck/rules.mk b/keyboards/planck/keymaps/neo2planck/rules.mk
index cedf3095e61..6846e9c164f 100644
--- a/keyboards/planck/keymaps/neo2planck/rules.mk
+++ b/keyboards/planck/keymaps/neo2planck/rules.mk
@@ -18,6 +18,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/not-quite-neo/rules.mk b/keyboards/planck/keymaps/not-quite-neo/rules.mk
index 90e6353f65b..5ba0cefb41b 100644
--- a/keyboards/planck/keymaps/not-quite-neo/rules.mk
+++ b/keyboards/planck/keymaps/not-quite-neo/rules.mk
@@ -24,6 +24,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/originerd/rules.mk b/keyboards/planck/keymaps/originerd/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/originerd/rules.mk
+++ b/keyboards/planck/keymaps/originerd/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/paget/rules.mk b/keyboards/planck/keymaps/paget/rules.mk
index 457a3d01d4a..e69de29bb2d 100755
--- a/keyboards/planck/keymaps/paget/rules.mk
+++ b/keyboards/planck/keymaps/paget/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/pete/rules.mk b/keyboards/planck/keymaps/pete/rules.mk
index 20bba3f4915..8a328f6b6cb 100644
--- a/keyboards/planck/keymaps/pete/rules.mk
+++ b/keyboards/planck/keymaps/pete/rules.mk
@@ -10,6 +10,3 @@ NKRO_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/phreed/rules.mk b/keyboards/planck/keymaps/phreed/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/phreed/rules.mk
+++ b/keyboards/planck/keymaps/phreed/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/piemod/rules.mk b/keyboards/planck/keymaps/piemod/rules.mk
index 84cb02bd760..0eabfdfc19e 100644
--- a/keyboards/planck/keymaps/piemod/rules.mk
+++ b/keyboards/planck/keymaps/piemod/rules.mk
@@ -13,6 +13,3 @@ else
BLUETOOTH_ENABLE = yes
endif
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/priyadi/rules.mk b/keyboards/planck/keymaps/priyadi/rules.mk
index 282c047eec4..a999eb00f63 100644
--- a/keyboards/planck/keymaps/priyadi/rules.mk
+++ b/keyboards/planck/keymaps/priyadi/rules.mk
@@ -21,6 +21,3 @@ FAUXCLICKY_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/rai-suta/rules.mk b/keyboards/planck/keymaps/rai-suta/rules.mk
index ce13befd906..88915dcd3c6 100644
--- a/keyboards/planck/keymaps/rai-suta/rules.mk
+++ b/keyboards/planck/keymaps/rai-suta/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/sdothum/rules.mk b/keyboards/planck/keymaps/sdothum/rules.mk
index 40f153844c1..a722766296d 100644
--- a/keyboards/planck/keymaps/sdothum/rules.mk
+++ b/keyboards/planck/keymaps/sdothum/rules.mk
@@ -21,6 +21,3 @@ SLEEP_LED_ENABLE = no # breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # enable double tap completion of (),[],{}
-ifndef QUANTUM_DIR
-include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/smt/rules.mk b/keyboards/planck/keymaps/smt/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/smt/rules.mk
+++ b/keyboards/planck/keymaps/smt/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/steno/rules.mk b/keyboards/planck/keymaps/steno/rules.mk
index 634a1c8878a..b2fd63a893d 100644
--- a/keyboards/planck/keymaps/steno/rules.mk
+++ b/keyboards/planck/keymaps/steno/rules.mk
@@ -1,9 +1,6 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
EXTRAKEY_ENABLE = no
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER
AUDIO_ENABLE = no # Audio output on port C6
MIDI_ENABLE = no # MIDI controls
+
diff --git a/keyboards/planck/keymaps/tehwalris/rules.mk b/keyboards/planck/keymaps/tehwalris/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/planck/keymaps/tehwalris/rules.mk
+++ b/keyboards/planck/keymaps/tehwalris/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/tong92/rules.mk b/keyboards/planck/keymaps/tong92/rules.mk
index df9e7918ca3..88ad1e98285 100644
--- a/keyboards/planck/keymaps/tong92/rules.mk
+++ b/keyboards/planck/keymaps/tong92/rules.mk
@@ -57,6 +57,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/unicode/rules.mk b/keyboards/planck/keymaps/unicode/rules.mk
index 110af7501cc..70866cb8bb2 100644
--- a/keyboards/planck/keymaps/unicode/rules.mk
+++ b/keyboards/planck/keymaps/unicode/rules.mk
@@ -6,6 +6,3 @@
#
UNICODE_ENABLE = yes # Unicode
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/vifon/rules.mk b/keyboards/planck/keymaps/vifon/rules.mk
index 5caec1afa8f..527e63d3821 100644
--- a/keyboards/planck/keymaps/vifon/rules.mk
+++ b/keyboards/planck/keymaps/vifon/rules.mk
@@ -22,6 +22,3 @@ KEY_LOCK_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/yale/rules.mk b/keyboards/planck/keymaps/yale/rules.mk
index caff043c582..5dda6ad67ba 100644
--- a/keyboards/planck/keymaps/yale/rules.mk
+++ b/keyboards/planck/keymaps/yale/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/yang/rules.mk b/keyboards/planck/keymaps/yang/rules.mk
index 173fe29893b..05f0fb04aa3 100644
--- a/keyboards/planck/keymaps/yang/rules.mk
+++ b/keyboards/planck/keymaps/yang/rules.mk
@@ -5,6 +5,3 @@
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
AUDIO_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/planck/keymaps/zach/rules.mk b/keyboards/planck/keymaps/zach/rules.mk
index ca24b47929a..b3dfb88d74e 100644
--- a/keyboards/planck/keymaps/zach/rules.mk
+++ b/keyboards/planck/keymaps/zach/rules.mk
@@ -24,6 +24,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/planck/keymaps/zrichard/rules.mk b/keyboards/planck/keymaps/zrichard/rules.mk
index 7b17f58ce13..0475875a3b3 100755
--- a/keyboards/planck/keymaps/zrichard/rules.mk
+++ b/keyboards/planck/keymaps/zrichard/rules.mk
@@ -25,6 +25,3 @@ TAP_DANCE_ENABLE = no # Enable double or n tap macros
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/preonic/keymaps/0xdec/rules.mk b/keyboards/preonic/keymaps/0xdec/rules.mk
index 6600e368936..0c8a6dc4110 100644
--- a/keyboards/preonic/keymaps/0xdec/rules.mk
+++ b/keyboards/preonic/keymaps/0xdec/rules.mk
@@ -16,6 +16,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/preonic/keymaps/bucktooth/rules.mk b/keyboards/preonic/keymaps/bucktooth/rules.mk
index 9dbdfcbd3ba..8f226afd905 100644
--- a/keyboards/preonic/keymaps/bucktooth/rules.mk
+++ b/keyboards/preonic/keymaps/bucktooth/rules.mk
@@ -15,6 +15,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/preonic/keymaps/dlaroe/rules.mk b/keyboards/preonic/keymaps/dlaroe/rules.mk
index eea31684972..68f78de6e0a 100644
--- a/keyboards/preonic/keymaps/dlaroe/rules.mk
+++ b/keyboards/preonic/keymaps/dlaroe/rules.mk
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/preonic/keymaps/jacwib/rules.mk b/keyboards/preonic/keymaps/jacwib/rules.mk
index 9dbdfcbd3ba..8f226afd905 100644
--- a/keyboards/preonic/keymaps/jacwib/rules.mk
+++ b/keyboards/preonic/keymaps/jacwib/rules.mk
@@ -15,6 +15,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/preonic/keymaps/kinesis/rules.mk b/keyboards/preonic/keymaps/kinesis/rules.mk
index f37fe433891..94d02c8b773 100644
--- a/keyboards/preonic/keymaps/kinesis/rules.mk
+++ b/keyboards/preonic/keymaps/kinesis/rules.mk
@@ -22,6 +22,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/preonic/keymaps/nikchi/rules.mk b/keyboards/preonic/keymaps/nikchi/rules.mk
index 3d4659ceb9a..e69de29bb2d 100644
--- a/keyboards/preonic/keymaps/nikchi/rules.mk
+++ b/keyboards/preonic/keymaps/nikchi/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/smt/rules.mk b/keyboards/preonic/keymaps/smt/rules.mk
index 3d4659ceb9a..e69de29bb2d 100644
--- a/keyboards/preonic/keymaps/smt/rules.mk
+++ b/keyboards/preonic/keymaps/smt/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/that_canadian/Makefile b/keyboards/preonic/keymaps/that_canadian/Makefile
index 507bd77d2d1..773e5c45dad 100644
--- a/keyboards/preonic/keymaps/that_canadian/Makefile
+++ b/keyboards/preonic/keymaps/that_canadian/Makefile
@@ -20,6 +20,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/preonic/keymaps/zach/rules.mk b/keyboards/preonic/keymaps/zach/rules.mk
index f00af43961e..77efcf3832f 100644
--- a/keyboards/preonic/keymaps/zach/rules.mk
+++ b/keyboards/preonic/keymaps/zach/rules.mk
@@ -24,6 +24,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/redox/keymaps/default/rules.mk b/keyboards/redox/keymaps/default/rules.mk
index 1e576127880..a81250cdf6d 100644
--- a/keyboards/redox/keymaps/default/rules.mk
+++ b/keyboards/redox/keymaps/default/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/redox/keymaps/italian/rules.mk b/keyboards/redox/keymaps/italian/rules.mk
index 1e576127880..a81250cdf6d 100644
--- a/keyboards/redox/keymaps/italian/rules.mk
+++ b/keyboards/redox/keymaps/italian/rules.mk
@@ -1,5 +1,2 @@
RGBLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/s60_x/keymaps/ansi_qwertz/rules.mk b/keyboards/s60_x/keymaps/ansi_qwertz/rules.mk
index cf501225268..1bcd7ea7f2f 100644
--- a/keyboards/s60_x/keymaps/ansi_qwertz/rules.mk
+++ b/keyboards/s60_x/keymaps/ansi_qwertz/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/satan/keymaps/admiralStrokers/rules.mk b/keyboards/satan/keymaps/admiralStrokers/rules.mk
index 22908296cee..7c3f5bd90bc 100644
--- a/keyboards/satan/keymaps/admiralStrokers/rules.mk
+++ b/keyboards/satan/keymaps/admiralStrokers/rules.mk
@@ -19,6 +19,4 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no# Breathing sleep LED during USB suspend
API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
+
diff --git a/keyboards/satan/keymaps/ben_iso/rules.mk b/keyboards/satan/keymaps/ben_iso/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/satan/keymaps/ben_iso/rules.mk
+++ b/keyboards/satan/keymaps/ben_iso/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/chaser/rules.mk b/keyboards/satan/keymaps/chaser/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/satan/keymaps/chaser/rules.mk
+++ b/keyboards/satan/keymaps/chaser/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/colemak/rules.mk b/keyboards/satan/keymaps/colemak/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/satan/keymaps/colemak/rules.mk
+++ b/keyboards/satan/keymaps/colemak/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/default/rules.mk b/keyboards/satan/keymaps/default/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/satan/keymaps/default/rules.mk
+++ b/keyboards/satan/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/dende_iso/rules.mk b/keyboards/satan/keymaps/dende_iso/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/satan/keymaps/dende_iso/rules.mk
+++ b/keyboards/satan/keymaps/dende_iso/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/denolfe/rules.mk b/keyboards/satan/keymaps/denolfe/rules.mk
index 04d27430659..5a8745b6898 100644
--- a/keyboards/satan/keymaps/denolfe/rules.mk
+++ b/keyboards/satan/keymaps/denolfe/rules.mk
@@ -15,6 +15,3 @@ AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/dkrieger/rules.mk b/keyboards/satan/keymaps/dkrieger/rules.mk
index f2434d30e55..d91b0edbf34 100644
--- a/keyboards/satan/keymaps/dkrieger/rules.mk
+++ b/keyboards/satan/keymaps/dkrieger/rules.mk
@@ -17,6 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/fakb/rules.mk b/keyboards/satan/keymaps/fakb/rules.mk
index c2b5df6cdd9..a0d2447994d 100644
--- a/keyboards/satan/keymaps/fakb/rules.mk
+++ b/keyboards/satan/keymaps/fakb/rules.mk
@@ -11,6 +11,3 @@ AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/isoHHKB/rules.mk b/keyboards/satan/keymaps/isoHHKB/rules.mk
index 80ce5605883..08e77f9ebc6 100644
--- a/keyboards/satan/keymaps/isoHHKB/rules.mk
+++ b/keyboards/satan/keymaps/isoHHKB/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/iso_split_rshift/rules.mk b/keyboards/satan/keymaps/iso_split_rshift/rules.mk
index d1e07da3fcc..15cabfcd85a 100644
--- a/keyboards/satan/keymaps/iso_split_rshift/rules.mk
+++ b/keyboards/satan/keymaps/iso_split_rshift/rules.mk
@@ -11,6 +11,3 @@ AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/lepa/rules.mk b/keyboards/satan/keymaps/lepa/rules.mk
index 72ca006465c..74a42b647ca 100644
--- a/keyboards/satan/keymaps/lepa/rules.mk
+++ b/keyboards/satan/keymaps/lepa/rules.mk
@@ -17,6 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/midi/rules.mk b/keyboards/satan/keymaps/midi/rules.mk
index d144314de74..87025ed6fe4 100644
--- a/keyboards/satan/keymaps/midi/rules.mk
+++ b/keyboards/satan/keymaps/midi/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/sethbc/rules.mk b/keyboards/satan/keymaps/sethbc/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/satan/keymaps/sethbc/rules.mk
+++ b/keyboards/satan/keymaps/sethbc/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/smt/rules.mk b/keyboards/satan/keymaps/smt/rules.mk
index 806c2cb84b0..3fe140adcc7 100644
--- a/keyboards/satan/keymaps/smt/rules.mk
+++ b/keyboards/satan/keymaps/smt/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/satan/keymaps/unxmaal/rules.mk b/keyboards/satan/keymaps/unxmaal/rules.mk
index 470d621b105..e7247825137 100644
--- a/keyboards/satan/keymaps/unxmaal/rules.mk
+++ b/keyboards/satan/keymaps/unxmaal/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/ardakilic/rules.mk b/keyboards/tada68/keymaps/ardakilic/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/ardakilic/rules.mk
+++ b/keyboards/tada68/keymaps/ardakilic/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/default/rules.mk b/keyboards/tada68/keymaps/default/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/default/rules.mk
+++ b/keyboards/tada68/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/fakb/rules.mk b/keyboards/tada68/keymaps/fakb/rules.mk
index 642e16de597..47fd29663ba 100644
--- a/keyboards/tada68/keymaps/fakb/rules.mk
+++ b/keyboards/tada68/keymaps/fakb/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/fezzant/rules.mk b/keyboards/tada68/keymaps/fezzant/rules.mk
index 8df84ae954f..7b32f0a6644 100644
--- a/keyboards/tada68/keymaps/fezzant/rules.mk
+++ b/keyboards/tada68/keymaps/fezzant/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/iso-nor/rules.mk b/keyboards/tada68/keymaps/iso-nor/rules.mk
index baaca071cf7..53644093d6c 100644
--- a/keyboards/tada68/keymaps/iso-nor/rules.mk
+++ b/keyboards/tada68/keymaps/iso-nor/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/tada68/keymaps/iso-uk/rules.mk b/keyboards/tada68/keymaps/iso-uk/rules.mk
index baaca071cf7..53644093d6c 100644
--- a/keyboards/tada68/keymaps/iso-uk/rules.mk
+++ b/keyboards/tada68/keymaps/iso-uk/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/tada68/keymaps/isoish/rules.mk b/keyboards/tada68/keymaps/isoish/rules.mk
index baaca071cf7..53644093d6c 100644
--- a/keyboards/tada68/keymaps/isoish/rules.mk
+++ b/keyboards/tada68/keymaps/isoish/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/tada68/keymaps/mattdicarlo/rules.mk b/keyboards/tada68/keymaps/mattdicarlo/rules.mk
index ac92f99f485..739b739971f 100644
--- a/keyboards/tada68/keymaps/mattdicarlo/rules.mk
+++ b/keyboards/tada68/keymaps/mattdicarlo/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/mlechner/rules.mk b/keyboards/tada68/keymaps/mlechner/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/mlechner/rules.mk
+++ b/keyboards/tada68/keymaps/mlechner/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/mtdjr/rules.mk b/keyboards/tada68/keymaps/mtdjr/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/mtdjr/rules.mk
+++ b/keyboards/tada68/keymaps/mtdjr/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/pascamel/rules.mk b/keyboards/tada68/keymaps/pascamel/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/pascamel/rules.mk
+++ b/keyboards/tada68/keymaps/pascamel/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/raylas/rules.mk b/keyboards/tada68/keymaps/raylas/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/raylas/rules.mk
+++ b/keyboards/tada68/keymaps/raylas/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/rgb/rules.mk b/keyboards/tada68/keymaps/rgb/rules.mk
index 470d621b105..e7247825137 100644
--- a/keyboards/tada68/keymaps/rgb/rules.mk
+++ b/keyboards/tada68/keymaps/rgb/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/stephengrier/rules.mk b/keyboards/tada68/keymaps/stephengrier/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/stephengrier/rules.mk
+++ b/keyboards/tada68/keymaps/stephengrier/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/trashcat/rules.mk b/keyboards/tada68/keymaps/trashcat/rules.mk
index 6fb49691937..488111732c9 100644
--- a/keyboards/tada68/keymaps/trashcat/rules.mk
+++ b/keyboards/tada68/keymaps/trashcat/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # Tappa Dance Bitch
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/tshack/rules.mk b/keyboards/tada68/keymaps/tshack/rules.mk
index 86d22dd3fd0..1a3bda46037 100644
--- a/keyboards/tada68/keymaps/tshack/rules.mk
+++ b/keyboards/tada68/keymaps/tshack/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/unix/rules.mk b/keyboards/tada68/keymaps/unix/rules.mk
index aade51459b4..316106c034d 100644
--- a/keyboards/tada68/keymaps/unix/rules.mk
+++ b/keyboards/tada68/keymaps/unix/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tada68/keymaps/wamsm_tada/rules.mk b/keyboards/tada68/keymaps/wamsm_tada/rules.mk
index bb535beb34c..53644093d6c 100644
--- a/keyboards/tada68/keymaps/wamsm_tada/rules.mk
+++ b/keyboards/tada68/keymaps/wamsm_tada/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/tanuki/rules.mk b/keyboards/tanuki/rules.mk
index cc3734152fb..fd3c058304f 100644
--- a/keyboards/tanuki/rules.mk
+++ b/keyboards/tanuki/rules.mk
@@ -65,6 +65,3 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
TAP_DANCE_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../Makefile
-endif
diff --git a/keyboards/the_ruler/keymaps/default/rules.mk b/keyboards/the_ruler/keymaps/default/rules.mk
index b491f5b3f3f..2791cc1054b 100644
--- a/keyboards/the_ruler/keymaps/default/rules.mk
+++ b/keyboards/the_ruler/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk
index 159fd7dc6c3..9da4bf91a57 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk
@@ -32,6 +32,3 @@
# RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk
index 159fd7dc6c3..9da4bf91a57 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk
@@ -32,6 +32,3 @@
# RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/default/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/default/rules.mk
index 159fd7dc6c3..9da4bf91a57 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/default/rules.mk
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/default/rules.mk
@@ -32,6 +32,3 @@
# RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk
index 159fd7dc6c3..9da4bf91a57 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk
@@ -32,6 +32,3 @@
# RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk
index 61124112405..f9d8b0eb099 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk
@@ -7,6 +7,3 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
TAP_DANCE_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/minivan/keymaps/core/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/core/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/core/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/core/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/minivan/keymaps/default/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/default/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/default/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk
index b2c421c4dc2..8e22f3051da 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk
index 1e006e94724..f5556c8fcba 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/default/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/default/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/default/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk
index ba4b4fec0c6..676e9a6e0ad 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk
@@ -17,6 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = no # Enable Tap Dance functionality
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk
index 3ff14772511..7a331cd530c 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk
index 030d27f2a62..38fa7790bd9 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk
@@ -17,6 +17,3 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # Enable Tap Dance functionality
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
\ No newline at end of file
diff --git a/keyboards/vision_division/keymaps/default/rules.mk b/keyboards/vision_division/keymaps/default/rules.mk
index 342f37453c0..69a3b2cd297 100644
--- a/keyboards/vision_division/keymaps/default/rules.mk
+++ b/keyboards/vision_division/keymaps/default/rules.mk
@@ -16,6 +16,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/whitefox/keymaps/jetpacktuxedo/rules.mk b/keyboards/whitefox/keymaps/jetpacktuxedo/rules.mk
index 8eb483103c3..c9c8cbea51c 100644
--- a/keyboards/whitefox/keymaps/jetpacktuxedo/rules.mk
+++ b/keyboards/whitefox/keymaps/jetpacktuxedo/rules.mk
@@ -1,5 +1,2 @@
-ifndef QUANTUM_DIR
- include ../../../Makefile
-endif
-
BACKLIGHT_ENABLE = yes
+
diff --git a/keyboards/xd75/keymaps/adi/rules.mk b/keyboards/xd75/keymaps/adi/rules.mk
index d4e08cfb26b..52a8f38d45f 100644
--- a/keyboards/xd75/keymaps/adi/rules.mk
+++ b/keyboards/xd75/keymaps/adi/rules.mk
@@ -13,6 +13,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/atomic_style/rules.mk b/keyboards/xd75/keymaps/atomic_style/rules.mk
index d4e08cfb26b..52a8f38d45f 100644
--- a/keyboards/xd75/keymaps/atomic_style/rules.mk
+++ b/keyboards/xd75/keymaps/atomic_style/rules.mk
@@ -13,6 +13,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/bbaserdem/rules.mk b/keyboards/xd75/keymaps/bbaserdem/rules.mk
index 4839c644f8b..3e501cd00ee 100644
--- a/keyboards/xd75/keymaps/bbaserdem/rules.mk
+++ b/keyboards/xd75/keymaps/bbaserdem/rules.mk
@@ -5,6 +5,3 @@ RGBLIGHT_ENABLE = no # LED strips
TAP_DANCE_ENABLE = no # Use multi-tap features
AUDIO_ENABLE = no # Audio stuff
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/default/rules.mk b/keyboards/xd75/keymaps/default/rules.mk
index d4e08cfb26b..52a8f38d45f 100644
--- a/keyboards/xd75/keymaps/default/rules.mk
+++ b/keyboards/xd75/keymaps/default/rules.mk
@@ -13,6 +13,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk b/keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk
index 64484d3eee5..7708eba6a18 100644
--- a/keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk
+++ b/keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk
@@ -13,8 +13,5 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
TAP_DANCE_ENABLE = yes
+
diff --git a/keyboards/xd75/keymaps/emilyh/rules.mk b/keyboards/xd75/keymaps/emilyh/rules.mk
index d4e08cfb26b..52a8f38d45f 100644
--- a/keyboards/xd75/keymaps/emilyh/rules.mk
+++ b/keyboards/xd75/keymaps/emilyh/rules.mk
@@ -13,6 +13,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/fabian/rules.mk b/keyboards/xd75/keymaps/fabian/rules.mk
index f1ae8d44a17..8831f2d6250 100644
--- a/keyboards/xd75/keymaps/fabian/rules.mk
+++ b/keyboards/xd75/keymaps/fabian/rules.mk
@@ -32,6 +32,3 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/french/rules.mk b/keyboards/xd75/keymaps/french/rules.mk
index dfd79792fa5..324d9ebd059 100644
--- a/keyboards/xd75/keymaps/french/rules.mk
+++ b/keyboards/xd75/keymaps/french/rules.mk
@@ -15,6 +15,3 @@
RGBLIGHT_ENABLE = no
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/germanized/rules.mk b/keyboards/xd75/keymaps/germanized/rules.mk
index f57fb8c54e6..ab81a536098 100644
--- a/keyboards/xd75/keymaps/germanized/rules.mk
+++ b/keyboards/xd75/keymaps/germanized/rules.mk
@@ -33,6 +33,3 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes # Enable Tap Dancing
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/kim-kim-xd73/rules.mk b/keyboards/xd75/keymaps/kim-kim-xd73/rules.mk
index 7e4ed0837bb..4c894d79738 100644
--- a/keyboards/xd75/keymaps/kim-kim-xd73/rules.mk
+++ b/keyboards/xd75/keymaps/kim-kim-xd73/rules.mk
@@ -20,6 +20,3 @@
#
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/kim-kim/rules.mk b/keyboards/xd75/keymaps/kim-kim/rules.mk
index 7e4ed0837bb..4c894d79738 100644
--- a/keyboards/xd75/keymaps/kim-kim/rules.mk
+++ b/keyboards/xd75/keymaps/kim-kim/rules.mk
@@ -20,6 +20,3 @@
#
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/kloki/rules.mk b/keyboards/xd75/keymaps/kloki/rules.mk
index d4e08cfb26b..52a8f38d45f 100644
--- a/keyboards/xd75/keymaps/kloki/rules.mk
+++ b/keyboards/xd75/keymaps/kloki/rules.mk
@@ -13,6 +13,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/markus/rules.mk b/keyboards/xd75/keymaps/markus/rules.mk
index febb446f891..d0ed9a73ae1 100644
--- a/keyboards/xd75/keymaps/markus/rules.mk
+++ b/keyboards/xd75/keymaps/markus/rules.mk
@@ -21,6 +21,3 @@ API_SYSEX_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/mtdjr/rules.mk b/keyboards/xd75/keymaps/mtdjr/rules.mk
index 28462ff160f..6b7d69d4f2c 100644
--- a/keyboards/xd75/keymaps/mtdjr/rules.mk
+++ b/keyboards/xd75/keymaps/mtdjr/rules.mk
@@ -13,10 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
BACKLIGHT_ENABLE = yes
TAP_DANCE_ENABLE = yes
RGBLIGHT_ENABLE = yes
+
diff --git a/keyboards/xd75/keymaps/skewwhiffy/rules.mk b/keyboards/xd75/keymaps/skewwhiffy/rules.mk
index d4e08cfb26b..52a8f38d45f 100644
--- a/keyboards/xd75/keymaps/skewwhiffy/rules.mk
+++ b/keyboards/xd75/keymaps/skewwhiffy/rules.mk
@@ -13,6 +13,3 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/xd75/keymaps/tdl-jturner/rules.mk b/keyboards/xd75/keymaps/tdl-jturner/rules.mk
index 186b452fc63..996d77045e2 100644
--- a/keyboards/xd75/keymaps/tdl-jturner/rules.mk
+++ b/keyboards/xd75/keymaps/tdl-jturner/rules.mk
@@ -13,11 +13,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
TAP_DANCE_ENABLE = yes
MOUSEKEY_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+
diff --git a/keyboards/ymd75/rules.mk b/keyboards/ymd75/rules.mk
index c9baf131672..9697a76f1e8 100644
--- a/keyboards/ymd75/rules.mk
+++ b/keyboards/ymd75/rules.mk
@@ -57,10 +57,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC = matrix.c i2c.c backlight.c
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# programming options
PROGRAM_CMD = ./keyboards/ps2avrGB/program $(TARGET).hex
diff --git a/keyboards/zen/keymaps/default/rules.mk b/keyboards/zen/keymaps/default/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/zen/keymaps/default/rules.mk
+++ b/keyboards/zen/keymaps/default/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/zen/keymaps/jwlawrence/rules.mk b/keyboards/zen/keymaps/jwlawrence/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/zen/keymaps/jwlawrence/rules.mk
+++ b/keyboards/zen/keymaps/jwlawrence/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/zen/keymaps/xyverz/rules.mk b/keyboards/zen/keymaps/xyverz/rules.mk
index 22b6ec47662..73142a16803 100644
--- a/keyboards/zen/keymaps/xyverz/rules.mk
+++ b/keyboards/zen/keymaps/xyverz/rules.mk
@@ -1,6 +1,3 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/keyboards/zinc/keymaps/monks/rules.mk b/keyboards/zinc/keymaps/monks/rules.mk
index a5335def871..eeabc004c37 100644
--- a/keyboards/zinc/keymaps/monks/rules.mk
+++ b/keyboards/zinc/keymaps/monks/rules.mk
@@ -90,11 +90,8 @@ endif
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
# $(info )
+
diff --git a/layouts/community/ergodox/berfarah/rules.mk b/layouts/community/ergodox/berfarah/rules.mk
index a8732503729..abd95b50087 100644
--- a/layouts/community/ergodox/berfarah/rules.mk
+++ b/layouts/community/ergodox/berfarah/rules.mk
@@ -14,6 +14,3 @@ ifeq (${FORCE_NKRO},yes)
OPT_DEFS += -DFORCE_NKRO
endif
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/layouts/community/ortho_4x12/grahampheath/rules.mk b/layouts/community/ortho_4x12/grahampheath/rules.mk
index 457a3d01d4a..e69de29bb2d 100644
--- a/layouts/community/ortho_4x12/grahampheath/rules.mk
+++ b/layouts/community/ortho_4x12/grahampheath/rules.mk
@@ -1,3 +0,0 @@
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/layouts/community/ortho_4x12/xyverz/rules.mk b/layouts/community/ortho_4x12/xyverz/rules.mk
index c181e11072c..f52fe17540e 100644
--- a/layouts/community/ortho_4x12/xyverz/rules.mk
+++ b/layouts/community/ortho_4x12/xyverz/rules.mk
@@ -9,6 +9,3 @@ else
RGBLIGHT_ENABLE = yes
endif
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
diff --git a/users/losinggeneration/rules.mk b/users/losinggeneration/rules.mk
index 75277116b24..295367fbcab 100644
--- a/users/losinggeneration/rules.mk
+++ b/users/losinggeneration/rules.mk
@@ -11,6 +11,3 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
TAP_DANCE_ENABLE = yes # Enable tap dancing
#UNICODE_ENABLE = no # Unicode
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif
From aff5c49ee950be410cc82ada0acc375dc89007f3 Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Fri, 4 Jan 2019 15:27:21 -0800
Subject: [PATCH 03/29] Layouts: add 65_iso (#4778)
---
layouts/default/65_iso/default_65_iso/keymap.c | 12 ++++++++++++
layouts/default/65_iso/layout.json | 5 +++++
layouts/default/65_iso/readme.md | 5 +++++
3 files changed, 22 insertions(+)
create mode 100644 layouts/default/65_iso/default_65_iso/keymap.c
create mode 100644 layouts/default/65_iso/layout.json
create mode 100644 layouts/default/65_iso/readme.md
diff --git a/layouts/default/65_iso/default_65_iso/keymap.c b/layouts/default/65_iso/default_65_iso/keymap.c
new file mode 100644
index 00000000000..085304a87f7
--- /dev/null
+++ b/layouts/default/65_iso/default_65_iso/keymap.c
@@ -0,0 +1,12 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* layer 0: qwerty */
+ [0] = LAYOUT_65_iso(\
+ 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_HOME, \
+ 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_PGUP, \
+ 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_NUHS, KC_ENT, KC_PGDN, \
+ 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_END, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ )
+};
diff --git a/layouts/default/65_iso/layout.json b/layouts/default/65_iso/layout.json
new file mode 100644
index 00000000000..6496e93634d
--- /dev/null
+++ b/layouts/default/65_iso/layout.json
@@ -0,0 +1,5 @@
+["","","","","","","","","","","","","",{w:2},"",""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",""],
+[{w:1.75},"","","","","","","","","","","","","",{x:1.25},""],
+[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","","",""]
diff --git a/layouts/default/65_iso/readme.md b/layouts/default/65_iso/readme.md
new file mode 100644
index 00000000000..d23c157d0f2
--- /dev/null
+++ b/layouts/default/65_iso/readme.md
@@ -0,0 +1,5 @@
+# 65_iso
+
+ LAYOUT_65_iso
+
+This is the 65% layout made popular by boards such as the [Input Club Whitefox](https://github.com/qmk/qmk_firmware/tree/master/keyboards/whitefox) and [RAMA M65-A](https://github.com/qmk/qmk_firmware/tree/master/keyboards/jc65), in ISO.
From 3e45bc775e5c95fc206097564112d47002da3d5d Mon Sep 17 00:00:00 2001
From: Jordi Pakey-Rodriguez <0xdec@users.noreply.github.com>
Date: Fri, 4 Jan 2019 23:28:01 +0000
Subject: [PATCH 04/29] Add novelpad 0xdec keymap (#4779)
---
keyboards/novelpad/{readme.md => README.md} | 0
keyboards/novelpad/keymaps/0xdec/keymap.c | 59 +++++++++++++++++++++
2 files changed, 59 insertions(+)
rename keyboards/novelpad/{readme.md => README.md} (100%)
create mode 100755 keyboards/novelpad/keymaps/0xdec/keymap.c
diff --git a/keyboards/novelpad/readme.md b/keyboards/novelpad/README.md
similarity index 100%
rename from keyboards/novelpad/readme.md
rename to keyboards/novelpad/README.md
diff --git a/keyboards/novelpad/keymaps/0xdec/keymap.c b/keyboards/novelpad/keymaps/0xdec/keymap.c
new file mode 100755
index 00000000000..429e6c5b3f8
--- /dev/null
+++ b/keyboards/novelpad/keymaps/0xdec/keymap.c
@@ -0,0 +1,59 @@
+/*
+Copyright 2018 Jordi Pakey-Rodriguez
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ LT(1, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_P1, KC_P2, KC_P3, KC_TAB,
+ KC_PCMM, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT(
+ _______, RESET, BL_STEP, RGB_TOG,
+ RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD,
+ RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD,
+ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,
+ RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G
+ ),
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ return MACRO_NONE;
+}
+
+void matrix_init_user(void) {}
+
+void matrix_scan_user(void) {}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {}
+ return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+ if (usb_led & (1 << USB_LED_NUM_LOCK)) {
+ // Illuminate the LED under the Num Lock key
+ rgblight_sethsv_at(0, 0, 127, 1);
+ } else {
+ rgblight_sethsv_at(0, 0, 0, 1);
+ }
+}
From 3527efcbd21231cf9e7bf7a8de0fa02aa177a957 Mon Sep 17 00:00:00 2001
From: flehrad <20124416+flehrad@users.noreply.github.com>
Date: Sat, 5 Jan 2019 16:38:22 +1100
Subject: [PATCH 05/29] Adding keyboards/handwire/numbrero (#4773)
* add snagpad
* Update keyboards/snagpad/kb.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Rename kb.c to snagpad.c
* Update and rename kb.h to snagpad.h
* Update snagpad.h
* Update keymap.c
* Update config.h
* Update config.h
* Update rules.mk
* Update README.md
* Add files via upload
* Update info.json
* Update keymap.c
* Update snagpad.h
* Delete snagpad_numpad.json
* Delete snagpad_ortho.json
* Update README.md
* Update keyboards/snagpad/info.json
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* add tradestation
* --all
* Did something weird messing with git -_- hopefully fixed
* Update keyboards/tradestation/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/tradestation/config.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/tradestation/config.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/tradestation/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update snagpad.h
* Update rules.mk
* Update keymap.c
* fixed merge conflict, updated to LAYOUT_numpad_5x4
* relocated to handwire, updated naming, added layouts to rules.mk
* Update keyboards/handwired/tradestation/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Rename LICENSE to license
* Rename README.md to readme.md
* Rename LICENSE to license
* Rename README.md to readme.md
* Update info.json
* Update keymap.c
* Update info.json
* Adding Numbrero QMK to Handwire Repository
* Update config.h
* Update readme.md
* Update keyboards/handwired/numbrero/numbrero.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keymap.c
* Update keyboards/handwired/numbrero/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
---
keyboards/handwired/numbrero/config.h | 51 +++++
keyboards/handwired/numbrero/info.json | 15 ++
.../numbrero/keymaps/default/keymap.c | 30 +++
keyboards/handwired/numbrero/license | 201 ++++++++++++++++++
keyboards/handwired/numbrero/numbrero.c | 1 +
keyboards/handwired/numbrero/numbrero.h | 30 +++
keyboards/handwired/numbrero/readme.md | 15 ++
keyboards/handwired/numbrero/rules.mk | 59 +++++
keyboards/snagpad/info.json | 9 +-
9 files changed, 407 insertions(+), 4 deletions(-)
create mode 100644 keyboards/handwired/numbrero/config.h
create mode 100644 keyboards/handwired/numbrero/info.json
create mode 100644 keyboards/handwired/numbrero/keymaps/default/keymap.c
create mode 100644 keyboards/handwired/numbrero/license
create mode 100644 keyboards/handwired/numbrero/numbrero.c
create mode 100644 keyboards/handwired/numbrero/numbrero.h
create mode 100644 keyboards/handwired/numbrero/readme.md
create mode 100644 keyboards/handwired/numbrero/rules.mk
diff --git a/keyboards/handwired/numbrero/config.h b/keyboards/handwired/numbrero/config.h
new file mode 100644
index 00000000000..cbcb1d82613
--- /dev/null
+++ b/keyboards/handwired/numbrero/config.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Flehrad
+#define PRODUCT Numbrero
+#define DESCRIPTION Pro Micro-powered Reversible L/H Numpad with Extra Macro Keys
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 5
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F6, B5, B4, E6, F7 }
+#define MATRIX_COL_PINS { D1, D0, D4, F5, F4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 5
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/handwired/numbrero/info.json b/keyboards/handwired/numbrero/info.json
new file mode 100644
index 00000000000..85c4b48275e
--- /dev/null
+++ b/keyboards/handwired/numbrero/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "Numbrero",
+ "url": "",
+ "maintainer": "Flehrad",
+ "width": 5,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_numbrero_numpad": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1, "h":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "h":2}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4, "w":2}, {"x":3, "y":4}]
+ },
+ "LAYOUT_numbrero_ortho": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/handwired/numbrero/keymaps/default/keymap.c b/keyboards/handwired/numbrero/keymaps/default/keymap.c
new file mode 100644
index 00000000000..903ed8d88c5
--- /dev/null
+++ b/keyboards/handwired/numbrero/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT_numbrero_numpad(
+ KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TRNS, KC_P7, KC_P8, KC_P9,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_TRNS, KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT),
+
+ LAYOUT_numbrero_ortho(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+
+};
+
+void matrix_init_user(void) {
+}
+
+void matrix_scan_user(void) {
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
diff --git a/keyboards/handwired/numbrero/license b/keyboards/handwired/numbrero/license
new file mode 100644
index 00000000000..b09cd7856d5
--- /dev/null
+++ b/keyboards/handwired/numbrero/license
@@ -0,0 +1,201 @@
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/keyboards/handwired/numbrero/numbrero.c b/keyboards/handwired/numbrero/numbrero.c
new file mode 100644
index 00000000000..d3ec36904a4
--- /dev/null
+++ b/keyboards/handwired/numbrero/numbrero.c
@@ -0,0 +1 @@
+#include "numbrero.h"
diff --git a/keyboards/handwired/numbrero/numbrero.h b/keyboards/handwired/numbrero/numbrero.h
new file mode 100644
index 00000000000..d4aff8b8805
--- /dev/null
+++ b/keyboards/handwired/numbrero/numbrero.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_numbrero_numpad( \
+ K00, K01, K02, K03, K04, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, K14, \
+ K30, K31, K32, K33, \
+ K41, K43, K34 \
+) { \
+ { K00, K01, K02, K03, K04 }, \
+ { K10, K11, K12, K13, K14 }, \
+ { K20, K21, K22, K23, KC_NO }, \
+ { K30, K31, K32, K33, K34 }, \
+ { KC_NO, K41, KC_NO, K43, KC_NO } \
+}
+#define LAYOUT_numbrero_ortho(\
+ K00, K01, K02, K03, K04, \
+ K10, K11, K12, K13, K14, \
+ K20, K21, K22, K23, K24, \
+ K30, K31, K32, K33, K34, \
+ K41, K42, K43, K44 \
+){ \
+ { K00, K01, K02, K03, K04 }, \
+ { K10, K11, K12, K13, K14 }, \
+ { K20, K21, K22, K23, K24 }, \
+ { K30, K31, K32, K33, K34 }, \
+ { KC_NO, K41, K42, K43, K44 } \
+}
diff --git a/keyboards/handwired/numbrero/readme.md b/keyboards/handwired/numbrero/readme.md
new file mode 100644
index 00000000000..a69eeefd435
--- /dev/null
+++ b/keyboards/handwired/numbrero/readme.md
@@ -0,0 +1,15 @@
+# Numbrero
+
+No picture currently available.
+
+A Reversible Numpad (Left/Right handed) with extra macro keys.
+
+Keyboard Maintainer: [Flehrad](https://github.com/flehrad)
+Hardware Supported: Numbrero PCB.
+Hardware Availability: The Board Podcast Slack
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/numbrero/numbrero:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/numbrero/rules.mk b/keyboards/handwired/numbrero/rules.mk
new file mode 100644
index 00000000000..bda6c866e21
--- /dev/null
+++ b/keyboards/handwired/numbrero/rules.mk
@@ -0,0 +1,59 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+#Bootloder
+#Pro Micro = caterina
+BOOTLOADER = caterina
+
+# Boot Section Size in *bytes*
+#OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = no
diff --git a/keyboards/snagpad/info.json b/keyboards/snagpad/info.json
index ffaa5c0a74e..f6b19ee81ee 100644
--- a/keyboards/snagpad/info.json
+++ b/keyboards/snagpad/info.json
@@ -6,11 +6,12 @@
"width": 4,
"height": 5,
"layouts": {
- "LAYOUT_ortho_5x4": {
+
+ "LAYOUT_ortho_5x4": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}]
- },
+ },
"LAYOUT_numpad_5x4": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":1, "h":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}, {"x":3, "y":3, "h":2}]
- }
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1, "h":2}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "h":2}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}]
+ }
}
}
From d6cc90d0277cf084ab16215190ad64d24164f1bc Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Fri, 4 Jan 2019 21:47:13 -0800
Subject: [PATCH 06/29] S65-X and S65-Plus updates and refactoring (#4780)
* S65-X: remove S65-Plus support
The original QMK codebase for the Sentraq S65-X actually supported both the S65-X and the S65-Plus. In the interim, the S65-Plus has been broken off into its own directory.
This commit removes support for the S65-Plus from the `keyboards/s65_x/` directory, as that code has been superseded by the code in the S65-Plus directory (`keyboards/s65_plus/`).
- deleted S65-Plus layout macros from s65_x.h and info.json
- deleted s65plus keymap directory
- removed references to the unused column pins
- removed the two unused columns for the switch matrices
- renamed switch K300 in LAYOUT_ansi to K301 (reflects matrix position)
- renamed switch K214 in LAYOUT_iso to K114 (reflects matrix position)
* S65-X: keymap refactor
- all keymaps now use #include QMK_KEYBOARD_H
- default and iso keymaps refactored for readability
- deleted redundant KC_TRNS and KC_NO keycode definitions from smt keymap
* S65-X: readme update
- updated Hardware Availability link
- updated Docs links
* S65-Plus: add LAYOUT_iso data
Adds LAYOUT_iso macro to s65_plus.h and info.json, and an ISO layout version of the default keymap.
* S65-Plus: refactor default keymap
- refactor for alignment/readability
- removed fn_actions code block
- add empty process_record_user block
* S65-Plus: readme update
- Hardware Availability link is now a hyperlink
- updated Docs links
* S65-X: enable 65_ansi and 65_iso community layouts
Thi commit allows the Sentraq S65-X to use the 65_ansi and 65_iso community layouts.
- LAYOUT_ansi renamed to LAYOUT_65_ansi
- LAYOUT_iso renamed to LAYOUT_65_iso
- added LAYOUTS rule to rules.mk
---
keyboards/s65_plus/info.json | 86 ++++++++++-
keyboards/s65_plus/keymaps/default/keymap.c | 71 ++++-----
keyboards/s65_plus/keymaps/iso/keymap.c | 56 +++++++
keyboards/s65_plus/keymaps/iso/readme.md | 3 +
keyboards/s65_plus/readme.md | 4 +-
keyboards/s65_plus/s65_plus.h | 15 +-
keyboards/s65_x/config.h | 4 +-
keyboards/s65_x/info.json | 157 ++++++++++++++++++--
keyboards/s65_x/keymaps/default/keymap.c | 155 ++++++++++---------
keyboards/s65_x/keymaps/iso/keymap.c | 155 ++++++++++---------
keyboards/s65_x/keymaps/kelorean/keymap.c | 14 +-
keyboards/s65_x/keymaps/nall/keymap.c | 10 +-
keyboards/s65_x/keymaps/s65plus/keymap.c | 30 ----
keyboards/s65_x/keymaps/s65plus/readme.md | 5 -
keyboards/s65_x/keymaps/smt/keymap.c | 16 +-
keyboards/s65_x/readme.md | 4 +-
keyboards/s65_x/rules.mk | 2 +
keyboards/s65_x/s65_x.h | 90 ++++++-----
18 files changed, 561 insertions(+), 316 deletions(-)
create mode 100644 keyboards/s65_plus/keymaps/iso/keymap.c
create mode 100644 keyboards/s65_plus/keymaps/iso/readme.md
delete mode 100644 keyboards/s65_x/keymaps/s65plus/keymap.c
delete mode 100644 keyboards/s65_x/keymaps/s65plus/readme.md
diff --git a/keyboards/s65_plus/info.json b/keyboards/s65_plus/info.json
index 14c5b08d911..1b17ddb53da 100644
--- a/keyboards/s65_plus/info.json
+++ b/keyboards/s65_plus/info.json
@@ -6,6 +6,7 @@
"height": 5,
"layouts": {
"LAYOUT_ansi": {
+ "key_count": 78,
"layout": [
{"label":"F1", "x":0, "y":0},
{"label":"F2", "x":1, "y":0},
@@ -86,7 +87,90 @@
{"label":"DOWN", "x":16, "y":4},
{"label":"RIGHT", "x":17, "y":4}
]
+ },
+ "LAYOUT_iso": {
+ "key_count": 79,
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"ESC", "x":2, "y":0},
+ {"label":"1", "x":3, "y":0},
+ {"label":"2", "x":4, "y":0},
+ {"label":"3", "x":5, "y":0},
+ {"label":"4", "x":6, "y":0},
+ {"label":"5", "x":7, "y":0},
+ {"label":"6", "x":8, "y":0},
+ {"label":"7", "x":9, "y":0},
+ {"label":"8", "x":10, "y":0},
+ {"label":"9", "x":11, "y":0},
+ {"label":"0", "x":12, "y":0},
+ {"label":"MINUS", "x":13, "y":0},
+ {"label":"EQUAL", "x":14, "y":0},
+ {"label":"BACKSPACE", "x":15, "y":0, "w":2},
+ {"label":"DELETE", "x":17, "y":0},
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"TAB", "x":2, "y":1, "w":1.5},
+ {"label":"Q", "x":3.5, "y":1},
+ {"label":"W", "x":4.5, "y":1},
+ {"label":"E", "x":5.5, "y":1},
+ {"label":"R", "x":6.5, "y":1},
+ {"label":"T", "x":7.5, "y":1},
+ {"label":"Y", "x":8.5, "y":1},
+ {"label":"U", "x":9.5, "y":1},
+ {"label":"I", "x":10.5, "y":1},
+ {"label":"O", "x":11.5, "y":1},
+ {"label":"P", "x":12.5, "y":1},
+ {"label":"LBRACKET", "x":13.5, "y":1},
+ {"label":"RBRACKET", "x":14.5, "y":1},
+ {"label":"PAGEUP", "x":17, "y":1},
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"CAPSLOCK", "x":2, "y":2, "w":1.75},
+ {"label":"A", "x":3.75, "y":2},
+ {"label":"S", "x":4.75, "y":2},
+ {"label":"D", "x":5.75, "y":2},
+ {"label":"F", "x":6.75, "y":2},
+ {"label":"G", "x":7.75, "y":2},
+ {"label":"H", "x":8.75, "y":2},
+ {"label":"J", "x":9.75, "y":2},
+ {"label":"K", "x":10.75, "y":2},
+ {"label":"L", "x":11.75, "y":2},
+ {"label":"SEMICOLON", "x":12.75, "y":2},
+ {"label":"QUOTE", "x":13.75, "y":2},
+ {"label":"ISOHASH", "x":14.75, "y":2},
+ {"label":"ENTER", "x":15.75, "y":1, "w":1.25, "h":2},
+ {"label":"PAGEDOWN", "x":17, "y":2},
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"LSHIFT", "x":2, "y":3, "w":1.25},
+ {"label":"ISOBACKSLASH", "x":3.25, "y":3},
+ {"label":"Z", "x":4.25, "y":3},
+ {"label":"X", "x":5.25, "y":3},
+ {"label":"C", "x":6.25, "y":3},
+ {"label":"V", "x":7.25, "y":3},
+ {"label":"B", "x":8.25, "y":3},
+ {"label":"N", "x":9.25, "y":3},
+ {"label":"M", "x":10.25, "y":3},
+ {"label":"COMMA", "x":11.25, "y":3},
+ {"label":"PERIOD", "x":12.25, "y":3},
+ {"label":"SLASH", "x":13.25, "y":3},
+ {"label":"RSHIFT", "x":14.25, "y":3, "w":1.75},
+ {"label":"UP", "x":16, "y":3},
+ {"label":"END", "x":17, "y":3},
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"LCTRL", "x":2, "y":4, "w":1.25},
+ {"label":"LGUI", "x":3.25, "y":4, "w":1.25},
+ {"label":"LALT", "x":4.5, "y":4, "w":1.25},
+ {"label":"SPACE", "x":5.75, "y":4, "w":6.25},
+ {"label":"RALT", "x":12, "y":4},
+ {"label":"FN", "x":13, "y":4},
+ {"label":"RCTRL", "x":14, "y":4},
+ {"label":"LEFT", "x":15, "y":4},
+ {"label":"DOWN", "x":16, "y":4},
+ {"label":"RIGHT", "x":17, "y":4}
+ ]
}
}
}
-
diff --git a/keyboards/s65_plus/keymaps/default/keymap.c b/keyboards/s65_plus/keymaps/default/keymap.c
index 04f6926de14..bbeea6a8fbc 100644
--- a/keyboards/s65_plus/keymaps/default/keymap.c
+++ b/keyboards/s65_plus/keymaps/default/keymap.c
@@ -5,49 +5,52 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Main layer
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ F1 │ F2 │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│ DEL │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ F3 │ F4 │ TAB │▒▒▒▒▒│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PG_UP│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ F5 │ F6 │CAPSL│▒▒▒▒▒│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│PG_DN│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ F7 │ F8 │▒▒▒▒▒│LSHFT│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │ END │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ F9 │ F10 │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │RCTL │LEFT │DOWN │RIGHT│
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │F1 │F2 │Esc│1 !│2 "│3 £│4 $│5 %│6 ^│7 &│8 *│9 (│0 )│- _│= +│Bksp │Del│
+ * ├───┼───┼───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │F3 │F4 │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[ {│] }│\ | │End│
+ * ├───┼───┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │F5 │F6 │CapsLk│ A │ S │ D │ F │ G │ H │ J │ K │ L │; :│' "│Enter │PUp│
+ * ├───┼───┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │F7 │F8 │Shift │ Z │ X │ C │ V │ B │ N │ M │, <│. >│/ ?│Shift │Up │PDn│
+ * ├───┼───┼────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │F9 │F10│Ctrl│GUI │Alt │Space │Alt│Fn │Ctl│Lft│Dwn│Rgt│
+ * └───┴───┴────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
/* 0: ANSI qwerty */
[_BL] = LAYOUT_ansi(
- KC_F1, KC_F2, 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_BSPC, KC_DEL, \
- KC_F3, KC_F4, 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_PGUP, \
- KC_F5, KC_F6, 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_PGDN, \
- KC_F7, KC_F8, KC_LSFT, 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_END, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+ KC_F1, KC_F2, 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_BSPC, KC_DEL, \
+ KC_F3, KC_F4, 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_PGUP, \
+ KC_F5, KC_F6, 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_PGDN, \
+ KC_F7, KC_F8, KC_LSFT, 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_END, \
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
/* 1: LED layer
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ │ │RESET│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│BLTOG│BLSTP│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │▒▒▒▒▒│ │UGTOG│UGMOD│UGHUI│UGHUD│UGSAI│UGSAD│UGVAI│UGVAD│ │ │▒▒▒▒▒│ │VOLU │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │PREV │VOLD │NEXT │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ │ │RST│ │ │ │ │ │ │ │ │ │ │ │ │BLTog │BSt│
+ * ├───┼───┼───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │RTg│RMd│RH+│RH-│RS+│RS-│RV+│RV-│ │ │ │VUp│ │
+ * ├───┼───┼────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │Prv│VDn│Nxt│
+ * └───┴───┴────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
[_AL] = LAYOUT_ansi(
- KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT)
+ _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
+ )
};
-const uint16_t PROGMEM fn_actions[] = {
-};
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
diff --git a/keyboards/s65_plus/keymaps/iso/keymap.c b/keyboards/s65_plus/keymaps/iso/keymap.c
new file mode 100644
index 00000000000..2218d051fd0
--- /dev/null
+++ b/keyboards/s65_plus/keymaps/iso/keymap.c
@@ -0,0 +1,56 @@
+#include QMK_KEYBOARD_H
+
+#define _BL 0
+#define _AL 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: Main layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │F1 │F2 │Esc│1 !│2 "│3 £│4 $│5 %│6 ^│7 &│8 *│9 (│0 )│- _│= +│Bksp │Del│
+ * ├───┼───┼───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │F3 │F4 │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[ {│] }│Enter│End│
+ * ├───┼───├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │F5 │F6 │CapsLk│ A │ S │ D │ F │ G │ H │ J │ K │ L │; :│' @│# ~│ │PUp│
+ * ├───┼───┼────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │F7 │F8 │Sft │\ |│ Z │ X │ C │ V │ B │ N │ M │, <│. >│/ ?│Shift │Up │PDn│
+ * ├───┼───┼────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │F9 │F10│Ctrl│GUI │Alt │Space │Alt│Fn │Ctl│Lft│Dwn│Rgt│
+ * └───┴───┴────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+
+ /* 0: ISO qwerty */
+ [_BL] = LAYOUT_iso(
+ KC_F1, KC_F2, 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_BSPC, KC_DEL, \
+ KC_F3, KC_F4, 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_PGUP, \
+ KC_F5, KC_F6, 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_NUHS, KC_ENT, KC_PGDN, \
+ KC_F7, KC_F8, 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_END, \
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+
+
+ /* 1: LED layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ │ │RST│ │ │ │ │ │ │ │ │ │ │ │ │BLTog │BSt│
+ * ├───┼───┼───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │RTg│RMd│RH+│RH-│RS+│RS-│RV+│RV-│ │ │ │VUp│ │
+ * ├───┼───┼────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │Prv│VDn│Nxt│
+ * └───┴───┴────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+
+ [_AL] = LAYOUT_iso(
+ _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
diff --git a/keyboards/s65_plus/keymaps/iso/readme.md b/keyboards/s65_plus/keymaps/iso/readme.md
new file mode 100644
index 00000000000..de1d9adf803
--- /dev/null
+++ b/keyboards/s65_plus/keymaps/iso/readme.md
@@ -0,0 +1,3 @@
+# iso
+
+An ISO layout version of the default keymap.
diff --git a/keyboards/s65_plus/readme.md b/keyboards/s65_plus/readme.md
index 426a6612d81..b1ee865bfc8 100644
--- a/keyboards/s65_plus/readme.md
+++ b/keyboards/s65_plus/readme.md
@@ -5,10 +5,10 @@ DIY 65% keyboard from Sentraq.
Keyboard Maintainer: QMK Community
Hardware Supported: S65-PLUS PCB
-Hardware Availability: https://sentraq.com/collections/kits/products/s65-plus-diy-keyboard-kit
+Hardware Availability: [Sentraq](https://sentraq.com/collections/kits/products/s65-plus-diy-keyboard-kit)
Make example for this keyboard (after setting up your build environment):
make s65_plus:default
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/s65_plus/s65_plus.h b/keyboards/s65_plus/s65_plus.h
index 10755710857..95d06122e06 100644
--- a/keyboards/s65_plus/s65_plus.h
+++ b/keyboards/s65_plus/s65_plus.h
@@ -16,6 +16,19 @@
{ K400, K401, K402, K403, K404, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K412, K413, K414, K415, K416, K417 } \
}
+#define LAYOUT_iso( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K016, K017, \
+ K100, K101, K102, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K117, \
+ K200, K201, K202, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K116, K217, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, \
+ K400, K401, K402, K403, K404, K408, K412, K413, K414, K415, K416, K417 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, KC_NO, K016, K017 }, \
+ { K100, K101, K102, KC_NO, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117 }, \
+ { K200, K201, K202, KC_NO, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, KC_NO, K217 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317 }, \
+ { K400, K401, K402, K403, K404, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K412, K413, K414, K415, K416, K417 } \
+}
+
void matrix_init_user(void);
void matrix_scan_user(void);
-
diff --git a/keyboards/s65_x/config.h b/keyboards/s65_x/config.h
index 367efc526c6..aed55632ab4 100644
--- a/keyboards/s65_x/config.h
+++ b/keyboards/s65_x/config.h
@@ -13,11 +13,11 @@
/* key matrix size */
#define MATRIX_ROWS 5
-#define MATRIX_COLS 18
+#define MATRIX_COLS 16
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B4 }
-#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, E6, B0, B1, D5, B2, B3, D0, D1, D2, D4, D6, D7, F7 }
+#define MATRIX_COL_PINS { F4, F1, F0, E6, B0, B1, D5, B2, B3, D0, D1, D2, D4, D6, D7, F7 }
#define UNUSED_PINS
/* number of backlight levels */
diff --git a/keyboards/s65_x/info.json b/keyboards/s65_x/info.json
index 74c805e2454..9aeb7eb7ded 100644
--- a/keyboards/s65_x/info.json
+++ b/keyboards/s65_x/info.json
@@ -2,24 +2,155 @@
"keyboard_name": "S65-X PCB",
"url": "",
"maintainer": "qmk",
- "width": 18,
+ "width": 16,
"height": 5,
"layouts": {
- "LAYOUT_ansi": {
+ "LAYOUT_65_ansi": {
"key_count": 68,
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Delete", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Delete", "x":15, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"\\", "x":13.5, "y":1, "w":1.5},
+ {"label":"Page Up", "x":15, "y":1},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Page Down", "x":15, "y":2},
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Up", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Fn", "x":11, "y":4},
+ {"label":"Ctrl", "x":12, "y":4},
+ {"label":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
},
- "LAYOUT_iso": {
+ "LAYOUT_65_iso": {
"key_count": 69,
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Delete", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
- },
- "LAYOUT_plus_ansi": {
- "key_count": 78,
- "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2, "y":0}, {"label":"!", "x":3, "y":0}, {"label":"@", "x":4, "y":0}, {"label":"#", "x":5, "y":0}, {"label":"$", "x":6, "y":0}, {"label":"%", "x":7, "y":0}, {"label":"^", "x":8, "y":0}, {"label":"&", "x":9, "y":0}, {"label":"*", "x":10, "y":0}, {"label":"(", "x":11, "y":0}, {"label":")", "x":12, "y":0}, {"label":"_", "x":13, "y":0}, {"label":"+", "x":14, "y":0}, {"label":"Backspace", "x":15, "y":0, "w":2}, {"label":"Delete", "x":17, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2, "y":1, "w":1.5}, {"label":"Q", "x":3.5, "y":1}, {"label":"W", "x":4.5, "y":1}, {"label":"E", "x":5.5, "y":1}, {"label":"R", "x":6.5, "y":1}, {"label":"T", "x":7.5, "y":1}, {"label":"Y", "x":8.5, "y":1}, {"label":"U", "x":9.5, "y":1}, {"label":"I", "x":10.5, "y":1}, {"label":"O", "x":11.5, "y":1}, {"label":"P", "x":12.5, "y":1}, {"label":"{", "x":13.5, "y":1}, {"label":"}", "x":14.5, "y":1}, {"label":"|", "x":15.5, "y":1, "w":1.5}, {"label":"PgUp", "x":17, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2, "y":2, "w":1.75}, {"label":"A", "x":3.75, "y":2}, {"label":"S", "x":4.75, "y":2}, {"label":"D", "x":5.75, "y":2}, {"label":"F", "x":6.75, "y":2}, {"label":"G", "x":7.75, "y":2}, {"label":"H", "x":8.75, "y":2}, {"label":"J", "x":9.75, "y":2}, {"label":"K", "x":10.75, "y":2}, {"label":"L", "x":11.75, "y":2}, {"label":":", "x":12.75, "y":2}, {"label":"\"", "x":13.75, "y":2}, {"label":"Enter", "x":14.75, "y":2, "w":2.25}, {"label":"PgDn", "x":17, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2, "y":3, "w":2.25}, {"label":"Z", "x":4.25, "y":3}, {"label":"X", "x":5.25, "y":3}, {"label":"C", "x":6.25, "y":3}, {"label":"V", "x":7.25, "y":3}, {"label":"B", "x":8.25, "y":3}, {"label":"N", "x":9.25, "y":3}, {"label":"M", "x":10.25, "y":3}, {"label":"<", "x":11.25, "y":3}, {"label":">", "x":12.25, "y":3}, {"label":"?", "x":13.25, "y":3}, {"label":"Shift", "x":14.25, "y":3, "w":1.75}, {"label":"\u2191", "x":16, "y":3}, {"label":"End", "x":17, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2, "y":4, "w":1.25}, {"label":"Win", "x":3.25, "y":4, "w":1.25}, {"label":"Alt", "x":4.5, "y":4, "w":1.25}, {"x":5.75, "y":4, "w":6.25}, {"label":"Alt", "x":12, "y":4}, {"label":"Fn", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}, {"label":"\u2190", "x":15, "y":4}, {"label":"\u2193", "x":16, "y":4}, {"label":"\u2192", "x":17, "y":4}]
- },
- "LAYOUT_plus_iso": {
- "key_count": 79,
- "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2, "y":0}, {"label":"!", "x":3, "y":0}, {"label":"\"", "x":4, "y":0}, {"label":"\u00a3", "x":5, "y":0}, {"label":"$", "x":6, "y":0}, {"label":"%", "x":7, "y":0}, {"label":"^", "x":8, "y":0}, {"label":"&", "x":9, "y":0}, {"label":"*", "x":10, "y":0}, {"label":"(", "x":11, "y":0}, {"label":")", "x":12, "y":0}, {"label":"_", "x":13, "y":0}, {"label":"+", "x":14, "y":0}, {"label":"Backspace", "x":15, "y":0, "w":2}, {"label":"Delete", "x":17, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2, "y":1, "w":1.5}, {"label":"Q", "x":3.5, "y":1}, {"label":"W", "x":4.5, "y":1}, {"label":"E", "x":5.5, "y":1}, {"label":"R", "x":6.5, "y":1}, {"label":"T", "x":7.5, "y":1}, {"label":"Y", "x":8.5, "y":1}, {"label":"U", "x":9.5, "y":1}, {"label":"I", "x":10.5, "y":1}, {"label":"O", "x":11.5, "y":1}, {"label":"P", "x":12.5, "y":1}, {"label":"{", "x":13.5, "y":1}, {"label":"}", "x":14.5, "y":1}, {"label":"PgUp", "x":17, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2, "y":2, "w":1.75}, {"label":"A", "x":3.75, "y":2}, {"label":"S", "x":4.75, "y":2}, {"label":"D", "x":5.75, "y":2}, {"label":"F", "x":6.75, "y":2}, {"label":"G", "x":7.75, "y":2}, {"label":"H", "x":8.75, "y":2}, {"label":"J", "x":9.75, "y":2}, {"label":"K", "x":10.75, "y":2}, {"label":"L", "x":11.75, "y":2}, {"label":":", "x":12.75, "y":2}, {"label":"@", "x":13.75, "y":2}, {"label":"~", "x":14.75, "y":2}, {"label":"Enter", "x":15.75, "y":1, "w":1.25, "h":2}, {"label":"PgDn", "x":17, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2, "y":3, "w":1.25}, {"label":"|", "x":3.25, "y":3}, {"label":"Z", "x":4.25, "y":3}, {"label":"X", "x":5.25, "y":3}, {"label":"C", "x":6.25, "y":3}, {"label":"V", "x":7.25, "y":3}, {"label":"B", "x":8.25, "y":3}, {"label":"N", "x":9.25, "y":3}, {"label":"M", "x":10.25, "y":3}, {"label":"<", "x":11.25, "y":3}, {"label":">", "x":12.25, "y":3}, {"label":"?", "x":13.25, "y":3}, {"label":"Shift", "x":14.25, "y":3, "w":1.75}, {"label":"\u2191", "x":16, "y":3}, {"label":"End", "x":17, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2, "y":4, "w":1.25}, {"label":"Win", "x":3.25, "y":4, "w":1.25}, {"label":"Alt", "x":4.5, "y":4, "w":1.25}, {"x":5.75, "y":4, "w":6.25}, {"label":"AltGr", "x":12, "y":4}, {"label":"Fn", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}, {"label":"\u2190", "x":15, "y":4}, {"label":"\u2193", "x":16, "y":4}, {"label":"\u2192", "x":17, "y":4}]
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Delete", "x":15, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"Page Up", "x":15, "y":1},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"#", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15, "y":2},
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"ISO \\", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Up", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"AltGr", "x":10, "y":4},
+ {"label":"Fn", "x":11, "y":4},
+ {"label":"Ctrl", "x":12, "y":4},
+ {"label":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
}
}
}
diff --git a/keyboards/s65_x/keymaps/default/keymap.c b/keyboards/s65_x/keymaps/default/keymap.c
index 3d0b9d72d74..a2fd12ed60f 100644
--- a/keyboards/s65_x/keymaps/default/keymap.c
+++ b/keyboards/s65_x/keymaps/default/keymap.c
@@ -1,103 +1,102 @@
-#include "s65_x.h"
+#include QMK_KEYBOARD_H
#define _BL 0
#define _AL 1
#define _FL 2
#define _UL 3
+#define FL_CAPS LT(_FL, KC_CAPS) // Tap to toggle caps lock and hold to activate function layer
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Main layer, swapped alt and GUI for Mac
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │█████│END │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │▒▒▒▒▒│ENTER│█████│PG_UP│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │LSHFT│▒▒▒▒▒│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │LCTRL│L_ALT│L_GUI│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │LEFT │DOWN │RIGHT│
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │GE │1 !│2 @│3 #│4 $│5 %│6 ^│7 &│8 *│9 (│0 )│- _│= +│Bksp │Del│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[ {│] }│\ | │End│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │; :│' "│Enter │PUp│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │Shift │ Z │ X │ C │ V │ B │ N │ M │, <│. >│/ ?│Shift │Up │PDn│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│Alt │GUI │Space │Alt│Fn │Ctl│Lft│Dwn│Rgt│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
/* 0: ANSI qwerty */
- [_BL] = LAYOUT_ansi(
- KC_GESC, 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_DEL, \
- 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_END, \
- F(2), 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_PGUP, \
- KC_LSFT, 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_PGDN, \
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_BL] = LAYOUT_65_ansi(
+ KC_GESC, 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_DEL, \
+ 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_END, \
+ FL_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_PGUP, \
+ KC_LSFT, 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_PGDN, \
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
/* 1: Locking arrow keys to WASD for when you need dedicated arrow keys
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │Left │Down │Right│ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │▒▒▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │Up │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │Lft│Dwn│Rgt│ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
- [_AL] = LAYOUT_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_AL] = LAYOUT_65_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+
/* 2: Fn layer
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │▒▒▒▒▒│_UL │ │ │ │ │ │ │ │Home │End │▒▒▒▒▒│ │Vol+ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │` ~│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │_AL│Up │ │ │ │ │ │PUp│PDn│PSc│SLk│Pau│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │Lft│Dwn│Rgt│ │ │Lft│Dwn│Up │Rgt│ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │_UL│ │ │ │ │ │ │Hm │End│ │ │VUp│ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │Mut│VDn│Ply│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
- [_FL] = LAYOUT_ansi(
- KC_GRAVE, 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_TRNS, KC_TRNS, \
- KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY),
+ [_FL] = LAYOUT_65_ansi(
+ 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, _______, _______, \
+ _______, TG(_AL), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, \
+ _______, TG(_UL), _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, KC_VOLU, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY \
+ ),
+
/* 3: Locking layer for controlling the underglow
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │BL On│BL St│ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ On │Mode │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │▒▒▒▒▒│ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │BTg│BSt│ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │RTg│RMd│ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │RH+│RH-│RS+│RS-│RV+│RV-│ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
- [_UL] = LAYOUT_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_UL] = LAYOUT_65_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
};
-
-
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
- [1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
- [2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
- [3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
-};
-
diff --git a/keyboards/s65_x/keymaps/iso/keymap.c b/keyboards/s65_x/keymaps/iso/keymap.c
index 9e888d9a87b..f5a0a86306f 100644
--- a/keyboards/s65_x/keymaps/iso/keymap.c
+++ b/keyboards/s65_x/keymaps/iso/keymap.c
@@ -1,103 +1,102 @@
-#include "s65_x.h"
+#include QMK_KEYBOARD_H
#define _BL 0
#define _AL 1
#define _FL 2
#define _UL 3
+#define FL_CAPS LT(_FL, KC_CAPS) // Tap to toggle caps lock and hold to activate function layer
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Main layer, swapped alt and GUI for Mac
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │▒▒▒▒▒│BKSPC│DEL │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │▒▒▒▒▒│▒▒▒▒▒│END │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │CAPSL│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ ~ │▒▒▒▒▒│ENTER│PG_UP│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │LSHFT│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │▒▒▒▒▒│RSHFT│ UP │PG_DN│
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │LCTRL│L_GUI│L_ALT│█████│█████│█████│ SPC │█████│█████│█████│R_ALT│ FN0 │ APP │LEFT │DOWN │RIGHT│
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │GE │1 !│2 "│3 £│4 $│5 %│6 ^│7 &│8 *│9 (│0 )│- _│= +│Bksp │Del│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[ {│] }│Enter│End│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │; :│' @│# ~│ │PUp│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │Sft │\ |│ Z │ X │ C │ V │ B │ N │ M │, <│. >│/ ?│Shift │Up │PDn│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│GUI │Alt │Space │Alt│Fn │Ctl│Lft│Dwn│Rgt│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
/* 0: ISO qwerty */
- [_BL] = LAYOUT_iso(
- KC_GESC, 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_DEL, \
- 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_END, \
- F(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRAVE, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_BSLS, 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_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_BL] = LAYOUT_65_iso(
+ KC_GESC, 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_DEL, \
+ 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_END, \
+ FL_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, \
+ 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_PGDN, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
/* 1: Locking arrow keys to WASD for when you need dedicated arrow keys
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ Up │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │Left │Down │Right│ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │Up │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ │Lft│Dwn│Rgt│ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
- [_AL] = LAYOUT_iso(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_AL] = LAYOUT_65_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+
/* 2: Fn layer
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │GRAVE│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ _AL │ Up │ │ │ │ │ │PGUP │PGDWN│PRTSC│SCLCK│PAUSE│▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │Left │Down │Right│ │ │Left │Down │ Up │Right│ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │_UL │ │ │ │ │ │ │ │ Home│ End │▒▒▒▒▒│ │Vol+ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │Mute │Vol- │Play │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │` ~│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │_AL│Up │ │ │ │ │ │PUp│PDn│PSc│SLk│Pau│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ │Lft│Dwn│Rgt│ │ │Lft│Dwn│Up │Rgt│ │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │_UL│ │ │ │ │ │ │Hm │End│ │ │VUp│ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │Mut│VDn│Ply│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
- [_FL] = LAYOUT_iso(
- KC_GRAVE, 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_TRNS, KC_TRNS, \
- KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, F(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_MPLY),
+ [_FL] = LAYOUT_65_iso(
+ 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, _______, _______, \
+ _______, TG(_AL), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, \
+ _______, _______, TG(_UL), _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, KC_VOLU, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY \
+ ),
+
/* 3: Locking layer for controlling the underglow
- * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │BL On│BL St│ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ On │Mode │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│▒▒▒▒▒│ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │Hue+ │Hue- │Sat+ │Sat- │Val+ │Val- │ │ │ │▒▒▒▒▒│ │ │ │
- * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │█████│█████│█████│ │█████│█████│█████│ │ │ │ │ │ │
- * └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │BTg│BSt│ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │RTg│RMd│ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │RH+│RH-│RS+│RS-│RV+│RV-│ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
- [_UL] = LAYOUT_iso(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_UL] = LAYOUT_65_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
};
-
-
-const uint16_t PROGMEM fn_actions[] = {
- [0] = ACTION_LAYER_MOMENTARY(_FL), // Momentary Fn overlay
- [1] = ACTION_LAYER_TOGGLE(_AL), // Toggle Arrow Layer overlay
- [2] = ACTION_LAYER_TAP_KEY(_FL, KC_CAPS),// Tap to toggle caps lock and hold to activate function layer
- [3] = ACTION_LAYER_TOGGLE(_UL), // Toggle Underglow Layer overlay
-};
-
diff --git a/keyboards/s65_x/keymaps/kelorean/keymap.c b/keyboards/s65_x/keymaps/kelorean/keymap.c
index 696b664e0ca..7a0de8559d4 100644
--- a/keyboards/s65_x/keymaps/kelorean/keymap.c
+++ b/keyboards/s65_x/keymaps/kelorean/keymap.c
@@ -1,4 +1,4 @@
-#include "s65_x.h"
+#include QMK_KEYBOARD_H
#define _BL 0
#define _CM 1
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 0: ANSI qwerty */
- [_BL] = LAYOUT_ansi(
+ [_BL] = LAYOUT_65_ansi(
KC_GESC, 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_DEL, \
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_END, \
F(4), 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_PGUP, \
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 1: Colemak layer */
- [_CM] = LAYOUT_ansi(
+ [_CM] = LAYOUT_65_ansi(
KC_GESC, 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_DEL, \
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, KC_END, \
F(4), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGUP, \
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 2: Dvorak layer */
- [_DV] = LAYOUT_ansi(
+ [_DV] = LAYOUT_65_ansi(
KC_GESC, 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_BSPC, KC_DEL, \
KC_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_BSLS, KC_END, \
F(4), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGUP, \
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
/* 3: Locking arrow keys to WASD*/
- [_AL] = LAYOUT_ansi(
+ [_AL] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
- [_FL] = LAYOUT_ansi(
+ [_FL] = LAYOUT_65_ansi(
KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
_______, F(3), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, \
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, _______, \
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
- [_UL] = LAYOUT_ansi(
+ [_UL] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/s65_x/keymaps/nall/keymap.c b/keyboards/s65_x/keymaps/nall/keymap.c
index 9361d78ba71..a5daed006ab 100644
--- a/keyboards/s65_x/keymaps/nall/keymap.c
+++ b/keyboards/s65_x/keymaps/nall/keymap.c
@@ -1,4 +1,4 @@
-#include "s65_x.h"
+#include QMK_KEYBOARD_H
#define _BL 0
#define _AL 1
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 0: ANSI qwerty */
- [_BL] = LAYOUT_ansi(
+ [_BL] = LAYOUT_65_ansi(
KC_GESC,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_DEL, \
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_END, \
F(2), 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_PGUP, \
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
- [_AL] = LAYOUT_ansi(
+ [_AL] = LAYOUT_65_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
- [_FL] = LAYOUT_ansi(
+ [_FL] = LAYOUT_65_ansi(
KC_GRAVE, 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_TRNS, KC_TRNS, \
KC_TRNS, F(1), KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
- [_UL] = LAYOUT_ansi(
+ [_UL] = LAYOUT_65_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
diff --git a/keyboards/s65_x/keymaps/s65plus/keymap.c b/keyboards/s65_x/keymaps/s65plus/keymap.c
deleted file mode 100644
index 1f3ffa3abde..00000000000
--- a/keyboards/s65_x/keymaps/s65plus/keymap.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include QMK_KEYBOARD_H
-
-#define _BL 0
-#define _FL 1
-
-// readability
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* 0: ANSI qwerty */
- [_BL] = LAYOUT_plus_ansi( \
- KC_F1, KC_F2, 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_BSPC, KC_DEL, \
- KC_F3, KC_F4, 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_END, \
- KC_F5, KC_F6, 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_PGUP, \
- KC_F7, KC_F8, KC_LSFT, 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_PGDN, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
- ),
-
-
- [_FL] = LAYOUT_plus_ansi( \
- KC_F1, KC_F2, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, \
- KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_F7, KC_F8, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______, \
- KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
- ),
-
-};
diff --git a/keyboards/s65_x/keymaps/s65plus/readme.md b/keyboards/s65_x/keymaps/s65plus/readme.md
deleted file mode 100644
index f083fb8fd34..00000000000
--- a/keyboards/s65_x/keymaps/s65plus/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# S65-Plus default keymap
-
-This is the default keymap for the Sentraq S65-Plus.
-
-[S65-Plus default keymap](http://www.keyboard-layout-editor.com/##@@_a:6&f:9&w:9&d:true;&=S65-Plus%20default%20keymap&_w:9&d:true;&=%0A%0ABase%20layer;&@_a:4&f:3;&=F1&=F2&=Esc&=!%0A1&=/@%0A2&=#%0A3&=$%0A4&=%25%0A5&=%5E%0A6&=/&%0A7&=*%0A8&=(%0A9&=)%0A0&=/_%0A-&=+%0A/=&_w:2;&=Backspace&=Delete;&@=F3&=F4&_w:1.5;&=Tab&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&=%7B%0A%5B&=%7D%0A%5D&_w:1.5;&=%7C%0A%5C&=PgUp;&@=F5&=F6&_w:1.75;&=Caps%20Lock&=A&=S&=D&=F&=G&=H&=J&=K&=L&=/:%0A/;&=%22%0A%27&_w:2.25;&=Enter&=PgDn;&@=F7&=F8&_w:2.25;&=Shift&=Z&=X&=C&=V&=B&=N&=M&=%3C%0A,&=%3E%0A.&=?%0A//&_w:1.75;&=Shift&=%E2%86%91&=End;&@=F9&=F10&_w:1.25;&=Ctrl&_w:1.25;&=Win&_w:1.25;&=Alt&_a:7&w:6.25;&=&_a:4;&=Alt&=Fn&=Ctrl&=%E2%86%90&=%E2%86%93&=%E2%86%92;&@_x:9&a:6&f:9&w:9&d:true;&=%0A%0AFunction%20layer;&@_a:7&f:3;&=&=&_a:4;&=Reset&_a:7;&=&=&=&=&=&=&=&=&=&=&=&=&_a:4&w:2;&=Backlight%20Toggle&=Back-light%20Step;&@_a:7;&=&=&_w:1.5;&=&=&=&=&=&=&=&=&=&=&=&=&=&_w:1.5;&=&=;&@=&=&_w:1.75;&=&=&=&=&=&=&=&=&=&=&=&=&_w:2.25;&=&=;&@=&=&_w:2.25;&=&_a:4;&=RGB%20Tog-gle&=RGB%20Mode&=RGB%20Hue%20Inc&=RGB%20Hue%20Dec&=RGB%20Sat%20Inc&=RGB%20Sat%20Dec&=RGB%20Value%20Inc&=RGB%20Value%20Dec&_a:7;&=&=&_w:1.75;&=&_a:4;&=Vol%20Up&_a:7;&=;&@=&=&_w:1.25;&=&_w:1.25;&=&_w:1.25;&=&_w:6.25;&=&=&=&=&_a:4;&=Prev.%20Track%20(Win)&=Vol%20Down&=Next%20Track%20(Win))
diff --git a/keyboards/s65_x/keymaps/smt/keymap.c b/keyboards/s65_x/keymaps/smt/keymap.c
index ce21859acd6..8c3984c21f6 100644
--- a/keyboards/s65_x/keymaps/smt/keymap.c
+++ b/keyboards/s65_x/keymaps/smt/keymap.c
@@ -1,4 +1,4 @@
-#include "s65_x.h"
+#include QMK_KEYBOARD_H
#define _QWERTY 0
#define _COLEMAK 1
@@ -12,10 +12,6 @@ enum planck_keycodes {
DVORAK
};
-// Helpful defines
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
// Custom macros
#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt)
@@ -37,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 0: ANSI qwerty */
- [_QWERTY] = LAYOUT_ansi(
+ [_QWERTY] = LAYOUT_65_ansi(
KC_GESC, 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_GRV, \
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_BSLS, KC_DEL, \
CTL_ESC, 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_PGUP, \
@@ -59,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 1: ANSI colemak */
- [_COLEMAK] = LAYOUT_ansi(
+ [_COLEMAK] = LAYOUT_65_ansi(
KC_GESC, 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_GRV, \
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_BSLS, KC_DEL, \
CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGUP, \
@@ -81,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 2: ANSI dvorak */
- [_DVORAK] = LAYOUT_ansi(
+ [_DVORAK] = LAYOUT_65_ansi(
KC_GESC, 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_BSPC, KC_GRV, \
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_BSLS, KC_DEL, \
CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGUP, \
@@ -103,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 3: ANSI Fn layer */
- [_FL] = LAYOUT_ansi(
+ [_FL] = LAYOUT_65_ansi(
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, KC_F13, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
_______, _______, MO(_CL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
@@ -125,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 4: ANSI control layer */
- [_CL] = LAYOUT_ansi(
+ [_CL] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, \
_______, _______, _______, _______, RESET, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, RGB_VAI, \
_______, _______, MO(_CL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
diff --git a/keyboards/s65_x/readme.md b/keyboards/s65_x/readme.md
index 5cb08c9c8f8..d1dbdb10b6a 100644
--- a/keyboards/s65_x/readme.md
+++ b/keyboards/s65_x/readme.md
@@ -5,10 +5,10 @@ DIY 65% keyboard from Sentraq.
Keyboard Maintainer: QMK Community
Hardware Supported: S65-X PCB
-Hardware Availability: https://sentraq.com/collections/group-buys/products/gb-s65-x-rgb-diy-kit?variant=39246723914
+Hardware Availability: [Sentraq](https://sentraq.com/products/s65-x-rgb-diy-keyboard-kit)
Make example for this keyboard (after setting up your build environment):
make s65_x:default
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/s65_x/rules.mk b/keyboards/s65_x/rules.mk
index 26a0a44b65b..c97f7323e27 100644
--- a/keyboards/s65_x/rules.mk
+++ b/keyboards/s65_x/rules.mk
@@ -65,3 +65,5 @@ AUDIO_ENABLE = no # Audio output on port C6
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB light
+
+LAYOUTS = 65_ansi 65_iso
diff --git a/keyboards/s65_x/s65_x.h b/keyboards/s65_x/s65_x.h
index f6ee9d5a66d..aef9205754c 100644
--- a/keyboards/s65_x/s65_x.h
+++ b/keyboards/s65_x/s65_x.h
@@ -1,69 +1,63 @@
-#ifndef S65X_H
-#define S65X_H
+#pragma once
#include "quantum.h"
-// There's an extra 2 x 5 column on the left. Not sure what that's all about
-// ANSI has more standard width shift, delete, and enter keys, doesn't use all of the 1U keys
-#define LAYOUT_ansi( \
+/* LAYOUT_65_ansi
+ * ANSI has more standard width shift, delete, and enter keys, doesn't use all of the 1U keys
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │000│001│002│003│004│005│006│007│008│009│010│011│012│014 │015│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │100 │102│103│104│105│106│107│108│109│110│111│112│113│114 │115│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │200 │202│203│204│205│206│207│208│209│210│211│212│214 │215│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │301 │302│303│304│305│306│307│308│309│310│311│313 │314│315│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │400 │401 │402 │408 │410│411│412│413│414│415│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+#define LAYOUT_65_ansi( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
+ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
) { \
- { KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
- { KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
- { KC_NO, KC_NO, KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
- { KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
+ { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
+ { KC_NO, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
+ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
}
-#define LAYOUT_iso( \
+/* LAYOUT_65_iso
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │000│001│002│003│004│005│006│007│008│009│010│011│012│014 │015│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │100 │102│103│104│105│106│107│108│109│110│111│112│113│ │115│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐114 ├───┤
+ * │200 │202│203│204│205│206│207│208│209│210│211│212│213│ │215│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │300 │301│302│303│304│305│306│307│308│309│310│311│313 │314│315│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │400 │401 │402 │408 │410│411│412│413│414│415│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+#define LAYOUT_65_iso( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
- K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K114, K215, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
) { \
- { KC_NO, KC_NO, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
- { KC_NO, KC_NO, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K214, K115 }, \
- { KC_NO, KC_NO, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
- { KC_NO, KC_NO, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
- { KC_NO, KC_NO, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
+ { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
+ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
}
-#define LAYOUT_plus_ansi( \
- M000, M001, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
- M100, M101, K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
- M200, M201, K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
- M300, M301, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
- M400, M401, K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
-) { \
- { M000, M001, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
- { M100, M101, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { M200, M201, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
- { M300, M301, KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
- { M400, M401, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
-}
-
-
-#define LAYOUT_plus_iso( \
- M000, M001, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
- M100, M101, K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
- M200, M201, K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
- M300, M301, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \
- M400, M401, K400, K401, K402, K408, K410, K411, K412, K413, K414, K415 \
-) { \
- { M000, M001, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015 }, \
- { M100, M101, K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K214, K115 }, \
- { M200, M201, K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
- { M300, M301, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
- { M400, M401, K400, K401, K402, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
-}
void matrix_init_user(void);
void matrix_scan_user(void);
-
-#endif
From be666b2d8a7b30f29a4d29b9d65af012816a43d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Konstantin=20=C4=90or=C4=91evi=C4=87?=
Date: Sat, 5 Jan 2019 17:31:24 +0100
Subject: [PATCH 07/29] Add underscores to names of brightness control
constants in report.h (#4764)
---
tmk_core/common/report.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tmk_core/common/report.h b/tmk_core/common/report.h
index eb9afb727e4..e7c31bd376a 100644
--- a/tmk_core/common/report.h
+++ b/tmk_core/common/report.h
@@ -48,8 +48,8 @@ along with this program. If not, see .
#define TRANSPORT_STOP 0x00B7
#define TRANSPORT_STOP_EJECT 0x00CC
#define TRANSPORT_PLAY_PAUSE 0x00CD
-#define BRIGHTNESSUP 0x006F
-#define BRIGHTNESSDOWN 0x0070
+#define BRIGHTNESS_UP 0x006F
+#define BRIGHTNESS_DOWN 0x0070
/* application launch */
#define AL_CC_CONFIG 0x0183
#define AL_EMAIL 0x018A
@@ -192,8 +192,8 @@ typedef struct {
(key == KC_WWW_FORWARD ? AC_FORWARD : \
(key == KC_WWW_STOP ? AC_STOP : \
(key == KC_WWW_REFRESH ? AC_REFRESH : \
- (key == KC_BRIGHTNESS_UP ? BRIGHTNESSUP : \
- (key == KC_BRIGHTNESS_DOWN ? BRIGHTNESSDOWN : \
+ (key == KC_BRIGHTNESS_UP ? BRIGHTNESS_UP : \
+ (key == KC_BRIGHTNESS_DOWN ? BRIGHTNESS_DOWN : \
(key == KC_WWW_FAVORITES ? AC_BOOKMARKS : 0)))))))))))))))))))))))
uint8_t has_anykey(report_keyboard_t* keyboard_report);
From 5b5f452bf9feae121ec5c2f3e9d5d993fcb73f92 Mon Sep 17 00:00:00 2001
From: mikethetiger <30720424+mikethetiger@users.noreply.github.com>
Date: Sat, 5 Jan 2019 10:56:00 -0600
Subject: [PATCH 08/29] adding my planck keymap (#4782)
* adding my planck keymap
* adding my planck keymap
---
.../planck/keymaps/mikethetiger/config.h | 39 ++
.../planck/keymaps/mikethetiger/keymap.c | 346 ++++++++++++++++++
.../planck/keymaps/mikethetiger/readme.md | 2 +
.../planck/keymaps/mikethetiger/rules.mk | 1 +
4 files changed, 388 insertions(+)
create mode 100644 keyboards/planck/keymaps/mikethetiger/config.h
create mode 100644 keyboards/planck/keymaps/mikethetiger/keymap.c
create mode 100644 keyboards/planck/keymaps/mikethetiger/readme.md
create mode 100644 keyboards/planck/keymaps/mikethetiger/rules.mk
diff --git a/keyboards/planck/keymaps/mikethetiger/config.h b/keyboards/planck/keymaps/mikethetiger/config.h
new file mode 100644
index 00000000000..6fa31cc8a76
--- /dev/null
+++ b/keyboards/planck/keymaps/mikethetiger/config.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/mikethetiger/keymap.c b/keyboards/planck/keymaps/mikethetiger/keymap.c
new file mode 100644
index 00000000000..bc36825e2ed
--- /dev/null
+++ b/keyboards/planck/keymaps/mikethetiger/keymap.c
@@ -0,0 +1,346 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ BACKLIT,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PLOVER] = LAYOUT_planck_grid(
+ KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ PORTE &= ~(1<<6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ PORTE |= (1<<6);
+ #endif
+ }
+ return false;
+ break;
+ case PLOVER:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_song);
+ #endif
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return false;
+ break;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+void encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE
+ register_code(KC_MS_WH_DOWN);
+ unregister_code(KC_MS_WH_DOWN);
+ #else
+ register_code(KC_PGDN);
+ unregister_code(KC_PGDN);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ register_code(KC_MS_WH_UP);
+ unregister_code(KC_MS_WH_UP);
+ #else
+ register_code(KC_PGUP);
+ unregister_code(KC_PGUP);
+ #endif
+ }
+ }
+}
+
+void dip_update(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_song);
+ #endif
+ layer_on(_ADJUST);
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/mikethetiger/readme.md b/keyboards/planck/keymaps/mikethetiger/readme.md
new file mode 100644
index 00000000000..ed039529658
--- /dev/null
+++ b/keyboards/planck/keymaps/mikethetiger/readme.md
@@ -0,0 +1,2 @@
+# mikethetiger Planck Layout
+
diff --git a/keyboards/planck/keymaps/mikethetiger/rules.mk b/keyboards/planck/keymaps/mikethetiger/rules.mk
new file mode 100644
index 00000000000..dcf16bef399
--- /dev/null
+++ b/keyboards/planck/keymaps/mikethetiger/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
From ea47be936b41a31e2644ad3403d91010916683ce Mon Sep 17 00:00:00 2001
From: Naoki Katahira
Date: Sun, 6 Jan 2019 02:30:48 +0900
Subject: [PATCH 09/29] Keyboard: Lily58 update serial.c and add OLED (#4715)
* update serial.c and add OLED
* update readme
* keymap fix
* keymap fix2
---
keyboards/lily58/config.h | 15 +-
keyboards/lily58/i2c.c | 2 +-
keyboards/lily58/i2c.h | 7 +-
keyboards/lily58/keymaps/default/config.h | 21 +-
keyboards/lily58/keymaps/default/keymap.c | 123 ++++++-
keyboards/lily58/keymaps/default/rules.mk | 27 +-
keyboards/lily58/keymaps/yuchi/config.h | 21 +-
keyboards/lily58/keymaps/yuchi/keymap.c | 125 ++++++-
keyboards/lily58/keymaps/yuchi/rules.mk | 28 +-
keyboards/lily58/lib/glcdfont.c | 243 +++++++++++++
keyboards/lily58/lib/host_led_state_reader.c | 15 +
keyboards/lily58/lib/keylogger.c | 45 +++
keyboards/lily58/lib/layer_state_reader.c | 35 ++
keyboards/lily58/lib/logo_reader.c | 11 +
keyboards/lily58/lib/mode_icon_reader.c | 15 +
keyboards/lily58/lib/rgb_state_reader.c | 15 +
keyboards/lily58/lib/timelogger.c | 16 +
keyboards/lily58/lily58.c | 11 +-
keyboards/lily58/lily58.h | 25 +-
keyboards/lily58/readme.md | 8 +-
keyboards/lily58/rev1/config.h | 14 +-
keyboards/lily58/rev1/matrix.c | 357 +++++++++++++++++++
keyboards/lily58/rev1/rev1.c | 18 +-
keyboards/lily58/rev1/rev1.h | 4 +
keyboards/lily58/rev1/rules.mk | 4 +-
keyboards/lily58/rev1/serial_config.h | 4 +
keyboards/lily58/rev1/split_scomm.c | 91 +++++
keyboards/lily58/rev1/split_scomm.h | 24 ++
keyboards/lily58/rev1/split_util.c | 70 ++++
keyboards/lily58/rev1/split_util.h | 19 +
keyboards/lily58/rules.mk | 20 +-
keyboards/lily58/serial.c | 285 +++++++++++----
keyboards/lily58/serial.h | 22 +-
keyboards/lily58/serial_config.h | 12 +-
keyboards/lily58/ssd1306.c | 344 ++++++++++++++++++
keyboards/lily58/ssd1306.h | 91 +++++
36 files changed, 1972 insertions(+), 215 deletions(-)
mode change 100644 => 100755 keyboards/lily58/i2c.c
mode change 100644 => 100755 keyboards/lily58/i2c.h
create mode 100644 keyboards/lily58/lib/glcdfont.c
create mode 100644 keyboards/lily58/lib/host_led_state_reader.c
create mode 100644 keyboards/lily58/lib/keylogger.c
create mode 100644 keyboards/lily58/lib/layer_state_reader.c
create mode 100644 keyboards/lily58/lib/logo_reader.c
create mode 100644 keyboards/lily58/lib/mode_icon_reader.c
create mode 100644 keyboards/lily58/lib/rgb_state_reader.c
create mode 100644 keyboards/lily58/lib/timelogger.c
create mode 100755 keyboards/lily58/rev1/matrix.c
create mode 100755 keyboards/lily58/rev1/serial_config.h
create mode 100755 keyboards/lily58/rev1/split_scomm.c
create mode 100755 keyboards/lily58/rev1/split_scomm.h
create mode 100755 keyboards/lily58/rev1/split_util.c
create mode 100755 keyboards/lily58/rev1/split_util.h
mode change 100644 => 100755 keyboards/lily58/serial.c
mode change 100644 => 100755 keyboards/lily58/serial.h
create mode 100755 keyboards/lily58/ssd1306.c
create mode 100755 keyboards/lily58/ssd1306.h
diff --git a/keyboards/lily58/config.h b/keyboards/lily58/config.h
index db4844c9106..b88ec06bf41 100644
--- a/keyboards/lily58/config.h
+++ b/keyboards/lily58/config.h
@@ -18,4 +18,17 @@ along with this program. If not, see .
#pragma once
-#include "serial_config.h"
\ No newline at end of file
+#include "config_common.h"
+#include
+
+#define USE_I2C
+#define USE_SERIAL
+
+#ifdef USE_Link_Time_Optimization
+ // LTO has issues with macros (action_get_macro) and "functions" (fn_actions),
+ // so just disable them
+ #define NO_ACTION_MACRO
+ #define NO_ACTION_FUNCTION
+
+ #define DISABLE_LEADER
+#endif // USE_Link_Time_Optimization
\ No newline at end of file
diff --git a/keyboards/lily58/i2c.c b/keyboards/lily58/i2c.c
old mode 100644
new mode 100755
index 084c890c405..4bee5c63982
--- a/keyboards/lily58/i2c.c
+++ b/keyboards/lily58/i2c.c
@@ -34,7 +34,7 @@ void i2c_delay(void) {
// _delay_us(100);
}
-// Setup twi to run at 100kHz
+// Setup twi to run at 100kHz or 400kHz (see ./i2c.h SCL_CLOCK)
void i2c_master_init(void) {
// no prescaler
TWSR = 0;
diff --git a/keyboards/lily58/i2c.h b/keyboards/lily58/i2c.h
old mode 100644
new mode 100755
index c15b6bc5065..710662c7abd
--- a/keyboards/lily58/i2c.h
+++ b/keyboards/lily58/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include
@@ -15,7 +14,7 @@
#define SLAVE_BUFFER_SIZE 0x10
-// i2c SCL clock frequency
+// i2c SCL clock frequency 400kHz
#define SCL_CLOCK 400000L
extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/lily58/keymaps/default/config.h b/keyboards/lily58/keymaps/default/config.h
index fd097855936..58bbdc5e9d0 100644
--- a/keyboards/lily58/keymaps/default/config.h
+++ b/keyboards/lily58/keymaps/default/config.h
@@ -17,12 +17,10 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
+
#pragma once
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
+//#define USE_MATRIX_I2C
/* Select hand configuration */
@@ -30,6 +28,21 @@ along with this program. If not, see .
// #define MASTER_RIGHT
// #define EE_HANDS
+#define SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 27
+#define RGBLIGHT_LIMIT_VAL 120
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
// Underglow
/*
#undef RGBLED_NUM
diff --git a/keyboards/lily58/keymaps/default/keymap.c b/keyboards/lily58/keymaps/default/keymap.c
index 8d770581293..5ff5dc31825 100644
--- a/keyboards/lily58/keymaps/default/keymap.c
+++ b/keyboards/lily58/keymaps/default/keymap.c
@@ -1,7 +1,23 @@
#include QMK_KEYBOARD_H
+#ifdef PROTOCOL_LUFA
+ #include "lufa.h"
+ #include "split_util.h"
+#endif
+#ifdef SSD1306OLED
+ #include "ssd1306.h"
+#endif
+
+
extern keymap_config_t keymap_config;
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
@@ -88,9 +104,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | |-------. ,-------| | | | | | |
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
- * | | | | | | |-------| |-------| | | | | | |
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
* | | | |/ / \ \ | | | |
@@ -99,17 +115,92 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT( \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,\
_______, _______, _______, _______, _______, _______, _______, _______ \
)
};
+int RGB_current_mode;
+
+// Setting ADJUST layer RGB back to default
+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ #ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+ #endif
+}
+
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#ifdef SSD1306OLED
+
+// When add source files to SRC in rules.mk, you can use functions.
+const char *read_layer_state(void);
+const char *read_logo(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+// const char *read_mode_icon(bool swap);
+// const char *read_host_led_state(void);
+// void set_timelog(void);
+// const char *read_timelog(void);
+
+void matrix_scan_user(void) {
+ iota_gfx_task();
+}
+
+void matrix_render_user(struct CharacterMatrix *matrix) {
+ if (is_master) {
+ // If you want to change the display of OLED, you need to change here
+ matrix_write_ln(matrix, read_layer_state());
+ matrix_write_ln(matrix, read_keylog());
+ matrix_write_ln(matrix, read_keylogs());
+ //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
+ //matrix_write_ln(matrix, read_host_led_state());
+ //matrix_write_ln(matrix, read_timelog());
+ } else {
+ matrix_write(matrix, read_logo());
+ }
+}
+
+void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
+ if (memcmp(dest->display, source->display, sizeof(dest->display))) {
+ memcpy(dest->display, source->display, sizeof(dest->display));
+ dest->dirty = true;
+ }
+}
+
+void iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+ matrix_clear(&matrix);
+ matrix_render_user(&matrix);
+ matrix_update(&display, &matrix);
+}
+#endif//SSD1306OLED
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef SSD1306OLED
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
switch (keycode) {
case QWERTY:
- if (record->event.pressed) {
+ if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
@@ -117,31 +208,31 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
- if (record->event.pressed) {
- layer_on(_ADJUST);
- } else {
- layer_off(_ADJUST);
- }
- return false;
- break;
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
}
return true;
}
\ No newline at end of file
diff --git a/keyboards/lily58/keymaps/default/rules.mk b/keyboards/lily58/keymaps/default/rules.mk
index 3d2d3c9e0f6..922fac6b69f 100644
--- a/keyboards/lily58/keymaps/default/rules.mk
+++ b/keyboards/lily58/keymaps/default/rules.mk
@@ -1,21 +1,30 @@
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-
-RGBLIGHT_ENABLE = no
-
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
+COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-ONEHAND_ENABLE = no # Enable one-hand typing
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ ./lib/rgb_state_reader.c \
+ ./lib/layer_state_reader.c \
+ ./lib/logo_reader.c \
+ ./lib/keylogger.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/timelogger.c \
diff --git a/keyboards/lily58/keymaps/yuchi/config.h b/keyboards/lily58/keymaps/yuchi/config.h
index fd097855936..58bbdc5e9d0 100644
--- a/keyboards/lily58/keymaps/yuchi/config.h
+++ b/keyboards/lily58/keymaps/yuchi/config.h
@@ -17,12 +17,10 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
+
#pragma once
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
+//#define USE_MATRIX_I2C
/* Select hand configuration */
@@ -30,6 +28,21 @@ along with this program. If not, see .
// #define MASTER_RIGHT
// #define EE_HANDS
+#define SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
+
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 27
+#define RGBLIGHT_LIMIT_VAL 120
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
// Underglow
/*
#undef RGBLED_NUM
diff --git a/keyboards/lily58/keymaps/yuchi/keymap.c b/keyboards/lily58/keymaps/yuchi/keymap.c
index d708dbec766..13b6cb1687e 100644
--- a/keyboards/lily58/keymaps/yuchi/keymap.c
+++ b/keyboards/lily58/keymaps/yuchi/keymap.c
@@ -1,7 +1,23 @@
#include QMK_KEYBOARD_H
+#ifdef PROTOCOL_LUFA
+ #include "lufa.h"
+ #include "split_util.h"
+#endif
+#ifdef SSD1306OLED
+ #include "ssd1306.h"
+#endif
+
+
extern keymap_config_t keymap_config;
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
+
+extern uint8_t is_master;
+
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
@@ -89,28 +105,103 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | |-------. ,-------| | | | | | |
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
- * | | | | | | |-------| |-------| | | | | | |
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
* `-----------------------------------------/ / \ \-----------------------------------------'
* |LOWER | LGUI | Alt | /Space / \Enter \ |BackSP| RGUI |RAISE |
* | | | |/ / \ \ | | | |
- * `-------------------''-------' '------''--------------------'
+ * `----------------------------' '------''--------------------'
*/
[_ADJUST] = LAYOUT( \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,\
_______, _______, _______, _______, _______, _______, _______, _______ \
)
};
+int RGB_current_mode;
+
+// Setting ADJUST layer RGB back to default
+void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+ if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+ layer_on(layer3);
+ } else {
+ layer_off(layer3);
+ }
+}
+
+void matrix_init_user(void) {
+ #ifdef RGBLIGHT_ENABLE
+ RGB_current_mode = rgblight_config.mode;
+ #endif
+ //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
+ #ifdef SSD1306OLED
+ iota_gfx_init(!has_usb()); // turns on the display
+ #endif
+}
+
+//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
+#ifdef SSD1306OLED
+
+// When add source files to SRC in rules.mk, you can use functions.
+const char *read_layer_state(void);
+const char *read_logo(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+// const char *read_mode_icon(bool swap);
+// const char *read_host_led_state(void);
+// void set_timelog(void);
+// const char *read_timelog(void);
+
+void matrix_scan_user(void) {
+ iota_gfx_task();
+}
+
+void matrix_render_user(struct CharacterMatrix *matrix) {
+ if (is_master) {
+ // If you want to change the display of OLED, you need to change here
+ matrix_write_ln(matrix, read_layer_state());
+ matrix_write_ln(matrix, read_keylog());
+ matrix_write_ln(matrix, read_keylogs());
+ //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
+ //matrix_write_ln(matrix, read_host_led_state());
+ //matrix_write_ln(matrix, read_timelog());
+ } else {
+ matrix_write(matrix, read_logo());
+ }
+}
+
+void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
+ if (memcmp(dest->display, source->display, sizeof(dest->display))) {
+ memcpy(dest->display, source->display, sizeof(dest->display));
+ dest->dirty = true;
+ }
+}
+
+void iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+ matrix_clear(&matrix);
+ matrix_render_user(&matrix);
+ matrix_update(&display, &matrix);
+}
+#endif//SSD1306OLED
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef SSD1306OLED
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
switch (keycode) {
case QWERTY:
- if (record->event.pressed) {
+ if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
@@ -118,31 +209,31 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
- if (record->event.pressed) {
- layer_on(_ADJUST);
- } else {
- layer_off(_ADJUST);
- }
- return false;
- break;
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
}
return true;
}
\ No newline at end of file
diff --git a/keyboards/lily58/keymaps/yuchi/rules.mk b/keyboards/lily58/keymaps/yuchi/rules.mk
index 73777a1b785..922fac6b69f 100644
--- a/keyboards/lily58/keymaps/yuchi/rules.mk
+++ b/keyboards/lily58/keymaps/yuchi/rules.mk
@@ -1,22 +1,30 @@
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
-
-OLED_ENABLE = no
-RGBLIGHT_ENABLE = no
-
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
+COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-ONEHAND_ENABLE = no # Enable one-hand typing
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
\ No newline at end of file
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/glcdfont.c \
+ ./lib/rgb_state_reader.c \
+ ./lib/layer_state_reader.c \
+ ./lib/logo_reader.c \
+ ./lib/keylogger.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/timelogger.c \
diff --git a/keyboards/lily58/lib/glcdfont.c b/keyboards/lily58/lib/glcdfont.c
new file mode 100644
index 00000000000..c691ea9d0be
--- /dev/null
+++ b/keyboards/lily58/lib/glcdfont.c
@@ -0,0 +1,243 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#ifndef FONT5X7_H
+#define FONT5X7_H
+
+#ifdef __AVR__
+ #include
+ #include
+#elif defined(ESP8266)
+ #include
+#else
+ #define PROGMEM
+#endif
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xE0, 0x70, 0x18,
+ 0x0C, 0x18, 0x30, 0xE0, 0x80, 0x00,
+ 0x00, 0x10, 0xF8, 0x90, 0x10, 0x30,
+ 0x78, 0x30, 0x10, 0xB8, 0xFC, 0x38,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF8, 0xFC, 0xF8, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C,
+ 0x9C, 0x1C, 0x00, 0x00, 0x00, 0x00,
+ 0xF8, 0xFC, 0xF8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xF8,
+ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x1C,
+ 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC,
+ 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
+ 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8,
+ 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
+ 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00,
+ 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+ 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+ 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+ 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+ 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+ 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F,
+ 0xBC, 0xE0, 0x81, 0x81, 0x81, 0x83,
+ 0x83, 0x82, 0x87, 0x0C, 0x18, 0x30,
+ 0x60, 0xC0, 0x00, 0x00, 0x1F, 0xFE,
+ 0x90, 0xB9, 0xFF, 0xBB, 0x91, 0x98,
+ 0x3C, 0x18, 0x11, 0x13, 0x3F, 0x11,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x0F, 0x7F, 0xF8, 0xE0, 0x80, 0xF0,
+ 0xFC, 0x3F, 0x0F, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F,
+ 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C,
+ 0x78, 0xF8, 0xF0, 0xE0, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0xC3, 0xE7, 0xFF,
+ 0x7E, 0x3C, 0x38, 0x78, 0x78, 0x70,
+ 0x70, 0xF8, 0xFF, 0xDF, 0x87, 0x00,
+ 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+ 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+ 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+ 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+ 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x3C, 0x24, 0x66, 0x63, 0x41,
+ 0xC1, 0x81, 0x80, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x81, 0xC1, 0x41, 0x62,
+ 0x38, 0x6C, 0x4C, 0xC6, 0x81, 0x81,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x81,
+ 0xC1, 0x43, 0x62, 0x36, 0x1C, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0x80, 0x00, 0x00, 0x00, 0x7F,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x7F, 0xFF, 0xFF, 0xC0, 0x80, 0x00,
+ 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0,
+ 0xC0, 0xE0, 0xF9, 0x7F, 0x1F, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x70, 0xF0, 0xE0,
+ 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0,
+ 0xF0, 0xF8, 0x7F, 0x3F, 0x0F, 0x00,
+ 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0xF9,
+ 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xE0, 0xF9, 0x7F, 0x3F, 0x1F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+#endif // FONT5X7_H
diff --git a/keyboards/lily58/lib/host_led_state_reader.c b/keyboards/lily58/lib/host_led_state_reader.c
new file mode 100644
index 00000000000..0e22173b1d8
--- /dev/null
+++ b/keyboards/lily58/lib/host_led_state_reader.c
@@ -0,0 +1,15 @@
+#include
+#include "lily58.h"
+
+char host_led_state_str[24];
+
+const char *read_host_led_state(void)
+{
+ uint8_t leds = host_keyboard_leds();
+ snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
+ (leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
+ (leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
+ (leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- ");
+
+ return host_led_state_str;
+}
diff --git a/keyboards/lily58/lib/keylogger.c b/keyboards/lily58/lib/keylogger.c
new file mode 100644
index 00000000000..a1bd476d20b
--- /dev/null
+++ b/keyboards/lily58/lib/keylogger.c
@@ -0,0 +1,45 @@
+#include
+#include "lily58.h"
+
+char keylog_str[24] = {};
+char keylogs_str[21] = {};
+int keylogs_str_idx = 0;
+
+const char code_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', ';', '\'', ' ', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ char name = ' ';
+ if (keycode < 60) {
+ name = code_to_name[keycode];
+ }
+
+ // update keylog
+ snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
+ record->event.key.row, record->event.key.col,
+ keycode, name);
+
+ // update keylogs
+ if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
+ keylogs_str_idx = 0;
+ for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
+ keylogs_str[i] = ' ';
+ }
+ }
+
+ keylogs_str[keylogs_str_idx] = name;
+ keylogs_str_idx++;
+}
+
+const char *read_keylog(void) {
+ return keylog_str;
+}
+
+const char *read_keylogs(void) {
+ return keylogs_str;
+}
diff --git a/keyboards/lily58/lib/layer_state_reader.c b/keyboards/lily58/lib/layer_state_reader.c
new file mode 100644
index 00000000000..58f406bbc98
--- /dev/null
+++ b/keyboards/lily58/lib/layer_state_reader.c
@@ -0,0 +1,35 @@
+
+#include QMK_KEYBOARD_H
+#include
+#include "lily58.h"
+
+#define L_BASE 0
+#define L_LOWER 2
+#define L_RAISE 4
+#define L_ADJUST 65536
+#define L_ADJUST_TRI 65542
+
+char layer_state_str[24];
+
+const char *read_layer_state(void) {
+ switch (layer_state)
+ {
+ case L_BASE:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default");
+ break;
+ case L_RAISE:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise");
+ break;
+ case L_LOWER:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower");
+ break;
+ case L_ADJUST:
+ case L_ADJUST_TRI:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
+ break;
+ default:
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
+ }
+
+ return layer_state_str;
+}
diff --git a/keyboards/lily58/lib/logo_reader.c b/keyboards/lily58/lib/logo_reader.c
new file mode 100644
index 00000000000..9f8adb84667
--- /dev/null
+++ b/keyboards/lily58/lib/logo_reader.c
@@ -0,0 +1,11 @@
+#include "lily58.h"
+
+const char *read_logo(void) {
+ static char logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+
+ return logo;
+}
diff --git a/keyboards/lily58/lib/mode_icon_reader.c b/keyboards/lily58/lib/mode_icon_reader.c
new file mode 100644
index 00000000000..2bce4a71b0e
--- /dev/null
+++ b/keyboards/lily58/lib/mode_icon_reader.c
@@ -0,0 +1,15 @@
+#include
+#include "lily58.h"
+
+char mode_icon[24];
+
+const char *read_mode_icon(bool swap) {
+ static char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
+ if (swap == false) {
+ snprintf(mode_icon, sizeof(mode_icon), "%s\n%s", logo[0][0], logo[0][1]);
+ } else {
+ snprintf(mode_icon, sizeof(mode_icon), "%s\n%s", logo[1][0], logo[1][1]);
+ }
+
+ return mode_icon;
+}
diff --git a/keyboards/lily58/lib/rgb_state_reader.c b/keyboards/lily58/lib/rgb_state_reader.c
new file mode 100644
index 00000000000..e0efe2e5288
--- /dev/null
+++ b/keyboards/lily58/lib/rgb_state_reader.c
@@ -0,0 +1,15 @@
+#ifdef RGBLIGHT_ENABLE
+
+#include QMK_KEYBOARD_H
+#include
+
+extern rgblight_config_t rgblight_config;
+char rbf_info_str[24];
+const char *read_rgb_info(void) {
+
+ snprintf(rbf_info_str, sizeof(rbf_info_str), "%s %2d h%3d s%3d v%3d",
+ rgblight_config.enable ? "on" : "- ", rgblight_config.mode,
+ rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
+ return rbf_info_str;
+}
+#endif
diff --git a/keyboards/lily58/lib/timelogger.c b/keyboards/lily58/lib/timelogger.c
new file mode 100644
index 00000000000..bfbfbe8a214
--- /dev/null
+++ b/keyboards/lily58/lib/timelogger.c
@@ -0,0 +1,16 @@
+#include
+#include "lily58.h"
+
+char timelog_str[24] = {};
+int last_time = 0;
+int elapsed_time = 0;
+
+void set_timelog(void) {
+ elapsed_time = timer_elapsed(last_time);
+ last_time = timer_read();
+ snprintf(timelog_str, sizeof(timelog_str), "lt:%5d, et:%5d", last_time, elapsed_time);
+}
+
+const char *read_timelog(void) {
+ return timelog_str;
+}
diff --git a/keyboards/lily58/lily58.c b/keyboards/lily58/lily58.c
index 697e3820c69..eacd90a82de 100644
--- a/keyboards/lily58/lily58.c
+++ b/keyboards/lily58/lily58.c
@@ -1 +1,10 @@
- #include "lily58.h"
+#include "lily58.h"
+#include "ssd1306.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+#ifdef SSD1306OLED
+ return process_record_gfx(keycode,record) && process_record_user(keycode, record);
+#else
+ return process_record_user(keycode, record);
+#endif
+}
\ No newline at end of file
diff --git a/keyboards/lily58/lily58.h b/keyboards/lily58/lily58.h
index 1d64dd7b2a7..064f847dd25 100644
--- a/keyboards/lily58/lily58.h
+++ b/keyboards/lily58/lily58.h
@@ -1,28 +1,5 @@
-#ifndef LILY58_H
-#define LILY58_H
-
-#include "quantum.h"
+#pragma once
#ifdef KEYBOARD_lily58_rev1
#include "rev1.h"
#endif
-
-
-
-// Used to create a keymap using only KC_ prefixed keys
-#define LAYOUT_kc( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, L45, R40, R30, R31, R32, R33, R34, R35, \
- L41, L42, L43, L44, R41, R42, R43, R44 \
- ) \
- LAYOUT( \
- KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, \
- KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, \
- KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, \
- KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L45, KC_##R40, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, \
- KC_##L41, KC_##L42, KC_##L43, KC_##L44, KC_##R41, KC_##R42, KC_##R43, KC_##R44 \
- )
-
-#endif
diff --git a/keyboards/lily58/readme.md b/keyboards/lily58/readme.md
index c71365e46ba..cbf0c1eeb02 100644
--- a/keyboards/lily58/readme.md
+++ b/keyboards/lily58/readme.md
@@ -2,16 +2,14 @@
Lily58 is 6×4+5keys column-staggered split keyboard.
-
-
-
-
+
+
Keyboard Maintainer: [Naoki Katahira](https://github.com/kata0510/) [Twitter:@F_YUUCHI](https://twitter.com/F_YUUCHI)
Hardware Supported: Lily58 PCB, ProMicro
Hardware Availability: [PCB & Case Data](https://github.com/kata0510/Lily58)
Make example for this keyboard (after setting up your build environment):
- make lily58:default
+ sudo make lily58:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
\ No newline at end of file
diff --git a/keyboards/lily58/rev1/config.h b/keyboards/lily58/rev1/config.h
index a991e88322c..0dee6a6946a 100644
--- a/keyboards/lily58/rev1/config.h
+++ b/keyboards/lily58/rev1/config.h
@@ -19,12 +19,9 @@ along with this program. If not, see .
#pragma once
-//#include QMK_KEYBOARD_CONFIG_H
-#include "config_common.h"
-
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFC51
-#define PRODUCT_ID 0x0058
+#define PRODUCT_ID 0x0058
#define DEVICE_VER 0x0100
#define MANUFACTURER F_YUUCHI
#define PRODUCT Lily58
@@ -51,9 +48,9 @@ along with this program. If not, see .
#define DEBOUNCING_DELAY 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
+//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
+//#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \
@@ -62,8 +59,7 @@ along with this program. If not, see .
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
-
-#define RGBLED_NUM 14 // Number of LEDs
+#define RGBLED_NUM 12 // Number of LEDs
/*
* Feature disable options
@@ -81,4 +77,4 @@ along with this program. If not, see .
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+//#define NO_ACTION_FUNCTION
\ No newline at end of file
diff --git a/keyboards/lily58/rev1/matrix.c b/keyboards/lily58/rev1/matrix.c
new file mode 100755
index 00000000000..718cc574481
--- /dev/null
+++ b/keyboards/lily58/rev1/matrix.c
@@ -0,0 +1,357 @@
+/*
+Copyright 2012 Jun Wako
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+/*
+ * scan matrix
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "split_util.h"
+#include "pro_micro.h"
+
+#ifdef USE_MATRIX_I2C
+# include "i2c.h"
+#else // USE_SERIAL
+# include "split_scomm.h"
+#endif
+
+#ifndef DEBOUNCE
+# define DEBOUNCE 5
+#endif
+
+#define ERROR_DISCONNECT_COUNT 5
+
+static uint8_t debouncing = DEBOUNCE;
+static const int ROWS_PER_HAND = MATRIX_ROWS/2;
+static uint8_t error_count = 0;
+uint8_t is_master = 0 ;
+
+static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+static matrix_row_t read_cols(void);
+static void init_cols(void);
+static void unselect_rows(void);
+static void select_row(uint8_t row);
+static uint8_t matrix_master_scan(void);
+
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+ matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+inline
+uint8_t matrix_rows(void)
+{
+ return MATRIX_ROWS;
+}
+
+inline
+uint8_t matrix_cols(void)
+{
+ return MATRIX_COLS;
+}
+
+void matrix_init(void)
+{
+ debug_enable = true;
+ debug_matrix = true;
+ debug_mouse = true;
+ // initialize row and col
+ unselect_rows();
+ init_cols();
+
+ TX_RX_LED_INIT;
+ TXLED0;
+ RXLED0;
+
+ // initialize matrix state: all keys off
+ for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+ matrix[i] = 0;
+ matrix_debouncing[i] = 0;
+ }
+
+ is_master = has_usb();
+
+ matrix_init_quantum();
+}
+
+uint8_t _matrix_scan(void)
+{
+ // Right hand is stored after the left in the matirx so, we need to offset it
+ int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
+
+ for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
+ select_row(i);
+ _delay_us(30); // without this wait read unstable value.
+ matrix_row_t cols = read_cols();
+ if (matrix_debouncing[i+offset] != cols) {
+ matrix_debouncing[i+offset] = cols;
+ debouncing = DEBOUNCE;
+ }
+ unselect_rows();
+ }
+
+ if (debouncing) {
+ if (--debouncing) {
+ _delay_ms(1);
+ } else {
+ for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
+ matrix[i+offset] = matrix_debouncing[i+offset];
+ }
+ }
+ }
+
+ return 1;
+}
+
+#ifdef USE_MATRIX_I2C
+
+// Get rows from other half over i2c
+int i2c_transaction(void) {
+ int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
+
+ int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
+ if (err) goto i2c_error;
+
+ // start of matrix stored at 0x00
+ err = i2c_master_write(0x00);
+ if (err) goto i2c_error;
+
+ // Start read
+ err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
+ if (err) goto i2c_error;
+
+ if (!err) {
+ int i;
+ for (i = 0; i < ROWS_PER_HAND-1; ++i) {
+ matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
+ }
+ matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
+ i2c_master_stop();
+ } else {
+i2c_error: // the cable is disconnceted, or something else went wrong
+ i2c_reset_state();
+ return err;
+ }
+
+ return 0;
+}
+
+#else // USE_SERIAL
+
+int serial_transaction(int master_changed) {
+ int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
+#ifdef SERIAL_USE_MULTI_TRANSACTION
+ int ret=serial_update_buffers(master_changed);
+#else
+ int ret=serial_update_buffers();
+#endif
+ if (ret ) {
+ if(ret==2) RXLED1;
+ return 1;
+ }
+ RXLED0;
+ memcpy(&matrix[slaveOffset],
+ (void *)serial_slave_buffer, SERIAL_SLAVE_BUFFER_LENGTH);
+ return 0;
+}
+#endif
+
+uint8_t matrix_scan(void)
+{
+ if (is_master) {
+ matrix_master_scan();
+ }else{
+ matrix_slave_scan();
+ int offset = (isLeftHand) ? ROWS_PER_HAND : 0;
+ memcpy(&matrix[offset],
+ (void *)serial_master_buffer, SERIAL_MASTER_BUFFER_LENGTH);
+ matrix_scan_quantum();
+ }
+ return 1;
+}
+
+
+uint8_t matrix_master_scan(void) {
+
+ int ret = _matrix_scan();
+ int mchanged = 1;
+
+ int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
+
+#ifdef USE_MATRIX_I2C
+// for (int i = 0; i < ROWS_PER_HAND; ++i) {
+ /* i2c_slave_buffer[i] = matrix[offset+i]; */
+// i2c_slave_buffer[i] = matrix[offset+i];
+// }
+#else // USE_SERIAL
+ #ifdef SERIAL_USE_MULTI_TRANSACTION
+ mchanged = memcmp((void *)serial_master_buffer,
+ &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH);
+ #endif
+ memcpy((void *)serial_master_buffer,
+ &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH);
+#endif
+
+#ifdef USE_MATRIX_I2C
+ if( i2c_transaction() ) {
+#else // USE_SERIAL
+ if( serial_transaction(mchanged) ) {
+#endif
+ // turn on the indicator led when halves are disconnected
+ TXLED1;
+
+ error_count++;
+
+ if (error_count > ERROR_DISCONNECT_COUNT) {
+ // reset other half if disconnected
+ int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
+ for (int i = 0; i < ROWS_PER_HAND; ++i) {
+ matrix[slaveOffset+i] = 0;
+ }
+ }
+ } else {
+ // turn off the indicator led on no error
+ TXLED0;
+ error_count = 0;
+ }
+ matrix_scan_quantum();
+ return ret;
+}
+
+void matrix_slave_scan(void) {
+ _matrix_scan();
+
+ int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
+
+#ifdef USE_MATRIX_I2C
+ for (int i = 0; i < ROWS_PER_HAND; ++i) {
+ /* i2c_slave_buffer[i] = matrix[offset+i]; */
+ i2c_slave_buffer[i] = matrix[offset+i];
+ }
+#else // USE_SERIAL
+ #ifdef SERIAL_USE_MULTI_TRANSACTION
+ int change = 0;
+ #endif
+ for (int i = 0; i < ROWS_PER_HAND; ++i) {
+ #ifdef SERIAL_USE_MULTI_TRANSACTION
+ if( serial_slave_buffer[i] != matrix[offset+i] )
+ change = 1;
+ #endif
+ serial_slave_buffer[i] = matrix[offset+i];
+ }
+ #ifdef SERIAL_USE_MULTI_TRANSACTION
+ slave_buffer_change_count += change;
+ #endif
+#endif
+}
+
+bool matrix_is_modified(void)
+{
+ if (debouncing) return false;
+ return true;
+}
+
+inline
+bool matrix_is_on(uint8_t row, uint8_t col)
+{
+ return (matrix[row] & ((matrix_row_t)1<> 4) + 1) &= ~_BV(col_pins[x] & 0xF);
+ _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
+ }
+}
+
+static matrix_row_t read_cols(void)
+{
+ matrix_row_t result = 0;
+ for(int x = 0; x < MATRIX_COLS; x++) {
+ result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
+ }
+ return result;
+}
+
+static void unselect_rows(void)
+{
+ for(int x = 0; x < ROWS_PER_HAND; x++) {
+ _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF);
+ _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
+ }
+}
+
+static void select_row(uint8_t row)
+{
+ _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF);
+ _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
+}
diff --git a/keyboards/lily58/rev1/rev1.c b/keyboards/lily58/rev1/rev1.c
index 4c54d7717c3..e78f2ccfa5f 100644
--- a/keyboards/lily58/rev1/rev1.c
+++ b/keyboards/lily58/rev1/rev1.c
@@ -1,14 +1,8 @@
#include "lily58.h"
-void matrix_init_kb(void) {
-
- // // green led on
- // DDRD |= (1<<5);
- // PORTD &= ~(1<<5);
-
- // // orange led on
- // DDRB |= (1<<0);
- // PORTB &= ~(1<<0);
-
- matrix_init_user();
-};
\ No newline at end of file
+#ifdef SSD1306OLED
+void led_set_kb(uint8_t usb_led) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ //led_set_user(usb_led);
+}
+#endif
\ No newline at end of file
diff --git a/keyboards/lily58/rev1/rev1.h b/keyboards/lily58/rev1/rev1.h
index a8304635822..4949bf5372d 100644
--- a/keyboards/lily58/rev1/rev1.h
+++ b/keyboards/lily58/rev1/rev1.h
@@ -5,6 +5,10 @@
//void promicro_bootloader_jmp(bool program);
#include "quantum.h"
+#ifdef RGBLIGHT_ENABLE
+//rgb led driver
+#include "ws2812.h"
+#endif
#ifdef USE_I2C
#include
diff --git a/keyboards/lily58/rev1/rules.mk b/keyboards/lily58/rev1/rules.mk
index f845616741c..7fc101bf2b0 100644
--- a/keyboards/lily58/rev1/rules.mk
+++ b/keyboards/lily58/rev1/rules.mk
@@ -1 +1,3 @@
-BACKLIGHT_ENABLE = no
\ No newline at end of file
+SRC += rev1/matrix.c
+SRC += rev1/split_util.c
+SRC += rev1/split_scomm.c
\ No newline at end of file
diff --git a/keyboards/lily58/rev1/serial_config.h b/keyboards/lily58/rev1/serial_config.h
new file mode 100755
index 00000000000..4fab8e8ddfc
--- /dev/null
+++ b/keyboards/lily58/rev1/serial_config.h
@@ -0,0 +1,4 @@
+#ifndef SOFT_SERIAL_PIN
+#define SOFT_SERIAL_PIN D2
+#define SERIAL_USE_MULTI_TRANSACTION
+#endif
diff --git a/keyboards/lily58/rev1/split_scomm.c b/keyboards/lily58/rev1/split_scomm.c
new file mode 100755
index 00000000000..a1fe6ba5b82
--- /dev/null
+++ b/keyboards/lily58/rev1/split_scomm.c
@@ -0,0 +1,91 @@
+#ifdef USE_SERIAL
+#ifdef SERIAL_USE_MULTI_TRANSACTION
+/* --- USE flexible API (using multi-type transaction function) --- */
+
+#include
+#include
+#include
+#include
+#include "serial.h"
+#ifdef CONSOLE_ENABLE
+ #include
+#endif
+
+uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
+uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
+uint8_t volatile status_com = 0;
+uint8_t volatile status1 = 0;
+uint8_t slave_buffer_change_count = 0;
+uint8_t s_change_old = 0xff;
+uint8_t s_change_new = 0xff;
+
+SSTD_t transactions[] = {
+#define GET_SLAVE_STATUS 0
+ /* master buffer not changed, only recive slave_buffer_change_count */
+ { (uint8_t *)&status_com,
+ 0, NULL,
+ sizeof(slave_buffer_change_count), &slave_buffer_change_count,
+ },
+#define PUT_MASTER_GET_SLAVE_STATUS 1
+ /* master buffer changed need send, and recive slave_buffer_change_count */
+ { (uint8_t *)&status_com,
+ sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer,
+ sizeof(slave_buffer_change_count), &slave_buffer_change_count,
+ },
+#define GET_SLAVE_BUFFER 2
+ /* recive serial_slave_buffer */
+ { (uint8_t *)&status1,
+ 0, NULL,
+ sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer
+ }
+};
+
+void serial_master_init(void)
+{
+ soft_serial_initiator_init(transactions, TID_LIMIT(transactions));
+}
+
+void serial_slave_init(void)
+{
+ soft_serial_target_init(transactions, TID_LIMIT(transactions));
+}
+
+// 0 => no error
+// 1 => slave did not respond
+// 2 => checksum error
+int serial_update_buffers(int master_update)
+{
+ int status, smatstatus;
+ static int need_retry = 0;
+
+ if( s_change_old != s_change_new ) {
+ smatstatus = soft_serial_transaction(GET_SLAVE_BUFFER);
+ if( smatstatus == TRANSACTION_END ) {
+ s_change_old = s_change_new;
+#ifdef CONSOLE_ENABLE
+ uprintf("slave matrix = %b %b %b %b\n",
+ serial_slave_buffer[0], serial_slave_buffer[1],
+ serial_slave_buffer[2], serial_slave_buffer[3]);
+#endif
+ }
+ } else {
+ // serial_slave_buffer dosen't change
+ smatstatus = TRANSACTION_END; // dummy status
+ }
+
+ if( !master_update && !need_retry) {
+ status = soft_serial_transaction(GET_SLAVE_STATUS);
+ } else {
+ status = soft_serial_transaction(PUT_MASTER_GET_SLAVE_STATUS);
+ }
+ if( status == TRANSACTION_END ) {
+ s_change_new = slave_buffer_change_count;
+ need_retry = 0;
+ } else {
+ need_retry = 1;
+ }
+ return smatstatus;
+}
+
+#endif // SERIAL_USE_MULTI_TRANSACTION
+#endif /* USE_SERIAL */
diff --git a/keyboards/lily58/rev1/split_scomm.h b/keyboards/lily58/rev1/split_scomm.h
new file mode 100755
index 00000000000..873d8939d81
--- /dev/null
+++ b/keyboards/lily58/rev1/split_scomm.h
@@ -0,0 +1,24 @@
+#ifndef SPLIT_COMM_H
+#define SPLIT_COMM_H
+
+#ifndef SERIAL_USE_MULTI_TRANSACTION
+/* --- USE Simple API (OLD API, compatible with let's split serial.c) --- */
+#include "serial.h"
+
+#else
+/* --- USE flexible API (using multi-type transaction function) --- */
+// Buffers for master - slave communication
+#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
+#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
+
+extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
+extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
+extern uint8_t slave_buffer_change_count;
+
+void serial_master_init(void);
+void serial_slave_init(void);
+int serial_update_buffers(int master_changed);
+
+#endif
+
+#endif /* SPLIT_COMM_H */
diff --git a/keyboards/lily58/rev1/split_util.c b/keyboards/lily58/rev1/split_util.c
new file mode 100755
index 00000000000..e1ff8b4379d
--- /dev/null
+++ b/keyboards/lily58/rev1/split_util.c
@@ -0,0 +1,70 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include "split_util.h"
+#include "matrix.h"
+#include "keyboard.h"
+
+#ifdef USE_MATRIX_I2C
+# include "i2c.h"
+#else
+# include "split_scomm.h"
+#endif
+
+volatile bool isLeftHand = true;
+
+static void setup_handedness(void) {
+ #ifdef EE_HANDS
+ isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
+ #else
+ // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
+ #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
+ isLeftHand = !has_usb();
+ #else
+ isLeftHand = has_usb();
+ #endif
+ #endif
+}
+
+static void keyboard_master_setup(void) {
+
+#ifdef USE_MATRIX_I2C
+ i2c_master_init();
+#else
+ serial_master_init();
+#endif
+}
+
+static void keyboard_slave_setup(void) {
+
+#ifdef USE_MATRIX_I2C
+ i2c_slave_init(SLAVE_I2C_ADDRESS);
+#else
+ serial_slave_init();
+#endif
+}
+
+bool has_usb(void) {
+ USBCON |= (1 << OTGPADE); //enables VBUS pad
+ _delay_us(5);
+ return (USBSTA & (1<
+#include "eeconfig.h"
+
+#define SLAVE_I2C_ADDRESS 0x32
+
+extern volatile bool isLeftHand;
+
+// slave version of matix scan, defined in matrix.c
+void matrix_slave_scan(void);
+
+void split_keyboard_setup(void);
+bool has_usb(void);
+
+void matrix_master_OLED_init (void);
+
+#endif
diff --git a/keyboards/lily58/rules.mk b/keyboards/lily58/rules.mk
index ad8ad585e9a..f6b922eeac2 100644
--- a/keyboards/lily58/rules.mk
+++ b/keyboards/lily58/rules.mk
@@ -1,7 +1,10 @@
-SRC += matrix.c \
- i2c.c \
- split_util.c \
- serial.c
+SRC += i2c.c
+SRC += serial.c
+SRC += ssd1306.c
+
+# if firmware size over limit, try this option
+# CFLAGS += -flto
+
# MCU name
#MCU = at90usb1287
MCU = atmega32u4
@@ -38,16 +41,15 @@ ARCH = AVR8
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
-# Interrupt driven control endpoint task(+60)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-
-
# Bootloader
# This definition is optional, and if your keyboard supports multiple bootloaders of
# different sizes, comment this out, and the correct address will be loaded
# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = caterina
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
@@ -65,7 +67,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SUBPROJECT_rev1 = no
-USE_I2C = no
+USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/lily58/serial.c b/keyboards/lily58/serial.c
old mode 100644
new mode 100755
index f85dc28dc34..325c29a3f70
--- a/keyboards/lily58/serial.c
+++ b/keyboards/lily58/serial.c
@@ -1,5 +1,10 @@
/*
* WARNING: be careful changing this code, it is very timing dependent
+ *
+ * 2018-10-28 checked
+ * avr-gcc 4.9.2
+ * avr-gcc 5.4.0
+ * avr-gcc 7.3.0
*/
#ifndef F_CPU
@@ -14,9 +19,58 @@
#include "serial.h"
//#include
-#ifdef USE_SERIAL
-//#ifndef USE_SERIAL_PD2
+#ifdef SOFT_SERIAL_PIN
+#ifdef __AVR_ATmega32U4__
+ // if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
+ #ifdef USE_I2C
+ #if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
+ #error Using ATmega32U4 I2C, so can not use PD0, PD1
+ #endif
+ #endif
+
+ #if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
+ #define SERIAL_PIN_DDR DDRD
+ #define SERIAL_PIN_PORT PORTD
+ #define SERIAL_PIN_INPUT PIND
+ #if SOFT_SERIAL_PIN == D0
+ #define SERIAL_PIN_MASK _BV(PD0)
+ #define EIMSK_BIT _BV(INT0)
+ #define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
+ #define SERIAL_PIN_INTERRUPT INT0_vect
+ #elif SOFT_SERIAL_PIN == D1
+ #define SERIAL_PIN_MASK _BV(PD1)
+ #define EIMSK_BIT _BV(INT1)
+ #define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
+ #define SERIAL_PIN_INTERRUPT INT1_vect
+ #elif SOFT_SERIAL_PIN == D2
+ #define SERIAL_PIN_MASK _BV(PD2)
+ #define EIMSK_BIT _BV(INT2)
+ #define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
+ #define SERIAL_PIN_INTERRUPT INT2_vect
+ #elif SOFT_SERIAL_PIN == D3
+ #define SERIAL_PIN_MASK _BV(PD3)
+ #define EIMSK_BIT _BV(INT3)
+ #define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
+ #define SERIAL_PIN_INTERRUPT INT3_vect
+ #endif
+ #elif SOFT_SERIAL_PIN == E6
+ #define SERIAL_PIN_DDR DDRE
+ #define SERIAL_PIN_PORT PORTE
+ #define SERIAL_PIN_INPUT PINE
+ #define SERIAL_PIN_MASK _BV(PE6)
+ #define EIMSK_BIT _BV(INT6)
+ #define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
+ #define SERIAL_PIN_INTERRUPT INT6_vect
+ #else
+ #error invalid SOFT_SERIAL_PIN value
+ #endif
+
+#else
+ #error serial.c now support ATmega32U4 only
+#endif
+
+//////////////// for backward compatibility ////////////////////////////////
#ifndef SERIAL_USE_MULTI_TRANSACTION
/* --- USE Simple API (OLD API, compatible with let's split serial.c) */
#if SERIAL_SLAVE_BUFFER_LENGTH > 0
@@ -43,56 +97,118 @@ SSTD_t transactions[] = {
};
void serial_master_init(void)
-{ soft_serial_initiator_init(transactions); }
+{ soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); }
void serial_slave_init(void)
-{ soft_serial_target_init(transactions); }
+{ soft_serial_target_init(transactions, TID_LIMIT(transactions)); }
// 0 => no error
// 1 => slave did not respond
// 2 => checksum error
int serial_update_buffers()
-{ return soft_serial_transaction(); }
+{
+ int result;
+ result = soft_serial_transaction();
+ return result;
+}
-#endif // Simple API (OLD API, compatible with let's split serial.c)
+#endif // end of Simple API (OLD API, compatible with let's split serial.c)
+////////////////////////////////////////////////////////////////////////////
#define ALWAYS_INLINE __attribute__((always_inline))
#define NO_INLINE __attribute__((noinline))
#define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
-// Serial pulse period in microseconds.
-#define TID_SEND_ADJUST 14
+// parity check
+#define ODD_PARITY 1
+#define EVEN_PARITY 0
+#define PARITY EVEN_PARITY
-#define SELECT_SERIAL_SPEED 1
-#if SELECT_SERIAL_SPEED == 0
+#ifdef SERIAL_DELAY
+ // custom setup in config.h
+ // #define TID_SEND_ADJUST 2
+ // #define SERIAL_DELAY 6 // micro sec
+ // #define READ_WRITE_START_ADJUST 30 // cycles
+ // #define READ_WRITE_WIDTH_ADJUST 8 // cycles
+#else
+// ============ Standard setups ============
+
+#ifndef SELECT_SOFT_SERIAL_SPEED
+#define SELECT_SOFT_SERIAL_SPEED 1
+// 0: about 189kbps
+// 1: about 137kbps (default)
+// 2: about 75kbps
+// 3: about 39kbps
+// 4: about 26kbps
+// 5: about 20kbps
+#endif
+
+#if __GNUC__ < 6
+ #define TID_SEND_ADJUST 14
+#else
+ #define TID_SEND_ADJUST 2
+#endif
+
+#if SELECT_SOFT_SERIAL_SPEED == 0
// Very High speed
#define SERIAL_DELAY 4 // micro sec
- #define READ_WRITE_START_ADJUST 33 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
-#elif SELECT_SERIAL_SPEED == 1
+ #if __GNUC__ < 6
+ #define READ_WRITE_START_ADJUST 33 // cycles
+ #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #else
+ #define READ_WRITE_START_ADJUST 34 // cycles
+ #define READ_WRITE_WIDTH_ADJUST 7 // cycles
+ #endif
+#elif SELECT_SOFT_SERIAL_SPEED == 1
// High speed
#define SERIAL_DELAY 6 // micro sec
- #define READ_WRITE_START_ADJUST 30 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
-#elif SELECT_SERIAL_SPEED == 2
+ #if __GNUC__ < 6
+ #define READ_WRITE_START_ADJUST 30 // cycles
+ #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #else
+ #define READ_WRITE_START_ADJUST 33 // cycles
+ #define READ_WRITE_WIDTH_ADJUST 7 // cycles
+ #endif
+#elif SELECT_SOFT_SERIAL_SPEED == 2
// Middle speed
#define SERIAL_DELAY 12 // micro sec
#define READ_WRITE_START_ADJUST 30 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
-#elif SELECT_SERIAL_SPEED == 3
+ #if __GNUC__ < 6
+ #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #else
+ #define READ_WRITE_WIDTH_ADJUST 7 // cycles
+ #endif
+#elif SELECT_SOFT_SERIAL_SPEED == 3
// Low speed
#define SERIAL_DELAY 24 // micro sec
#define READ_WRITE_START_ADJUST 30 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
-#elif SELECT_SERIAL_SPEED == 4
+ #if __GNUC__ < 6
+ #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #else
+ #define READ_WRITE_WIDTH_ADJUST 7 // cycles
+ #endif
+#elif SELECT_SOFT_SERIAL_SPEED == 4
// Very Low speed
- #define SERIAL_DELAY 50 // micro sec
+ #define SERIAL_DELAY 36 // micro sec
#define READ_WRITE_START_ADJUST 30 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #if __GNUC__ < 6
+ #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #else
+ #define READ_WRITE_WIDTH_ADJUST 7 // cycles
+ #endif
+#elif SELECT_SOFT_SERIAL_SPEED == 5
+ // Ultra Low speed
+ #define SERIAL_DELAY 48 // micro sec
+ #define READ_WRITE_START_ADJUST 30 // cycles
+ #if __GNUC__ < 6
+ #define READ_WRITE_WIDTH_ADJUST 3 // cycles
+ #else
+ #define READ_WRITE_WIDTH_ADJUST 7 // cycles
+ #endif
#else
-#error Illegal Serial Speed
-#endif
-
+#error invalid SELECT_SOFT_SERIAL_SPEED value
+#endif /* SELECT_SOFT_SERIAL_SPEED */
+#endif /* SERIAL_DELAY */
#define SERIAL_DELAY_HALF1 (SERIAL_DELAY/2)
#define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY/2)
@@ -106,17 +222,21 @@ int serial_update_buffers()
#endif
static SSTD_t *Transaction_table = NULL;
+static uint8_t Transaction_table_size = 0;
+inline static void serial_delay(void) ALWAYS_INLINE;
inline static
void serial_delay(void) {
_delay_us(SERIAL_DELAY);
}
+inline static void serial_delay_half1(void) ALWAYS_INLINE;
inline static
void serial_delay_half1(void) {
_delay_us(SERIAL_DELAY_HALF1);
}
+inline static void serial_delay_half2(void) ALWAYS_INLINE;
inline static
void serial_delay_half2(void) {
_delay_us(SERIAL_DELAY_HALF2);
@@ -136,6 +256,7 @@ void serial_input_with_pullup(void) {
SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
}
+inline static uint8_t serial_read_pin(void) ALWAYS_INLINE;
inline static
uint8_t serial_read_pin(void) {
return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
@@ -153,30 +274,28 @@ void serial_high(void) {
SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
}
-void soft_serial_initiator_init(SSTD_t *sstd_table)
+void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size)
{
Transaction_table = sstd_table;
+ Transaction_table_size = (uint8_t)sstd_table_size;
serial_output();
serial_high();
}
-void soft_serial_target_init(SSTD_t *sstd_table)
+void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size)
{
Transaction_table = sstd_table;
+ Transaction_table_size = (uint8_t)sstd_table_size;
serial_input_with_pullup();
-#if SERIAL_PIN_MASK == _BV(PD0)
- // Enable INT0
- EIMSK |= _BV(INT0);
- // Trigger on falling edge of INT0
- EICRA &= ~(_BV(ISC00) | _BV(ISC01));
-#elif SERIAL_PIN_MASK == _BV(PD2)
- // Enable INT2
- EIMSK |= _BV(INT2);
- // Trigger on falling edge of INT2
- EICRA &= ~(_BV(ISC20) | _BV(ISC21));
+ // Enable INT0-INT3,INT6
+ EIMSK |= EIMSK_BIT;
+#if SERIAL_PIN_MASK == _BV(PE6)
+ // Trigger on falling edge of INT6
+ EICRB &= EICRx_BIT;
#else
- #error unknown SERIAL_PIN_MASK value
+ // Trigger on falling edge of INT0-INT3
+ EICRA &= EICRx_BIT;
#endif
}
@@ -192,7 +311,7 @@ void sync_recv(void) {
}
// Used by the reciver to send a synchronization signal to the sender.
-static void sync_send(void)NO_INLINE;
+static void sync_send(void) NO_INLINE;
static
void sync_send(void) {
serial_low();
@@ -206,12 +325,12 @@ static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) {
uint8_t byte, i, p, pb;
_delay_sub_us(READ_WRITE_START_ADJUST);
- for( i = 0, byte = 0, p = 0; i < bit; i++ ) {
+ for( i = 0, byte = 0, p = PARITY; i < bit; i++ ) {
serial_delay_half1(); // read the middle of pulses
if( serial_read_pin() ) {
- byte = (byte << 1) | 1; p ^= 1;
+ byte = (byte << 1) | 1; p ^= 1;
} else {
- byte = (byte << 1) | 0; p ^= 0;
+ byte = (byte << 1) | 0; p ^= 0;
}
_delay_sub_us(READ_WRITE_WIDTH_ADJUST);
serial_delay_half2();
@@ -231,13 +350,13 @@ static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) {
void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE;
void serial_write_chunk(uint8_t data, uint8_t bit) {
uint8_t b, p;
- for( p = 0, b = 1<<(bit-1); b ; b >>= 1) {
- if(data & b) {
- serial_high(); p ^= 1;
- } else {
- serial_low(); p ^= 0;
- }
- serial_delay();
+ for( p = PARITY, b = 1<<(bit-1); b ; b >>= 1) {
+ if(data & b) {
+ serial_high(); p ^= 1;
+ } else {
+ serial_low(); p ^= 0;
+ }
+ serial_delay();
}
/* send parity bit */
if(p & 1) { serial_high(); }
@@ -289,6 +408,13 @@ void change_reciver2sender(void) {
serial_delay_half1(); //4
}
+static inline uint8_t nibble_bits_count(uint8_t bits)
+{
+ bits = (bits & 0x5) + (bits >> 1 & 0x5);
+ bits = (bits & 0x3) + (bits >> 2 & 0x3);
+ return bits;
+}
+
// interrupt handle to be used by the target device
ISR(SERIAL_PIN_INTERRUPT) {
@@ -298,12 +424,15 @@ ISR(SERIAL_PIN_INTERRUPT) {
SSTD_t *trans = Transaction_table;
#else
// recive transaction table index
- uint8_t tid;
+ uint8_t tid, bits;
uint8_t pecount = 0;
sync_recv();
- tid = serial_read_chunk(&pecount,4);
- if(pecount> 0)
+ bits = serial_read_chunk(&pecount,7);
+ tid = bits>>3;
+ bits = (bits&7) != nibble_bits_count(tid);
+ if( bits || pecount> 0 || tid > Transaction_table_size ) {
return;
+ }
serial_delay_half1();
serial_high(); // response step1 low->high
@@ -316,17 +445,17 @@ ISR(SERIAL_PIN_INTERRUPT) {
// target send phase
if( trans->target2initiator_buffer_size > 0 )
serial_send_packet((uint8_t *)trans->target2initiator_buffer,
- trans->target2initiator_buffer_size);
+ trans->target2initiator_buffer_size);
// target switch to input
change_sender2reciver();
// target recive phase
if( trans->initiator2target_buffer_size > 0 ) {
if (serial_recive_packet((uint8_t *)trans->initiator2target_buffer,
- trans->initiator2target_buffer_size) ) {
- *trans->status = TRANSACTION_ACCEPTED;
+ trans->initiator2target_buffer_size) ) {
+ *trans->status = TRANSACTION_ACCEPTED;
} else {
- *trans->status = TRANSACTION_DATA_ERROR;
+ *trans->status = TRANSACTION_DATA_ERROR;
}
} else {
*trans->status = TRANSACTION_ACCEPTED;
@@ -350,6 +479,8 @@ int soft_serial_transaction(void) {
SSTD_t *trans = Transaction_table;
#else
int soft_serial_transaction(int sstd_index) {
+ if( sstd_index > Transaction_table_size )
+ return TRANSACTION_TYPE_ERROR;
SSTD_t *trans = &Transaction_table[sstd_index];
#endif
cli();
@@ -376,9 +507,10 @@ int soft_serial_transaction(int sstd_index) {
#else
// send transaction table index
+ int tid = (sstd_index<<3) | (7 & nibble_bits_count(sstd_index));
sync_send();
_delay_sub_us(TID_SEND_ADJUST);
- serial_write_chunk(sstd_index, 4);
+ serial_write_chunk(tid, 7);
serial_delay_half1();
// wait for the target response (step1 low->high)
@@ -390,12 +522,12 @@ int soft_serial_transaction(int sstd_index) {
// check if the target is present (step2 high->low)
for( int i = 0; serial_read_pin(); i++ ) {
if (i > SLAVE_INT_ACK_WIDTH + 1) {
- // slave failed to pull the line low, assume not present
- serial_output();
- serial_high();
- *trans->status = TRANSACTION_NO_RESPONSE;
- sei();
- return TRANSACTION_NO_RESPONSE;
+ // slave failed to pull the line low, assume not present
+ serial_output();
+ serial_high();
+ *trans->status = TRANSACTION_NO_RESPONSE;
+ sei();
+ return TRANSACTION_NO_RESPONSE;
}
_delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT);
}
@@ -405,12 +537,12 @@ int soft_serial_transaction(int sstd_index) {
// if the target is present syncronize with it
if( trans->target2initiator_buffer_size > 0 ) {
if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer,
- trans->target2initiator_buffer_size) ) {
- serial_output();
- serial_high();
- *trans->status = TRANSACTION_DATA_ERROR;
- sei();
- return TRANSACTION_DATA_ERROR;
+ trans->target2initiator_buffer_size) ) {
+ serial_output();
+ serial_high();
+ *trans->status = TRANSACTION_DATA_ERROR;
+ sei();
+ return TRANSACTION_DATA_ERROR;
}
}
@@ -420,7 +552,7 @@ int soft_serial_transaction(int sstd_index) {
// initiator send phase
if( trans->initiator2target_buffer_size > 0 ) {
serial_send_packet((uint8_t *)trans->initiator2target_buffer,
- trans->initiator2target_buffer_size);
+ trans->initiator2target_buffer_size);
}
// always, release the line when not in use
@@ -443,3 +575,16 @@ int soft_serial_get_and_clean_status(int sstd_index) {
#endif
#endif
+
+// Helix serial.c history
+// 2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc)
+// 2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4)
+// (adjusted with avr-gcc 4.9.2)
+// 2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78)
+// (adjusted with avr-gcc 4.9.2)
+// 2018-8-11 add support multi-type transaction (#3608, feb5e4aae)
+// (adjusted with avr-gcc 4.9.2)
+// 2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff)
+// (adjusted with avr-gcc 7.3.0)
+// 2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66)
+// (adjusted with avr-gcc 5.4.0, 7.3.0)
diff --git a/keyboards/lily58/serial.h b/keyboards/lily58/serial.h
old mode 100644
new mode 100755
index d2b7fd8e60b..7e0c0847a43
--- a/keyboards/lily58/serial.h
+++ b/keyboards/lily58/serial.h
@@ -4,14 +4,16 @@
#include
// /////////////////////////////////////////////////////////////////
-// Need Soft Serial defines in serial_config.h
+// Need Soft Serial defines in config.h
// /////////////////////////////////////////////////////////////////
// ex.
-// #define SERIAL_PIN_DDR DDRD
-// #define SERIAL_PIN_PORT PORTD
-// #define SERIAL_PIN_INPUT PIND
-// #define SERIAL_PIN_MASK _BV(PD?) ?=0,2
-// #define SERIAL_PIN_INTERRUPT INT?_vect ?=0,2
+// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6
+// OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5
+// // 1: about 137kbps (default)
+// // 2: about 75kbps
+// // 3: about 39kbps
+// // 4: about 26kbps
+// // 5: about 20kbps
//
// //// USE Simple API (OLD API, compatible with let's split serial.c)
// ex.
@@ -47,16 +49,18 @@ typedef struct _SSTD_t {
uint8_t target2initiator_buffer_size;
uint8_t *target2initiator_buffer;
} SSTD_t;
+#define TID_LIMIT( table ) (sizeof(table) / sizeof(SSTD_t))
// initiator is transaction start side
-void soft_serial_initiator_init(SSTD_t *sstd_table);
+void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size);
// target is interrupt accept side
-void soft_serial_target_init(SSTD_t *sstd_table);
+void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size);
// initiator resullt
#define TRANSACTION_END 0
#define TRANSACTION_NO_RESPONSE 0x1
#define TRANSACTION_DATA_ERROR 0x2
+#define TRANSACTION_TYPE_ERROR 0x4
#ifndef SERIAL_USE_MULTI_TRANSACTION
int soft_serial_transaction(void);
#else
@@ -72,7 +76,7 @@ int soft_serial_transaction(int sstd_index);
// target:
// TRANSACTION_DATA_ERROR
// or TRANSACTION_ACCEPTED
-#define TRANSACTION_ACCEPTED 0x4
+#define TRANSACTION_ACCEPTED 0x8
#ifdef SERIAL_USE_MULTI_TRANSACTION
int soft_serial_get_and_clean_status(int sstd_index);
#endif
diff --git a/keyboards/lily58/serial_config.h b/keyboards/lily58/serial_config.h
index fef689038e7..4fab8e8ddfc 100644
--- a/keyboards/lily58/serial_config.h
+++ b/keyboards/lily58/serial_config.h
@@ -1,8 +1,4 @@
-#define SERIAL_PIN_DDR DDRD
-#define SERIAL_PIN_PORT PORTD
-#define SERIAL_PIN_INPUT PIND
-#define SERIAL_PIN_MASK _BV(PD2)
-#define SERIAL_PIN_INTERRUPT INT2_vect
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH 1
\ No newline at end of file
+#ifndef SOFT_SERIAL_PIN
+#define SOFT_SERIAL_PIN D2
+#define SERIAL_USE_MULTI_TRANSACTION
+#endif
diff --git a/keyboards/lily58/ssd1306.c b/keyboards/lily58/ssd1306.c
new file mode 100755
index 00000000000..4330c8497db
--- /dev/null
+++ b/keyboards/lily58/ssd1306.c
@@ -0,0 +1,344 @@
+#ifdef SSD1306OLED
+
+#include "ssd1306.h"
+#include "i2c.h"
+#include
+#include "print.h"
+#ifdef ADAFRUIT_BLE_ENABLE
+#include "adafruit_ble.h"
+#endif
+#ifdef PROTOCOL_LUFA
+#include "lufa.h"
+#endif
+#include "sendchar.h"
+#include "timer.h"
+
+static const unsigned char font[] PROGMEM;
+
+// Set this to 1 to help diagnose early startup problems
+// when testing power-on with ble. Turn it off otherwise,
+// as the latency of printing most of the debug info messes
+// with the matrix scan, causing keys to drop.
+#define DEBUG_TO_SCREEN 0
+
+//static uint16_t last_battery_update;
+//static uint32_t vbat;
+//#define BatteryUpdateInterval 10000 /* milliseconds */
+
+// 'last_flush' is declared as uint16_t,
+// so this must be less than 65535
+#define ScreenOffInterval 60000 /* milliseconds */
+#if DEBUG_TO_SCREEN
+static uint8_t displaying;
+#endif
+static uint16_t last_flush;
+
+static bool force_dirty = true;
+
+// Write command sequence.
+// Returns true on success.
+static inline bool _send_cmd1(uint8_t cmd) {
+ bool res = false;
+
+ if (i2c_start_write(SSD1306_ADDRESS)) {
+ xprintf("failed to start write to %d\n", SSD1306_ADDRESS);
+ goto done;
+ }
+
+ if (i2c_master_write(0x0 /* command byte follows */)) {
+ print("failed to write control byte\n");
+
+ goto done;
+ }
+
+ if (i2c_master_write(cmd)) {
+ xprintf("failed to write command %d\n", cmd);
+ goto done;
+ }
+ res = true;
+done:
+ i2c_master_stop();
+ return res;
+}
+
+// Write 2-byte command sequence.
+// Returns true on success
+static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
+ if (!_send_cmd1(cmd)) {
+ return false;
+ }
+ return _send_cmd1(opr);
+}
+
+// Write 3-byte command sequence.
+// Returns true on success
+static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
+ if (!_send_cmd1(cmd)) {
+ return false;
+ }
+ if (!_send_cmd1(opr1)) {
+ return false;
+ }
+ return _send_cmd1(opr2);
+}
+
+#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;}
+#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;}
+#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;}
+
+static void clear_display(void) {
+ matrix_clear(&display);
+
+ // Clear all of the display bits (there can be random noise
+ // in the RAM on startup)
+ send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
+ send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
+
+ if (i2c_start_write(SSD1306_ADDRESS)) {
+ goto done;
+ }
+ if (i2c_master_write(0x40)) {
+ // Data mode
+ goto done;
+ }
+ for (uint8_t row = 0; row < MatrixRows; ++row) {
+ for (uint8_t col = 0; col < DisplayWidth; ++col) {
+ i2c_master_write(0);
+ }
+ }
+
+ display.dirty = false;
+
+done:
+ i2c_master_stop();
+}
+
+#if DEBUG_TO_SCREEN
+#undef sendchar
+static int8_t capture_sendchar(uint8_t c) {
+ sendchar(c);
+ iota_gfx_write_char(c);
+
+ if (!displaying) {
+ iota_gfx_flush();
+ }
+ return 0;
+}
+#endif
+
+bool iota_gfx_init(bool rotate) {
+ bool success = false;
+
+ i2c_master_init();
+ send_cmd1(DisplayOff);
+ send_cmd2(SetDisplayClockDiv, 0x80);
+ send_cmd2(SetMultiPlex, DisplayHeight - 1);
+
+ send_cmd2(SetDisplayOffset, 0);
+
+
+ send_cmd1(SetStartLine | 0x0);
+ send_cmd2(SetChargePump, 0x14 /* Enable */);
+ send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
+
+ if(rotate){
+ // the following Flip the display orientation 180 degrees
+ send_cmd1(SegRemap);
+ send_cmd1(ComScanInc);
+ }else{
+ // Flips the display orientation 0 degrees
+ send_cmd1(SegRemap | 0x1);
+ send_cmd1(ComScanDec);
+ }
+
+ send_cmd2(SetComPins, 0x2);
+ send_cmd2(SetContrast, 0x8f);
+ send_cmd2(SetPreCharge, 0xf1);
+ send_cmd2(SetVComDetect, 0x40);
+ send_cmd1(DisplayAllOnResume);
+ send_cmd1(NormalDisplay);
+ send_cmd1(DeActivateScroll);
+ send_cmd1(DisplayOn);
+
+ send_cmd2(SetContrast, 0); // Dim
+
+ clear_display();
+
+ success = true;
+
+ iota_gfx_flush();
+
+#if DEBUG_TO_SCREEN
+ print_set_sendchar(capture_sendchar);
+#endif
+
+done:
+ return success;
+}
+
+bool iota_gfx_off(void) {
+ bool success = false;
+
+ send_cmd1(DisplayOff);
+ success = true;
+
+done:
+ return success;
+}
+
+bool iota_gfx_on(void) {
+ bool success = false;
+
+ send_cmd1(DisplayOn);
+ success = true;
+
+done:
+ return success;
+}
+
+void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
+ *matrix->cursor = c;
+ ++matrix->cursor;
+
+ if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) {
+ // We went off the end; scroll the display upwards by one line
+ memmove(&matrix->display[0], &matrix->display[1],
+ MatrixCols * (MatrixRows - 1));
+ matrix->cursor = &matrix->display[MatrixRows - 1][0];
+ memset(matrix->cursor, ' ', MatrixCols);
+ }
+}
+
+void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
+ matrix->dirty = true;
+
+ if (c == '\n') {
+ // Clear to end of line from the cursor and then move to the
+ // start of the next line
+ uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
+
+ while (cursor_col++ < MatrixCols) {
+ matrix_write_char_inner(matrix, ' ');
+ }
+ return;
+ }
+
+ matrix_write_char_inner(matrix, c);
+}
+
+void iota_gfx_write_char(uint8_t c) {
+ matrix_write_char(&display, c);
+}
+
+void matrix_write(struct CharacterMatrix *matrix, const char *data) {
+ const char *end = data + strlen(data);
+ while (data < end) {
+ matrix_write_char(matrix, *data);
+ ++data;
+ }
+}
+
+void matrix_write_ln(struct CharacterMatrix *matrix, const char *data) {
+ char data_ln[strlen(data)+2];
+ snprintf(data_ln, sizeof(data_ln), "%s\n", data);
+ matrix_write(matrix, data_ln);
+}
+
+void iota_gfx_write(const char *data) {
+ matrix_write(&display, data);
+}
+
+void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
+ while (true) {
+ uint8_t c = pgm_read_byte(data);
+ if (c == 0) {
+ return;
+ }
+ matrix_write_char(matrix, c);
+ ++data;
+ }
+}
+
+void iota_gfx_write_P(const char *data) {
+ matrix_write_P(&display, data);
+}
+
+void matrix_clear(struct CharacterMatrix *matrix) {
+ memset(matrix->display, ' ', sizeof(matrix->display));
+ matrix->cursor = &matrix->display[0][0];
+ matrix->dirty = true;
+}
+
+void iota_gfx_clear_screen(void) {
+ matrix_clear(&display);
+}
+
+void matrix_render(struct CharacterMatrix *matrix) {
+ last_flush = timer_read();
+ iota_gfx_on();
+#if DEBUG_TO_SCREEN
+ ++displaying;
+#endif
+
+ // Move to the home position
+ send_cmd3(PageAddr, 0, MatrixRows - 1);
+ send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
+
+ if (i2c_start_write(SSD1306_ADDRESS)) {
+ goto done;
+ }
+ if (i2c_master_write(0x40)) {
+ // Data mode
+ goto done;
+ }
+
+ for (uint8_t row = 0; row < MatrixRows; ++row) {
+ for (uint8_t col = 0; col < MatrixCols; ++col) {
+ const uint8_t *glyph = font + (matrix->display[row][col] * FontWidth);
+
+ for (uint8_t glyphCol = 0; glyphCol < FontWidth; ++glyphCol) {
+ uint8_t colBits = pgm_read_byte(glyph + glyphCol);
+ i2c_master_write(colBits);
+ }
+
+ // 1 column of space between chars (it's not included in the glyph)
+ //i2c_master_write(0);
+ }
+ }
+
+ matrix->dirty = false;
+
+done:
+ i2c_master_stop();
+#if DEBUG_TO_SCREEN
+ --displaying;
+#endif
+}
+
+void iota_gfx_flush(void) {
+ matrix_render(&display);
+}
+
+__attribute__ ((weak))
+void iota_gfx_task_user(void) {
+}
+
+void iota_gfx_task(void) {
+ iota_gfx_task_user();
+
+ if (display.dirty|| force_dirty) {
+ iota_gfx_flush();
+ force_dirty = false;
+ }
+
+ if (timer_elapsed(last_flush) > ScreenOffInterval) {
+ iota_gfx_off();
+ }
+}
+
+bool process_record_gfx(uint16_t keycode, keyrecord_t *record) {
+ force_dirty = true;
+ return true;
+}
+
+#endif
diff --git a/keyboards/lily58/ssd1306.h b/keyboards/lily58/ssd1306.h
new file mode 100755
index 00000000000..ea8c9232805
--- /dev/null
+++ b/keyboards/lily58/ssd1306.h
@@ -0,0 +1,91 @@
+#pragma once
+
+#include
+#include
+#include "pincontrol.h"
+#include "action.h"
+
+enum ssd1306_cmds {
+ DisplayOff = 0xAE,
+ DisplayOn = 0xAF,
+
+ SetContrast = 0x81,
+ DisplayAllOnResume = 0xA4,
+
+ DisplayAllOn = 0xA5,
+ NormalDisplay = 0xA6,
+ InvertDisplay = 0xA7,
+ SetDisplayOffset = 0xD3,
+ SetComPins = 0xda,
+ SetVComDetect = 0xdb,
+ SetDisplayClockDiv = 0xD5,
+ SetPreCharge = 0xd9,
+ SetMultiPlex = 0xa8,
+ SetLowColumn = 0x00,
+ SetHighColumn = 0x10,
+ SetStartLine = 0x40,
+
+ SetMemoryMode = 0x20,
+ ColumnAddr = 0x21,
+ PageAddr = 0x22,
+
+ ComScanInc = 0xc0,
+ ComScanDec = 0xc8,
+ SegRemap = 0xa0,
+ SetChargePump = 0x8d,
+ ExternalVcc = 0x01,
+ SwitchCapVcc = 0x02,
+
+ ActivateScroll = 0x2f,
+ DeActivateScroll = 0x2e,
+ SetVerticalScrollArea = 0xa3,
+ RightHorizontalScroll = 0x26,
+ LeftHorizontalScroll = 0x27,
+ VerticalAndRightHorizontalScroll = 0x29,
+ VerticalAndLeftHorizontalScroll = 0x2a,
+};
+
+// Controls the SSD1306 128x32 OLED display via i2c
+
+#ifndef SSD1306_ADDRESS
+#define SSD1306_ADDRESS 0x3C
+#endif
+
+#define DisplayHeight 32
+#define DisplayWidth 128
+
+#define FontHeight 8
+#define FontWidth 6
+
+#define MatrixRows (DisplayHeight / FontHeight)
+#define MatrixCols (DisplayWidth / FontWidth)
+
+struct CharacterMatrix {
+ uint8_t display[MatrixRows][MatrixCols];
+ uint8_t *cursor;
+ bool dirty;
+};
+
+struct CharacterMatrix display;
+
+bool iota_gfx_init(bool rotate);
+void iota_gfx_task(void);
+bool iota_gfx_off(void);
+bool iota_gfx_on(void);
+void iota_gfx_flush(void);
+void iota_gfx_write_char(uint8_t c);
+void iota_gfx_write(const char *data);
+void iota_gfx_write_P(const char *data);
+void iota_gfx_clear_screen(void);
+
+void iota_gfx_task_user(void);
+
+void matrix_clear(struct CharacterMatrix *matrix);
+void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c);
+void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c);
+void matrix_write(struct CharacterMatrix *matrix, const char *data);
+void matrix_write_ln(struct CharacterMatrix *matrix, const char *data);
+void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
+void matrix_render(struct CharacterMatrix *matrix);
+
+bool process_record_gfx(uint16_t keycode, keyrecord_t *record);
\ No newline at end of file
From ac7a9e3c66c59c8f35202269eebac692bb4c3716 Mon Sep 17 00:00:00 2001
From: Masayuki Sunahara
Date: Sun, 6 Jan 2019 02:35:48 +0900
Subject: [PATCH 10/29] add Pinky keyboard (#4748)
add Pinky (https://github.com/tamanishi/Pinky3) keyboard
---
keyboards/pinky/3/3.c | 1 +
keyboards/pinky/3/3.h | 46 ++++
keyboards/pinky/3/config.h | 246 +++++++++++++++++++++
keyboards/pinky/3/keymaps/default/config.h | 31 +++
keyboards/pinky/3/keymaps/default/keymap.c | 134 +++++++++++
keyboards/pinky/3/keymaps/default/rules.mk | 18 ++
keyboards/pinky/3/rules.mk | 1 +
keyboards/pinky/4/4.c | 1 +
keyboards/pinky/4/4.h | 51 +++++
keyboards/pinky/4/config.h | 246 +++++++++++++++++++++
keyboards/pinky/4/keymaps/default/config.h | 31 +++
keyboards/pinky/4/keymaps/default/keymap.c | 154 +++++++++++++
keyboards/pinky/4/keymaps/default/rules.mk | 18 ++
keyboards/pinky/4/rules.mk | 1 +
keyboards/pinky/config.h | 20 ++
keyboards/pinky/pinky.c | 43 ++++
keyboards/pinky/pinky.h | 29 +++
keyboards/pinky/readme.md | 25 +++
keyboards/pinky/rules.mk | 85 +++++++
19 files changed, 1181 insertions(+)
create mode 100644 keyboards/pinky/3/3.c
create mode 100644 keyboards/pinky/3/3.h
create mode 100644 keyboards/pinky/3/config.h
create mode 100644 keyboards/pinky/3/keymaps/default/config.h
create mode 100644 keyboards/pinky/3/keymaps/default/keymap.c
create mode 100644 keyboards/pinky/3/keymaps/default/rules.mk
create mode 100644 keyboards/pinky/3/rules.mk
create mode 100644 keyboards/pinky/4/4.c
create mode 100644 keyboards/pinky/4/4.h
create mode 100644 keyboards/pinky/4/config.h
create mode 100644 keyboards/pinky/4/keymaps/default/config.h
create mode 100644 keyboards/pinky/4/keymaps/default/keymap.c
create mode 100644 keyboards/pinky/4/keymaps/default/rules.mk
create mode 100644 keyboards/pinky/4/rules.mk
create mode 100644 keyboards/pinky/config.h
create mode 100644 keyboards/pinky/pinky.c
create mode 100644 keyboards/pinky/pinky.h
create mode 100644 keyboards/pinky/readme.md
create mode 100644 keyboards/pinky/rules.mk
diff --git a/keyboards/pinky/3/3.c b/keyboards/pinky/3/3.c
new file mode 100644
index 00000000000..200510d0aa2
--- /dev/null
+++ b/keyboards/pinky/3/3.c
@@ -0,0 +1 @@
+#include "pinky.h"
diff --git a/keyboards/pinky/3/3.h b/keyboards/pinky/3/3.h
new file mode 100644
index 00000000000..ca1109d262a
--- /dev/null
+++ b/keyboards/pinky/3/3.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include "../pinky.h"
+
+//void promicro_bootloader_jmp(bool program);
+#include "quantum.h"
+
+#ifdef USE_I2C
+#include
+#ifdef __AVR__
+ #include
+ #include
+#endif
+#endif
+
+//void promicro_bootloader_jmp(bool program);
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, R30, R31, R32, R33 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { KC_NO, KC_NO, KC_NO, L30, L31, L32, L33 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, KC_NO, R33, R32, R31, R30 } \
+ }
+
+#define LAYOUT_kc( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, R30, R31, R32, R33 \
+ ) \
+ LAYOUT( \
+ KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \
+ KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \
+ KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \
+ KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##R30, KC_##R31, KC_##R32, KC_##R33 \
+ )
diff --git a/keyboards/pinky/3/config.h b/keyboards/pinky/3/config.h
new file mode 100644
index 00000000000..1b120b9cb0e
--- /dev/null
+++ b/keyboards/pinky/3/config.h
@@ -0,0 +1,246 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER tamanishi
+#define PRODUCT Pinky
+#define DESCRIPTION A split keyboard with 3 or 4 x7 vertically staggered keys and 4 thumb keys
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+
+// wiring of each half
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #define RGBLIGHT_HUE_STEP 8
+// #define RGBLIGHT_SAT_STEP 8
+// #define RGBLIGHT_VAL_STEP 8
+// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+// /*== all animations enable ==*/
+// #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+// #define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+// #define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1 H
+//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/pinky/3/keymaps/default/config.h b/keyboards/pinky/3/keymaps/default/config.h
new file mode 100644
index 00000000000..db797767299
--- /dev/null
+++ b/keyboards/pinky/3/keymaps/default/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+#define RETRO_TAPPPING
diff --git a/keyboards/pinky/3/keymaps/default/keymap.c b/keyboards/pinky/3/keymaps/default/keymap.c
new file mode 100644
index 00000000000..94ed82b02ed
--- /dev/null
+++ b/keyboards/pinky/3/keymaps/default/keymap.c
@@ -0,0 +1,134 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST
+};
+
+#define ________ KC_TRNS
+#define XXXXXXXX KC_NO
+#define KC_LOWER LOWER
+#define KC_RAISE RAISE
+#define KC_ADJ ADJUST
+#define KC_CTLTB CTL_T(KC_TAB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LPRN, KC_RPRN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_CTLTB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ADJ, KC_ADJ, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_LALT, KC_LOWER, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RAISE, KC_RALT \
+ //`---------------------------------------' `---------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, ________, ________, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, KC_MINS, KC_EQL, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________ \
+ //`---------------------------------------' `---------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, ________, ________, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, KC_MINS, KC_EQL, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________ \
+ //`---------------------------------------' `---------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ ________, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, KC_F11, KC_F12, ________, ________, ________, KC_LCBR, KC_RCBR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________ \
+ //`---------------------------------------' `---------------------------------------'
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ // set_timelog();
+ }
+
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/pinky/3/keymaps/default/rules.mk b/keyboards/pinky/3/keymaps/default/rules.mk
new file mode 100644
index 00000000000..17686980935
--- /dev/null
+++ b/keyboards/pinky/3/keymaps/default/rules.mk
@@ -0,0 +1,18 @@
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
diff --git a/keyboards/pinky/3/rules.mk b/keyboards/pinky/3/rules.mk
new file mode 100644
index 00000000000..1bb8bf6d7fd
--- /dev/null
+++ b/keyboards/pinky/3/rules.mk
@@ -0,0 +1 @@
+# empty
diff --git a/keyboards/pinky/4/4.c b/keyboards/pinky/4/4.c
new file mode 100644
index 00000000000..200510d0aa2
--- /dev/null
+++ b/keyboards/pinky/4/4.c
@@ -0,0 +1 @@
+#include "pinky.h"
diff --git a/keyboards/pinky/4/4.h b/keyboards/pinky/4/4.h
new file mode 100644
index 00000000000..ad105ce7fc5
--- /dev/null
+++ b/keyboards/pinky/4/4.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "../pinky.h"
+
+//void promicro_bootloader_jmp(bool program);
+#include "quantum.h"
+
+#ifdef USE_I2C
+#include
+#ifdef __AVR__
+ #include
+ #include
+#endif
+#endif
+
+//void promicro_bootloader_jmp(bool program);
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, R40, R41, R42, R43 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { KC_NO, KC_NO, KC_NO, L40, L41, L42, L43 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { KC_NO, KC_NO, KC_NO, R43, R42, R41, R40 } \
+ }
+
+#define LAYOUT_kc( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, R40, R41, R42, R43 \
+ ) \
+ LAYOUT( \
+ KC_##L00, KC_##L01, KC_##L02, KC_##L03, KC_##L04, KC_##L05, KC_##L06, KC_##R00, KC_##R01, KC_##R02, KC_##R03, KC_##R04, KC_##R05, KC_##R06, \
+ KC_##L10, KC_##L11, KC_##L12, KC_##L13, KC_##L14, KC_##L15, KC_##L16, KC_##R10, KC_##R11, KC_##R12, KC_##R13, KC_##R14, KC_##R15, KC_##R16, \
+ KC_##L20, KC_##L21, KC_##L22, KC_##L23, KC_##L24, KC_##L25, KC_##L26, KC_##R20, KC_##R21, KC_##R22, KC_##R23, KC_##R24, KC_##R25, KC_##R26, \
+ KC_##L30, KC_##L31, KC_##L32, KC_##L33, KC_##L34, KC_##L35, KC_##L36, KC_##R30, KC_##R31, KC_##R32, KC_##R33, KC_##R34, KC_##R35, KC_##R36, \
+ KC_##L40, KC_##L41, KC_##L42, KC_##L43, KC_##R40, KC_##R41, KC_##R42, KC_##R43 \
+ )
diff --git a/keyboards/pinky/4/config.h b/keyboards/pinky/4/config.h
new file mode 100644
index 00000000000..2348d408454
--- /dev/null
+++ b/keyboards/pinky/4/config.h
@@ -0,0 +1,246 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER tamanishi
+#define PRODUCT Pinky
+#define DESCRIPTION A split keyboard with 3 or 4 x7 vertically staggered keys and 4 thumb keys
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+
+// wiring of each half
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #define RGBLIGHT_HUE_STEP 8
+// #define RGBLIGHT_SAT_STEP 8
+// #define RGBLIGHT_VAL_STEP 8
+// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+// /*== all animations enable ==*/
+// #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+// #define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+// #define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1 H
+//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/pinky/4/keymaps/default/config.h b/keyboards/pinky/4/keymaps/default/config.h
new file mode 100644
index 00000000000..db797767299
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/default/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+#define RETRO_TAPPPING
diff --git a/keyboards/pinky/4/keymaps/default/keymap.c b/keyboards/pinky/4/keymaps/default/keymap.c
new file mode 100644
index 00000000000..ee43194dd8b
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/default/keymap.c
@@ -0,0 +1,154 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST
+};
+
+#define ________ KC_TRNS
+#define XXXXXXXX KC_NO
+#define KC_LOWER LOWER
+#define KC_RAISE RAISE
+#define KC_ADJ ADJUST
+#define KC_CTLTB CTL_T(KC_TAB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LPRN, KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_CTLTB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LCBR, KC_RCBR, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ADJ, KC_ADJ, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ KC_LALT, KC_LOWER, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RAISE, KC_RALT \
+ //`---------------------------------------' `---------------------------------------'
+ ),
+
+ [_LOWER] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ KC_GRV, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, KC_MINS, KC_EQL, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________ \
+ //`---------------------------------------' `---------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ KC_GRV, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, KC_MINS, KC_EQL, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________ \
+ //`---------------------------------------' `---------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT( \
+ //,---------------------------------------------------------------------. ,---------------------------------------------------------------------.
+ ________, 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_HOME, KC_PGDN, KC_PGUP, KC_END, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________,\
+ //|---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ ________, ________, ________, ________, ________, ________, ________, ________ \
+ //`---------------------------------------' `---------------------------------------'
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ // set_timelog();
+ }
+
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/pinky/4/keymaps/default/rules.mk b/keyboards/pinky/4/keymaps/default/rules.mk
new file mode 100644
index 00000000000..17686980935
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/default/rules.mk
@@ -0,0 +1,18 @@
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
diff --git a/keyboards/pinky/4/rules.mk b/keyboards/pinky/4/rules.mk
new file mode 100644
index 00000000000..1bb8bf6d7fd
--- /dev/null
+++ b/keyboards/pinky/4/rules.mk
@@ -0,0 +1 @@
+# empty
diff --git a/keyboards/pinky/config.h b/keyboards/pinky/config.h
new file mode 100644
index 00000000000..7f0c3c10ea9
--- /dev/null
+++ b/keyboards/pinky/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2018 'Masayuki Sunahara'
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/pinky/pinky.c b/keyboards/pinky/pinky.c
new file mode 100644
index 00000000000..9b98ea85d3f
--- /dev/null
+++ b/keyboards/pinky/pinky.c
@@ -0,0 +1,43 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include "pinky.h"
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+ matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+ // put your looping keyboard code here
+ // runs every cycle (a lot)
+
+ matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ // put your per-action keyboard code here
+ // runs for every action, just before processing by the firmware
+
+ return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+
+ led_set_user(usb_led);
+}
diff --git a/keyboards/pinky/pinky.h b/keyboards/pinky/pinky.h
new file mode 100644
index 00000000000..9cc5d8d5898
--- /dev/null
+++ b/keyboards/pinky/pinky.h
@@ -0,0 +1,29 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#ifndef PINKY_H
+#define PINKY_H
+
+#include "quantum.h"
+
+#ifdef KEYBOARD_pinky_3
+ #include "3.h"
+#endif
+
+#ifdef KEYBOARD_pinky_4
+ #include "4.h"
+#endif
+
+#endif
diff --git a/keyboards/pinky/readme.md b/keyboards/pinky/readme.md
new file mode 100644
index 00000000000..f9eb6ee2b85
--- /dev/null
+++ b/keyboards/pinky/readme.md
@@ -0,0 +1,25 @@
+Pinky
+===
+
+A split keyboard with 3 or 4 x7 vertically staggered keys and 4 thumb keys.
+An idea is inspired from [crkbd](https://github.com/foostan/crkbd), [Lily58](https://github.com/kata0510/Lily58), [Ergo42](https://github.com/Biacco42/Ergo42) and [Helix](https://github.com/MakotoKurauchi/helix).
+
+Keyboard Maintainer: [Masayuki Sunahara](https://github.com/tamanishi/) [@tamanishi](https://twitter.com/tamanishi)
+Hardware Supported: Pinky3(3rows) or Pinky4(4rows) PCB, Pro Micro
+Hardware Availability: [Pinky3 PCB & Case Data](https://github.com/tamanishi/Pinky3), [Pinky4 PCB & Case Data](https://github.com/tamanishi/Pinky4)
+
+Make example for pinky(3rows) keyboard (after setting up your build environment):
+
+ make pinky:default
+ or
+ make pinky/3:default
+
+Make example for pinky(4rows) keyboard (after setting up your build environment):
+
+ make pinky/4:default
+
+Install example for pinky(3rows) keyboard:
+
+ make pinky:default:avrdude
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/pinky/rules.mk b/keyboards/pinky/rules.mk
new file mode 100644
index 00000000000..1c0059d318b
--- /dev/null
+++ b/keyboards/pinky/rules.mk
@@ -0,0 +1,85 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# atmega32a bootloadHID
+BOOTLOADER = caterina
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = pinky/3
From 9153ff59d4996425df0cc9cd60b959cd45200f79 Mon Sep 17 00:00:00 2001
From: MechMerlin <30334081+mechmerlin@users.noreply.github.com>
Date: Sat, 5 Jan 2019 10:04:45 -0800
Subject: [PATCH 11/29] Keyboard: update readme with ps2avr flashing
instructions (#4776)
---
keyboards/mehkee96/readme.md | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/keyboards/mehkee96/readme.md b/keyboards/mehkee96/readme.md
index 9dfad2a79eb..a06f2e33e6a 100644
--- a/keyboards/mehkee96/readme.md
+++ b/keyboards/mehkee96/readme.md
@@ -12,5 +12,35 @@ Make example for this keyboard (after setting up your build environment):
make mehkee96:default
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+Flashing
+ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
+
+Windows:
+1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
+2. Place your keyboard into reset.
+3. Press the `Find Device` button and ensure that your keyboard is found.
+4. Press the `Open .hex File` button and locate the `.hex` file you created.
+5. Press the `Flash Device` button and wait for the process to complete.
+
+macOS:
+1. Install homebrew by typing the following:
+ ```
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+ ```
+2. Install `crosspack-avr`.
+ ```
+ brew cask install crosspack-avr
+ ```
+3. Install the following packages:
+ ```
+ brew install python
+ brew install pyusb
+ brew install --HEAD`https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+ ```
+
+4. Place your keyboard into reset.
+5. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
+
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
From 27b512d9f550dd1a42466733c0c3066742aeb300 Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Sat, 5 Jan 2019 15:34:19 -0800
Subject: [PATCH 12/29] Keyboard: Tradestation code tidy and readme refactor
(#4784)
* Tradestation: tidy code
- correct JSON syntax on info.json
- visual key alignment on info.json
- white space changes on rules.mk and tradestation.h (readability/QMK conventions)
* Tradestation: readme refactor
Modify readme.md to more closely match QMK template.
* Tradestation: readme update
Update The Board podcast link for libsyn.
---
keyboards/handwired/tradestation/info.json | 12 +++----
keyboards/handwired/tradestation/readme.md | 26 ++++++++-------
keyboards/handwired/tradestation/rules.mk | 3 +-
.../handwired/tradestation/tradestation.h | 32 +++++++++----------
4 files changed, 38 insertions(+), 35 deletions(-)
diff --git a/keyboards/handwired/tradestation/info.json b/keyboards/handwired/tradestation/info.json
index f26d4ec371f..e59c217cb70 100644
--- a/keyboards/handwired/tradestation/info.json
+++ b/keyboards/handwired/tradestation/info.json
@@ -2,14 +2,14 @@
"keyboard_name": "Tradestation",
"url": "",
"maintainer": "Flehrad",
- "bootloader": "",
- "width": 4.3,
- "height": 4.5,
+ "width": 4.375,
+ "height": 4.375,
"layouts": {
"LAYOUT_tradestation": {
- "layout": [{"x":0, "y":0}, {"x":1.1, "y":0}, {"x":2.2, "y":0}, {"x":3.3, "y":0}, {"x":0, "y":1.1}, {"x":1.1, "y":1.1}, {"x":2.2, "y":1.1}, {"x":3.3, "y":1.1}, {"x":0, "y":2.25, "w":2}, {"x":2.25, "y":2.25, "w":2}, {"x":0, "y":3.5, "w":2}, {"x":2.25, "y":3.5, "w":2}]
+ "layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25, "w":2},{"x":2.25, "y":2.25, "w":2},{"x":0, "y":3.5, "w":2},{"x":2.25, "y":3.5, "w":2}]
},
- "LAYOUT_ortho_4x4": {
- "layout": [{"x":0, "y":0}, {"x":1.1, "y":0}, {"x":2.2, "y":0}, {"x":3.3, "y":0}, {"x":0, "y":1.1}, {"x":1.1, "y":1.1}, {"x":2.2, "y":1.1}, {"x":3.3, "y":1.1}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2.25, "y":2.25}, {"x":3.25, "y":2.25}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2.25, "y":3.5}, {"x":3.25, "y":3.5}]
+ "LAYOUT_ortho_4x4": {
+ "layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25},{"x":1.125, "y":2.25},{"x":2.25, "y":2.25},{"x":3.375, "y":2.25},{"x":0, "y":3.5},{"x":1.125, "y":3.5},{"x":2.25, "y":3.5},{"x":3.375, "y":3.5}]
+ }
}
}
diff --git a/keyboards/handwired/tradestation/readme.md b/keyboards/handwired/tradestation/readme.md
index 69c0331a92c..3a8c39e2632 100644
--- a/keyboards/handwired/tradestation/readme.md
+++ b/keyboards/handwired/tradestation/readme.md
@@ -1,25 +1,27 @@
# Tradestation
-QMK for Tradestation Macropad
-This macropad was layout designed by Didier Luximon
+[Image Gallery](https://imgur.com/a/yxQJXMT)
+
+A 4x4 ortholinear macropad, with options for 2U keys on the bottom half. Can be built as single PCB with custom case, or as two-PCB style with standoffs. Requires a Pro Micro.
This PCB supports an overall 4x4 matrix with unique spacing.
+
* Top two rows are 1U keys with 1/8U spacing
* Bottom two rows are available with 4x2 1U as clusters of 2x1U or as 2x2 2U, spaced with 1/4U
-For QMK Configurator, the info.json is utilised.
-- For 2U keys , the first 1u row/column key assignment is the same as the 2u position.
+If you like this simple PCB and want to make a donation, you can do so at [paypal.me/theboardpodcast](https://paypal.me/theboardpodcast).
-Build requires a pro micro.
+- [The Board Podcast on YouTube](https://www.youtube.com/channel/UCg98oJZNffR9nDLJNkorjqw)
+- [The Board Podcast on Libsyn](http://theboard.libsyn.com/)
+- [The Board Podcast on Patreon](https://www.patreon.com/theboardpodcast)
-Can be built as single PCB with custom case, or as two PCB style with standoffs.
+Designed by Didier Luximon.
-If you like this simple PCB and want to make a donation, you can at https://paypal.me/theboardpodcast
+Keyboard Maintainer: [flehrad](https://github.com/flehrad)
+Hardware Supported: Tradestation PCB, Pro Micro
-Check out our:
+Make example for this keyboard (after setting up your build environment):
-YouTube (https://www.youtube.com/channel/UCg98oJZNffR9nDLJNkorjqw)
+ make tradestation:default
-Podcast (www.libsyn.com/theboardpodcast)
-
-Patreon (www.patreon.com/theboardpodcast)
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/tradestation/rules.mk b/keyboards/handwired/tradestation/rules.mk
index 9d49888b5fb..649b63babf9 100644
--- a/keyboards/handwired/tradestation/rules.mk
+++ b/keyboards/handwired/tradestation/rules.mk
@@ -62,4 +62,5 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:/
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
- LAYOUTS = ortho_4x4
+
+LAYOUTS = ortho_4x4
diff --git a/keyboards/handwired/tradestation/tradestation.h b/keyboards/handwired/tradestation/tradestation.h
index 15e40e3b519..60b53b7ddf1 100644
--- a/keyboards/handwired/tradestation/tradestation.h
+++ b/keyboards/handwired/tradestation/tradestation.h
@@ -3,25 +3,25 @@
#include "quantum.h"
#define LAYOUT_ortho_4x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, \
- K30, K31, K32, K33 \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33 \
) { \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, K23 }, \
- { K30, K31, K32, K33 } \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 } \
}
#define LAYOUT_tradestation( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K22, \
- K30, K32 \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K22, \
+ K30, K32 \
) { \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, KC_NO, K22, KC_NO }, \
- { K30, KC_NO, K32, KC_NO } \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, KC_NO, K22, KC_NO }, \
+ { K30, KC_NO, K32, KC_NO } \
}
From 90046af17fb3ffe1dfe57d87b83a894ce925f3c1 Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Sat, 5 Jan 2019 15:34:38 -0800
Subject: [PATCH 13/29] Keyboard: Numbrero: Configurator fix and code tidy
(#4787)
* Numbrero: fix Configurator mismatch
Key object order in info.json didn't match the layout macro, leading to keys being assigned out-of-sequence.
* Numbrero: tidy
- white space changes in numbrero.h (alignment/readability/QMK conventions)
- minor changes to readme.md (grammar, mostly)
---
keyboards/handwired/numbrero/info.json | 57 ++++++++++++++++++++++---
keyboards/handwired/numbrero/numbrero.h | 38 ++++++++---------
keyboards/handwired/numbrero/readme.md | 6 +--
3 files changed, 73 insertions(+), 28 deletions(-)
diff --git a/keyboards/handwired/numbrero/info.json b/keyboards/handwired/numbrero/info.json
index 85c4b48275e..d2f7ebd031d 100644
--- a/keyboards/handwired/numbrero/info.json
+++ b/keyboards/handwired/numbrero/info.json
@@ -5,11 +5,58 @@
"width": 5,
"height": 5,
"layouts": {
- "LAYOUT_numbrero_numpad": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1, "h":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "h":2}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4, "w":2}, {"x":3, "y":4}]
- },
- "LAYOUT_numbrero_ortho": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1, "h":1.5}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":0, "y":2.5}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":0, "y":3.5, "h":1.5}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}]
+ "LAYOUT_numbrero_numpad": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0},
+ {"label":"K01", "x":1, "y":0},
+ {"label":"K02", "x":2, "y":0},
+ {"label":"K03", "x":3, "y":0},
+ {"label":"K04", "x":4, "y":0},
+ {"label":"K10", "x":0, "y":1, "h":1.5},
+ {"label":"K11", "x":1, "y":1},
+ {"label":"K12", "x":2, "y":1},
+ {"label":"K13", "x":3, "y":1},
+ {"label":"K20", "x":0, "y":2.5},
+ {"label":"K21", "x":1, "y":2},
+ {"label":"K22", "x":2, "y":2},
+ {"label":"K23", "x":3, "y":2},
+ {"label":"K14", "x":4, "y":1, "h":2},
+ {"label":"K30", "x":0, "y":3.5, "h":1.5},
+ {"label":"K31", "x":1, "y":3},
+ {"label":"K32", "x":2, "y":3},
+ {"label":"K33", "x":3, "y":3},
+ {"label":"K41", "x":1, "y":4, "w":2},
+ {"label":"K43", "x":3, "y":4},
+ {"label":"K34", "x":4, "y":3, "h":2}
+ ]
+ },
+ "LAYOUT_numbrero_ortho": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0},
+ {"label":"K01", "x":1, "y":0},
+ {"label":"K02", "x":2, "y":0},
+ {"label":"K03", "x":3, "y":0},
+ {"label":"K04", "x":4, "y":0},
+ {"label":"K10", "x":0, "y":1, "h":1.5},
+ {"label":"K11", "x":1, "y":1},
+ {"label":"K12", "x":2, "y":1},
+ {"label":"K13", "x":3, "y":1},
+ {"label":"K14", "x":4, "y":1},
+ {"label":"K20", "x":0, "y":2.5},
+ {"label":"K21", "x":1, "y":2},
+ {"label":"K22", "x":2, "y":2},
+ {"label":"K23", "x":3, "y":2},
+ {"label":"K24", "x":4, "y":2},
+ {"label":"K30", "x":0, "y":3.5, "h":1.5},
+ {"label":"K31", "x":1, "y":3},
+ {"label":"K32", "x":2, "y":3},
+ {"label":"K33", "x":3, "y":3},
+ {"label":"K34", "x":4, "y":3},
+ {"label":"K41", "x":1, "y":4},
+ {"label":"K42", "x":2, "y":4},
+ {"label":"K43", "x":3, "y":4},
+ {"label":"K44", "x":4, "y":4}
+ ]
}
}
}
diff --git a/keyboards/handwired/numbrero/numbrero.h b/keyboards/handwired/numbrero/numbrero.h
index d4aff8b8805..c72e6540788 100644
--- a/keyboards/handwired/numbrero/numbrero.h
+++ b/keyboards/handwired/numbrero/numbrero.h
@@ -3,28 +3,28 @@
#include "quantum.h"
#define LAYOUT_numbrero_numpad( \
- K00, K01, K02, K03, K04, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, K14, \
- K30, K31, K32, K33, \
- K41, K43, K34 \
+ K00, K01, K02, K03, K04, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, K14, \
+ K30, K31, K32, K33, \
+ K41, K43, K34 \
) { \
- { K00, K01, K02, K03, K04 }, \
- { K10, K11, K12, K13, K14 }, \
- { K20, K21, K22, K23, KC_NO }, \
- { K30, K31, K32, K33, K34 }, \
- { KC_NO, K41, KC_NO, K43, KC_NO } \
+ { K00, K01, K02, K03, K04 }, \
+ { K10, K11, K12, K13, K14 }, \
+ { K20, K21, K22, K23, KC_NO }, \
+ { K30, K31, K32, K33, K34 }, \
+ { KC_NO, K41, KC_NO, K43, KC_NO } \
}
#define LAYOUT_numbrero_ortho(\
K00, K01, K02, K03, K04, \
- K10, K11, K12, K13, K14, \
- K20, K21, K22, K23, K24, \
- K30, K31, K32, K33, K34, \
- K41, K42, K43, K44 \
+ K10, K11, K12, K13, K14, \
+ K20, K21, K22, K23, K24, \
+ K30, K31, K32, K33, K34, \
+ K41, K42, K43, K44 \
){ \
- { K00, K01, K02, K03, K04 }, \
- { K10, K11, K12, K13, K14 }, \
- { K20, K21, K22, K23, K24 }, \
- { K30, K31, K32, K33, K34 }, \
- { KC_NO, K41, K42, K43, K44 } \
+ { K00, K01, K02, K03, K04 }, \
+ { K10, K11, K12, K13, K14 }, \
+ { K20, K21, K22, K23, K24 }, \
+ { K30, K31, K32, K33, K34 }, \
+ { KC_NO, K41, K42, K43, K44 } \
}
diff --git a/keyboards/handwired/numbrero/readme.md b/keyboards/handwired/numbrero/readme.md
index a69eeefd435..42f005dbe23 100644
--- a/keyboards/handwired/numbrero/readme.md
+++ b/keyboards/handwired/numbrero/readme.md
@@ -1,11 +1,9 @@
# Numbrero
-No picture currently available.
-
-A Reversible Numpad (Left/Right handed) with extra macro keys.
+A reversible numpad (left/right-handed) with extra macro keys.
Keyboard Maintainer: [Flehrad](https://github.com/flehrad)
-Hardware Supported: Numbrero PCB.
+Hardware Supported: Numbrero PCB, Pro Micro
Hardware Availability: The Board Podcast Slack
Make example for this keyboard (after setting up your build environment):
From 4aaa4b3428367c0bee187c17dc05063b10284502 Mon Sep 17 00:00:00 2001
From: mikethetiger <30720424+mikethetiger@users.noreply.github.com>
Date: Sun, 6 Jan 2019 12:36:24 -0600
Subject: [PATCH 14/29] Keymap: added my espectro keymap (#4791)
* adding my planck keymap
* adding my planck keymap
* added my espectro keymap
---
.../espectro/keymaps/mikethetiger/keymap.c | 88 +++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100644 keyboards/espectro/keymaps/mikethetiger/keymap.c
diff --git a/keyboards/espectro/keymaps/mikethetiger/keymap.c b/keyboards/espectro/keymaps/mikethetiger/keymap.c
new file mode 100644
index 00000000000..e594184ca53
--- /dev/null
+++ b/keyboards/espectro/keymaps/mikethetiger/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2018 @TurboMech /u/TurboMech @A9entOran9e#6134
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+#include QMK_KEYBOARD_H
+
+#define _BL 0 //Base layer
+#define _FN1 1 //Function layer
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* BL
+____________________________________________________________________________________________________________________________________________________________________________
+| | | | | | | | | | | | | | | | | | | |
+| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL | PRT SC | SCR LK | PAUSE | P UP | P DOWN |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
+| | | | | | | | | | | | | | BACK | NUM | | | |
+| ~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ - | = + | SPACE | LOCK | / | * | - |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|_________________|________|________|________|________|
+| | | | | | | | | | | | [ | ] | | | | | |
+| TAB | Q | W | E | R | T | Y | U | I | O | P | { | } | | \ | 7 | 8 | 9 | |
+|____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________| + |
+| | | | | | | | | | | ; | ' | | | | | |
+| CAPS LOCK | A | S | D | F | G | H | J | K | L | : | " | ENTER | 4 | 5 | 6 | |
+|______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________|
+| | | | | | | | | , | . | / | | | | | | |
+| SHIFT | Z | X | C | V | B | N | M | < | > | ? | SHIFT | UP | 1 | 2 | 3 | |
+|__________________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________| ENTER |
+| | | | | | | MO | | | | | | |
+| CTRL | LGUI | L ALT | SPACE | VOL Dn | VOL Up | _FN | LEFT | DOWN | RIGHT | 0 | . | |
+|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
+ */
+
+ [_BL] = LAYOUT_default(
+ 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_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, \
+ 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_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
+ 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_P7, KC_P8, KC_P9, KC_PPLS, \
+ 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, \
+ KC_LSPO, 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, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_VOLD, KC_VOLU, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ ),
+
+/* FN_1
+____________________________________________________________________________________________________________________________________________________________________________
+| | | | | | | | | | | | | | | VOL | VOL | NEXT | | |
+| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
+| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
+| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
+|________|________|________|________|________|INCREASE|DECREASE|INCREASE|DECREASE|________|________|________|________|_________________|________|________|________|________|
+| | BACK | BACK | | | | | | | | | | | | | | | |
+| | LIGHT | LIGHT | | | | | | | | | | | | | | | |
+|____________| TOGGLE |INCREASE|DECREASE|________|________|________|________|________|________|________|________|________|_____________|________|________|________| |
+| | | | | | | | | | | | | | | | | |
+| | | | | | | | | | | | | | | | | |
+|______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________|
+| | | | | | | | | | | | | | | | | |
+| | | | | | | | | | | | | | | | | |
+|__________________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________| |
+| | | | | | | | | | | | | |
+| | | | | | | | | | | | | |
+|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
+ */
+
+ [_FN1] = LAYOUT_default(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
+ _______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+
+};
+
From 2c0bc5ed6be737e98377fa2299102f6737bbea72 Mon Sep 17 00:00:00 2001
From: noroadsleft <18669334+noroadsleft@users.noreply.github.com>
Date: Sun, 6 Jan 2019 11:05:24 -0800
Subject: [PATCH 15/29] Keyboard: Fractal layout macro and readme cleanup
(#4789)
* Fractal: layout macro cleanup
Removed KEYMAP alias for LAYOUT_preonic_mit. Alias was unused, and the terminology usage is deprecated.
* Fractal: readme cleanup
Updated the line containing the documentation links in the readme.
* Fractal: disable preonic_mit community layout
QMK doesn't have a preonic_mit community layout at this time.
Disables preonic_mit as an option for community layout. Can be re-enabled when the layout is added.
---
keyboards/fractal/fractal.h | 7 +------
keyboards/fractal/readme.md | 2 +-
keyboards/fractal/rules.mk | 2 +-
3 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/keyboards/fractal/fractal.h b/keyboards/fractal/fractal.h
index 1eefcecd753..0af7c22390a 100755
--- a/keyboards/fractal/fractal.h
+++ b/keyboards/fractal/fractal.h
@@ -1,5 +1,4 @@
-#ifndef FRACTAL_H
-#define FRACTAL_H
+#pragma once
#include "quantum.h"
@@ -30,7 +29,3 @@
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 }, \
{ K400, K401, K402, K403, K404, KC_NO, K406, K407, K408, K409, K410, K411 } \
}
-
-#define KEYMAP LAYOUT_preonic_mit
-
-#endif
diff --git a/keyboards/fractal/readme.md b/keyboards/fractal/readme.md
index 1bb41cf7ffb..3b9e59d2172 100644
--- a/keyboards/fractal/readme.md
+++ b/keyboards/fractal/readme.md
@@ -11,4 +11,4 @@ Make example for this keyboard (after setting up your build environment):
make fractal:default
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk
index b5808c15eaf..0de2a7d39f7 100755
--- a/keyboards/fractal/rules.mk
+++ b/keyboards/fractal/rules.mk
@@ -57,5 +57,5 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
-LAYOUTS = preonic_mit ortho_5x12
+LAYOUTS = ortho_5x12 # preonic_mit
LAYOUTS_HAS_RGB = no
From 2bfac351edebc6e141d3291448512b0e228e5c47 Mon Sep 17 00:00:00 2001
From: yiancar
Date: Mon, 7 Jan 2019 01:22:19 +0000
Subject: [PATCH 16/29] Final HS60v2 changes. (#4790)
* initial commit, this now mostly works
- RGB controls work
- Dynamic keymap still broken due to eeprom
- Via works
* STM32 eeprom update
- Update EEPROM emulation library to handle 8bit data like AVR.
- This library also allows for multiple page pairs resulting in greater EEPROM size flexibility
* hs60 changes
* HS60 hhkb added
* Update keyboards/hs60/v2/config.h
Co-Authored-By: yiancar
---
drivers/issi/is31fl3733.c | 2 +-
keyboards/hs60/v2/config.h | 91 ++-
keyboards/hs60/v2/keymaps/ansi/config.h | 2 +
keyboards/hs60/v2/keymaps/ansi/keymap.c | 22 +-
keyboards/hs60/v2/keymaps/ansi/readme.md | 6 +-
keyboards/hs60/v2/keymaps/default/keymap.c | 20 +-
keyboards/hs60/v2/keymaps/default/readme.md | 6 +-
keyboards/hs60/v2/keymaps/hhkb/config.h | 13 +
keyboards/hs60/v2/keymaps/hhkb/keymap.c | 34 +-
keyboards/hs60/v2/keymaps/hhkb/readme.md | 6 +
keyboards/hs60/v2/mcuconf.h | 2 +-
keyboards/hs60/v2/rules.mk | 18 +-
keyboards/hs60/v2/v2.c | 621 +---------------
keyboards/hs60/v2/v2.h | 7 +-
keyboards/zeal60/rgb_backlight.c | 287 +++++++-
tmk_core/common/chibios/eeprom_stm32.c | 744 ++++----------------
tmk_core/common/chibios/eeprom_stm32.h | 68 +-
tmk_core/common/chibios/flash_stm32.c | 15 +
tmk_core/common/chibios/flash_stm32.h | 1 +
tmk_core/common/eeconfig.c | 4 +-
tmk_core/common/eeconfig.h | 21 +-
tmk_core/common/eeprom.h | 1 -
tmk_core/protocol/chibios/main.c | 2 +-
23 files changed, 630 insertions(+), 1363 deletions(-)
create mode 100644 keyboards/hs60/v2/keymaps/hhkb/readme.md
diff --git a/drivers/issi/is31fl3733.c b/drivers/issi/is31fl3733.c
index c198ec51746..c18ed7ca30b 100644
--- a/drivers/issi/is31fl3733.c
+++ b/drivers/issi/is31fl3733.c
@@ -24,10 +24,10 @@
#include "wait.h"
#endif
+#include "is31fl3733.h"
#include
#include "i2c_master.h"
#include "progmem.h"
-#include "rgb_matrix.h"
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
diff --git a/keyboards/hs60/v2/config.h b/keyboards/hs60/v2/config.h
index 192f7d6f25d..bc1681ffd15 100644
--- a/keyboards/hs60/v2/config.h
+++ b/keyboards/hs60/v2/config.h
@@ -20,9 +20,9 @@ along with this program. If not, see .
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0258
-#define DEVICE_VER 0x0001
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x4853
+#define DEVICE_VER 0x0002
#define MANUFACTURER Yiancar-Designs
#define PRODUCT HS60 V2
#define DESCRIPTION GH60 compatible, tool free RGB keyboard
@@ -39,7 +39,7 @@ along with this program. If not, see .
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCE 0
+#define DEBOUNCING_DELAY 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
@@ -70,48 +70,63 @@ along with this program. If not, see .
*/
//#define FORCE_NKRO
-/*
- * Magic Key Options
- *
- * Magic keys are hotkey commands that allow control over firmware functions of
- * the keyboard. They are best used in combination with the HID Listen program,
- * found here: https://www.pjrc.com/teensy/hid_listen.html
- *
- * The options below allow the magic key functionality to be changed. This is
- * useful if your keyboard/keypad is missing keys and you want magic key support.
- *
- */
-
/* key combination for magic key command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
/* Backlight options */
-#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
-#define RGB_MATRIX_SKIP_FRAMES 3
+#define RGB_BACKLIGHT_ENABLED 1
-#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
+#define RGB_BACKLIGHT_HS60
+
+// they aren't really used if RGB_BACKLIGHT_HS60 defined
+#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
+#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
+#define RGB_BACKLIGHT_USE_ISO_ENTER 0
+#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default effect (RGB test)
+#define RGB_BACKLIGHT_EFFECT 255
#define DRIVER_COUNT 2
-#ifdef HS60_ANSI
-#define DRIVER_1_LED_TOTAL 61
-#else
-#define DRIVER_1_LED_TOTAL 62
-#endif
+#define DRIVER_LED_TOTAL 64
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0010000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011110000000111
+
+// TODO: refactor with new user EEPROM code (coming soon)
+#define EEPROM_MAGIC 0x451F
+#define EEPROM_MAGIC_ADDR 32
+// Bump this every time we change what we store
+// This will automatically reset the EEPROM with defaults
+// and avoid loading invalid data from the EEPROM
+#define EEPROM_VERSION 0x08
+#define EEPROM_VERSION_ADDR 34
+
+// Backlight config starts after EEPROM version
+#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
+// Dynamic keymap starts after backlight config (35+31)
+#define DYNAMIC_KEYMAP_EEPROM_ADDR 66
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560)
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398
+#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/hs60/v2/keymaps/ansi/config.h b/keyboards/hs60/v2/keymaps/ansi/config.h
index f51cc16d853..96adaf56884 100644
--- a/keyboards/hs60/v2/keymaps/ansi/config.h
+++ b/keyboards/hs60/v2/keymaps/ansi/config.h
@@ -19,3 +19,5 @@ along with this program. If not, see .
/* Include overwrites for specific keymap */
#define HS60_ANSI
+#undef PRODUCT_ID
+#define PRODUCT_ID 0x4854
diff --git a/keyboards/hs60/v2/keymaps/ansi/keymap.c b/keyboards/hs60/v2/keymaps/ansi/keymap.c
index 923af9e2ce0..ba649470b41 100644
--- a/keyboards/hs60/v2/keymaps/ansi/keymap.c
+++ b/keyboards/hs60/v2/keymaps/ansi/keymap.c
@@ -26,11 +26,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_ansi( /* FN */
- KC_TRNS, 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_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,\
+ 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, KC_DEL ,\
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,\
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
void matrix_init_user(void) {
diff --git a/keyboards/hs60/v2/keymaps/ansi/readme.md b/keyboards/hs60/v2/keymaps/ansi/readme.md
index fa811319d38..650871a5e68 100644
--- a/keyboards/hs60/v2/keymaps/ansi/readme.md
+++ b/keyboards/hs60/v2/keymaps/ansi/readme.md
@@ -1,6 +1,6 @@
-The default keymap for ANSI HS60
-================================
+The default keymap for ANSI HS60 V2
+===================================
-
+
Default layer is normal ANSI and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/default/keymap.c b/keyboards/hs60/v2/keymaps/default/keymap.c
index 2a5e823618c..c1e575769fe 100644
--- a/keyboards/hs60/v2/keymaps/default/keymap.c
+++ b/keyboards/hs60/v2/keymaps/default/keymap.c
@@ -26,11 +26,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_iso( /* FN */
- KC_TRNS, 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_DEL ,\
+ 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, KC_DEL ,\
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
void matrix_init_user(void) {
diff --git a/keyboards/hs60/v2/keymaps/default/readme.md b/keyboards/hs60/v2/keymaps/default/readme.md
index 9125cb349e8..f0b29900e6b 100644
--- a/keyboards/hs60/v2/keymaps/default/readme.md
+++ b/keyboards/hs60/v2/keymaps/default/readme.md
@@ -1,6 +1,6 @@
-The default keymap for ISO HS60
-===============================
+The default keymap for ISO HS60 V2
+==================================
-
+
Default layer is normal ISO and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/hhkb/config.h b/keyboards/hs60/v2/keymaps/hhkb/config.h
index 3db403ecc5c..fc1b6d8f47b 100644
--- a/keyboards/hs60/v2/keymaps/hhkb/config.h
+++ b/keyboards/hs60/v2/keymaps/hhkb/config.h
@@ -19,3 +19,16 @@ along with this program. If not, see .
/* Include overwrites for specific keymap */
#define HS60_HHKB
+#undef PRODUCT_ID
+#define PRODUCT_ID 0x4855
+
+#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_0
+#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_1
+#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_2
+#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_3
+#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_4
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
diff --git a/keyboards/hs60/v2/keymaps/hhkb/keymap.c b/keyboards/hs60/v2/keymaps/hhkb/keymap.c
index d52fc4bac94..9641eedb492 100644
--- a/keyboards/hs60/v2/keymaps/hhkb/keymap.c
+++ b/keyboards/hs60/v2/keymaps/hhkb/keymap.c
@@ -19,18 +19,32 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_hhkb( /* Base */
- 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_GRV, KC_BSLS, \
- 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, \
- 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), \
- KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ),
+ 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_GRV, KC_BSLS,\
+ 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,\
+ 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),\
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ),
[1] = LAYOUT_60_hhkb( /* FN */
- RESET, 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_TRNS, KC_TRNS,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_UP, KC_TRNS, KC_DEL, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
+ RESET, 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_TRNS, KC_TRNS,\
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL, \
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \
+ KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+[2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+[3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
};
void matrix_init_user(void) {
diff --git a/keyboards/hs60/v2/keymaps/hhkb/readme.md b/keyboards/hs60/v2/keymaps/hhkb/readme.md
new file mode 100644
index 00000000000..69b812c6072
--- /dev/null
+++ b/keyboards/hs60/v2/keymaps/hhkb/readme.md
@@ -0,0 +1,6 @@
+The default keymap for HHKB HS60 V2
+===================================
+
+
+
+Default layer is normal HHKB with 7U space. Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
diff --git a/keyboards/hs60/v2/mcuconf.h b/keyboards/hs60/v2/mcuconf.h
index 226da48d593..ce608f904ed 100644
--- a/keyboards/hs60/v2/mcuconf.h
+++ b/keyboards/hs60/v2/mcuconf.h
@@ -139,7 +139,7 @@
#define STM32_GPT_USE_TIM1 FALSE
#define STM32_GPT_USE_TIM2 FALSE
#define STM32_GPT_USE_TIM3 FALSE
-#define STM32_GPT_USE_TIM4 FALSE
+#define STM32_GPT_USE_TIM4 TRUE
#define STM32_GPT_USE_TIM6 TRUE
#define STM32_GPT_USE_TIM7 TRUE
#define STM32_GPT_USE_TIM8 TRUE
diff --git a/keyboards/hs60/v2/rules.mk b/keyboards/hs60/v2/rules.mk
index 51e3cf0a3ec..a2850a83057 100644
--- a/keyboards/hs60/v2/rules.mk
+++ b/keyboards/hs60/v2/rules.mk
@@ -1,4 +1,9 @@
# project specific files
+SRC = keyboards/zeal60/zeal60.c \
+ keyboards/zeal60/rgb_backlight.c \
+ drivers/issi/is31fl3733.c \
+ quantum/color.c \
+ drivers/arm/i2c_master.c
## chip/board settings
# the next two should match the directories in
@@ -44,15 +49,18 @@ DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
# Build Options
# comment out to disable the options.
#
-BACKLIGHT_ENABLE = no
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
-AUDIO_ENABLE = no
-RGB_MATRIX_ENABLE = IS31FL3733 # Use RGB matrix
+AUDIO_ENABLE = no # Audio output on port C6
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
diff --git a/keyboards/hs60/v2/v2.c b/keyboards/hs60/v2/v2.c
index 4289c1fed5c..2e12538e9bb 100644
--- a/keyboards/hs60/v2/v2.c
+++ b/keyboards/hs60/v2/v2.c
@@ -13,623 +13,6 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#include "v2.h"
-
-//#include "is31fl3733.h"
-
-// Please ignore this is for upcoming features
-/*#ifdef RAW_ENABLE
-
-void raw_hid_receive( uint8_t *data, uint8_t length )
-{
- uint8_t command = data[0];
- switch ( command )
- {
- case id_protocol_version:
- {
- msg_protocol_version *msg = (msg_protocol_version*)&data[1];
- msg->version = PROTOCOL_VERSION;
- break;
- }
-#if USE_KEYMAPS_IN_EEPROM
- case id_keymap_keycode_load:
- {
- msg_keymap_keycode_load *msg = (msg_keymap_keycode_load*)&data[1];
- msg->keycode = keymap_keycode_load( msg->layer, msg->row, msg->column );
- break;
- }
- case id_keymap_keycode_save:
- {
- msg_keymap_keycode_save *msg = (msg_keymap_keycode_save*)&data[1];
- keymap_keycode_save( msg->layer, msg->row, msg->column, msg->keycode);
- break;
- }
- case id_keymap_default_save:
- {
- keymap_default_save();
- break;
- }
-#endif // USE_KEYMAPS_IN_EEPROM
- case id_backlight_config_set_values:
- {
- msg_backlight_config_set_values *msg = (msg_backlight_config_set_values*)&data[1];
- backlight_config_set_values(msg);
- backlight_config_save();
- break;
- }
- case id_backlight_config_set_alphas_mods:
- {
- msg_backlight_config_set_alphas_mods *msg = (msg_backlight_config_set_alphas_mods*)&data[1];
- backlight_config_set_alphas_mods( msg->alphas_mods );
- backlight_config_save();
- break;
- }
- case id_backlight_set_key_color:
- {
- msg_backlight_set_key_color *msg = (msg_backlight_set_key_color*)&data[1];
- backlight_set_key_color(msg->row, msg->column, msg->hsv);
- break;
- }
- case id_system_get_state:
- {
- msg_system_state *msg = (msg_system_state*)&data[1];
- msg->value = backlight_get_tick();
- break;
- }
- default:
- {
- // Unhandled message.
- data[0] = id_unhandled;
- break;
- }
- }
-
- // Return same buffer with values changed
- raw_hid_send( data, length );
-
-}
-
-#endif*/
-
-#ifdef HS60_ANSI
-
-const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, B_1, A_1, C_1}, //MX1
- {0, E_1, D_1, F_1}, //MX2
- {0, H_1, G_1, I_1}, //MX3
- {0, K_1, J_1, L_1}, //MX4
- {0, B_2, A_2, C_2}, //MX6
- {0, E_2, D_2, F_2}, //MX7
- {0, H_2, G_2, I_2}, //MX8
- {0, K_2, J_2, L_2}, //MX14
- {0, B_3, A_3, C_3}, //MX11
- {0, E_3, D_3, F_3}, //MX12
- {0, H_3, G_3, I_3}, //MX13
- {0, K_3, J_3, L_3}, //MX19
- {0, B_4, A_4, C_4}, //MX16
- {0, E_4, D_4, F_4}, //MX17
- {0, H_4, G_4, I_4}, //MX18
- {0, K_4, J_4, L_4}, //MX23
- {0, B_5, A_5, C_5}, //MX20
- {0, E_5, D_5, F_5}, //MX21
- {0, H_5, G_5, I_5}, //MX22
- {0, K_5, J_5, L_5}, //MX27
- {0, B_6, A_6, C_6}, //MX24
- {0, E_6, D_6, F_6}, //MX25
- {0, H_6, G_6, I_6}, //MX26
- {0, K_6, J_6, L_6}, //MX31
- {0, B_7, A_7, C_7}, //MX28
- {0, E_7, D_7, F_7}, //MX29
- {0, H_7, G_7, I_7}, //MX30
- {0, K_7, J_7, L_7}, //MX36
- {0, B_8, A_8, C_8}, //MX33
- {0, E_8, D_8, F_8}, //MX34
- {0, H_8, G_8, I_8}, //MX35
- {0, K_8, J_8, L_8}, //MX40
- {0, B_9, A_9, C_9}, //MX37
- {0, E_9, D_9, F_9}, //MX38
- {0, H_9, G_9, I_9}, //MX39
- {0, K_9, J_9, L_9}, //MX44
- {0, B_10, A_10, C_10}, //MX41
- {0, E_10, D_10, F_10}, //MX42
- {0, H_10, G_10, I_10}, //MX43
- {0, K_10, J_10, L_10}, //MX48
- {0, B_11, A_11, C_11}, //MX45
- {0, E_11, D_11, F_11}, //MX46
- {0, H_11, G_11, I_11}, //MX47
- {0, K_11, J_11, L_11}, //MX53
- {0, B_12, A_12, C_12}, //MX50
- {0, E_12, D_12, F_12}, //MX51
- {0, H_12, G_12, I_12}, //MX52
-
- {0, B_13, A_13, C_13}, //MX55
- {0, E_13, D_13, F_13}, //MX56
-
- {0, K_13, J_13, L_13}, //MX61
- {0, B_14, A_14, C_14}, //MX59
- {0, E_14, D_14, F_14}, //MX57
- {0, H_14, G_14, I_14}, //MX60
- {0, K_14, J_14, L_14}, //MX62
- {0, B_15, A_15, C_15}, //MX5
- {0, E_15, D_15, F_15}, //MX10
- {0, H_15, G_15, I_15}, //MX15
- {0, K_15, J_15, L_15}, //MX32
-
- {0, E_16, D_16, F_16}, //MX49
- {0, H_16, G_16, I_16}, //MX54
- {0, K_16, J_16, L_16}, //MX58
-};
-
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-//
-// MX1, MX6, MX11, MX16, MX20, MX24, MX28, MX33, MX37, MX41, MX45, MX50, MX55, MX59,
-// MX2, MX7, MX12, MX17, MX21, MX25, MX29, MX34, MX38, MX42, MX46, MX51, MX56, ---,
-// MX3, MX8, MX13, MX18, MX22, MX26, MX30, MX35, MX39, MX43, MX47, MX52, MX57, MX60,
-// MX4, ---, MX14, MX19, MX23, MX27, MX31, MX36, MX40, MX44, MX48, MX53, ---, MX61,
-// MX5, MX10, MX15, ---, ---, ---, MX32, ---, ---, ---, MX49, MX54, MX58, MX62
-/* {row | col << 4}
- * | {x=0..224, y=0..64}
- * | | modifier
- * | | | */
- {{0|(0<<4)}, { 0, 0}, 1}, //MX1
- {{1|(0<<4)}, { 0, 16}, 1}, //MX2
- {{2|(0<<4)}, { 0, 32}, 1}, //MX3
- {{3|(0<<4)}, { 0, 48}, 1}, //MX4
- {{0|(1<<4)}, { 17, 0}, 0}, //MX6
- {{1|(1<<4)}, { 17, 16}, 0}, //MX7
- {{2|(1<<4)}, { 17, 32}, 0}, //MX8
- {{3|(2<<4)}, { 34, 48}, 0}, //MX14
- {{0|(2<<4)}, { 34, 0}, 0}, //MX11
- {{1|(2<<4)}, { 34, 16}, 0}, //MX12
- {{2|(2<<4)}, { 34, 32}, 0}, //MX13
- {{3|(3<<4)}, { 51, 48}, 0}, //MX19
- {{0|(3<<4)}, { 51, 0}, 0}, //MX16
- {{1|(3<<4)}, { 51, 16}, 0}, //MX17
- {{2|(3<<4)}, { 51, 32}, 0}, //MX18
- {{3|(4<<4)}, { 68, 48}, 0}, //MX23
- {{0|(4<<4)}, { 68, 0}, 0}, //MX20
- {{1|(4<<4)}, { 68, 16}, 0}, //MX21
- {{2|(4<<4)}, { 68, 32}, 0}, //MX22
- {{3|(5<<4)}, { 85, 48}, 0}, //MX27
- {{0|(5<<4)}, { 85, 0}, 0}, //MX24
- {{1|(5<<4)}, { 85, 16}, 0}, //MX25
- {{2|(5<<4)}, { 85, 32}, 0}, //MX26
- {{3|(6<<4)}, {102, 48}, 0}, //MX31
- {{0|(6<<4)}, {102, 0}, 0}, //MX28
- {{1|(6<<4)}, {102, 16}, 0}, //MX29
- {{2|(6<<4)}, {102, 32}, 0}, //MX30
- {{3|(7<<4)}, {119, 48}, 0}, //MX36
- {{0|(7<<4)}, {119, 0}, 0}, //MX33
- {{1|(7<<4)}, {119, 16}, 0}, //MX34
- {{2|(7<<4)}, {119, 32}, 0}, //MX35
- {{3|(8<<4)}, {136, 48}, 0}, //MX40
- {{0|(8<<4)}, {136, 0}, 0}, //MX37
- {{1|(8<<4)}, {136, 16}, 0}, //MX38
- {{2|(8<<4)}, {136, 32}, 0}, //MX39
- {{3|(9<<4)}, {153, 48}, 0}, //MX44
- {{0|(9<<4)}, {153, 0}, 0}, //MX41
- {{1|(9<<4)}, {153, 16}, 0}, //MX42
- {{2|(9<<4)}, {153, 32}, 0}, //MX43
- {{3|(10<<4)}, {170, 48}, 0}, //MX48
- {{0|(10<<4)}, {170, 0}, 0}, //MX45
- {{1|(10<<4)}, {170, 16}, 0}, //MX46
- {{2|(10<<4)}, {170, 32}, 0}, //MX47
- {{3|(11<<4)}, {187, 48}, 0}, //MX53
- {{0|(11<<4)}, {187, 0}, 0}, //MX50
- {{1|(11<<4)}, {187, 16}, 0}, //MX51
- {{2|(11<<4)}, {187, 32}, 0}, //MX52
-
- {{0|(12<<4)}, {204, 0}, 0}, //MX55
- {{1|(12<<4)}, {204, 16}, 0}, //MX56
-
- {{3|(13<<4)}, {221, 48}, 1}, //MX61
- {{0|(13<<4)}, {221, 0}, 1}, //MX59
- {{2|(12<<4)}, {221, 16}, 0}, //MX57
- {{2|(13<<4)}, {221, 32}, 1}, //MX60
- {{4|(13<<4)}, {221, 64}, 1}, //MX62
- {{4|(0<<4)}, { 0, 64}, 1}, //MX5
- {{4|(1<<4)}, { 17, 64}, 1}, //MX10
- {{4|(2<<4)}, { 34, 64}, 1}, //MX15
- {{4|(5<<4)}, {102, 64}, 0}, //MX32
-
- {{4|(10<<4)}, {170, 64}, 1}, //MX49
- {{4|(11<<4)}, {187, 64}, 1}, //MX54
- {{4|(12<<4)}, {204, 64}, 1} //MX58
-};
-
-#elif defined(HS60_HHKB)
-
-const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, B_1, A_1, C_1}, //MX1
- {0, E_1, D_1, F_1}, //MX2
- {0, H_1, G_1, I_1}, //MX3
- {0, K_1, J_1, L_1}, //MX4
- {0, B_2, A_2, C_2}, //MX6
- {0, E_2, D_2, F_2}, //MX7
- {0, H_2, G_2, I_2}, //MX8
- {0, K_2, J_2, L_2}, //MX14
- {0, B_3, A_3, C_3}, //MX11
- {0, E_3, D_3, F_3}, //MX12
- {0, H_3, G_3, I_3}, //MX13
- {0, K_3, J_3, L_3}, //MX19
- {0, B_4, A_4, C_4}, //MX16
- {0, E_4, D_4, F_4}, //MX17
- {0, H_4, G_4, I_4}, //MX18
- {0, K_4, J_4, L_4}, //MX23
- {0, B_5, A_5, C_5}, //MX20
- {0, E_5, D_5, F_5}, //MX21
- {0, H_5, G_5, I_5}, //MX22
- {0, K_5, J_5, L_5}, //MX27
- {0, B_6, A_6, C_6}, //MX24
- {0, E_6, D_6, F_6}, //MX25
- {0, H_6, G_6, I_6}, //MX26
- {0, K_6, J_6, L_6}, //MX31
- {0, B_7, A_7, C_7}, //MX28
- {0, E_7, D_7, F_7}, //MX29
- {0, H_7, G_7, I_7}, //MX30
- {0, K_7, J_7, L_7}, //MX36
- {0, B_8, A_8, C_8}, //MX33
- {0, E_8, D_8, F_8}, //MX34
- {0, H_8, G_8, I_8}, //MX35
- {0, K_8, J_8, L_8}, //MX40
- {0, B_9, A_9, C_9}, //MX37
- {0, E_9, D_9, F_9}, //MX38
- {0, H_9, G_9, I_9}, //MX39
- {0, K_9, J_9, L_9}, //MX44
- {0, B_10, A_10, C_10}, //MX41
- {0, E_10, D_10, F_10}, //MX42
- {0, H_10, G_10, I_10}, //MX43
- {0, K_10, J_10, L_10}, //MX48
- {0, B_11, A_11, C_11}, //MX45
- {0, E_11, D_11, F_11}, //MX46
- {0, H_11, G_11, I_11}, //MX47
- {0, K_11, J_11, L_11}, //MX53
- {0, B_12, A_12, C_12}, //MX50
- {0, E_12, D_12, F_12}, //MX51
- {0, H_12, G_12, I_12}, //MX52
- {0, K_12, J_12, L_12}, //MX64
- {0, B_13, A_13, C_13}, //MX55
- {0, E_13, D_13, F_13}, //MX56
- {0, H_13, G_13, I_13}, //MX63
- {0, K_13, J_13, L_13}, //MX61
- {0, B_14, A_14, C_14}, //MX59
- {0, E_14, D_14, F_14}, //MX57
- {0, H_14, G_14, I_14}, //MX60
- {0, K_14, J_14, L_14}, //MX62
- {0, B_15, A_15, C_15}, //MX5
- {0, E_15, D_15, F_15}, //MX10
- {0, H_15, G_15, I_15}, //MX15
- {0, K_15, J_15, L_15}, //MX32
-
-
- {0, H_16, G_16, I_16}, //MX54
- {0, K_16, J_16, L_16}, //MX58
-};
-
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-//
-// MX1, MX6, MX11, MX16, MX20, MX24, MX28, MX33, MX37, MX41, MX45, MX50, MX55, MX59,
-// MX2, MX7, MX12, MX17, MX21, MX25, MX29, MX34, MX38, MX42, MX46, MX51, MX56, MX64,
-// MX3, MX8, MX13, MX18, MX22, MX26, MX30, MX35, MX39, MX43, MX47, MX52, MX57, MX60,
-// MX4, ----, MX14, MX19, MX23, MX27, MX31, MX36, MX40, MX44, MX48, MX53, MX63, MX61,
-// MX5, MX10, MX15, ----, ----, ----, MX32, ----, ---, ----, ----, MX54, MX58, MX62
-/* {row | col << 4}
- * | {x=0..224, y=0..64}
- * | | modifier
- * | | | */
- {{0|(0<<4)}, { 0, 0}, 1}, //MX1
- {{1|(0<<4)}, { 0, 16}, 1}, //MX2
- {{2|(0<<4)}, { 0, 32}, 1}, //MX3
- {{3|(0<<4)}, { 0, 48}, 1}, //MX4
- {{0|(1<<4)}, { 17, 0}, 0}, //MX6
- {{1|(1<<4)}, { 17, 16}, 0}, //MX7
- {{2|(1<<4)}, { 17, 32}, 0}, //MX8
- {{3|(2<<4)}, { 34, 48}, 0}, //MX14
- {{0|(2<<4)}, { 34, 0}, 0}, //MX11
- {{1|(2<<4)}, { 34, 16}, 0}, //MX12
- {{2|(2<<4)}, { 34, 32}, 0}, //MX13
- {{3|(3<<4)}, { 51, 48}, 0}, //MX19
- {{0|(3<<4)}, { 51, 0}, 0}, //MX16
- {{1|(3<<4)}, { 51, 16}, 0}, //MX17
- {{2|(3<<4)}, { 51, 32}, 0}, //MX18
- {{3|(4<<4)}, { 68, 48}, 0}, //MX23
- {{0|(4<<4)}, { 68, 0}, 0}, //MX20
- {{1|(4<<4)}, { 68, 16}, 0}, //MX21
- {{2|(4<<4)}, { 68, 32}, 0}, //MX22
- {{3|(5<<4)}, { 85, 48}, 0}, //MX27
- {{0|(5<<4)}, { 85, 0}, 0}, //MX24
- {{1|(5<<4)}, { 85, 16}, 0}, //MX25
- {{2|(5<<4)}, { 85, 32}, 0}, //MX26
- {{3|(6<<4)}, {102, 48}, 0}, //MX31
- {{0|(6<<4)}, {102, 0}, 0}, //MX28
- {{1|(6<<4)}, {102, 16}, 0}, //MX29
- {{2|(6<<4)}, {102, 32}, 0}, //MX30
- {{3|(7<<4)}, {119, 48}, 0}, //MX36
- {{0|(7<<4)}, {119, 0}, 0}, //MX33
- {{1|(7<<4)}, {119, 16}, 0}, //MX34
- {{2|(7<<4)}, {119, 32}, 0}, //MX35
- {{3|(8<<4)}, {136, 48}, 0}, //MX40
- {{0|(8<<4)}, {136, 0}, 0}, //MX37
- {{1|(8<<4)}, {136, 16}, 0}, //MX38
- {{2|(8<<4)}, {136, 32}, 0}, //MX39
- {{3|(9<<4)}, {153, 48}, 0}, //MX44
- {{0|(9<<4)}, {153, 0}, 0}, //MX41
- {{1|(9<<4)}, {153, 16}, 0}, //MX42
- {{2|(9<<4)}, {153, 32}, 0}, //MX43
- {{3|(10<<4)}, {170, 48}, 0}, //MX48
- {{0|(10<<4)}, {170, 0}, 0}, //MX45
- {{1|(10<<4)}, {170, 16}, 0}, //MX46
- {{2|(10<<4)}, {170, 32}, 0}, //MX47
- {{3|(11<<4)}, {187, 48}, 0}, //MX53
- {{0|(11<<4)}, {187, 0}, 0}, //MX50
- {{1|(11<<4)}, {187, 16}, 0}, //MX51
- {{2|(11<<4)}, {187, 32}, 0}, //MX52
- {{1|(13<<4)}, {221, 0}, 1}, //MX64
- {{0|(12<<4)}, {204, 0}, 0}, //MX55
- {{1|(12<<4)}, {204, 16}, 0}, //MX56
- {{3|(12<<4)}, {204, 48}, 0}, //MX63
- {{3|(13<<4)}, {212, 48}, 1}, //MX61
- {{0|(13<<4)}, {221, 0}, 0}, //MX59
- {{2|(12<<4)}, {221, 16}, 0}, //MX57
- {{2|(13<<4)}, {221, 32}, 1}, //MX60
- {{4|(13<<4)}, {221, 64}, 1}, //MX62
- {{4|(0<<4)}, { 0, 64}, 1}, //MX5
- {{4|(1<<4)}, { 17, 64}, 1}, //MX10
- {{4|(2<<4)}, { 34, 64}, 1}, //MX15
- {{4|(5<<4)}, {102, 64}, 0}, //MX32
-
-
- {{4|(11<<4)}, {187, 64}, 1}, //MX54
- {{4|(12<<4)}, {204, 64}, 1} //MX58
-};
-
-#else //ISO layout
-
-const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, B_1, A_1, C_1}, //MX1
- {0, E_1, D_1, F_1}, //MX2
- {0, H_1, G_1, I_1}, //MX3
- {0, K_1, J_1, L_1}, //MX4
- {0, B_2, A_2, C_2}, //MX6
- {0, E_2, D_2, F_2}, //MX7
- {0, H_2, G_2, I_2}, //MX8
- {0, K_2, J_2, L_2}, //MX14
- {0, B_3, A_3, C_3}, //MX11
- {0, E_3, D_3, F_3}, //MX12
- {0, H_3, G_3, I_3}, //MX13
- {0, K_3, J_3, L_3}, //MX19
- {0, B_4, A_4, C_4}, //MX16
- {0, E_4, D_4, F_4}, //MX17
- {0, H_4, G_4, I_4}, //MX18
- {0, K_4, J_4, L_4}, //MX23
- {0, B_5, A_5, C_5}, //MX20
- {0, E_5, D_5, F_5}, //MX21
- {0, H_5, G_5, I_5}, //MX22
- {0, K_5, J_5, L_5}, //MX27
- {0, B_6, A_6, C_6}, //MX24
- {0, E_6, D_6, F_6}, //MX25
- {0, H_6, G_6, I_6}, //MX26
- {0, K_6, J_6, L_6}, //MX31
- {0, B_7, A_7, C_7}, //MX28
- {0, E_7, D_7, F_7}, //MX29
- {0, H_7, G_7, I_7}, //MX30
- {0, K_7, J_7, L_7}, //MX36
- {0, B_8, A_8, C_8}, //MX33
- {0, E_8, D_8, F_8}, //MX34
- {0, H_8, G_8, I_8}, //MX35
- {0, K_8, J_8, L_8}, //MX40
- {0, B_9, A_9, C_9}, //MX37
- {0, E_9, D_9, F_9}, //MX38
- {0, H_9, G_9, I_9}, //MX39
- {0, K_9, J_9, L_9}, //MX44
- {0, B_10, A_10, C_10}, //MX41
- {0, E_10, D_10, F_10}, //MX42
- {0, H_10, G_10, I_10}, //MX43
- {0, K_10, J_10, L_10}, //MX48
- {0, B_11, A_11, C_11}, //MX45
- {0, E_11, D_11, F_11}, //MX46
- {0, H_11, G_11, I_11}, //MX47
- {0, K_11, J_11, L_11}, //MX53
- {0, B_12, A_12, C_12}, //MX50
- {0, E_12, D_12, F_12}, //MX51
- {0, H_12, G_12, I_12}, //MX52
- {0, K_12, J_12, L_12}, //MX9
- {0, B_13, A_13, C_13}, //MX55
- {0, E_13, D_13, F_13}, //MX56
-
- {0, K_13, J_13, L_13}, //MX61
- {0, B_14, A_14, C_14}, //MX59
- {0, E_14, D_14, F_14}, //MX57
- {0, H_14, G_14, I_14}, //MX60
- {0, K_14, J_14, L_14}, //MX62
- {0, B_15, A_15, C_15}, //MX5
- {0, E_15, D_15, F_15}, //MX10
- {0, H_15, G_15, I_15}, //MX15
- {0, K_15, J_15, L_15}, //MX32
-
- {0, E_16, D_16, F_16}, //MX49
- {0, H_16, G_16, I_16}, //MX54
- {0, K_16, J_16, L_16}, //MX58
-};
-
-const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = {
-//
-// MX1, MX6, MX11, MX16, MX20, MX24, MX28, MX33, MX37, MX41, MX45, MX50, MX55, MX59,
-// MX2, MX7, MX12, MX17, MX21, MX25, MX29, MX34, MX38, MX42, MX46, MX51, MX56, ---,
-// MX3, MX8, MX13, MX18, MX22, MX26, MX30, MX35, MX39, MX43, MX47, MX52, MX57, MX60,
-// MX4, ---, MX14, MX19, MX23, MX27, MX31, MX36, MX40, MX44, MX48, MX53, ---, MX61,
-// MX5, MX10, MX15, ---, ---, ---, MX32, ---, ---, ---, MX49, MX54, MX58, MX62
-/* {row | col << 4}
- * | {x=0..224, y=0..64}
- * | | modifier
- * | | | */
- {{0|(0<<4)}, { 0, 0}, 1}, //MX1
- {{1|(0<<4)}, { 0, 16}, 1}, //MX2
- {{2|(0<<4)}, { 0, 32}, 1}, //MX3
- {{3|(0<<4)}, { 0, 48}, 1}, //MX4
- {{0|(1<<4)}, { 17, 0}, 0}, //MX6
- {{1|(1<<4)}, { 17, 16}, 0}, //MX7
- {{2|(1<<4)}, { 17, 32}, 0}, //MX8
- {{3|(2<<4)}, { 34, 48}, 0}, //MX14
- {{0|(2<<4)}, { 34, 0}, 0}, //MX11
- {{1|(2<<4)}, { 34, 16}, 0}, //MX12
- {{2|(2<<4)}, { 34, 32}, 0}, //MX13
- {{3|(3<<4)}, { 51, 48}, 0}, //MX19
- {{0|(3<<4)}, { 51, 0}, 0}, //MX16
- {{1|(3<<4)}, { 51, 16}, 0}, //MX17
- {{2|(3<<4)}, { 51, 32}, 0}, //MX18
- {{3|(4<<4)}, { 68, 48}, 0}, //MX23
- {{0|(4<<4)}, { 68, 0}, 0}, //MX20
- {{1|(4<<4)}, { 68, 16}, 0}, //MX21
- {{2|(4<<4)}, { 68, 32}, 0}, //MX22
- {{3|(5<<4)}, { 85, 48}, 0}, //MX27
- {{0|(5<<4)}, { 85, 0}, 0}, //MX24
- {{1|(5<<4)}, { 85, 16}, 0}, //MX25
- {{2|(5<<4)}, { 85, 32}, 0}, //MX26
- {{3|(6<<4)}, {102, 48}, 0}, //MX31
- {{0|(6<<4)}, {102, 0}, 0}, //MX28
- {{1|(6<<4)}, {102, 16}, 0}, //MX29
- {{2|(6<<4)}, {102, 32}, 0}, //MX30
- {{3|(7<<4)}, {119, 48}, 0}, //MX36
- {{0|(7<<4)}, {119, 0}, 0}, //MX33
- {{1|(7<<4)}, {119, 16}, 0}, //MX34
- {{2|(7<<4)}, {119, 32}, 0}, //MX35
- {{3|(8<<4)}, {136, 48}, 0}, //MX40
- {{0|(8<<4)}, {136, 0}, 0}, //MX37
- {{1|(8<<4)}, {136, 16}, 0}, //MX38
- {{2|(8<<4)}, {136, 32}, 0}, //MX39
- {{3|(9<<4)}, {153, 48}, 0}, //MX44
- {{0|(9<<4)}, {153, 0}, 0}, //MX41
- {{1|(9<<4)}, {153, 16}, 0}, //MX42
- {{2|(9<<4)}, {153, 32}, 0}, //MX43
- {{3|(10<<4)}, {170, 48}, 0}, //MX48
- {{0|(10<<4)}, {170, 0}, 0}, //MX45
- {{1|(10<<4)}, {170, 16}, 0}, //MX46
- {{2|(10<<4)}, {170, 32}, 0}, //MX47
- {{3|(11<<4)}, {187, 48}, 0}, //MX53
- {{0|(11<<4)}, {187, 0}, 0}, //MX50
- {{1|(11<<4)}, {187, 16}, 0}, //MX51
- {{2|(11<<4)}, {187, 32}, 0}, //MX52
- {{3|(2<<4)}, { 17, 32}, 1}, //MX9
- {{0|(12<<4)}, {204, 0}, 0}, //MX55
- {{1|(12<<4)}, {204, 16}, 0}, //MX56
-
- {{3|(13<<4)}, {221, 48}, 1}, //MX61
- {{0|(13<<4)}, {221, 0}, 1}, //MX59
- {{2|(12<<4)}, {204, 32}, 0}, //MX57
- {{2|(13<<4)}, {221, 24}, 1}, //MX60
- {{4|(13<<4)}, {221, 64}, 1}, //MX62
- {{4|(0<<4)}, { 0, 64}, 1}, //MX5
- {{4|(1<<4)}, { 17, 64}, 1}, //MX10
- {{4|(2<<4)}, { 34, 64}, 1}, //MX15
- {{4|(5<<4)}, {102, 64}, 0}, //MX32
-
- {{4|(10<<4)}, {170, 64}, 1}, //MX49
- {{4|(11<<4)}, {187, 64}, 1}, //MX54
- {{4|(12<<4)}, {204, 64}, 1} //MX58
-};
-
+#ifndef RGB_BACKLIGHT_HS60
+#error RGB_BACKLIGHT_M60_A not defined, recheck config.h
#endif
-
-void bootmagic_lite(void)
-{
- // The lite version of TMK's bootmagic made by Wilba.
- // 100% less potential for accidentally making the
- // keyboard do stupid things.
-
- // We need multiple scans because debouncing can't be turned off.
- matrix_scan();
- wait_ms(10);
- matrix_scan();
-
- // If the Esc and space bar are held down on power up,
- // reset the EEPROM valid state and jump to bootloader.
- // Assumes Esc is at [0,0] and spacebar is at [4,6].
- // This isn't very generalized, but we need something that doesn't
- // rely on user's keymaps in firmware or EEPROM.
- if ( ( matrix_get_row(0) & (1<<0) ) &&
- ( matrix_get_row(4) & (1<<6) ) )
- {
- // Set the TMK/QMK EEPROM state as invalid.
- eeconfig_disable();
- //eeprom_set_valid(false);
- // Jump to bootloader.
- bootloader_jump();
- }
-}
-
-void matrix_init_kb(void) {
- // put your keyboard start-up code here
- // runs once when the firmware starts up
-
- bootmagic_lite();
-
- // Please ignore this is for upcoming features
- // If the EEPROM has the magic, the data is good.
- // OK to load from EEPROM.
- /*if (eeprom_is_valid())
- {
- backlight_config_load();
-
- // TODO: do something to "turn on" keymaps in EEPROM?
- }
- else
- {
- // If the EEPROM has not been saved before, or is out of date,
- // save the default values to the EEPROM. Default values
- // come from construction of the zeal_backlight_config instance.
- backlight_config_save();
-
- // Clear the LED colors stored in EEPROM
- for ( int row=0; row < MATRIX_ROWS; row++ )
- {
- HSV hsv;
- for ( int column=0; column < MATRIX_COLS; column++ )
- {
- hsv.h = rand() & 0xFF;
- hsv.s = rand() & 0x7F;
- hsv.v = 255;
- backlight_set_key_color( row, column, hsv );
- }
- }
- #ifdef USE_KEYMAPS_IN_EEPROM
- keymap_default_save();
- #endif
- // Save the magic number last, in case saving was interrupted
- eeprom_set_valid(true);
- }*/
-
- matrix_init_user();
-}
-
-void matrix_scan_kb(void) {
-
- matrix_scan_user();
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
-
- return process_record_user(keycode, record);
-}
-
-void led_set_kb(uint8_t usb_led) {
- //backlight_set_indicator_state(usb_led);
-}
\ No newline at end of file
diff --git a/keyboards/hs60/v2/v2.h b/keyboards/hs60/v2/v2.h
index 86aeb68a74b..0a35acdea72 100644
--- a/keyboards/hs60/v2/v2.h
+++ b/keyboards/hs60/v2/v2.h
@@ -13,12 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#ifndef HS60_H
-#define HS60_H
+#pragma once
#define XXX KC_NO
#include "quantum.h"
+#include "../../zeal60/rgb_backlight_keycodes.h"
+#include "../../zeal60/zeal60_keycodes.h"
// This a shortcut to help you visually see your layout.
@@ -63,5 +64,3 @@
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \
}
-
-#endif
\ No newline at end of file
diff --git a/keyboards/zeal60/rgb_backlight.c b/keyboards/zeal60/rgb_backlight.c
index 64b95059e13..a965a13bbdf 100644
--- a/keyboards/zeal60/rgb_backlight.c
+++ b/keyboards/zeal60/rgb_backlight.c
@@ -15,27 +15,44 @@
*/
#if RGB_BACKLIGHT_ENABLED
-#if defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_ZEAL65) || defined (RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU)
+#if defined (RGB_BACKLIGHT_ZEAL60) || defined (RGB_BACKLIGHT_ZEAL65) || defined (RGB_BACKLIGHT_M60_A) || defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_KOYU) || defined(RGB_BACKLIGHT_HS60)
#else
#error None of the following was defined: RGB_BACKLIGHT_ZEAL60, RGB_BACKLIGHT_ZEAL65, RGB_BACKLIGHT_M60_A, RGB_BACKLIGHT_M6_B, RGB_BACKLIGHT_KOYU
#endif
+#ifndef MAX
+ #define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
+#endif
+
+#ifndef MIN
+ #define MIN(a,b) ((a) < (b)? (a): (b))
+#endif
+
#include "quantum.h"
#include "rgb_backlight.h"
#include "rgb_backlight_api.h"
#include "rgb_backlight_keycodes.h"
+#if !defined(RGB_BACKLIGHT_HS60)
#include
#include
#include
-#include "progmem.h"
-
-#include "quantum/color.h"
#include "drivers/avr/i2c_master.h"
+#else
+#include "ch.h"
+#include "hal.h"
+#include "drivers/arm/i2c_master.h"
+#include "tmk_core/common/eeprom.h"
+#endif
+#include "progmem.h"
+#include "quantum/color.h"
#if defined (RGB_BACKLIGHT_M6_B)
#include "drivers/issi/is31fl3218.h"
#define BACKLIGHT_LED_COUNT 6
+#elif defined (RGB_BACKLIGHT_HS60)
+#include "drivers/issi/is31fl3733.h"
+#define BACKLIGHT_LED_COUNT 64
#else
#include "drivers/issi/is31fl3731.h"
#define BACKLIGHT_LED_COUNT 72
@@ -84,7 +101,88 @@ uint8_t g_key_hit[BACKLIGHT_LED_COUNT];
// Ticks since any key was last hit.
uint32_t g_any_key_hit = 0;
-#if !defined(RGB_BACKLIGHT_M6_B)
+#if defined(RGB_BACKLIGHT_HS60)
+
+// This is a 7-bit address, that gets left-shifted and bit 0
+// set to 0 for write, 1 for read (as per I2C protocol)
+// ADDR_2 is not needed. it is here as a dummy
+#define ISSI_ADDR_1 0x50
+#define ISSI_ADDR_2 0x50
+
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, B_1, A_1, C_1}, //LA1
+ {0, E_1, D_1, F_1}, //LA2
+ {0, H_1, G_1, I_1}, //LA3
+ {0, K_1, J_1, L_1}, //LA4
+ {0, B_2, A_2, C_2}, //LA5
+ {0, E_2, D_2, F_2}, //LA6
+ {0, H_2, G_2, I_2}, //LA7
+ {0, K_2, J_2, L_2}, //LA8
+ {0, B_3, A_3, C_3}, //LA9
+ {0, E_3, D_3, F_3}, //LA10
+ {0, H_3, G_3, I_3}, //LA11
+ {0, K_3, J_3, L_3}, //LA12
+ {0, B_4, A_4, C_4}, //LA13
+ {0, E_4, D_4, F_4}, //LA14
+ {0, H_4, G_4, I_4}, //LA15
+ {0, K_4, J_4, L_4}, //LA16
+ {0, B_5, A_5, C_5}, //LA17
+ {0, E_5, D_5, F_5}, //LA18
+ {0, H_5, G_5, I_5}, //LA19
+ {0, K_5, J_5, L_5}, //LA20
+ {0, B_6, A_6, C_6}, //LA21
+ {0, E_6, D_6, F_6}, //LA22
+ {0, H_6, G_6, I_6}, //LA23
+ {0, K_6, J_6, L_6}, //LA24
+ {0, B_7, A_7, C_7}, //LA25
+ {0, E_7, D_7, F_7}, //LA26
+ {0, H_7, G_7, I_7}, //LA27
+ {0, K_7, J_7, L_7}, //LA28
+ {0, B_8, A_8, C_8}, //LA29
+ {0, E_8, D_8, F_8}, //LA30
+ {0, H_8, G_8, I_8}, //LA31
+ {0, K_8, J_8, L_8}, //LA32
+ {0, B_9, A_9, C_9}, //LA33
+ {0, E_9, D_9, F_9}, //LA34
+ {0, H_9, G_9, I_9}, //LA35
+ {0, K_9, J_9, L_9}, //LA36
+ {0, B_10, A_10, C_10}, //LA37
+ {0, E_10, D_10, F_10}, //LA38
+ {0, H_10, G_10, I_10}, //LA39
+ {0, K_10, J_10, L_10}, //LA40
+ {0, B_11, A_11, C_11}, //LA41
+ {0, E_11, D_11, F_11}, //LA42
+ {0, H_11, G_11, I_11}, //LA43
+ {0, K_11, J_11, L_11}, //LA44
+ {0, B_12, A_12, C_12}, //LA45
+ {0, E_12, D_12, F_12}, //LA46
+ {0, H_12, G_12, I_12}, //LA47
+ {0, K_12, J_12, L_12}, //LA48
+ {0, B_13, A_13, C_13}, //LA49
+ {0, E_13, D_13, F_13}, //LA50
+ {0, H_13, G_13, I_13}, //LA51
+ {0, K_13, J_13, L_13}, //LA52
+ {0, B_14, A_14, C_14}, //LA53
+ {0, E_14, D_14, F_14}, //LA54
+ {0, H_14, G_14, I_14}, //LA55
+ {0, K_14, J_14, L_14}, //LA56
+ {0, B_15, A_15, C_15}, //LA57
+ {0, E_15, D_15, F_15}, //LA58
+ {0, H_15, G_15, I_15}, //LA59
+ {0, K_15, J_15, L_15}, //LA60
+ {0, B_16, A_16, C_16}, //LA61
+ {0, E_16, D_16, F_16}, //LA62
+ {0, H_16, G_16, I_16}, //LA63
+ {0, K_16, J_16, L_16}, //LA64
+};
+
+#elif !defined(RGB_BACKLIGHT_M6_B)
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
#define ISSI_ADDR_1 0x74
@@ -272,6 +370,85 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
{0,27}, {0,64}, {0,101}, {0,137}, {0,174}, {255,233}, {228,201}, {235,255}, {237,255},
{195,128}, {206,136}, {215,152}, {222,175}, {205,234}, {209,255}, {214,255}, {219,255}, {223,255}
};
+#elif defined (RGB_BACKLIGHT_HS60) && defined (HS60_ANSI)
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA1..LA47
+ {0,0}, {4,16}, {6,32}, {10,48}, {16,0}, {24,16}, {28,32}, {36,48}, {32,0}, {40,16}, {44,32}, {52,48},
+ {48,0}, {56,16}, {60,32}, {68,48}, {64,0}, {72,16}, {76,32}, {84,48}, {80,0}, {88,16}, {92,32}, {100,48},
+ {96,0}, {104,16}, {108,32}, {116,48}, {112,0}, {120,16}, {124,32}, {132,48}, {128,0}, {136,16}, {140,32},
+ {148,48}, {144,0}, {152,16}, {156,32}, {164,48}, {160,0}, {168,16}, {172,32}, {180,48}, {176,0}, {184, 16}, {188,32},
+ {255,255},// LA48 does not exist, dummy
+ // LA49..LA50
+ {192,0}, {200,16},
+ {255,255},// LA51 does not exit, dummy
+ // LA52..LA60
+ {210,48}, {216,0}, {220,16}, {214,32}, {222,64}, {2,64}, {22,64}, {42,64}, {102,64},
+ {255,255},// LA61 does not exit, dummy
+ {162,64}, {182,64}, {202,64}
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA1..LA47
+ {96,255}, {109,255}, {128,242}, {148,255}, {93,255}, {105,238}, {128,192}, {154,216}, {89,255}, {101,208}, {128,155}, {159,188},
+ {85,255}, {96,181}, {128,119}, {165,163}, {81,255}, {89,157}, {128,82}, {173,143}, {75,255}, {81,139}, {128,46}, {183,131},
+ {70,255}, {70,129}, {129,9}, {195,128}, {64,255}, {58,129}, {255,27}, {206,136}, {58,255}, {47,139}, {255,64}, {215,152},
+ {53,255}, {39,157}, {255,101}, {222,175}, {47,255}, {32,181}, {255,137}, {228,201}, {43,255}, {27,208}, {255, 174},
+ {255,255},// LA48 does not exist, dummy
+ // LA49..LA50
+ {39,255}, {23,238},
+ {255,255},// LA51 does not exit, dummy
+ // LA52..LA60
+ {235,255}, {33,255}, {19,255}, {255,233}, {224,255}, {160,255}, {164,255}, {169,255}, {188,255},
+ {255,255},// LA61 does not exit, dummy
+ {209,255}, {215,255}, {220,255}
+};
+#elif defined (RGB_BACKLIGHT_HS60) && defined (HS60_HHKB)
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA1..LA60
+ {0,0}, {4,16}, {6,32}, {10,48}, {16,0}, {24,16}, {28,32}, {36,48}, {32,0}, {40,16}, {44,32}, {52,48},
+ {48,0}, {56,16}, {60,32}, {68,48}, {64,0}, {72,16}, {76,32}, {84,48}, {80,0}, {88,16}, {92,32}, {100,48},
+ {96,0}, {104,16}, {108,32}, {116,48}, {112,0}, {120,16}, {124,32}, {132,48}, {128,0}, {136,16}, {140,32},
+ {148,48}, {144,0}, {152,16}, {156,32}, {164,48}, {160,0}, {168,16}, {172,32}, {180,48}, {176,0}, {184, 16}, {188,32},
+ {224,0}, {192,0}, {200,16}, {202,48}, {224,48}, {208,0}, {220,16}, {214,32}, {220,64}, {4,64}, {24,64}, {44,64}, {112,64},
+ {255,255}, {255,255}, // LA61..LA62 does not exit, dummy
+ // LA63..LA64
+ {180,64}, {200,64}
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA1..LA60
+ {96,255}, {109,255}, {128,242}, {148,255}, {93,255}, {105,238}, {128,192}, {154,216}, {89,255}, {101,208}, {128,155}, {159,188},
+ {85,255}, {96,181}, {128,119}, {165,163}, {81,255}, {89,157}, {128,82}, {173,143}, {75,255}, {81,139}, {128,46}, {183,131},
+ {70,255}, {70,129}, {129,9}, {195,128}, {64,255}, {58,129}, {255,27}, {206,136}, {58,255}, {47,139}, {255,64}, {215,152},
+ {53,255}, {39,157}, {255,101}, {222,175}, {47,255}, {32,181}, {255,137}, {228,201}, {43,255}, {27,208}, {255, 174}, {32,255},
+ {39,255}, {23,238}, {233,242}, {237,255}, {35,255}, {19,255}, {255,233}, {223,255}, {161,255}, {165,255}, {170,255}, {192,255},
+ {255,255}, {255,255}, // LA61..LA62 does not exit, dummy
+ // LA63..LA64
+ {214,255}, {219,255}
+};
+#elif defined (RGB_BACKLIGHT_HS60) //HS60_ISO
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA1..LA50
+ {0,0}, {4,16}, {6,32}, {2,48}, {16,0}, {24,16}, {28,32}, {36,48}, {32,0}, {40,16}, {44,32}, {52,48}, {48,0},
+ {56,16}, {60,32}, {68,48}, {64,0}, {72,16}, {76,32}, {84,48}, {80,0}, {88,16}, {92,32}, {100,48}, {96,0}, {104,16},
+ {108,32}, {116,48}, {112,0}, {120,16}, {124,32}, {132,48}, {128,0}, {136,16}, {140,32}, {148,48}, {144,0}, {152,16},
+ {156,32}, {164,48}, {160,0}, {168,16}, {172,32}, {180,48}, {176,0}, {184, 16}, {188,32}, {20,48}, {192,0}, {200,16},
+ {255,255},// LA51 does not exit, dummy
+ // LA52..LA60
+ {210,48}, {216,0}, {220,16}, {222,24}, {222,64}, {2,64}, {22,64}, {42,64}, {102,64},
+ {255,255},// LA61 does not exit, dummy
+ {162,64}, {182,64}, {202,64}
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+ // LA1..LA50
+ {96,255}, {109,255}, {128,242}, {147,255}, {93,255}, {105,238}, {128,192}, {154,216}, {89,255}, {101,208}, {128,155}, {159,188}, {85,255},
+ {96,181}, {128,119}, {165,163}, {81,255}, {89,157}, {128,82}, {173,143}, {75,255}, {81,139}, {128,46}, {183,131}, {70,255}, {70,129},
+ {129,9}, {195,128}, {64,255}, {58,129}, {255,27}, {206,136}, {58,255}, {47,139}, {255,64}, {215,152}, {53,255}, {39,157}, {255,101},
+ {222,175}, {47,255}, {32,181}, {255,137}, {228,201}, {43,255}, {27,208}, {255, 174}, {150,246}, {39,255}, {23,238},
+ {255,255},// LA51 does not exit, dummy
+ // LA52..LA60
+ {235,255}, {33,255}, {19,255}, {10,255}, {224,255}, {160,255}, {164,255}, {169,255}, {188,255},
+ {255,255},// LA61 does not exit, dummy
+ {209,255}, {215,255}, {220,255}
+};
#elif defined (RGB_BACKLIGHT_M6_B)
// M6-B is really simple:
// 0 3 5
@@ -397,6 +574,48 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
{ 36+16, 36+15, 36+5, 36+4, 36+3, 36+2, 36+1, 54+9, 54+10, 54+11, 54+12, 54+6, 54+7, 54+8 },
{ 36+17, 36+8, 36+7, 36+6, 255, 255, 255, 36+0, 255, 54+13, 54+14, 54+15, 54+16, 54+17 }
};
+#elif defined (RGB_BACKLIGHT_HS60) && defined (HS60_ANSI)
+//
+// LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45, LA49, LA53,
+// LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46, LA50, ---,
+// LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47, LA54, LA55,
+// LA4, ---, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44, ---, LA52,
+// LA57, LA58, LA59, ---, ---, ---, LA60, ---, ---, ---, LA62, LA63, LA64, LA56
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ { 1-1, 5-1, 9-1, 13-1, 17-1, 21-1, 25-1, 29-1, 33-1, 37-1, 41-1, 45-1, 49-1, 53-1 },
+ { 2-1, 6-1, 10-1, 14-1, 18-1, 22-1, 26-1, 30-1, 34-1, 38-1, 42-1, 46-1, 50-1, 255 },
+ { 3-1, 7-1, 11-1, 15-1, 19-1, 23-1, 27-1, 31-1, 35-1, 39-1, 43-1, 47-1, 54-1, 55-1 },
+ { 4-1, 255, 8-1, 12-1, 16-1, 20-1, 24-1, 28-1, 32-1, 36-1, 40-1, 44-1, 255, 52-1 },
+ { 57-1, 58-1, 59-1, 255, 255, 255, 60-1, 255, 255, 255, 62-1, 63-1, 64-1, 56-1 }
+};
+#elif defined (RGB_BACKLIGHT_HS60) && defined (HS60_HHKB)
+//
+// LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45, LA49, LA53,
+// LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46, LA50, LA48,
+// LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47, LA54, LA55,
+// LA4, ---, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44, LA51, LA52,
+// LA57, LA58, LA59, ---, ---, ---, LA60, ---, ---, ---, ---, LA63, LA64, LA56
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ { 1-1, 5-1, 9-1, 13-1, 17-1, 21-1, 25-1, 29-1, 33-1, 37-1, 41-1, 45-1, 49-1, 53-1 },
+ { 2-1, 6-1, 10-1, 14-1, 18-1, 22-1, 26-1, 30-1, 34-1, 38-1, 42-1, 46-1, 50-1, 48-1 },
+ { 3-1, 7-1, 11-1, 15-1, 19-1, 23-1, 27-1, 31-1, 35-1, 39-1, 43-1, 47-1, 54-1, 55-1 },
+ { 4-1, 255, 8-1, 12-1, 16-1, 20-1, 24-1, 28-1, 32-1, 36-1, 40-1, 44-1, 51-1, 52-1 },
+ { 57-1, 58-1, 59-1, 255, 255, 255, 60-1, 255, 255, 255, 255, 63-1, 64-1, 56-1 }
+};
+#elif defined (RGB_BACKLIGHT_HS60) //HS60_ISO
+//
+// LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45, LA49, LA53,
+// LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46, LA50, ---,
+// LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47, LA54, LA55,
+// LA4, LA48, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44, ---, LA52,
+// LA57, LA58, LA59, ---, ---, ---, LA60, ---, ---, ---, LA62, LA63, LA64, LA56
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ { 1-1, 5-1, 9-1, 13-1, 17-1, 21-1, 25-1, 29-1, 33-1, 37-1, 41-1, 45-1, 49-1, 53-1 },
+ { 2-1, 6-1, 10-1, 14-1, 18-1, 22-1, 26-1, 30-1, 34-1, 38-1, 42-1, 46-1, 50-1, 255 },
+ { 3-1, 7-1, 11-1, 15-1, 19-1, 23-1, 27-1, 31-1, 35-1, 39-1, 43-1, 47-1, 54-1, 55-1 },
+ { 4-1, 48-1, 8-1, 12-1, 16-1, 20-1, 24-1, 28-1, 32-1, 36-1, 40-1, 44-1, 255, 52-1 },
+ { 57-1, 58-1, 59-1, 255, 255, 255, 60-1, 255, 255, 255, 62-1, 63-1, 64-1, 56-1 }
+};
#elif defined (RGB_BACKLIGHT_M6_B)
// M6-B is really simple:
// 0 3 5
@@ -419,6 +638,9 @@ void backlight_update_pwm_buffers(void)
{
#if defined (RGB_BACKLIGHT_M6_B)
IS31FL3218_update_pwm_buffers();
+#elif defined (RGB_BACKLIGHT_HS60)
+ IS31FL3733_update_pwm_buffers( ISSI_ADDR_1, ISSI_ADDR_2 );
+ IS31FL3733_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
#else
IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, ISSI_ADDR_2 );
IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
@@ -429,6 +651,8 @@ void backlight_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
{
#if defined (RGB_BACKLIGHT_M6_B)
IS31FL3218_set_color( index, red, green, blue );
+#elif defined (RGB_BACKLIGHT_HS60)
+ IS31FL3733_set_color( index, red, green, blue );
#else
IS31FL3731_set_color( index, red, green, blue );
#endif
@@ -438,6 +662,8 @@ void backlight_set_color_all( uint8_t red, uint8_t green, uint8_t blue )
{
#if defined (RGB_BACKLIGHT_M6_B)
IS31FL3218_set_color_all( red, green, blue );
+#elif defined (RGB_BACKLIGHT_HS60)
+ IS31FL3733_set_color_all( red, green, blue );
#else
IS31FL3731_set_color_all( red, green, blue );
#endif
@@ -452,6 +678,7 @@ void backlight_set_key_hit(uint8_t row, uint8_t column)
g_any_key_hit = 0;
}
+#if !defined(RGB_BACKLIGHT_HS60)
// This is (F_CPU/1024) / 20 Hz
// = 15625 Hz / 20 Hz
// = 781
@@ -487,6 +714,29 @@ void backlight_timer_disable(void)
{
TIMSK3 &= ~_BV(OCIE3A);
}
+#else //STM32, use GPT with TIM4. Enable in halconf.h
+static void gpt_backlight_timer_task(GPTDriver *gptp);
+// Timer setup at 200Khz, callback at 10k ticks = 20Hz
+static GPTConfig gpt4cfg1 = {
+ .frequency = 200000U,
+ .callback = gpt_backlight_timer_task
+};
+
+void backlight_timer_init(void)
+{
+ gptStart(&GPTD4, &gpt4cfg1);
+}
+
+void backlight_timer_enable(void)
+{
+ gptStartContinuous(&GPTD4, 10000);
+}
+
+void backlight_timer_disable(void)
+{
+ gptStopTimer(&GPTD4);
+}
+#endif //!defined(RGB_BACKLIGHT_HS60)
void backlight_set_suspend_state(bool state)
{
@@ -921,7 +1171,11 @@ void backlight_effect_indicators(void)
}
}
+#if !defined(RGB_BACKLIGHT_HS60)
ISR(TIMER3_COMPA_vect)
+#else //STM32 interrupt
+static void gpt_backlight_timer_task(GPTDriver *gptp)
+#endif
{
// delay 1 second before driving LEDs or doing anything else
static uint8_t startup_tick = 0;
@@ -1378,6 +1632,27 @@ void backlight_init_drivers(void)
#if defined(RGB_BACKLIGHT_M6_B)
IS31FL3218_init();
+#elif defined(RGB_BACKLIGHT_HS60)
+ IS31FL3733_init( ISSI_ADDR_1 );
+
+ for ( int index = 0; index < BACKLIGHT_LED_COUNT; index++ )
+ {
+#if defined (HS60_ANSI)
+ bool enabled = !( ( index == 48-1 ) || //LA48
+ ( index == 51-1 ) || //LA51
+ ( index == 61-1 ) ); //LA61
+#elif defined (HS60_HHKB)
+ bool enabled = !( ( index == 61-1 ) || //LA61
+ ( index == 62-1 ) ); //LA62
+#else //HS60_ISO
+ bool enabled = !( ( index == 51-1 ) || //LA51
+ ( index == 61-1 ) ); //LA61
+#endif
+ // This only caches it for later
+ IS31FL3733_set_led_control_register( index, enabled, enabled, enabled );
+ }
+ // This actually updates the LED drivers
+ IS31FL3733_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
#else
IS31FL3731_init( ISSI_ADDR_1 );
IS31FL3731_init( ISSI_ADDR_2 );
@@ -1668,7 +1943,6 @@ void backlight_test_led( uint8_t index, bool red, bool green, bool blue )
}
}
}
-#endif // defined(RGB_DEBUGGING_ONLY)
void backlight_debug_led( bool state )
{
@@ -1685,5 +1959,6 @@ void backlight_debug_led( bool state )
PORTE &= ~(1<<6);
}
}
+#endif // defined(RGB_DEBUGGING_ONLY)
#endif // BACKLIGHT_ENABLED
diff --git a/tmk_core/common/chibios/eeprom_stm32.c b/tmk_core/common/chibios/eeprom_stm32.c
index a8699855012..a15430d676c 100755
--- a/tmk_core/common/chibios/eeprom_stm32.c
+++ b/tmk_core/common/chibios/eeprom_stm32.c
@@ -10,664 +10,206 @@
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * This files are free to use from https://github.com/rogerclarkmelbourne/Arduino_STM32 and
- * https://github.com/leaflabs/libmaple
+ * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by
+ * Artur F.
*
* Modifications for QMK and STM32F303 by Yiancar
*/
+#include
+#include
#include "eeprom_stm32.h"
+/*****************************************************************************
+ * Allows to use the internal flash to store non volatile data. To initialize
+ * the functionality use the EEPROM_Init() function. Be sure that by reprogramming
+ * of the controller just affected pages will be deleted. In other case the non
+ * volatile data will be lost.
+******************************************************************************/
- FLASH_Status EE_ErasePage(uint32_t);
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Functions -----------------------------------------------------------------*/
- uint16_t EE_CheckPage(uint32_t, uint16_t);
- uint16_t EE_CheckErasePage(uint32_t, uint16_t);
- uint16_t EE_Format(void);
- uint32_t EE_FindValidPage(void);
- uint16_t EE_GetVariablesCount(uint32_t, uint16_t);
- uint16_t EE_PageTransfer(uint32_t, uint32_t, uint16_t);
- uint16_t EE_VerifyPageFullWriteVariable(uint16_t, uint16_t);
+uint8_t DataBuf[FEE_PAGE_SIZE];
+/*****************************************************************************
+* Delete Flash Space used for user Data, deletes the whole space between
+* RW_PAGE_BASE_ADDRESS and the last uC Flash Page
+******************************************************************************/
+uint16_t EEPROM_Init(void) {
+ // unlock flash
+ FLASH_Unlock();
- uint32_t PageBase0 = EEPROM_PAGE0_BASE;
- uint32_t PageBase1 = EEPROM_PAGE1_BASE;
- uint32_t PageSize = EEPROM_PAGE_SIZE;
- uint16_t Status = EEPROM_NOT_INIT;
+ // Clear Flags
+ //FLASH_ClearFlag(FLASH_SR_EOP|FLASH_SR_PGERR|FLASH_SR_WRPERR);
-// See http://www.st.com/web/en/resource/technical/document/application_note/CD00165693.pdf
-
-/**
- * @brief Check page for blank
- * @param page base address
- * @retval Success or error
- * EEPROM_BAD_FLASH: page not empty after erase
- * EEPROM_OK: page blank
- */
-uint16_t EE_CheckPage(uint32_t pageBase, uint16_t status)
-{
- uint32_t pageEnd = pageBase + (uint32_t)PageSize;
-
- // Page Status not EEPROM_ERASED and not a "state"
- if ((*(__IO uint16_t*)pageBase) != EEPROM_ERASED && (*(__IO uint16_t*)pageBase) != status)
- return EEPROM_BAD_FLASH;
- for(pageBase += 4; pageBase < pageEnd; pageBase += 4)
- if ((*(__IO uint32_t*)pageBase) != 0xFFFFFFFF) // Verify if slot is empty
- return EEPROM_BAD_FLASH;
- return EEPROM_OK;
+ return FEE_DENSITY_BYTES;
}
+/*****************************************************************************
+* Erase the whole reserved Flash Space used for user Data
+******************************************************************************/
+void EEPROM_Erase (void) {
-/**
- * @brief Erase page with increment erase counter (page + 2)
- * @param page base address
- * @retval Success or error
- * FLASH_COMPLETE: success erase
- * - Flash error code: on write Flash error
- */
-FLASH_Status EE_ErasePage(uint32_t pageBase)
-{
- FLASH_Status FlashStatus;
- uint16_t data = (*(__IO uint16_t*)(pageBase));
- if ((data == EEPROM_ERASED) || (data == EEPROM_VALID_PAGE) || (data == EEPROM_RECEIVE_DATA))
- data = (*(__IO uint16_t*)(pageBase + 2)) + 1;
- else
- data = 0;
+ int page_num = 0;
- FlashStatus = FLASH_ErasePage(pageBase);
- if (FlashStatus == FLASH_COMPLETE)
- FlashStatus = FLASH_ProgramHalfWord(pageBase + 2, data);
+ // delete all pages from specified start page to the last page
+ do {
+ FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE));
+ page_num++;
+ } while (page_num < FEE_DENSITY_PAGES);
+}
+/*****************************************************************************
+* Writes once data byte to flash on specified address. If a byte is already
+* written, the whole page must be copied to a buffer, the byte changed and
+* the manipulated buffer written after PageErase.
+*******************************************************************************/
+uint16_t EEPROM_WriteDataByte (uint16_t Address, uint8_t DataByte) {
+ FLASH_Status FlashStatus = FLASH_COMPLETE;
+
+ uint32_t page;
+ int i;
+
+ // exit if desired address is above the limit (e.G. under 2048 Bytes for 4 pages)
+ if (Address > FEE_DENSITY_BYTES) {
+ return 0;
+ }
+
+ // calculate which page is affected (Pagenum1/Pagenum2...PagenumN)
+ page = (FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address)) & 0x00000FFF;
+
+ if (page % FEE_PAGE_SIZE) page = page + FEE_PAGE_SIZE;
+ page = (page / FEE_PAGE_SIZE) - 1;
+
+ // if current data is 0xFF, the byte is empty, just overwrite with the new one
+ if ((*(__IO uint16_t*)(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address))) == FEE_EMPTY_WORD) {
+
+ FlashStatus = FLASH_ProgramHalfWord(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address), (uint16_t)(0x00FF & DataByte));
+ }
+ else {
+
+ // Copy Page to a buffer
+ memcpy(DataBuf, (uint8_t*)FEE_PAGE_BASE_ADDRESS + (page * FEE_PAGE_SIZE), FEE_PAGE_SIZE); // !!! Calculate base address for the desired page
+
+ // check if new data is differ to current data, return if not, proceed if yes
+ if (DataByte == *(__IO uint8_t*)(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address))) {
+ return 0;
+ }
+
+ // manipulate desired data byte in temp data array if new byte is differ to the current
+ DataBuf[FEE_ADDR_OFFSET(Address)] = DataByte;
+
+ //Erase Page
+ FlashStatus = FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + page);
+
+ // Write new data (whole page) to flash if data has beed changed
+ for(i = 0; i < (FEE_PAGE_SIZE / 2); i++) {
+ if ((__IO uint16_t)(0xFF00 | DataBuf[FEE_ADDR_OFFSET(i)]) != 0xFFFF) {
+ FlashStatus = FLASH_ProgramHalfWord((FEE_PAGE_BASE_ADDRESS + (page * FEE_PAGE_SIZE)) + (i * 2), (uint16_t)(0xFF00 | DataBuf[FEE_ADDR_OFFSET(i)]));
+ }
+ }
+
+ }
return FlashStatus;
}
+/*****************************************************************************
+* Read once data byte from a specified address.
+*******************************************************************************/
+uint8_t EEPROM_ReadDataByte (uint16_t Address) {
-/**
- * @brief Check page for blank and erase it
- * @param page base address
- * @retval Success or error
- * - Flash error code: on write Flash error
- * - EEPROM_BAD_FLASH: page not empty after erase
- * - EEPROM_OK: page blank
- */
-uint16_t EE_CheckErasePage(uint32_t pageBase, uint16_t status)
-{
- uint16_t FlashStatus;
- if (EE_CheckPage(pageBase, status) != EEPROM_OK)
- {
- FlashStatus = EE_ErasePage(pageBase);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
- return EE_CheckPage(pageBase, status);
- }
- return EEPROM_OK;
+ uint8_t DataByte = 0xFF;
+
+ // Get Byte from specified address
+ DataByte = (*(__IO uint8_t*)(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address)));
+
+ return DataByte;
}
-/**
- * @brief Find valid Page for write or read operation
- * @param Page0: Page0 base address
- * Page1: Page1 base address
- * @retval Valid page address (PAGE0 or PAGE1) or NULL in case of no valid page was found
- */
-uint32_t EE_FindValidPage(void)
-{
- uint16_t status0 = (*(__IO uint16_t*)PageBase0); // Get Page0 actual status
- uint16_t status1 = (*(__IO uint16_t*)PageBase1); // Get Page1 actual status
-
- if (status0 == EEPROM_VALID_PAGE && status1 == EEPROM_ERASED)
- return PageBase0;
- if (status1 == EEPROM_VALID_PAGE && status0 == EEPROM_ERASED)
- return PageBase1;
-
- return 0;
-}
-
-/**
- * @brief Calculate unique variables in EEPROM
- * @param start: address of first slot to check (page + 4)
- * @param end: page end address
- * @param address: 16 bit virtual address of the variable to excluse (or 0XFFFF)
- * @retval count of variables
- */
-uint16_t EE_GetVariablesCount(uint32_t pageBase, uint16_t skipAddress)
-{
- uint16_t varAddress, nextAddress;
- uint32_t idx;
- uint32_t pageEnd = pageBase + (uint32_t)PageSize;
- uint16_t count = 0;
-
- for (pageBase += 6; pageBase < pageEnd; pageBase += 4)
- {
- varAddress = (*(__IO uint16_t*)pageBase);
- if (varAddress == 0xFFFF || varAddress == skipAddress)
- continue;
-
- count++;
- for(idx = pageBase + 4; idx < pageEnd; idx += 4)
- {
- nextAddress = (*(__IO uint16_t*)idx);
- if (nextAddress == varAddress)
- {
- count--;
- break;
- }
- }
- }
- return count;
-}
-
-/**
- * @brief Transfers last updated variables data from the full Page to an empty one.
- * @param newPage: new page base address
- * @param oldPage: old page base address
- * @param SkipAddress: 16 bit virtual address of the variable (or 0xFFFF)
- * @retval Success or error status:
- * - FLASH_COMPLETE: on success
- * - EEPROM_OUT_SIZE: if valid new page is full
- * - Flash error code: on write Flash error
- */
-uint16_t EE_PageTransfer(uint32_t newPage, uint32_t oldPage, uint16_t SkipAddress)
-{
- uint32_t oldEnd, newEnd;
- uint32_t oldIdx, newIdx, idx;
- uint16_t address, data, found;
- FLASH_Status FlashStatus;
-
- // Transfer process: transfer variables from old to the new active page
- newEnd = newPage + ((uint32_t)PageSize);
-
- // Find first free element in new page
- for (newIdx = newPage + 4; newIdx < newEnd; newIdx += 4)
- if ((*(__IO uint32_t*)newIdx) == 0xFFFFFFFF) // Verify if element
- break; // contents are 0xFFFFFFFF
- if (newIdx >= newEnd)
- return EEPROM_OUT_SIZE;
-
- oldEnd = oldPage + 4;
- oldIdx = oldPage + (uint32_t)(PageSize - 2);
-
- for (; oldIdx > oldEnd; oldIdx -= 4)
- {
- address = *(__IO uint16_t*)oldIdx;
- if (address == 0xFFFF || address == SkipAddress)
- continue; // it's means that power off after write data
-
- found = 0;
- for (idx = newPage + 6; idx < newIdx; idx += 4)
- if ((*(__IO uint16_t*)(idx)) == address)
- {
- found = 1;
- break;
- }
-
- if (found)
- continue;
-
- if (newIdx < newEnd)
- {
- data = (*(__IO uint16_t*)(oldIdx - 2));
-
- FlashStatus = FLASH_ProgramHalfWord(newIdx, data);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
-
- FlashStatus = FLASH_ProgramHalfWord(newIdx + 2, address);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
-
- newIdx += 4;
- }
- else
- return EEPROM_OUT_SIZE;
- }
-
- // Erase the old Page: Set old Page status to EEPROM_EEPROM_ERASED status
- data = EE_CheckErasePage(oldPage, EEPROM_ERASED);
- if (data != EEPROM_OK)
- return data;
-
- // Set new Page status
- FlashStatus = FLASH_ProgramHalfWord(newPage, EEPROM_VALID_PAGE);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
-
- return EEPROM_OK;
-}
-
-/**
- * @brief Verify if active page is full and Writes variable in EEPROM.
- * @param Address: 16 bit virtual address of the variable
- * @param Data: 16 bit data to be written as variable value
- * @retval Success or error status:
- * - FLASH_COMPLETE: on success
- * - EEPROM_PAGE_FULL: if valid page is full (need page transfer)
- * - EEPROM_NO_VALID_PAGE: if no valid page was found
- * - EEPROM_OUT_SIZE: if EEPROM size exceeded
- * - Flash error code: on write Flash error
- */
-uint16_t EE_VerifyPageFullWriteVariable(uint16_t Address, uint16_t Data)
-{
- FLASH_Status FlashStatus;
- uint32_t idx, pageBase, pageEnd, newPage;
- uint16_t count;
-
- // Get valid Page for write operation
- pageBase = EE_FindValidPage();
- if (pageBase == 0)
- return EEPROM_NO_VALID_PAGE;
-
- // Get the valid Page end Address
- pageEnd = pageBase + PageSize; // Set end of page
-
- for (idx = pageEnd - 2; idx > pageBase; idx -= 4)
- {
- if ((*(__IO uint16_t*)idx) == Address) // Find last value for address
- {
- count = (*(__IO uint16_t*)(idx - 2)); // Read last data
- if (count == Data)
- return EEPROM_OK;
- if (count == 0xFFFF)
- {
- FlashStatus = FLASH_ProgramHalfWord(idx - 2, Data); // Set variable data
- if (FlashStatus == FLASH_COMPLETE)
- return EEPROM_OK;
- }
- break;
- }
- }
-
- // Check each active page address starting from begining
- for (idx = pageBase + 4; idx < pageEnd; idx += 4)
- if ((*(__IO uint32_t*)idx) == 0xFFFFFFFF) // Verify if element
- { // contents are 0xFFFFFFFF
- FlashStatus = FLASH_ProgramHalfWord(idx, Data); // Set variable data
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
- FlashStatus = FLASH_ProgramHalfWord(idx + 2, Address); // Set variable virtual address
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
- return EEPROM_OK;
- }
-
- // Empty slot not found, need page transfer
- // Calculate unique variables in page
- count = EE_GetVariablesCount(pageBase, Address) + 1;
- if (count >= (PageSize / 4 - 1))
- return EEPROM_OUT_SIZE;
-
- if (pageBase == PageBase1)
- newPage = PageBase0; // New page address where variable will be moved to
- else
- newPage = PageBase1;
-
- // Set the new Page status to RECEIVE_DATA status
- FlashStatus = FLASH_ProgramHalfWord(newPage, EEPROM_RECEIVE_DATA);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
-
- // Write the variable passed as parameter in the new active page
- FlashStatus = FLASH_ProgramHalfWord(newPage + 4, Data);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
-
- FlashStatus = FLASH_ProgramHalfWord(newPage + 6, Address);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
-
- return EE_PageTransfer(newPage, pageBase, Address);
-}
-
-/*EEPROMClass::EEPROMClass(void)
-{
- PageBase0 = EEPROM_PAGE0_BASE;
- PageBase1 = EEPROM_PAGE1_BASE;
- PageSize = EEPROM_PAGE_SIZE;
- Status = EEPROM_NOT_INIT;
-}*/
-/*
-uint16_t EEPROM_init(uint32_t pageBase0, uint32_t pageBase1, uint32_t pageSize)
-{
- PageBase0 = pageBase0;
- PageBase1 = pageBase1;
- PageSize = pageSize;
- return EEPROM_init();
-}*/
-
-uint16_t EEPROM_init(void)
-{
- uint16_t status0 = 6, status1 = 6;
- FLASH_Status FlashStatus;
-
- FLASH_Unlock();
- Status = EEPROM_NO_VALID_PAGE;
-
- status0 = (*(__IO uint16_t *)PageBase0);
- status1 = (*(__IO uint16_t *)PageBase1);
-
- switch (status0)
- {
-/*
- Page0 Page1
- ----- -----
- EEPROM_ERASED EEPROM_VALID_PAGE Page1 valid, Page0 erased
- EEPROM_RECEIVE_DATA Page1 need set to valid, Page0 erased
- EEPROM_ERASED make EE_Format
- any Error: EEPROM_NO_VALID_PAGE
-*/
- case EEPROM_ERASED:
- if (status1 == EEPROM_VALID_PAGE) // Page0 erased, Page1 valid
- Status = EE_CheckErasePage(PageBase0, EEPROM_ERASED);
- else if (status1 == EEPROM_RECEIVE_DATA) // Page0 erased, Page1 receive
- {
- FlashStatus = FLASH_ProgramHalfWord(PageBase1, EEPROM_VALID_PAGE);
- if (FlashStatus != FLASH_COMPLETE)
- Status = FlashStatus;
- else
- Status = EE_CheckErasePage(PageBase0, EEPROM_ERASED);
- }
- else if (status1 == EEPROM_ERASED) // Both in erased state so format EEPROM
- Status = EEPROM_format();
- break;
-/*
- Page0 Page1
- ----- -----
- EEPROM_RECEIVE_DATA EEPROM_VALID_PAGE Transfer Page1 to Page0
- EEPROM_ERASED Page0 need set to valid, Page1 erased
- any EEPROM_NO_VALID_PAGE
-*/
- case EEPROM_RECEIVE_DATA:
- if (status1 == EEPROM_VALID_PAGE) // Page0 receive, Page1 valid
- Status = EE_PageTransfer(PageBase0, PageBase1, 0xFFFF);
- else if (status1 == EEPROM_ERASED) // Page0 receive, Page1 erased
- {
- Status = EE_CheckErasePage(PageBase1, EEPROM_ERASED);
- if (Status == EEPROM_OK)
- {
- FlashStatus = FLASH_ProgramHalfWord(PageBase0, EEPROM_VALID_PAGE);
- if (FlashStatus != FLASH_COMPLETE)
- Status = FlashStatus;
- else
- Status = EEPROM_OK;
- }
- }
- break;
-/*
- Page0 Page1
- ----- -----
- EEPROM_VALID_PAGE EEPROM_VALID_PAGE Error: EEPROM_NO_VALID_PAGE
- EEPROM_RECEIVE_DATA Transfer Page0 to Page1
- any Page0 valid, Page1 erased
-*/
- case EEPROM_VALID_PAGE:
- if (status1 == EEPROM_VALID_PAGE) // Both pages valid
- Status = EEPROM_NO_VALID_PAGE;
- else if (status1 == EEPROM_RECEIVE_DATA)
- Status = EE_PageTransfer(PageBase1, PageBase0, 0xFFFF);
- else
- Status = EE_CheckErasePage(PageBase1, EEPROM_ERASED);
- break;
-/*
- Page0 Page1
- ----- -----
- any EEPROM_VALID_PAGE Page1 valid, Page0 erased
- EEPROM_RECEIVE_DATA Page1 valid, Page0 erased
- any EEPROM_NO_VALID_PAGE
-*/
- default:
- if (status1 == EEPROM_VALID_PAGE)
- Status = EE_CheckErasePage(PageBase0, EEPROM_ERASED); // Check/Erase Page0
- else if (status1 == EEPROM_RECEIVE_DATA)
- {
- FlashStatus = FLASH_ProgramHalfWord(PageBase1, EEPROM_VALID_PAGE);
- if (FlashStatus != FLASH_COMPLETE)
- Status = FlashStatus;
- else
- Status = EE_CheckErasePage(PageBase0, EEPROM_ERASED);
- }
- break;
- }
- return Status;
-}
-
-/**
- * @brief Erases PAGE0 and PAGE1 and writes EEPROM_VALID_PAGE / 0 header to PAGE0
- * @param PAGE0 and PAGE1 base addresses
- * @retval Status of the last operation (Flash write or erase) done during EEPROM formating
- */
-uint16_t EEPROM_format(void)
-{
- uint16_t status;
- FLASH_Status FlashStatus;
-
- FLASH_Unlock();
-
- // Erase Page0
- status = EE_CheckErasePage(PageBase0, EEPROM_VALID_PAGE);
- if (status != EEPROM_OK)
- return status;
- if ((*(__IO uint16_t*)PageBase0) == EEPROM_ERASED)
- {
- // Set Page0 as valid page: Write VALID_PAGE at Page0 base address
- FlashStatus = FLASH_ProgramHalfWord(PageBase0, EEPROM_VALID_PAGE);
- if (FlashStatus != FLASH_COMPLETE)
- return FlashStatus;
- }
- // Erase Page1
- return EE_CheckErasePage(PageBase1, EEPROM_ERASED);
-}
-
-/**
- * @brief Returns the erase counter for current page
- * @param Data: Global variable contains the read variable value
- * @retval Success or error status:
- * - EEPROM_OK: if erases counter return.
- * - EEPROM_NO_VALID_PAGE: if no valid page was found.
- */
-uint16_t EEPROM_erases(uint16_t *Erases)
-{
- uint32_t pageBase;
- if (Status != EEPROM_OK)
- if (EEPROM_init() != EEPROM_OK)
- return Status;
-
- // Get active Page for read operation
- pageBase = EE_FindValidPage();
- if (pageBase == 0)
- return EEPROM_NO_VALID_PAGE;
-
- *Erases = (*(__IO uint16_t*)pageBase+2);
- return EEPROM_OK;
-}
-
-/**
- * @brief Returns the last stored variable data, if found,
- * which correspond to the passed virtual address
- * @param Address: Variable virtual address
- * @retval Data for variable or EEPROM_DEFAULT_DATA, if any errors
- */
-/*
-uint16_t EEPROM_read (uint16_t Address)
-{
- uint16_t data;
- EEPROM_read(Address, &data);
- return data;
-}*/
-
-/**
- * @brief Returns the last stored variable data, if found,
- * which correspond to the passed virtual address
- * @param Address: Variable virtual address
- * @param Data: Pointer to data variable
- * @retval Success or error status:
- * - EEPROM_OK: if variable was found
- * - EEPROM_BAD_ADDRESS: if the variable was not found
- * - EEPROM_NO_VALID_PAGE: if no valid page was found.
- */
-uint16_t EEPROM_read(uint16_t Address, uint16_t *Data)
-{
- uint32_t pageBase, pageEnd;
-
- // Set default data (empty EEPROM)
- *Data = EEPROM_DEFAULT_DATA;
-
- if (Status == EEPROM_NOT_INIT)
- if (EEPROM_init() != EEPROM_OK)
- return Status;
-
- // Get active Page for read operation
- pageBase = EE_FindValidPage();
- if (pageBase == 0)
- return EEPROM_NO_VALID_PAGE;
-
- // Get the valid Page end Address
- pageEnd = pageBase + ((uint32_t)(PageSize - 2));
-
- // Check each active page address starting from end
- for (pageBase += 6; pageEnd >= pageBase; pageEnd -= 4)
- if ((*(__IO uint16_t*)pageEnd) == Address) // Compare the read address with the virtual address
- {
- *Data = (*(__IO uint16_t*)(pageEnd - 2)); // Get content of Address-2 which is variable value
- return EEPROM_OK;
- }
-
- // Return ReadStatus value: (0: variable exist, 1: variable doesn't exist)
- return EEPROM_BAD_ADDRESS;
-}
-
-/**
- * @brief Writes/upadtes variable data in EEPROM.
- * @param VirtAddress: Variable virtual address
- * @param Data: 16 bit data to be written
- * @retval Success or error status:
- * - FLASH_COMPLETE: on success
- * - EEPROM_BAD_ADDRESS: if address = 0xFFFF
- * - EEPROM_PAGE_FULL: if valid page is full
- * - EEPROM_NO_VALID_PAGE: if no valid page was found
- * - EEPROM_OUT_SIZE: if no empty EEPROM variables
- * - Flash error code: on write Flash error
- */
-uint16_t EEPROM_write(uint16_t Address, uint16_t Data)
-{
- if (Status == EEPROM_NOT_INIT)
- if (EEPROM_init() != EEPROM_OK)
- return Status;
-
- if (Address == 0xFFFF)
- return EEPROM_BAD_ADDRESS;
-
- // Write the variable virtual address and value in the EEPROM
- uint16_t status = EE_VerifyPageFullWriteVariable(Address, Data);
- return status;
-}
-
-/**
- * @brief Writes/upadtes variable data in EEPROM.
- The value is written only if differs from the one already saved at the same address.
- * @param VirtAddress: Variable virtual address
- * @param Data: 16 bit data to be written
- * @retval Success or error status:
- * - EEPROM_SAME_VALUE: If new Data matches existing EEPROM Data
- * - FLASH_COMPLETE: on success
- * - EEPROM_BAD_ADDRESS: if address = 0xFFFF
- * - EEPROM_PAGE_FULL: if valid page is full
- * - EEPROM_NO_VALID_PAGE: if no valid page was found
- * - EEPROM_OUT_SIZE: if no empty EEPROM variables
- * - Flash error code: on write Flash error
- */
-uint16_t EEPROM_update(uint16_t Address, uint16_t Data)
-{
- uint16_t temp;
- EEPROM_read(Address, &temp);
- if (temp == Data)
- return EEPROM_SAME_VALUE;
- else
- return EEPROM_write(Address, Data);
-}
-
-/**
- * @brief Return number of variable
- * @retval Number of variables
- */
-uint16_t EEPROM_count(uint16_t *Count)
-{
- if (Status == EEPROM_NOT_INIT)
- if (EEPROM_init() != EEPROM_OK)
- return Status;
-
- // Get valid Page for write operation
- uint32_t pageBase = EE_FindValidPage();
- if (pageBase == 0)
- return EEPROM_NO_VALID_PAGE; // No valid page, return max. numbers
-
- *Count = EE_GetVariablesCount(pageBase, 0xFFFF);
- return EEPROM_OK;
-}
-
-uint16_t EEPROM_maxcount(void)
-{
- return ((PageSize / 4)-1);
-}
-
-
+/*****************************************************************************
+* Wrap library in AVR style functions.
+*******************************************************************************/
uint8_t eeprom_read_byte (const uint8_t *Address)
{
const uint16_t p = (const uint32_t) Address;
- uint16_t temp;
- EEPROM_read(p, &temp);
- return (uint8_t) temp;
+ return EEPROM_ReadDataByte(p);
}
void eeprom_write_byte (uint8_t *Address, uint8_t Value)
{
uint16_t p = (uint32_t) Address;
- EEPROM_write(p, (uint16_t) Value);
+ EEPROM_WriteDataByte(p, Value);
}
void eeprom_update_byte (uint8_t *Address, uint8_t Value)
{
uint16_t p = (uint32_t) Address;
- EEPROM_update(p, (uint16_t) Value);
+ EEPROM_WriteDataByte(p, Value);
}
uint16_t eeprom_read_word (const uint16_t *Address)
{
const uint16_t p = (const uint32_t) Address;
- uint16_t temp;
- EEPROM_read(p, &temp);
- return temp;
+ return EEPROM_ReadDataByte(p) | (EEPROM_ReadDataByte(p+1) << 8);
}
void eeprom_write_word (uint16_t *Address, uint16_t Value)
{
uint16_t p = (uint32_t) Address;
- EEPROM_write(p, Value);
+ EEPROM_WriteDataByte(p, (uint8_t) Value);
+ EEPROM_WriteDataByte(p + 1, (uint8_t) (Value >> 8));
}
void eeprom_update_word (uint16_t *Address, uint16_t Value)
{
uint16_t p = (uint32_t) Address;
- EEPROM_update(p, Value);
+ EEPROM_WriteDataByte(p, (uint8_t) Value);
+ EEPROM_WriteDataByte(p + 1, (uint8_t) (Value >> 8));
}
uint32_t eeprom_read_dword (const uint32_t *Address)
{
const uint16_t p = (const uint32_t) Address;
- uint16_t temp1, temp2;
- EEPROM_read(p, &temp1);
- EEPROM_read(p + 1, &temp2);
- return temp1 | (temp2 << 16);
+ return EEPROM_ReadDataByte(p) | (EEPROM_ReadDataByte(p+1) << 8)
+ | (EEPROM_ReadDataByte(p+2) << 16) | (EEPROM_ReadDataByte(p+3) << 24);
}
void eeprom_write_dword (uint32_t *Address, uint32_t Value)
{
- uint16_t temp = (uint16_t) Value;
- uint16_t p = (uint32_t) Address;
- EEPROM_write(p, temp);
- temp = (uint16_t) (Value >> 16);
- EEPROM_write(p + 1, temp);
+ uint16_t p = (const uint32_t) Address;
+ EEPROM_WriteDataByte(p, (uint8_t) Value);
+ EEPROM_WriteDataByte(p+1, (uint8_t) (Value >> 8));
+ EEPROM_WriteDataByte(p+2, (uint8_t) (Value >> 16));
+ EEPROM_WriteDataByte(p+3, (uint8_t) (Value >> 24));
}
void eeprom_update_dword (uint32_t *Address, uint32_t Value)
{
- uint16_t temp = (uint16_t) Value;
- uint16_t p = (uint32_t) Address;
- EEPROM_update(p, temp);
- temp = (uint16_t) (Value >> 16);
- EEPROM_update(p + 1, temp);
+ uint16_t p = (const uint32_t) Address;
+ EEPROM_WriteDataByte(p, (uint8_t) Value);
+ EEPROM_WriteDataByte(p+1, (uint8_t) (Value >> 8));
+ EEPROM_WriteDataByte(p+2, (uint8_t) (Value >> 16));
+ EEPROM_WriteDataByte(p+3, (uint8_t) (Value >> 24));
+}
+
+void eeprom_read_block(void *buf, const void *addr, uint32_t len) {
+ const uint8_t *p = (const uint8_t *)addr;
+ uint8_t *dest = (uint8_t *)buf;
+ while (len--) {
+ *dest++ = eeprom_read_byte(p++);
+ }
+}
+
+void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
+ uint8_t *p = (uint8_t *)addr;
+ const uint8_t *src = (const uint8_t *)buf;
+ while (len--) {
+ eeprom_write_byte(p++, *src++);
+ }
+}
+
+void eeprom_update_block(const void *buf, void *addr, uint32_t len) {
+ uint8_t *p = (uint8_t *)addr;
+ const uint8_t *src = (const uint8_t *)buf;
+ while (len--) {
+ eeprom_write_byte(p++, *src++);
+ }
}
diff --git a/tmk_core/common/chibios/eeprom_stm32.h b/tmk_core/common/chibios/eeprom_stm32.h
index 09229530ca4..892e417b7e6 100755
--- a/tmk_core/common/chibios/eeprom_stm32.h
+++ b/tmk_core/common/chibios/eeprom_stm32.h
@@ -10,15 +10,17 @@
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
- * This files are free to use from https://github.com/rogerclarkmelbourne/Arduino_STM32 and
- * https://github.com/leaflabs/libmaple
+ * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by
+ * Artur F.
*
* Modifications for QMK and STM32F303 by Yiancar
+ *
+ * This library assumes 8-bit data locations. To add a new MCU, please provide the flash
+ * page size and the total flash size in Kb. The number of available pages must be a multiple
+ * of 2. Only half of the pages account for the total EEPROM size.
+ * This library also assumes that the pages are not used by the firmware.
*/
-// This file must be modified if the MCU is not defined below.
-// This library also assumes that the pages are not used by the firmware.
-
#ifndef __EEPROM_H
#define __EEPROM_H
@@ -38,9 +40,11 @@
#ifndef EEPROM_PAGE_SIZE
#if defined (MCU_STM32F103RB)
- #define EEPROM_PAGE_SIZE (uint16_t)0x400 /* Page size = 1KByte */
+ #define FEE_PAGE_SIZE (uint16_t)0x400 // Page size = 1KByte
+ #define FEE_DENSITY_PAGES 2 // How many pages are used
#elif defined (MCU_STM32F103ZE) || defined (MCU_STM32F103RE) || defined (MCU_STM32F103RD) || defined (MCU_STM32F303CC)
- #define EEPROM_PAGE_SIZE (uint16_t)0x800 /* Page size = 2KByte */
+ #define FEE_PAGE_SIZE (uint16_t)0x800 // Page size = 2KByte
+ #define FEE_DENSITY_PAGES 4 // How many pages are used
#else
#error "No MCU type specified. Add something like -DMCU_STM32F103RB to your compiler arguments (probably in a Makefile)."
#endif
@@ -48,48 +52,30 @@
#ifndef EEPROM_START_ADDRESS
#if defined (MCU_STM32F103RB)
- #define EEPROM_START_ADDRESS ((uint32_t)(0x8000000 + 128 * 1024 - 2 * EEPROM_PAGE_SIZE))
+ #define FEE_MCU_FLASH_SIZE 128 // Size in Kb
#elif defined (MCU_STM32F103ZE) || defined (MCU_STM32F103RE)
- #define EEPROM_START_ADDRESS ((uint32_t)(0x8000000 + 512 * 1024 - 2 * EEPROM_PAGE_SIZE))
+ #define FEE_MCU_FLASH_SIZE 512 // Size in Kb
#elif defined (MCU_STM32F103RD)
- #define EEPROM_START_ADDRESS ((uint32_t)(0x8000000 + 384 * 1024 - 2 * EEPROM_PAGE_SIZE))
+ #define FEE_MCU_FLASH_SIZE 384 // Size in Kb
#elif defined (MCU_STM32F303CC)
- #define EEPROM_START_ADDRESS ((uint32_t)(0x8000000 + 256 * 1024 - 2 * EEPROM_PAGE_SIZE))
+ #define FEE_MCU_FLASH_SIZE 256 // Size in Kb
#else
#error "No MCU type specified. Add something like -DMCU_STM32F103RB to your compiler arguments (probably in a Makefile)."
#endif
#endif
-/* Pages 0 and 1 base and end addresses */
-#define EEPROM_PAGE0_BASE ((uint32_t)(EEPROM_START_ADDRESS + 0x000))
-#define EEPROM_PAGE1_BASE ((uint32_t)(EEPROM_START_ADDRESS + EEPROM_PAGE_SIZE))
+// DONT CHANGE
+// Choose location for the first EEPROM Page address on the top of flash
+#define FEE_PAGE_BASE_ADDRESS ((uint32_t)(0x8000000 + FEE_MCU_FLASH_SIZE * 1024 - FEE_DENSITY_PAGES * FEE_PAGE_SIZE))
+#define FEE_DENSITY_BYTES ((FEE_PAGE_SIZE / 2) * FEE_DENSITY_PAGES - 1)
+#define FEE_LAST_PAGE_ADDRESS (FEE_PAGE_BASE_ADDRESS + (FEE_PAGE_SIZE * FEE_DENSITY_PAGES))
+#define FEE_EMPTY_WORD ((uint16_t)0xFFFF)
+#define FEE_ADDR_OFFSET(Address)(Address * 2) // 1Byte per Word will be saved to preserve Flash
-/* Page status definitions */
-#define EEPROM_ERASED ((uint16_t)0xFFFF) /* PAGE is empty */
-#define EEPROM_RECEIVE_DATA ((uint16_t)0xEEEE) /* PAGE is marked to receive data */
-#define EEPROM_VALID_PAGE ((uint16_t)0x0000) /* PAGE containing valid data */
-
-/* Page full define */
-enum uint16_t
- {
- EEPROM_OK = ((uint16_t)0x0000),
- EEPROM_OUT_SIZE = ((uint16_t)0x0081),
- EEPROM_BAD_ADDRESS = ((uint16_t)0x0082),
- EEPROM_BAD_FLASH = ((uint16_t)0x0083),
- EEPROM_NOT_INIT = ((uint16_t)0x0084),
- EEPROM_SAME_VALUE = ((uint16_t)0x0085),
- EEPROM_NO_VALID_PAGE = ((uint16_t)0x00AB)
- };
-
-#define EEPROM_DEFAULT_DATA 0xFFFF
-
- uint16_t EEPROM_init(void);
- uint16_t EEPROM_format(void);
- uint16_t EEPROM_erases(uint16_t *);
- uint16_t EEPROM_read (uint16_t address, uint16_t *data);
- uint16_t EEPROM_write(uint16_t address, uint16_t data);
- uint16_t EEPROM_update(uint16_t address, uint16_t data);
- uint16_t EEPROM_count(uint16_t *);
- uint16_t EEPROM_maxcount(void);
+// Use this function to initialize the functionality
+uint16_t EEPROM_Init(void);
+void EEPROM_Erase (void);
+uint16_t EEPROM_WriteDataByte (uint16_t Address, uint8_t DataByte);
+uint8_t EEPROM_ReadDataByte (uint16_t Address);
#endif /* __EEPROM_H */
diff --git a/tmk_core/common/chibios/flash_stm32.c b/tmk_core/common/chibios/flash_stm32.c
index 27359348445..164654a15ea 100755
--- a/tmk_core/common/chibios/flash_stm32.c
+++ b/tmk_core/common/chibios/flash_stm32.c
@@ -186,3 +186,18 @@ void FLASH_Lock(void)
/* Set the Lock Bit to lock the FPEC and the FCR */
FLASH->CR |= FLASH_CR_LOCK;
}
+
+/**
+ * @brief Clears the FLASH's pending flags.
+ * @param FLASH_FLAG: specifies the FLASH flags to clear.
+ * This parameter can be any combination of the following values:
+ * @arg FLASH_FLAG_PGERR: FLASH Programming error flag flag
+ * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
+ * @arg FLASH_FLAG_EOP: FLASH End of Programming flag
+ * @retval None
+ */
+void FLASH_ClearFlag(uint32_t FLASH_FLAG)
+{
+ /* Clear the flags */
+ FLASH->SR = FLASH_FLAG;
+}
diff --git a/tmk_core/common/chibios/flash_stm32.h b/tmk_core/common/chibios/flash_stm32.h
index cc065cbca26..3c99cc566a0 100755
--- a/tmk_core/common/chibios/flash_stm32.h
+++ b/tmk_core/common/chibios/flash_stm32.h
@@ -45,6 +45,7 @@ FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
void FLASH_Unlock(void);
void FLASH_Lock(void);
+void FLASH_ClearFlag(uint32_t FLASH_FLAG);
#ifdef __cplusplus
}
diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c
index d8bab7d2e52..59b2bffbc71 100644
--- a/tmk_core/common/eeconfig.c
+++ b/tmk_core/common/eeconfig.c
@@ -33,7 +33,7 @@ void eeconfig_init_kb(void) {
*/
void eeconfig_init_quantum(void) {
#ifdef STM32_EEPROM_ENABLE
- EEPROM_format();
+ EEPROM_Erase();
#endif
eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
eeprom_update_byte(EECONFIG_DEBUG, 0);
@@ -74,7 +74,7 @@ void eeconfig_enable(void)
void eeconfig_disable(void)
{
#ifdef STM32_EEPROM_ENABLE
- EEPROM_format();
+ EEPROM_Erase();
#endif
eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER_OFF);
}
diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h
index 8d4e1d4d008..eedd67602c6 100644
--- a/tmk_core/common/eeconfig.h
+++ b/tmk_core/common/eeconfig.h
@@ -25,8 +25,7 @@ along with this program. If not, see .
#define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEED
#define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF
-/* eeprom parameteter address */
-#if !defined(STM32_EEPROM_ENABLE)
+/* EEPROM parameter address */
#define EECONFIG_MAGIC (uint16_t *)0
#define EECONFIG_DEBUG (uint8_t *)2
#define EECONFIG_DEFAULT_LAYER (uint8_t *)3
@@ -42,24 +41,6 @@ along with this program. If not, see .
#define EECONFIG_KEYBOARD (uint32_t *)15
#define EECONFIG_USER (uint32_t *)19
-#else
-/* STM32F3 uses 16byte block. Reconfigure memory map */
-#define EECONFIG_MAGIC (uint16_t *)0
-#define EECONFIG_DEBUG (uint8_t *)1
-#define EECONFIG_DEFAULT_LAYER (uint8_t *)2
-#define EECONFIG_KEYMAP (uint8_t *)3
-#define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)4
-#define EECONFIG_BACKLIGHT (uint8_t *)5
-#define EECONFIG_AUDIO (uint8_t *)6
-#define EECONFIG_RGBLIGHT (uint32_t *)7
-#define EECONFIG_UNICODEMODE (uint8_t *)9
-#define EECONFIG_STENOMODE (uint8_t *)10
-// EEHANDS for two handed boards
-#define EECONFIG_HANDEDNESS (uint8_t *)11
-#define EECONFIG_KEYBOARD (uint32_t *)12
-#define EECONFIG_USER (uint32_t *)14
-#endif
-
/* debug bit */
#define EECONFIG_DEBUG_ENABLE (1<<0)
#define EECONFIG_DEBUG_MATRIX (1<<1)
diff --git a/tmk_core/common/eeprom.h b/tmk_core/common/eeprom.h
index 3696d0df3f8..5ae0f6eebd9 100644
--- a/tmk_core/common/eeprom.h
+++ b/tmk_core/common/eeprom.h
@@ -20,5 +20,4 @@ void eeprom_update_dword (uint32_t *__p, uint32_t __value);
void eeprom_update_block (const void *__src, void *__dst, uint32_t __n);
#endif
-
#endif /* TMK_CORE_COMMON_EEPROM_H_ */
diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c
index ee9571c950d..5436d490901 100644
--- a/tmk_core/protocol/chibios/main.c
+++ b/tmk_core/protocol/chibios/main.c
@@ -113,7 +113,7 @@ int main(void) {
chSysInit();
#ifdef STM32_EEPROM_ENABLE
- EEPROM_init();
+ EEPROM_Init();
#endif
// TESTING
From 28986998046b4dbdbc228dbb7889836de2a3ee18 Mon Sep 17 00:00:00 2001
From: flehrad <20124416+flehrad@users.noreply.github.com>
Date: Tue, 8 Jan 2019 02:29:37 +1100
Subject: [PATCH 17/29] Add Downbubble to Handwired repository (#4794)
* add snagpad
* Update keyboards/snagpad/kb.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Rename kb.c to snagpad.c
* Update and rename kb.h to snagpad.h
* Update snagpad.h
* Update keymap.c
* Update config.h
* Update config.h
* Update rules.mk
* Update README.md
* Add files via upload
* Update info.json
* Update keymap.c
* Update snagpad.h
* Delete snagpad_numpad.json
* Delete snagpad_ortho.json
* Update README.md
* Update keyboards/snagpad/info.json
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* add tradestation
* --all
* Did something weird messing with git -_- hopefully fixed
* Update keyboards/tradestation/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/tradestation/config.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/tradestation/config.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/tradestation/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update snagpad.h
* Update rules.mk
* Update keymap.c
* fixed merge conflict, updated to LAYOUT_numpad_5x4
* relocated to handwire, updated naming, added layouts to rules.mk
* Update keyboards/handwired/tradestation/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/snagpad/snagpad.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Rename LICENSE to license
* Rename README.md to readme.md
* Rename LICENSE to license
* Rename README.md to readme.md
* Update info.json
* Update keymap.c
* Update info.json
* Adding Numbrero QMK to Handwire Repository
* Update config.h
* Update readme.md
* Update keyboards/handwired/numbrero/numbrero.h
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keymap.c
* Update keyboards/handwired/numbrero/rules.mk
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Add handwired/downbubble keyboard to QMK Repository
* Update readme.md
* Create license
* Update keyboards/handwired/downbubble/readme.md
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* Update keyboards/handwired/downbubble/keymaps/default/keymap.c
Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com>
* fixed .h with noroadsleft's gist
---
keyboards/handwired/downbubble/config.h | 245 ++++++++
keyboards/handwired/downbubble/downbubble.c | 16 +
keyboards/handwired/downbubble/downbubble.h | 111 ++++
keyboards/handwired/downbubble/info.json | 554 ++++++++++++++++++
.../downbubble/keymaps/default/config.h | 19 +
.../downbubble/keymaps/default/keymap.c | 103 ++++
.../downbubble/keymaps/default/readme.md | 1 +
keyboards/handwired/downbubble/license | 201 +++++++
keyboards/handwired/downbubble/readme.md | 15 +
keyboards/handwired/downbubble/rules.mk | 81 +++
10 files changed, 1346 insertions(+)
create mode 100644 keyboards/handwired/downbubble/config.h
create mode 100644 keyboards/handwired/downbubble/downbubble.c
create mode 100644 keyboards/handwired/downbubble/downbubble.h
create mode 100644 keyboards/handwired/downbubble/info.json
create mode 100644 keyboards/handwired/downbubble/keymaps/default/config.h
create mode 100644 keyboards/handwired/downbubble/keymaps/default/keymap.c
create mode 100644 keyboards/handwired/downbubble/keymaps/default/readme.md
create mode 100644 keyboards/handwired/downbubble/license
create mode 100644 keyboards/handwired/downbubble/readme.md
create mode 100644 keyboards/handwired/downbubble/rules.mk
diff --git a/keyboards/handwired/downbubble/config.h b/keyboards/handwired/downbubble/config.h
new file mode 100644
index 00000000000..0da13a4b15e
--- /dev/null
+++ b/keyboards/handwired/downbubble/config.h
@@ -0,0 +1,245 @@
+/*
+Copyright 2018 Don Chiou
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Flehrad
+#define PRODUCT downbubble
+#define DESCRIPTION An Ergonomic Centered Numpad Keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 20
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F1, F2, F3, F4, F5, F6 }
+#define MATRIX_COL_PINS { F7, C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D6, D5, D4, D3, D2, D1, D0, B7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #define RGBLIGHT_HUE_STEP 8
+// #define RGBLIGHT_SAT_STEP 8
+// #define RGBLIGHT_VAL_STEP 8
+// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+// /*== all animations enable ==*/
+// #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1 H
+//#define MAGIC_KEY_HELP2 SLASH
+//#define MAGIC_KEY_DEBUG D
+//#define MAGIC_KEY_DEBUG_MATRIX X
+//#define MAGIC_KEY_DEBUG_KBD K
+//#define MAGIC_KEY_DEBUG_MOUSE M
+//#define MAGIC_KEY_VERSION V
+//#define MAGIC_KEY_STATUS S
+//#define MAGIC_KEY_CONSOLE C
+//#define MAGIC_KEY_LAYER0_ALT1 ESC
+//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
+//#define MAGIC_KEY_LAYER0 0
+//#define MAGIC_KEY_LAYER1 1
+//#define MAGIC_KEY_LAYER2 2
+//#define MAGIC_KEY_LAYER3 3
+//#define MAGIC_KEY_LAYER4 4
+//#define MAGIC_KEY_LAYER5 5
+//#define MAGIC_KEY_LAYER6 6
+//#define MAGIC_KEY_LAYER7 7
+//#define MAGIC_KEY_LAYER8 8
+//#define MAGIC_KEY_LAYER9 9
+//#define MAGIC_KEY_BOOTLOADER PAUSE
+//#define MAGIC_KEY_LOCK CAPS
+//#define MAGIC_KEY_EEPROM E
+//#define MAGIC_KEY_NKRO N
+//#define MAGIC_KEY_SLEEP_LED Z
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+*/
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/downbubble/downbubble.c b/keyboards/handwired/downbubble/downbubble.c
new file mode 100644
index 00000000000..48be8e49982
--- /dev/null
+++ b/keyboards/handwired/downbubble/downbubble.c
@@ -0,0 +1,16 @@
+/* Copyright 2018 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include "downbubble.h"
diff --git a/keyboards/handwired/downbubble/downbubble.h b/keyboards/handwired/downbubble/downbubble.h
new file mode 100644
index 00000000000..a25a9a5db56
--- /dev/null
+++ b/keyboards/handwired/downbubble/downbubble.h
@@ -0,0 +1,111 @@
+/* Copyright 2018 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_downbubble_standard( \
+ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K418, \
+ K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \
+ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
+ }
+
+#define LAYOUT_downbubble_splitbackspace( \
+ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K418, \
+ K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \
+ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
+ }
+
+#define LAYOUT_downbubble_splitrightshift( \
+ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K417, K418, \
+ K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, K417, K418, KC_NO }, \
+ { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
+ }
+
+#define LAYOUT_downbubble_splitnumpad( \
+ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, K317, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, K416, K418, \
+ K50, K51, K52, K53, K54, K56, K57, K58, K59, K510, K512, K513, K514, K516, K517, K518, K519 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \
+ { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
+ }
+
+#define LAYOUT_downbubble_spliteverything( \
+ K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, K317, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, K416, K417, K418, \
+ K50, K51, K52, K53, K54, K56, K57, K58, K59, K510, K512, K513, K514, K516, K517, K518, K519 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, K417, K418, KC_NO }, \
+ { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
+ }
diff --git a/keyboards/handwired/downbubble/info.json b/keyboards/handwired/downbubble/info.json
new file mode 100644
index 00000000000..cd64c0e3695
--- /dev/null
+++ b/keyboards/handwired/downbubble/info.json
@@ -0,0 +1,554 @@
+{
+ "keyboard_name": "downbubble",
+ "url": "",
+ "maintainer": "flehrad",
+ "width": 22.75,
+ "height": 6,
+ "layouts": {
+ "LAYOUT_downbubble_standard": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0.5},
+ {"label":"K01", "x":1, "y":0.5},
+ {"label":"K02", "x":2, "y":0.5},
+ {"label":"K03", "x":3, "y":0.5},
+ {"label":"K04", "x":4, "y":0.5},
+ {"label":"K05", "x":5, "y":0.5},
+ {"label":"K06", "x":6, "y":0.5},
+ {"label":"K010", "x":12.75, "y":0.5},
+ {"label":"K011", "x":13.75, "y":0.5},
+ {"label":"K012", "x":14.75, "y":0.5},
+ {"label":"K013", "x":15.75, "y":0.5},
+ {"label":"K014", "x":16.75, "y":0.5},
+ {"label":"K015", "x":17.75, "y":0.5},
+ {"label":"K016", "x":18.75, "y":0.5},
+ {"label":"K017", "x":19.75, "y":0.5},
+ {"label":"K018", "x":20.75, "y":0.5},
+ {"label":"K019", "x":21.75, "y":0.5},
+ {"label":"K10", "x":0, "y":1.5},
+ {"label":"K11", "x":1, "y":1.5},
+ {"label":"K12", "x":2, "y":1.5},
+ {"label":"K13", "x":3, "y":1.5},
+ {"label":"K14", "x":4, "y":1.5},
+ {"label":"K15", "x":5, "y":1.5},
+ {"label":"K16", "x":6, "y":1.5},
+ {"label":"K17", "x":8.75, "y":1.5},
+ {"label":"K18", "x":9.75, "y":1.5},
+ {"label":"K19", "x":10.75, "y":1.5},
+ {"label":"K110", "x":12.75, "y":1.5},
+ {"label":"K111", "x":13.75, "y":1.5},
+ {"label":"K112", "x":14.75, "y":1.5},
+ {"label":"K113", "x":15.75, "y":1.5},
+ {"label":"K114", "x":16.75, "y":1.5},
+ {"label":"K115", "x":17.75, "y":1.5},
+ {"label":"K116", "x":18.75, "y":1.5, "w":2},
+ {"label":"K118", "x":20.75, "y":1.5},
+ {"label":"K119", "x":21.75, "y":1.5},
+ {"label":"K20", "x":0, "y":2.5, "w":1.5},
+ {"label":"K21", "x":1.5, "y":2.5},
+ {"label":"K22", "x":2.5, "y":2.5},
+ {"label":"K23", "x":3.5, "y":2.5},
+ {"label":"K24", "x":4.5, "y":2.5},
+ {"label":"K25", "x":5.5, "y":2.5},
+ {"label":"K26", "x":7.75, "y":2.5},
+ {"label":"K17", "x":8.75, "y":2.5},
+ {"label":"K28", "x":9.75, "y":2.5},
+ {"label":"K210", "x":12.25, "y":2.5},
+ {"label":"K211", "x":13.25, "y":2.5},
+ {"label":"K212", "x":14.25, "y":2.5},
+ {"label":"K213", "x":15.25, "y":2.5},
+ {"label":"K214", "x":16.25, "y":2.5},
+ {"label":"K215", "x":17.25, "y":2.5},
+ {"label":"K216", "x":18.25, "y":2.5},
+ {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
+ {"label":"K218", "x":20.75, "y":2.5},
+ {"label":"K219", "x":21.75, "y":2.5},
+ {"label":"K30", "x":0, "y":3.5, "w":1.75},
+ {"label":"K31", "x":1.75, "y":3.5},
+ {"label":"K32", "x":2.75, "y":3.5},
+ {"label":"K33", "x":3.75, "y":3.5},
+ {"label":"K34", "x":4.75, "y":3.5},
+ {"label":"K35", "x":5.75, "y":3.5},
+ {"label":"K36", "x":7.75, "y":3.5},
+ {"label":"K37", "x":8.75, "y":3.5},
+ {"label":"K38", "x":9.75, "y":3.5},
+ {"label":"K29", "x":10.75, "y":2.5, "h":2},
+ {"label":"K310", "x":12.5, "y":3.5},
+ {"label":"K311", "x":13.5, "y":3.5},
+ {"label":"K312", "x":14.5, "y":3.5},
+ {"label":"K313", "x":15.5, "y":3.5},
+ {"label":"K314", "x":16.5, "y":3.5},
+ {"label":"K315", "x":17.5, "y":3.5},
+ {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
+ {"label":"K40", "x":0, "y":4.5, "w":2.25},
+ {"label":"K41", "x":2.25, "y":4.5},
+ {"label":"K42", "x":3.25, "y":4.5},
+ {"label":"K43", "x":4.25, "y":4.5},
+ {"label":"K44", "x":5.25, "y":4.5},
+ {"label":"K45", "x":6.25, "y":4.5},
+ {"label":"K46", "x":7.75, "y":4.5},
+ {"label":"K47", "x":8.75, "y":4.5},
+ {"label":"K48", "x":9.75, "y":4.5},
+ {"label":"K410", "x":13, "y":4.5},
+ {"label":"K411", "x":14, "y":4.5},
+ {"label":"K412", "x":15, "y":4.5},
+ {"label":"K413", "x":16, "y":4.5},
+ {"label":"K414", "x":17, "y":4.5},
+ {"label":"K416", "x":18, "y":4.5, "w":2.75},
+ {"label":"K418", "x":20.75, "y":4.5},
+ {"label":"K50", "x":0, "y":5.5, "w":1.25},
+ {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
+ {"label":"K54", "x":5, "y":5.5, "w":2.25},
+ {"label":"K56", "x":7.75, "y":5.5, "w":2},
+ {"label":"K58", "x":9.75, "y":5.5},
+ {"label":"K49", "x":10.75, "y":4.5, "h":2},
+ {"label":"K510", "x":13, "y":5.5, "w":2},
+ {"label":"K512", "x":15, "y":5.5, "w":1.25},
+ {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
+ {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
+ {"label":"K516", "x":18.75, "y":5.5},
+ {"label":"K517", "x":19.75, "y":5.5},
+ {"label":"K518", "x":20.75, "y":5.5},
+ {"label":"K519", "x":21.75, "y":5.5}]
+ },
+ "LAYOUT_downbubbled_splitbackspace": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0.5},
+ {"label":"K01", "x":1, "y":0.5},
+ {"label":"K02", "x":2, "y":0.5},
+ {"label":"K03", "x":3, "y":0.5},
+ {"label":"K04", "x":4, "y":0.5},
+ {"label":"K05", "x":5, "y":0.5},
+ {"label":"K06", "x":6, "y":0.5},
+ {"label":"K010", "x":12.75, "y":0.5},
+ {"label":"K011", "x":13.75, "y":0.5},
+ {"label":"K012", "x":14.75, "y":0.5},
+ {"label":"K013", "x":15.75, "y":0.5},
+ {"label":"K014", "x":16.75, "y":0.5},
+ {"label":"K015", "x":17.75, "y":0.5},
+ {"label":"K016", "x":18.75, "y":0.5},
+ {"label":"K017", "x":19.75, "y":0.5},
+ {"label":"K018", "x":20.75, "y":0.5},
+ {"label":"K019", "x":21.75, "y":0.5},
+ {"label":"K10", "x":0, "y":1.5},
+ {"label":"K11", "x":1, "y":1.5},
+ {"label":"K12", "x":2, "y":1.5},
+ {"label":"K13", "x":3, "y":1.5},
+ {"label":"K14", "x":4, "y":1.5},
+ {"label":"K15", "x":5, "y":1.5},
+ {"label":"K16", "x":6, "y":1.5},
+ {"label":"K17", "x":8.75, "y":1.5},
+ {"label":"K18", "x":9.75, "y":1.5},
+ {"label":"K19", "x":10.75, "y":1.5},
+ {"label":"K110", "x":12.75, "y":1.5},
+ {"label":"K111", "x":13.75, "y":1.5},
+ {"label":"K112", "x":14.75, "y":1.5},
+ {"label":"K113", "x":15.75, "y":1.5},
+ {"label":"K114", "x":16.75, "y":1.5},
+ {"label":"K115", "x":17.75, "y":1.5},
+ {"label":"K116", "x":18.75, "y":1.5},
+ {"label":"K117", "x":19.75, "y":1},
+ {"label":"K118", "x":20.75, "y":1.5},
+ {"label":"K119", "x":21.75, "y":1.5},
+ {"label":"K20", "x":0, "y":2.5, "w":1.5},
+ {"label":"K21", "x":1.5, "y":2.5},
+ {"label":"K22", "x":2.5, "y":2.5},
+ {"label":"K23", "x":3.5, "y":2.5},
+ {"label":"K24", "x":4.5, "y":2.5},
+ {"label":"K25", "x":5.5, "y":2.5},
+ {"label":"K26", "x":7.75, "y":2.5},
+ {"label":"K17", "x":8.75, "y":2.5},
+ {"label":"K28", "x":9.75, "y":2.5},
+ {"label":"K210", "x":12.25, "y":2.5},
+ {"label":"K211", "x":13.25, "y":2.5},
+ {"label":"K212", "x":14.25, "y":2.5},
+ {"label":"K213", "x":15.25, "y":2.5},
+ {"label":"K214", "x":16.25, "y":2.5},
+ {"label":"K215", "x":17.25, "y":2.5},
+ {"label":"K216", "x":18.25, "y":2.5},
+ {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
+ {"label":"K218", "x":20.75, "y":2.5},
+ {"label":"K219", "x":21.75, "y":2.5},
+ {"label":"K30", "x":0, "y":3.5, "w":1.75},
+ {"label":"K31", "x":1.75, "y":3.5},
+ {"label":"K32", "x":2.75, "y":3.5},
+ {"label":"K33", "x":3.75, "y":3.5},
+ {"label":"K34", "x":4.75, "y":3.5},
+ {"label":"K35", "x":5.75, "y":3.5},
+ {"label":"K36", "x":7.75, "y":3.5},
+ {"label":"K37", "x":8.75, "y":3.5},
+ {"label":"K38", "x":9.75, "y":3.5},
+ {"label":"K29", "x":10.75, "y":2.5, "h":2},
+ {"label":"K310", "x":12.5, "y":3.5},
+ {"label":"K311", "x":13.5, "y":3.5},
+ {"label":"K312", "x":14.5, "y":3.5},
+ {"label":"K313", "x":15.5, "y":3.5},
+ {"label":"K314", "x":16.5, "y":3.5},
+ {"label":"K315", "x":17.5, "y":3.5},
+ {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
+ {"label":"K40", "x":0, "y":4.5, "w":2.25},
+ {"label":"K41", "x":2.25, "y":4.5},
+ {"label":"K42", "x":3.25, "y":4.5},
+ {"label":"K43", "x":4.25, "y":4.5},
+ {"label":"K44", "x":5.25, "y":4.5},
+ {"label":"K45", "x":6.25, "y":4.5},
+ {"label":"K46", "x":7.75, "y":4.5},
+ {"label":"K47", "x":8.75, "y":4.5},
+ {"label":"K48", "x":9.75, "y":4.5},
+ {"label":"K410", "x":13, "y":4.5},
+ {"label":"K411", "x":14, "y":4.5},
+ {"label":"K412", "x":15, "y":4.5},
+ {"label":"K413", "x":16, "y":4.5},
+ {"label":"K414", "x":17, "y":4.5},
+ {"label":"K416", "x":18, "y":4.5, "w":2.75},
+ {"label":"K418", "x":20.75, "y":4.5},
+ {"label":"K50", "x":0, "y":5.5, "w":1.25},
+ {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
+ {"label":"K54", "x":5, "y":5.5, "w":2.25},
+ {"label":"K56", "x":7.75, "y":5.5, "w":2},
+ {"label":"K58", "x":9.75, "y":5.5},
+ {"label":"K49", "x":10.75, "y":4.5, "h":2},
+ {"label":"K510", "x":13, "y":5.5, "w":2},
+ {"label":"K512", "x":15, "y":5.5, "w":1.25},
+ {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
+ {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
+ {"label":"K516", "x":18.75, "y":5.5},
+ {"label":"K517", "x":19.75, "y":5.5},
+ {"label":"K518", "x":20.75, "y":5.5},
+ {"label":"K519", "x":21.75, "y":5.5}]
+ },
+ "LAYOUT_downbubble_splitrightshift": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0.5},
+ {"label":"K01", "x":1, "y":0.5},
+ {"label":"K02", "x":2, "y":0.5},
+ {"label":"K03", "x":3, "y":0.5},
+ {"label":"K04", "x":4, "y":0.5},
+ {"label":"K05", "x":5, "y":0.5},
+ {"label":"K06", "x":6, "y":0.5},
+ {"label":"K010", "x":12.75, "y":0.5},
+ {"label":"K011", "x":13.75, "y":0.5},
+ {"label":"K012", "x":14.75, "y":0.5},
+ {"label":"K013", "x":15.75, "y":0.5},
+ {"label":"K014", "x":16.75, "y":0.5},
+ {"label":"K015", "x":17.75, "y":0.5},
+ {"label":"K016", "x":18.75, "y":0.5},
+ {"label":"K017", "x":19.75, "y":0.5},
+ {"label":"K018", "x":20.75, "y":0.5},
+ {"label":"K019", "x":21.75, "y":0.5},
+ {"label":"K10", "x":0, "y":1.5},
+ {"label":"K11", "x":1, "y":1.5},
+ {"label":"K12", "x":2, "y":1.5},
+ {"label":"K13", "x":3, "y":1.5},
+ {"label":"K14", "x":4, "y":1.5},
+ {"label":"K15", "x":5, "y":1.5},
+ {"label":"K16", "x":6, "y":1.5},
+ {"label":"K17", "x":8.75, "y":1.5},
+ {"label":"K18", "x":9.75, "y":1.5},
+ {"label":"K19", "x":10.75, "y":1.5},
+ {"label":"K110", "x":12.75, "y":1.5},
+ {"label":"K111", "x":13.75, "y":1.5},
+ {"label":"K112", "x":14.75, "y":1.5},
+ {"label":"K113", "x":15.75, "y":1.5},
+ {"label":"K114", "x":16.75, "y":1.5},
+ {"label":"K115", "x":17.75, "y":1.5},
+ {"label":"K116", "x":18.75, "y":1.5, "w":2},
+ {"label":"K118", "x":20.75, "y":1.5},
+ {"label":"K119", "x":21.75, "y":1.5},
+ {"label":"K20", "x":0, "y":2.5, "w":1.5},
+ {"label":"K21", "x":1.5, "y":2.5},
+ {"label":"K22", "x":2.5, "y":2.5},
+ {"label":"K23", "x":3.5, "y":2.5},
+ {"label":"K24", "x":4.5, "y":2.5},
+ {"label":"K25", "x":5.5, "y":2.5},
+ {"label":"K26", "x":7.75, "y":2.5},
+ {"label":"K17", "x":8.75, "y":2.5},
+ {"label":"K28", "x":9.75, "y":2.5},
+ {"label":"K210", "x":12.25, "y":2.5},
+ {"label":"K211", "x":13.25, "y":2.5},
+ {"label":"K212", "x":14.25, "y":2.5},
+ {"label":"K213", "x":15.25, "y":2.5},
+ {"label":"K214", "x":16.25, "y":2.5},
+ {"label":"K215", "x":17.25, "y":2.5},
+ {"label":"K216", "x":18.25, "y":2.5},
+ {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
+ {"label":"K218", "x":20.75, "y":2.5},
+ {"label":"K219", "x":21.75, "y":2.5},
+ {"label":"K30", "x":0, "y":3.5, "w":1.75},
+ {"label":"K31", "x":1.75, "y":3.5},
+ {"label":"K32", "x":2.75, "y":3.5},
+ {"label":"K33", "x":3.75, "y":3.5},
+ {"label":"K34", "x":4.75, "y":3.5},
+ {"label":"K35", "x":5.75, "y":3.5},
+ {"label":"K36", "x":7.75, "y":3.5},
+ {"label":"K37", "x":8.75, "y":3.5},
+ {"label":"K38", "x":9.75, "y":3.5},
+ {"label":"K29", "x":10.75, "y":2.5, "h":2},
+ {"label":"K310", "x":12.5, "y":3.5},
+ {"label":"K311", "x":13.5, "y":3.5},
+ {"label":"K312", "x":14.5, "y":3.5},
+ {"label":"K313", "x":15.5, "y":3.5},
+ {"label":"K314", "x":16.5, "y":3.5},
+ {"label":"K315", "x":17.5, "y":3.5},
+ {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
+ {"label":"K40", "x":0, "y":4.5, "w":2.25},
+ {"label":"K41", "x":2.25, "y":4.5},
+ {"label":"K42", "x":3.25, "y":4.5},
+ {"label":"K43", "x":4.25, "y":4.5},
+ {"label":"K44", "x":5.25, "y":4.5},
+ {"label":"K45", "x":6.25, "y":4.5},
+ {"label":"K46", "x":7.75, "y":4.5},
+ {"label":"K47", "x":8.75, "y":4.5},
+ {"label":"K48", "x":9.75, "y":4.5},
+ {"label":"K410", "x":13, "y":4.5},
+ {"label":"K411", "x":14, "y":4.5},
+ {"label":"K412", "x":15, "y":4.5},
+ {"label":"K413", "x":16, "y":4.5},
+ {"label":"K414", "x":17, "y":4.5},
+ {"label":"K416", "x":18, "y":4.5, "w":1.75},
+ {"label":"K417", "x":19.75, "y":4},
+ {"label":"K418", "x":20.75, "y":4.5},
+ {"label":"K50", "x":0, "y":5.5, "w":1.25},
+ {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
+ {"label":"K54", "x":5, "y":5.5, "w":2.25},
+ {"label":"K56", "x":7.75, "y":5.5, "w":2},
+ {"label":"K58", "x":9.75, "y":5.5},
+ {"label":"K49", "x":10.75, "y":4.5, "h":2},
+ {"label":"K510", "x":13, "y":5.5, "w":2},
+ {"label":"K512", "x":15, "y":5.5, "w":1.25},
+ {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
+ {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
+ {"label":"K516", "x":18.75, "y":5.5},
+ {"label":"K517", "x":19.75, "y":5.5},
+ {"label":"K518", "x":20.75, "y":5.5},
+ {"label":"K519", "x":21.75, "y":5.5}]
+ },
+ "LAYOUT_downbubble_splitnumpad": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0.5},
+ {"label":"K01", "x":1, "y":0.5},
+ {"label":"K02", "x":2, "y":0.5},
+ {"label":"K03", "x":3, "y":0.5},
+ {"label":"K04", "x":4, "y":0.5},
+ {"label":"K05", "x":5, "y":0.5},
+ {"label":"K06", "x":6, "y":0.5},
+ {"label":"K010", "x":12.75, "y":0.5},
+ {"label":"K011", "x":13.75, "y":0.5},
+ {"label":"K012", "x":14.75, "y":0.5},
+ {"label":"K013", "x":15.75, "y":0.5},
+ {"label":"K014", "x":16.75, "y":0.5},
+ {"label":"K015", "x":17.75, "y":0.5},
+ {"label":"K016", "x":18.75, "y":0.5},
+ {"label":"K017", "x":19.75, "y":0.5},
+ {"label":"K018", "x":20.75, "y":0.5},
+ {"label":"K019", "x":21.75, "y":0.5},
+ {"label":"K10", "x":0, "y":1.5},
+ {"label":"K11", "x":1, "y":1.5},
+ {"label":"K12", "x":2, "y":1.5},
+ {"label":"K13", "x":3, "y":1.5},
+ {"label":"K14", "x":4, "y":1.5},
+ {"label":"K15", "x":5, "y":1.5},
+ {"label":"K16", "x":6, "y":1.5},
+ {"label":"K17", "x":8.75, "y":1.5},
+ {"label":"K18", "x":9.75, "y":1.5},
+ {"label":"K19", "x":10.75, "y":1.5},
+ {"label":"K110", "x":12.75, "y":1.5},
+ {"label":"K111", "x":13.75, "y":1.5},
+ {"label":"K112", "x":14.75, "y":1.5},
+ {"label":"K113", "x":15.75, "y":1.5},
+ {"label":"K114", "x":16.75, "y":1.5},
+ {"label":"K115", "x":17.75, "y":1.5},
+ {"label":"K116", "x":18.75, "y":1.5, "w":2},
+ {"label":"K118", "x":20.75, "y":1.5},
+ {"label":"K119", "x":21.75, "y":1.5},
+ {"label":"K20", "x":0, "y":2.5, "w":1.5},
+ {"label":"K21", "x":1.5, "y":2.5},
+ {"label":"K22", "x":2.5, "y":2.5},
+ {"label":"K23", "x":3.5, "y":2.5},
+ {"label":"K24", "x":4.5, "y":2.5},
+ {"label":"K25", "x":5.5, "y":2.5},
+ {"label":"K26", "x":7.75, "y":2.5},
+ {"label":"K17", "x":8.75, "y":2.5},
+ {"label":"K28", "x":9.75, "y":2.5},
+ {"label":"K29", "x":10.75, "y":2},
+ {"label":"K210", "x":12.25, "y":2.5},
+ {"label":"K211", "x":13.25, "y":2.5},
+ {"label":"K212", "x":14.25, "y":2.5},
+ {"label":"K213", "x":15.25, "y":2.5},
+ {"label":"K214", "x":16.25, "y":2.5},
+ {"label":"K215", "x":17.25, "y":2.5},
+ {"label":"K216", "x":18.25, "y":2.5},
+ {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
+ {"label":"K218", "x":20.75, "y":2.5},
+ {"label":"K219", "x":21.75, "y":2.5},
+ {"label":"K30", "x":0, "y":3.5, "w":1.75},
+ {"label":"K31", "x":1.75, "y":3.5},
+ {"label":"K32", "x":2.75, "y":3.5},
+ {"label":"K33", "x":3.75, "y":3.5},
+ {"label":"K34", "x":4.75, "y":3.5},
+ {"label":"K35", "x":5.75, "y":3.5},
+ {"label":"K36", "x":7.75, "y":3.5},
+ {"label":"K37", "x":8.75, "y":3.5},
+ {"label":"K38", "x":9.75, "y":3.5},
+ {"label":"K39", "x":10.75, "y":3},
+ {"label":"K310", "x":12.5, "y":3.5},
+ {"label":"K311", "x":13.5, "y":3.5},
+ {"label":"K312", "x":14.5, "y":3.5},
+ {"label":"K313", "x":15.5, "y":3.5},
+ {"label":"K314", "x":16.5, "y":3.5},
+ {"label":"K315", "x":17.5, "y":3.5},
+ {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
+ {"label":"K40", "x":0, "y":4.5, "w":2.25},
+ {"label":"K41", "x":2.25, "y":4.5},
+ {"label":"K42", "x":3.25, "y":4.5},
+ {"label":"K43", "x":4.25, "y":4.5},
+ {"label":"K44", "x":5.25, "y":4.5},
+ {"label":"K45", "x":6.25, "y":4.5},
+ {"label":"K46", "x":7.75, "y":4.5},
+ {"label":"K47", "x":8.75, "y":4.5},
+ {"label":"K48", "x":9.75, "y":4.5},
+ {"label":"K49", "x":10.75, "y":4},
+ {"label":"K410", "x":13, "y":4.5},
+ {"label":"K411", "x":14, "y":4.5},
+ {"label":"K412", "x":15, "y":4.5},
+ {"label":"K413", "x":16, "y":4.5},
+ {"label":"K414", "x":17, "y":4.5},
+ {"label":"K416", "x":18, "y":4.5, "w":2.75},
+ {"label":"K418", "x":20.75, "y":4.5},
+ {"label":"K50", "x":0, "y":5.5, "w":1.25},
+ {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
+ {"label":"K54", "x":5, "y":5.5, "w":2.25},
+ {"label":"K56", "x":7.75, "y":5.5},
+ {"Label":"K57", "x":8.75, "y":5},
+ {"label":"K58", "x":9.75, "y":5},
+ {"label":"K59", "x":10.75, "y":5},
+ {"label":"K510", "x":13, "y":5.5, "w":2},
+ {"label":"K512", "x":15, "y":5.5, "w":1.25},
+ {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
+ {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
+ {"label":"K516", "x":18.75, "y":5.5},
+ {"label":"K517", "x":19.75, "y":5.5},
+ {"label":"K518", "x":20.75, "y":5.5},
+ {"label":"K519", "x":21.75, "y":5.5}]
+ },
+ "LAYOUT_downbubble_spliteverything": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0},
+ {"label":"K01", "x":1, "y":0},
+ {"label":"K02", "x":2, "y":0},
+ {"label":"K03", "x":3, "y":0},
+ {"label":"K04", "x":4, "y":0},
+ {"label":"K05", "x":5, "y":0},
+ {"label":"K06", "x":6, "y":0},
+ {"label":"K010", "x":12.75, "y":0},
+ {"label":"K011", "x":13.75, "y":0},
+ {"label":"K012", "x":14.75, "y":0},
+ {"label":"K013", "x":15.75, "y":0},
+ {"label":"K014", "x":16.75, "y":0},
+ {"label":"K015", "x":17.75, "y":0},
+ {"label":"K016", "x":18.75, "y":0},
+ {"label":"K017", "x":19.75, "y":0},
+ {"label":"K018", "x":20.75, "y":0},
+ {"label":"K019", "X":21.75, "y":0},
+ {"label":"K10", "x":0, "y":1},
+ {"label":"K11", "x":1, "y":1},
+ {"label":"K12", "x":2, "y":1},
+ {"label":"K13", "x":3, "y":1},
+ {"label":"K14", "x":4, "y":1},
+ {"label":"K15", "x":5, "y":1},
+ {"label":"K16", "x":6, "y":1},
+ {"label":"K17", "x":8.75, "y":1},
+ {"label":"K18", "x":9.75, "y":1},
+ {"label":"K19", "x":10.75, "y":1},
+ {"label":"K110", "x":12.75, "y":1},
+ {"label":"K111", "x":13.75, "y":1},
+ {"label":"K112", "x":14.75, "y":1},
+ {"label":"K113", "x":15.75, "y":1},
+ {"label":"K114", "x":16.75, "y":1},
+ {"label":"K115", "x":17.75, "y":1},
+ {"label":"K116", "x":18.75, "y":1},
+ {"label":"K117", "x":19.75, "y":1},
+ {"label":"K118", "x":20.75, "y":1},
+ {"label":"K119", "x":21.75, "y":1},
+ {"label":"K20", "x":0, "y":2, "w":1.5},
+ {"label":"K21", "x":1.5, "y":2},
+ {"label":"K22", "x":2.5, "y":2},
+ {"label":"K23", "x":3.5, "y":2},
+ {"label":"K24", "x":4.5, "y":2},
+ {"label":"K25", "x":5.5, "y":2},
+ {"label":"K26", "x":7.75, "y":2},
+ {"label":"K27", "x":8.75, "y":2},
+ {"label":"K28", "x":9.75, "y":2},
+ {"label":"K29", "x":10.75, "y":2},
+ {"label":"K210", "x":12.25, "y":2},
+ {"label":"K211", "x":13.25, "y":2},
+ {"label":"K212", "x":14.25, "y":2},
+ {"label":"K213", "x":15.25, "y":2},
+ {"label":"K214", "x":16.25, "y":2},
+ {"label":"K215", "x":17.25, "y":2},
+ {"label":"K216", "x":18.25, "y":2},
+ {"label":"K217", "x":19.25, "y":2, "w":1.5},
+ {"label":"K218", "x":20.75, "y":2},
+ {"label":"K219", "x":21.75, "y":2},
+ {"label":"K30", "x":0, "y":3, "w":1.75},
+ {"label":"K31", "x":1.75, "y":3},
+ {"label":"K32", "x":2.75, "y":3},
+ {"label":"K33", "x":3.75, "y":3},
+ {"label":"K34", "x":4.75, "y":3},
+ {"label":"K35", "x":5.75, "y":3},
+ {"label":"K36", "x":7.75, "y":3},
+ {"label":"K37", "x":8.75, "y":3},
+ {"label":"K38", "x":9.75, "y":3},
+ {"label":"K39", "x":10.75, "y":3},
+ {"label":"K310", "x":12.5, "y":3},
+ {"label":"K311", "x":13.5, "y":3},
+ {"label":"K312", "x":14.5, "y":3},
+ {"label":"K313", "x":15.5, "y":3},
+ {"label":"K314", "x":16.5, "y":3},
+ {"label":"K315", "x":17.5, "y":3},
+ {"label":"K317", "x":18.5, "y":3, "w":2.25},
+ {"label":"K40", "x":0, "y":4, "w":2.25},
+ {"label":"K41", "x":2.25, "y":4},
+ {"label":"K42", "x":3.25, "y":4},
+ {"label":"K43", "x":4.25, "y":4},
+ {"label":"K44", "x":5.25, "y":4},
+ {"label":"K45", "x":6.25, "y":4},
+ {"label":"K46", "x":7.75, "y":4},
+ {"label":"K47", "x":8.75, "y":4},
+ {"label":"K48", "x":9.75, "y":4},
+ {"label":"K49", "x":10.75, "y":4},
+ {"label":"K410", "x":13, "y":4},
+ {"label":"K411", "x":14, "y":4},
+ {"label":"K412", "x":15, "y":4},
+ {"label":"K413", "x":16, "y":4},
+ {"label":"K414", "x":17, "y":4},
+ {"label":"K416", "x":18, "y":4, "w":1.75},
+ {"label":"K417", "x":19.75, "y":4},
+ {"label":"K418", "x":20.75, "y":4},
+ {"label":"K50", "x":0, "y":5, "w":1.25},
+ {"label":"K51", "x":1.25, "y":5, "w":1.25},
+ {"label":"K52", "x":2.5, "y":5, "w":1.25},
+ {"label":"K53", "x":3.75, "y":5, "w":1.25},
+ {"label":"K54", "x":5, "y":5, "w":2.25},
+ {"label":"K56", "x":7.75, "y":5},
+ {"label":"K57", "x":8.75, "y":5},
+ {"label":"K58", "x":9.75, "y":5},
+ {"label":"K59", "x":10.75, "y":5},
+ {"label":"K510", "x":13, "y":5, "w":2},
+ {"label":"K512", "x":15, "y":5, "w":1.25},
+ {"label":"K513", "x":16.25, "y":5, "w":1.25},
+ {"label":"K514", "x":17.5, "y":5, "w":1.25},
+ {"label":"K516", "x":18.75, "y":5},
+ {"label":"K517", "x":19.75, "y":5},
+ {"label":"K518", "x":20.75, "y":5},
+ {"label":"K519", "x":21.75, "y":5}]
+ }
+ }
+}
diff --git a/keyboards/handwired/downbubble/keymaps/default/config.h b/keyboards/handwired/downbubble/keymaps/default/config.h
new file mode 100644
index 00000000000..4496c591006
--- /dev/null
+++ b/keyboards/handwired/downbubble/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2018 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/handwired/downbubble/keymaps/default/keymap.c b/keyboards/handwired/downbubble/keymaps/default/keymap.c
new file mode 100644
index 00000000000..d35d3673946
--- /dev/null
+++ b/keyboards/handwired/downbubble/keymaps/default/keymap.c
@@ -0,0 +1,103 @@
+/* Copyright 2018 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_downbubble_standard(\
+ 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_NLCK, KC_HOME, KC_TRNS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_downbubble_splitbackspace(\
+ 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_NLCK, KC_HOME, KC_TRNS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_downbubble_splitrightshift(\
+ 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_NLCK, KC_HOME, KC_TRNS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_downbubble_splitnumpad(\
+ 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_NLCK, KC_HOME, KC_TRNS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_downbubble_spliteverything(\
+ 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_NLCK, KC_HOME, KC_TRNS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
+ } else {
+ // when keycode QMKURL is released
+ }
+ break;
+ }
+ return true;
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/handwired/downbubble/keymaps/default/readme.md b/keyboards/handwired/downbubble/keymaps/default/readme.md
new file mode 100644
index 00000000000..757d9906258
--- /dev/null
+++ b/keyboards/handwired/downbubble/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymaps for downbubble
diff --git a/keyboards/handwired/downbubble/license b/keyboards/handwired/downbubble/license
new file mode 100644
index 00000000000..e6e77b08909
--- /dev/null
+++ b/keyboards/handwired/downbubble/license
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/keyboards/handwired/downbubble/readme.md b/keyboards/handwired/downbubble/readme.md
new file mode 100644
index 00000000000..e6623451277
--- /dev/null
+++ b/keyboards/handwired/downbubble/readme.md
@@ -0,0 +1,15 @@
+# downbubble
+
+Prototype hand-wired version of this keyboard - https://imgur.com/a/0KbX1JH
+
+This is an ergonomic keyboard with a 5 degree rotation on keyboard halves, and a rotated numpad in the center for RH users.
+
+Keyboard Maintainer: [Flehrad](https://github.com/flehrad)
+Hardware Supported: downbubble PCB, AT90USB1286 MCU, MX switches and MiniUSB connector
+Hardware Availability: The Board Podcast Slack
+
+Make example for this keyboard (after setting up your build environment):
+
+ make downbubble:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/downbubble/rules.mk b/keyboards/handwired/downbubble/rules.mk
new file mode 100644
index 00000000000..87d0d4a1e25
--- /dev/null
+++ b/keyboards/handwired/downbubble/rules.mk
@@ -0,0 +1,81 @@
+# MCU name
+MCU = at90usb1286
+#MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# atmega32a bootloadHID
+BOOTLOADER = atmel-dfu
+
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
From 6e984a8b5e34ba181b0893a929af569a1faef2b6 Mon Sep 17 00:00:00 2001
From: patrickmt <40182064+patrickmt@users.noreply.github.com>
Date: Tue, 18 Dec 2018 15:21:25 -0500
Subject: [PATCH 18/29] Update to arm_atsam wait and timer routines
Microsecond (us) delays are now handled by a busy wait loop according to MCU frequency. This replaces the system counter method which had an overhead of around 12us.
TC5 device and supporting routines removed as it was the old us delay counter.
wait_ms is now properly a macro to CLK_delay_ms.
wait_us is now properly a macro to CLK_delay_us.
Removed CLK_get_us as it has no use.
All calls to CLK_get_ms() have been replaced by timer_read64() with corrected typing.
All calls to CLK_delay_ms() have been replaced by wait_ms().
All calls to CLK_delay_us() have been replaced by wait_us() and timings verified or updated as needed after review on scope.
Corrected typing of variables using 64bit ms timer readings if needed.
---
keyboards/massdrop/alt/matrix.c | 12 +--
keyboards/massdrop/ctrl/matrix.c | 12 +--
tmk_core/common/arm_atsam/timer.c | 20 +----
tmk_core/common/wait.h | 4 +
.../protocol/arm_atsam/arm_atsam_protocol.h | 2 +
tmk_core/protocol/arm_atsam/clks.c | 90 +++++--------------
tmk_core/protocol/arm_atsam/clks.h | 5 +-
tmk_core/protocol/arm_atsam/i2c_master.c | 4 +-
tmk_core/protocol/arm_atsam/led_matrix.c | 4 +-
tmk_core/protocol/arm_atsam/main_arm_atsam.c | 18 ++--
tmk_core/protocol/arm_atsam/usb/udi_cdc.c | 8 +-
tmk_core/protocol/arm_atsam/usb/usb2422.c | 15 ++--
12 files changed, 61 insertions(+), 133 deletions(-)
diff --git a/keyboards/massdrop/alt/matrix.c b/keyboards/massdrop/alt/matrix.c
index 892d38791c3..472479d303a 100644
--- a/keyboards/massdrop/alt/matrix.c
+++ b/keyboards/massdrop/alt/matrix.c
@@ -79,8 +79,6 @@ void matrix_init(void)
matrix_init_quantum();
}
-#define MATRIX_SCAN_DELAY 10 //Delay after setting a col to output (in us)
-
uint64_t mdebouncing = 0;
uint8_t matrix_scan(void)
{
@@ -89,9 +87,7 @@ uint8_t matrix_scan(void)
uint8_t col;
uint32_t scans[2]; //PA PB
- if (CLK_get_ms() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
-
- //DBG_1_OFF; //Profiling scans
+ if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer
@@ -99,7 +95,7 @@ uint8_t matrix_scan(void)
{
PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
- CLK_delay_us(MATRIX_SCAN_DELAY); //Delay for output
+ wait_us(1); //Delay for output
scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data
scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data
@@ -132,11 +128,9 @@ uint8_t matrix_scan(void)
else
{
//Begin or extend debounce on change
- mdebouncing = CLK_get_ms() + DEBOUNCING_DELAY;
+ mdebouncing = timer_read64() + DEBOUNCING_DELAY;
}
- //DBG_1_ON; //Profiling scans
-
matrix_scan_quantum();
return 1;
diff --git a/keyboards/massdrop/ctrl/matrix.c b/keyboards/massdrop/ctrl/matrix.c
index 3580577dc10..5f1741e58a5 100644
--- a/keyboards/massdrop/ctrl/matrix.c
+++ b/keyboards/massdrop/ctrl/matrix.c
@@ -79,8 +79,6 @@ void matrix_init(void)
matrix_init_quantum();
}
-#define MATRIX_SCAN_DELAY 10 //Delay after setting a col to output (in us)
-
uint64_t mdebouncing = 0;
uint8_t matrix_scan(void)
{
@@ -89,9 +87,7 @@ uint8_t matrix_scan(void)
uint8_t col;
uint32_t scans[2]; //PA PB
- if (CLK_get_ms() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
-
- //DBG_1_OFF; //Profiling scans
+ if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer
@@ -99,7 +95,7 @@ uint8_t matrix_scan(void)
{
PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
- CLK_delay_us(MATRIX_SCAN_DELAY); //Delay for output
+ wait_us(1); //Delay for output
scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data
scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data
@@ -132,11 +128,9 @@ uint8_t matrix_scan(void)
else
{
//Begin or extend debounce on change
- mdebouncing = CLK_get_ms() + DEBOUNCING_DELAY;
+ mdebouncing = timer_read64() + DEBOUNCING_DELAY;
}
- //DBG_1_ON; //Profiling scans
-
matrix_scan_quantum();
return 1;
diff --git a/tmk_core/common/arm_atsam/timer.c b/tmk_core/common/arm_atsam/timer.c
index bcfe5002c34..6c3905e3087 100644
--- a/tmk_core/common/arm_atsam/timer.c
+++ b/tmk_core/common/arm_atsam/timer.c
@@ -9,7 +9,7 @@ void set_time(uint64_t tset)
void timer_init(void)
{
- ms_clk = 0;
+ timer_clear();
}
uint16_t timer_read(void)
@@ -37,23 +37,7 @@ uint32_t timer_elapsed32(uint32_t tlast)
return TIMER_DIFF_32(timer_read32(), tlast);
}
-uint32_t timer_elapsed64(uint32_t tlast)
-{
- uint64_t tnow = timer_read64();
- return (tnow >= tlast ? tnow - tlast : UINT64_MAX - tlast + tnow);
-}
-
void timer_clear(void)
{
- ms_clk = 0;
-}
-
-void wait_ms(uint64_t msec)
-{
- CLK_delay_ms(msec);
-}
-
-void wait_us(uint16_t usec)
-{
- CLK_delay_us(usec);
+ set_time(0);
}
diff --git a/tmk_core/common/wait.h b/tmk_core/common/wait.h
index a7cded94202..a77840bcef9 100644
--- a/tmk_core/common/wait.h
+++ b/tmk_core/common/wait.h
@@ -15,6 +15,10 @@ extern "C" {
# include "ch.h"
# define wait_ms(ms) chThdSleepMilliseconds(ms)
# define wait_us(us) chThdSleepMicroseconds(us)
+#elif defined PROTOCOL_ARM_ATSAM
+# include "clks.h"
+# define wait_ms(ms) CLK_delay_ms(ms)
+# define wait_us(us) CLK_delay_us(us)
#elif defined(__arm__)
# include "wait_api.h"
#else // Unit tests
diff --git a/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h b/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h
index 2ba0991749c..928af8c7e17 100644
--- a/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h
+++ b/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h
@@ -21,8 +21,10 @@ along with this program. If not, see .
#include "samd51j18a.h"
#include "md_bootloader.h"
+#include "timer.h"
#include "d51_util.h"
#include "clks.h"
+#include "wait.h"
#include "adc.h"
#include "i2c_master.h"
#include "spi.h"
diff --git a/tmk_core/protocol/arm_atsam/clks.c b/tmk_core/protocol/arm_atsam/clks.c
index 8768d0a99e1..1ff318e59b3 100644
--- a/tmk_core/protocol/arm_atsam/clks.c
+++ b/tmk_core/protocol/arm_atsam/clks.c
@@ -21,8 +21,8 @@ along with this program. If not, see .
volatile clk_t system_clks;
volatile uint64_t ms_clk;
-
-volatile uint8_t us_delay_done;
+uint32_t usec_delay_mult;
+#define USEC_DELAY_LOOP_CYCLES 3 //Sum of instruction cycles in us delay loop
const uint32_t sercom_apbbase[] = {(uint32_t)SERCOM0,(uint32_t)SERCOM1,(uint32_t)SERCOM2,(uint32_t)SERCOM3,(uint32_t)SERCOM4,(uint32_t)SERCOM5};
const uint8_t sercom_pchan[] = {7, 8, 23, 24, 34, 35};
@@ -73,6 +73,9 @@ void CLK_oscctrl_init(void)
system_clks.freq_gclk[0] = system_clks.freq_dpll[0];
+ usec_delay_mult = system_clks.freq_gclk[0] / (USEC_DELAY_LOOP_CYCLES * 1000000);
+ if (usec_delay_mult < 1) usec_delay_mult = 1; //Never allow a multiplier of zero
+
DBGC(DC_CLK_OSC_INIT_COMPLETE);
}
@@ -158,23 +161,11 @@ void TC4_Handler()
}
}
-void TC5_Handler()
-{
- if (TC5->COUNT16.INTFLAG.bit.MC0)
- {
- TC5->COUNT16.INTFLAG.reg = TC_INTENCLR_MC0;
- us_delay_done = 1;
- TC5->COUNT16.CTRLA.bit.ENABLE = 0;
- while (TC5->COUNT16.SYNCBUSY.bit.ENABLE) {}
- }
-}
-
uint32_t CLK_enable_timebase(void)
{
Gclk *pgclk = GCLK;
Mclk *pmclk = MCLK;
Tc *ptc4 = TC4;
- Tc *ptc5 = TC5;
Tc *ptc0 = TC0;
Evsys *pevsys = EVSYS;
@@ -189,11 +180,6 @@ uint32_t CLK_enable_timebase(void)
pgclk->PCHCTRL[TC4_GCLK_ID].bit.GEN = GEN_TC45;
pgclk->PCHCTRL[TC4_GCLK_ID].bit.CHEN = 1;
- //unmask TC5 sourcegclk2 to TC5
- pmclk->APBCMASK.bit.TC5_ = 1;
- pgclk->PCHCTRL[TC5_GCLK_ID].bit.GEN = GEN_TC45;
- pgclk->PCHCTRL[TC5_GCLK_ID].bit.CHEN = 1;
-
//configure TC4
DBGC(DC_CLK_ENABLE_TIMEBASE_TC4_BEGIN);
ptc4->COUNT16.CTRLA.bit.ENABLE = 0;
@@ -220,30 +206,6 @@ uint32_t CLK_enable_timebase(void)
DBGC(DC_CLK_ENABLE_TIMEBASE_TC4_COMPLETE);
- //configure TC5
- DBGC(DC_CLK_ENABLE_TIMEBASE_TC5_BEGIN);
- ptc5->COUNT16.CTRLA.bit.ENABLE = 0;
- while (ptc5->COUNT16.SYNCBUSY.bit.ENABLE) { DBGC(DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_DISABLE); }
- ptc5->COUNT16.CTRLA.bit.SWRST = 1;
- while (ptc5->COUNT16.SYNCBUSY.bit.SWRST) { DBGC(DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_SWRST_1); }
- while (ptc5->COUNT16.CTRLA.bit.SWRST) { DBGC(DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_SWRST_2); }
-
- //CTRLA defaults
- //CTRLB as default, counting up
- ptc5->COUNT16.CTRLBCLR.reg = 5;
- while (ptc5->COUNT16.SYNCBUSY.bit.CTRLB) { DBGC(DC_CLK_ENABLE_TIMEBASE_TC5_SYNC_CLTRB); }
- //ptc5->COUNT16.DBGCTRL.bit.DBGRUN = 1;
-
- //wave mode
- ptc5->COUNT16.WAVE.bit.WAVEGEN = 1; //MFRQ match frequency mode, toggle each CC match
- //generate event for next stage
- ptc5->COUNT16.EVCTRL.bit.MCEO0 = 1;
-
- NVIC_EnableIRQ(TC5_IRQn);
- ptc5->COUNT16.INTENSET.bit.MC0 = 1;
-
- DBGC(DC_CLK_ENABLE_TIMEBASE_TC5_COMPLETE);
-
//unmask TC0,1, sourcegclk2 to TC0,1
pmclk->APBAMASK.bit.TC0_ = 1;
pgclk->PCHCTRL[TC0_GCLK_ID].bit.GEN = GEN_TC45;
@@ -289,37 +251,27 @@ uint32_t CLK_enable_timebase(void)
return 0;
}
-uint32_t CLK_get_ms(void)
+void CLK_delay_us(uint32_t usec)
{
- return ms_clk;
-}
-
-void CLK_delay_us(uint16_t usec)
-{
- us_delay_done = 0;
-
- if (TC5->COUNT16.CTRLA.bit.ENABLE)
- {
- TC5->COUNT16.CTRLA.bit.ENABLE = 0;
- while (TC5->COUNT16.SYNCBUSY.bit.ENABLE) {}
- }
-
- if (usec < 10) usec = 0;
- else usec -= 10;
-
- TC5->COUNT16.CC[0].reg = usec;
- while (TC5->COUNT16.SYNCBUSY.bit.CC0) {}
-
- TC5->COUNT16.CTRLA.bit.ENABLE = 1;
- while (TC5->COUNT16.SYNCBUSY.bit.ENABLE) {}
-
- while (!us_delay_done) {}
+ asm (
+ "CBZ R0, return\n\t" //If usec == 0, branch to return label
+ );
+ asm (
+ "MULS R0, %0\n\t" //Multiply R0(usec) by usec_delay_mult and store in R0
+ ".balign 16\n\t" //Ensure loop is aligned for fastest performance
+ "loop: SUBS R0, #1\n\t" //Subtract 1 from R0 and update flags (1 cycle)
+ "BNE loop\n\t" //Branch if non-zero to loop label (2 cycles) NOTE: USEC_DELAY_LOOP_CYCLES is the sum of loop cycles
+ "return:\n\t" //Return label
+ : //No output registers
+ : "r" (usec_delay_mult) //For %0
+ );
+ //Note: BX LR generated
}
void CLK_delay_ms(uint64_t msec)
{
- msec += CLK_get_ms();
- while (msec > CLK_get_ms()) {}
+ msec += timer_read64();
+ while (msec > timer_read64()) {}
}
void clk_enable_sercom_apbmask(int sercomn)
diff --git a/tmk_core/protocol/arm_atsam/clks.h b/tmk_core/protocol/arm_atsam/clks.h
index 96819bfdd09..1b01a1764ef 100644
--- a/tmk_core/protocol/arm_atsam/clks.h
+++ b/tmk_core/protocol/arm_atsam/clks.h
@@ -77,9 +77,8 @@ void CLK_oscctrl_init(void);
void CLK_reset_time(void);
uint32_t CLK_set_gclk_freq(uint8_t gclkn, uint32_t freq);
uint32_t CLK_enable_timebase(void);
-uint32_t CLK_get_ms(void);
-uint64_t CLK_get_us(void);
-void CLK_delay_us(uint16_t usec);
+uint64_t timer_read64(void);
+void CLK_delay_us(uint32_t usec);
void CLK_delay_ms(uint64_t msec);
uint32_t CLK_set_spi_freq(uint8_t sercomn, uint32_t freq);
diff --git a/tmk_core/protocol/arm_atsam/i2c_master.c b/tmk_core/protocol/arm_atsam/i2c_master.c
index f608a79cc98..d91a851f377 100644
--- a/tmk_core/protocol/arm_atsam/i2c_master.c
+++ b/tmk_core/protocol/arm_atsam/i2c_master.c
@@ -265,12 +265,12 @@ uint8_t I2C3733_Init_Control(void)
//USB state machine will enable driver when communication is ready
I2C3733_Control_Set(0);
- CLK_delay_ms(1);
+ wait_ms(1);
sr_exp_data.bit.IRST = 0;
SR_EXP_WriteData();
- CLK_delay_ms(1);
+ wait_ms(1);
DBGC(DC_I2C3733_INIT_CONTROL_COMPLETE);
diff --git a/tmk_core/protocol/arm_atsam/led_matrix.c b/tmk_core/protocol/arm_atsam/led_matrix.c
index e914fc80ea5..9ef7393a253 100644
--- a/tmk_core/protocol/arm_atsam/led_matrix.c
+++ b/tmk_core/protocol/arm_atsam/led_matrix.c
@@ -494,11 +494,11 @@ void led_matrix_task(void)
if (led_enabled)
{
//If an update may run and frame processing has completed
- if (CLK_get_ms() >= led_next_run && led_cur == lede)
+ if (timer_read64() >= led_next_run && led_cur == lede)
{
uint8_t drvid;
- led_next_run = CLK_get_ms() + LED_UPDATE_RATE; //Set next frame update time
+ led_next_run = timer_read64() + LED_UPDATE_RATE; //Set next frame update time
//NOTE: GCR does not need to be timed with LED processing, but there is really no harm
if (gcr_actual != gcr_actual_last)
diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
index 2bda7d7c7b1..eaad66e9fc8 100644
--- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c
+++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
@@ -159,7 +159,7 @@ void send_consumer(uint16_t data)
void main_subtask_usb_state(void)
{
- static uint32_t fsmstate_on_delay = 0; //Delay timer to be sure USB is actually operating before bringing up hardware
+ static uint64_t fsmstate_on_delay = 0; //Delay timer to be sure USB is actually operating before bringing up hardware
uint8_t fsmstate_now = USB->DEVICE.FSMSTATUS.reg; //Current state from hardware register
if (fsmstate_now == USB_FSMSTATUS_FSMSTATE_SUSPEND_Val) //If USB SUSPENDED
@@ -188,9 +188,9 @@ void main_subtask_usb_state(void)
{
if (fsmstate_on_delay == 0) //If ON delay timer is cleared
{
- fsmstate_on_delay = CLK_get_ms() + 250; //Set ON delay timer
+ fsmstate_on_delay = timer_read64() + 250; //Set ON delay timer
}
- else if (CLK_get_ms() > fsmstate_on_delay) //Else if ON delay timer is active and timed out
+ else if (timer_read64() > fsmstate_on_delay) //Else if ON delay timer is active and timed out
{
suspend_wakeup_init(); //Run wakeup routine
g_usb_state = fsmstate_now; //Save current USB state
@@ -214,9 +214,9 @@ void main_subtask_power_check(void)
{
static uint64_t next_5v_checkup = 0;
- if (CLK_get_ms() > next_5v_checkup)
+ if (timer_read64() > next_5v_checkup)
{
- next_5v_checkup = CLK_get_ms() + 5;
+ next_5v_checkup = timer_read64() + 5;
v_5v = adc_get(ADC_5V);
v_5v_avg = 0.9 * v_5v_avg + 0.1 * v_5v;
@@ -229,9 +229,9 @@ void main_subtask_usb_extra_device(void)
{
static uint64_t next_usb_checkup = 0;
- if (CLK_get_ms() > next_usb_checkup)
+ if (timer_read64() > next_usb_checkup)
{
- next_usb_checkup = CLK_get_ms() + 10;
+ next_usb_checkup = timer_read64() + 10;
USB_HandleExtraDevice();
}
@@ -325,9 +325,9 @@ int main(void)
keyboard_task();
#ifdef CONSOLE_ENABLE
- if (CLK_get_ms() > next_print)
+ if (timer_read64() > next_print)
{
- next_print = CLK_get_ms() + 250;
+ next_print = timer_read64() + 250;
//Add any debug information here that you want to see very often
//dprintf("5v=%u 5vu=%u dlow=%u dhi=%u gca=%u gcd=%u\r\n", v_5v, v_5v_avg, v_5v_avg - V5_LOW, v_5v_avg - V5_HIGH, gcr_actual, gcr_desired);
}
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
index 5f3c289e812..ffe3526db56 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
@@ -1227,9 +1227,9 @@ uint32_t cdc_tx_send_time_next;
void CDC_send(void)
{
- while (CLK_get_ms() < cdc_tx_send_time_next);
+ while (timer_read64() < cdc_tx_send_time_next);
udi_cdc_tx_send(0);
- cdc_tx_send_time_next = CLK_get_ms() + CDC_SEND_INTERVAL;
+ cdc_tx_send_time_next = timer_read64() + CDC_SEND_INTERVAL;
}
uint32_t CDC_print(char *printbuf)
@@ -1238,7 +1238,7 @@ uint32_t CDC_print(char *printbuf)
char *buf = printbuf;
char c;
- if (CLK_get_ms() < 5000) return 0;
+ if (timer_read64() < 5000) return 0;
while ((c = *buf++) != 0 && !(count >= MAX_PRINT))
{
@@ -1339,7 +1339,7 @@ void CDC_init(void)
inbuf.count = 0;
inbuf.lastcount = 0;
printbuf[0] = 0;
- cdc_tx_send_time_next = CLK_get_ms() + CDC_SEND_INTERVAL;
+ cdc_tx_send_time_next = timer_read64() + CDC_SEND_INTERVAL;
}
#else //CDC line 62
diff --git a/tmk_core/protocol/arm_atsam/usb/usb2422.c b/tmk_core/protocol/arm_atsam/usb/usb2422.c
index ac19bf4ea04..d6e19224291 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb2422.c
+++ b/tmk_core/protocol/arm_atsam/usb/usb2422.c
@@ -64,7 +64,7 @@ void USB_write2422_block(void)
i2c0_transmit(USB2422_ADDR, dest, 34, 50000);
SERCOM0->I2CM.CTRLB.bit.CMD = 0x03;
while (SERCOM0->I2CM.SYNCBUSY.bit.SYSOP) { DBGC(DC_USB_WRITE2422_BLOCK_SYNC_SYSOP); }
- CLK_delay_us(100);
+ wait_us(100);
}
DBGC(DC_USB_WRITE2422_BLOCK_COMPLETE);
@@ -135,7 +135,7 @@ void USB2422_init(void)
sr_exp_data.bit.HUB_RESET_N = 1; //reset high
SR_EXP_WriteData();
- CLK_delay_us(100);
+ wait_us(100);
#ifndef MD_BOOTLOADER
@@ -154,10 +154,9 @@ void USB_reset(void)
//pulse reset for at least 1 usec
sr_exp_data.bit.HUB_RESET_N = 0; //reset low
SR_EXP_WriteData();
- CLK_delay_us(1);
+ wait_us(2);
sr_exp_data.bit.HUB_RESET_N = 1; //reset high to run
SR_EXP_WriteData();
- CLK_delay_us(1);
DBGC(DC_USB_RESET_COMPLETE);
}
@@ -247,7 +246,7 @@ void USB_set_host_by_voltage(void)
SR_EXP_WriteData();
- CLK_delay_ms(250);
+ wait_ms(250);
while ((v_5v = adc_get(ADC_5V)) < ADC_5V_START_LEVEL) { DBGC(DC_USB_SET_HOST_5V_LOW_WAITING); }
@@ -313,11 +312,11 @@ uint8_t USB2422_Port_Detect_Init(void)
USB_set_host_by_voltage();
- port_detect_retry_ms = CLK_get_ms() + PORT_DETECT_RETRY_INTERVAL;
+ port_detect_retry_ms = timer_read64() + PORT_DETECT_RETRY_INTERVAL;
while (!USB_active())
{
- tmod = CLK_get_ms() % PORT_DETECT_RETRY_INTERVAL;
+ tmod = timer_read64() % PORT_DETECT_RETRY_INTERVAL;
if (v_con_1 > v_con_2) //Values updated from USB_set_host_by_voltage();
{
@@ -333,7 +332,7 @@ uint8_t USB2422_Port_Detect_Init(void)
else { DBG_LED_OFF; }
}
- if (CLK_get_ms() > port_detect_retry_ms)
+ if (timer_read64() > port_detect_retry_ms)
{
DBGC(DC_PORT_DETECT_INIT_FAILED);
return 0;
From cd9262d7b2dcde5d31aa34f066dd593a012d7049 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Konstantin=20=C4=90or=C4=91evi=C4=87?=
Date: Mon, 7 Jan 2019 21:56:57 +0100
Subject: [PATCH 19/29] Improve consistency in UNICODEMAP code and docs, update
docs/understanding_qmk (#4774)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Remove unused UNICODE(n) macro, update docs
* Add note about max length of unicode_map to docs
* QK_UNICODE_MAP → QK_UNICODEMAP
* Refactor process_unicode_map
* process_unicode_map → process_unicodemap
This is done for consistency: UNICODEMAP is the method (hence UNICODEMAP_ENABLE, process_unicodemap), whereas unicode_map is the mapping table itself.
* Update references and ordering in docs/understanding_qmk
* Add additional note to docs/understanding_qmk
* &unicode_map[index] → unicode_map + index
This avoids the issue of the compiler sometimes complaining about the array index being out of range
* Update docs/getting_started_make_guide
* Update method sections in docs/feature_unicode
---
docs/feature_unicode.md | 47 ++++++++--------
docs/getting_started_make_guide.md | 16 +++---
docs/keycodes.md | 8 +--
docs/understanding_qmk.md | 56 ++++++++++---------
.../process_keycode/process_unicode_common.c | 2 +-
quantum/process_keycode/process_unicodemap.c | 33 ++++++-----
quantum/process_keycode/process_unicodemap.h | 4 +-
quantum/quantum_keycodes.h | 15 ++---
8 files changed, 88 insertions(+), 93 deletions(-)
diff --git a/docs/feature_unicode.md b/docs/feature_unicode.md
index 9d57e2fb7ab..7dd85c5c2e7 100644
--- a/docs/feature_unicode.md
+++ b/docs/feature_unicode.md
@@ -2,15 +2,15 @@
There are three Unicode keymap definition methods available in QMK:
-## UNICODE_ENABLE
+## `UNICODE_ENABLE`
-Supports Unicode up to `0xFFFF`. The keycode function is `UC(n)` in the keymap file, where _n_ is a 4 digit hexadecimal number.
+Supports Unicode up to `0x7FFF`. This covers characters for most modern languages, as well as symbols, but it doesn't cover emoji. The keycode function is `UC(c)` in the keymap file, where _c_ is the code point's number (preferably hexadecimal, up to 4 digits long). For example: `UC(0x45B)`, `UC(0x30C4)`.
-## UNICODEMAP_ENABLE
+## `UNICODEMAP_ENABLE`
-Supports Unicode up to `0x10FFFF` (all possible code points). You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(n)`, where _n_ is an array index into the mapping table.
+Supports Unicode up to `0x10FFFF` (all possible code points). You need to maintain a separate mapping table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. The keycode function is `X(i)`, where _i_ is an array index into the mapping table. The table may contain at most 1024 entries.
-And you may want to have an enum to make reference easier. So you'd want to add something like this to your keymap:
+You may want to have an enum to make referencing easier. So, you could add something like this to your keymap file:
```c
enum unicode_names {
@@ -20,38 +20,37 @@ enum unicode_names {
};
const uint32_t PROGMEM unicode_map[] = {
- [BANG] = 0x203D, // ‽
- [IRONY] = 0x2E2E, // ⸮
- [SNEK] = 0x1F40D, // 🐍
+ [BANG] = 0x203D, // ‽
+ [IRONY] = 0x2E2E, // ⸮
+ [SNEK] = 0x1F40D, // 🐍
};
```
-Make sure that the order for both matches.
+Then you can use `X(BANG)` etc. in your keymap.
-## UCIS_ENABLE
+## `UCIS_ENABLE`
-Supports Unicode up to `0x10FFFF` (all possible code points). As with `UNICODEMAP`, you may want to maintain a mapping table in your keymap file. However, there are no built-in keycodes for this feature — you will have to add a keycode or function that calls `qk_ucis_start()`. Once it's been called, you can type the mnemonic for your character, then hit Space or Enter to complete it or Esc to cancel. If the mnemonic matches an entry in your table, the typed text will automatically be erased and the corresponding Unicode sequence inserted.
+Supports Unicode up to `0x10FFFF` (all possible code points). As with `UNICODEMAP`, you need to maintain a mapping table in your keymap file. However, there are no built-in keycodes for this feature — you will have to add a keycode or function that calls `qk_ucis_start()`. Once this function's been called, you can type the corresponding mnemonic for your character, then hit Space or Enter to complete it, or Esc to cancel. If the mnemonic matches an entry in your table, the typed text will automatically be erased and the corresponding Unicode character inserted.
-For instance, you would need to have a table like this in your keymap:
+For instance, you would define a table like this in your keymap file:
```c
-const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
-(
- UCIS_SYM("poop", 0x1f4a9),
- UCIS_SYM("rofl", 0x1f923),
- UCIS_SYM("kiss", 0x1f619)
+const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE(
+ UCIS_SYM("poop", 0x1F4A9), // 💩
+ UCIS_SYM("rofl", 0x1F923), // 🤣
+ UCIS_SYM("kiss", 0x1F619) // 😙
);
```
-You run the function, and then type "rofl" and hit enter, it should backspace remove "rofl" and input the `0x1f923` unicode.
+You call `qk_ucis_start()`, then type "rofl" and hit Enter. QMK should erase the "rofl" text and input the laughing emoji.
### Customization
-There are several functions that you can add to your keymap to customize the functionality of this feature.
+There are several functions that you can define in your keymap to customize the functionality of this feature.
-* `void qk_ucis_start_user(void)` - This runs when you run the "start" function, and can be used to provide feedback. By default, it types out a keyboard emoji.
-* `void qk_ucis_success(uint8_t symbol_index)` - This runs when the unicode input has matched something, and has completed. Default doesn't do anything.
-* `void qk_ucis_symbol_fallback (void)` - This runs if the input text doesn't match anything. The default function falls back to trying that input as a unicode code.
+* `void qk_ucis_start_user(void)` – This runs when you call the "start" function, and can be used to provide feedback. By default, it types out a keyboard emoji.
+* `void qk_ucis_success(uint8_t symbol_index)` – This runs when the input has matched something and has completed. By default, it doesn't do anything.
+* `void qk_ucis_symbol_fallback (void)` – This runs when the input doesn't match anything. By default, it falls back to trying that input as a Unicode code.
You can find the default implementations of these functions in [`process_ucis.c`](https://github.com/qmk/qmk_firmware/blob/master/quantum/process_keycode/process_ucis.c).
@@ -66,7 +65,7 @@ The following input modes are available:
To enable, go to _System Preferences > Keyboard > Input Sources_, add _Unicode Hex Input_ to the list (it's under _Other_), then activate it from the input dropdown in the Menu Bar.
By default, this mode uses the left Option key (`KC_LALT`), but this can be changed by defining [`UNICODE_OSX_KEY`](#input-key-configuration) with another keycode.
-* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports all possible code points (`0x10FFFF`).
+* **`UC_LNX`**: Linux built-in IBus Unicode input. Supports code points up to `0x10FFFF` (all possible code points).
Enabled by default and works almost anywhere on IBus-enabled distros. Without IBus, this mode works under GTK apps, but rarely anywhere else.
@@ -77,7 +76,7 @@ The following input modes are available:
* **`UC_BSD`**: _(non implemented)_ Unicode input under BSD. Not implemented at this time. If you're a BSD user and want to help add support for it, please [open an issue on GitHub](https://github.com/qmk/qmk_firmware/issues).
-* **`UC_WINC`**: Windows Unicode input using [WinCompose](https://github.com/samhocevar/wincompose). As of v0.8.2, supports code points up to `0xFFFFF`.
+* **`UC_WINC`**: Windows Unicode input using [WinCompose](https://github.com/samhocevar/wincompose). As of v0.8.2, supports code points up to `0xFFFFF` (all currently assigned code points).
To enable, install the [latest release](https://github.com/samhocevar/wincompose/releases/latest). Once installed, WinCompose will automatically run on startup. Works reliably under all version of Windows supported by the app.
By default, this mode uses the right Alt key (`KC_RALT`), but this can be changed in the WinCompose settings and by defining [`UNICODE_WINC_KEY`](#input-key-configuration) with another keycode.
diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md
index e515411901d..adc1aed7512 100644
--- a/docs/getting_started_make_guide.md
+++ b/docs/getting_started_make_guide.md
@@ -93,19 +93,17 @@ This enables MIDI sending and receiving with your keyboard. To enter MIDI send m
`UNICODE_ENABLE`
-This allows you to send unicode symbols via `UC()` in your keymap. Only codes up to 0x7FFF are currently supported.
+This allows you to send Unicode characters using `UC()` in your keymap. Code points up to `0x7FFF` are supported. This covers characters for most modern languages, as well as symbols, but it doesn't cover emoji.
`UNICODEMAP_ENABLE`
-This allows sending unicode symbols using `X()` in your keymap. Codes
-up to 0xFFFFFFFF are supported, including emojis. You will need to maintain
-a separate mapping table in your keymap file.
+This allows you to send Unicode characters using `X(