summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builddefs/common_features.mk1
-rw-r--r--data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson339
-rw-r--r--data/mappings/defaults.hjson5
-rw-r--r--data/mappings/keyboard_aliases.hjson6
-rw-r--r--data/schemas/keyboard.jsonschema2
-rw-r--r--docs/feature_converters.md3
-rw-r--r--docs/feature_macros.md6
-rw-r--r--docs/feature_pointing_device.md32
-rw-r--r--docs/reference_keymap_extras.md1
-rw-r--r--docs/squeezing_avr.md1
-rw-r--r--drivers/led/apa102.c5
-rw-r--r--drivers/led/apa102.h6
-rw-r--r--drivers/led/issi/is31fl3218-simple.c19
-rw-r--r--drivers/led/issi/is31fl3218-simple.h2
-rw-r--r--drivers/led/issi/is31fl3218.c19
-rw-r--r--drivers/led/issi/is31fl3218.h2
-rw-r--r--drivers/led/issi/is31fl3731-simple.c42
-rw-r--r--drivers/led/issi/is31fl3731-simple.h1
-rw-r--r--drivers/led/issi/is31fl3731.c42
-rw-r--r--drivers/led/issi/is31fl3731.h1
-rw-r--r--drivers/led/issi/is31fl3733-simple.c56
-rw-r--r--drivers/led/issi/is31fl3733-simple.h1
-rw-r--r--drivers/led/issi/is31fl3733.c56
-rw-r--r--drivers/led/issi/is31fl3733.h1
-rw-r--r--drivers/led/issi/is31fl3736-simple.c54
-rw-r--r--drivers/led/issi/is31fl3736-simple.h1
-rw-r--r--drivers/led/issi/is31fl3736.c54
-rw-r--r--drivers/led/issi/is31fl3736.h1
-rw-r--r--drivers/led/issi/is31fl3737-simple.c54
-rw-r--r--drivers/led/issi/is31fl3737-simple.h1
-rw-r--r--drivers/led/issi/is31fl3737.c54
-rw-r--r--drivers/led/issi/is31fl3737.h1
-rw-r--r--drivers/led/issi/is31fl3741-simple.c62
-rw-r--r--drivers/led/issi/is31fl3741-simple.h1
-rw-r--r--drivers/led/issi/is31fl3741.c62
-rw-r--r--drivers/led/issi/is31fl3741.h1
-rw-r--r--drivers/led/issi/is31flcommon.c19
-rw-r--r--drivers/led/snled27351-simple.c62
-rw-r--r--drivers/led/snled27351-simple.h1
-rw-r--r--drivers/led/snled27351.c61
-rw-r--r--drivers/led/snled27351.h1
-rw-r--r--drivers/sensors/analog_joystick.c68
-rw-r--r--drivers/sensors/cirque_pinnacle.c11
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/config.h3
-rw-r--r--keyboards/40percentclub/nano/keymaps/spooka/rules.mk1
-rw-r--r--keyboards/aya/keymaps/default/config.h18
-rw-r--r--keyboards/biacco42/meishi2/keymaps/moc/config.h19
-rw-r--r--keyboards/boardwalk/keymaps/brendanwr/config.h16
-rw-r--r--keyboards/converter/ibm_terminal/keymaps/priyadi/config.h3
-rw-r--r--keyboards/cutie_club/wraith/keymaps/amber/config.h19
-rw-r--r--keyboards/dm9records/plaid/keymaps/brickbots/config.h19
-rw-r--r--keyboards/dm9records/plaid/keymaps/stephen-huan/config.h19
-rw-r--r--keyboards/dm9records/plaid/keymaps/thehalfdeafchef/config.h19
-rw-r--r--keyboards/dp60/keymaps/indicator/indicator.c12
-rw-r--r--keyboards/dp60/keymaps/indicator/rules.mk2
-rw-r--r--keyboards/era/klein/config.h27
-rw-r--r--keyboards/era/klein/halconf.h21
-rw-r--r--keyboards/era/klein/info.json590
-rw-r--r--keyboards/era/klein/keymaps/default/keymap.c23
-rw-r--r--keyboards/era/klein/keymaps/via/keymap.c23
-rw-r--r--keyboards/era/klein/mcuconf.h22
-rw-r--r--keyboards/era/klein/readme.md23
-rw-r--r--keyboards/era/klein/rules.mk0
-rw-r--r--keyboards/ergodox_ez/led_i2c.c6
-rw-r--r--keyboards/ergodox_ez/shine/info.json3
-rw-r--r--keyboards/ergodox_ez/shine/rules.mk1
-rw-r--r--keyboards/fc660c/keymaps/siroleo/config.h19
-rw-r--r--keyboards/fleuron/keymaps/dollartacos/config.h18
-rw-r--r--keyboards/fortitude60/keymaps/default/config.h18
-rw-r--r--keyboards/fortitude60/keymaps/via/config.h18
-rw-r--r--keyboards/gboards/gergo/keymaps/default/config.h2
-rw-r--r--keyboards/gboards/gergo/keymaps/germ/config.h2
-rw-r--r--keyboards/gboards/gergo/keymaps/gotham/config.h2
-rw-r--r--keyboards/geonworks/ee_at/ee_at.c (renamed from keyboards/converter/numeric_keypad_iie/keymaps/newbold/config.h)17
-rw-r--r--keyboards/geonworks/ee_at/info.json499
-rw-r--r--keyboards/geonworks/ee_at/keymaps/default/keymap.c32
-rw-r--r--keyboards/geonworks/ee_at/keymaps/via/keymap.c32
-rw-r--r--keyboards/geonworks/ee_at/keymaps/via/rules.mk (renamed from keyboards/w1_at/keymaps/via/rules.mk)0
-rw-r--r--keyboards/geonworks/ee_at/matrix_diagram.md21
-rw-r--r--keyboards/geonworks/ee_at/readme.md32
-rw-r--r--keyboards/geonworks/ee_at/rules.mk2
-rw-r--r--keyboards/geonworks/w1_at/info.json (renamed from keyboards/w1_at/info.json)112
-rw-r--r--keyboards/geonworks/w1_at/keymaps/default/keymap.c (renamed from keyboards/w1_at/keymaps/default/keymap.c)2
-rw-r--r--keyboards/geonworks/w1_at/keymaps/via/keymap.c (renamed from keyboards/w1_at/keymaps/via/keymap.c)0
-rw-r--r--keyboards/geonworks/w1_at/keymaps/via/rules.mk1
-rw-r--r--keyboards/geonworks/w1_at/keymaps/zq/keymap.c (renamed from keyboards/w1_at/keymaps/zq/keymap.c)0
-rw-r--r--keyboards/geonworks/w1_at/keymaps/zq/readme.md (renamed from keyboards/w1_at/keymaps/zq/readme.md)0
-rw-r--r--keyboards/geonworks/w1_at/keymaps/zq/rules.mk (renamed from keyboards/era/klein/keymaps/via/rules.mk)0
-rw-r--r--keyboards/geonworks/w1_at/matrix_diagram.md (renamed from keyboards/w1_at/matrix_diagram.md)0
-rw-r--r--keyboards/geonworks/w1_at/readme.md (renamed from keyboards/w1_at/readme.md)6
-rw-r--r--keyboards/geonworks/w1_at/rules.mk2
-rw-r--r--keyboards/geonworks/w1_at/w1_at.c (renamed from keyboards/w1_at/w1_at.c)14
-rw-r--r--keyboards/hadron/ver3/keymaps/sebaslayout/config.h1
-rw-r--r--keyboards/handwired/6macro/keymaps/default/config.h18
-rw-r--r--keyboards/handwired/6macro/keymaps/osu/config.h18
-rw-r--r--keyboards/handwired/hnah40rgb/keymaps/default/config.h17
-rw-r--r--keyboards/handwired/obuwunkunubi/spaget/keymaps/default/rules.mk1
-rw-r--r--keyboards/handwired/steamvan/keymaps/jmdaly/config.h3
-rw-r--r--keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h19
-rw-r--r--keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h19
-rw-r--r--keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h19
-rw-r--r--keyboards/idobao/id75/keymaps/revok75/config.h15
-rw-r--r--keyboards/idobao/id75/keymaps/revok75/rules.mk14
-rw-r--r--keyboards/idobao/id75/keymaps/xaceofspaidsx/config.h19
-rw-r--r--keyboards/input_club/k_type/is31fl3733-dual.c56
-rw-r--r--keyboards/input_club/k_type/is31fl3733-dual.h1
-rw-r--r--keyboards/input_club/k_type/keymaps/andrew-fahmy/config.h36
-rw-r--r--keyboards/jc65/v32u4/keymaps/coth/config.h1
-rw-r--r--keyboards/jc65/v32u4/keymaps/dead_encryption/config.h1
-rw-r--r--keyboards/jc65/v32u4/keymaps/jetpacktuxedo/config.h1
-rw-r--r--keyboards/jc65/v32u4/keymaps/na7thana/config.h1
-rw-r--r--keyboards/jian/keymaps/default/config.h20
-rw-r--r--keyboards/jian/keymaps/left_hand/config.h21
-rw-r--r--keyboards/jian/keymaps/via/config.h21
-rw-r--r--keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/config.h19
-rw-r--r--keyboards/kapl/keymaps/default/config.h3
-rw-r--r--keyboards/kapl/keymaps/via/config.h3
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/koba/config.h17
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h19
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/koba/config.h17
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/rouge8/config.h19
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/planck/rules.mk1
-rw-r--r--keyboards/keebio/dilly/keymaps/default/config.h1
-rw-r--r--keyboards/keebio/fourier/keymaps/maxim/config.h23
-rw-r--r--keyboards/keebio/quefrency/keymaps/default60/config.h22
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65/config.h23
-rw-r--r--keyboards/keebio/quefrency/keymaps/joestrong/config.h22
-rw-r--r--keyboards/keebio/quefrency/keymaps/rogthefrog/config.h23
-rw-r--r--keyboards/keebio/quefrency/keymaps/unausgeschlafen/config.h22
-rw-r--r--keyboards/keebio/quefrency/keymaps/yoryer/config.h22
-rw-r--r--keyboards/keyboardio/model01/keymaps/tw1t611/config.h19
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c42
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/default/rules.mk1
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c102
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk1
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c61
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/via/rules.mk1
-rw-r--r--keyboards/keyhive/ut472/keymaps/annihilator6000/config.h19
-rw-r--r--keyboards/kinesis/keymaps/tw1t611/config.h3
-rw-r--r--keyboards/kudox/columner/keymaps/default/config.h17
-rw-r--r--keyboards/kudox/rev1/keymaps/default/config.h17
-rw-r--r--keyboards/kudox/rev1/keymaps/jis/config.h17
-rw-r--r--keyboards/kudox/rev1/keymaps/x1/config.h17
-rw-r--r--keyboards/kudox/rev2/keymaps/default/config.h17
-rw-r--r--keyboards/kudox/rev2/keymaps/jis/config.h17
-rw-r--r--keyboards/kudox_game/keymaps/default/config.h18
-rw-r--r--keyboards/majistic/keymaps/default/config.h17
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/config.h21
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/config.h23
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/msiu/config.h21
-rw-r--r--keyboards/matrix/abelx/abelx.c7
-rw-r--r--keyboards/matrix/abelx/info.json1
-rw-r--r--keyboards/matrix/abelx/rules.mk1
-rw-r--r--keyboards/matrix/m20add/info.json1
-rw-r--r--keyboards/matrix/m20add/rgb_ring.c6
-rw-r--r--keyboards/matrix/noah/noah.c27
-rw-r--r--keyboards/mechwild/mercutio/keymaps/default/config.h17
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fancy/config.h17
-rw-r--r--keyboards/mechwild/mercutio/keymaps/via/config.h17
-rw-r--r--keyboards/monstargear/xo87/rgb/keymaps/default/config.h16
-rw-r--r--keyboards/neson_design/700e/700e.c7
-rw-r--r--keyboards/neson_design/700e/info.json1
-rw-r--r--keyboards/neson_design/700e/rules.mk1
-rw-r--r--keyboards/neson_design/n6/info.json1
-rw-r--r--keyboards/neson_design/n6/n6.c7
-rw-r--r--keyboards/neson_design/n6/rules.mk1
-rw-r--r--keyboards/neson_design/nico/info.json3
-rw-r--r--keyboards/neson_design/nico/nico.c6
-rw-r--r--keyboards/neson_design/nico/rules.mk2
-rw-r--r--keyboards/pico/65keys/keymaps/default/config.h18
-rw-r--r--keyboards/pico/65keys/keymaps/jis/config.h18
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/rules.mk1
-rw-r--r--keyboards/planck/keymaps/mitch/rules.mk0
-rw-r--r--keyboards/planck/keymaps/motform/config.h1
-rw-r--r--keyboards/planck/keymaps/vxid/config.h1
-rw-r--r--keyboards/projectcain/vault35/atmega32u4/info.json45
-rw-r--r--keyboards/projectcain/vault35/atmega32u4/rules.mk1
-rw-r--r--keyboards/projectcain/vault35/config.h36
-rw-r--r--keyboards/projectcain/vault35/info.json113
-rw-r--r--keyboards/projectcain/vault35/keymaps/default/keymap.c39
-rw-r--r--keyboards/projectcain/vault35/keymaps/default/rules.mk3
-rw-r--r--keyboards/projectcain/vault35/rules.mk14
-rw-r--r--keyboards/rabbit/rabbit68/keymaps/kaiec/config.h19
-rw-r--r--keyboards/recompile_keys/choco60/config.h18
-rw-r--r--keyboards/rgbkb/sol/keymaps/brianweyer/config.h25
-rw-r--r--keyboards/rgbkb/sol/keymaps/danielhklein/config.h25
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/config.h20
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/msiu/config.h21
-rw-r--r--keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/config.h19
-rw-r--r--keyboards/sirius/unigo66/keymaps/danielhklein/config.h3
-rw-r--r--keyboards/sofle/keymaps/default/config.h6
-rw-r--r--keyboards/sx60/keymaps/amnobis/config.h1
-rw-r--r--keyboards/tada68/keymaps/iso-nor/config.h1
-rwxr-xr-xkeyboards/tada68/keymaps/laas/config.h1
-rw-r--r--keyboards/tada68/keymaps/peippo/config.h1
-rw-r--r--keyboards/takashiski/namecard2x4/keymaps/brainfuck/config.h19
-rw-r--r--keyboards/thevankeyboards/caravan/keymaps/default/config.h1
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h3
-rw-r--r--keyboards/unikeyboard/diverge3/keymaps/workman/rules.mk1
-rw-r--r--keyboards/v60_type_r/info.json16
-rw-r--r--keyboards/v60_type_r/rules.mk2
-rw-r--r--keyboards/v60_type_r/v60_type_r.c14
-rw-r--r--keyboards/w1_at/config.h21
-rw-r--r--keyboards/w1_at/keymaps/default/readme.md9
-rw-r--r--keyboards/w1_at/keymaps/via/readme.md9
-rw-r--r--keyboards/w1_at/keymaps/zq/rules.mk1
-rw-r--r--keyboards/w1_at/rules.mk15
-rw-r--r--keyboards/westfoxtrot/cyclops/keymaps/peippo/config.h19
-rw-r--r--keyboards/work_louder/loop/info.json1
-rw-r--r--keyboards/work_louder/micro/info.json1
-rw-r--r--keyboards/work_louder/nano/info.json1
-rw-r--r--keyboards/work_louder/numpad/info.json1
-rw-r--r--keyboards/work_louder/rgb_functions.c6
-rw-r--r--keyboards/work_louder/work_board/info.json1
-rw-r--r--keyboards/xiudi/xd75/keymaps/boy_314/config.h1
-rw-r--r--keyboards/xiudi/xd75/keymaps/bulbizarre/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/c4software_bepo/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/c4software_bepo/rules.mk14
-rw-r--r--keyboards/xiudi/xd75/keymaps/developper_bepo/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/developper_bepo/rules.mk14
-rw-r--r--keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/fabian/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/french/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/kloki/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/kloki/rules.mk15
-rw-r--r--keyboards/xiudi/xd75/keymaps/msiu/config.h18
-rw-r--r--keyboards/xiudi/xd75/keymaps/pitty/config.h19
-rw-r--r--keyboards/xiudi/xd75/keymaps/pitty/rules.mk15
-rw-r--r--keyboards/xiudi/xd75/keymaps/skewwhiffy/rules.mk15
-rw-r--r--layouts/default/ortho_5x13/default_ortho_5x13/keymap.c41
-rw-r--r--layouts/default/ortho_5x13/info.json80
-rw-r--r--layouts/default/ortho_5x13/layout.json5
-rw-r--r--layouts/default/ortho_5x13/readme.md3
-rw-r--r--layouts/default/ortho_5x14/default_ortho_5x14/keymap.c4
-rw-r--r--layouts/default/ortho_6x13/default_ortho_6x13/keymap.c46
-rw-r--r--layouts/default/ortho_6x13/info.json94
-rw-r--r--layouts/default/ortho_6x13/layout.json6
-rw-r--r--layouts/default/ortho_6x13/readme.md3
-rw-r--r--layouts/default/readme.md32
m---------lib/chibios-contrib0
-rw-r--r--platforms/chibios/converters/promicro_to_imera/_pin_defs.h36
-rw-r--r--platforms/chibios/converters/promicro_to_imera/converter.mk10
-rw-r--r--quantum/keymap_extras/keymap_spanish_latin_america.h105
-rw-r--r--quantum/keymap_extras/sendstring_spanish_latin_america.h120
-rw-r--r--quantum/led_matrix/led_matrix.c23
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c19
-rw-r--r--quantum/rgblight/rgblight.c33
-rw-r--r--quantum/rgblight/rgblight.h1
-rw-r--r--quantum/rgblight/rgblight_drivers.c20
-rw-r--r--quantum/rgblight/rgblight_drivers.h13
-rw-r--r--readme.md4
251 files changed, 2397 insertions, 3262 deletions
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index 60f1cbd837..d793d5faf5 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -313,6 +313,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
OPT_DEFS += -DRGBLIGHT_$(strip $(shell echo $(RGBLIGHT_DRIVER) | tr '[:lower:]' '[:upper:]'))
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight/rgblight.c
+ SRC += $(QUANTUM_DIR)/rgblight/rgblight_drivers.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
endif
diff --git a/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson
new file mode 100644
index 0000000000..50c49274be
--- /dev/null
+++ b/data/constants/keycodes/extras/keycodes_spanish_latin_america_0.0.1.hjson
@@ -0,0 +1,339 @@
+{
+ "aliases": {
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ | │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ¿ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ´ │ + │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ñ │ { │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "KC_GRV": {
+ "key": "ES_PIPE",
+ "label": "|",
+ }
+ "KC_1": {
+ "key": "ES_1",
+ "label": "1",
+ }
+ "KC_2": {
+ "key": "ES_2",
+ "label": "2",
+ }
+ "KC_3": {
+ "key": "ES_3",
+ "label": "3",
+ }
+ "KC_4": {
+ "key": "ES_4",
+ "label": "4",
+ }
+ "KC_5": {
+ "key": "ES_5",
+ "label": "5",
+ }
+ "KC_6": {
+ "key": "ES_6",
+ "label": "6",
+ }
+ "KC_7": {
+ "key": "ES_7",
+ "label": "7",
+ }
+ "KC_8": {
+ "key": "ES_8",
+ "label": "8",
+ }
+ "KC_9": {
+ "key": "ES_9",
+ "label": "9",
+ }
+ "KC_0": {
+ "key": "ES_0",
+ "label": "0",
+ }
+ "KC_MINS": {
+ "key": "ES_QUOT",
+ "label": "'",
+ }
+ "KC_EQL": {
+ "key": "ES_IQUE",
+ "label": "¿",
+ }
+ "KC_Q": {
+ "key": "ES_Q",
+ "label": "Q",
+ }
+ "KC_W": {
+ "key": "ES_W",
+ "label": "W",
+ }
+ "KC_E": {
+ "key": "ES_E",
+ "label": "E",
+ }
+ "KC_R": {
+ "key": "ES_R",
+ "label": "R",
+ }
+ "KC_T": {
+ "key": "ES_T",
+ "label": "T",
+ }
+ "KC_Y": {
+ "key": "ES_Y",
+ "label": "Y",
+ }
+ "KC_U": {
+ "key": "ES_U",
+ "label": "U",
+ }
+ "KC_I": {
+ "key": "ES_I",
+ "label": "I",
+ }
+ "KC_O": {
+ "key": "ES_O",
+ "label": "O",
+ }
+ "KC_P": {
+ "key": "ES_P",
+ "label": "P",
+ }
+ "KC_LBRC": {
+ "key": "ES_ACUT",
+ "label": "´ (dead)",
+ }
+ "KC_RBRC": {
+ "key": "ES_PLUS",
+ "label": "+",
+ }
+ "KC_A": {
+ "key": "ES_A",
+ "label": "A",
+ }
+ "KC_S": {
+ "key": "ES_S",
+ "label": "S",
+ }
+ "KC_D": {
+ "key": "ES_D",
+ "label": "D",
+ }
+ "KC_F": {
+ "key": "ES_F",
+ "label": "F",
+ }
+ "KC_G": {
+ "key": "ES_G",
+ "label": "G",
+ }
+ "KC_H": {
+ "key": "ES_H",
+ "label": "H",
+ }
+ "KC_J": {
+ "key": "ES_J",
+ "label": "J",
+ }
+ "KC_K": {
+ "key": "ES_K",
+ "label": "K",
+ }
+ "KC_L": {
+ "key": "ES_L",
+ "label": "L",
+ }
+ "KC_SCLN": {
+ "key": "ES_NTIL",
+ "label": "Ñ",
+ }
+ "KC_QUOT": {
+ "key": "ES_LCBR",
+ "label": "{",
+ }
+ "KC_NUHS": {
+ "key": "ES_RCBR",
+ "label": "}",
+ }
+ "KC_NUBS": {
+ "key": "ES_LABK",
+ "label": "<",
+ }
+ "KC_Z": {
+ "key": "ES_Z",
+ "label": "Z",
+ }
+ "KC_X": {
+ "key": "ES_X",
+ "label": "X",
+ }
+ "KC_C": {
+ "key": "ES_C",
+ "label": "C",
+ }
+ "KC_V": {
+ "key": "ES_V",
+ "label": "V",
+ }
+ "KC_B": {
+ "key": "ES_B",
+ "label": "B",
+ }
+ "KC_N": {
+ "key": "ES_N",
+ "label": "N",
+ }
+ "KC_M": {
+ "key": "ES_M",
+ "label": "M",
+ }
+ "KC_COMM": {
+ "key": "ES_COMM",
+ "label": ",",
+ }
+ "KC_DOT": {
+ "key": "ES_DOT",
+ "label": ".",
+ }
+ "KC_SLSH": {
+ "key": "ES_MINS",
+ "label": "-",
+ }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ° │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ¡ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ [ │ ] │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "S(ES_PIPE)": {
+ "key": "ES_MORD",
+ "label": "°",
+ }
+ "S(ES_1)": {
+ "key": "ES_EXLM",
+ "label": "!",
+ }
+ "S(ES_2)": {
+ "key": "ES_DQUO",
+ "label": "\"",
+ }
+ "S(ES_3)": {
+ "key": "ES_NUMB",
+ "label": "#",
+ }
+ "S(ES_4)": {
+ "key": "ES_DLR",
+ "label": "$",
+ }
+ "S(ES_5)": {
+ "key": "ES_PERC",
+ "label": "%",
+ }
+ "S(ES_6)": {
+ "key": "ES_AMPR",
+ "label": "&",
+ }
+ "S(ES_7)": {
+ "key": "ES_SLSH",
+ "label": "/",
+ }
+ "S(ES_8)": {
+ "key": "ES_LPRN",
+ "label": "(",
+ }
+ "S(ES_9)": {
+ "key": "ES_RPRN",
+ "label": ")",
+ }
+ "S(ES_0)": {
+ "key": "ES_EQL",
+ "label": "=",
+ }
+ "S(ES_QUOT)": {
+ "key": "ES_QUES",
+ "label": "?",
+ }
+ "S(ES_IQUE)": {
+ "key": "ES_IEXL",
+ "label": "¡",
+ }
+ "S(ES_ACUT)": {
+ "key": "ES_DIAE",
+ "label": "¨ (dead)",
+ }
+ "S(ES_PLUS)": {
+ "key": "ES_ASTR",
+ "label": "*",
+ }
+ "S(ES_LCBR)": {
+ "key": "ES_LBRC",
+ "label": "[",
+ }
+ "S(ES_RCBR)": {
+ "key": "ES_RBRC",
+ "label": "]",
+ }
+ "S(ES_LABK)": {
+ "key": "ES_RABK",
+ "label": ">",
+ }
+ "S(ES_COMM)": {
+ "key": "ES_SCLN",
+ "label": ";",
+ }
+ "S(ES_DOT)": {
+ "key": "ES_COLN",
+ "label": ":",
+ }
+ "S(ES_MINS)": {
+ "key": "ES_UNDS",
+ "label": "_",
+ }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ¬ │ │ │ │ │ │ │ │ │ │ │ \ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ @ │ │ │ │ │ │ │ │ │ │ │ ~ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ ` │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "ALGR(ES_PIPE)": {
+ "key": "ES_NOT",
+ "label": "¬",
+ }
+ "ALGR(ES_QUOT)": {
+ "key": "ES_BSLS",
+ "label": "\\",
+ }
+ "ALGR(ES_Q)": {
+ "key": "ES_AT",
+ "label": "@",
+ }
+ "ALGR(ES_PLUS)": {
+ "key": "ES_TILD",
+ "label": "~",
+ }
+ "ALGR(ES_LCBR)": {
+ "key": "ES_CIRC",
+ "label": "^",
+ }
+ }
+} \ No newline at end of file
diff --git a/data/mappings/defaults.hjson b/data/mappings/defaults.hjson
index 4a9f06c0da..71902c92d6 100644
--- a/data/mappings/defaults.hjson
+++ b/data/mappings/defaults.hjson
@@ -45,6 +45,11 @@
"bootloader": "rp2040",
"processor": "RP2040"
},
+ "imera": {
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "QMK_PM2040"
+ },
"kb2040": {
"board": "QMK_PM2040",
"bootloader": "rp2040",
diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson
index 90f32ee6ac..059a5acd38 100644
--- a/data/mappings/keyboard_aliases.hjson
+++ b/data/mappings/keyboard_aliases.hjson
@@ -185,6 +185,9 @@
"eek": {
"target": "eek/silk_down"
},
+ "era/klein": {
+ "target": "era/sirind/klein_sd"
+ },
"ergodone": {
"target": "ktec/ergodone"
},
@@ -1299,6 +1302,9 @@
"vn66": {
"target": "hnahkb/vn66"
},
+ "w1_at": {
+ "target": "geonworks/w1_at"
+ },
"wallaby": {
"target": "kkatano/wallaby"
},
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 2996958084..32d737a1d8 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -43,7 +43,7 @@
},
"development_board": {
"type": "string",
- "enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4", "helios", "liatris"]
+ "enum": ["promicro", "elite_c", "elite_pi", "proton_c", "kb2040", "promicro_rp2040", "blok", "michi", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4", "helios", "liatris", "imera"]
},
"pin_compatible": {
"type": "string",
diff --git a/docs/feature_converters.md b/docs/feature_converters.md
index 11bdbed576..62c214e246 100644
--- a/docs/feature_converters.md
+++ b/docs/feature_converters.md
@@ -19,6 +19,7 @@ The following converters are available at this time:
| `promicro` | `elite_pi` |
| `promicro` | `helios` |
| `promicro` | `liatris` |
+| `promicro` | `imera` |
| `promicro` | `michi` |
| `elite_c` | `stemcell` |
| `elite_c` | `rp2040_ce` |
@@ -82,6 +83,7 @@ If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.co
| [Elite-Pi](https://keeb.io/products/elite-pi-usb-c-pro-micro-replacement-rp2040) | `elite_pi` |
| [0xCB Helios](https://keeb.supply/products/0xcb-helios) | `helios` |
| [Liatris](https://splitkb.com/products/liatris) | `liatris` |
+| [Imera](https://splitkb.com/products/imera) | `imera` |
| [Michi](https://github.com/ci-bus/michi-promicro-rp2040) | `michi` |
Converter summary:
@@ -99,6 +101,7 @@ Converter summary:
| `elite_pi` | `-e CONVERT_TO=elite_pi` | `CONVERT_TO=elite_pi` | `#ifdef CONVERT_TO_ELITE_PI` |
| `helios` | `-e CONVERT_TO=helios` | `CONVERT_TO=helios` | `#ifdef CONVERT_TO_HELIOS` |
| `liatris` | `-e CONVERT_TO=liatris` | `CONVERT_TO=liatris` | `#ifdef CONVERT_TO_LIATRIS` |
+| `imera` | `-e CONVERT_TO=imera` | `CONVERT_TO=imera` | `#ifdef CONVERT_TO_IMERA` |
| `michi` | `-e CONVERT_TO=michi` | `CONVERT_TO=michi` | `#ifdef CONVERT_TO_MICHI` |
### Proton C :id=proton_c
diff --git a/docs/feature_macros.md b/docs/feature_macros.md
index c7d6c1a918..f0533f14fe 100644
--- a/docs/feature_macros.md
+++ b/docs/feature_macros.md
@@ -69,9 +69,9 @@ The current list of available languages is:
| **italian_osx_iso** | **jis** | **latvian** | **lithuanian_azerty** |
| **lithuanian_qwerty** | **norman** | **norwegian** | **portuguese** |
| **portuguese_osx_iso** | **romanian** | **serbian_latin** | **slovak** |
-| **slovenian** | **spanish_dvorak** | **spanish** | **swedish** |
-| **turkish_f** | **turkish_q** | **uk** | **us_international** |
-| **workman** | **workman_zxcvm** |
+| **slovenian** | **spanish_dvorak** | **spanish_latin_america** | **spanish** |
+| **swedish** | **turkish_f** | **turkish_q** | **uk** |
+| **us_international** | **workman** | **workman_zxcvm** |
### Macro Basics
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index 0ac0069ff8..6fddf1fdda 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -69,10 +69,29 @@ The Analog Joystick is an analog (ADC) driven sensor. There are a variety of jo
| `ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
| `ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` |
| `ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
+| `ANALOG_JOYSTICK_AUTO_AXIS` | (Optional) Sets ranges to be considered movement automatically. | _not defined_ |
| `ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
| `ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
| `ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maximum value used for motion. | `2` |
| `ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
+| `ANALOG_JOYSTICK_WEIGHTS` | (Optional) Use custom weights for lever positions. | _not defined_ |
+| `ANALOG_JOYSTICK_CUTOFF` | (Optional) Cut off movement when joystick returns to start position. | _not defined_ |
+
+If `ANALOG_JOYSTICK_AUTO_AXIS` is used, then `ANALOG_JOYSTICK_AXIS_MIN` and `ANALOG_JOYSTICK_AXIS_MAX` are ignored.
+
+By default analog joystick implementation uses `x^2` weighting for lever positions. `ANALOG_JOYSTICK_WEIGHTS` allows to experiment with different configurations that might feel better.
+
+E.g. This is weights for `((x-0.4)^3+0.064)/0.282`:
+
+```c
+#define ANALOG_JOYSTICK_WEIGHTS {0,2,4,5,7,8,9,10,12,13,14,15,15,16,17,18,18,19,19,20,20,21,21,21,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,25,25,25,26,26,26,27,28,28,29,29,30,31,32,33,34,35,36,37,38,40,41,43,44,46,48,49,51,53,56,58,60,62,65,68,70,73,76,79,82,85,89,92,96,100}
+```
+
+You can use following JS code to generate weights for different formulas:
+
+```js
+JSON.stringify(Array.from(Array(101).keys()).map(x => Math.ceil((((x/100-0.4)**3+0.064)/0.282*100))))
+```
### Azoteq IQS5XX Trackpad
@@ -158,12 +177,13 @@ This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the
#### Common settings
-| Setting | Description | Default |
-| -------------------------------- | ---------------------------------------------------------- | ------------------------------------------- |
-| `CIRQUE_PINNACLE_DIAMETER_MM` | (Optional) Diameter of the trackpad sensor in millimeters. | `40` |
-| `CIRQUE_PINNACLE_ATTENUATION` | (Optional) Sets the attenuation of the sensor data. | `EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X` |
-| `CIRQUE_PINNACLE_CURVED_OVERLAY` | (Optional) Applies settings tuned for curved overlay. | _not defined_ |
-| `CIRQUE_PINNACLE_POSITION_MODE` | (Optional) Mode of operation. | _not defined_ |
+| Setting | Description | Default |
+| ------------------------------------ | ---------------------------------------------------------- | ------------------------------------------- |
+| `CIRQUE_PINNACLE_DIAMETER_MM` | (Optional) Diameter of the trackpad sensor in millimeters. | `40` |
+| `CIRQUE_PINNACLE_ATTENUATION` | (Optional) Sets the attenuation of the sensor data. | `EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X` |
+| `CIRQUE_PINNACLE_CURVED_OVERLAY` | (Optional) Applies settings tuned for curved overlay. | _not defined_ |
+| `CIRQUE_PINNACLE_POSITION_MODE` | (Optional) Mode of operation. | _not defined_ |
+| `CIRQUE_PINNACLE_SKIP_SENSOR_CHECK` | (Optional) Skips sensor presence check | _not defined_ |
**`CIRQUE_PINNACLE_ATTENUATION`** is a measure of how much data is suppressed in regards to sensitivity. The higher the attenuation, the less sensitive the touchpad will be.
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 84751a512c..0a51c85853 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -67,6 +67,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Slovenian |`keymap_slovenian.h` |`sendstring_slovenian.h` |
|Spanish |`keymap_spanish.h` |`sendstring_spanish.h` |
|Spanish (Dvorak) |`keymap_spanish_dvorak.h` |`sendstring_spanish_dvorak.h` |
+|Spanish (Latin America) |`keymap_spanish_latin_america.h` |`sendstring_spanish_latin_america.h`|
|Swedish |`keymap_swedish.h` |`sendstring_swedish.h` |
|Swedish (macOS, ANSI) |`keymap_swedish_mac_ansi.h` | |
|Swedish (macOS, ISO) |`keymap_swedish_mac_iso.h` | |
diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md
index af015b4b18..c3b9e5595e 100644
--- a/docs/squeezing_avr.md
+++ b/docs/squeezing_avr.md
@@ -210,6 +210,7 @@ That said, there are a number of Pro Micro replacements with ARM controllers:
* [Elite-Pi](https://keeb.io/products/elite-pi-usb-c-pro-micro-replacement-rp2040)
* [0xCB Helios](https://keeb.supply/products/0xcb-helios) ([Open Source](https://github.com/0xCB-dev/0xCB-Helios), DIY/PCBA/Shop)
* [Liatris](https://splitkb.com/products/liatris)
+* [Imera](https://splitkb.com/products/imera)
* [Michi](https://github.com/ci-bus/michi-promicro-rp2040)
There are other, non-Pro Micro compatible boards out there. The most popular being:
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c
index 527519eb8a..4d8f69cdcd 100644
--- a/drivers/led/apa102.c
+++ b/drivers/led/apa102.c
@@ -71,11 +71,6 @@ void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
apa102_end_frame(num_leds);
}
-// Overwrite the default rgblight_call_driver to use apa102 driver
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
- apa102_setleds(start_led, num_leds);
-}
-
void static apa102_init(void) {
setPinOutput(APA102_DI_PIN);
setPinOutput(APA102_CI_PIN);
diff --git a/drivers/led/apa102.h b/drivers/led/apa102.h
index cd0a19d445..027221f434 100644
--- a/drivers/led/apa102.h
+++ b/drivers/led/apa102.h
@@ -19,6 +19,12 @@
#include "color.h"
+#if defined(RGBLED_NUM)
+# define APA102_LED_COUNT RGBLED_NUM
+#elif defined(RGB_MATRIX_LED_COUNT)
+# define APA102_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
#ifndef APA102_DEFAULT_BRIGHTNESS
# define APA102_DEFAULT_BRIGHTNESS 31
#endif
diff --git a/drivers/led/issi/is31fl3218-simple.c b/drivers/led/issi/is31fl3218-simple.c
index ce28c51d18..e58b7d8bc0 100644
--- a/drivers/led/issi/is31fl3218-simple.c
+++ b/drivers/led/issi/is31fl3218-simple.c
@@ -28,8 +28,7 @@
# define IS31FL3218_I2C_PERSISTENCE 0
#endif
-// Reusable buffer for transfers
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining.
uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT];
@@ -39,27 +38,27 @@ uint8_t g_led_control_registers[IS31FL3218_LED_CONTROL_REGISTER_COUNT] = {0};
bool g_led_control_registers_update_required = false;
void is31fl3218_write_register(uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3218_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
#endif
}
void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) {
- g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM;
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18);
+ i2c_transfer_buffer[0] = IS31FL3218_REG_PWM;
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer, 18);
#if IS31FL3218_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) {
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
}
#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
#endif
}
diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h
index 9492817809..e0a71f1387 100644
--- a/drivers/led/issi/is31fl3218-simple.h
+++ b/drivers/led/issi/is31fl3218-simple.h
@@ -43,6 +43,8 @@ extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT];
void is31fl3218_init(void);
+void is31fl3218_write_register(uint8_t reg, uint8_t data);
+
void is31fl3218_set_value(int index, uint8_t value);
void is31fl3218_set_value_all(uint8_t value);
diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c
index 39db09d518..9bfdc9c44d 100644
--- a/drivers/led/issi/is31fl3218.c
+++ b/drivers/led/issi/is31fl3218.c
@@ -28,8 +28,7 @@
# define IS31FL3218_I2C_PERSISTENCE 0
#endif
-// Reusable buffer for transfers
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining.
uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT];
@@ -39,27 +38,27 @@ uint8_t g_led_control_registers[IS31FL3218_LED_CONTROL_REGISTER_COUNT] = {0};
bool g_led_control_registers_update_required = false;
void is31fl3218_write_register(uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3218_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
#endif
}
void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) {
- g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM;
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18);
+ i2c_transfer_buffer[0] = IS31FL3218_REG_PWM;
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer, 18);
#if IS31FL3218_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) {
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
}
#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, i2c_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
#endif
}
diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h
index ffa7f36d61..13916ffaf1 100644
--- a/drivers/led/issi/is31fl3218.h
+++ b/drivers/led/issi/is31fl3218.h
@@ -45,6 +45,8 @@ extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT];
void is31fl3218_init(void);
+void is31fl3218_write_register(uint8_t reg, uint8_t data);
+
void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c
index 8dbfc3cd31..14743717d4 100644
--- a/drivers/led/issi/is31fl3731-simple.c
+++ b/drivers/led/issi/is31fl3731-simple.c
@@ -33,8 +33,7 @@
# define IS31FL3731_I2C_PERSISTENCE 0
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3731 PWM registers 0x24-0xB3.
// Storing them like this is optimal for I2C transfers to the registers.
@@ -48,41 +47,45 @@ uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_
bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false};
void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3731_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) {
break;
}
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT);
#endif
}
+void is31fl3731_select_page(uint8_t addr, uint8_t page) {
+ is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, page);
+}
+
void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes bank is already selected
+ // assumes page 0 is already selected
// transmit PWM registers in 9 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) {
// set the first register, e.g. 0x24, 0x34, 0x44, etc.
- g_twi_transfer_buffer[0] = 0x24 + i;
+ i2c_transfer_buffer[0] = 0x24 + i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3731_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT);
#endif
}
}
@@ -123,8 +126,7 @@ void is31fl3731_init(uint8_t addr) {
// then set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
- // select "function register" bank
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FUNCTION);
// enable software shutdown
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00);
@@ -142,8 +144,7 @@ void is31fl3731_init(uint8_t addr) {
// audio sync off
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00);
- // select bank 0
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FRAME_1);
// turn off all LEDs in the LED control register
for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
@@ -160,16 +161,15 @@ void is31fl3731_init(uint8_t addr) {
is31fl3731_write_register(addr, i, 0x00);
}
- // select "function register" bank
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FUNCTION);
// disable software shutdown
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01);
- // select bank 0 and leave it selected.
- // most usage after initialization is just writing PWM buffers in bank 0
+ // select page 0 and leave it selected.
+ // most usage after initialization is just writing PWM buffers in page 0
// as there's not much point in double-buffering
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FRAME_1);
}
void is31fl3731_set_value(int index, uint8_t value) {
diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h
index 4d173847dd..ff970a3e5e 100644
--- a/drivers/led/issi/is31fl3731-simple.h
+++ b/drivers/led/issi/is31fl3731-simple.h
@@ -103,6 +103,7 @@ extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT];
void is31fl3731_init_drivers(void);
void is31fl3731_init(uint8_t addr);
void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3731_select_page(uint8_t addr, uint8_t page);
void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3731_set_value(int index, uint8_t value);
diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c
index 1ab8997731..9a7d0b5eca 100644
--- a/drivers/led/issi/is31fl3731.c
+++ b/drivers/led/issi/is31fl3731.c
@@ -32,8 +32,7 @@
# define IS31FL3731_I2C_PERSISTENCE 0
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3731 PWM registers 0x24-0xB3.
// Storing them like this is optimal for I2C transfers to the registers.
@@ -47,39 +46,43 @@ uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_
bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false};
void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3731_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT);
#endif
}
+void is31fl3731_select_page(uint8_t addr, uint8_t page) {
+ is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, page);
+}
+
void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes bank is already selected
+ // assumes page 0 is already selected
// transmit PWM registers in 9 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) {
// set the first register, e.g. 0x24, 0x34, 0x44, etc.
- g_twi_transfer_buffer[0] = 0x24 + i;
+ i2c_transfer_buffer[0] = 0x24 + i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3731_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT);
#endif
}
}
@@ -120,8 +123,7 @@ void is31fl3731_init(uint8_t addr) {
// then set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
- // select "function register" bank
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FUNCTION);
// enable software shutdown
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00);
@@ -139,8 +141,7 @@ void is31fl3731_init(uint8_t addr) {
// audio sync off
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00);
- // select bank 0
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FRAME_1);
// turn off all LEDs in the LED control register
for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
@@ -157,16 +158,15 @@ void is31fl3731_init(uint8_t addr) {
is31fl3731_write_register(addr, i, 0x00);
}
- // select "function register" bank
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FUNCTION);
// disable software shutdown
is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01);
- // select bank 0 and leave it selected.
- // most usage after initialization is just writing PWM buffers in bank 0
+ // select page 0 and leave it selected.
+ // most usage after initialization is just writing PWM buffers in page 0
// as there's not much point in double-buffering
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FRAME_1);
}
void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h
index b45cb2b07d..f125fbc64f 100644
--- a/drivers/led/issi/is31fl3731.h
+++ b/drivers/led/issi/is31fl3731.h
@@ -104,6 +104,7 @@ extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT];
void is31fl3731_init_drivers(void);
void is31fl3731_init(uint8_t addr);
void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3731_select_page(uint8_t addr, uint8_t page);
void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c
index 9f2444c253..805905ebc2 100644
--- a/drivers/led/issi/is31fl3733-simple.c
+++ b/drivers/led/issi/is31fl3733-simple.c
@@ -63,11 +63,10 @@
# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3733 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3733_write_pwm_buffer() but it's
@@ -80,45 +79,50 @@ bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT]
bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
// If the transaction fails function returns false.
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3733_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
#endif
return true;
}
+void is31fl3733_select_page(uint8_t addr, uint8_t page) {
+ is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, page);
+}
+
bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assumes PG1 is already selected.
+ // Assumes page 1 is already selected.
// If any of the transactions fails function returns false.
// Transmit PWM registers in 12 transfers of 16 bytes.
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// Iterate over the pwm_buffer contents at 16 byte intervals.
for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// Copy the data from i to i+15.
// Device will auto-increment register for data after the first byte
// Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3733_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -163,32 +167,23 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) {
// then disable software shutdown.
// Sync is passed so set it according to the datasheet.
- // Unlock the command register.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
- // Select PG0
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
- // Select PG1
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_FUNCTION);
- // Select PG3
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -239,11 +234,9 @@ void is31fl3733_set_led_control_register(uint8_t index, bool value) {
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
- // If any of the transactions fail we risk writing dirty PG0,
+ // If any of the transactions fail we risk writing dirty page 0,
// refresh page 0 just in case.
if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) {
g_led_control_registers_update_required[index] = true;
@@ -254,9 +247,8 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, g_led_control_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h
index c37b1fe5f2..dcb33e448f 100644
--- a/drivers/led/issi/is31fl3733-simple.h
+++ b/drivers/led/issi/is31fl3733-simple.h
@@ -117,6 +117,7 @@ extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT];
void is31fl3733_init_drivers(void);
void is31fl3733_init(uint8_t addr, uint8_t sync);
bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3733_select_page(uint8_t addr, uint8_t page);
bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3733_set_value(int index, uint8_t value);
diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c
index 5857a800d7..f7162a0ce5 100644
--- a/drivers/led/issi/is31fl3733.c
+++ b/drivers/led/issi/is31fl3733.c
@@ -62,11 +62,10 @@
# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3733 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3733_write_pwm_buffer() but it's
@@ -79,45 +78,50 @@ bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT]
bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
// If the transaction fails function returns false.
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3733_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
#endif
return true;
}
+void is31fl3733_select_page(uint8_t addr, uint8_t page) {
+ is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, page);
+}
+
bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assumes PG1 is already selected.
+ // Assumes page 1 is already selected.
// If any of the transactions fails function returns false.
// Transmit PWM registers in 12 transfers of 16 bytes.
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// Iterate over the pwm_buffer contents at 16 byte intervals.
for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// Copy the data from i to i+15.
// Device will auto-increment register for data after the first byte
// Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3733_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -162,32 +166,23 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) {
// then disable software shutdown.
// Sync is passed so set it according to the datasheet.
- // Unlock the command register.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
- // Select PG0
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
- // Select PG1
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_FUNCTION);
- // Select PG3
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -254,11 +249,9 @@ void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1.
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
- // If any of the transactions fail we risk writing dirty PG0,
+ // If any of the transactions fail we risk writing dirty page 0,
// refresh page 0 just in case.
if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) {
g_led_control_registers_update_required[index] = true;
@@ -269,9 +262,8 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL);
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, g_led_control_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h
index 20804b016b..907b9669c6 100644
--- a/drivers/led/issi/is31fl3733.h
+++ b/drivers/led/issi/is31fl3733.h
@@ -142,6 +142,7 @@ extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT];
void is31fl3733_init_drivers(void);
void is31fl3733_init(uint8_t addr, uint8_t sync);
bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3733_select_page(uint8_t addr, uint8_t page);
bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c
index e1cce3c48a..ac5e0fb453 100644
--- a/drivers/led/issi/is31fl3736-simple.c
+++ b/drivers/led/issi/is31fl3736-simple.c
@@ -47,11 +47,10 @@
# define IS31FL3736_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3736 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3736_write_pwm_buffer() but it's
@@ -63,38 +62,43 @@ uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_
bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false};
void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3736_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT);
#endif
}
+void is31fl3736_select_page(uint8_t addr, uint8_t page) {
+ is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, page);
+}
+
void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
+ // assumes page 1 is already selected
// transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3736_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT);
#endif
}
}
@@ -135,32 +139,23 @@ void is31fl3736_init(uint8_t addr) {
// Set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
- // Unlock the command register.
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_LED_CONTROL);
- // Select PG0
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM);
- // Select PG1
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_FUNCTION);
- // Select PG3
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_SW_PULLUP, IS31FL3736_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -217,9 +212,7 @@ void is31fl3736_set_led_control_register(uint8_t index, bool value) {
void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM);
is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required[index] = false;
@@ -228,9 +221,8 @@ void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, g_led_control_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h
index a73a872545..5e80eb646a 100644
--- a/drivers/led/issi/is31fl3736-simple.h
+++ b/drivers/led/issi/is31fl3736-simple.h
@@ -112,6 +112,7 @@ extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT];
void is31fl3736_init_drivers(void);
void is31fl3736_init(uint8_t addr);
void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3736_select_page(uint8_t addr, uint8_t page);
void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3736_set_value(int index, uint8_t value);
diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c
index 30ab796f3e..384b815850 100644
--- a/drivers/led/issi/is31fl3736.c
+++ b/drivers/led/issi/is31fl3736.c
@@ -47,11 +47,10 @@
# define IS31FL3736_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3736 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3736_write_pwm_buffer() but it's
@@ -63,38 +62,43 @@ uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_
bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false};
void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3736_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT);
#endif
}
+void is31fl3736_select_page(uint8_t addr, uint8_t page) {
+ is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, page);
+}
+
void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
+ // assumes page 1 is already selected
// transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3736_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT);
#endif
}
}
@@ -135,32 +139,23 @@ void is31fl3736_init(uint8_t addr) {
// Set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
- // Unlock the command register.
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_select_page(addr, IS31FL3736_REG_LED_CONTROL);
- // Select PG0
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_REG_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITELOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM);
- // Select PG1
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_FUNCTION);
- // Select PG3
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_SW_PULLUP, IS31FL3736_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -234,9 +229,7 @@ void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM);
is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required[index] = false;
@@ -245,9 +238,8 @@ void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL);
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, g_led_control_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h
index a5710d7ed4..5f0b11e46a 100644
--- a/drivers/led/issi/is31fl3736.h
+++ b/drivers/led/issi/is31fl3736.h
@@ -126,6 +126,7 @@ extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT];
void is31fl3736_init_drivers(void);
void is31fl3736_init(uint8_t addr);
void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3736_select_page(uint8_t addr, uint8_t page);
void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c
index 7f641f4ca5..967a102b48 100644
--- a/drivers/led/issi/is31fl3737-simple.c
+++ b/drivers/led/issi/is31fl3737-simple.c
@@ -49,11 +49,10 @@
# define IS31FL3737_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3737 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3737_write_pwm_buffer() but it's
@@ -66,38 +65,43 @@ uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_
bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false};
void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3737_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT);
#endif
}
+void is31fl3737_select_page(uint8_t addr, uint8_t page) {
+ is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, page);
+}
+
void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
+ // assumes page 1 is already selected
// transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3737_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT);
#endif
}
}
@@ -138,32 +142,23 @@ void is31fl3737_init(uint8_t addr) {
// Set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
- // Unlock the command register.
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
- // Select PG0
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM);
- // Select PG1
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_FUNCTION);
- // Select PG3
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_SW_PULLUP, IS31FL3737_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -214,9 +209,7 @@ void is31fl3737_set_led_control_register(uint8_t index, bool value) {
void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM);
is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required[index] = false;
@@ -225,9 +218,8 @@ void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, g_led_control_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h
index 2658702b1b..a11d2ef423 100644
--- a/drivers/led/issi/is31fl3737-simple.h
+++ b/drivers/led/issi/is31fl3737-simple.h
@@ -102,6 +102,7 @@ extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT];
void is31fl3737_init_drivers(void);
void is31fl3737_init(uint8_t addr);
void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3737_select_page(uint8_t addr, uint8_t page);
void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3737_set_value(int index, uint8_t value);
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c
index a458431952..76d17c2b84 100644
--- a/drivers/led/issi/is31fl3737.c
+++ b/drivers/led/issi/is31fl3737.c
@@ -49,11 +49,10 @@
# define IS31FL3737_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3737 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3737_write_pwm_buffer() but it's
@@ -66,38 +65,43 @@ uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_
bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false};
void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3737_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT);
#endif
}
+void is31fl3737_select_page(uint8_t addr, uint8_t page) {
+ is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, page);
+}
+
void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
+ // assumes page 1 is already selected
// transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// iterate over the pwm_buffer contents at 16 byte intervals
for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// copy the data from i to i+15
// device will auto-increment register for data after the first byte
// thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16);
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 16);
#if IS31FL3737_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT);
#endif
}
}
@@ -138,32 +142,23 @@ void is31fl3737_init(uint8_t addr) {
// Set up the mode and other settings, clear the PWM registers,
// then disable software shutdown.
- // Unlock the command register.
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
- // Select PG0
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM);
- // Select PG1
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_FUNCTION);
- // Select PG3
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_SW_PULLUP, IS31FL3737_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -230,9 +225,7 @@ void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM);
is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required[index] = false;
@@ -241,9 +234,8 @@ void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL);
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, g_led_control_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h
index 8de3bf4ef5..a707808b51 100644
--- a/drivers/led/issi/is31fl3737.h
+++ b/drivers/led/issi/is31fl3737.h
@@ -119,6 +119,7 @@ extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT];
void is31fl3737_init_drivers(void);
void is31fl3737_init(uint8_t addr);
void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3737_select_page(uint8_t addr, uint8_t page);
void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c
index f7009853ba..db245af4da 100644
--- a/drivers/led/issi/is31fl3741-simple.c
+++ b/drivers/led/issi/is31fl3741-simple.c
@@ -52,11 +52,10 @@
# define IS31FL3741_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20] = {0xFF};
+uint8_t i2c_transfer_buffer[20] = {0xFF};
// These buffers match the IS31FL3741 and IS31FL3741A PWM registers.
-// The scaling buffers match the PG2 and PG3 LED On/Off registers.
+// The scaling buffers match the page 2 and 3 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3741_write_pwm_buffer() but it's
@@ -68,56 +67,59 @@ bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false};
uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT];
void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3741_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT);
#endif
}
+void is31fl3741_select_page(uint8_t addr, uint8_t page) {
+ is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, page);
+}
+
bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assume PG0 is already selected
+ // Assume page 0 is already selected
for (int i = 0; i < 342; i += 18) {
if (i == 180) {
- // unlock the command register and select PG1
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_1);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1);
}
- g_twi_transfer_buffer[0] = i % 180;
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18);
+ i2c_transfer_buffer[0] = i % 180;
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 18);
#if IS31FL3741_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
#endif
}
// transfer the left cause the total number is 351
- g_twi_transfer_buffer[0] = 162;
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + 342, 9);
+ i2c_transfer_buffer[0] = 162;
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + 342, 9);
#if IS31FL3741_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -162,11 +164,7 @@ void is31fl3741_init(uint8_t addr) {
// then disable software shutdown.
// Unlock the command register.
- // Unlock the command register.
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
-
- // Select PG4
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_FUNCTION);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_FUNCTION);
// Set to Normal operation
is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION);
@@ -218,9 +216,7 @@ void is31fl3741_set_led_control_register(uint8_t index, bool value) {
void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // unlock the command register and select PG2
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_0);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0);
is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]);
}
@@ -236,20 +232,16 @@ void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) {
void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_scaling_registers_update_required[index]) {
- // unlock the command register and select PG2
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_0);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_SCALING_0);
- // CS1_SW1 to CS30_SW6 are on PG2
+ // CS1_SW1 to CS30_SW6 are on page 2
for (int i = CS1_SW1; i <= CS30_SW6; ++i) {
is31fl3741_write_register(addr, i, g_scaling_registers[index][i]);
}
- // unlock the command register and select PG3
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_1);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_SCALING_1);
- // CS1_SW7 to CS39_SW9 are on PG3
+ // CS1_SW7 to CS39_SW9 are on page 3
for (int i = CS1_SW7; i <= CS39_SW9; ++i) {
is31fl3741_write_register(addr, i - CS1_SW7, g_scaling_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h
index 34608a37e0..462543a5bb 100644
--- a/drivers/led/issi/is31fl3741-simple.h
+++ b/drivers/led/issi/is31fl3741-simple.h
@@ -104,6 +104,7 @@ extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT];
void is31fl3741_init_drivers(void);
void is31fl3741_init(uint8_t addr);
void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3741_select_page(uint8_t addr, uint8_t page);
bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3741_set_value(int index, uint8_t value);
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c
index efcfa77b46..0575f31254 100644
--- a/drivers/led/issi/is31fl3741.c
+++ b/drivers/led/issi/is31fl3741.c
@@ -52,11 +52,10 @@
# define IS31FL3741_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20] = {0xFF};
+uint8_t i2c_transfer_buffer[20] = {0xFF};
// These buffers match the IS31FL3741 and IS31FL3741A PWM registers.
-// The scaling buffers match the PG2 and PG3 LED On/Off registers.
+// The scaling buffers match the page 2 and 3 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3741_write_pwm_buffer() but it's
@@ -68,56 +67,59 @@ bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false};
uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT];
void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3741_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT);
#endif
}
+void is31fl3741_select_page(uint8_t addr, uint8_t page) {
+ is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, page);
+}
+
bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assume PG0 is already selected
+ // Assume page 0 is already selected
for (int i = 0; i < 342; i += 18) {
if (i == 180) {
- // unlock the command register and select PG1
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_1);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1);
}
- g_twi_transfer_buffer[0] = i % 180;
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18);
+ i2c_transfer_buffer[0] = i % 180;
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + i, 18);
#if IS31FL3741_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
#endif
}
// transfer the left cause the total number is 351
- g_twi_transfer_buffer[0] = 162;
- memcpy(g_twi_transfer_buffer + 1, pwm_buffer + 342, 9);
+ i2c_transfer_buffer[0] = 162;
+ memcpy(i2c_transfer_buffer + 1, pwm_buffer + 342, 9);
#if IS31FL3741_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -162,11 +164,7 @@ void is31fl3741_init(uint8_t addr) {
// then disable software shutdown.
// Unlock the command register.
- // Unlock the command register.
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
-
- // Select PG4
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_FUNCTION);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_FUNCTION);
// Set to Normal operation
is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION);
@@ -232,9 +230,7 @@ void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // unlock the command register and select PG2
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_0);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0);
is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]);
}
@@ -252,20 +248,16 @@ void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_
void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_scaling_registers_update_required[index]) {
- // unlock the command register and select PG2
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_0);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_SCALING_0);
- // CS1_SW1 to CS30_SW6 are on PG2
+ // CS1_SW1 to CS30_SW6 are on page 2
for (int i = CS1_SW1; i <= CS30_SW6; ++i) {
is31fl3741_write_register(addr, i, g_scaling_registers[index][i]);
}
- // unlock the command register and select PG3
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_1);
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_SCALING_1);
- // CS1_SW7 to CS39_SW9 are on PG3
+ // CS1_SW7 to CS39_SW9 are on page 3
for (int i = CS1_SW7; i <= CS39_SW9; ++i) {
is31fl3741_write_register(addr, i - CS1_SW7, g_scaling_registers[index][i]);
}
diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h
index 6466696b60..5151d81c37 100644
--- a/drivers/led/issi/is31fl3741.h
+++ b/drivers/led/issi/is31fl3741.h
@@ -121,6 +121,7 @@ extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT];
void is31fl3741_init_drivers(void);
void is31fl3741_init(uint8_t addr);
void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3741_select_page(uint8_t addr, uint8_t page);
bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31flcommon.c b/drivers/led/issi/is31flcommon.c
index d6b9bce93d..048db286b6 100644
--- a/drivers/led/issi/is31flcommon.c
+++ b/drivers/led/issi/is31flcommon.c
@@ -31,8 +31,7 @@
# define ISSI_PERSISTENCE 0
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the PWM & scaling registers.
// Storing them like this is optimal for I2C transfers to the registers.
@@ -45,15 +44,15 @@ bool g_scaling_buffer_update_required[DRIVER_COUNT] = {false};
// For writing of single register entry
void IS31FL_write_single_register(uint8_t addr, uint8_t reg, uint8_t data) {
// Set register address and register data ready to write
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if ISSI_PERSISTENCE > 0
for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break;
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT);
+ i2c_transmit(addr << 1, i2c_transfer_buffer, 2, ISSI_TIMEOUT);
#endif
}
@@ -64,18 +63,18 @@ bool IS31FL_write_multi_registers(uint8_t addr, uint8_t *source_buffer, uint8_t
// Split the buffer into chunks to transfer
for (int i = 0; i < buffer_size; i += transfer_size) {
// Set the first entry of transfer buffer to the first register we want to write
- g_twi_transfer_buffer[0] = i + start_reg_addr;
+ i2c_transfer_buffer[0] = i + start_reg_addr;
// Copy the section of our source buffer into the transfer buffer after first register address
- memcpy(g_twi_transfer_buffer + 1, source_buffer + i, transfer_size);
+ memcpy(i2c_transfer_buffer + 1, source_buffer + i, transfer_size);
#if ISSI_PERSISTENCE > 0
for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) {
return false;
}
#endif
diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c
index b2054c96d5..7b7a82f90f 100644
--- a/drivers/led/snled27351-simple.c
+++ b/drivers/led/snled27351-simple.c
@@ -37,8 +37,7 @@
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the SNLED27351 PWM registers.
// The control buffers match the PG0 LED On/Off registers.
@@ -54,47 +53,51 @@ bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT]
bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
// If the transaction fails function returns false.
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if SNLED27351_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
#endif
return true;
}
+void snled27351_select_page(uint8_t addr, uint8_t page) {
+ snled27351_write_register(addr, SNLED27351_REG_COMMAND, page);
+}
+
bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
// Assumes PG1 is already selected.
// If any of the transactions fails function returns false.
// Transmit PWM registers in 12 transfers of 16 bytes.
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// Iterate over the pwm_buffer contents at 16 byte intervals.
for (int i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// Copy the data from i to i+15.
// Device will auto-increment register for data after the first byte
// Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
for (int j = 0; j < 16; j++) {
- g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j];
+ i2c_transfer_buffer[1 + j] = pwm_buffer[i + j];
}
#if SNLED27351_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -133,8 +136,8 @@ void snled27351_init_drivers(void) {
}
void snled27351_init(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to shutdown mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN);
// Setting internal channel pulldown/pullup
@@ -147,33 +150,35 @@ void snled27351_init(uint8_t addr) {
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2, SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE | SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE);
// Setting Iref
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, 0);
- // Set LED CONTROL PAGE (Page 0)
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL);
+
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) {
snled27351_write_register(addr, i, 0x00);
}
- // Set PWM PAGE (Page 1)
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM);
+ snled27351_select_page(addr, SNLED27351_COMMAND_PWM);
+
for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) {
snled27351_write_register(addr, i, 0x00);
}
- // Set CURRENT PAGE (Page 4)
+ snled27351_select_page(addr, SNLED27351_COMMAND_CURRENT_TUNE);
+
uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE;
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_CURRENT_TUNE);
for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) {
snled27351_write_register(addr, i, current_tune_reg_list[i]);
}
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
// Enable LEDs ON/OFF
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL);
for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) {
snled27351_write_register(addr, i, 0xFF);
}
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to normal mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL);
}
@@ -215,7 +220,7 @@ void snled27351_set_led_control_register(uint8_t index, bool value) {
void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM);
+ snled27351_select_page(addr, SNLED27351_COMMAND_PWM);
// If any of the transactions fail we risk writing dirty PG0,
// refresh page 0 just in case.
@@ -228,7 +233,8 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) {
void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL);
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) {
snled27351_write_register(addr, i, g_led_control_registers[index][i]);
}
@@ -250,15 +256,15 @@ void snled27351_flush(void) {
}
void snled27351_sw_return_normal(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to normal mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL);
}
void snled27351_sw_shutdown(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to shutdown mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN);
// Write SW Sleep Register
diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h
index 2fc62a6f0a..0a4d2469f0 100644
--- a/drivers/led/snled27351-simple.h
+++ b/drivers/led/snled27351-simple.h
@@ -155,6 +155,7 @@ extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT];
void snled27351_init_drivers(void);
void snled27351_init(uint8_t addr);
+void snled27351_select_page(uint8_t addr, uint8_t page);
bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data);
bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c
index 71992b7322..d985e4c5f1 100644
--- a/drivers/led/snled27351.c
+++ b/drivers/led/snled27351.c
@@ -37,8 +37,7 @@
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[65];
+uint8_t i2c_transfer_buffer[65];
// These buffers match the SNLED27351 PWM registers.
// The control buffers match the PG0 LED On/Off registers.
@@ -54,23 +53,27 @@ bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT]
bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
// If the transaction fails function returns false.
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if SNLED27351_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
#endif
return true;
}
+void snled27351_select_page(uint8_t addr, uint8_t page) {
+ snled27351_write_register(addr, SNLED27351_REG_COMMAND, page);
+}
+
bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
// Assumes PG1 is already selected.
// If any of the transactions fails function returns false.
@@ -78,22 +81,22 @@ bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
// Iterate over the pwm_buffer contents at 64 byte intervals.
for (uint8_t i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 64) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// Copy the data from i to i+63.
// Device will auto-increment register for data after the first byte
// Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
for (uint8_t j = 0; j < 64; j++) {
- g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j];
+ i2c_transfer_buffer[1 + j] = pwm_buffer[i + j];
}
#if SNLED27351_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(addr << 1, i2c_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -132,8 +135,8 @@ void snled27351_init_drivers(void) {
}
void snled27351_init(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to shutdown mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN);
// Setting internal channel pulldown/pullup
@@ -146,33 +149,34 @@ void snled27351_init(uint8_t addr) {
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2, SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE | SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE);
// Setting Iref
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, 0);
- // Set LED CONTROL PAGE (Page 0)
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL);
+
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) {
snled27351_write_register(addr, i, 0x00);
}
- // Set PWM PAGE (Page 1)
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM);
+ snled27351_select_page(addr, SNLED27351_COMMAND_PWM);
+
for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) {
snled27351_write_register(addr, i, 0x00);
}
- // Set CURRENT PAGE (Page 4)
+ snled27351_select_page(addr, SNLED27351_COMMAND_CURRENT_TUNE);
+
uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE;
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_CURRENT_TUNE);
for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) {
snled27351_write_register(addr, i, current_tune_reg_list[i]);
}
- // Enable LEDs ON/OFF
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL);
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) {
snled27351_write_register(addr, i, 0xFF);
}
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to normal mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL);
}
@@ -230,7 +234,7 @@ void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bo
void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM);
+ snled27351_select_page(addr, SNLED27351_COMMAND_PWM);
// If any of the transactions fail we risk writing dirty PG0,
// refresh page 0 just in case.
@@ -243,7 +247,8 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) {
void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL);
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) {
snled27351_write_register(addr, i, g_led_control_registers[index][i]);
}
@@ -265,15 +270,15 @@ void snled27351_flush(void) {
}
void snled27351_sw_return_normal(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to normal mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL);
}
void snled27351_sw_shutdown(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION);
+ snled27351_select_page(addr, SNLED27351_COMMAND_FUNCTION);
+
// Setting LED driver to shutdown mode
snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN);
// Write SW Sleep Register
diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h
index 77337f177b..8260df1ce1 100644
--- a/drivers/led/snled27351.h
+++ b/drivers/led/snled27351.h
@@ -169,6 +169,7 @@ extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT];
void snled27351_init_drivers(void);
void snled27351_init(uint8_t addr);
+void snled27351_select_page(uint8_t addr, uint8_t page);
bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data);
bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
diff --git a/drivers/sensors/analog_joystick.c b/drivers/sensors/analog_joystick.c
index 12256a8e7a..4aede4eacd 100644
--- a/drivers/sensors/analog_joystick.c
+++ b/drivers/sensors/analog_joystick.c
@@ -22,17 +22,28 @@
#include <stdlib.h>
// Set Parameters
+#ifndef ANALOG_JOYSTICK_AUTO_AXIS
uint16_t minAxisValue = ANALOG_JOYSTICK_AXIS_MIN;
uint16_t maxAxisValue = ANALOG_JOYSTICK_AXIS_MAX;
+#else
+int16_t minAxisValues[2];
+int16_t maxAxisValues[2];
+#endif
uint8_t maxCursorSpeed = ANALOG_JOYSTICK_SPEED_MAX;
uint8_t speedRegulator = ANALOG_JOYSTICK_SPEED_REGULATOR; // Lower Values Create Faster Movement
+#ifdef ANALOG_JOYSTICK_WEIGHTS
+int8_t weights[101] = ANALOG_JOYSTICK_WEIGHTS;
+#endif
+
int16_t xOrigin, yOrigin;
uint16_t lastCursor = 0;
-int16_t axisCoordinate(pin_t pin, uint16_t origin) {
+uint8_t prevValues[2] = {0, 0};
+
+int16_t axisCoordinate(pin_t pin, uint16_t origin, uint8_t axis) {
int8_t direction;
int16_t distanceFromOrigin;
int16_t range;
@@ -43,12 +54,27 @@ int16_t axisCoordinate(pin_t pin, uint16_t origin) {
return 0;
} else if (origin > position) {
distanceFromOrigin = origin - position;
- range = origin - minAxisValue;
- direction = -1;
+#ifdef ANALOG_JOYSTICK_AUTO_AXIS
+ if (position < minAxisValues[axis]) {
+ minAxisValues[axis] = position;
+ }
+ range = origin - minAxisValues[axis];
+#else
+ range = origin - minAxisValue;
+#endif
+ direction = -1;
} else {
distanceFromOrigin = position - origin;
- range = maxAxisValue - origin;
- direction = 1;
+
+#ifdef ANALOG_JOYSTICK_AUTO_AXIS
+ if (position > maxAxisValues[axis]) {
+ maxAxisValues[axis] = position;
+ }
+ range = maxAxisValues[axis] - origin;
+#else
+ range = maxAxisValue - origin;
+#endif
+ direction = 1;
}
float percent = (float)distanceFromOrigin / range;
@@ -62,14 +88,29 @@ int16_t axisCoordinate(pin_t pin, uint16_t origin) {
}
}
-int8_t axisToMouseComponent(pin_t pin, int16_t origin, uint8_t maxSpeed) {
- int16_t coordinate = axisCoordinate(pin, origin);
+int8_t axisToMouseComponent(pin_t pin, int16_t origin, uint8_t maxSpeed, uint8_t axis) {
+ int16_t coordinate = axisCoordinate(pin, origin, axis);
+ int8_t result;
+#ifndef ANALOG_JOYSTICK_WEIGHTS
if (coordinate != 0) {
float percent = (float)coordinate / 100;
- return percent * maxCursorSpeed * (abs(coordinate) / speedRegulator);
+ result = percent * maxCursorSpeed * (abs(coordinate) / speedRegulator);
} else {
return 0;
}
+#else
+ result = weights[abs(coordinate)] * (coordinate < 0 ? -1 : 1) * maxCursorSpeed / speedRegulator;
+#endif
+
+#ifdef ANALOG_JOYSTICK_CUTOFF
+ uint8_t pv = prevValues[axis];
+ prevValues[axis] = abs(result);
+ if (pv > abs(result)) {
+ return 0;
+ }
+#endif
+
+ return result;
}
report_analog_joystick_t analog_joystick_read(void) {
@@ -77,8 +118,8 @@ report_analog_joystick_t analog_joystick_read(void) {
if (timer_elapsed(lastCursor) > ANALOG_JOYSTICK_READ_INTERVAL) {
lastCursor = timer_read();
- report.x = axisToMouseComponent(ANALOG_JOYSTICK_X_AXIS_PIN, xOrigin, maxCursorSpeed);
- report.y = axisToMouseComponent(ANALOG_JOYSTICK_Y_AXIS_PIN, yOrigin, maxCursorSpeed);
+ report.x = axisToMouseComponent(ANALOG_JOYSTICK_X_AXIS_PIN, xOrigin, maxCursorSpeed, 0);
+ report.y = axisToMouseComponent(ANALOG_JOYSTICK_Y_AXIS_PIN, yOrigin, maxCursorSpeed, 1);
}
#ifdef ANALOG_JOYSTICK_CLICK_PIN
report.button = !readPin(ANALOG_JOYSTICK_CLICK_PIN);
@@ -93,4 +134,11 @@ void analog_joystick_init(void) {
// Account for drift
xOrigin = analogReadPin(ANALOG_JOYSTICK_X_AXIS_PIN);
yOrigin = analogReadPin(ANALOG_JOYSTICK_Y_AXIS_PIN);
+
+#ifdef ANALOG_JOYSTICK_AUTO_AXIS
+ minAxisValues[0] = xOrigin - 100;
+ minAxisValues[1] = yOrigin - 100;
+ maxAxisValues[0] = xOrigin + 100;
+ maxAxisValues[1] = yOrigin + 100;
+#endif
}
diff --git a/drivers/sensors/cirque_pinnacle.c b/drivers/sensors/cirque_pinnacle.c
index 3131805c20..b5c1abdebc 100644
--- a/drivers/sensors/cirque_pinnacle.c
+++ b/drivers/sensors/cirque_pinnacle.c
@@ -216,6 +216,13 @@ void cirque_pinnacle_cursor_smoothing(bool enable) {
RAP_Write(HOSTREG__FEEDCONFIG3, feedconfig3);
}
+// Check sensor is connected
+bool cirque_pinnacle_connected(void) {
+ uint8_t zidle = 0;
+ RAP_ReadBytes(HOSTREG__ZIDLE, &zidle, 1);
+ return zidle == HOSTREG__ZIDLE_DEFVAL;
+}
+
/* Pinnacle-based TM040040/TM035035/TM023023 Functions */
void cirque_pinnacle_init(void) {
#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
@@ -274,6 +281,10 @@ void cirque_pinnacle_init(void) {
}
cirque_pinnacle_enable_feed(true);
+
+#ifndef CIRQUE_PINNACLE_SKIP_SENSOR_CHECK
+ touchpad_init = cirque_pinnacle_connected();
+#endif
}
pinnacle_data_t cirque_pinnacle_read_data(void) {
diff --git a/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/config.h b/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/nano/keymaps/spooka/rules.mk b/keyboards/40percentclub/nano/keymaps/spooka/rules.mk
deleted file mode 100644
index 8b13789179..0000000000
--- a/keyboards/40percentclub/nano/keymaps/spooka/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/keyboards/aya/keymaps/default/config.h b/keyboards/aya/keymaps/default/config.h
deleted file mode 100644
index 6e57fd6499..0000000000
--- a/keyboards/aya/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2021 Dan Nixon
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
diff --git a/keyboards/biacco42/meishi2/keymaps/moc/config.h b/keyboards/biacco42/meishi2/keymaps/moc/config.h
deleted file mode 100644
index 9b5675af6b..0000000000
--- a/keyboards/biacco42/meishi2/keymaps/moc/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2021 Atsushi Nagase
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/boardwalk/keymaps/brendanwr/config.h b/keyboards/boardwalk/keymaps/brendanwr/config.h
deleted file mode 100644
index a2530241f4..0000000000
--- a/keyboards/boardwalk/keymaps/brendanwr/config.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/converter/ibm_terminal/keymaps/priyadi/config.h b/keyboards/converter/ibm_terminal/keymaps/priyadi/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/converter/ibm_terminal/keymaps/priyadi/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/cutie_club/wraith/keymaps/amber/config.h b/keyboards/cutie_club/wraith/keymaps/amber/config.h
deleted file mode 100644
index b825835bb4..0000000000
--- a/keyboards/cutie_club/wraith/keymaps/amber/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Amber Holly
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dm9records/plaid/keymaps/brickbots/config.h b/keyboards/dm9records/plaid/keymaps/brickbots/config.h
deleted file mode 100644
index 5733b9e4b0..0000000000
--- a/keyboards/dm9records/plaid/keymaps/brickbots/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Takuya Urakawa (dm9records.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dm9records/plaid/keymaps/stephen-huan/config.h b/keyboards/dm9records/plaid/keymaps/stephen-huan/config.h
deleted file mode 100644
index 5733b9e4b0..0000000000
--- a/keyboards/dm9records/plaid/keymaps/stephen-huan/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Takuya Urakawa (dm9records.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/config.h b/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/config.h
deleted file mode 100644
index 4bcbc6f673..0000000000
--- a/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Ian Canino (ian@thecommittedbug.io)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dp60/keymaps/indicator/indicator.c b/keyboards/dp60/keymaps/indicator/indicator.c
index 02450ce68d..d7b628cc56 100644
--- a/keyboards/dp60/keymaps/indicator/indicator.c
+++ b/keyboards/dp60/keymaps/indicator/indicator.c
@@ -14,10 +14,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "dp60.h"
-
-#include "rgblight.h"
-
+#include QMK_KEYBOARD_H
+#include "ws2812.h"
// caps led
const rgblight_segment_t PROGMEM dp60_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
@@ -72,13 +70,17 @@ extern rgblight_config_t rgblight_config;
extern void rgblight_layers_write(void);
extern void indicator_write(rgb_led_t *start_led, uint8_t num_leds);
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
+void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
{
ws2812_setleds(start_led, RGBLED_NUM-RGB_INDICATOR_NUM);
indicator_write(start_led + (RGBLED_NUM - RGB_INDICATOR_NUM), RGB_INDICATOR_NUM);
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
+
void led_update_ports(led_t led_state) {
rgblight_set_layer_state(0, led_state.caps_lock);
rgblight_set_layer_state(1, led_state.scroll_lock);
diff --git a/keyboards/dp60/keymaps/indicator/rules.mk b/keyboards/dp60/keymaps/indicator/rules.mk
index a8891659f7..853666e4f4 100644
--- a/keyboards/dp60/keymaps/indicator/rules.mk
+++ b/keyboards/dp60/keymaps/indicator/rules.mk
@@ -1,4 +1,6 @@
RGBLIGHT_ENABLE = yes # Use RGB underglow light
+RGBLIGHT_DRIVER = custom
+WS2812_DRIVER_REQUIRED = yes
SRC += indicator.c led_driver.c
diff --git a/keyboards/era/klein/config.h b/keyboards/era/klein/config.h
deleted file mode 100644
index 1033bc738e..0000000000
--- a/keyboards/era/klein/config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2023 eerraa
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-/* BACKLIGHT PWM */
-#define BACKLIGHT_PWM_DRIVER PWMD7
-#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B
-
-/* RGB Matrix */
-#define RGB_MATRIX_DEFAULT_VAL 60
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/era/klein/halconf.h b/keyboards/era/klein/halconf.h
deleted file mode 100644
index f57e86df01..0000000000
--- a/keyboards/era/klein/halconf.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2023 eerraa
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#define HAL_USE_PWM TRUE
-
-#include_next <halconf.h> \ No newline at end of file
diff --git a/keyboards/era/klein/info.json b/keyboards/era/klein/info.json
deleted file mode 100644
index ac08cbb8a2..0000000000
--- a/keyboards/era/klein/info.json
+++ /dev/null
@@ -1,590 +0,0 @@
-{
- "manufacturer": "SIRIND",
- "keyboard_name": "Klein",
- "maintainer": "eerraa",
- "backlight": {
- "levels": 5,
- "pin": "GP15"
- },
- "bootloader": "rp2040",
- "build": {
- "debounce_type": "sym_defer_pk"
- },
- "diode_direction": "COL2ROW",
- "features": {
- "backlight": true,
- "bootmagic": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "indicators": {
- "caps_lock": "GP16",
- "on_state": 0,
- "scroll_lock": "GP17"
- },
- "matrix_pins": {
- "cols": ["GP22", "GP23", "GP24", "GP25", "GP26", "GP27", "GP28", "GP29", "GP11", "GP10", "GP8", "GP7", "GP1", "GP2", "GP3", "GP4"],
- "rows": ["GP18", "GP19", "GP20", "GP21", "GP14", "GP5", "GP6", "GP9", "GP13", "GP12"]
- },
- "processor": "RP2040",
- "rgb_matrix": {
- "animations": {
- "alphas_mods": true,
- "gradient_up_down": true,
- "gradient_left_right": true,
- "breathing": true,
- "band_sat": true,
- "band_val": true,
- "band_pinwheel_sat": true,
- "band_pinwheel_val": true,
- "band_spiral_sat": true,
- "band_spiral_val": true,
- "cycle_all": true,
- "cycle_left_right": true,
- "cycle_up_down": true,
- "rainbow_moving_chevron": true,
- "cycle_out_in": true,
- "cycle_out_in_dual": true,
- "cycle_pinwheel": true,
- "cycle_spiral": true,
- "dual_beacon": true,
- "rainbow_beacon": true,
- "rainbow_pinwheels": true,
- "raindrops": true,
- "jellybean_raindrops": true,
- "hue_breathing": true,
- "hue_pendulum": true,
- "hue_wave": true,
- "pixel_rain": true,
- "pixel_flow": true,
- "pixel_fractal": true,
- "typing_heatmap": true,
- "digital_rain": true,
- "solid_reactive_simple": true,
- "solid_reactive": true,
- "solid_reactive_wide": true,
- "solid_reactive_multiwide": true,
- "solid_reactive_cross": true,
- "solid_reactive_multicross": true,
- "solid_reactive_nexus": true,
- "solid_reactive_multinexus": true,
- "splash": true,
- "multisplash": true,
- "solid_splash": true,
- "solid_multisplash": true
- },
- "driver": "ws2812",
- "layout": [
- {"matrix": [0, 7], "x": 4, "y": 0, "flags": 1},
- {"matrix": [0, 6], "x": 20, "y": 2, "flags": 4},
- {"matrix": [0, 5], "x": 32, "y": 2, "flags": 4},
- {"matrix": [0, 4], "x": 45, "y": 1, "flags": 4},
- {"matrix": [0, 3], "x": 58, "y": 3, "flags": 4},
- {"matrix": [0, 2], "x": 71, "y": 5, "flags": 4},
- {"matrix": [0, 1], "x": 83, "y": 8, "flags": 4},
- {"matrix": [0, 0], "x": 96, "y": 10, "flags": 4},
- {"matrix": [1, 0], "x": 129, "y": 9, "flags": 4},
- {"matrix": [1, 1], "x": 141, "y": 7, "flags": 4},
- {"matrix": [1, 2], "x": 154, "y": 4, "flags": 4},
- {"matrix": [1, 3], "x": 166, "y": 2, "flags": 4},
- {"matrix": [1, 4], "x": 179, "y": 1, "flags": 4},
- {"matrix": [1, 5], "x": 192, "y": 2, "flags": 4},
- {"matrix": [1, 6], "x": 211, "y": 2, "flags": 1},
- {"matrix": [1, 7], "x": 1, "y": 13, "flags": 1},
- {"matrix": [2, 6], "x": 21, "y": 15, "flags": 1},
- {"matrix": [2, 5], "x": 36, "y": 15, "flags": 4},
- {"matrix": [2, 4], "x": 50, "y": 15, "flags": 4},
- {"matrix": [2, 3], "x": 62, "y": 17, "flags": 4},
- {"matrix": [2, 2], "x": 75, "y": 20, "flags": 4},
- {"matrix": [2, 1], "x": 87, "y": 22, "flags": 4},
- {"matrix": [2, 0], "x": 100, "y": 24, "flags": 4},
- {"matrix": [3, 1], "x": 125, "y": 23, "flags": 4},
- {"matrix": [3, 2], "x": 137, "y": 21, "flags": 4},
- {"matrix": [3, 3], "x": 150, "y": 18, "flags": 4},
- {"matrix": [3, 4], "x": 162, "y": 16, "flags": 4},
- {"matrix": [3, 5], "x": 175, "y": 15, "flags": 4},
- {"matrix": [3, 6], "x": 188, "y": 15, "flags": 4},
- {"matrix": [4, 6], "x": 201, "y": 15, "flags": 4},
- {"matrix": [4, 5], "x": 217, "y": 15, "flags": 4},
- {"matrix": [4, 3], "x": 0, "y": 27, "flags": 1},
- {"matrix": [4, 1], "x": 18, "y": 29, "flags": 1},
- {"matrix": [0, 8], "x": 38, "y": 29, "flags": 4},
- {"matrix": [0, 9], "x": 51, "y": 29, "flags": 4},
- {"matrix": [0, 10], "x": 64, "y": 31, "flags": 4},
- {"matrix": [0, 11], "x": 76, "y": 33, "flags": 4},
- {"matrix": [0, 12], "x": 89, "y": 36, "flags": 4},
- {"matrix": [0, 13], "x": 129, "y": 36, "flags": 4},
- {"matrix": [0, 15], "x": 142, "y": 33, "flags": 4},
- {"matrix": [1, 15], "x": 154, "y": 31, "flags": 4},
- {"matrix": [1, 14], "x": 167, "y": 29, "flags": 4},
- {"matrix": [1, 13], "x": 180, "y": 29, "flags": 4},
- {"matrix": [1, 12], "x": 193, "y": 29, "flags": 4},
- {"matrix": [1, 11], "x": 213, "y": 29, "flags": 1},
- {"matrix": [1, 10], "x": 21, "y": 42, "flags": 1},
- {"matrix": [1, 9], "x": 42, "y": 42, "flags": 4},
- {"matrix": [1, 8], "x": 60, "y": 57, "flags": 4},
- {"matrix": [2, 8], "x": 67, "y": 45, "flags": 4},
- {"matrix": [2, 9], "x": 80, "y": 47, "flags": 4},
- {"matrix": [2, 10], "x": 92, "y": 50, "flags": 4},
- {"matrix": [2, 11], "x": 126, "y": 50, "flags": 4},
- {"matrix": [2, 12], "x": 138, "y": 48, "flags": 4},
- {"matrix": [2, 13], "x": 151, "y": 45, "flags": 4},
- {"matrix": [2, 15], "x": 163, "y": 43, "flags": 4},
- {"matrix": [3, 14], "x": 177, "y": 42, "flags": 4},
- {"matrix": [3, 13], "x": 189, "y": 42, "flags": 4},
- {"matrix": [3, 12], "x": 213, "y": 42, "flags": 1},
- {"matrix": [3, 11], "x": 16, "y": 55, "flags": 1},
- {"matrix": [3, 10], "x": 55, "y": 43, "flags": 1},
- {"matrix": [3, 9], "x": 76, "y": 60, "flags": 4},
- {"matrix": [3, 8], "x": 96, "y": 64, "flags": 1},
- {"matrix": [4, 9], "x": 139, "y": 61, "flags": 4},
- {"matrix": [4, 11], "x": 166, "y": 57, "flags": 1},
- {"matrix": [4, 13], "x": 189, "y": 55, "flags": 1},
- {"matrix": [4, 14], "x": 202, "y": 55, "flags": 1},
- {"matrix": [4, 15], "x": 221, "y": 55, "flags": 1}
- ],
- "led_count": 67
- },
- "url": "",
- "usb": {
- "device_version": "1.0.0",
- "pid": "0x0003",
- "vid": "0x4552"
- },
- "ws2812": {
- "driver": "vendor",
- "pin": "GP0"
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [0, 3], "x": 3.5, "y": 0},
- {"matrix": [0, 4], "x": 4.5, "y": 0},
- {"matrix": [0, 5], "x": 5.5, "y": 0},
- {"matrix": [0, 6], "x": 6.5, "y": 0},
- {"matrix": [0, 7], "x": 7.5, "y": 0},
- {"matrix": [5, 0], "x": 10.75, "y": 0},
- {"matrix": [5, 1], "x": 11.75, "y": 0},
- {"matrix": [5, 2], "x": 12.75, "y": 0},
- {"matrix": [5, 3], "x": 13.75, "y": 0},
- {"matrix": [5, 4], "x": 14.75, "y": 0},
- {"matrix": [5, 5], "x": 15.75, "y": 0},
- {"matrix": [5, 6], "x": 16.75, "y": 0},
- {"matrix": [5, 7], "x": 17.75, "y": 0},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1},
- {"matrix": [1, 3], "x": 4, "y": 1},
- {"matrix": [1, 4], "x": 5, "y": 1},
- {"matrix": [1, 5], "x": 6, "y": 1},
- {"matrix": [1, 6], "x": 7, "y": 1},
- {"matrix": [1, 7], "x": 8, "y": 1},
- {"matrix": [6, 0], "x": 10.25, "y": 1},
- {"matrix": [6, 1], "x": 11.25, "y": 1},
- {"matrix": [6, 2], "x": 12.25, "y": 1},
- {"matrix": [6, 3], "x": 13.25, "y": 1},
- {"matrix": [6, 4], "x": 14.25, "y": 1},
- {"matrix": [6, 5], "x": 15.25, "y": 1},
- {"matrix": [6, 6], "x": 16.25, "y": 1},
- {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5},
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2},
- {"matrix": [2, 3], "x": 4.25, "y": 2},
- {"matrix": [2, 4], "x": 5.25, "y": 2},
- {"matrix": [2, 5], "x": 6.25, "y": 2},
- {"matrix": [2, 6], "x": 7.25, "y": 2},
- {"matrix": [7, 0], "x": 10.5, "y": 2},
- {"matrix": [7, 1], "x": 11.5, "y": 2},
- {"matrix": [7, 2], "x": 12.5, "y": 2},
- {"matrix": [7, 3], "x": 13.5, "y": 2},
- {"matrix": [7, 4], "x": 14.5, "y": 2},
- {"matrix": [7, 5], "x": 15.5, "y": 2},
- {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 3.75, "y": 3},
- {"matrix": [3, 3], "x": 4.75, "y": 3},
- {"matrix": [3, 4], "x": 5.75, "y": 3},
- {"matrix": [3, 5], "x": 6.75, "y": 3},
- {"matrix": [3, 6], "x": 7.75, "y": 3},
- {"matrix": [8, 0], "x": 10, "y": 3},
- {"matrix": [8, 1], "x": 11, "y": 3},
- {"matrix": [8, 2], "x": 12, "y": 3},
- {"matrix": [8, 3], "x": 13, "y": 3},
- {"matrix": [8, 4], "x": 14, "y": 3},
- {"matrix": [8, 5], "x": 15, "y": 3},
- {"matrix": [8, 6], "x": 16, "y": 3, "w": 1.75},
- {"matrix": [8, 7], "x": 17.75, "y": 3},
- {"matrix": [4, 1], "x": 1.5, "y": 4},
- {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5},
- {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25},
- {"matrix": [4, 5], "x": 8.25, "y": 4},
- {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75},
- {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5},
- {"matrix": [9, 5], "x": 15, "y": 4},
- {"matrix": [9, 6], "x": 16, "y": 4},
- {"matrix": [9, 7], "x": 17, "y": 4}
- ]
- },
- "LAYOUT_ansi": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [0, 3], "x": 3.5, "y": 0},
- {"matrix": [0, 4], "x": 4.5, "y": 0},
- {"matrix": [0, 5], "x": 5.5, "y": 0},
- {"matrix": [0, 6], "x": 6.5, "y": 0},
- {"matrix": [0, 7], "x": 7.5, "y": 0},
- {"matrix": [5, 0], "x": 10.75, "y": 0},
- {"matrix": [5, 1], "x": 11.75, "y": 0},
- {"matrix": [5, 2], "x": 12.75, "y": 0},
- {"matrix": [5, 3], "x": 13.75, "y": 0},
- {"matrix": [5, 4], "x": 14.75, "y": 0},
- {"matrix": [5, 5], "x": 15.75, "y": 0},
- {"matrix": [5, 7], "x": 16.75, "y": 0, "w": 2},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1},
- {"matrix": [1, 3], "x": 4, "y": 1},
- {"matrix": [1, 4], "x": 5, "y": 1},
- {"matrix": [1, 5], "x": 6, "y": 1},
- {"matrix": [1, 6], "x": 7, "y": 1},
- {"matrix": [1, 7], "x": 8, "y": 1},
- {"matrix": [6, 0], "x": 10.25, "y": 1},
- {"matrix": [6, 1], "x": 11.25, "y": 1},
- {"matrix": [6, 2], "x": 12.25, "y": 1},
- {"matrix": [6, 3], "x": 13.25, "y": 1},
- {"matrix": [6, 4], "x": 14.25, "y": 1},
- {"matrix": [6, 5], "x": 15.25, "y": 1},
- {"matrix": [6, 6], "x": 16.25, "y": 1},
- {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5},
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2},
- {"matrix": [2, 3], "x": 4.25, "y": 2},
- {"matrix": [2, 4], "x": 5.25, "y": 2},
- {"matrix": [2, 5], "x": 6.25, "y": 2},
- {"matrix": [2, 6], "x": 7.25, "y": 2},
- {"matrix": [7, 0], "x": 10.5, "y": 2},
- {"matrix": [7, 1], "x": 11.5, "y": 2},
- {"matrix": [7, 2], "x": 12.5, "y": 2},
- {"matrix": [7, 3], "x": 13.5, "y": 2},
- {"matrix": [7, 4], "x": 14.5, "y": 2},
- {"matrix": [7, 5], "x": 15.5, "y": 2},
- {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 3.75, "y": 3},
- {"matrix": [3, 3], "x": 4.75, "y": 3},
- {"matrix": [3, 4], "x": 5.75, "y": 3},
- {"matrix": [3, 5], "x": 6.75, "y": 3},
- {"matrix": [3, 6], "x": 7.75, "y": 3},
- {"matrix": [8, 0], "x": 10, "y": 3},
- {"matrix": [8, 1], "x": 11, "y": 3},
- {"matrix": [8, 2], "x": 12, "y": 3},
- {"matrix": [8, 3], "x": 13, "y": 3},
- {"matrix": [8, 4], "x": 14, "y": 3},
- {"matrix": [8, 5], "x": 15, "y": 3},
- {"matrix": [8, 6], "x": 16, "y": 3, "w": 2.75},
- {"matrix": [4, 1], "x": 1.5, "y": 4},
- {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5},
- {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25},
- {"matrix": [4, 5], "x": 8.25, "y": 4},
- {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75},
- {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5},
- {"matrix": [9, 7], "x": 17.25, "y": 4, "w": 1.5}
- ]
- },
- "LAYOUT_ansi_arrow": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [0, 3], "x": 3.5, "y": 0},
- {"matrix": [0, 4], "x": 4.5, "y": 0},
- {"matrix": [0, 5], "x": 5.5, "y": 0},
- {"matrix": [0, 6], "x": 6.5, "y": 0},
- {"matrix": [0, 7], "x": 7.5, "y": 0},
- {"matrix": [5, 0], "x": 10.75, "y": 0},
- {"matrix": [5, 1], "x": 11.75, "y": 0},
- {"matrix": [5, 2], "x": 12.75, "y": 0},
- {"matrix": [5, 3], "x": 13.75, "y": 0},
- {"matrix": [5, 4], "x": 14.75, "y": 0},
- {"matrix": [5, 5], "x": 15.75, "y": 0},
- {"matrix": [5, 7], "x": 16.75, "y": 0, "w": 2},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1},
- {"matrix": [1, 3], "x": 4, "y": 1},
- {"matrix": [1, 4], "x": 5, "y": 1},
- {"matrix": [1, 5], "x": 6, "y": 1},
- {"matrix": [1, 6], "x": 7, "y": 1},
- {"matrix": [1, 7], "x": 8, "y": 1},
- {"matrix": [6, 0], "x": 10.25, "y": 1},
- {"matrix": [6, 1], "x": 11.25, "y": 1},
- {"matrix": [6, 2], "x": 12.25, "y": 1},
- {"matrix": [6, 3], "x": 13.25, "y": 1},
- {"matrix": [6, 4], "x": 14.25, "y": 1},
- {"matrix": [6, 5], "x": 15.25, "y": 1},
- {"matrix": [6, 6], "x": 16.25, "y": 1},
- {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5},
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2},
- {"matrix": [2, 3], "x": 4.25, "y": 2},
- {"matrix": [2, 4], "x": 5.25, "y": 2},
- {"matrix": [2, 5], "x": 6.25, "y": 2},
- {"matrix": [2, 6], "x": 7.25, "y": 2},
- {"matrix": [7, 0], "x": 10.5, "y": 2},
- {"matrix": [7, 1], "x": 11.5, "y": 2},
- {"matrix": [7, 2], "x": 12.5, "y": 2},
- {"matrix": [7, 3], "x": 13.5, "y": 2},
- {"matrix": [7, 4], "x": 14.5, "y": 2},
- {"matrix": [7, 5], "x": 15.5, "y": 2},
- {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 3.75, "y": 3},
- {"matrix": [3, 3], "x": 4.75, "y": 3},
- {"matrix": [3, 4], "x": 5.75, "y": 3},
- {"matrix": [3, 5], "x": 6.75, "y": 3},
- {"matrix": [3, 6], "x": 7.75, "y": 3},
- {"matrix": [8, 0], "x": 10, "y": 3},
- {"matrix": [8, 1], "x": 11, "y": 3},
- {"matrix": [8, 2], "x": 12, "y": 3},
- {"matrix": [8, 3], "x": 13, "y": 3},
- {"matrix": [8, 4], "x": 14, "y": 3},
- {"matrix": [8, 5], "x": 15, "y": 3},
- {"matrix": [8, 6], "x": 16, "y": 3},
- {"matrix": [8, 7], "x": 17, "y": 3, "w": 1.75},
- {"matrix": [4, 1], "x": 1.5, "y": 4},
- {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5},
- {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25},
- {"matrix": [4, 5], "x": 8.25, "y": 4},
- {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75},
- {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5},
- {"matrix": [9, 5], "x": 15, "y": 4},
- {"matrix": [9, 6], "x": 16, "y": 4},
- {"matrix": [9, 7], "x": 17, "y": 4}
- ]
- },
- "LAYOUT_ansi_split_bs": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [0, 3], "x": 3.5, "y": 0},
- {"matrix": [0, 4], "x": 4.5, "y": 0},
- {"matrix": [0, 5], "x": 5.5, "y": 0},
- {"matrix": [0, 6], "x": 6.5, "y": 0},
- {"matrix": [0, 7], "x": 7.5, "y": 0},
- {"matrix": [5, 0], "x": 10.75, "y": 0},
- {"matrix": [5, 1], "x": 11.75, "y": 0},
- {"matrix": [5, 2], "x": 12.75, "y": 0},
- {"matrix": [5, 3], "x": 13.75, "y": 0},
- {"matrix": [5, 4], "x": 14.75, "y": 0},
- {"matrix": [5, 5], "x": 15.75, "y": 0},
- {"matrix": [5, 6], "x": 16.75, "y": 0},
- {"matrix": [5, 7], "x": 17.75, "y": 0},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1},
- {"matrix": [1, 3], "x": 4, "y": 1},
- {"matrix": [1, 4], "x": 5, "y": 1},
- {"matrix": [1, 5], "x": 6, "y": 1},
- {"matrix": [1, 6], "x": 7, "y": 1},
- {"matrix": [1, 7], "x": 8, "y": 1},
- {"matrix": [6, 0], "x": 10.25, "y": 1},
- {"matrix": [6, 1], "x": 11.25, "y": 1},
- {"matrix": [6, 2], "x": 12.25, "y": 1},
- {"matrix": [6, 3], "x": 13.25, "y": 1},
- {"matrix": [6, 4], "x": 14.25, "y": 1},
- {"matrix": [6, 5], "x": 15.25, "y": 1},
- {"matrix": [6, 6], "x": 16.25, "y": 1},
- {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5},
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2},
- {"matrix": [2, 3], "x": 4.25, "y": 2},
- {"matrix": [2, 4], "x": 5.25, "y": 2},
- {"matrix": [2, 5], "x": 6.25, "y": 2},
- {"matrix": [2, 6], "x": 7.25, "y": 2},
- {"matrix": [7, 0], "x": 10.5, "y": 2},
- {"matrix": [7, 1], "x": 11.5, "y": 2},
- {"matrix": [7, 2], "x": 12.5, "y": 2},
- {"matrix": [7, 3], "x": 13.5, "y": 2},
- {"matrix": [7, 4], "x": 14.5, "y": 2},
- {"matrix": [7, 5], "x": 15.5, "y": 2},
- {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 3.75, "y": 3},
- {"matrix": [3, 3], "x": 4.75, "y": 3},
- {"matrix": [3, 4], "x": 5.75, "y": 3},
- {"matrix": [3, 5], "x": 6.75, "y": 3},
- {"matrix": [3, 6], "x": 7.75, "y": 3},
- {"matrix": [8, 0], "x": 10, "y": 3},
- {"matrix": [8, 1], "x": 11, "y": 3},
- {"matrix": [8, 2], "x": 12, "y": 3},
- {"matrix": [8, 3], "x": 13, "y": 3},
- {"matrix": [8, 4], "x": 14, "y": 3},
- {"matrix": [8, 5], "x": 15, "y": 3},
- {"matrix": [8, 6], "x": 16, "y": 3, "w": 2.75},
- {"matrix": [4, 1], "x": 1.5, "y": 4},
- {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5},
- {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25},
- {"matrix": [4, 5], "x": 8.25, "y": 4},
- {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75},
- {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5},
- {"matrix": [9, 7], "x": 17.25, "y": 4, "w": 1.5}
- ]
- },
- "LAYOUT_ansi_split_bs_rsft": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [0, 3], "x": 3.5, "y": 0},
- {"matrix": [0, 4], "x": 4.5, "y": 0},
- {"matrix": [0, 5], "x": 5.5, "y": 0},
- {"matrix": [0, 6], "x": 6.5, "y": 0},
- {"matrix": [0, 7], "x": 7.5, "y": 0},
- {"matrix": [5, 0], "x": 10.75, "y": 0},
- {"matrix": [5, 1], "x": 11.75, "y": 0},
- {"matrix": [5, 2], "x": 12.75, "y": 0},
- {"matrix": [5, 3], "x": 13.75, "y": 0},
- {"matrix": [5, 4], "x": 14.75, "y": 0},
- {"matrix": [5, 5], "x": 15.75, "y": 0},
- {"matrix": [5, 6], "x": 16.75, "y": 0},
- {"matrix": [5, 7], "x": 17.75, "y": 0},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1},
- {"matrix": [1, 3], "x": 4, "y": 1},
- {"matrix": [1, 4], "x": 5, "y": 1},
- {"matrix": [1, 5], "x": 6, "y": 1},
- {"matrix": [1, 6], "x": 7, "y": 1},
- {"matrix": [1, 7], "x": 8, "y": 1},
- {"matrix": [6, 0], "x": 10.25, "y": 1},
- {"matrix": [6, 1], "x": 11.25, "y": 1},
- {"matrix": [6, 2], "x": 12.25, "y": 1},
- {"matrix": [6, 3], "x": 13.25, "y": 1},
- {"matrix": [6, 4], "x": 14.25, "y": 1},
- {"matrix": [6, 5], "x": 15.25, "y": 1},
- {"matrix": [6, 6], "x": 16.25, "y": 1},
- {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5},
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2},
- {"matrix": [2, 3], "x": 4.25, "y": 2},
- {"matrix": [2, 4], "x": 5.25, "y": 2},
- {"matrix": [2, 5], "x": 6.25, "y": 2},
- {"matrix": [2, 6], "x": 7.25, "y": 2},
- {"matrix": [7, 0], "x": 10.5, "y": 2},
- {"matrix": [7, 1], "x": 11.5, "y": 2},
- {"matrix": [7, 2], "x": 12.5, "y": 2},
- {"matrix": [7, 3], "x": 13.5, "y": 2},
- {"matrix": [7, 4], "x": 14.5, "y": 2},
- {"matrix": [7, 5], "x": 15.5, "y": 2},
- {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 3.75, "y": 3},
- {"matrix": [3, 3], "x": 4.75, "y": 3},
- {"matrix": [3, 4], "x": 5.75, "y": 3},
- {"matrix": [3, 5], "x": 6.75, "y": 3},
- {"matrix": [3, 6], "x": 7.75, "y": 3},
- {"matrix": [8, 0], "x": 10, "y": 3},
- {"matrix": [8, 1], "x": 11, "y": 3},
- {"matrix": [8, 2], "x": 12, "y": 3},
- {"matrix": [8, 3], "x": 13, "y": 3},
- {"matrix": [8, 4], "x": 14, "y": 3},
- {"matrix": [8, 5], "x": 15, "y": 3},
- {"matrix": [8, 6], "x": 16, "y": 3, "w": 1.75},
- {"matrix": [8, 7], "x": 17.75, "y": 3},
- {"matrix": [4, 1], "x": 1.5, "y": 4},
- {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5},
- {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25},
- {"matrix": [4, 5], "x": 8.25, "y": 4},
- {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75},
- {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5},
- {"matrix": [9, 7], "x": 17.25, "y": 4, "w": 1.5}
- ]
- },
- "LAYOUT_arrow_split_bs": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [0, 3], "x": 3.5, "y": 0},
- {"matrix": [0, 4], "x": 4.5, "y": 0},
- {"matrix": [0, 5], "x": 5.5, "y": 0},
- {"matrix": [0, 6], "x": 6.5, "y": 0},
- {"matrix": [0, 7], "x": 7.5, "y": 0},
- {"matrix": [5, 0], "x": 10.75, "y": 0},
- {"matrix": [5, 1], "x": 11.75, "y": 0},
- {"matrix": [5, 2], "x": 12.75, "y": 0},
- {"matrix": [5, 3], "x": 13.75, "y": 0},
- {"matrix": [5, 4], "x": 14.75, "y": 0},
- {"matrix": [5, 5], "x": 15.75, "y": 0},
- {"matrix": [5, 6], "x": 16.75, "y": 0},
- {"matrix": [5, 7], "x": 17.75, "y": 0},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1},
- {"matrix": [1, 3], "x": 4, "y": 1},
- {"matrix": [1, 4], "x": 5, "y": 1},
- {"matrix": [1, 5], "x": 6, "y": 1},
- {"matrix": [1, 6], "x": 7, "y": 1},
- {"matrix": [1, 7], "x": 8, "y": 1},
- {"matrix": [6, 0], "x": 10.25, "y": 1},
- {"matrix": [6, 1], "x": 11.25, "y": 1},
- {"matrix": [6, 2], "x": 12.25, "y": 1},
- {"matrix": [6, 3], "x": 13.25, "y": 1},
- {"matrix": [6, 4], "x": 14.25, "y": 1},
- {"matrix": [6, 5], "x": 15.25, "y": 1},
- {"matrix": [6, 6], "x": 16.25, "y": 1},
- {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5},
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2},
- {"matrix": [2, 3], "x": 4.25, "y": 2},
- {"matrix": [2, 4], "x": 5.25, "y": 2},
- {"matrix": [2, 5], "x": 6.25, "y": 2},
- {"matrix": [2, 6], "x": 7.25, "y": 2},
- {"matrix": [7, 0], "x": 10.5, "y": 2},
- {"matrix": [7, 1], "x": 11.5, "y": 2},
- {"matrix": [7, 2], "x": 12.5, "y": 2},
- {"matrix": [7, 3], "x": 13.5, "y": 2},
- {"matrix": [7, 4], "x": 14.5, "y": 2},
- {"matrix": [7, 5], "x": 15.5, "y": 2},
- {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 3.75, "y": 3},
- {"matrix": [3, 3], "x": 4.75, "y": 3},
- {"matrix": [3, 4], "x": 5.75, "y": 3},
- {"matrix": [3, 5], "x": 6.75, "y": 3},
- {"matrix": [3, 6], "x": 7.75, "y": 3},
- {"matrix": [8, 0], "x": 10, "y": 3},
- {"matrix": [8, 1], "x": 11, "y": 3},
- {"matrix": [8, 2], "x": 12, "y": 3},
- {"matrix": [8, 3], "x": 13, "y": 3},
- {"matrix": [8, 4], "x": 14, "y": 3},
- {"matrix": [8, 5], "x": 15, "y": 3},
- {"matrix": [8, 6], "x": 16, "y": 3},
- {"matrix": [8, 7], "x": 17, "y": 3, "w": 1.75},
- {"matrix": [4, 1], "x": 1.5, "y": 4},
- {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5},
- {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25},
- {"matrix": [4, 5], "x": 8.25, "y": 4},
- {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75},
- {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5},
- {"matrix": [9, 5], "x": 15, "y": 4},
- {"matrix": [9, 6], "x": 16, "y": 4},
- {"matrix": [9, 7], "x": 17, "y": 4}
- ]
- }
- }
-} \ No newline at end of file
diff --git a/keyboards/era/klein/keymaps/default/keymap.c b/keyboards/era/klein/keymaps/default/keymap.c
deleted file mode 100644
index 88878bbcd9..0000000000
--- a/keyboards/era/klein/keymaps/default/keymap.c
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2018-2022 QMK (@qmk)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT(
- KC_ESC, 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_BSPC,
- KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_PGDN, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
- KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL
- ),
-
- [1] = LAYOUT(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-}; \ No newline at end of file
diff --git a/keyboards/era/klein/keymaps/via/keymap.c b/keyboards/era/klein/keymaps/via/keymap.c
deleted file mode 100644
index 88878bbcd9..0000000000
--- a/keyboards/era/klein/keymaps/via/keymap.c
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2018-2022 QMK (@qmk)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT(
- KC_ESC, 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_BSPC,
- KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_PGDN, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
- KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL
- ),
-
- [1] = LAYOUT(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-}; \ No newline at end of file
diff --git a/keyboards/era/klein/mcuconf.h b/keyboards/era/klein/mcuconf.h
deleted file mode 100644
index b82cc49d7d..0000000000
--- a/keyboards/era/klein/mcuconf.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2023 eerraa
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include_next <mcuconf.h>
-
-#undef RP_PWM_USE_PWM7
-#define RP_PWM_USE_PWM7 TRUE \ No newline at end of file
diff --git a/keyboards/era/klein/readme.md b/keyboards/era/klein/readme.md
deleted file mode 100644
index 1efeafe451..0000000000
--- a/keyboards/era/klein/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# MontK Cervin Klein
-
-* Keyboard Maintainer: [ERA](https://github.com/eerraa)
-* Hardware supported: SIRIND Klein
-* Hardware availability: [Syryan](https://srind.mysoho.com/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make era/klein:default
-
-Flashing example for this keyboard:
-
- make era/klein:default:flash
-
-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).
-
-## Bootloader
-
-Enter the bootloader in 3 ways:
-
-* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/era/klein/rules.mk b/keyboards/era/klein/rules.mk
deleted file mode 100644
index e69de29bb2..0000000000
--- a/keyboards/era/klein/rules.mk
+++ /dev/null
diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/led_i2c.c
index 23ef91b74f..b82a12d67b 100644
--- a/keyboards/ergodox_ez/led_i2c.c
+++ b/keyboards/ergodox_ez/led_i2c.c
@@ -21,8 +21,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGBLIGHT_ENABLE
# include "ergodox_ez.h"
+# include "ws2812.h"
-void rgblight_call_driver(rgb_led_t *led, uint8_t led_num) {
+void setleds_custom(rgb_led_t *led, uint16_t led_num) {
i2c_init();
i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
int i = 0;
@@ -51,5 +52,8 @@ void rgblight_call_driver(rgb_led_t *led, uint8_t led_num) {
ws2812_setleds(led, led_num);
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
#endif // RGBLIGHT_ENABLE
diff --git a/keyboards/ergodox_ez/shine/info.json b/keyboards/ergodox_ez/shine/info.json
index 11c3a8b209..181ac52e6c 100644
--- a/keyboards/ergodox_ez/shine/info.json
+++ b/keyboards/ergodox_ez/shine/info.json
@@ -2,5 +2,8 @@
"keyboard_name": "ErgoDox EZ Shine",
"usb": {
"pid": "0x4975"
+ },
+ "rgblight": {
+ "driver": "custom"
}
}
diff --git a/keyboards/ergodox_ez/shine/rules.mk b/keyboards/ergodox_ez/shine/rules.mk
index 1e3cebb145..b035c36850 100644
--- a/keyboards/ergodox_ez/shine/rules.mk
+++ b/keyboards/ergodox_ez/shine/rules.mk
@@ -1 +1,2 @@
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/fc660c/keymaps/siroleo/config.h b/keyboards/fc660c/keymaps/siroleo/config.h
deleted file mode 100644
index 8262805a0a..0000000000
--- a/keyboards/fc660c/keymaps/siroleo/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Khader Syed
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/fleuron/keymaps/dollartacos/config.h b/keyboards/fleuron/keymaps/dollartacos/config.h
deleted file mode 100644
index 1ce0a168f5..0000000000
--- a/keyboards/fleuron/keymaps/dollartacos/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2018 James Underwood
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-// Place overrides here \ No newline at end of file
diff --git a/keyboards/fortitude60/keymaps/default/config.h b/keyboards/fortitude60/keymaps/default/config.h
deleted file mode 100644
index 7e9b510ff6..0000000000
--- a/keyboards/fortitude60/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2017 Danny Nguyen <danny@hexwire.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/fortitude60/keymaps/via/config.h b/keyboards/fortitude60/keymaps/via/config.h
deleted file mode 100644
index 7e9b510ff6..0000000000
--- a/keyboards/fortitude60/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2017 Danny Nguyen <danny@hexwire.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/gboards/gergo/keymaps/default/config.h b/keyboards/gboards/gergo/keymaps/default/config.h
deleted file mode 100644
index 3f59c932d3..0000000000
--- a/keyboards/gboards/gergo/keymaps/default/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#pragma once
-
diff --git a/keyboards/gboards/gergo/keymaps/germ/config.h b/keyboards/gboards/gergo/keymaps/germ/config.h
deleted file mode 100644
index 3f59c932d3..0000000000
--- a/keyboards/gboards/gergo/keymaps/germ/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#pragma once
-
diff --git a/keyboards/gboards/gergo/keymaps/gotham/config.h b/keyboards/gboards/gergo/keymaps/gotham/config.h
deleted file mode 100644
index 3f59c932d3..0000000000
--- a/keyboards/gboards/gergo/keymaps/gotham/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#pragma once
-
diff --git a/keyboards/converter/numeric_keypad_iie/keymaps/newbold/config.h b/keyboards/geonworks/ee_at/ee_at.c
index 667668959a..b2e6320851 100644
--- a/keyboards/converter/numeric_keypad_iie/keymaps/newbold/config.h
+++ b/keyboards/geonworks/ee_at/ee_at.c
@@ -1,4 +1,4 @@
-/* Copyright 2019 Adam Newbold <adam@neatnik.net>
+/* Copyright 2023 Yiancar-Designs
*
* 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
@@ -13,7 +13,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "quantum.h"
-#pragma once
+void led_init_ports(void) {
+ // Set our LED pins as open drain outputs
+ setPinOutputOpenDrain(LED_CAPS_LOCK_PIN);
+ setPinOutputOpenDrain(LED_NUM_LOCK_PIN);
+ setPinOutputOpenDrain(LED_SCROLL_LOCK_PIN);
+ setPinOutputOpenDrain(LED_KANA_PIN);
+ setPinOutputOpenDrain(A14);
+}
-// place overrides here
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ writePin(A14, !layer_state_cmp(state, 1));
+ return layer_state_set_user(state);
+}
diff --git a/keyboards/geonworks/ee_at/info.json b/keyboards/geonworks/ee_at/info.json
new file mode 100644
index 0000000000..803e0d3640
--- /dev/null
+++ b/keyboards/geonworks/ee_at/info.json
@@ -0,0 +1,499 @@
+{
+ "manufacturer": "Yiancar-Designs",
+ "keyboard_name": "EE-AT",
+ "maintainer": "Yiancar-Designs",
+ "bootloader": "stm32-dfu",
+ "bootmagic": {
+ "matrix": [0, 2]
+ },
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "indicators": {
+ "caps_lock": "B6",
+ "kana": "A13",
+ "num_lock": "B3",
+ "on_state": 0,
+ "scroll_lock": "A15"
+ },
+ "matrix_pins": {
+ "cols": ["B7", "A0", "A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"],
+ "rows": ["A2", "B9", "B8", "B5", "B4"]
+ },
+ "processor": "STM32F072",
+ "url": "https://yiancar-designs.com",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x5755",
+ "vid": "0x8968"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2.25, "y": 0},
+ {"matrix": [0, 3], "x": 3.25, "y": 0},
+ {"matrix": [0, 4], "x": 4.25, "y": 0},
+ {"matrix": [0, 5], "x": 5.25, "y": 0},
+ {"matrix": [0, 6], "x": 6.25, "y": 0},
+ {"matrix": [0, 7], "x": 7.25, "y": 0},
+ {"matrix": [0, 8], "x": 8.25, "y": 0},
+ {"matrix": [0, 9], "x": 9.25, "y": 0},
+ {"matrix": [0, 10], "x": 10.25, "y": 0},
+ {"matrix": [0, 11], "x": 11.25, "y": 0},
+ {"matrix": [0, 12], "x": 12.25, "y": 0},
+ {"matrix": [0, 13], "x": 13.25, "y": 0},
+ {"matrix": [0, 14], "x": 14.25, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [2, 14], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.5, "y": 0},
+ {"matrix": [0, 17], "x": 18.5, "y": 0},
+ {"matrix": [0, 18], "x": 19.5, "y": 0},
+ {"matrix": [0, 19], "x": 20.5, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
+ {"matrix": [1, 3], "x": 3.75, "y": 1},
+ {"matrix": [1, 4], "x": 4.75, "y": 1},
+ {"matrix": [1, 5], "x": 5.75, "y": 1},
+ {"matrix": [1, 6], "x": 6.75, "y": 1},
+ {"matrix": [1, 7], "x": 7.75, "y": 1},
+ {"matrix": [1, 8], "x": 8.75, "y": 1},
+ {"matrix": [1, 9], "x": 9.75, "y": 1},
+ {"matrix": [1, 10], "x": 10.75, "y": 1},
+ {"matrix": [1, 11], "x": 11.75, "y": 1},
+ {"matrix": [1, 12], "x": 12.75, "y": 1},
+ {"matrix": [1, 13], "x": 13.75, "y": 1},
+ {"matrix": [1, 14], "x": 14.75, "y": 1},
+ {"matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1},
+ {"matrix": [1, 17], "x": 18.5, "y": 1},
+ {"matrix": [1, 18], "x": 19.5, "y": 1},
+ {"matrix": [1, 19], "x": 20.5, "y": 1, "h": 2},
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
+ {"matrix": [2, 3], "x": 4, "y": 2},
+ {"matrix": [2, 4], "x": 5, "y": 2},
+ {"matrix": [2, 5], "x": 6, "y": 2},
+ {"matrix": [2, 6], "x": 7, "y": 2},
+ {"matrix": [2, 7], "x": 8, "y": 2},
+ {"matrix": [2, 8], "x": 9, "y": 2},
+ {"matrix": [2, 9], "x": 10, "y": 2},
+ {"matrix": [2, 10], "x": 11, "y": 2},
+ {"matrix": [2, 11], "x": 12, "y": 2},
+ {"matrix": [2, 12], "x": 13, "y": 2},
+ {"matrix": [2, 13], "x": 14, "y": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
+ {"matrix": [2, 16], "x": 17.5, "y": 2},
+ {"matrix": [2, 17], "x": 18.5, "y": 2},
+ {"matrix": [2, 18], "x": 19.5, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
+ {"matrix": [3, 4], "x": 4.5, "y": 3},
+ {"matrix": [3, 5], "x": 5.5, "y": 3},
+ {"matrix": [3, 6], "x": 6.5, "y": 3},
+ {"matrix": [3, 7], "x": 7.5, "y": 3},
+ {"matrix": [3, 8], "x": 8.5, "y": 3},
+ {"matrix": [3, 9], "x": 9.5, "y": 3},
+ {"matrix": [3, 10], "x": 10.5, "y": 3},
+ {"matrix": [3, 11], "x": 11.5, "y": 3},
+ {"matrix": [3, 12], "x": 12.5, "y": 3},
+ {"matrix": [3, 13], "x": 13.5, "y": 3},
+ {"matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
+ {"matrix": [3, 15], "x": 16.25, "y": 3},
+ {"matrix": [3, 16], "x": 17.5, "y": 3},
+ {"matrix": [3, 17], "x": 18.5, "y": 3},
+ {"matrix": [3, 18], "x": 19.5, "y": 3},
+ {"matrix": [4, 19], "x": 20.5, "y": 3, "h": 2},
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 3], "x": 3.75, "y": 4},
+ {"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
+ {"matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 14], "x": 14.75, "y": 4},
+ {"matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4, "w": 2},
+ {"matrix": [4, 18], "x": 19.5, "y": 4}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2.25, "y": 0},
+ {"matrix": [0, 3], "x": 3.25, "y": 0},
+ {"matrix": [0, 4], "x": 4.25, "y": 0},
+ {"matrix": [0, 5], "x": 5.25, "y": 0},
+ {"matrix": [0, 6], "x": 6.25, "y": 0},
+ {"matrix": [0, 7], "x": 7.25, "y": 0},
+ {"matrix": [0, 8], "x": 8.25, "y": 0},
+ {"matrix": [0, 9], "x": 9.25, "y": 0},
+ {"matrix": [0, 10], "x": 10.25, "y": 0},
+ {"matrix": [0, 11], "x": 11.25, "y": 0},
+ {"matrix": [0, 12], "x": 12.25, "y": 0},
+ {"matrix": [0, 13], "x": 13.25, "y": 0},
+ {"matrix": [0, 14], "x": 14.25, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0, "w": 2},
+ {"matrix": [0, 16], "x": 17.5, "y": 0},
+ {"matrix": [0, 17], "x": 18.5, "y": 0},
+ {"matrix": [0, 18], "x": 19.5, "y": 0},
+ {"matrix": [0, 19], "x": 20.5, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
+ {"matrix": [1, 3], "x": 3.75, "y": 1},
+ {"matrix": [1, 4], "x": 4.75, "y": 1},
+ {"matrix": [1, 5], "x": 5.75, "y": 1},
+ {"matrix": [1, 6], "x": 6.75, "y": 1},
+ {"matrix": [1, 7], "x": 7.75, "y": 1},
+ {"matrix": [1, 8], "x": 8.75, "y": 1},
+ {"matrix": [1, 9], "x": 9.75, "y": 1},
+ {"matrix": [1, 10], "x": 10.75, "y": 1},
+ {"matrix": [1, 11], "x": 11.75, "y": 1},
+ {"matrix": [1, 12], "x": 12.75, "y": 1},
+ {"matrix": [1, 13], "x": 13.75, "y": 1},
+ {"matrix": [1, 14], "x": 14.75, "y": 1},
+ {"matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1},
+ {"matrix": [1, 17], "x": 18.5, "y": 1},
+ {"matrix": [1, 18], "x": 19.5, "y": 1},
+ {"matrix": [1, 19], "x": 20.5, "y": 1, "h": 2},
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
+ {"matrix": [2, 3], "x": 4, "y": 2},
+ {"matrix": [2, 4], "x": 5, "y": 2},
+ {"matrix": [2, 5], "x": 6, "y": 2},
+ {"matrix": [2, 6], "x": 7, "y": 2},
+ {"matrix": [2, 7], "x": 8, "y": 2},
+ {"matrix": [2, 8], "x": 9, "y": 2},
+ {"matrix": [2, 9], "x": 10, "y": 2},
+ {"matrix": [2, 10], "x": 11, "y": 2},
+ {"matrix": [2, 11], "x": 12, "y": 2},
+ {"matrix": [2, 12], "x": 13, "y": 2},
+ {"matrix": [2, 13], "x": 14, "y": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
+ {"matrix": [2, 16], "x": 17.5, "y": 2},
+ {"matrix": [2, 17], "x": 18.5, "y": 2},
+ {"matrix": [2, 18], "x": 19.5, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
+ {"matrix": [3, 4], "x": 4.5, "y": 3},
+ {"matrix": [3, 5], "x": 5.5, "y": 3},
+ {"matrix": [3, 6], "x": 6.5, "y": 3},
+ {"matrix": [3, 7], "x": 7.5, "y": 3},
+ {"matrix": [3, 8], "x": 8.5, "y": 3},
+ {"matrix": [3, 9], "x": 9.5, "y": 3},
+ {"matrix": [3, 10], "x": 10.5, "y": 3},
+ {"matrix": [3, 11], "x": 11.5, "y": 3},
+ {"matrix": [3, 12], "x": 12.5, "y": 3},
+ {"matrix": [3, 13], "x": 13.5, "y": 3},
+ {"matrix": [3, 14], "x": 14.5, "y": 3, "w": 2.75},
+ {"matrix": [3, 16], "x": 17.5, "y": 3},
+ {"matrix": [3, 17], "x": 18.5, "y": 3},
+ {"matrix": [3, 18], "x": 19.5, "y": 3},
+ {"matrix": [4, 19], "x": 20.5, "y": 3, "h": 2},
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 3], "x": 3.75, "y": 4},
+ {"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
+ {"matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 14], "x": 14.75, "y": 4},
+ {"matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4, "w": 2},
+ {"matrix": [4, 18], "x": 19.5, "y": 4}
+ ]
+ },
+ "LAYOUT_ansi_split_bs": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2.25, "y": 0},
+ {"matrix": [0, 3], "x": 3.25, "y": 0},
+ {"matrix": [0, 4], "x": 4.25, "y": 0},
+ {"matrix": [0, 5], "x": 5.25, "y": 0},
+ {"matrix": [0, 6], "x": 6.25, "y": 0},
+ {"matrix": [0, 7], "x": 7.25, "y": 0},
+ {"matrix": [0, 8], "x": 8.25, "y": 0},
+ {"matrix": [0, 9], "x": 9.25, "y": 0},
+ {"matrix": [0, 10], "x": 10.25, "y": 0},
+ {"matrix": [0, 11], "x": 11.25, "y": 0},
+ {"matrix": [0, 12], "x": 12.25, "y": 0},
+ {"matrix": [0, 13], "x": 13.25, "y": 0},
+ {"matrix": [0, 14], "x": 14.25, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [2, 14], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.5, "y": 0},
+ {"matrix": [0, 17], "x": 18.5, "y": 0},
+ {"matrix": [0, 18], "x": 19.5, "y": 0},
+ {"matrix": [0, 19], "x": 20.5, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
+ {"matrix": [1, 3], "x": 3.75, "y": 1},
+ {"matrix": [1, 4], "x": 4.75, "y": 1},
+ {"matrix": [1, 5], "x": 5.75, "y": 1},
+ {"matrix": [1, 6], "x": 6.75, "y": 1},
+ {"matrix": [1, 7], "x": 7.75, "y": 1},
+ {"matrix": [1, 8], "x": 8.75, "y": 1},
+ {"matrix": [1, 9], "x": 9.75, "y": 1},
+ {"matrix": [1, 10], "x": 10.75, "y": 1},
+ {"matrix": [1, 11], "x": 11.75, "y": 1},
+ {"matrix": [1, 12], "x": 12.75, "y": 1},
+ {"matrix": [1, 13], "x": 13.75, "y": 1},
+ {"matrix": [1, 14], "x": 14.75, "y": 1},
+ {"matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1},
+ {"matrix": [1, 17], "x": 18.5, "y": 1},
+ {"matrix": [1, 18], "x": 19.5, "y": 1},
+ {"matrix": [1, 19], "x": 20.5, "y": 1, "h": 2},
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
+ {"matrix": [2, 3], "x": 4, "y": 2},
+ {"matrix": [2, 4], "x": 5, "y": 2},
+ {"matrix": [2, 5], "x": 6, "y": 2},
+ {"matrix": [2, 6], "x": 7, "y": 2},
+ {"matrix": [2, 7], "x": 8, "y": 2},
+ {"matrix": [2, 8], "x": 9, "y": 2},
+ {"matrix": [2, 9], "x": 10, "y": 2},
+ {"matrix": [2, 10], "x": 11, "y": 2},
+ {"matrix": [2, 11], "x": 12, "y": 2},
+ {"matrix": [2, 12], "x": 13, "y": 2},
+ {"matrix": [2, 13], "x": 14, "y": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
+ {"matrix": [2, 16], "x": 17.5, "y": 2},
+ {"matrix": [2, 17], "x": 18.5, "y": 2},
+ {"matrix": [2, 18], "x": 19.5, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
+ {"matrix": [3, 4], "x": 4.5, "y": 3},
+ {"matrix": [3, 5], "x": 5.5, "y": 3},
+ {"matrix": [3, 6], "x": 6.5, "y": 3},
+ {"matrix": [3, 7], "x": 7.5, "y": 3},
+ {"matrix": [3, 8], "x": 8.5, "y": 3},
+ {"matrix": [3, 9], "x": 9.5, "y": 3},
+ {"matrix": [3, 10], "x": 10.5, "y": 3},
+ {"matrix": [3, 11], "x": 11.5, "y": 3},
+ {"matrix": [3, 12], "x": 12.5, "y": 3},
+ {"matrix": [3, 13], "x": 13.5, "y": 3},
+ {"matrix": [3, 14], "x": 14.5, "y": 3, "w": 2.75},
+ {"matrix": [3, 16], "x": 17.5, "y": 3},
+ {"matrix": [3, 17], "x": 18.5, "y": 3},
+ {"matrix": [3, 18], "x": 19.5, "y": 3},
+ {"matrix": [4, 19], "x": 20.5, "y": 3, "h": 2},
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 3], "x": 3.75, "y": 4},
+ {"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
+ {"matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 14], "x": 14.75, "y": 4},
+ {"matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4, "w": 2},
+ {"matrix": [4, 18], "x": 19.5, "y": 4}
+ ]
+ },
+ "LAYOUT_ansi_split_bs_rshift": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2.25, "y": 0},
+ {"matrix": [0, 3], "x": 3.25, "y": 0},
+ {"matrix": [0, 4], "x": 4.25, "y": 0},
+ {"matrix": [0, 5], "x": 5.25, "y": 0},
+ {"matrix": [0, 6], "x": 6.25, "y": 0},
+ {"matrix": [0, 7], "x": 7.25, "y": 0},
+ {"matrix": [0, 8], "x": 8.25, "y": 0},
+ {"matrix": [0, 9], "x": 9.25, "y": 0},
+ {"matrix": [0, 10], "x": 10.25, "y": 0},
+ {"matrix": [0, 11], "x": 11.25, "y": 0},
+ {"matrix": [0, 12], "x": 12.25, "y": 0},
+ {"matrix": [0, 13], "x": 13.25, "y": 0},
+ {"matrix": [0, 14], "x": 14.25, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [2, 14], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.5, "y": 0},
+ {"matrix": [0, 17], "x": 18.5, "y": 0},
+ {"matrix": [0, 18], "x": 19.5, "y": 0},
+ {"matrix": [0, 19], "x": 20.5, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
+ {"matrix": [1, 3], "x": 3.75, "y": 1},
+ {"matrix": [1, 4], "x": 4.75, "y": 1},
+ {"matrix": [1, 5], "x": 5.75, "y": 1},
+ {"matrix": [1, 6], "x": 6.75, "y": 1},
+ {"matrix": [1, 7], "x": 7.75, "y": 1},
+ {"matrix": [1, 8], "x": 8.75, "y": 1},
+ {"matrix": [1, 9], "x": 9.75, "y": 1},
+ {"matrix": [1, 10], "x": 10.75, "y": 1},
+ {"matrix": [1, 11], "x": 11.75, "y": 1},
+ {"matrix": [1, 12], "x": 12.75, "y": 1},
+ {"matrix": [1, 13], "x": 13.75, "y": 1},
+ {"matrix": [1, 14], "x": 14.75, "y": 1},
+ {"matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1},
+ {"matrix": [1, 17], "x": 18.5, "y": 1},
+ {"matrix": [1, 18], "x": 19.5, "y": 1},
+ {"matrix": [1, 19], "x": 20.5, "y": 1, "h": 2},
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
+ {"matrix": [2, 3], "x": 4, "y": 2},
+ {"matrix": [2, 4], "x": 5, "y": 2},
+ {"matrix": [2, 5], "x": 6, "y": 2},
+ {"matrix": [2, 6], "x": 7, "y": 2},
+ {"matrix": [2, 7], "x": 8, "y": 2},
+ {"matrix": [2, 8], "x": 9, "y": 2},
+ {"matrix": [2, 9], "x": 10, "y": 2},
+ {"matrix": [2, 10], "x": 11, "y": 2},
+ {"matrix": [2, 11], "x": 12, "y": 2},
+ {"matrix": [2, 12], "x": 13, "y": 2},
+ {"matrix": [2, 13], "x": 14, "y": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
+ {"matrix": [2, 16], "x": 17.5, "y": 2},
+ {"matrix": [2, 17], "x": 18.5, "y": 2},
+ {"matrix": [2, 18], "x": 19.5, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
+ {"matrix": [3, 4], "x": 4.5, "y": 3},
+ {"matrix": [3, 5], "x": 5.5, "y": 3},
+ {"matrix": [3, 6], "x": 6.5, "y": 3},
+ {"matrix": [3, 7], "x": 7.5, "y": 3},
+ {"matrix": [3, 8], "x": 8.5, "y": 3},
+ {"matrix": [3, 9], "x": 9.5, "y": 3},
+ {"matrix": [3, 10], "x": 10.5, "y": 3},
+ {"matrix": [3, 11], "x": 11.5, "y": 3},
+ {"matrix": [3, 12], "x": 12.5, "y": 3},
+ {"matrix": [3, 13], "x": 13.5, "y": 3},
+ {"matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
+ {"matrix": [3, 15], "x": 16.25, "y": 3},
+ {"matrix": [3, 16], "x": 17.5, "y": 3},
+ {"matrix": [3, 17], "x": 18.5, "y": 3},
+ {"matrix": [3, 18], "x": 19.5, "y": 3},
+ {"matrix": [4, 19], "x": 20.5, "y": 3, "h": 2},
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 3], "x": 3.75, "y": 4},
+ {"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
+ {"matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 14], "x": 14.75, "y": 4},
+ {"matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4, "w": 2},
+ {"matrix": [4, 18], "x": 19.5, "y": 4}
+ ]
+ },
+ "LAYOUT_ansi_split_rshift": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2.25, "y": 0},
+ {"matrix": [0, 3], "x": 3.25, "y": 0},
+ {"matrix": [0, 4], "x": 4.25, "y": 0},
+ {"matrix": [0, 5], "x": 5.25, "y": 0},
+ {"matrix": [0, 6], "x": 6.25, "y": 0},
+ {"matrix": [0, 7], "x": 7.25, "y": 0},
+ {"matrix": [0, 8], "x": 8.25, "y": 0},
+ {"matrix": [0, 9], "x": 9.25, "y": 0},
+ {"matrix": [0, 10], "x": 10.25, "y": 0},
+ {"matrix": [0, 11], "x": 11.25, "y": 0},
+ {"matrix": [0, 12], "x": 12.25, "y": 0},
+ {"matrix": [0, 13], "x": 13.25, "y": 0},
+ {"matrix": [0, 14], "x": 14.25, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0, "w": 2},
+ {"matrix": [0, 16], "x": 17.5, "y": 0},
+ {"matrix": [0, 17], "x": 18.5, "y": 0},
+ {"matrix": [0, 18], "x": 19.5, "y": 0},
+ {"matrix": [0, 19], "x": 20.5, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
+ {"matrix": [1, 3], "x": 3.75, "y": 1},
+ {"matrix": [1, 4], "x": 4.75, "y": 1},
+ {"matrix": [1, 5], "x": 5.75, "y": 1},
+ {"matrix": [1, 6], "x": 6.75, "y": 1},
+ {"matrix": [1, 7], "x": 7.75, "y": 1},
+ {"matrix": [1, 8], "x": 8.75, "y": 1},
+ {"matrix": [1, 9], "x": 9.75, "y": 1},
+ {"matrix": [1, 10], "x": 10.75, "y": 1},
+ {"matrix": [1, 11], "x": 11.75, "y": 1},
+ {"matrix": [1, 12], "x": 12.75, "y": 1},
+ {"matrix": [1, 13], "x": 13.75, "y": 1},
+ {"matrix": [1, 14], "x": 14.75, "y": 1},
+ {"matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1},
+ {"matrix": [1, 17], "x": 18.5, "y": 1},
+ {"matrix": [1, 18], "x": 19.5, "y": 1},
+ {"matrix": [1, 19], "x": 20.5, "y": 1, "h": 2},
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
+ {"matrix": [2, 3], "x": 4, "y": 2},
+ {"matrix": [2, 4], "x": 5, "y": 2},
+ {"matrix": [2, 5], "x": 6, "y": 2},
+ {"matrix": [2, 6], "x": 7, "y": 2},
+ {"matrix": [2, 7], "x": 8, "y": 2},
+ {"matrix": [2, 8], "x": 9, "y": 2},
+ {"matrix": [2, 9], "x": 10, "y": 2},
+ {"matrix": [2, 10], "x": 11, "y": 2},
+ {"matrix": [2, 11], "x": 12, "y": 2},
+ {"matrix": [2, 12], "x": 13, "y": 2},
+ {"matrix": [2, 13], "x": 14, "y": 2},
+ {"matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
+ {"matrix": [2, 16], "x": 17.5, "y": 2},
+ {"matrix": [2, 17], "x": 18.5, "y": 2},
+ {"matrix": [2, 18], "x": 19.5, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
+ {"matrix": [3, 4], "x": 4.5, "y": 3},
+ {"matrix": [3, 5], "x": 5.5, "y": 3},
+ {"matrix": [3, 6], "x": 6.5, "y": 3},
+ {"matrix": [3, 7], "x": 7.5, "y": 3},
+ {"matrix": [3, 8], "x": 8.5, "y": 3},
+ {"matrix": [3, 9], "x": 9.5, "y": 3},
+ {"matrix": [3, 10], "x": 10.5, "y": 3},
+ {"matrix": [3, 11], "x": 11.5, "y": 3},
+ {"matrix": [3, 12], "x": 12.5, "y": 3},
+ {"matrix": [3, 13], "x": 13.5, "y": 3},
+ {"matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
+ {"matrix": [3, 15], "x": 16.25, "y": 3},
+ {"matrix": [3, 16], "x": 17.5, "y": 3},
+ {"matrix": [3, 17], "x": 18.5, "y": 3},
+ {"matrix": [3, 18], "x": 19.5, "y": 3},
+ {"matrix": [4, 19], "x": 20.5, "y": 3, "h": 2},
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 3], "x": 3.75, "y": 4},
+ {"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
+ {"matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
+ {"matrix": [4, 14], "x": 14.75, "y": 4},
+ {"matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4, "w": 2},
+ {"matrix": [4, 18], "x": 19.5, "y": 4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/geonworks/ee_at/keymaps/default/keymap.c b/keyboards/geonworks/ee_at/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f0eb9ba7a8
--- /dev/null
+++ b/keyboards/geonworks/ee_at/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2023 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, QK_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_NUM, KC_PMNS, KC_PSLS, KC_PAST,
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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, MO(1), KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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/geonworks/ee_at/keymaps/via/keymap.c b/keyboards/geonworks/ee_at/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f0eb9ba7a8
--- /dev/null
+++ b/keyboards/geonworks/ee_at/keymaps/via/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2023 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, QK_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_NUM, KC_PMNS, KC_PSLS, KC_PAST,
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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, MO(1), KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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/w1_at/keymaps/via/rules.mk b/keyboards/geonworks/ee_at/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/w1_at/keymaps/via/rules.mk
+++ b/keyboards/geonworks/ee_at/keymaps/via/rules.mk
diff --git a/keyboards/geonworks/ee_at/matrix_diagram.md b/keyboards/geonworks/ee_at/matrix_diagram.md
new file mode 100644
index 0000000000..382487564d
--- /dev/null
+++ b/keyboards/geonworks/ee_at/matrix_diagram.md
@@ -0,0 +1,21 @@
+# Matrix Diagram for Yiancar-Designs EE-AT
+
+```
+ ┌───────┐
+ 2u Backspace │0F │
+ └───────┘
+┌───┬───┐┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┬───┐
+│00 │01 ││02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │2E ││0G │0H │0I │0J │
+├───┼───┤├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┼───┤
+│10 │11 ││12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F ││1G │1H │1I │ │
+├───┼───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┼───┼───┤1J │
+│20 │21 ││22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2F ││2G │2H │2I │ │
+├───┼───┤├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤├───┼───┼───┼───┤
+│30 │31 ││32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │3F ││3G │3H │3I │ │
+├───┼───┤├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤├───┼───┼───┤4J │
+│40 │41 ││42 │43 │44 │48 │4D │4E │4F ││4G │4H │4I │ │
+└───┴───┘└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┴───┘
+ ┌──────────┐
+ 2.75u RShift │3E │
+ └──────────┘
+```
diff --git a/keyboards/geonworks/ee_at/readme.md b/keyboards/geonworks/ee_at/readme.md
new file mode 100644
index 0000000000..0c7c8d1926
--- /dev/null
+++ b/keyboards/geonworks/ee_at/readme.md
@@ -0,0 +1,32 @@
+# EE-AT
+
+This is a standard weird layout PCB, now with Hotswap. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A keyboard with STM32F072CB
+* Hardware Availability: https://geon.works/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make geonworks/ee_at: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).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or CLI (`make geonworks/ee_at:<keymap>:flash`)
diff --git a/keyboards/geonworks/ee_at/rules.mk b/keyboards/geonworks/ee_at/rules.mk
new file mode 100644
index 0000000000..0ab54aaaf7
--- /dev/null
+++ b/keyboards/geonworks/ee_at/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
diff --git a/keyboards/w1_at/info.json b/keyboards/geonworks/w1_at/info.json
index 896e523c83..8b7991c03d 100644
--- a/keyboards/w1_at/info.json
+++ b/keyboards/geonworks/w1_at/info.json
@@ -1,36 +1,43 @@
{
- "keyboard_name": "W1-AT",
"manufacturer": "Yiancar-Designs",
- "url": "https://yiancar-designs.com",
+ "keyboard_name": "W1-AT",
"maintainer": "Yiancar-Designs",
- "usb": {
- "vid": "0x8968",
- "pid": "0x5754",
- "device_version": "0.0.1"
- },
- "matrix_pins": {
- "cols": ["B7", "A0", "A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"],
- "rows": ["A2", "B9", "B8", "B5", "B4"]
+ "bootloader": "stm32-dfu",
+ "bootmagic": {
+ "matrix": [0, 2]
},
"diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
"indicators": {
"caps_lock": "B6",
- "num_lock": "B3",
- "scroll_lock": "A15",
"kana": "A13",
- "on_state": 0
+ "num_lock": "B3",
+ "on_state": 0,
+ "scroll_lock": "A15"
},
- "bootmagic": {
- "matrix": [0, 2]
+ "matrix_pins": {
+ "cols": ["B7", "A0", "A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"],
+ "rows": ["A2", "B9", "B8", "B5", "B4"]
},
"processor": "STM32F072",
- "bootloader": "stm32-dfu",
+ "url": "https://yiancar-designs.com",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x5754",
+ "vid": "0x8968"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F2", "matrix": [0, 1], "x": 1, "y": 0},
-
{"label": "Esc", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "1", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "2", "matrix": [0, 4], "x": 4.25, "y": 0},
@@ -46,15 +53,12 @@
{"label": "=", "matrix": [0, 14], "x": 14.25, "y": 0},
{"label": "Backspace", "matrix": [0, 15], "x": 15.25, "y": 0},
{"label": "Delete", "matrix": [2, 14], "x": 16.25, "y": 0},
-
{"label": "Num Lock", "matrix": [0, 16], "x": 17.5, "y": 0},
{"label": "-", "matrix": [0, 17], "x": 18.5, "y": 0},
{"label": "/", "matrix": [0, 18], "x": 19.5, "y": 0},
{"label": "*", "matrix": [0, 19], "x": 20.5, "y": 0},
-
{"label": "F3", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "F4", "matrix": [1, 1], "x": 1, "y": 1},
-
{"label": "Tab", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "W", "matrix": [1, 4], "x": 4.75, "y": 1},
@@ -69,15 +73,12 @@
{"label": "[", "matrix": [1, 13], "x": 13.75, "y": 1},
{"label": "]", "matrix": [1, 14], "x": 14.75, "y": 1},
{"label": "\\", "matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
-
{"label": "7", "matrix": [1, 16], "x": 17.5, "y": 1},
{"label": "8", "matrix": [1, 17], "x": 18.5, "y": 1},
{"label": "9", "matrix": [1, 18], "x": 19.5, "y": 1},
{"label": "+", "matrix": [1, 19], "x": 20.5, "y": 1},
-
{"label": "F5", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "F6", "matrix": [2, 1], "x": 1, "y": 2},
-
{"label": "Caps Lock", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "S", "matrix": [2, 4], "x": 5, "y": 2},
@@ -91,15 +92,12 @@
{"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "'", "matrix": [2, 13], "x": 14, "y": 2},
{"label": "Enter", "matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
-
{"label": "4", "matrix": [2, 16], "x": 17.5, "y": 2},
{"label": "5", "matrix": [2, 17], "x": 18.5, "y": 2},
{"label": "6", "matrix": [2, 18], "x": 19.5, "y": 2},
{"label": "-", "matrix": [2, 19], "x": 20.5, "y": 2},
-
{"label": "F7", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "F8", "matrix": [3, 1], "x": 1, "y": 3},
-
{"label": "Shift", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
{"label": "\\", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "Z", "matrix": [3, 4], "x": 4.5, "y": 3},
@@ -114,21 +112,17 @@
{"label": "/", "matrix": [3, 13], "x": 13.5, "y": 3},
{"label": "Shift", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 15], "x": 16.25, "y": 3},
-
{"label": "1", "matrix": [3, 16], "x": 17.5, "y": 3},
{"label": "2", "matrix": [3, 17], "x": 18.5, "y": 3},
{"label": "3", "matrix": [3, 18], "x": 19.5, "y": 3},
{"label": "-", "matrix": [3, 19], "x": 20.5, "y": 3},
-
{"label": "F9", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "F10", "matrix": [4, 1], "x": 1, "y": 4},
-
{"label": "Ctrl", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
{"label": "Ctrl", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
-
{"label": "0", "matrix": [4, 16], "x": 17.5, "y": 4},
{"label": "00", "matrix": [4, 17], "x": 18.5, "y": 4},
{"label": ".", "matrix": [4, 18], "x": 19.5, "y": 4},
@@ -139,7 +133,6 @@
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F2", "matrix": [0, 1], "x": 1, "y": 0},
-
{"label": "Esc", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "1", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "2", "matrix": [0, 4], "x": 4.25, "y": 0},
@@ -154,15 +147,12 @@
{"label": "-", "matrix": [0, 13], "x": 13.25, "y": 0},
{"label": "=", "matrix": [0, 14], "x": 14.25, "y": 0},
{"label": "Backspace", "matrix": [0, 15], "x": 15.25, "y": 0, "w": 2},
-
{"label": "Num Lock", "matrix": [0, 16], "x": 17.5, "y": 0},
{"label": "-", "matrix": [0, 17], "x": 18.5, "y": 0},
{"label": "/", "matrix": [0, 18], "x": 19.5, "y": 0},
{"label": "*", "matrix": [0, 19], "x": 20.5, "y": 0},
-
{"label": "F3", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "F4", "matrix": [1, 1], "x": 1, "y": 1},
-
{"label": "Tab", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "W", "matrix": [1, 4], "x": 4.75, "y": 1},
@@ -177,15 +167,12 @@
{"label": "[", "matrix": [1, 13], "x": 13.75, "y": 1},
{"label": "]", "matrix": [1, 14], "x": 14.75, "y": 1},
{"label": "\\", "matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
-
{"label": "7", "matrix": [1, 16], "x": 17.5, "y": 1},
{"label": "8", "matrix": [1, 17], "x": 18.5, "y": 1},
{"label": "9", "matrix": [1, 18], "x": 19.5, "y": 1},
{"label": "+", "matrix": [1, 19], "x": 20.5, "y": 1},
-
{"label": "F5", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "F6", "matrix": [2, 1], "x": 1, "y": 2},
-
{"label": "Caps Lock", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "S", "matrix": [2, 4], "x": 5, "y": 2},
@@ -199,15 +186,12 @@
{"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "'", "matrix": [2, 13], "x": 14, "y": 2},
{"label": "Enter", "matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
-
{"label": "4", "matrix": [2, 16], "x": 17.5, "y": 2},
{"label": "5", "matrix": [2, 17], "x": 18.5, "y": 2},
{"label": "6", "matrix": [2, 18], "x": 19.5, "y": 2},
{"label": "-", "matrix": [2, 19], "x": 20.5, "y": 2},
-
{"label": "F7", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "F8", "matrix": [3, 1], "x": 1, "y": 3},
-
{"label": "Shift", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 4], "x": 4.5, "y": 3},
{"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
@@ -220,21 +204,17 @@
{"label": ".", "matrix": [3, 12], "x": 12.5, "y": 3},
{"label": "/", "matrix": [3, 13], "x": 13.5, "y": 3},
{"label": "Shift", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 2.75},
-
{"label": "1", "matrix": [3, 16], "x": 17.5, "y": 3},
{"label": "2", "matrix": [3, 17], "x": 18.5, "y": 3},
{"label": "3", "matrix": [3, 18], "x": 19.5, "y": 3},
{"label": "-", "matrix": [3, 19], "x": 20.5, "y": 3},
-
{"label": "F9", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "F10", "matrix": [4, 1], "x": 1, "y": 4},
-
{"label": "Ctrl", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
{"label": "Ctrl", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
-
{"label": "0", "matrix": [4, 16], "x": 17.5, "y": 4},
{"label": "00", "matrix": [4, 17], "x": 18.5, "y": 4},
{"label": ".", "matrix": [4, 18], "x": 19.5, "y": 4},
@@ -245,7 +225,6 @@
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F2", "matrix": [0, 1], "x": 1, "y": 0},
-
{"label": "Esc", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "1", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "2", "matrix": [0, 4], "x": 4.25, "y": 0},
@@ -261,15 +240,12 @@
{"label": "=", "matrix": [0, 14], "x": 14.25, "y": 0},
{"label": "Backspace", "matrix": [0, 15], "x": 15.25, "y": 0},
{"label": "Delete", "matrix": [2, 14], "x": 16.25, "y": 0},
-
{"label": "Num Lock", "matrix": [0, 16], "x": 17.5, "y": 0},
{"label": "-", "matrix": [0, 17], "x": 18.5, "y": 0},
{"label": "/", "matrix": [0, 18], "x": 19.5, "y": 0},
{"label": "*", "matrix": [0, 19], "x": 20.5, "y": 0},
-
{"label": "F3", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "F4", "matrix": [1, 1], "x": 1, "y": 1},
-
{"label": "Tab", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "W", "matrix": [1, 4], "x": 4.75, "y": 1},
@@ -284,15 +260,12 @@
{"label": "[", "matrix": [1, 13], "x": 13.75, "y": 1},
{"label": "]", "matrix": [1, 14], "x": 14.75, "y": 1},
{"label": "\\", "matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
-
{"label": "7", "matrix": [1, 16], "x": 17.5, "y": 1},
{"label": "8", "matrix": [1, 17], "x": 18.5, "y": 1},
{"label": "9", "matrix": [1, 18], "x": 19.5, "y": 1},
{"label": "+", "matrix": [1, 19], "x": 20.5, "y": 1},
-
{"label": "F5", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "F6", "matrix": [2, 1], "x": 1, "y": 2},
-
{"label": "Caps Lock", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "S", "matrix": [2, 4], "x": 5, "y": 2},
@@ -306,15 +279,12 @@
{"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "'", "matrix": [2, 13], "x": 14, "y": 2},
{"label": "Enter", "matrix": [2, 15], "x": 15, "y": 2, "w": 2.25},
-
{"label": "4", "matrix": [2, 16], "x": 17.5, "y": 2},
{"label": "5", "matrix": [2, 17], "x": 18.5, "y": 2},
{"label": "6", "matrix": [2, 18], "x": 19.5, "y": 2},
{"label": "-", "matrix": [2, 19], "x": 20.5, "y": 2},
-
{"label": "F7", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "F8", "matrix": [3, 1], "x": 1, "y": 3},
-
{"label": "Shift", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 4], "x": 4.5, "y": 3},
{"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
@@ -328,21 +298,17 @@
{"label": "/", "matrix": [3, 13], "x": 13.5, "y": 3},
{"label": "Shift", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 15], "x": 16.25, "y": 3},
-
{"label": "1", "matrix": [3, 16], "x": 17.5, "y": 3},
{"label": "2", "matrix": [3, 17], "x": 18.5, "y": 3},
{"label": "3", "matrix": [3, 18], "x": 19.5, "y": 3},
{"label": "-", "matrix": [3, 19], "x": 20.5, "y": 3},
-
{"label": "F9", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "F10", "matrix": [4, 1], "x": 1, "y": 4},
-
{"label": "Ctrl", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
{"label": "Ctrl", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
-
{"label": "0", "matrix": [4, 16], "x": 17.5, "y": 4},
{"label": "00", "matrix": [4, 17], "x": 18.5, "y": 4},
{"label": ".", "matrix": [4, 18], "x": 19.5, "y": 4},
@@ -353,7 +319,6 @@
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F2", "matrix": [0, 1], "x": 1, "y": 0},
-
{"label": "Esc", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "1", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "2", "matrix": [0, 4], "x": 4.25, "y": 0},
@@ -368,15 +333,12 @@
{"label": "-", "matrix": [0, 13], "x": 13.25, "y": 0},
{"label": "=", "matrix": [0, 14], "x": 14.25, "y": 0},
{"label": "Backspace", "matrix": [0, 15], "x": 15.25, "y": 0, "w": 2},
-
{"label": "Num Lock", "matrix": [0, 16], "x": 17.5, "y": 0},
{"label": "-", "matrix": [0, 17], "x": 18.5, "y": 0},
{"label": "/", "matrix": [0, 18], "x": 19.5, "y": 0},
{"label": "*", "matrix": [0, 19], "x": 20.5, "y": 0},
-
{"label": "F3", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "F4", "matrix": [1, 1], "x": 1, "y": 1},
-
{"label": "Tab", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "W", "matrix": [1, 4], "x": 4.75, "y": 1},
@@ -390,15 +352,12 @@
{"label": "P", "matrix": [1, 12], "x": 12.75, "y": 1},
{"label": "[", "matrix": [1, 13], "x": 13.75, "y": 1},
{"label": "]", "matrix": [1, 14], "x": 14.75, "y": 1},
-
{"label": "7", "matrix": [1, 16], "x": 17.5, "y": 1},
{"label": "8", "matrix": [1, 17], "x": 18.5, "y": 1},
{"label": "9", "matrix": [1, 18], "x": 19.5, "y": 1},
{"label": "+", "matrix": [1, 19], "x": 20.5, "y": 1},
-
{"label": "F5", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "F6", "matrix": [2, 1], "x": 1, "y": 2},
-
{"label": "Caps Lock", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "S", "matrix": [2, 4], "x": 5, "y": 2},
@@ -413,15 +372,12 @@
{"label": "'", "matrix": [2, 13], "x": 14, "y": 2},
{"label": "#", "matrix": [1, 15], "x": 15, "y": 2},
{"label": "Enter", "matrix": [2, 15], "x": 16, "y": 1, "w": 1.25, "h": 2},
-
{"label": "4", "matrix": [2, 16], "x": 17.5, "y": 2},
{"label": "5", "matrix": [2, 17], "x": 18.5, "y": 2},
{"label": "6", "matrix": [2, 18], "x": 19.5, "y": 2},
{"label": "-", "matrix": [2, 19], "x": 20.5, "y": 2},
-
{"label": "F7", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "F8", "matrix": [3, 1], "x": 1, "y": 3},
-
{"label": "Shift", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
{"label": "\\", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "Z", "matrix": [3, 4], "x": 4.5, "y": 3},
@@ -435,21 +391,17 @@
{"label": ".", "matrix": [3, 12], "x": 12.5, "y": 3},
{"label": "/", "matrix": [3, 13], "x": 13.5, "y": 3},
{"label": "Shift", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 2.75},
-
{"label": "1", "matrix": [3, 16], "x": 17.5, "y": 3},
{"label": "2", "matrix": [3, 17], "x": 18.5, "y": 3},
{"label": "3", "matrix": [3, 18], "x": 19.5, "y": 3},
{"label": "-", "matrix": [3, 19], "x": 20.5, "y": 3},
-
{"label": "F9", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "F10", "matrix": [4, 1], "x": 1, "y": 4},
-
{"label": "Ctrl", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
{"label": "Ctrl", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
-
{"label": "0", "matrix": [4, 16], "x": 17.5, "y": 4},
{"label": "00", "matrix": [4, 17], "x": 18.5, "y": 4},
{"label": ".", "matrix": [4, 18], "x": 19.5, "y": 4},
@@ -460,7 +412,6 @@
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F2", "matrix": [0, 1], "x": 1, "y": 0},
-
{"label": "Esc", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "1", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "2", "matrix": [0, 4], "x": 4.25, "y": 0},
@@ -476,15 +427,12 @@
{"label": "=", "matrix": [0, 14], "x": 14.25, "y": 0},
{"label": "Backspace", "matrix": [0, 15], "x": 15.25, "y": 0},
{"label": "Delete", "matrix": [2, 14], "x": 16.25, "y": 0},
-
{"label": "Num Lock", "matrix": [0, 16], "x": 17.5, "y": 0},
{"label": "-", "matrix": [0, 17], "x": 18.5, "y": 0},
{"label": "/", "matrix": [0, 18], "x": 19.5, "y": 0},
{"label": "*", "matrix": [0, 19], "x": 20.5, "y": 0},
-
{"label": "F3", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "F4", "matrix": [1, 1], "x": 1, "y": 1},
-
{"label": "Tab", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "W", "matrix": [1, 4], "x": 4.75, "y": 1},
@@ -498,15 +446,12 @@
{"label": "P", "matrix": [1, 12], "x": 12.75, "y": 1},
{"label": "[", "matrix": [1, 13], "x": 13.75, "y": 1},
{"label": "]", "matrix": [1, 14], "x": 14.75, "y": 1},
-
{"label": "7", "matrix": [1, 16], "x": 17.5, "y": 1},
{"label": "8", "matrix": [1, 17], "x": 18.5, "y": 1},
{"label": "9", "matrix": [1, 18], "x": 19.5, "y": 1},
{"label": "+", "matrix": [1, 19], "x": 20.5, "y": 1},
-
{"label": "F5", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "F6", "matrix": [2, 1], "x": 1, "y": 2},
-
{"label": "Caps Lock", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "S", "matrix": [2, 4], "x": 5, "y": 2},
@@ -521,15 +466,12 @@
{"label": "'", "matrix": [2, 13], "x": 14, "y": 2},
{"label": "#", "matrix": [1, 15], "x": 15, "y": 2},
{"label": "Enter", "matrix": [2, 15], "x": 16, "y": 1, "w": 1.25, "h": 2},
-
{"label": "4", "matrix": [2, 16], "x": 17.5, "y": 2},
{"label": "5", "matrix": [2, 17], "x": 18.5, "y": 2},
{"label": "6", "matrix": [2, 18], "x": 19.5, "y": 2},
{"label": "-", "matrix": [2, 19], "x": 20.5, "y": 2},
-
{"label": "F7", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "F8", "matrix": [3, 1], "x": 1, "y": 3},
-
{"label": "Shift", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
{"label": "\\", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "Z", "matrix": [3, 4], "x": 4.5, "y": 3},
@@ -544,21 +486,17 @@
{"label": "/", "matrix": [3, 13], "x": 13.5, "y": 3},
{"label": "Shift", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 15], "x": 16.25, "y": 3},
-
{"label": "1", "matrix": [3, 16], "x": 17.5, "y": 3},
{"label": "2", "matrix": [3, 17], "x": 18.5, "y": 3},
{"label": "3", "matrix": [3, 18], "x": 19.5, "y": 3},
{"label": "-", "matrix": [3, 19], "x": 20.5, "y": 3},
-
{"label": "F9", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "F10", "matrix": [4, 1], "x": 1, "y": 4},
-
{"label": "Ctrl", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 8], "x": 6.25, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
{"label": "Ctrl", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
-
{"label": "0", "matrix": [4, 16], "x": 17.5, "y": 4},
{"label": "00", "matrix": [4, 17], "x": 18.5, "y": 4},
{"label": ".", "matrix": [4, 18], "x": 19.5, "y": 4},
@@ -566,4 +504,4 @@
]
}
}
-}
+} \ No newline at end of file
diff --git a/keyboards/w1_at/keymaps/default/keymap.c b/keyboards/geonworks/w1_at/keymaps/default/keymap.c
index 7c190b73d6..f69fa8a426 100644
--- a/keyboards/w1_at/keymaps/default/keymap.c
+++ b/keyboards/geonworks/w1_at/keymaps/default/keymap.c
@@ -46,4 +46,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return true;
-} \ No newline at end of file
+}
diff --git a/keyboards/w1_at/keymaps/via/keymap.c b/keyboards/geonworks/w1_at/keymaps/via/keymap.c
index ce3b6aa4bd..ce3b6aa4bd 100644
--- a/keyboards/w1_at/keymaps/via/keymap.c
+++ b/keyboards/geonworks/w1_at/keymaps/via/keymap.c
diff --git a/keyboards/geonworks/w1_at/keymaps/via/rules.mk b/keyboards/geonworks/w1_at/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/geonworks/w1_at/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/w1_at/keymaps/zq/keymap.c b/keyboards/geonworks/w1_at/keymaps/zq/keymap.c
index eba9aedb8f..eba9aedb8f 100644
--- a/keyboards/w1_at/keymaps/zq/keymap.c
+++ b/keyboards/geonworks/w1_at/keymaps/zq/keymap.c
diff --git a/keyboards/w1_at/keymaps/zq/readme.md b/keyboards/geonworks/w1_at/keymaps/zq/readme.md
index 103130b161..103130b161 100644
--- a/keyboards/w1_at/keymaps/zq/readme.md
+++ b/keyboards/geonworks/w1_at/keymaps/zq/readme.md
diff --git a/keyboards/era/klein/keymaps/via/rules.mk b/keyboards/geonworks/w1_at/keymaps/zq/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/era/klein/keymaps/via/rules.mk
+++ b/keyboards/geonworks/w1_at/keymaps/zq/rules.mk
diff --git a/keyboards/w1_at/matrix_diagram.md b/keyboards/geonworks/w1_at/matrix_diagram.md
index 6118e90fe8..6118e90fe8 100644
--- a/keyboards/w1_at/matrix_diagram.md
+++ b/keyboards/geonworks/w1_at/matrix_diagram.md
diff --git a/keyboards/w1_at/readme.md b/keyboards/geonworks/w1_at/readme.md
index 7608e72f76..16296ef6d6 100644
--- a/keyboards/w1_at/readme.md
+++ b/keyboards/geonworks/w1_at/readme.md
@@ -3,7 +3,7 @@
This is a standard weird layout PCB, best build with a 10U spacebar. It supports VIA.
* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
-* Hardware Supported: A TKL keyboard with STM32F072CB
+* Hardware Supported: A keyboard with STM32F072CB
* Hardware Availability: https://geon.works/
## Instructions
@@ -12,7 +12,7 @@ This is a standard weird layout PCB, best build with a 10U spacebar. It supports
Make example for this keyboard (after setting up your build environment):
- make w1_at:default
+ make geonworks/w1_at: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).
@@ -29,4 +29,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
- Unplug
- Hold Escape
- Plug In
-- Flash using QMK Toolbox or CLI (`make w1_at:<keymap>:flash`)
+- Flash using QMK Toolbox or CLI (`make geonworks/w1_at:<keymap>:flash`)
diff --git a/keyboards/geonworks/w1_at/rules.mk b/keyboards/geonworks/w1_at/rules.mk
new file mode 100644
index 0000000000..0ab54aaaf7
--- /dev/null
+++ b/keyboards/geonworks/w1_at/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
diff --git a/keyboards/w1_at/w1_at.c b/keyboards/geonworks/w1_at/w1_at.c
index d4c4ce932a..9858561bc5 100644
--- a/keyboards/w1_at/w1_at.c
+++ b/keyboards/geonworks/w1_at/w1_at.c
@@ -13,18 +13,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
- #include "quantum.h"
+#include "quantum.h"
void led_init_ports(void) {
// Set our LED pins as open drain outputs
- palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
- palSetLineMode(LED_NUM_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
- palSetLineMode(LED_SCROLL_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
- palSetLineMode(LED_KANA_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
- palSetLineMode(A14, PAL_MODE_OUTPUT_OPENDRAIN);
+ setPinOutputOpenDrain(LED_CAPS_LOCK_PIN);
+ setPinOutputOpenDrain(LED_NUM_LOCK_PIN);
+ setPinOutputOpenDrain(LED_SCROLL_LOCK_PIN);
+ setPinOutputOpenDrain(LED_KANA_PIN);
+ setPinOutputOpenDrain(A14);
}
layer_state_t layer_state_set_kb(layer_state_t state) {
writePin(A14, !layer_state_cmp(state, 1));
return layer_state_set_user(state);
-} \ No newline at end of file
+}
diff --git a/keyboards/hadron/ver3/keymaps/sebaslayout/config.h b/keyboards/hadron/ver3/keymaps/sebaslayout/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/hadron/ver3/keymaps/sebaslayout/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/handwired/6macro/keymaps/default/config.h b/keyboards/handwired/6macro/keymaps/default/config.h
deleted file mode 100644
index 64ba57443f..0000000000
--- a/keyboards/handwired/6macro/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2019 joaofbmaia
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
diff --git a/keyboards/handwired/6macro/keymaps/osu/config.h b/keyboards/handwired/6macro/keymaps/osu/config.h
deleted file mode 100644
index 64ba57443f..0000000000
--- a/keyboards/handwired/6macro/keymaps/osu/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2019 joaofbmaia
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
diff --git a/keyboards/handwired/hnah40rgb/keymaps/default/config.h b/keyboards/handwired/hnah40rgb/keymaps/default/config.h
deleted file mode 100644
index aa9325a59d..0000000000
--- a/keyboards/handwired/hnah40rgb/keymaps/default/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 HnahKB
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/rules.mk b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/rules.mk
deleted file mode 100644
index 916b1154bd..0000000000
--- a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-# Build Overrides
diff --git a/keyboards/handwired/steamvan/keymaps/jmdaly/config.h b/keyboards/handwired/steamvan/keymaps/jmdaly/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/handwired/steamvan/keymaps/jmdaly/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h b/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h
deleted file mode 100644
index 779e5a858f..0000000000
--- a/keyboards/ibm/model_m/teensypp/keymaps/iw0rm3r/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 iw0rm3r
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h b/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h
deleted file mode 100644
index 0453a72580..0000000000
--- a/keyboards/ibm/model_m_122/ibm122m/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* 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 <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides below
diff --git a/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h b/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h
deleted file mode 100644
index bf338e196d..0000000000
--- a/keyboards/ibm/model_m_122/ibm122m/keymaps/lukaus/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* 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 <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-// place overrides here
-
diff --git a/keyboards/idobao/id75/keymaps/revok75/config.h b/keyboards/idobao/id75/keymaps/revok75/config.h
deleted file mode 100644
index f5c4659880..0000000000
--- a/keyboards/idobao/id75/keymaps/revok75/config.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
diff --git a/keyboards/idobao/id75/keymaps/revok75/rules.mk b/keyboards/idobao/id75/keymaps/revok75/rules.mk
deleted file mode 100644
index 7efceba50a..0000000000
--- a/keyboards/idobao/id75/keymaps/revok75/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/keyboards/idobao/id75/keymaps/xaceofspaidsx/config.h b/keyboards/idobao/id75/keymaps/xaceofspaidsx/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/idobao/id75/keymaps/xaceofspaidsx/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/input_club/k_type/is31fl3733-dual.c b/keyboards/input_club/k_type/is31fl3733-dual.c
index e471cf0b71..385416439a 100644
--- a/keyboards/input_club/k_type/is31fl3733-dual.c
+++ b/keyboards/input_club/k_type/is31fl3733-dual.c
@@ -60,11 +60,10 @@
# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
+uint8_t i2c_transfer_buffer[20];
// These buffers match the IS31FL3733 PWM registers.
-// The control buffers match the PG0 LED On/Off registers.
+// The control buffers match the page 0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
// buffers and the transfers in is31fl3733_write_pwm_buffer() but it's
@@ -77,47 +76,52 @@ bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT]
bool is31fl3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t data) {
// If the transaction fails function returns false.
- g_twi_transfer_buffer[0] = reg;
- g_twi_transfer_buffer[1] = data;
+ i2c_transfer_buffer[0] = reg;
+ i2c_transfer_buffer[1] = data;
#if IS31FL3733_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, i2c_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
#endif
return true;
}
+void is31fl3733_select_page(uint8_t index, uint8_t addr, uint8_t page) {
+ is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND, page);
+}
+
bool is31fl3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer) {
- // Assumes PG1 is already selected.
+ // Assumes page 1 is already selected.
// If any of the transactions fails function returns false.
// Transmit PWM registers in 12 transfers of 16 bytes.
- // g_twi_transfer_buffer[] is 20 bytes
+ // i2c_transfer_buffer[] is 20 bytes
// Iterate over the pwm_buffer contents at 16 byte intervals.
for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) {
- g_twi_transfer_buffer[0] = i;
+ i2c_transfer_buffer[0] = i;
// Copy the data from i to i+15.
// Device will auto-increment register for data after the first byte
// Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
for (int j = 0; j < 16; j++) {
- g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j];
+ i2c_transfer_buffer[1 + j] = pwm_buffer[i + j];
}
#if IS31FL3733_I2C_PERSISTENCE > 0
for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
}
#else
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, i2c_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
return false;
}
#endif
@@ -150,32 +154,23 @@ void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync) {
// then disable software shutdown.
// Sync is passed so set it according to the datasheet.
- // Unlock the command register.
- is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(bus, addr, IS31FL3733_COMMAND_LED_CONTROL);
- // Select PG0
- is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL);
// Turn off all LEDs.
for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(bus, addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(bus, addr, IS31FL3733_COMMAND_PWM);
- // Select PG1
- is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM);
// Set PWM on all LEDs to 0
// No need to setup Breath registers to PWM as that is the default.
for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) {
is31fl3733_write_register(bus, addr, i, 0x00);
}
- // Unlock the command register.
- is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3733_select_page(bus, addr, IS31FL3733_COMMAND_FUNCTION);
- // Select PG3
- is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION);
// Set de-ghost pull-up resistors (SWx)
is31fl3733_write_register(bus, addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP);
// Set de-ghost pull-down resistors (CSx)
@@ -242,11 +237,9 @@ void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- // Firstly we need to unlock the command register and select PG1.
- is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM);
+ is31fl3733_select_page(index, addr, IS31FL3733_COMMAND_PWM);
- // If any of the transactions fail we risk writing dirty PG0,
+ // If any of the transactions fail we risk writing dirty page 0,
// refresh page 0 just in case.
if (!is31fl3733_write_pwm_buffer(index, addr, g_pwm_buffer[index])) {
g_led_control_registers_update_required[index] = true;
@@ -257,9 +250,8 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- // Firstly we need to unlock the command register and select PG0
- is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC);
- is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL);
+ is31fl3733_select_page(index, addr, IS31FL3733_COMMAND_LED_CONTROL);
+
for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(index, addr, i, g_led_control_registers[index][i]);
}
diff --git a/keyboards/input_club/k_type/is31fl3733-dual.h b/keyboards/input_club/k_type/is31fl3733-dual.h
index 2f7d58f7e7..e0fc5fd3b9 100644
--- a/keyboards/input_club/k_type/is31fl3733-dual.h
+++ b/keyboards/input_club/k_type/is31fl3733-dual.h
@@ -70,6 +70,7 @@ extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT];
void is31fl3733_init_drivers(void);
void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync);
bool is31fl3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3733_select_page(uint8_t index, uint8_t addr, uint8_t page);
bool is31fl3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer);
void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/keyboards/input_club/k_type/keymaps/andrew-fahmy/config.h b/keyboards/input_club/k_type/keymaps/andrew-fahmy/config.h
index c40495c8de..5052271687 100644
--- a/keyboards/input_club/k_type/keymaps/andrew-fahmy/config.h
+++ b/keyboards/input_club/k_type/keymaps/andrew-fahmy/config.h
@@ -16,37 +16,5 @@
#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-// # define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINDROPS
-
-// # define DEBUG_MATRIX_SCAN_RATE
-
-# define RGB_MATRIX_LED_FLUSH_LIMIT 100
-// # define RGB_MATRIX_LED_PROCESS_LIMIT 2
-
-// i2c_master defines
-# define I2C_COUNT 2
-
-# define I2C1_BANK GPIOB
-# define I2C1_SCL 0 // A2 on pinout = B0
-# define I2C1_SDA 1 // A2 on pinout = B1
-# define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-# define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-
-# define USE_I2C2
-# define I2C2_BANK GPIOC
-# define I2C2_SCL 10 // A2 on pinout = C10
-# define I2C2_SDA 11 // A2 on pinout = C11
-# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-
-# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 64
-# define DRIVER_2_LED_TOTAL 55
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#endif
+#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINDROPS
+#define RGB_MATRIX_LED_FLUSH_LIMIT 100
diff --git a/keyboards/jc65/v32u4/keymaps/coth/config.h b/keyboards/jc65/v32u4/keymaps/coth/config.h
deleted file mode 100644
index a5568e400d..0000000000
--- a/keyboards/jc65/v32u4/keymaps/coth/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../config.h"
diff --git a/keyboards/jc65/v32u4/keymaps/dead_encryption/config.h b/keyboards/jc65/v32u4/keymaps/dead_encryption/config.h
deleted file mode 100644
index a5568e400d..0000000000
--- a/keyboards/jc65/v32u4/keymaps/dead_encryption/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../config.h"
diff --git a/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/config.h b/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/config.h
deleted file mode 100644
index a5568e400d..0000000000
--- a/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../config.h"
diff --git a/keyboards/jc65/v32u4/keymaps/na7thana/config.h b/keyboards/jc65/v32u4/keymaps/na7thana/config.h
deleted file mode 100644
index a5568e400d..0000000000
--- a/keyboards/jc65/v32u4/keymaps/na7thana/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../config.h"
diff --git a/keyboards/jian/keymaps/default/config.h b/keyboards/jian/keymaps/default/config.h
deleted file mode 100644
index 314836a54d..0000000000
--- a/keyboards/jian/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-#pragma once
diff --git a/keyboards/jian/keymaps/left_hand/config.h b/keyboards/jian/keymaps/left_hand/config.h
deleted file mode 100644
index cae66a5c3a..0000000000
--- a/keyboards/jian/keymaps/left_hand/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-#pragma once
-
diff --git a/keyboards/jian/keymaps/via/config.h b/keyboards/jian/keymaps/via/config.h
deleted file mode 100644
index cae66a5c3a..0000000000
--- a/keyboards/jian/keymaps/via/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-#pragma once
-
diff --git a/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/config.h b/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kapl/keymaps/default/config.h b/keyboards/kapl/keymaps/default/config.h
deleted file mode 100644
index cc82705192..0000000000
--- a/keyboards/kapl/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-// Copyright 2022 Alexander Lozyuk (@keyzog)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
diff --git a/keyboards/kapl/keymaps/via/config.h b/keyboards/kapl/keymaps/via/config.h
deleted file mode 100644
index cc82705192..0000000000
--- a/keyboards/kapl/keymaps/via/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-// Copyright 2022 Alexander Lozyuk (@keyzog)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/koba/config.h b/keyboards/kbdfans/kbd67/rev1/keymaps/koba/config.h
deleted file mode 100644
index f4d7de06e5..0000000000
--- a/keyboards/kbdfans/kbd67/rev1/keymaps/koba/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Daisuke Kobayashi
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h b/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/koba/config.h b/keyboards/kbdfans/kbd67/rev2/keymaps/koba/config.h
deleted file mode 100644
index f4d7de06e5..0000000000
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/koba/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Daisuke Kobayashi
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/rouge8/config.h b/keyboards/kbdfans/kbd67/rev2/keymaps/rouge8/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/rouge8/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/niu_mini/keymaps/planck/rules.mk b/keyboards/kbdfans/niu_mini/keymaps/planck/rules.mk
deleted file mode 100644
index 8b13789179..0000000000
--- a/keyboards/kbdfans/niu_mini/keymaps/planck/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/keyboards/keebio/dilly/keymaps/default/config.h b/keyboards/keebio/dilly/keymaps/default/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/keebio/dilly/keymaps/default/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/keebio/fourier/keymaps/maxim/config.h b/keyboards/keebio/fourier/keymaps/maxim/config.h
deleted file mode 100644
index 4f0ea3dc32..0000000000
--- a/keyboards/keebio/fourier/keymaps/maxim/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-
diff --git a/keyboards/keebio/quefrency/keymaps/default60/config.h b/keyboards/keebio/quefrency/keymaps/default60/config.h
deleted file mode 100644
index 497e05b540..0000000000
--- a/keyboards/keebio/quefrency/keymaps/default60/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/keebio/quefrency/keymaps/default65/config.h b/keyboards/keebio/quefrency/keymaps/default65/config.h
deleted file mode 100644
index 9aae0fdfc2..0000000000
--- a/keyboards/keebio/quefrency/keymaps/default65/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
diff --git a/keyboards/keebio/quefrency/keymaps/joestrong/config.h b/keyboards/keebio/quefrency/keymaps/joestrong/config.h
deleted file mode 100644
index 497e05b540..0000000000
--- a/keyboards/keebio/quefrency/keymaps/joestrong/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h b/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h
deleted file mode 100644
index 0eefd14dfe..0000000000
--- a/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-Copyright 2021 Roger Billerey-Mosier
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/keebio/quefrency/keymaps/unausgeschlafen/config.h b/keyboards/keebio/quefrency/keymaps/unausgeschlafen/config.h
deleted file mode 100644
index 497e05b540..0000000000
--- a/keyboards/keebio/quefrency/keymaps/unausgeschlafen/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/keebio/quefrency/keymaps/yoryer/config.h b/keyboards/keebio/quefrency/keymaps/yoryer/config.h
deleted file mode 100644
index 497e05b540..0000000000
--- a/keyboards/keebio/quefrency/keymaps/yoryer/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/keyboardio/model01/keymaps/tw1t611/config.h b/keyboards/keyboardio/model01/keymaps/tw1t611/config.h
deleted file mode 100644
index 8ab9d8b025..0000000000
--- a/keyboards/keyboardio/model01/keymaps/tw1t611/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 James Laird-Wah
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-/* place overrides here */
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c
index 2382185362..789bb7af02 100644
--- a/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c
+++ b/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c
@@ -42,9 +42,8 @@ bool oled_task_user(void) {
#endif
-#ifdef ENCODER_ENABLE
+#ifdef ENCODER_MAP_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
/*
Rev1.1 Rev1
,-----------------------, ,-----------------------,
@@ -57,37 +56,12 @@ Rev1.1 Rev1
| | | | E1 | | | | | |
`-----------------------' `-----------------------'
*/
-
- // First encoder (E1)
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_F17);
- } else {
- tap_code(KC_F18);
- }
- // Second encoder (E2)
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_F19);
- } else {
- tap_code(KC_F20);
- }
- // Third encoder (E3)
- } else if (index == 2) {
- if (clockwise) {
- tap_code(KC_F21);
- } else {
- tap_code(KC_F22);
- }
- // Forth encoder (E4)
- } else if (index == 3) {
- if (clockwise) {
- tap_code(KC_F23);
- } else {
- tap_code(KC_F24);
- }
- }
- return true;
-}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+#ifdef KEYBOARD_keycapsss_plaid_pad_rev1
+ { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19) }
+#else
+ { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19), ENCODER_CCW_CW(KC_F22, KC_F21), ENCODER_CCW_CW(KC_F24, KC_F23) }
+#endif
+};
#endif
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/default/rules.mk b/keyboards/keycapsss/plaid_pad/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c
index 371e8e9941..944f822fb3 100644
--- a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c
+++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c
@@ -125,8 +125,7 @@ bool oled_task_user(void) {
#endif
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
+#ifdef ENCODER_MAP_ENABLE
/*
,-----------------------,
| E1 | E2 | E3 | E4 |
@@ -138,93 +137,16 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
| | | | E1 |
`-----------------------'
*/
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+#ifdef KEYBOARD_keycapsss_plaid_pad_rev1
+ [_NUMPAD] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19) },
+ [_NAVIGATION] = { ENCODER_CCW_CW(C(S(KC_TAB)), C(KC_TAB)), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [_MEDIA] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19) }
+#else
+ [_NUMPAD] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19), ENCODER_CCW_CW(KC_F22, KC_F21), ENCODER_CCW_CW(KC_F24, KC_F23) },
+ [_NAVIGATION] = { ENCODER_CCW_CW(C(S(KC_TAB)), C(KC_TAB)), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MEDIA] = { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19), ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+#endif
+};
- // First encoder (E1)
- if (index == 0) {
- switch (get_highest_layer(layer_state)) {
- case _NAVIGATION:
- // Browser tab switching
- if (clockwise) {
- tap_code16(LCTL(KC_TAB));
- } else {
- tap_code16(LCTL(LSFT(KC_TAB)));
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_F17);
- } else {
- tap_code(KC_F18);
- }
- break;
- }
- // Second encoder (E2)
- } else if (index == 1) {
- switch (get_highest_layer(layer_state)) {
- case _NAVIGATION:
- // Page Down/Up
- if (clockwise) {
- tap_code16(KC_PGDN);
- } else {
- tap_code16(KC_PGUP);
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_F19);
- } else {
- tap_code(KC_F20);
- }
- break;
- }
- // Third encoder (E3)
- } else if (index == 2) {
- switch (get_highest_layer(layer_state)) {
- case _NAVIGATION:
- // Mouse wheel up/down
- if (clockwise) {
- tap_code(KC_MS_WH_DOWN);
- } else {
- tap_code(KC_MS_WH_UP);
- }
- break;
- case _MEDIA:
- // BRIGHTNESS Up/Down
- if (clockwise) {
- tap_code16(KC_BRIGHTNESS_UP);
- } else {
- tap_code16(KC_BRIGHTNESS_DOWN);
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_F21);
- } else {
- tap_code(KC_F22);
- }
- break;
- }
- // Forth encoder (E4)
- } else if (index == 3) {
- switch (get_highest_layer(layer_state)) {
- case _NAVIGATION:
- case _MEDIA:
- // Volume Up/Down
- if (clockwise) {
- tap_code16(KC_AUDIO_VOL_UP);
- } else {
- tap_code16(KC_AUDIO_VOL_DOWN);
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_F23);
- } else {
- tap_code(KC_F24);
- }
- break;
- }
- }
- return true;
-}
#endif
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk b/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk
index dc3e29cf8b..33bd0c3611 100644
--- a/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk
+++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk
@@ -1,2 +1,3 @@
OLED_ENABLE = yes
COMBO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c
index 7d48591cd2..4ca3fc944b 100644
--- a/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c
+++ b/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c
@@ -27,26 +27,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 0 | . | = | + |
* `-----------------------'
*/
- [0] = LAYOUT_ortho_4x4(
+ LAYOUT_ortho_4x4(
KC_P7, KC_P8, KC_P9, KC_PSLS,
KC_P4, KC_P5, KC_P6, KC_PAST,
KC_P1, KC_P2, KC_P3, KC_PMNS,
- KC_P0, KC_PDOT, KC_PEQL, KC_PPLS ),
- [1] = LAYOUT_ortho_4x4(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
- [2] = LAYOUT_ortho_4x4(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- 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_ortho_4x4(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+ KC_P0, KC_PDOT, KC_PEQL, KC_PPLS
+ ),
};
@@ -69,8 +55,7 @@ bool oled_task_user(void) {
#endif
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
+#ifdef ENCODER_MAP_ENABLE
/*
Rev1.1 Rev1
,-----------------------, ,-----------------------,
@@ -84,35 +69,11 @@ Rev1.1 Rev1
`-----------------------' `-----------------------'
*/
- // First encoder (E1)
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_F17);
- } else {
- tap_code(KC_F18);
- }
- // Second encoder (E2)
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_F19);
- } else {
- tap_code(KC_F20);
- }
- // Third encoder (E3)
- } else if (index == 2) {
- if (clockwise) {
- tap_code(KC_F21);
- } else {
- tap_code(KC_F22);
- }
- // Forth encoder (E4)
- } else if (index == 3) {
- if (clockwise) {
- tap_code(KC_F23);
- } else {
- tap_code(KC_F24);
- }
- }
- return true;
-}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+#ifdef KEYBOARD_keycapsss_plaid_pad_rev1
+ { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19) }
+#else
+ { ENCODER_CCW_CW(KC_F18, KC_F17), ENCODER_CCW_CW(KC_F20, KC_F19), ENCODER_CCW_CW(KC_F22, KC_F21), ENCODER_CCW_CW(KC_F24, KC_F23) }
+#endif
+};
#endif
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/via/rules.mk b/keyboards/keycapsss/plaid_pad/keymaps/via/rules.mk
index 36b7ba9cbc..1189f4ad19 100644
--- a/keyboards/keycapsss/plaid_pad/keymaps/via/rules.mk
+++ b/keyboards/keycapsss/plaid_pad/keymaps/via/rules.mk
@@ -1,2 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keyhive/ut472/keymaps/annihilator6000/config.h b/keyboards/keyhive/ut472/keymaps/annihilator6000/config.h
deleted file mode 100644
index 023c753c27..0000000000
--- a/keyboards/keyhive/ut472/keymaps/annihilator6000/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Carlos Filoteo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kinesis/keymaps/tw1t611/config.h b/keyboards/kinesis/keymaps/tw1t611/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/kinesis/keymaps/tw1t611/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kudox/columner/keymaps/default/config.h b/keyboards/kudox/columner/keymaps/default/config.h
deleted file mode 100644
index f5bf85cca0..0000000000
--- a/keyboards/kudox/columner/keymaps/default/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kudox/rev1/keymaps/default/config.h b/keyboards/kudox/rev1/keymaps/default/config.h
deleted file mode 100644
index f5bf85cca0..0000000000
--- a/keyboards/kudox/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kudox/rev1/keymaps/jis/config.h b/keyboards/kudox/rev1/keymaps/jis/config.h
deleted file mode 100644
index f5bf85cca0..0000000000
--- a/keyboards/kudox/rev1/keymaps/jis/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kudox/rev1/keymaps/x1/config.h b/keyboards/kudox/rev1/keymaps/x1/config.h
deleted file mode 100644
index f5bf85cca0..0000000000
--- a/keyboards/kudox/rev1/keymaps/x1/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kudox/rev2/keymaps/default/config.h b/keyboards/kudox/rev2/keymaps/default/config.h
deleted file mode 100644
index f5bf85cca0..0000000000
--- a/keyboards/kudox/rev2/keymaps/default/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kudox/rev2/keymaps/jis/config.h b/keyboards/kudox/rev2/keymaps/jis/config.h
deleted file mode 100644
index f5bf85cca0..0000000000
--- a/keyboards/kudox/rev2/keymaps/jis/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/kudox_game/keymaps/default/config.h b/keyboards/kudox_game/keymaps/default/config.h
deleted file mode 100644
index 5cbe7609a3..0000000000
--- a/keyboards/kudox_game/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/majistic/keymaps/default/config.h b/keyboards/majistic/keymaps/default/config.h
deleted file mode 100644
index 4db5715cba..0000000000
--- a/keyboards/majistic/keymaps/default/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2020 yossiyossy
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/config.h b/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/config.h
deleted file mode 100644
index 526c0837c7..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/config.h b/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/config.h
deleted file mode 100644
index c535299e74..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
- // place overrides here
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/msiu/config.h b/keyboards/maple_computing/lets_split_eh/keymaps/msiu/config.h
deleted file mode 100644
index 526c0837c7..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/msiu/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c
index a05934238a..0a3071a402 100644
--- a/keyboards/matrix/abelx/abelx.c
+++ b/keyboards/matrix/abelx/abelx.c
@@ -57,6 +57,7 @@ void housekeeping_task_kb(void) {
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
+#include "ws2812.h"
#include "i2c_master.h"
const aw9523b_led g_aw9523b_leds[AW9523B_RGB_NUM] = {
@@ -66,7 +67,7 @@ const aw9523b_led g_aw9523b_leds[AW9523B_RGB_NUM] = {
{AW9523B_P07_PWM, AW9523B_P06_PWM, AW9523B_P05_PWM},
};
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
+void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
{
uint8_t num = num_leds < AW9523B_RGB_NUM ? num_leds : AW9523B_RGB_NUM;
@@ -77,6 +78,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
}
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
+
#endif
static uint16_t caps_lock_pin = DEF_PIN(TCA6424_PORT2, 3);
diff --git a/keyboards/matrix/abelx/info.json b/keyboards/matrix/abelx/info.json
index 35bc059810..b9aa23b756 100644
--- a/keyboards/matrix/abelx/info.json
+++ b/keyboards/matrix/abelx/info.json
@@ -10,6 +10,7 @@
},
"rgblight": {
"led_count": 9,
+ "driver": "custom",
"animations": {
"breathing": true,
"rainbow_mood": true,
diff --git a/keyboards/matrix/abelx/rules.mk b/keyboards/matrix/abelx/rules.mk
index 1c2fc05ffe..83142dd71c 100644
--- a/keyboards/matrix/abelx/rules.mk
+++ b/keyboards/matrix/abelx/rules.mk
@@ -46,3 +46,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c tca6424.c aw9523b.c
I2C_DRIVER_REQUIRED = yes
+WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/matrix/m20add/info.json b/keyboards/matrix/m20add/info.json
index 972aab9d0d..6e1a1c493f 100644
--- a/keyboards/matrix/m20add/info.json
+++ b/keyboards/matrix/m20add/info.json
@@ -10,6 +10,7 @@
},
"rgblight": {
"led_count": 20,
+ "driver": "custom",
"animations": {
"breathing": true,
"rainbow_mood": true,
diff --git a/keyboards/matrix/m20add/rgb_ring.c b/keyboards/matrix/m20add/rgb_ring.c
index f3fbe83d72..f32875cf4f 100644
--- a/keyboards/matrix/m20add/rgb_ring.c
+++ b/keyboards/matrix/m20add/rgb_ring.c
@@ -357,7 +357,7 @@ static void custom_effects(void)
effect_funcs[rgb_ring.effect]();
}
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
+void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
{
if (rgb_ring.state != RING_STATE_QMK) {
return;
@@ -368,6 +368,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
}
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
+
void rgb_ring_init(void)
{
diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c
index 8246da809c..35a55d03b6 100644
--- a/keyboards/matrix/noah/noah.c
+++ b/keyboards/matrix/noah/noah.c
@@ -22,45 +22,42 @@ extern rgblight_config_t rgblight_config;
#endif
rgb_led_t noah_leds[RGBLED_NUM];
static bool noah_led_mode = false;
-void rgblight_set(void) {
+void setleds_custom(rgb_led_t *ledarray, uint16_t num_leds) {
memset(&noah_leds[0], 0, sizeof(noah_leds));
if (!rgblight_config.enable) {
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
- led[i].r = 0;
- led[i].g = 0;
- led[i].b = 0;
+ ledarray[i].r = 0;
+ ledarray[i].g = 0;
+ ledarray[i].b = 0;
}
}
if (noah_led_mode) {
led_t led_state = host_keyboard_led_state();
if (led_state.caps_lock) {
- noah_leds[0] = led[0];
+ noah_leds[0] = ledarray[0];
}
if (led_state.scroll_lock) {
- noah_leds[1] = led[1];
+ noah_leds[1] = ledarray[1];
}
if (led_state.num_lock) {
- noah_leds[2] = led[2];
+ noah_leds[2] = ledarray[2];
}
for (int32_t i = 0; i < 4; i++) {
if(layer_state_is(i+1)) {
- noah_leds[i + 3] = led[i + 3];
+ noah_leds[i + 3] = ledarray[i + 3];
}
}
} else {
- memcpy(&noah_leds[0], &led[0], sizeof(noah_leds));
+ memcpy(&noah_leds[0], &ledarray[0], sizeof(noah_leds));
}
ws2812_setleds(noah_leds, RGBLED_NUM);
}
-#endif
-void matrix_scan_kb(void) {
-#ifdef RGBLIGHT_ENABLE
- rgblight_task();
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
#endif
- matrix_scan_user();
-}
#ifdef RGB_MATRIX_ENABLE
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
diff --git a/keyboards/mechwild/mercutio/keymaps/default/config.h b/keyboards/mechwild/mercutio/keymaps/default/config.h
deleted file mode 100644
index b428d6e260..0000000000
--- a/keyboards/mechwild/mercutio/keymaps/default/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Kyle McCreery
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/mechwild/mercutio/keymaps/fancy/config.h b/keyboards/mechwild/mercutio/keymaps/fancy/config.h
deleted file mode 100644
index b428d6e260..0000000000
--- a/keyboards/mechwild/mercutio/keymaps/fancy/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Kyle McCreery
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/mechwild/mercutio/keymaps/via/config.h b/keyboards/mechwild/mercutio/keymaps/via/config.h
deleted file mode 100644
index b428d6e260..0000000000
--- a/keyboards/mechwild/mercutio/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Kyle McCreery
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/monstargear/xo87/rgb/keymaps/default/config.h b/keyboards/monstargear/xo87/rgb/keymaps/default/config.h
deleted file mode 100644
index 910a014d79..0000000000
--- a/keyboards/monstargear/xo87/rgb/keymaps/default/config.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Copyright 2021 datafx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once \ No newline at end of file
diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c
index 9def73d6a4..31f88a71f9 100644
--- a/keyboards/neson_design/700e/700e.c
+++ b/keyboards/neson_design/700e/700e.c
@@ -20,6 +20,7 @@
#include "quantum.h"
#include "i2c_master.h"
#include "drivers/led/issi/is31fl3731.h"
+#include "ws2812.h"
enum {
SELF_TESTING,
@@ -336,7 +337,7 @@ void housekeeping_task_kb(void)
housekeeping_task_user();
}
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
+void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
{
if (rgb_state.state != NORMAL) return;
@@ -353,6 +354,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
ws2812_setleds(leds, 4);
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
+
bool led_update_kb(led_t led_state)
{
bool res = led_update_user(led_state);
diff --git a/keyboards/neson_design/700e/info.json b/keyboards/neson_design/700e/info.json
index 12a979ab11..3b74e9609a 100644
--- a/keyboards/neson_design/700e/info.json
+++ b/keyboards/neson_design/700e/info.json
@@ -20,6 +20,7 @@
"saturation_steps": 8,
"brightness_steps": 8,
"led_count": 68,
+ "driver": "custom",
"animations": {
"breathing": true,
"rainbow_mood": true,
diff --git a/keyboards/neson_design/700e/rules.mk b/keyboards/neson_design/700e/rules.mk
index 5650ed1fee..dd1db38bab 100644
--- a/keyboards/neson_design/700e/rules.mk
+++ b/keyboards/neson_design/700e/rules.mk
@@ -12,4 +12,5 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
NO_USB_STARTUP_CHECK = yes
QUANTUM_LIB_SRC += drivers/led/issi/is31fl3731.c
+WS2812_DRIVER_REQUIRED = yes
I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/neson_design/n6/info.json b/keyboards/neson_design/n6/info.json
index 3f383b4f8f..c48824d80f 100644
--- a/keyboards/neson_design/n6/info.json
+++ b/keyboards/neson_design/n6/info.json
@@ -23,6 +23,7 @@
"saturation_steps": 8,
"brightness_steps": 8,
"led_count": 65,
+ "driver": "custom",
"max_brightness": 192,
"animations": {
"breathing": true,
diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c
index 38b634eeb7..b878b9368d 100644
--- a/keyboards/neson_design/n6/n6.c
+++ b/keyboards/neson_design/n6/n6.c
@@ -20,6 +20,7 @@
#include "quantum.h"
#include "i2c_master.h"
#include "drivers/led/issi/is31fl3731.h"
+#include "ws2812.h"
enum {
SELF_TESTING,
@@ -338,7 +339,7 @@ void housekeeping_task_kb(void)
housekeeping_task_user();
}
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
+void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
{
if (rgb_state.state != NORMAL) return;
@@ -348,6 +349,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
ws2812_setleds(start_led+IS31FL3731_LED_COUNT, 1);
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
+
bool led_update_kb(led_t led_state)
{
bool res = led_update_user(led_state);
diff --git a/keyboards/neson_design/n6/rules.mk b/keyboards/neson_design/n6/rules.mk
index a3e4abe6cd..4c9ce45352 100644
--- a/keyboards/neson_design/n6/rules.mk
+++ b/keyboards/neson_design/n6/rules.mk
@@ -11,4 +11,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
QUANTUM_LIB_SRC += drivers/led/issi/is31fl3731.c
+WS2812_DRIVER_REQUIRED = yes
I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/neson_design/nico/info.json b/keyboards/neson_design/nico/info.json
index 477ac3ba7c..1c86d9a1ae 100644
--- a/keyboards/neson_design/nico/info.json
+++ b/keyboards/neson_design/nico/info.json
@@ -25,7 +25,8 @@
"pin": "B0"
},
"rgblight": {
- "led_count": 5
+ "led_count": 5,
+ "driver": "custom"
},
"url": "",
"usb": {
diff --git a/keyboards/neson_design/nico/nico.c b/keyboards/neson_design/nico/nico.c
index b4d15777b7..5d84cb9e1b 100644
--- a/keyboards/neson_design/nico/nico.c
+++ b/keyboards/neson_design/nico/nico.c
@@ -18,6 +18,7 @@
*/
#include "quantum.h"
+#include "ws2812.h"
#ifdef RGBLIGHT_ENABLE
static bool alert = false;
@@ -66,7 +67,7 @@ void housekeeping_task_kb(void)
housekeeping_task_user();
}
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
+void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
{
start_led[2].r = start_led[0].r;
start_led[2].g = start_led[0].g;
@@ -82,4 +83,7 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
ws2812_setleds(start_led, RGBLED_NUM);
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
#endif \ No newline at end of file
diff --git a/keyboards/neson_design/nico/rules.mk b/keyboards/neson_design/nico/rules.mk
index 6e7633bfe0..9a69649289 100644
--- a/keyboards/neson_design/nico/rules.mk
+++ b/keyboards/neson_design/nico/rules.mk
@@ -1 +1 @@
-# This file intentionally left blank
+WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/pico/65keys/keymaps/default/config.h b/keyboards/pico/65keys/keymaps/default/config.h
deleted file mode 100644
index 5cbe7609a3..0000000000
--- a/keyboards/pico/65keys/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/pico/65keys/keymaps/jis/config.h b/keyboards/pico/65keys/keymaps/jis/config.h
deleted file mode 100644
index 5cbe7609a3..0000000000
--- a/keyboards/pico/65keys/keymaps/jis/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/planck/keymaps/dsanchezseco/rules.mk b/keyboards/planck/keymaps/dsanchezseco/rules.mk
deleted file mode 100644
index 8b13789179..0000000000
--- a/keyboards/planck/keymaps/dsanchezseco/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/keyboards/planck/keymaps/mitch/rules.mk b/keyboards/planck/keymaps/mitch/rules.mk
deleted file mode 100644
index e69de29bb2..0000000000
--- a/keyboards/planck/keymaps/mitch/rules.mk
+++ /dev/null
diff --git a/keyboards/planck/keymaps/motform/config.h b/keyboards/planck/keymaps/motform/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/planck/keymaps/motform/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/planck/keymaps/vxid/config.h b/keyboards/planck/keymaps/vxid/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/planck/keymaps/vxid/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/projectcain/vault35/atmega32u4/info.json b/keyboards/projectcain/vault35/atmega32u4/info.json
new file mode 100644
index 0000000000..9acd8ee34d
--- /dev/null
+++ b/keyboards/projectcain/vault35/atmega32u4/info.json
@@ -0,0 +1,45 @@
+{
+ "bootloader": "atmel-dfu",
+ "build": {
+ "lto": true
+ },
+ "encoder": {
+ "rotary": [
+ {"pin_a": "D7", "pin_b": "D6", "resolution": 2}
+ ]
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "encoder": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["B1", "D3", "F0", "F1", "F4", "F5", "F6", "F7", "C6", "B6", "B5"],
+ "rows": ["B4", "D4", "B0", "C7"]
+ },
+ "processor": "atmega32u4",
+ "rgblight": {
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ },
+ "brightness_steps": 8,
+ "led_count": 12,
+ "saturation_steps": 8,
+ "sleep": true
+ },
+ "ws2812": {
+ "pin": "D5"
+ }
+}
diff --git a/keyboards/projectcain/vault35/atmega32u4/rules.mk b/keyboards/projectcain/vault35/atmega32u4/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/projectcain/vault35/atmega32u4/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/projectcain/vault35/config.h b/keyboards/projectcain/vault35/config.h
deleted file mode 100644
index 7abf6b197c..0000000000
--- a/keyboards/projectcain/vault35/config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2021 projectcain
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* 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
-
-/*
- * 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
diff --git a/keyboards/projectcain/vault35/info.json b/keyboards/projectcain/vault35/info.json
index d23c4b2f46..5662cdbf6b 100644
--- a/keyboards/projectcain/vault35/info.json
+++ b/keyboards/projectcain/vault35/info.json
@@ -1,27 +1,22 @@
{
- "keyboard_name": "Vault35",
"manufacturer": "projectcain",
- "url": "",
+ "keyboard_name": "Vault35",
"maintainer": "projectcain",
- "usb": {
- "vid": "0xFEED",
- "pid": "0x6060",
- "device_version": "0.0.1"
- },
- "matrix_pins": {
- "cols": ["B1", "D3", "F0", "F1", "F4", "F5", "F6", "F7", "C6", "B6", "B5"],
- "rows": ["B4", "D4", "B0", "C7"]
- },
"diode_direction": "COL2ROW",
- "encoder": {
- "rotary": [
- {"pin_a": "D6", "pin_b": "D7", "resolution": 2}
- ]
+ "qmk": {
+ "locking": {
+ "enabled": true,
+ "resync": true
+ }
+ },
+ "url": "https://mechvault.net",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x6060",
+ "vid": "0xFEED"
},
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
"layouts": {
- "LAYOUT_split_4space": {
+ "LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
@@ -33,8 +28,7 @@
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
-
+ {"matrix": [0, 10], "x": 10, "y": 0, "encoder": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"matrix": [1, 1], "x": 1.25, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
@@ -45,7 +39,6 @@
{"matrix": [1, 7], "x": 7.25, "y": 1},
{"matrix": [1, 8], "x": 8.25, "y": 1},
{"matrix": [1, 9], "x": 9.25, "y": 1, "w": 1.75},
-
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
@@ -56,16 +49,16 @@
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
-
{"matrix": [3, 1], "x": 1.5, "y": 3},
{"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.75},
- {"matrix": [3, 5], "x": 5.5, "y": 3, "w": 1.75},
- {"matrix": [3, 6], "x": 7.25, "y": 3, "w": 1.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3}
+ {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.5},
+ {"matrix": [3, 4], "x": 5.25, "y": 3},
+ {"matrix": [3, 5], "x": 6.25, "y": 3, "w": 1.5},
+ {"matrix": [3, 6], "x": 7.75, "y": 3, "w": 1.25},
+ {"matrix": [3, 7], "x": 9, "y": 3}
]
},
- "LAYOUT_split_3space": {
+ "LAYOUT_full_space": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
@@ -77,8 +70,7 @@
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
-
+ {"matrix": [0, 10], "x": 10, "y": 0, "encoder": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"matrix": [1, 1], "x": 1.25, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
@@ -89,7 +81,6 @@
{"matrix": [1, 7], "x": 7.25, "y": 1},
{"matrix": [1, 8], "x": 8.25, "y": 1},
{"matrix": [1, 9], "x": 9.25, "y": 1, "w": 1.75},
-
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
@@ -100,11 +91,8 @@
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
-
{"matrix": [3, 1], "x": 1.5, "y": 3},
- {"matrix": [3, 3], "x": 2.5, "y": 3, "w": 2.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3},
- {"matrix": [3, 5], "x": 5.75, "y": 3, "w": 2.75},
+ {"matrix": [3, 4], "x": 2.5, "y": 3, "w": 6},
{"matrix": [3, 7], "x": 8.5, "y": 3}
]
},
@@ -120,8 +108,7 @@
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
-
+ {"matrix": [0, 10], "x": 10, "y": 0, "encoder": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"matrix": [1, 1], "x": 1.25, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
@@ -132,7 +119,6 @@
{"matrix": [1, 7], "x": 7.25, "y": 1},
{"matrix": [1, 8], "x": 8.25, "y": 1},
{"matrix": [1, 9], "x": 9.25, "y": 1, "w": 1.75},
-
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
@@ -143,14 +129,13 @@
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
-
{"matrix": [3, 1], "x": 1.5, "y": 3},
{"matrix": [3, 3], "x": 2.5, "y": 3, "w": 3},
{"matrix": [3, 5], "x": 5.5, "y": 3, "w": 3},
{"matrix": [3, 7], "x": 8.5, "y": 3}
]
},
- "LAYOUT_full_space": {
+ "LAYOUT_split_3space": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
@@ -162,8 +147,7 @@
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
-
+ {"matrix": [0, 10], "x": 10, "y": 0, "encoder": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"matrix": [1, 1], "x": 1.25, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
@@ -174,7 +158,6 @@
{"matrix": [1, 7], "x": 7.25, "y": 1},
{"matrix": [1, 8], "x": 8.25, "y": 1},
{"matrix": [1, 9], "x": 9.25, "y": 1, "w": 1.75},
-
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
@@ -185,9 +168,51 @@
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
-
{"matrix": [3, 1], "x": 1.5, "y": 3},
- {"matrix": [3, 4], "x": 2.5, "y": 3, "w": 6},
+ {"matrix": [3, 3], "x": 2.5, "y": 3, "w": 2.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3},
+ {"matrix": [3, 5], "x": 5.75, "y": 3, "w": 2.75},
+ {"matrix": [3, 7], "x": 8.5, "y": 3}
+ ]
+ },
+ "LAYOUT_split_4space": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0, "encoder": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+ {"matrix": [1, 1], "x": 1.25, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1},
+ {"matrix": [1, 3], "x": 3.25, "y": 1},
+ {"matrix": [1, 4], "x": 4.25, "y": 1},
+ {"matrix": [1, 5], "x": 5.25, "y": 1},
+ {"matrix": [1, 6], "x": 6.25, "y": 1},
+ {"matrix": [1, 7], "x": 7.25, "y": 1},
+ {"matrix": [1, 8], "x": 8.25, "y": 1},
+ {"matrix": [1, 9], "x": 9.25, "y": 1, "w": 1.75},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.5, "y": 3},
+ {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3, "w": 1.75},
+ {"matrix": [3, 5], "x": 5.5, "y": 3, "w": 1.75},
+ {"matrix": [3, 6], "x": 7.25, "y": 3, "w": 1.25},
{"matrix": [3, 7], "x": 8.5, "y": 3}
]
}
diff --git a/keyboards/projectcain/vault35/keymaps/default/keymap.c b/keyboards/projectcain/vault35/keymaps/default/keymap.c
index 5bb3a622b2..ec9f350218 100644
--- a/keyboards/projectcain/vault35/keymaps/default/keymap.c
+++ b/keyboards/projectcain/vault35/keymaps/default/keymap.c
@@ -1,19 +1,18 @@
-
- /* Copyright 2021 projectcain
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+/* Copyright 2021 projectcain
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include QMK_KEYBOARD_H
enum layers{
@@ -64,3 +63,11 @@ combo_t key_combos[] = {
[KL_SLSH] = COMBO(kl_combo, S(KC_SLSH)),
[JK_MINUS] = COMBO(jk_combo, KC_MINUS)
};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [BASE] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [NUM] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [SYM] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
diff --git a/keyboards/projectcain/vault35/keymaps/default/rules.mk b/keyboards/projectcain/vault35/keymaps/default/rules.mk
index ff681299e4..cbd8b4aa81 100644
--- a/keyboards/projectcain/vault35/keymaps/default/rules.mk
+++ b/keyboards/projectcain/vault35/keymaps/default/rules.mk
@@ -1 +1,2 @@
-COMBO_ENABLE = yes \ No newline at end of file
+COMBO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/projectcain/vault35/rules.mk b/keyboards/projectcain/vault35/rules.mk
index b03b6fa905..3cf3a331d8 100644
--- a/keyboards/projectcain/vault35/rules.mk
+++ b/keyboards/projectcain/vault35/rules.mk
@@ -1,13 +1 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-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
-NKRO_ENABLE = no # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = yes
+DEFAULT_FOLDER = projectcain/vault35/atmega32u4
diff --git a/keyboards/rabbit/rabbit68/keymaps/kaiec/config.h b/keyboards/rabbit/rabbit68/keymaps/kaiec/config.h
deleted file mode 100644
index 1da00a2979..0000000000
--- a/keyboards/rabbit/rabbit68/keymaps/kaiec/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Kai Eckert
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/recompile_keys/choco60/config.h b/keyboards/recompile_keys/choco60/config.h
deleted file mode 100644
index 378fc07981..0000000000
--- a/keyboards/recompile_keys/choco60/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright 2019 Naoto Takai
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
diff --git a/keyboards/rgbkb/sol/keymaps/brianweyer/config.h b/keyboards/rgbkb/sol/keymaps/brianweyer/config.h
deleted file mode 100644
index 452cdda823..0000000000
--- a/keyboards/rgbkb/sol/keymaps/brianweyer/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/rgbkb/sol/keymaps/danielhklein/config.h b/keyboards/rgbkb/sol/keymaps/danielhklein/config.h
deleted file mode 100644
index 452cdda823..0000000000
--- a/keyboards/rgbkb/sol/keymaps/danielhklein/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 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 <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/config.h b/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/config.h
deleted file mode 100644
index 0054f43e6b..0000000000
--- a/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2017 Baris Tosun
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
-
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/msiu/config.h b/keyboards/rominronin/katana60/rev1/keymaps/msiu/config.h
deleted file mode 100644
index b57cc482ec..0000000000
--- a/keyboards/rominronin/katana60/rev1/keymaps/msiu/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2017 Baris Tosun
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/config.h b/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/config.h
deleted file mode 100644
index 0689676402..0000000000
--- a/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 rominronin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sirius/unigo66/keymaps/danielhklein/config.h b/keyboards/sirius/unigo66/keymaps/danielhklein/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/sirius/unigo66/keymaps/danielhklein/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sofle/keymaps/default/config.h b/keyboards/sofle/keymaps/default/config.h
deleted file mode 100644
index c5494c20aa..0000000000
--- a/keyboards/sofle/keymaps/default/config.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma once
-
-/* The way how "handedness" is decided (which half is which),
-see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness
-for more options.
-*/
diff --git a/keyboards/sx60/keymaps/amnobis/config.h b/keyboards/sx60/keymaps/amnobis/config.h
deleted file mode 100644
index a5568e400d..0000000000
--- a/keyboards/sx60/keymaps/amnobis/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../config.h"
diff --git a/keyboards/tada68/keymaps/iso-nor/config.h b/keyboards/tada68/keymaps/iso-nor/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/tada68/keymaps/iso-nor/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/tada68/keymaps/laas/config.h b/keyboards/tada68/keymaps/laas/config.h
deleted file mode 100755
index 6f70f09bee..0000000000
--- a/keyboards/tada68/keymaps/laas/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/tada68/keymaps/peippo/config.h b/keyboards/tada68/keymaps/peippo/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/tada68/keymaps/peippo/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/takashiski/namecard2x4/keymaps/brainfuck/config.h b/keyboards/takashiski/namecard2x4/keymaps/brainfuck/config.h
deleted file mode 100644
index dbacdcce58..0000000000
--- a/keyboards/takashiski/namecard2x4/keymaps/brainfuck/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 takashiski
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/thevankeyboards/caravan/keymaps/default/config.h b/keyboards/thevankeyboards/caravan/keymaps/default/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/thevankeyboards/caravan/keymaps/default/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/unikeyboard/diverge3/keymaps/workman/rules.mk b/keyboards/unikeyboard/diverge3/keymaps/workman/rules.mk
deleted file mode 100644
index 8b13789179..0000000000
--- a/keyboards/unikeyboard/diverge3/keymaps/workman/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/keyboards/v60_type_r/info.json b/keyboards/v60_type_r/info.json
index 6332071994..43a3d9472c 100644
--- a/keyboards/v60_type_r/info.json
+++ b/keyboards/v60_type_r/info.json
@@ -18,22 +18,6 @@
"pin": "F7",
"on_state": 0
},
- "rgblight": {
- "driver": "custom",
- "led_count": 1,
- "animations": {
- "breathing": true,
- "rainbow_mood": true,
- "rainbow_swirl": true,
- "snake": true,
- "knight": true,
- "christmas": true,
- "static_gradient": true,
- "rgb_test": true,
- "alternating": true,
- "twinkle": true
- }
- },
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"community_layouts": ["60_ansi", "60_iso"],
diff --git a/keyboards/v60_type_r/rules.mk b/keyboards/v60_type_r/rules.mk
index d6654ffea6..a7f2bc7026 100644
--- a/keyboards/v60_type_r/rules.mk
+++ b/keyboards/v60_type_r/rules.mk
@@ -8,7 +8,7 @@ CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable the RGB Underglow
+RGBLIGHT_ENABLE = no # Enable the RGB Underglow
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes
diff --git a/keyboards/v60_type_r/v60_type_r.c b/keyboards/v60_type_r/v60_type_r.c
index 871d9915d3..b266472e64 100644
--- a/keyboards/v60_type_r/v60_type_r.c
+++ b/keyboards/v60_type_r/v60_type_r.c
@@ -131,20 +131,6 @@ void set_rgb_pin_off(uint8_t pin) {
PORTF |= _BV(pin);
}
-void rgblight_set(void) {
- // xprintf("Setting RGB underglow\n");
- if (!rgblight_config.enable) {
- led[0].r = 0;
- led[0].g = 0;
- led[0].b = 0;
- set_rgb_pin_off(RGB_RED_PIN);
- set_rgb_pin_off(RGB_GREEN_PIN);
- set_rgb_pin_off(RGB_BLUE_PIN);
- }
-
- // //xprintf("Red: %u, Green: %u, Blue: %u\n", led[0].r, led[0].g, led[0].b);
-}
-
ISR(TIMER3_COMPA_vect)
{
static uint8_t pwm = 0;
diff --git a/keyboards/w1_at/config.h b/keyboards/w1_at/config.h
deleted file mode 100644
index 79fdc4275f..0000000000
--- a/keyboards/w1_at/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 Yiancar-Designs
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published byß
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
-#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
diff --git a/keyboards/w1_at/keymaps/default/readme.md b/keyboards/w1_at/keymaps/default/readme.md
deleted file mode 100644
index af0497e720..0000000000
--- a/keyboards/w1_at/keymaps/default/readme.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# The default keymap for W1-AT.
-
-Layer 0
-
-![Layer 0](https://i.imgur.com/pLdgxlJ.png)
-
-Layer 1
-
-![Layer 1](https://i.imgur.com/v24h9EO.png)
diff --git a/keyboards/w1_at/keymaps/via/readme.md b/keyboards/w1_at/keymaps/via/readme.md
deleted file mode 100644
index 33cdf89e60..0000000000
--- a/keyboards/w1_at/keymaps/via/readme.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# The default keymap for W1-AT. VIA support enabled.
-
-Layer 0
-
-![Layer 0](https://i.imgur.com/4bUxnAz.png)
-
-Layer 1
-
-![Layer 1](https://i.imgur.com/v24h9EO.png)
diff --git a/keyboards/w1_at/keymaps/zq/rules.mk b/keyboards/w1_at/keymaps/zq/rules.mk
deleted file mode 100644
index 036bd6d1c3..0000000000
--- a/keyboards/w1_at/keymaps/zq/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/w1_at/rules.mk b/keyboards/w1_at/rules.mk
deleted file mode 100644
index 7c0709f41e..0000000000
--- a/keyboards/w1_at/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -v FFFF -p FFFF
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-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
-NKRO_ENABLE = yes # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/westfoxtrot/cyclops/keymaps/peippo/config.h b/keyboards/westfoxtrot/cyclops/keymaps/peippo/config.h
deleted file mode 100644
index 6278fae658..0000000000
--- a/keyboards/westfoxtrot/cyclops/keymaps/peippo/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 'mechmerlin'
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/work_louder/loop/info.json b/keyboards/work_louder/loop/info.json
index eacbbbccbd..4514192b6d 100644
--- a/keyboards/work_louder/loop/info.json
+++ b/keyboards/work_louder/loop/info.json
@@ -30,6 +30,7 @@
"pin": "F1"
},
"rgblight": {
+ "driver": "custom",
"max_brightness": 120,
"sleep": true,
"animations": {
diff --git a/keyboards/work_louder/micro/info.json b/keyboards/work_louder/micro/info.json
index d76e7aa049..21c4bc0da8 100644
--- a/keyboards/work_louder/micro/info.json
+++ b/keyboards/work_louder/micro/info.json
@@ -21,6 +21,7 @@
},
"processor": "atmega32u4",
"rgblight": {
+ "driver": "custom",
"animations": {
"alternating": false,
"breathing": true,
diff --git a/keyboards/work_louder/nano/info.json b/keyboards/work_louder/nano/info.json
index ab064bd019..7bbdb4e032 100644
--- a/keyboards/work_louder/nano/info.json
+++ b/keyboards/work_louder/nano/info.json
@@ -27,6 +27,7 @@
},
"rgblight": {
"led_count": 6,
+ "driver": "custom",
"max_brightness": 120,
"sleep": true,
"animations": {
diff --git a/keyboards/work_louder/numpad/info.json b/keyboards/work_louder/numpad/info.json
index 0fa2bf2565..9149fc77bb 100644
--- a/keyboards/work_louder/numpad/info.json
+++ b/keyboards/work_louder/numpad/info.json
@@ -50,6 +50,7 @@
]
},
"rgblight": {
+ "driver": "custom",
"animations": {
"breathing": true,
"knight": true,
diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c
index b4d1a2ad72..9b39555971 100644
--- a/keyboards/work_louder/rgb_functions.c
+++ b/keyboards/work_louder/rgb_functions.c
@@ -24,9 +24,9 @@
#include "ws2812_bitbang.c"
-void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
- ws2812_setleds(start_led, num_leds);
-}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = ws2812_setleds,
+};
#endif
#ifdef RGB_MATRIX_ENABLE
diff --git a/keyboards/work_louder/work_board/info.json b/keyboards/work_louder/work_board/info.json
index 1946b8bcf4..163271bf7a 100644
--- a/keyboards/work_louder/work_board/info.json
+++ b/keyboards/work_louder/work_board/info.json
@@ -25,6 +25,7 @@
"pin": "D1"
},
"rgblight": {
+ "driver": "custom",
"max_brightness": 120,
"sleep": true,
"animations": {
diff --git a/keyboards/xiudi/xd75/keymaps/boy_314/config.h b/keyboards/xiudi/xd75/keymaps/boy_314/config.h
deleted file mode 100644
index 7b9637ef9c..0000000000
--- a/keyboards/xiudi/xd75/keymaps/boy_314/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once \ No newline at end of file
diff --git a/keyboards/xiudi/xd75/keymaps/bulbizarre/config.h b/keyboards/xiudi/xd75/keymaps/bulbizarre/config.h
deleted file mode 100644
index e6975da8a2..0000000000
--- a/keyboards/xiudi/xd75/keymaps/bulbizarre/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/c4software_bepo/config.h b/keyboards/xiudi/xd75/keymaps/c4software_bepo/config.h
deleted file mode 100644
index 6605bbf93f..0000000000
--- a/keyboards/xiudi/xd75/keymaps/c4software_bepo/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-# pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/c4software_bepo/rules.mk b/keyboards/xiudi/xd75/keymaps/c4software_bepo/rules.mk
deleted file mode 100644
index 7efceba50a..0000000000
--- a/keyboards/xiudi/xd75/keymaps/c4software_bepo/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/keyboards/xiudi/xd75/keymaps/developper_bepo/config.h b/keyboards/xiudi/xd75/keymaps/developper_bepo/config.h
deleted file mode 100644
index 0183e02427..0000000000
--- a/keyboards/xiudi/xd75/keymaps/developper_bepo/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Quentin Lebastard
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/developper_bepo/rules.mk b/keyboards/xiudi/xd75/keymaps/developper_bepo/rules.mk
deleted file mode 100644
index 7efceba50a..0000000000
--- a/keyboards/xiudi/xd75/keymaps/developper_bepo/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/config.h b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/config.h
deleted file mode 100644
index e6975da8a2..0000000000
--- a/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/fabian/config.h b/keyboards/xiudi/xd75/keymaps/fabian/config.h
deleted file mode 100644
index a72596783d..0000000000
--- a/keyboards/xiudi/xd75/keymaps/fabian/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 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 <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/french/config.h b/keyboards/xiudi/xd75/keymaps/french/config.h
deleted file mode 100644
index e6975da8a2..0000000000
--- a/keyboards/xiudi/xd75/keymaps/french/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/kloki/config.h b/keyboards/xiudi/xd75/keymaps/kloki/config.h
deleted file mode 100644
index e6975da8a2..0000000000
--- a/keyboards/xiudi/xd75/keymaps/kloki/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/kloki/rules.mk b/keyboards/xiudi/xd75/keymaps/kloki/rules.mk
deleted file mode 100644
index 52a8f38d45..0000000000
--- a/keyboards/xiudi/xd75/keymaps/kloki/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/keyboards/xiudi/xd75/keymaps/msiu/config.h b/keyboards/xiudi/xd75/keymaps/msiu/config.h
deleted file mode 100644
index 4fbd59becc..0000000000
--- a/keyboards/xiudi/xd75/keymaps/msiu/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/pitty/config.h b/keyboards/xiudi/xd75/keymaps/pitty/config.h
deleted file mode 100644
index e6975da8a2..0000000000
--- a/keyboards/xiudi/xd75/keymaps/pitty/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/pitty/rules.mk b/keyboards/xiudi/xd75/keymaps/pitty/rules.mk
deleted file mode 100644
index 52a8f38d45..0000000000
--- a/keyboards/xiudi/xd75/keymaps/pitty/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/keyboards/xiudi/xd75/keymaps/skewwhiffy/rules.mk b/keyboards/xiudi/xd75/keymaps/skewwhiffy/rules.mk
deleted file mode 100644
index 52a8f38d45..0000000000
--- a/keyboards/xiudi/xd75/keymaps/skewwhiffy/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
diff --git a/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c b/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c
new file mode 100644
index 0000000000..11958f3700
--- /dev/null
+++ b/layouts/default/ortho_5x13/default_ortho_5x13/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │Bsp│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Tab│Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │# │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │Ent│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Sft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ ↑ │ / │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Ctl│GUI│LWR│Alt│RSE│ │ │ │Alt│Sft│← │ ↓ │ → │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_ortho_5x13(
+ 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_BSPC,
+ 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_NUHS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, TT(1), KC_LALT, TT(2), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ortho_5x13(
+ KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL ,
+ KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ ,
+ _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ ),
+ [2] = LAYOUT_ortho_5x13(
+ 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 ,
+ _______, _______, _______, _______, QK_RBT, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_WH_U, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R
+ ),
+};
diff --git a/layouts/default/ortho_5x13/info.json b/layouts/default/ortho_5x13/info.json
new file mode 100644
index 0000000000..1bfa00d770
--- /dev/null
+++ b/layouts/default/ortho_5x13/info.json
@@ -0,0 +1,80 @@
+{
+ "keyboard_name": "5x13 ortholinear layout",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_ortho_5x13": {
+ "layout": [
+ {"x":0 , "y":0},
+ {"x":1 , "y":0},
+ {"x":2 , "y":0},
+ {"x":3 , "y":0},
+ {"x":4 , "y":0},
+ {"x":5 , "y":0},
+ {"x":6 , "y":0},
+ {"x":7 , "y":0},
+ {"x":8 , "y":0},
+ {"x":9 , "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+
+ {"x":0 , "y":1},
+ {"x":1 , "y":1},
+ {"x":2 , "y":1},
+ {"x":3 , "y":1},
+ {"x":4 , "y":1},
+ {"x":5 , "y":1},
+ {"x":6 , "y":1},
+ {"x":7 , "y":1},
+ {"x":8 , "y":1},
+ {"x":9 , "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+
+ {"x":0 , "y":2},
+ {"x":1 , "y":2},
+ {"x":2 , "y":2},
+ {"x":3 , "y":2},
+ {"x":4 , "y":2},
+ {"x":5 , "y":2},
+ {"x":6 , "y":2},
+ {"x":7 , "y":2},
+ {"x":8 , "y":2},
+ {"x":9 , "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+
+ {"x":0 , "y":3},
+ {"x":1 , "y":3},
+ {"x":2 , "y":3},
+ {"x":3 , "y":3},
+ {"x":4 , "y":3},
+ {"x":5 , "y":3},
+ {"x":6 , "y":3},
+ {"x":7 , "y":3},
+ {"x":8 , "y":3},
+ {"x":9 , "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+
+ {"x":0 , "y":4},
+ {"x":1 , "y":4},
+ {"x":2 , "y":4},
+ {"x":3 , "y":4},
+ {"x":4 , "y":4},
+ {"x":5 , "y":4},
+ {"x":6 , "y":4},
+ {"x":7 , "y":4},
+ {"x":8 , "y":4},
+ {"x":9 , "y":4},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/ortho_5x13/layout.json b/layouts/default/ortho_5x13/layout.json
new file mode 100644
index 0000000000..017a9d0fcd
--- /dev/null
+++ b/layouts/default/ortho_5x13/layout.json
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""]
diff --git a/layouts/default/ortho_5x13/readme.md b/layouts/default/ortho_5x13/readme.md
new file mode 100644
index 0000000000..4ec2f9297a
--- /dev/null
+++ b/layouts/default/ortho_5x13/readme.md
@@ -0,0 +1,3 @@
+# ortho_5x13
+
+ LAYOUT_ortho_5x13
diff --git a/layouts/default/ortho_5x14/default_ortho_5x14/keymap.c b/layouts/default/ortho_5x14/default_ortho_5x14/keymap.c
index 5816e968d1..3827074612 100644
--- a/layouts/default/ortho_5x14/default_ortho_5x14/keymap.c
+++ b/layouts/default/ortho_5x14/default_ortho_5x14/keymap.c
@@ -8,7 +8,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
- * │Esc│Tab│ Q │ W │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
+ * │Esc│Tab│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
* │Del│Cap│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[0] = LAYOUT_ortho_5x14(
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_ESC, KC_TAB, KC_Q, KC_W, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_ESC, 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_DEL, 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_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_LEFT, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, KC_ENT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_DOWN
diff --git a/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c b/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c
new file mode 100644
index 0000000000..527f87f84b
--- /dev/null
+++ b/layouts/default/ortho_6x13/default_ortho_6x13/keymap.c
@@ -0,0 +1,46 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│Del│Bsp│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Tab│Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │# │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │Ent│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Sft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ ↑ │ / │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Ctl│GUI│Lwr│Alt│Rse│ │ │ │Alt│Sft│← │ ↓ │ → │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_ortho_6x13(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, KC_BSPC,
+ 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_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_NUHS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, TT(0), KC_LALT, TT(2), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_ortho_6x13(
+ KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ ,
+ _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ ),
+ [2] = LAYOUT_ortho_6x13(
+ 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 ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______, QK_RBT, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_WH_U, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R
+ ),
+};
diff --git a/layouts/default/ortho_6x13/info.json b/layouts/default/ortho_6x13/info.json
new file mode 100644
index 0000000000..728bce3b2c
--- /dev/null
+++ b/layouts/default/ortho_6x13/info.json
@@ -0,0 +1,94 @@
+{
+ "keyboard_name": "6x13 ortholinear layout",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_ortho_6x13": {
+ "layout": [
+ {"x":0 , "y":0},
+ {"x":1 , "y":0},
+ {"x":2 , "y":0},
+ {"x":3 , "y":0},
+ {"x":4 , "y":0},
+ {"x":5 , "y":0},
+ {"x":6 , "y":0},
+ {"x":7 , "y":0},
+ {"x":8 , "y":0},
+ {"x":9 , "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+
+ {"x":0 , "y":1},
+ {"x":1 , "y":1},
+ {"x":2 , "y":1},
+ {"x":3 , "y":1},
+ {"x":4 , "y":1},
+ {"x":5 , "y":1},
+ {"x":6 , "y":1},
+ {"x":7 , "y":1},
+ {"x":8 , "y":1},
+ {"x":9 , "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+
+ {"x":0 , "y":2},
+ {"x":1 , "y":2},
+ {"x":2 , "y":2},
+ {"x":3 , "y":2},
+ {"x":4 , "y":2},
+ {"x":5 , "y":2},
+ {"x":6 , "y":2},
+ {"x":7 , "y":2},
+ {"x":8 , "y":2},
+ {"x":9 , "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+
+ {"x":0 , "y":3},
+ {"x":1 , "y":3},
+ {"x":2 , "y":3},
+ {"x":3 , "y":3},
+ {"x":4 , "y":3},
+ {"x":5 , "y":3},
+ {"x":6 , "y":3},
+ {"x":7 , "y":3},
+ {"x":8 , "y":3},
+ {"x":9 , "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+
+ {"x":0 , "y":4},
+ {"x":1 , "y":4},
+ {"x":2 , "y":4},
+ {"x":3 , "y":4},
+ {"x":4 , "y":4},
+ {"x":5 , "y":4},
+ {"x":6 , "y":4},
+ {"x":7 , "y":4},
+ {"x":8 , "y":4},
+ {"x":9 , "y":4},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+
+ {"x":0 , "y":5},
+ {"x":1 , "y":5},
+ {"x":2 , "y":5},
+ {"x":3 , "y":5},
+ {"x":4 , "y":5},
+ {"x":5 , "y":5},
+ {"x":6 , "y":5},
+ {"x":7 , "y":5},
+ {"x":8 , "y":5},
+ {"x":9 , "y":5},
+ {"x":10, "y":5},
+ {"x":11, "y":5},
+ {"x":12, "y":5}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/ortho_6x13/layout.json b/layouts/default/ortho_6x13/layout.json
new file mode 100644
index 0000000000..1e5dab5b89
--- /dev/null
+++ b/layouts/default/ortho_6x13/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""],
+["","","","","","","","","","","","",""]
diff --git a/layouts/default/ortho_6x13/readme.md b/layouts/default/ortho_6x13/readme.md
new file mode 100644
index 0000000000..d4ea33dda9
--- /dev/null
+++ b/layouts/default/ortho_6x13/readme.md
@@ -0,0 +1,3 @@
+# ortho_6x13
+
+ LAYOUT_ortho_6x13
diff --git a/layouts/default/readme.md b/layouts/default/readme.md
index d5d268ae8b..892dbf1e03 100644
--- a/layouts/default/readme.md
+++ b/layouts/default/readme.md
@@ -1404,6 +1404,21 @@ LAYOUT_ortho_5x12
```
```
+LAYOUT_ortho_5x13
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+```
+
+```
LAYOUT_ortho_5x14
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -1466,6 +1481,23 @@ LAYOUT_ortho_6x4
```
```
+LAYOUT_ortho_6x13
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+```
+
+```
LAYOUT_planck_mit
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│ │ │ │ │ │ │ │ │ │ │ │ │
diff --git a/lib/chibios-contrib b/lib/chibios-contrib
-Subproject da78eb3759b8d1779b237657c7667baa4aa95ca
+Subproject 9d7a7f904ed135e3459cf6d602db56a26872df6
diff --git a/platforms/chibios/converters/promicro_to_imera/_pin_defs.h b/platforms/chibios/converters/promicro_to_imera/_pin_defs.h
new file mode 100644
index 0000000000..475a84d697
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_imera/_pin_defs.h
@@ -0,0 +1,36 @@
+// Copyright 2023 splitkb.com
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 0U
+#define D2 1U
+// GND
+// GND
+#define D1 2U
+#define D0 3U
+#define D4 4U
+#define C6 5U
+#define D7 6U
+#define E6 7U
+#define B4 8U
+#define B5 9U
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 29U
+#define F5 28U
+#define F6 17U
+#define F7 16U
+#define B1 22U
+#define B3 20U
+#define B2 23U
+#define B6 21U
+
+// LEDs
+#define D5 24U // Power LED, default-on
+#define B0 18U // Unconnected
diff --git a/platforms/chibios/converters/promicro_to_imera/converter.mk b/platforms/chibios/converters/promicro_to_imera/converter.mk
new file mode 100644
index 0000000000..bfca20cd99
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_imera/converter.mk
@@ -0,0 +1,10 @@
+# rp2040_ce MCU settings for converting AVR projects
+MCU := RP2040
+BOARD := QMK_PM2040
+BOOTLOADER := rp2040
+
+# These are defaults based on what has been implemented for RP2040 boards
+SERIAL_DRIVER ?= vendor
+WS2812_DRIVER ?= vendor
+BACKLIGHT_DRIVER ?= software
+OPT_DEFS += -DUSB_VBUS_PIN=19U
diff --git a/quantum/keymap_extras/keymap_spanish_latin_america.h b/quantum/keymap_extras/keymap_spanish_latin_america.h
new file mode 100644
index 0000000000..92921811b3
--- /dev/null
+++ b/quantum/keymap_extras/keymap_spanish_latin_america.h
@@ -0,0 +1,105 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*******************************************************************************
+ 88888888888 888 d8b .d888 d8b 888 d8b
+ 888 888 Y8P d88P" Y8P 888 Y8P
+ 888 888 888 888
+ 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
+ 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
+ 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
+ 888 888 888 888 X88 888 888 888 Y8b. 888 X88
+ 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
+ 888 888
+ 888 888
+ 888 888
+ .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
+ d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
+ 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
+ Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
+ "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
+ 888
+ Y8b d88P
+ "Y88P"
+*******************************************************************************/
+
+#pragma once
+#include "keycodes.h"
+// clang-format off
+
+// Aliases
+#define ES_PIPE KC_GRV // |
+#define ES_1 KC_1 // 1
+#define ES_2 KC_2 // 2
+#define ES_3 KC_3 // 3
+#define ES_4 KC_4 // 4
+#define ES_5 KC_5 // 5
+#define ES_6 KC_6 // 6
+#define ES_7 KC_7 // 7
+#define ES_8 KC_8 // 8
+#define ES_9 KC_9 // 9
+#define ES_0 KC_0 // 0
+#define ES_QUOT KC_MINS // '
+#define ES_IQUE KC_EQL // ¿
+#define ES_Q KC_Q // Q
+#define ES_W KC_W // W
+#define ES_E KC_E // E
+#define ES_R KC_R // R
+#define ES_T KC_T // T
+#define ES_Y KC_Y // Y
+#define ES_U KC_U // U
+#define ES_I KC_I // I
+#define ES_O KC_O // O
+#define ES_P KC_P // P
+#define ES_ACUT KC_LBRC // ´ (dead)
+#define ES_PLUS KC_RBRC // +
+#define ES_A KC_A // A
+#define ES_S KC_S // S
+#define ES_D KC_D // D
+#define ES_F KC_F // F
+#define ES_G KC_G // G
+#define ES_H KC_H // H
+#define ES_J KC_J // J
+#define ES_K KC_K // K
+#define ES_L KC_L // L
+#define ES_NTIL KC_SCLN // Ñ
+#define ES_LCBR KC_QUOT // {
+#define ES_RCBR KC_NUHS // }
+#define ES_LABK KC_NUBS // <
+#define ES_Z KC_Z // Z
+#define ES_X KC_X // X
+#define ES_C KC_C // C
+#define ES_V KC_V // V
+#define ES_B KC_B // B
+#define ES_N KC_N // N
+#define ES_M KC_M // M
+#define ES_COMM KC_COMM // ,
+#define ES_DOT KC_DOT // .
+#define ES_MINS KC_SLSH // -
+#define ES_MORD S(ES_PIPE) // °
+#define ES_EXLM S(ES_1) // !
+#define ES_DQUO S(ES_2) // "
+#define ES_NUMB S(ES_3) // #
+#define ES_DLR S(ES_4) // $
+#define ES_PERC S(ES_5) // %
+#define ES_AMPR S(ES_6) // &
+#define ES_SLSH S(ES_7) // /
+#define ES_LPRN S(ES_8) // (
+#define ES_RPRN S(ES_9) // )
+#define ES_EQL S(ES_0) // =
+#define ES_QUES S(ES_QUOT) // ?
+#define ES_IEXL S(ES_IQUE) // ¡
+#define ES_DIAE S(ES_ACUT) // ¨ (dead)
+#define ES_ASTR S(ES_PLUS) // *
+#define ES_LBRC S(ES_LCBR) // [
+#define ES_RBRC S(ES_RCBR) // ]
+#define ES_RABK S(ES_LABK) // >
+#define ES_SCLN S(ES_COMM) // ;
+#define ES_COLN S(ES_DOT) // :
+#define ES_UNDS S(ES_MINS) // _
+#define ES_NOT ALGR(ES_PIPE) // ¬
+#define ES_BSLS ALGR(ES_QUOT) // (backslash)
+#define ES_AT ALGR(ES_Q) // @
+#define ES_TILD ALGR(ES_PLUS) // ~
+#define ES_CIRC ALGR(ES_LCBR) // ^
+
diff --git a/quantum/keymap_extras/sendstring_spanish_latin_america.h b/quantum/keymap_extras/sendstring_spanish_latin_america.h
new file mode 100644
index 0000000000..3bfdf7d5cb
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_spanish_latin_america.h
@@ -0,0 +1,120 @@
+/* Copyright 2023 Juan David Díaz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Sendstring lookup tables for Latam Spanish layouts
+
+#pragma once
+
+#include "send_string.h"
+#include "keymap_spanish_latin_america.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 1, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, ES_1, ES_2, ES_3, ES_4, ES_5, ES_6, ES_QUOT,
+ // ( ) * + , - . /
+ ES_8, ES_9, ES_PLUS, ES_PLUS, ES_COMM, ES_MINS, ES_DOT, ES_7,
+ // 0 1 2 3 4 5 6 7
+ ES_0, ES_1, ES_2, ES_3, ES_4, ES_5, ES_6, ES_7,
+ // 8 9 : ; < = > ?
+ ES_8, ES_9, ES_DOT, ES_COMM, ES_LABK, ES_0, ES_LABK, ES_QUOT,
+ // @ A B C D E F G
+ ES_Q, ES_A, ES_B, ES_C, ES_D, ES_E, ES_F, ES_G,
+ // H I J K L M N O
+ ES_H, ES_I, ES_J, ES_K, ES_L, ES_M, ES_N, ES_O,
+ // P Q R S T U V W
+ ES_P, ES_Q, ES_R, ES_S, ES_T, ES_U, ES_V, ES_W,
+ // X Y Z [ \ ] ^ _
+ ES_X, ES_Y, ES_Z, ES_LCBR, ES_QUOT, ES_RCBR, ES_LCBR, ES_MINS,
+ // ` a b c d e f g
+ ES_RCBR, ES_A, ES_B, ES_C, ES_D, ES_E, ES_F, ES_G,
+ // h i j k l m n o
+ ES_H, ES_I, ES_J, ES_K, ES_L, ES_M, ES_N, ES_O,
+ // p q r s t u v w
+ ES_P, ES_Q, ES_R, ES_S, ES_T, ES_U, ES_V, ES_W,
+ // x y z { | } ~ DEL
+ ES_X, ES_Y, ES_Z, ES_LCBR, ES_PIPE, ES_RCBR, ES_PLUS, KC_DEL
+};
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 4d67a295df..4699c4a4c2 100644
--- a/quantum/led_matrix/led_matrix.c
+++ b/quantum/led_matrix/led_matrix.c
@@ -74,9 +74,6 @@ static uint8_t led_last_enable = UINT8_MAX;
static uint8_t led_last_effect = UINT8_MAX;
static effect_params_t led_effect_params = {0, LED_FLAG_ALL, false};
static led_task_states led_task_state = SYNCING;
-#if LED_MATRIX_TIMEOUT > 0
-static uint32_t led_anykey_timer;
-#endif // LED_MATRIX_TIMEOUT > 0
// double buffers
static uint32_t led_timer_buffer;
@@ -156,9 +153,6 @@ void process_led_matrix(uint8_t row, uint8_t col, bool pressed) {
#ifndef LED_MATRIX_SPLIT
if (!is_keyboard_master()) return;
#endif
-#if LED_MATRIX_TIMEOUT > 0
- led_anykey_timer = 0;
-#endif // LED_MATRIX_TIMEOUT > 0
#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
uint8_t led[LED_HITS_TO_REMEMBER];
@@ -208,22 +202,11 @@ static bool led_matrix_none(effect_params_t *params) {
}
static void led_task_timers(void) {
-#if defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_MATRIX_TIMEOUT > 0
+#if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
uint32_t deltaTime = sync_timer_elapsed32(led_timer_buffer);
-#endif // defined(LED_MATRIX_KEYREACTIVE_ENABLED) || LED_MATRIX_TIMEOUT > 0
+#endif // defined(LED_MATRIX_KEYREACTIVE_ENABLED)
led_timer_buffer = sync_timer_read32();
- // Update double buffer timers
-#if LED_MATRIX_TIMEOUT > 0
- if (led_anykey_timer < UINT32_MAX) {
- if (UINT32_MAX - deltaTime < led_anykey_timer) {
- led_anykey_timer = UINT32_MAX;
- } else {
- led_anykey_timer += deltaTime;
- }
- }
-#endif // LED_MATRIX_TIMEOUT > 0
-
// Update double buffer last hit timers
#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
uint8_t count = last_hit_buffer.count;
@@ -329,7 +312,7 @@ void led_matrix_task(void) {
// while suspended and just do a software shutdown. This is a cheap hack for now.
bool suspend_backlight = suspend_state ||
#if LED_MATRIX_TIMEOUT > 0
- (led_anykey_timer > (uint32_t)LED_MATRIX_TIMEOUT) ||
+ (last_input_activity_elapsed() > (uint32_t)LED_MATRIX_TIMEOUT) ||
#endif // LED_MATRIX_TIMEOUT > 0
false;
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index d93d189827..ebaf3077dc 100644
--- a/quantum/rgb_matrix/rgb_matrix.c
+++ b/quantum/rgb_matrix/rgb_matrix.c
@@ -76,9 +76,6 @@ static uint8_t rgb_last_enable = UINT8_MAX;
static uint8_t rgb_last_effect = UINT8_MAX;
static effect_params_t rgb_effect_params = {0, LED_FLAG_ALL, false};
static rgb_task_states rgb_task_state = SYNCING;
-#if RGB_MATRIX_TIMEOUT > 0
-static uint32_t rgb_anykey_timer;
-#endif // RGB_MATRIX_TIMEOUT > 0
// double buffers
static uint32_t rgb_timer_buffer;
@@ -163,9 +160,6 @@ void process_rgb_matrix(uint8_t row, uint8_t col, bool pressed) {
#ifndef RGB_MATRIX_SPLIT
if (!is_keyboard_master()) return;
#endif
-#if RGB_MATRIX_TIMEOUT > 0
- rgb_anykey_timer = 0;
-#endif // RGB_MATRIX_TIMEOUT > 0
#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
uint8_t led[LED_HITS_TO_REMEMBER];
@@ -246,18 +240,11 @@ static bool rgb_matrix_none(effect_params_t *params) {
}
static void rgb_task_timers(void) {
-#if defined(RGB_MATRIX_KEYREACTIVE_ENABLED) || RGB_MATRIX_TIMEOUT > 0
+#if defined(RGB_MATRIX_KEYREACTIVE_ENABLED)
uint32_t deltaTime = sync_timer_elapsed32(rgb_timer_buffer);
-#endif // defined(RGB_MATRIX_KEYREACTIVE_ENABLED) || RGB_MATRIX_TIMEOUT > 0
+#endif // defined(RGB_MATRIX_KEYREACTIVE_ENABLED)
rgb_timer_buffer = sync_timer_read32();
- // Update double buffer timers
-#if RGB_MATRIX_TIMEOUT > 0
- if (rgb_anykey_timer + deltaTime <= UINT32_MAX) {
- rgb_anykey_timer += deltaTime;
- }
-#endif // RGB_MATRIX_TIMEOUT > 0
-
// Update double buffer last hit timers
#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
uint8_t count = last_hit_buffer.count;
@@ -370,7 +357,7 @@ void rgb_matrix_task(void) {
// while suspended and just do a software shutdown. This is a cheap hack for now.
bool suspend_backlight = suspend_state ||
#if RGB_MATRIX_TIMEOUT > 0
- (rgb_anykey_timer > (uint32_t)RGB_MATRIX_TIMEOUT) ||
+ (last_input_activity_elapsed() > (uint32_t)RGB_MATRIX_TIMEOUT) ||
#endif // RGB_MATRIX_TIMEOUT > 0
false;
diff --git a/quantum/rgblight/rgblight.c b/quantum/rgblight/rgblight.c
index 8ac886d441..8a5240568c 100644
--- a/quantum/rgblight/rgblight.c
+++ b/quantum/rgblight/rgblight.c
@@ -900,12 +900,6 @@ void rgblight_wakeup(void) {
#endif
-__attribute__((weak)) void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
- ws2812_setleds(start_led, num_leds);
-}
-
-#ifndef RGBLIGHT_CUSTOM
-
void rgblight_set(void) {
rgb_led_t *start_led;
uint8_t num_leds = rgblight_ranges.clipping_num_leds;
@@ -915,42 +909,41 @@ void rgblight_set(void) {
led[i].r = 0;
led[i].g = 0;
led[i].b = 0;
-# ifdef RGBW
+#ifdef RGBW
led[i].w = 0;
-# endif
+#endif
}
}
-# ifdef RGBLIGHT_LAYERS
+#ifdef RGBLIGHT_LAYERS
if (rgblight_layers != NULL
-# if !defined(RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF)
+# if !defined(RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF)
&& rgblight_config.enable
-# elif defined(RGBLIGHT_SLEEP)
+# elif defined(RGBLIGHT_SLEEP)
&& !is_suspended
-# endif
+# endif
) {
rgblight_layers_write();
}
-# endif
+#endif
-# ifdef RGBLIGHT_LED_MAP
+#ifdef RGBLIGHT_LED_MAP
rgb_led_t led0[RGBLED_NUM];
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
led0[i] = led[pgm_read_byte(&led_map[i])];
}
start_led = led0 + rgblight_ranges.clipping_start_pos;
-# else
+#else
start_led = led + rgblight_ranges.clipping_start_pos;
-# endif
+#endif
-# ifdef RGBW
+#ifdef RGBW
for (uint8_t i = 0; i < num_leds; i++) {
convert_rgb_to_rgbw(&start_led[i]);
}
-# endif
- rgblight_call_driver(start_led, num_leds);
-}
#endif
+ rgblight_driver.setleds(start_led, num_leds);
+}
#ifdef RGBLIGHT_SPLIT
/* for split keyboard master side */
diff --git a/quantum/rgblight/rgblight.h b/quantum/rgblight/rgblight.h
index a222ab6b9f..d2b8a24b1e 100644
--- a/quantum/rgblight/rgblight.h
+++ b/quantum/rgblight/rgblight.h
@@ -160,6 +160,7 @@ enum RGBLIGHT_EFFECT_MODE {
#include <stdint.h>
#include <stdbool.h>
+#include "rgblight_drivers.h"
#include "progmem.h"
#include "eeconfig.h"
#include "ws2812.h"
diff --git a/quantum/rgblight/rgblight_drivers.c b/quantum/rgblight/rgblight_drivers.c
new file mode 100644
index 0000000000..45b60e1a5f
--- /dev/null
+++ b/quantum/rgblight/rgblight_drivers.c
@@ -0,0 +1,20 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rgblight_drivers.h"
+
+#if defined(RGBLIGHT_WS2812)
+# include "ws2812.h"
+
+const rgblight_driver_t rgblight_driver = {
+ .setleds = ws2812_setleds,
+};
+
+#elif defined(RGBLIGHT_APA102)
+# include "apa102.h"
+
+const rgblight_driver_t rgblight_driver = {
+ .setleds = apa102_setleds,
+};
+
+#endif
diff --git a/quantum/rgblight/rgblight_drivers.h b/quantum/rgblight/rgblight_drivers.h
new file mode 100644
index 0000000000..f7125a6f3d
--- /dev/null
+++ b/quantum/rgblight/rgblight_drivers.h
@@ -0,0 +1,13 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <stdint.h>
+#include "color.h"
+
+typedef struct {
+ void (*setleds)(rgb_led_t *ledarray, uint16_t number_of_leds);
+} rgblight_driver_t;
+
+extern const rgblight_driver_t rgblight_driver;
diff --git a/readme.md b/readme.md
index f0e49a08e9..c277ca0aad 100644
--- a/readme.md
+++ b/readme.md
@@ -1,3 +1,7 @@
+# THIS IS THE DEVELOP BRANCH
+
+Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information.
+
# Quantum Mechanical Keyboard Firmware
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)