summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builddefs/common_features.mk60
-rw-r--r--builddefs/generic_features.mk1
-rw-r--r--data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson407
-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/info_config.hjson102
-rw-r--r--data/mappings/keyboard_aliases.hjson140
-rw-r--r--data/schemas/keyboard.jsonschema10
-rw-r--r--docs/audio_driver.md36
-rw-r--r--docs/config_options.md4
-rw-r--r--docs/feature_converters.md3
-rw-r--r--docs/feature_dip_switch.md21
-rw-r--r--docs/feature_led_matrix.md7
-rw-r--r--docs/feature_macros.md6
-rw-r--r--docs/feature_pointing_device.md46
-rw-r--r--docs/feature_rgb_matrix.md15
-rw-r--r--docs/feature_rgblight.md56
-rw-r--r--docs/feature_split_keyboard.md6
-rw-r--r--docs/feature_tap_dance.md2
-rw-r--r--docs/hardware_keyboard_guidelines.md4
-rw-r--r--docs/i2c_driver.md60
-rw-r--r--docs/ja/config_options.md2
-rw-r--r--docs/ja/feature_split_keyboard.md4
-rw-r--r--docs/ja/i2c_driver.md3
-rw-r--r--docs/quantum_painter.md30
-rw-r--r--docs/reference_info_json.md7
-rw-r--r--docs/reference_keymap_extras.md2
-rw-r--r--docs/squeezing_avr.md1
-rw-r--r--drivers/gpio/mcp23018.c12
-rw-r--r--drivers/gpio/pca9505.c10
-rw-r--r--drivers/gpio/pca9555.c12
-rw-r--r--drivers/haptic/drv2605l.c2
-rw-r--r--drivers/led/apa102.c99
-rw-r--r--drivers/led/apa102.h9
-rw-r--r--drivers/led/aw20216s.c3
-rw-r--r--drivers/led/aw20216s.h11
-rw-r--r--drivers/led/issi/is31fl3218-mono.c142
-rw-r--r--drivers/led/issi/is31fl3218-mono.h75
-rw-r--r--drivers/led/issi/is31fl3218-simple.c147
-rw-r--r--drivers/led/issi/is31fl3218-simple.h73
-rw-r--r--drivers/led/issi/is31fl3218.c53
-rw-r--r--drivers/led/issi/is31fl3218.h38
-rw-r--r--drivers/led/issi/is31fl3731-mono.c224
-rw-r--r--drivers/led/issi/is31fl3731-mono.h286
-rw-r--r--drivers/led/issi/is31fl3731-simple.c239
-rw-r--r--drivers/led/issi/is31fl3731-simple.h282
-rw-r--r--drivers/led/issi/is31fl3731.c98
-rw-r--r--drivers/led/issi/is31fl3731.h328
-rw-r--r--drivers/led/issi/is31fl3733-mono.c245
-rw-r--r--drivers/led/issi/is31fl3733-mono.h366
-rw-r--r--drivers/led/issi/is31fl3733-simple.c278
-rw-r--r--drivers/led/issi/is31fl3733-simple.h366
-rw-r--r--drivers/led/issi/is31fl3733.c93
-rw-r--r--drivers/led/issi/is31fl3733.h10
-rw-r--r--drivers/led/issi/is31fl3736-mono.c234
-rw-r--r--drivers/led/issi/is31fl3736-mono.h261
-rw-r--r--drivers/led/issi/is31fl3736-simple.c252
-rw-r--r--drivers/led/issi/is31fl3736-simple.h261
-rw-r--r--drivers/led/issi/is31fl3736.c76
-rw-r--r--drivers/led/issi/is31fl3736.h2
-rw-r--r--drivers/led/issi/is31fl3737-mono.c231
-rw-r--r--drivers/led/issi/is31fl3737-mono.h299
-rw-r--r--drivers/led/issi/is31fl3737-simple.c249
-rw-r--r--drivers/led/issi/is31fl3737-simple.h299
-rw-r--r--drivers/led/issi/is31fl3737.c78
-rw-r--r--drivers/led/issi/is31fl3737.h2
-rw-r--r--drivers/led/issi/is31fl3741-mono.c249
-rw-r--r--drivers/led/issi/is31fl3741-mono.h516
-rw-r--r--drivers/led/issi/is31fl3741-simple.c278
-rw-r--r--drivers/led/issi/is31fl3741-simple.h516
-rw-r--r--drivers/led/issi/is31fl3741.c101
-rw-r--r--drivers/led/issi/is31fl3741.h2
-rw-r--r--drivers/led/issi/is31fl3742.h299
-rw-r--r--drivers/led/issi/is31fl3742a-mono.c215
-rw-r--r--drivers/led/issi/is31fl3742a-mono.h296
-rw-r--r--drivers/led/issi/is31fl3742a.c219
-rw-r--r--drivers/led/issi/is31fl3742a.h298
-rw-r--r--drivers/led/issi/is31fl3743.h327
-rw-r--r--drivers/led/issi/is31fl3743a-mono.c224
-rw-r--r--drivers/led/issi/is31fl3743a-mono.h328
-rw-r--r--drivers/led/issi/is31fl3743a.c228
-rw-r--r--drivers/led/issi/is31fl3743a.h330
-rw-r--r--drivers/led/issi/is31fl3745-mono.c224
-rw-r--r--drivers/led/issi/is31fl3745-mono.h271
-rw-r--r--drivers/led/issi/is31fl3745.c228
-rw-r--r--drivers/led/issi/is31fl3745.h173
-rw-r--r--drivers/led/issi/is31fl3746.h198
-rw-r--r--drivers/led/issi/is31fl3746a-mono.c216
-rw-r--r--drivers/led/issi/is31fl3746a-mono.h201
-rw-r--r--drivers/led/issi/is31fl3746a.c220
-rw-r--r--drivers/led/issi/is31fl3746a.h203
-rw-r--r--drivers/led/issi/is31flcommon.c330
-rw-r--r--drivers/led/issi/is31flcommon.h95
-rw-r--r--drivers/led/snled27351-mono.c244
-rw-r--r--drivers/led/snled27351-mono.h380
-rw-r--r--drivers/led/snled27351-simple.c266
-rw-r--r--drivers/led/snled27351-simple.h380
-rw-r--r--drivers/led/snled27351.c103
-rw-r--r--drivers/led/snled27351.h4
-rw-r--r--drivers/oled/oled_driver.c9
-rw-r--r--drivers/painter/comms/qp_comms_i2c.c8
-rw-r--r--drivers/painter/sh1106/qp_sh1106.c14
-rw-r--r--drivers/painter/sh1106/qp_sh1106_opcodes.h2
-rw-r--r--drivers/sensors/analog_joystick.c71
-rw-r--r--drivers/sensors/azoteq_iqs5xx.c37
-rw-r--r--drivers/sensors/cirque_pinnacle.c27
-rw-r--r--drivers/sensors/cirque_pinnacle_i2c.c12
-rw-r--r--drivers/sensors/pimoroni_trackball.c4
-rw-r--r--drivers/ws2812.h6
-rw-r--r--keyboards/0xcb/splaytoraid/config.h19
-rw-r--r--keyboards/0xcb/splaytoraid/info.json17
-rw-r--r--keyboards/0xcb/splaytoraid/rp2040_ce/config.h25
-rw-r--r--keyboards/0xcb/splaytoraid/rp2040_ce/info.json21
-rw-r--r--keyboards/1k/keymaps/default/rgblite.h4
-rw-r--r--keyboards/1upkeyboards/1upocarina/config.h70
-rw-r--r--keyboards/1upkeyboards/1upocarina/info.json42
-rw-r--r--keyboards/1upkeyboards/1upslider8/config.h5
-rw-r--r--keyboards/1upkeyboards/1upslider8/info.json3
-rw-r--r--keyboards/1upkeyboards/1upsuper16v3/config.h22
-rw-r--r--keyboards/1upkeyboards/1upsuper16v3/info.json3
-rw-r--r--keyboards/1upkeyboards/pi40/config.h55
-rw-r--r--keyboards/1upkeyboards/pi40/grid_v1_1/config.h6
-rw-r--r--keyboards/1upkeyboards/pi40/info.json51
-rw-r--r--keyboards/1upkeyboards/pi40/mit_v1_0/config.h4
-rw-r--r--keyboards/1upkeyboards/pi40/mit_v1_1/config.h4
-rw-r--r--keyboards/1upkeyboards/pi50/config.h4
-rw-r--r--keyboards/1upkeyboards/pi50/grid/config.h4
-rw-r--r--keyboards/1upkeyboards/pi50/info.json4
-rw-r--r--keyboards/1upkeyboards/pi50/mit/config.h4
-rw-r--r--keyboards/1upkeyboards/pi60/config.h54
-rw-r--r--keyboards/1upkeyboards/pi60/info.json32
-rw-r--r--keyboards/1upkeyboards/pi60_hse/config.h53
-rw-r--r--keyboards/1upkeyboards/pi60_hse/info.json48
-rw-r--r--keyboards/1upkeyboards/pi60_rgb/config.h55
-rw-r--r--keyboards/1upkeyboards/pi60_rgb/info.json49
-rw-r--r--keyboards/1upkeyboards/super16/config.h55
-rw-r--r--keyboards/1upkeyboards/super16/info.json45
-rw-r--r--keyboards/1upkeyboards/super16v2/config.h56
-rw-r--r--keyboards/1upkeyboards/super16v2/info.json37
-rw-r--r--keyboards/1upkeyboards/sweet16v2/kb2040/config.h53
-rw-r--r--keyboards/1upkeyboards/sweet16v2/kb2040/info.json48
-rw-r--r--keyboards/1upkeyboards/sweet16v2/pro_micro/config.h53
-rw-r--r--keyboards/1upkeyboards/sweet16v2/pro_micro/info.json48
-rw-r--r--keyboards/25keys/zinc/rev1/post_config.h20
-rw-r--r--keyboards/25keys/zinc/reva/post_config.h20
-rw-r--r--keyboards/3keyecosystem/2key2/2key2.c35
-rw-r--r--keyboards/3keyecosystem/2key2/config.h72
-rw-r--r--keyboards/3keyecosystem/2key2/info.json58
-rw-r--r--keyboards/3w6/rev1/matrix.c6
-rw-r--r--keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c4
-rw-r--r--keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h4
-rw-r--r--keyboards/3w6/rev2/matrix.c6
-rw-r--r--keyboards/40percentclub/ut47/matrix.c2
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/config.h34
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/info.json29
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/rev_a.c2
-rw-r--r--keyboards/7c8/framework/rules.mk1
-rw-r--r--keyboards/abatskeyboardclub/nayeon/config.h23
-rw-r--r--keyboards/abatskeyboardclub/nayeon/info.json9
-rw-r--r--keyboards/abatskeyboardclub/nayeon/nayeon.c18
-rw-r--r--keyboards/abatskeyboardclub/nayeon/rules.mk3
-rw-r--r--keyboards/abko/ak84bt/ak84bt.c2
-rw-r--r--keyboards/abko/ak84bt/config.h20
-rw-r--r--keyboards/abko/ak84bt/info.json14
-rw-r--r--keyboards/acheron/apollo/87h/delta/config.h54
-rw-r--r--keyboards/acheron/apollo/87h/delta/info.json51
-rw-r--r--keyboards/acheron/apollo/87h/gamma/config.h54
-rw-r--r--keyboards/acheron/apollo/87h/gamma/gamma.c2
-rw-r--r--keyboards/acheron/apollo/87h/gamma/info.json52
-rw-r--r--keyboards/acheron/apollo/87htsc/config.h54
-rw-r--r--keyboards/acheron/apollo/87htsc/info.json51
-rw-r--r--keyboards/acheron/apollo/88htsc/config.h54
-rw-r--r--keyboards/acheron/apollo/88htsc/info.json51
-rw-r--r--keyboards/acheron/themis/87h/config.h2
-rw-r--r--keyboards/acheron/themis/87h/info.json3
-rw-r--r--keyboards/acheron/themis/87htsc/config.h2
-rw-r--r--keyboards/acheron/themis/87htsc/info.json3
-rw-r--r--keyboards/acheron/themis/88htsc/config.h2
-rw-r--r--keyboards/acheron/themis/88htsc/info.json3
-rw-r--r--keyboards/adafruit/macropad/config.h54
-rw-r--r--keyboards/adafruit/macropad/info.json61
-rw-r--r--keyboards/adafruit/macropad/macropad.c25
-rw-r--r--keyboards/adpenrose/akemipad/config.h13
-rw-r--r--keyboards/adpenrose/akemipad/info.json9
-rw-r--r--keyboards/adpenrose/mine/config.h2
-rw-r--r--keyboards/adpenrose/mine/info.json3
-rw-r--r--keyboards/aeboards/ext65/rev2/rev2.c50
-rw-r--r--keyboards/aeboards/satellite/rev1/config.h60
-rw-r--r--keyboards/aeboards/satellite/rev1/info.json52
-rw-r--r--keyboards/aidansmithdotdev/sango/config.h19
-rw-r--r--keyboards/aidansmithdotdev/sango/info.json219
-rw-r--r--keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c32
-rw-r--r--keyboards/aidansmithdotdev/sango/readme.md19
-rw-r--r--keyboards/aidansmithdotdev/sango/rules.mk1
-rw-r--r--keyboards/akko/5087/5087.c2
-rw-r--r--keyboards/akko/5087/config.h15
-rw-r--r--keyboards/akko/5087/info.json6
-rw-r--r--keyboards/akko/5108/5108.c2
-rw-r--r--keyboards/akko/5108/config.h6
-rw-r--r--keyboards/akko/5108/info.json4
-rw-r--r--keyboards/akko/acr87/acr87.c2
-rw-r--r--keyboards/akko/acr87/config.h6
-rw-r--r--keyboards/akko/acr87/info.json4
-rw-r--r--keyboards/akko/top40/config.h7
-rw-r--r--keyboards/akko/top40/info.json4
-rw-r--r--keyboards/akko/top40/top40.c2
-rw-r--r--keyboards/aleblazer/zodiark/config.h8
-rw-r--r--keyboards/aleblazer/zodiark/info.json6
-rw-r--r--keyboards/aliceh66/pianoforte/config.h4
-rw-r--r--keyboards/aliceh66/pianoforte_hs/config.h4
-rw-r--r--keyboards/alpaca/wfeclipse/info.json1
-rw-r--r--keyboards/amjkeyboard/amj96/matrix.c2
-rw-r--r--keyboards/an_achronism/tetromino/config.h2
-rw-r--r--keyboards/annepro2/c15/info.json2
-rw-r--r--keyboards/annepro2/c18/info.json2
-rw-r--r--keyboards/annepro2/info.json2
-rw-r--r--keyboards/arabica37/keymaps/default/config.h4
-rw-r--r--keyboards/argyle/matrix.c6
-rw-r--r--keyboards/atlantis/ak81_ve/config.h48
-rw-r--r--keyboards/atlantis/ak81_ve/info.json51
-rw-r--r--keyboards/atlantis/ps17/config.h43
-rw-r--r--keyboards/atlantis/ps17/info.json9
-rw-r--r--keyboards/axolstudio/yeti/hotswap/config.h48
-rw-r--r--keyboards/axolstudio/yeti/hotswap/hotswap.c2
-rw-r--r--keyboards/axolstudio/yeti/hotswap/info.json37
-rw-r--r--keyboards/aya/keymaps/default/config.h18
-rw-r--r--keyboards/bajjak/bajjak.c47
-rw-r--r--keyboards/bajjak/bajjak.h4
-rw-r--r--keyboards/bajjak/matrix.c16
-rw-r--r--keyboards/bandominedoni/bandominedoni.c6
-rw-r--r--keyboards/bandominedoni/config.h15
-rw-r--r--keyboards/bandominedoni/info.json4
-rw-r--r--keyboards/barleycorn_smd/matrix.c6
-rw-r--r--keyboards/basekeys/trifecta/config.h67
-rw-r--r--keyboards/basekeys/trifecta/info.json50
-rw-r--r--keyboards/bastardkb/charybdis/3x5/config.h7
-rw-r--r--keyboards/bastardkb/charybdis/3x5/info.json3
-rw-r--r--keyboards/bastardkb/charybdis/3x6/config.h7
-rw-r--r--keyboards/bastardkb/charybdis/3x6/info.json5
-rw-r--r--keyboards/bastardkb/charybdis/4x6/config.h7
-rw-r--r--keyboards/bastardkb/charybdis/4x6/info.json3
-rw-r--r--keyboards/bastardkb/charybdis/config.h16
-rw-r--r--keyboards/bastardkb/charybdis/info.json19
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/3x5_3.c132
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/config.h24
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/halconf.h1
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/info.json187
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c24
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/keymaps/via/config.h23
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/keymaps/via/keymap.c170
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/keymaps/via/readme.md47
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/keymaps/via/rules.mk (renamed from keyboards/lpad/keymaps/via/rules.mk)0
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/mcuconf.h7
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/readme.md4
-rw-r--r--keyboards/bastardkb/dilemma/3x5_3/rules.mk20
-rw-r--r--keyboards/bastardkb/dilemma/4x6_4/config.h9
-rw-r--r--keyboards/bastardkb/dilemma/4x6_4/info.json13
-rw-r--r--keyboards/bastardkb/dilemma/config.h3
-rw-r--r--keyboards/bastardkb/scylla/config.h29
-rw-r--r--keyboards/bastardkb/scylla/info.json12
-rw-r--r--keyboards/bastardkb/skeletyl/config.h29
-rw-r--r--keyboards/bastardkb/skeletyl/info.json12
-rw-r--r--keyboards/bastardkb/tbkmini/config.h29
-rw-r--r--keyboards/bastardkb/tbkmini/info.json12
-rw-r--r--keyboards/beekeeb/piantor/info.json30
-rw-r--r--keyboards/biacco42/ergo42/keymaps/default-underglow/config.h4
-rwxr-xr-xkeyboards/binepad/bn006/config.h66
-rwxr-xr-xkeyboards/binepad/bn006/info.json16
-rw-r--r--keyboards/bioi/bluetooth_custom.c10
-rw-r--r--keyboards/black_hellebore/config.h72
-rw-r--r--keyboards/black_hellebore/info.json45
-rw-r--r--keyboards/blockboy/ac980mini/config.h85
-rw-r--r--keyboards/blockboy/ac980mini/info.json47
-rw-r--r--keyboards/boardsource/beiwagon/config.h51
-rw-r--r--keyboards/boardsource/beiwagon/info.json34
-rw-r--r--keyboards/boardsource/equals/48/config.h3
-rw-r--r--keyboards/boardsource/equals/60/config.h3
-rw-r--r--keyboards/boardsource/equals/avr/config.h4
-rw-r--r--keyboards/boardsource/lulu/config.h5
-rw-r--r--keyboards/boardsource/microdox/v2/config.h14
-rw-r--r--keyboards/boardsource/microdox/v2/info.json13
-rw-r--r--keyboards/boardsource/technik_o/config.h52
-rw-r--r--keyboards/boardsource/technik_o/info.json28
-rw-r--r--keyboards/boardsource/technik_s/config.h52
-rw-r--r--keyboards/boardsource/technik_s/info.json28
-rw-r--r--keyboards/boardsource/the_mark/config.h55
-rw-r--r--keyboards/boardsource/the_mark/info.json38
-rw-r--r--keyboards/boardsource/unicorne/config.h4
-rw-r--r--keyboards/boardsource/unicorne/info.json6
-rw-r--r--keyboards/bpiphany/frosty_flake/config.h2
-rw-r--r--keyboards/bpiphany/frosty_flake/info.json3
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/config.h2
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/info.json3
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/config.h2
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/info.json3
-rw-r--r--keyboards/bubble75/hotswap/config.h70
-rw-r--r--keyboards/bubble75/hotswap/info.json31
-rw-r--r--keyboards/canary/canary60rgb/canary60rgb.c2
-rw-r--r--keyboards/canary/canary60rgb/info.json35
-rw-r--r--keyboards/canary/canary60rgb/keymaps/via/config.h2
-rw-r--r--keyboards/canary/canary60rgb/v1/config.h24
-rw-r--r--keyboards/cannonkeys/balance/config.h2
-rw-r--r--keyboards/cannonkeys/bastion60/config.h2
-rw-r--r--keyboards/cannonkeys/bastion65/config.h2
-rw-r--r--keyboards/cannonkeys/bastion75/config.h2
-rw-r--r--keyboards/cannonkeys/brutalv2_1800/config.h2
-rw-r--r--keyboards/cannonkeys/hoodrowg/config.h3
-rw-r--r--keyboards/cannonkeys/rekt1800/config.h3
-rw-r--r--keyboards/cannonkeys/sagittarius/config.h2
-rw-r--r--keyboards/capsunlocked/cu80/v2/ansi/ansi.c4
-rw-r--r--keyboards/capsunlocked/cu80/v2/ansi/config.h8
-rw-r--r--keyboards/capsunlocked/cu80/v2/info.json1
-rw-r--r--keyboards/capsunlocked/cu80/v2/iso/config.h8
-rw-r--r--keyboards/capsunlocked/cu80/v2/iso/iso.c4
-rw-r--r--keyboards/checkerboards/quark_lp/config.h28
-rw-r--r--keyboards/checkerboards/quark_lp/info.json23
-rw-r--r--keyboards/cherrybstudio/cb87rgb/config.h70
-rw-r--r--keyboards/cherrybstudio/cb87rgb/info.json49
-rw-r--r--keyboards/chosfox/cf81/cf81.c2
-rw-r--r--keyboards/chosfox/cf81/config.h8
-rw-r--r--keyboards/chosfox/cf81/info.json4
-rw-r--r--keyboards/chromatonemini/config.h10
-rw-r--r--keyboards/chromatonemini/info.json4
-rw-r--r--keyboards/churrosoft/deck8/rgb/config.h74
-rw-r--r--keyboards/churrosoft/deck8/rgb/info.json54
-rw-r--r--keyboards/clickety_split/leeloo/keymaps/default/config.h2
-rw-r--r--keyboards/clickety_split/leeloo/rev2/config.h22
-rw-r--r--keyboards/clickety_split/leeloo/rev2/info.json6
-rw-r--r--keyboards/clickety_split/leeloo/rev3/config.h22
-rw-r--r--keyboards/clickety_split/leeloo/rev3/info.json6
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/config.h28
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/gen1.c2
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/info.json22
-rw-r--r--keyboards/controllerworks/city42/config.h5
-rw-r--r--keyboards/controllerworks/city42/info.json1
-rw-r--r--keyboards/controllerworks/mini36/config.h3
-rw-r--r--keyboards/controllerworks/mini36/info.json3
-rw-r--r--keyboards/controllerworks/mini36/keymaps/default/config.h2
-rw-r--r--keyboards/controllerworks/mini36/keymaps/via/config.h2
-rw-r--r--keyboards/controllerworks/mini42/config.h1
-rw-r--r--keyboards/controllerworks/mini42/keymaps/default/config.h2
-rw-r--r--keyboards/controllerworks/mini42/keymaps/via/config.h2
-rw-r--r--keyboards/converter/hp_46010a/rules.mk1
-rw-r--r--keyboards/converter/ibm_terminal/matrix.c26
-rw-r--r--keyboards/converter/m0110_usb/m0110.c3
-rw-r--r--keyboards/converter/palm_usb/matrix.c5
-rw-r--r--keyboards/converter/sun_usb/matrix.c2
-rw-r--r--keyboards/crkbd/keymaps/colemak_luna/config.h2
-rw-r--r--keyboards/crkbd/readme.md2
-rw-r--r--keyboards/cxt_studio/config.h25
-rw-r--r--keyboards/cxt_studio/info.json49
-rw-r--r--keyboards/darkproject/kd83a_bfg_edition/config.h15
-rw-r--r--keyboards/darkproject/kd83a_bfg_edition/info.json5
-rw-r--r--keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c2
-rw-r--r--keyboards/darkproject/kd87a_bfg_edition/config.h14
-rw-r--r--keyboards/darkproject/kd87a_bfg_edition/info.json5
-rw-r--r--keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c2
-rw-r--r--keyboards/darmoshark/k3/info.json1
-rw-r--r--keyboards/dasky/reverb/info.json1
-rw-r--r--keyboards/dc01/left/matrix.c36
-rw-r--r--keyboards/deemen17/de60fs/config.h2
-rw-r--r--keyboards/dekunukem/duckypad/config.h7
-rw-r--r--keyboards/dekunukem/duckypad/info.json5
-rw-r--r--keyboards/deng/djam/config.h26
-rw-r--r--keyboards/deng/djam/info.json7
-rw-r--r--keyboards/deng/thirty/config.h57
-rw-r--r--keyboards/deng/thirty/info.json51
-rw-r--r--keyboards/dm9records/ergoinu/config.h2
-rw-r--r--keyboards/dm9records/plaid/rules.mk2
-rw-r--r--keyboards/dm9records/tartan/rules.mk2
-rw-r--r--keyboards/doio/kb12/config.h69
-rw-r--r--keyboards/doio/kb12/info.json52
-rw-r--r--keyboards/doio/kb16/rev1/config.h39
-rw-r--r--keyboards/doio/kb16/rev1/info.json36
-rw-r--r--keyboards/doio/kb16/rev2/config.h39
-rw-r--r--keyboards/doio/kb16/rev2/info.json36
-rw-r--r--keyboards/doio/kb30/config.h56
-rw-r--r--keyboards/doio/kb30/info.json39
-rw-r--r--keyboards/doio/kb38/config.h31
-rw-r--r--keyboards/doio/kb38/info.json11
-rw-r--r--keyboards/doro67/rgb/config.h53
-rw-r--r--keyboards/doro67/rgb/info.json45
-rw-r--r--keyboards/dotmod/dymium65/config.h9
-rw-r--r--keyboards/dotmod/dymium65/info.json4
-rw-r--r--keyboards/dp3000/config.h25
-rw-r--r--keyboards/dp3000/rev1/info.json5
-rw-r--r--keyboards/dp3000/rev2/config.h20
-rw-r--r--keyboards/dp60/config.h53
-rw-r--r--keyboards/dp60/dp60.c2
-rw-r--r--keyboards/dp60/info.json31
-rw-r--r--keyboards/drop/alt/v2/v2.c2
-rw-r--r--keyboards/drop/cstm65/cstm65.c2
-rw-r--r--keyboards/drop/cstm80/cstm80.c2
-rw-r--r--keyboards/drop/ctrl/v2/v2.c2
-rw-r--r--keyboards/drop/sense75/sense75.c2
-rw-r--r--keyboards/drop/shift/v2/v2.c2
-rw-r--r--keyboards/dtisaac/dosa40rgb/config.h74
-rw-r--r--keyboards/dtisaac/dosa40rgb/info.json51
-rw-r--r--keyboards/duck/jetfire/indicator_leds.h2
-rw-r--r--keyboards/duck/jetfire/jetfire.c8
-rw-r--r--keyboards/dumbpad/v1x_oled/v1x_oled.c32
-rw-r--r--keyboards/dumbpad/v3x/config.h42
-rw-r--r--keyboards/dumbpad/v3x/info.json32
-rw-r--r--keyboards/durgod/dgk6x/config.h60
-rw-r--r--keyboards/durgod/dgk6x/galaxy/config.h5
-rw-r--r--keyboards/durgod/dgk6x/galaxy/galaxy.c2
-rw-r--r--keyboards/durgod/dgk6x/hades_ansi/config.h5
-rw-r--r--keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c2
-rw-r--r--keyboards/durgod/dgk6x/hades_iso/hades_iso.c2
-rw-r--r--keyboards/durgod/dgk6x/info.json47
-rw-r--r--keyboards/durgod/dgk6x/venus/config.h5
-rw-r--r--keyboards/durgod/dgk6x/venus/venus.c2
-rw-r--r--keyboards/dztech/dz60rgb/dz60rgb.c2
-rw-r--r--keyboards/dztech/dz60rgb/v1/config.h59
-rw-r--r--keyboards/dztech/dz60rgb/v1/info.json50
-rw-r--r--keyboards/dztech/dz60rgb/v2/config.h57
-rw-r--r--keyboards/dztech/dz60rgb/v2/info.json33
-rw-r--r--keyboards/dztech/dz60rgb/v2_1/config.h57
-rw-r--r--keyboards/dztech/dz60rgb/v2_1/info.json32
-rw-r--r--keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c2
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v1/config.h59
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v1/info.json50
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2/config.h57
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2/info.json35
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2_1/config.h57
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2_1/info.json32
-rw-r--r--keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c2
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v1/config.h59
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v1/info.json50
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2/config.h54
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2/info.json31
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2_1/config.h57
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2_1/info.json32
-rw-r--r--keyboards/dztech/dz64rgb/config.h35
-rw-r--r--keyboards/dztech/dz64rgb/dz64rgb.c2
-rw-r--r--keyboards/dztech/dz64rgb/info.json34
-rw-r--r--keyboards/dztech/dz65rgb/v1/config.h63
-rw-r--r--keyboards/dztech/dz65rgb/v1/info.json40
-rw-r--r--keyboards/dztech/dz65rgb/v1/v1.c2
-rw-r--r--keyboards/dztech/dz65rgb/v2/config.h63
-rw-r--r--keyboards/dztech/dz65rgb/v2/info.json40
-rw-r--r--keyboards/dztech/dz65rgb/v2/v2.c2
-rwxr-xr-xkeyboards/dztech/dz65rgb/v3/config.h59
-rw-r--r--keyboards/dztech/dz65rgb/v3/info.json53
-rwxr-xr-xkeyboards/dztech/dz65rgb/v3/v3.c2
-rw-r--r--keyboards/dztech/tofu/ii/v1/config.h63
-rw-r--r--keyboards/dztech/tofu/ii/v1/info.json54
-rw-r--r--keyboards/dztech/tofu/ii/v1/v1.c2
-rw-r--r--keyboards/dztech/tofu/jr/v1/config.h64
-rw-r--r--keyboards/dztech/tofu/jr/v1/info.json54
-rw-r--r--keyboards/dztech/tofu/jr/v1/v1.c2
-rw-r--r--keyboards/eek/config.h7
-rw-r--r--keyboards/eek/info.json7
-rw-r--r--keyboards/eggsworks/egg58/config.h6
-rw-r--r--keyboards/ein_60/config.h7
-rw-r--r--keyboards/ein_60/info.json7
-rw-r--r--keyboards/elephant42/config.h7
-rw-r--r--keyboards/elephant42/info.json11
-rw-r--r--keyboards/enter67/readme.md26
-rw-r--r--keyboards/enter80/readme.md26
-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/sirind/klein_sd/config.h4
-rw-r--r--keyboards/era/sirind/klein_sd/info.json6
-rw-r--r--keyboards/ergodox_ez/config.h56
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.c53
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.h4
-rw-r--r--keyboards/ergodox_ez/info.json36
-rw-r--r--keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h2
-rw-r--r--keyboards/ergodox_ez/led_i2c.c35
-rw-r--r--keyboards/ergodox_ez/matrix.c17
-rw-r--r--keyboards/ergodox_ez/post_config.h4
-rw-r--r--keyboards/ergodox_ez/shine/info.json3
-rw-r--r--keyboards/ergodox_ez/shine/rules.mk1
-rw-r--r--keyboards/ergodox_stm32/ergodox_stm32.c8
-rw-r--r--keyboards/ergodox_stm32/matrix.c4
-rw-r--r--keyboards/ergotravel/keymaps/default/config.h4
-rw-r--r--keyboards/ergotravel/keymaps/via/config.h4
-rw-r--r--keyboards/evyd13/atom47/rev5/config.h50
-rw-r--r--keyboards/evyd13/atom47/rev5/info.json33
-rw-r--r--keyboards/evyd13/atom47/rev5/rev5.c2
-rw-r--r--keyboards/evyd13/eon40/rules.mk2
-rw-r--r--keyboards/evyd13/eon95/config.h2
-rw-r--r--keyboards/evyd13/eon95/info.json3
-rw-r--r--keyboards/evyd13/quackfire/config.h2
-rw-r--r--keyboards/evyd13/quackfire/info.json3
-rw-r--r--keyboards/evyd13/wasdat/config.h2
-rw-r--r--keyboards/evyd13/wasdat/info.json3
-rw-r--r--keyboards/evyd13/wasdat_code/config.h2
-rw-r--r--keyboards/evyd13/wasdat_code/info.json3
-rw-r--r--keyboards/exclusive/e6_rgb/config.h2
-rw-r--r--keyboards/exclusive/e6_rgb/e6_rgb.c2
-rwxr-xr-xkeyboards/fallacy/indicators.c2
-rwxr-xr-xkeyboards/fallacy/rules.mk2
-rw-r--r--keyboards/fancytech/fancyalice66/config.h12
-rw-r--r--keyboards/fc660c/ad5258.c6
-rw-r--r--keyboards/fc660c/keymaps/default_rgb/config.h2
-rw-r--r--keyboards/fc660c/keymaps/via_rgb/config.h2
-rw-r--r--keyboards/fc980c/ad5258.c6
-rw-r--r--keyboards/fc980c/config.h4
-rw-r--r--keyboards/fc980c/info.json3
-rw-r--r--keyboards/feker/ik75/config.h61
-rw-r--r--keyboards/feker/ik75/ik75.c2
-rw-r--r--keyboards/feker/ik75/info.json48
-rw-r--r--keyboards/ferris/0_2/bling/bling.c2
-rw-r--r--keyboards/ferris/0_2/bling/config.h52
-rw-r--r--keyboards/ferris/0_2/bling/info.json45
-rw-r--r--keyboards/ferris/0_2/matrix.c24
-rwxr-xr-xkeyboards/flashquark/horizon_z/config.h60
-rwxr-xr-xkeyboards/flashquark/horizon_z/horizon_z.c2
-rwxr-xr-xkeyboards/flashquark/horizon_z/info.json33
-rw-r--r--keyboards/flygone60/rev3/readme.md19
-rw-r--r--keyboards/fortitude60/keymaps/default/config.h18
-rw-r--r--keyboards/fortitude60/keymaps/via/config.h18
-rw-r--r--keyboards/foxlab/key65/universal/readme.md2
-rwxr-xr-xkeyboards/fractal/rules.mk2
-rw-r--r--keyboards/frobiac/blackbowl/matrix.c8
-rw-r--r--keyboards/frooastboard/walnut/config.h39
-rw-r--r--keyboards/frooastboard/walnut/info.json37
-rw-r--r--keyboards/frooastboard/walnut/walnut.c2
-rw-r--r--keyboards/fs_streampad/config.h7
-rw-r--r--keyboards/fs_streampad/info.json95
-rw-r--r--keyboards/fs_streampad/keymaps/default/keymap.c19
-rw-r--r--keyboards/fs_streampad/keymaps/via/keymap.c19
-rw-r--r--keyboards/fs_streampad/keymaps/via/rules.mk (renamed from keyboards/enter80/keymaps/via/rules.mk)0
-rw-r--r--keyboards/fs_streampad/readme.md24
-rw-r--r--keyboards/fs_streampad/rules.mk (renamed from keyboards/macro3/rules.mk)0
-rw-r--r--keyboards/gboards/ergotaco/ergotaco.c28
-rw-r--r--keyboards/gboards/ergotaco/ergotaco.h5
-rw-r--r--keyboards/gboards/ergotaco/matrix.c18
-rw-r--r--keyboards/gboards/georgi/georgi.c26
-rw-r--r--keyboards/gboards/georgi/georgi.h5
-rw-r--r--keyboards/gboards/georgi/matrix.c17
-rw-r--r--keyboards/gboards/gergo/gergo.c24
-rw-r--r--keyboards/gboards/gergo/gergo.h5
-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/matrix.c20
-rw-r--r--keyboards/gboards/gergoplex/gergoplex.c34
-rw-r--r--keyboards/gboards/gergoplex/gergoplex.h4
-rw-r--r--keyboards/gboards/gergoplex/matrix.c28
-rw-r--r--keyboards/geekboards/macropad_v2/config.h62
-rw-r--r--keyboards/geekboards/macropad_v2/info.json37
-rw-r--r--keyboards/geekboards/tester/config.h61
-rw-r--r--keyboards/geekboards/tester/info.json41
-rw-r--r--keyboards/geekboards/tester/tester.c2
-rw-r--r--keyboards/geonworks/ee_at/ee_at.c30
-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/hub16/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.json507
-rw-r--r--keyboards/geonworks/w1_at/keymaps/default/keymap.c49
-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.mk (renamed from keyboards/hub20/keymaps/via/rules.mk)0
-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/enter67/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.md32
-rw-r--r--keyboards/geonworks/w1_at/rules.mk2
-rw-r--r--keyboards/geonworks/w1_at/w1_at.c30
-rw-r--r--keyboards/giabalanai/config.h53
-rw-r--r--keyboards/giabalanai/info.json10
-rw-r--r--keyboards/giabalanai/keymaps/default_giabarinaix2/config.h4
-rw-r--r--keyboards/giabalanai/keymaps/via_giabarinaix2/config.h4
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/config.h26
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/gk6.c2
-rw-r--r--keyboards/gizmo_engineering/gk6/info.json18
-rw-r--r--keyboards/gkeyboard/gpad8_2r/config.h53
-rw-r--r--keyboards/gkeyboard/gpad8_2r/info.json48
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h6
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/ansi.c2
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/info.json3
-rw-r--r--keyboards/gmmk/gmmk2/p65/config.h57
-rw-r--r--keyboards/gmmk/gmmk2/p65/info.json51
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/info.json3
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/iso.c2
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/ansi.c2
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/info.json3
-rw-r--r--keyboards/gmmk/gmmk2/p96/config.h55
-rw-r--r--keyboards/gmmk/gmmk2/p96/info.json51
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/info.json3
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/iso.c2
-rw-r--r--keyboards/gmmk/numpad/config.h46
-rw-r--r--keyboards/gmmk/numpad/info.json45
-rw-r--r--keyboards/gmmk/numpad/numpad.c2
-rw-r--r--keyboards/gmmk/pro/config.h51
-rw-r--r--keyboards/gmmk/pro/info.json51
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/ansi.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/config.h22
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/info.json3
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/macos/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/trwnh/config.h2
-rw-r--r--keyboards/gmmk/pro/rev1/iso/config.h22
-rw-r--r--keyboards/gmmk/pro/rev1/iso/info.json3
-rw-r--r--keyboards/gmmk/pro/rev1/iso/iso.c2
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/ansi.c2
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/config.h22
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/info.json3
-rw-r--r--keyboards/gmmk/pro/rev2/iso/config.h22
-rw-r--r--keyboards/gmmk/pro/rev2/iso/info.json3
-rw-r--r--keyboards/gmmk/pro/rev2/iso/iso.c2
-rw-r--r--keyboards/gopolar/gg86/config.h49
-rw-r--r--keyboards/gopolar/gg86/info.json44
-rw-r--r--keyboards/hadron/ver3/config.h4
-rw-r--r--keyboards/hadron/ver3/keymaps/sebaslayout/config.h1
-rw-r--r--keyboards/handwired/6macro/config.h20
-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/alcor_dactyl/config.h4
-rw-r--r--keyboards/handwired/alcor_dactyl/info.json3
-rw-r--r--keyboards/handwired/chiron/keymaps/default/config.h4
-rw-r--r--keyboards/handwired/colorlice/config.h57
-rw-r--r--keyboards/handwired/colorlice/info.json50
-rw-r--r--keyboards/handwired/d48/ds1307.c5
-rw-r--r--keyboards/handwired/dactyl/matrix.c12
-rw-r--r--keyboards/handwired/dactyl_minidox/config.h5
-rw-r--r--keyboards/handwired/dactyl_minidox/info.json4
-rw-r--r--keyboards/handwired/dactyl_minidox/keymaps/dlford/config.h2
-rw-r--r--keyboards/handwired/dygma/raise/config.h32
-rw-r--r--keyboards/handwired/dygma/raise/info.json15
-rw-r--r--keyboards/handwired/frenchdev/frenchdev.c27
-rw-r--r--keyboards/handwired/frenchdev/frenchdev.h4
-rw-r--r--keyboards/handwired/frenchdev/matrix.c30
-rw-r--r--keyboards/handwired/freoduo/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/hnah108/config.h50
-rw-r--r--keyboards/handwired/hnah108/info.json45
-rw-r--r--keyboards/handwired/hnah40rgb/config.h77
-rw-r--r--keyboards/handwired/hnah40rgb/info.json53
-rw-r--r--keyboards/handwired/hnah40rgb/keymaps/default/config.h17
-rw-r--r--keyboards/handwired/macro3/info.json (renamed from keyboards/macro3/info.json)0
-rw-r--r--keyboards/handwired/macro3/keymaps/default/keymap.c (renamed from keyboards/macro3/keymaps/default/keymap.c)0
-rw-r--r--keyboards/handwired/macro3/keymaps/default/rules.mk (renamed from keyboards/macro3/keymaps/default/rules.mk)0
-rw-r--r--keyboards/handwired/macro3/macro3.c (renamed from keyboards/macro3/macro3.c)0
-rw-r--r--keyboards/handwired/macro3/readme.md26
-rw-r--r--keyboards/handwired/macro3/rules.mk1
-rw-r--r--keyboards/handwired/obuwunkunubi/spaget/keymaps/default/rules.mk1
-rw-r--r--keyboards/handwired/onekey/keymaps/apa102/config.h2
-rw-r--r--keyboards/handwired/onekey/keymaps/dip_switch_map/config.h6
-rw-r--r--keyboards/handwired/onekey/keymaps/dip_switch_map/keymap.c14
-rw-r--r--keyboards/handwired/onekey/keymaps/dip_switch_map/rules.mk2
-rw-r--r--keyboards/handwired/onekey/keymaps/i2c_scanner/keymap.c15
-rw-r--r--keyboards/handwired/orbweaver/config.h2
-rw-r--r--keyboards/handwired/orbweaver/info.json1
-rw-r--r--keyboards/handwired/orbweaver/orbweaver.c4
-rw-r--r--keyboards/handwired/p65rgb/config.h53
-rw-r--r--keyboards/handwired/p65rgb/info.json50
-rw-r--r--keyboards/handwired/pterodactyl/matrix.c83
-rw-r--r--keyboards/handwired/steamvan/keymaps/jmdaly/config.h3
-rw-r--r--keyboards/handwired/steamvan/rev1/config.h2
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/config.h9
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/info.json5
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/config.h8
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/halconf.h21
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/info.json18
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk2
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/mcuconf.h22
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/readme.md2
-rw-r--r--keyboards/handwired/ziyoulang_k3_mod/ziyoulang_k3_mod.c117
-rw-r--r--keyboards/heliotrope/config.h75
-rw-r--r--keyboards/heliotrope/info.json45
-rw-r--r--keyboards/helix/pico/config.h8
-rw-r--r--keyboards/helix/rev2/config.h8
-rw-r--r--keyboards/helix/rev3_4rows/config.h12
-rw-r--r--keyboards/helix/rev3_4rows/info.json5
-rw-r--r--keyboards/helix/rev3_5rows/config.h12
-rw-r--r--keyboards/helix/rev3_5rows/info.json5
-rw-r--r--keyboards/hfdkb/ac001/config.h59
-rw-r--r--keyboards/hfdkb/ac001/info.json11
-rw-r--r--keyboards/hillside/46/0_1/config.h1
-rw-r--r--keyboards/hillside/52/0_1/config.h1
-rw-r--r--keyboards/hineybush/hbcp/hbcp.c2
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/config.h71
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/info.json48
-rw-r--r--keyboards/horrortroll/handwired_k552/config.h25
-rw-r--r--keyboards/horrortroll/handwired_k552/info.json23
-rw-r--r--keyboards/horrortroll/lemon40/lemon40.c27
-rw-r--r--keyboards/horrortroll/nyx/rev1/config.h22
-rw-r--r--keyboards/hotdox/left.c34
-rw-r--r--keyboards/hotdox/left.h7
-rw-r--r--keyboards/hotdox76v2/config.h15
-rw-r--r--keyboards/hotdox76v2/info.json12
-rw-r--r--keyboards/hs60/v1/config.h65
-rw-r--r--keyboards/hs60/v1/info.json48
-rw-r--r--keyboards/hs60/v1/v1.c4
-rwxr-xr-xkeyboards/hub16/readme.md24
-rw-r--r--keyboards/hub20/config.h78
-rw-r--r--keyboards/hub20/info.json128
-rwxr-xr-xkeyboards/hub20/readme.md24
-rw-r--r--keyboards/ibm/model_m/mschwingen/matrix.c3
-rw-r--r--keyboards/ibm/model_m/mschwingen/mschwingen.c10
-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
-rwxr-xr-xkeyboards/idobao/id42/config.h58
-rw-r--r--keyboards/idobao/id42/info.json44
-rw-r--r--keyboards/idobao/id61/config.h58
-rw-r--r--keyboards/idobao/id61/info.json44
-rw-r--r--keyboards/idobao/id63/config.h71
-rw-r--r--keyboards/idobao/id63/info.json44
-rw-r--r--keyboards/idobao/id67/config.h52
-rw-r--r--keyboards/idobao/id67/info.json44
-rw-r--r--keyboards/idobao/id75/keymaps/paryz/config.h2
-rw-r--r--keyboards/idobao/id75/keymaps/xaceofspaidsx/config.h19
-rw-r--r--keyboards/idobao/id75/v2/config.h42
-rw-r--r--keyboards/idobao/id75/v2/info.json33
-rw-r--r--keyboards/idobao/id80/v3/ansi/config.h85
-rw-r--r--keyboards/idobao/id80/v3/ansi/info.json44
-rw-r--r--keyboards/idobao/id87/v2/config.h83
-rw-r--r--keyboards/idobao/id87/v2/info.json44
-rwxr-xr-xkeyboards/idobao/montex/v1rgb/config.h66
-rwxr-xr-xkeyboards/idobao/montex/v1rgb/info.json28
-rwxr-xr-xkeyboards/idobao/montex/v2/config.h59
-rwxr-xr-xkeyboards/idobao/montex/v2/info.json29
-rw-r--r--keyboards/idyllic/tinny50_rgb/config.h57
-rw-r--r--keyboards/idyllic/tinny50_rgb/info.json34
-rw-r--r--keyboards/ilumkb/simpler61/config.h56
-rw-r--r--keyboards/ilumkb/simpler61/info.json39
-rw-r--r--keyboards/ilumkb/simpler61/simpler61.c2
-rw-r--r--keyboards/ilumkb/simpler64/config.h57
-rw-r--r--keyboards/ilumkb/simpler64/info.json39
-rw-r--r--keyboards/ilumkb/simpler64/simpler64.c2
-rw-r--r--keyboards/inett_studio/sqx/hotswap/config.h54
-rw-r--r--keyboards/inett_studio/sqx/hotswap/hotswap.c2
-rw-r--r--keyboards/inett_studio/sqx/hotswap/info.json31
-rw-r--r--keyboards/inett_studio/sqx/universal/config.h54
-rw-r--r--keyboards/inett_studio/sqx/universal/info.json31
-rw-r--r--keyboards/inett_studio/sqx/universal/universal.c2
-rw-r--r--keyboards/ingrained/matrix.c14
-rw-r--r--keyboards/inland/kb83/config.h33
-rw-r--r--keyboards/inland/kb83/info.json23
-rw-r--r--keyboards/inland/kb83/kb83.c2
-rw-r--r--keyboards/inland/mk47/config.h7
-rw-r--r--keyboards/inland/mk47/info.json3
-rw-r--r--keyboards/inland/mk47/mk47.c2
-rw-r--r--keyboards/inland/v83p/config.h7
-rw-r--r--keyboards/inland/v83p/info.json5
-rw-r--r--keyboards/inland/v83p/v83p.c2
-rw-r--r--keyboards/input_club/ergodox_infinity/config.h29
-rw-r--r--keyboards/input_club/ergodox_infinity/ergodox_infinity.c2
-rw-r--r--keyboards/input_club/ergodox_infinity/info.json26
-rw-r--r--keyboards/input_club/infinity60/led/config.h2
-rw-r--r--keyboards/input_club/infinity60/led/led.c2
-rw-r--r--keyboards/input_club/k_type/config.h92
-rw-r--r--keyboards/input_club/k_type/i2c_master.c4
-rw-r--r--keyboards/input_club/k_type/i2c_master.h4
-rw-r--r--keyboards/input_club/k_type/info.json45
-rw-r--r--keyboards/input_club/k_type/is31fl3733-dual.c93
-rw-r--r--keyboards/input_club/k_type/is31fl3733-dual.h21
-rw-r--r--keyboards/input_club/k_type/keymaps/andrew-fahmy/config.h36
-rw-r--r--keyboards/input_club/whitefox/config.h2
-rw-r--r--keyboards/input_club/whitefox/info.json25
-rw-r--r--keyboards/input_club/whitefox/whitefox.c2
-rw-r--r--keyboards/jacky_studio/piggy60/rev2/config.h6
-rw-r--r--keyboards/jacky_studio/piggy60/rev2/info.json3
-rw-r--r--keyboards/jadookb/jkb65/config.h56
-rw-r--r--keyboards/jadookb/jkb65/info.json51
-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/na7thana/config.h1
-rw-r--r--keyboards/jels/jels60/v2/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/jian/nsrev2/config.h4
-rw-r--r--keyboards/jian/rev1/post_config.h4
-rw-r--r--keyboards/jian/rev2/post_config.h4
-rw-r--r--keyboards/jkeys_design/gentleman65/config.h21
-rw-r--r--keyboards/jkeys_design/gentleman65/info.json3
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/config.h21
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/info.json3
-rw-r--r--keyboards/jorne/post_config.h6
-rwxr-xr-xkeyboards/joshajohnson/hub16/config.h (renamed from keyboards/hub16/config.h)0
-rw-r--r--keyboards/joshajohnson/hub16/info.json (renamed from keyboards/hub16/info.json)0
-rwxr-xr-xkeyboards/joshajohnson/hub16/keymaps/default/keymap.c (renamed from keyboards/hub16/keymaps/default/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub16/keymaps/peepeetee/config.h (renamed from keyboards/hub16/keymaps/peepeetee/config.h)0
-rw-r--r--keyboards/joshajohnson/hub16/keymaps/peepeetee/keymap.c (renamed from keyboards/hub16/keymaps/peepeetee/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub16/keymaps/peepeetee/rules.mk (renamed from keyboards/hub16/keymaps/peepeetee/rules.mk)0
-rwxr-xr-xkeyboards/joshajohnson/hub16/keymaps/via/keymap.c (renamed from keyboards/hub16/keymaps/via/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub16/keymaps/via/rules.mk (renamed from keyboards/kudox/columner/keymaps/via/rules.mk)0
-rw-r--r--keyboards/joshajohnson/hub16/matrix.c (renamed from keyboards/hub16/matrix.c)0
-rwxr-xr-xkeyboards/joshajohnson/hub16/readme.md24
-rwxr-xr-xkeyboards/joshajohnson/hub16/rules.mk (renamed from keyboards/hub16/rules.mk)0
-rw-r--r--keyboards/joshajohnson/hub20/chconf.h (renamed from keyboards/hub20/chconf.h)0
-rw-r--r--keyboards/joshajohnson/hub20/config.h24
-rw-r--r--keyboards/joshajohnson/hub20/halconf.h (renamed from keyboards/hub20/halconf.h)0
-rw-r--r--keyboards/joshajohnson/hub20/hub20.c (renamed from keyboards/hub20/hub20.c)0
-rw-r--r--keyboards/joshajohnson/hub20/info.json147
-rw-r--r--keyboards/joshajohnson/hub20/keymaps/default/keymap.c (renamed from keyboards/hub20/keymaps/default/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub20/keymaps/left_hand_numpad/keymap.c (renamed from keyboards/hub20/keymaps/left_hand_numpad/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub20/keymaps/right_hand_numpad/keymap.c (renamed from keyboards/hub20/keymaps/right_hand_numpad/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub20/keymaps/via/keymap.c (renamed from keyboards/hub20/keymaps/via/keymap.c)0
-rw-r--r--keyboards/joshajohnson/hub20/keymaps/via/rules.mk (renamed from keyboards/kudox/rev3/keymaps/via/rules.mk)0
-rw-r--r--keyboards/joshajohnson/hub20/mcuconf.h (renamed from keyboards/hub20/mcuconf.h)0
-rwxr-xr-xkeyboards/joshajohnson/hub20/readme.md24
-rw-r--r--keyboards/joshajohnson/hub20/rules.mk (renamed from keyboards/hub20/rules.mk)0
-rw-r--r--keyboards/jukaie/jk01/config.h14
-rw-r--r--keyboards/jukaie/jk01/info.json5
-rw-r--r--keyboards/jukaie/jk01/jk01.c2
-rw-r--r--keyboards/junco/info.json3
-rw-r--r--keyboards/junco/keymaps/default/config.h2
-rw-r--r--keyboards/junco/keymaps/deluxe/config.h2
-rw-r--r--keyboards/junco/keymaps/via/config.h2
-rw-r--r--keyboards/junco/rev1/config.h9
-rw-r--r--keyboards/kabedon/kabedon98e/config.h2
-rw-r--r--keyboards/kabedon/kabedon98e/info.json3
-rw-r--r--keyboards/kagizaraya/chidori/board.c33
-rw-r--r--keyboards/kagizaraya/miniaxe/config.h (renamed from keyboards/miniaxe/config.h)0
-rw-r--r--keyboards/kagizaraya/miniaxe/info.json (renamed from keyboards/miniaxe/info.json)0
-rw-r--r--keyboards/kagizaraya/miniaxe/keymaps/default/keymap.c (renamed from keyboards/miniaxe/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kagizaraya/miniaxe/keymaps/underglow/keymap.c (renamed from keyboards/miniaxe/keymaps/underglow/keymap.c)0
-rw-r--r--keyboards/kagizaraya/miniaxe/keymaps/underglow/rules.mk (renamed from keyboards/kudox_game/rev2/rules.mk)0
-rw-r--r--keyboards/kagizaraya/miniaxe/readme.md16
-rw-r--r--keyboards/kagizaraya/miniaxe/rules.mk (renamed from keyboards/miniaxe/rules.mk)0
-rw-r--r--keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/config.h19
-rw-r--r--keyboards/kapcave/arya/config.h2
-rw-r--r--keyboards/kapcave/gskt00/keymaps/default-poly/config.h2
-rw-r--r--keyboards/kapl/keymaps/default/config.h3
-rw-r--r--keyboards/kapl/keymaps/via/config.h3
-rw-r--r--keyboards/karn/info.json60
-rw-r--r--keyboards/karn/keymaps/colemak/keymap.c24
-rw-r--r--keyboards/karn/keymaps/default/keymap.c26
-rw-r--r--keyboards/kb_elmo/aek2_usb/config.h2
-rw-r--r--keyboards/kb_elmo/aek2_usb/info.json3
-rw-r--r--keyboards/kbdcraft/adam64/adam64.c2
-rw-r--r--keyboards/kbdcraft/adam64/config.h2
-rw-r--r--keyboards/kbdfans/baguette66/rgb/config.h2
-rw-r--r--keyboards/kbdfans/bella/rgb/config.h3
-rw-r--r--keyboards/kbdfans/bella/rgb/rgb.c2
-rw-r--r--keyboards/kbdfans/bella/rgb_iso/config.h3
-rw-r--r--keyboards/kbdfans/bella/rgb_iso/rgb_iso.c2
-rw-r--r--keyboards/kbdfans/boop65/rgb/config.h2
-rw-r--r--keyboards/kbdfans/boop65/rgb/rgb.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v1/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v2/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c2
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/config.h2
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/v3.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/martinffx/config.h19
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/rouge8/config.h19
-rw-r--r--keyboards/kbdfans/kbd75rgb/config.h2
-rw-r--r--keyboards/kbdfans/kbdmini/config.h2
-rw-r--r--keyboards/kbdfans/kbdmini/kbdmini.c2
-rw-r--r--keyboards/kbdfans/kbdpad/mk3/config.h2
-rwxr-xr-xkeyboards/kbdfans/maja/config.h2
-rwxr-xr-xkeyboards/kbdfans/maja/maja.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/planck/rules.mk1
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/tucznak/config.h14
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c120
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/tucznak/readme.md5
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/tucznak/rules.mk22
-rw-r--r--keyboards/kbdfans/niu_mini/rules.mk2
-rw-r--r--keyboards/kbdfans/odin/rgb/config.h2
-rw-r--r--keyboards/kbdmania/kmac/config.h (renamed from keyboards/kmac/config.h)0
-rw-r--r--keyboards/kbdmania/kmac/info.json (renamed from keyboards/kmac/info.json)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/default/keymap.c (renamed from keyboards/kmac/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/default/readme.md (renamed from keyboards/kmac/keymaps/default/readme.md)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/default_tkl_ansi/keymap.c (renamed from keyboards/kmac/keymaps/default_tkl_ansi/keymap.c)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/default_tkl_ansi/readme.md (renamed from keyboards/kmac/keymaps/default_tkl_ansi/readme.md)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/default_tkl_ansi_wkl/keymap.c (renamed from keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/default_tkl_ansi_wkl/readme.md (renamed from keyboards/kmac/keymaps/default_tkl_ansi_wkl/readme.md)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/via/keymap.c (renamed from keyboards/kmac/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kbdmania/kmac/keymaps/via/rules.mk (renamed from keyboards/kira80/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kbdmania/kmac/kmac.c (renamed from keyboards/kmac/kmac.c)0
-rw-r--r--keyboards/kbdmania/kmac/matrix.c (renamed from keyboards/kmac/matrix.c)0
-rw-r--r--keyboards/kbdmania/kmac/readme.md21
-rw-r--r--keyboards/kbdmania/kmac/rules.mk (renamed from keyboards/kmac/rules.mk)0
-rw-r--r--keyboards/kbdmania/kmac_pad/config.h (renamed from keyboards/kmac_pad/config.h)0
-rw-r--r--keyboards/kbdmania/kmac_pad/info.json (renamed from keyboards/kmac_pad/info.json)0
-rw-r--r--keyboards/kbdmania/kmac_pad/keymaps/default/keymap.c (renamed from keyboards/kmac_pad/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kbdmania/kmac_pad/keymaps/default/readme.md (renamed from keyboards/kmac_pad/keymaps/default/readme.md)0
-rw-r--r--keyboards/kbdmania/kmac_pad/kmac_pad.c (renamed from keyboards/kmac_pad/kmac_pad.c)0
-rw-r--r--keyboards/kbdmania/kmac_pad/matrix.c (renamed from keyboards/kmac_pad/matrix.c)0
-rw-r--r--keyboards/kbdmania/kmac_pad/readme.md56
-rw-r--r--keyboards/kbdmania/kmac_pad/rules.mk (renamed from keyboards/kmac_pad/rules.mk)0
-rw-r--r--keyboards/kc60/mod_rgb_underglow.md4
-rw-r--r--keyboards/keebio/bamfk4/config.h2
-rw-r--r--keyboards/keebio/cepstrum/rev1/config.h2
-rw-r--r--keyboards/keebio/chocopad/rev2/config.h2
-rw-r--r--keyboards/keebio/convolution/rev1/config.h2
-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/iris/rev6/config.h2
-rw-r--r--keyboards/keebio/iris/rev7/config.h2
-rw-r--r--keyboards/keebio/iris/rev8/config.h2
-rw-r--r--keyboards/keebio/nyquist/rev4/config.h2
-rw-r--r--keyboards/keebio/nyquistpad/config.h2
-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/keebio/sinc/rev1/config.h1
-rw-r--r--keyboards/keebio/sinc/rev1/info.json3
-rw-r--r--keyboards/keebio/sinc/rev2/config.h1
-rw-r--r--keyboards/keebio/sinc/rev2/info.json3
-rw-r--r--keyboards/keebio/sinc/rev3/config.h2
-rw-r--r--keyboards/keebio/sinc/rev4/config.h2
-rw-r--r--keyboards/keebio/viterbi/keymaps/default/config.h4
-rw-r--r--keyboards/keybee/keybee65/config.h2
-rw-r--r--keyboards/keyboardio/model01/keymaps/tw1t611/config.h19
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h2
-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/keychron/c1_pro/ansi/rgb/config.h2
-rw-r--r--keyboards/keychron/c1_pro/ansi/rgb/rgb.c2
-rw-r--r--keyboards/keychron/c1_pro/ansi/white/config.h15
-rw-r--r--keyboards/keychron/c1_pro/ansi/white/info.json6
-rw-r--r--keyboards/keychron/c1_pro/ansi/white/white.c2
-rw-r--r--keyboards/keychron/c2_pro/ansi/rgb/config.h2
-rw-r--r--keyboards/keychron/c2_pro/ansi/rgb/rgb.c2
-rw-r--r--keyboards/keychron/c2_pro/ansi/white/config.h15
-rw-r--r--keyboards/keychron/c2_pro/ansi/white/info.json6
-rw-r--r--keyboards/keychron/c2_pro/ansi/white/white.c2
-rw-r--r--keyboards/keychron/q0/base/base.c2
-rw-r--r--keyboards/keychron/q0/config.h2
-rw-r--r--keyboards/keychron/q0/plus/plus.c2
-rw-r--r--keyboards/keychron/q10/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q10/config.h2
-rw-r--r--keyboards/keychron/q10/iso_encoder/iso_encoder.c2
-rwxr-xr-xkeyboards/keychron/q11/ansi_encoder/ansi_encoder.c2
-rwxr-xr-xkeyboards/keychron/q11/config.h7
-rwxr-xr-xkeyboards/keychron/q11/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q12/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q12/config.h2
-rw-r--r--keyboards/keychron/q12/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q1v1/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q1v1/ansi/keymaps/gtg465x/config.h2
-rw-r--r--keyboards/keychron/q1v1/ansi/keymaps/mkillewald/config.h2
-rw-r--r--keyboards/keychron/q1v1/ansi/keymaps/teimor/config.h2
-rw-r--r--keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q1v1/config.h2
-rw-r--r--keyboards/keychron/q1v1/iso/iso.c2
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h2
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h2
-rw-r--r--keyboards/keychron/q1v1/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q1v2/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q1v2/config.h2
-rw-r--r--keyboards/keychron/q1v2/iso/iso.c2
-rw-r--r--keyboards/keychron/q1v2/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q1v2/jis/jis.c2
-rw-r--r--keyboards/keychron/q1v2/jis_encoder/jis_encoder.c2
-rw-r--r--keyboards/keychron/q2/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q2/ansi/keymaps/ladduro/config.h2
-rw-r--r--keyboards/keychron/q2/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q2/config.h2
-rw-r--r--keyboards/keychron/q2/iso/iso.c2
-rw-r--r--keyboards/keychron/q2/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q2/jis/jis.c2
-rw-r--r--keyboards/keychron/q2/jis_encoder/jis_encoder.c2
-rw-r--r--keyboards/keychron/q3/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q3/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q3/config.h2
-rw-r--r--keyboards/keychron/q3/iso/iso.c2
-rw-r--r--keyboards/keychron/q3/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q3/jis/jis.c2
-rw-r--r--keyboards/keychron/q3/jis_encoder/jis_encoder.c2
-rw-r--r--keyboards/keychron/q4/ansi/v1/v1.c2
-rw-r--r--keyboards/keychron/q4/ansi/v2/v2.c2
-rw-r--r--keyboards/keychron/q4/config.h2
-rw-r--r--keyboards/keychron/q4/iso/iso.c2
-rw-r--r--keyboards/keychron/q5/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q5/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q5/config.h2
-rw-r--r--keyboards/keychron/q5/iso/iso.c2
-rw-r--r--keyboards/keychron/q5/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q6/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q6/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q6/config.h2
-rw-r--r--keyboards/keychron/q6/iso/iso.c2
-rw-r--r--keyboards/keychron/q6/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/q60/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q60/config.h2
-rw-r--r--keyboards/keychron/q65/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q65/config.h2
-rw-r--r--keyboards/keychron/q7/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q7/config.h2
-rw-r--r--keyboards/keychron/q7/iso/iso.c2
-rw-r--r--keyboards/keychron/q8/ansi/ansi.c31
-rw-r--r--keyboards/keychron/q8/ansi/config.h5
-rw-r--r--keyboards/keychron/q8/ansi/info.json96
-rw-r--r--keyboards/keychron/q8/ansi/rules.mk15
-rw-r--r--keyboards/keychron/q8/ansi_encoder/ansi_encoder.c31
-rw-r--r--keyboards/keychron/q8/ansi_encoder/config.h8
-rw-r--r--keyboards/keychron/q8/ansi_encoder/info.json104
-rw-r--r--keyboards/keychron/q8/ansi_encoder/rules.mk16
-rw-r--r--keyboards/keychron/q8/config.h62
-rw-r--r--keyboards/keychron/q8/info.json60
-rw-r--r--keyboards/keychron/q8/iso/config.h5
-rw-r--r--keyboards/keychron/q8/iso/info.json98
-rw-r--r--keyboards/keychron/q8/iso/iso.c31
-rw-r--r--keyboards/keychron/q8/iso/rules.mk15
-rw-r--r--keyboards/keychron/q8/iso_encoder/config.h8
-rw-r--r--keyboards/keychron/q8/iso_encoder/info.json104
-rw-r--r--keyboards/keychron/q8/iso_encoder/iso_encoder.c31
-rw-r--r--keyboards/keychron/q8/iso_encoder/rules.mk16
-rw-r--r--keyboards/keychron/q8/readme.md14
-rw-r--r--keyboards/keychron/q9/ansi/ansi.c2
-rw-r--r--keyboards/keychron/q9/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/q9/config.h2
-rw-r--r--keyboards/keychron/q9/iso/iso.c2
-rw-r--r--keyboards/keychron/q9/iso_encoder/iso_encoder.c2
-rwxr-xr-xkeyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c2
-rwxr-xr-xkeyboards/keychron/q9_plus/config.h2
-rw-r--r--keyboards/keychron/s1/ansi/rgb/config.h2
-rw-r--r--keyboards/keychron/s1/ansi/rgb/rgb.c2
-rw-r--r--keyboards/keychron/s1/ansi/white/config.h38
-rw-r--r--keyboards/keychron/s1/ansi/white/info.json26
-rw-r--r--keyboards/keychron/s1/ansi/white/white.c2
-rw-r--r--keyboards/keychron/v1/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v1/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v1/config.h2
-rw-r--r--keyboards/keychron/v1/iso/iso.c2
-rw-r--r--keyboards/keychron/v1/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/v1/jis/jis.c2
-rw-r--r--keyboards/keychron/v1/jis_encoder/jis_encoder.c2
-rw-r--r--keyboards/keychron/v10/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v10/config.h2
-rw-r--r--keyboards/keychron/v10/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/v2/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v2/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v2/config.h2
-rw-r--r--keyboards/keychron/v2/iso/iso.c2
-rw-r--r--keyboards/keychron/v2/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/v2/jis/jis.c2
-rw-r--r--keyboards/keychron/v2/jis_encoder/jis_encoder.c2
-rw-r--r--keyboards/keychron/v3/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v3/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v3/config.h2
-rw-r--r--keyboards/keychron/v3/iso/iso.c2
-rw-r--r--keyboards/keychron/v3/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/v3/jis/jis.c2
-rw-r--r--keyboards/keychron/v3/jis_encoder/jis_encoder.c2
-rw-r--r--keyboards/keychron/v4/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v4/config.h2
-rw-r--r--keyboards/keychron/v4/iso/iso.c2
-rw-r--r--keyboards/keychron/v5/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v5/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v5/config.h2
-rw-r--r--keyboards/keychron/v5/iso/iso.c2
-rw-r--r--keyboards/keychron/v5/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/v6/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v6/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v6/config.h2
-rw-r--r--keyboards/keychron/v6/iso/iso.c2
-rw-r--r--keyboards/keychron/v6/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keychron/v7/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v7/config.h2
-rw-r--r--keyboards/keychron/v7/iso/iso.c2
-rw-r--r--keyboards/keychron/v8/ansi/ansi.c2
-rw-r--r--keyboards/keychron/v8/ansi_encoder/ansi_encoder.c2
-rw-r--r--keyboards/keychron/v8/config.h2
-rw-r--r--keyboards/keychron/v8/iso/iso.c2
-rw-r--r--keyboards/keychron/v8/iso_encoder/iso_encoder.c2
-rw-r--r--keyboards/keyhive/ut472/keymaps/annihilator6000/config.h19
-rw-r--r--keyboards/kezewa/enter67/info.json (renamed from keyboards/enter67/info.json)0
-rw-r--r--keyboards/kezewa/enter67/keymaps/default/keymap.c (renamed from keyboards/enter67/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kezewa/enter67/keymaps/via/keymap.c (renamed from keyboards/enter67/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kezewa/enter67/keymaps/via/rules.mk (renamed from keyboards/era/klein/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kezewa/enter67/readme.md27
-rw-r--r--keyboards/kezewa/enter67/rules.mk (renamed from keyboards/enter67/rules.mk)0
-rw-r--r--keyboards/kezewa/enter80/info.json (renamed from keyboards/enter80/info.json)0
-rw-r--r--keyboards/kezewa/enter80/keymaps/default/keymap.c (renamed from keyboards/enter80/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kezewa/enter80/keymaps/via/keymap.c (renamed from keyboards/enter80/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kezewa/enter80/keymaps/via/rules.mk (renamed from keyboards/kudox_game/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kezewa/enter80/matrix_diagram.md (renamed from keyboards/enter80/matrix_diagram.md)0
-rw-r--r--keyboards/kezewa/enter80/readme.md27
-rw-r--r--keyboards/kezewa/enter80/rules.mk (renamed from keyboards/enter80/rules.mk)0
-rw-r--r--keyboards/kikoslab/kl90/config.h19
-rw-r--r--keyboards/kikoslab/kl90/keymaps/via/keymap.c34
-rw-r--r--keyboards/kikoslab/kl90/keymaps/via/rules.mk3
-rw-r--r--keyboards/kinesis/alvicstep/matrix.c2
-rw-r--r--keyboards/kinesis/keymaps/tw1t611/config.h3
-rw-r--r--keyboards/kingly_keys/ropro/rules.mk1
-rw-r--r--keyboards/kingly_keys/soap/rules.mk1
-rw-r--r--keyboards/kira/kira75/config.h (renamed from keyboards/kira75/config.h)0
-rw-r--r--keyboards/kira/kira75/info.json (renamed from keyboards/kira75/info.json)0
-rw-r--r--keyboards/kira/kira75/keymaps/default/keymap.c (renamed from keyboards/kira75/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kira/kira75/keymaps/default/readme.md (renamed from keyboards/kira75/keymaps/default/readme.md)0
-rw-r--r--keyboards/kira/kira75/kira75.h (renamed from keyboards/kira75/kira75.h)0
-rw-r--r--keyboards/kira/kira75/readme.md15
-rw-r--r--keyboards/kira/kira75/rules.mk (renamed from keyboards/kira75/rules.mk)0
-rw-r--r--keyboards/kira/kira80/info.json (renamed from keyboards/kira80/info.json)0
-rw-r--r--keyboards/kira/kira80/keymaps/ansi/keymap.c (renamed from keyboards/kira80/keymaps/ansi/keymap.c)0
-rw-r--r--keyboards/kira/kira80/keymaps/ansi/readme.md (renamed from keyboards/kira80/keymaps/ansi/readme.md)0
-rw-r--r--keyboards/kira/kira80/keymaps/ansi_wkl/keymap.c (renamed from keyboards/kira80/keymaps/ansi_wkl/keymap.c)0
-rw-r--r--keyboards/kira/kira80/keymaps/ansi_wkl/readme.md (renamed from keyboards/kira80/keymaps/ansi_wkl/readme.md)0
-rw-r--r--keyboards/kira/kira80/keymaps/default/keymap.c (renamed from keyboards/kira80/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kira/kira80/keymaps/default/readme.md (renamed from keyboards/kira80/keymaps/default/readme.md)0
-rw-r--r--keyboards/kira/kira80/keymaps/iso/keymap.c (renamed from keyboards/kira80/keymaps/iso/keymap.c)0
-rw-r--r--keyboards/kira/kira80/keymaps/iso/readme.md (renamed from keyboards/kira80/keymaps/iso/readme.md)0
-rw-r--r--keyboards/kira/kira80/keymaps/via/keymap.c (renamed from keyboards/kira80/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kira/kira80/keymaps/via/readme.md (renamed from keyboards/kira80/keymaps/via/readme.md)0
-rw-r--r--keyboards/kira/kira80/keymaps/via/rules.mk (renamed from keyboards/kmac/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kira/kira80/readme.md50
-rw-r--r--keyboards/kira/kira80/rules.mk (renamed from keyboards/kira80/rules.mk)0
-rw-r--r--keyboards/kira75/readme.md15
-rw-r--r--keyboards/kira80/readme.md50
-rw-r--r--keyboards/kmac/readme.md21
-rw-r--r--keyboards/kmac_pad/readme.md56
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/rev1/config.h2
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/rev1/rules.mk2
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/rev2/config.h2
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/rev2/rev2.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/config.h2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/rev2.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev2/config.h2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev2/rev2.c2
-rw-r--r--keyboards/kprepublic/bm80hsrgb/config.h2
-rw-r--r--keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h2
-rw-r--r--keyboards/kprepublic/bm80v2/bm80v2.c2
-rw-r--r--keyboards/kprepublic/bm80v2/config.h2
-rw-r--r--keyboards/kprepublic/bm80v2/keymaps/saph1s/config.h2
-rw-r--r--keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c2
-rw-r--r--keyboards/kprepublic/bm80v2_iso/config.h2
-rw-r--r--keyboards/kprepublic/cstc40/config.h4
-rw-r--r--keyboards/kprepublic/cstc40/daughterboard/daughterboard.c2
-rw-r--r--keyboards/kprepublic/cstc40/single_pcb/single_pcb.c2
-rw-r--r--keyboards/kudox/columner/keymaps/default/config.h17
-rw-r--r--keyboards/kudox/columner/keymaps/default/keymap.c63
-rw-r--r--keyboards/kudox/columner/keymaps/via/keymap.c76
-rw-r--r--keyboards/kudox/columner/readme.md32
-rw-r--r--keyboards/kudox/readme.md27
-rw-r--r--keyboards/kudox/rev1/keymaps/default/config.h17
-rw-r--r--keyboards/kudox/rev1/keymaps/default/keymap.c49
-rw-r--r--keyboards/kudox/rev1/keymaps/jis/config.h17
-rw-r--r--keyboards/kudox/rev1/keymaps/jis/keymap.c48
-rw-r--r--keyboards/kudox/rev1/keymaps/x1/config.h17
-rw-r--r--keyboards/kudox/rev1/keymaps/x1/keymap.c73
-rw-r--r--keyboards/kudox/rev2/keymaps/default/config.h17
-rw-r--r--keyboards/kudox/rev2/keymaps/default/keymap.c49
-rw-r--r--keyboards/kudox/rev2/keymaps/jis/config.h17
-rw-r--r--keyboards/kudox/rev2/keymaps/jis/keymap.c48
-rw-r--r--keyboards/kudox/rev3/keymaps/default/keymap.c70
-rw-r--r--keyboards/kudox/rev3/keymaps/jis/keymap.c70
-rw-r--r--keyboards/kudox/rev3/keymaps/via/keymap.c77
-rw-r--r--keyboards/kudox/rules.mk16
-rw-r--r--keyboards/kudox_full/readme.md32
-rw-r--r--keyboards/kudox_full/rules.mk18
-rw-r--r--keyboards/kudox_game/keymaps/default/config.h18
-rw-r--r--keyboards/kudox_game/keymaps/default/keymap.c71
-rw-r--r--keyboards/kudox_game/keymaps/via/keymap.c78
-rw-r--r--keyboards/kudox_game/readme.md26
-rw-r--r--keyboards/kudox_game/rules.mk14
-rw-r--r--keyboards/kumaokobo/kudox/columner/config.h (renamed from keyboards/kudox/columner/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox/columner/info.json (renamed from keyboards/kudox/columner/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox/columner/keymaps/default/keymap.c66
-rw-r--r--keyboards/kumaokobo/kudox/columner/keymaps/default/readme.md (renamed from keyboards/kudox/columner/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/columner/keymaps/via/keymap.c79
-rw-r--r--keyboards/kumaokobo/kudox/columner/keymaps/via/readme.md (renamed from keyboards/kudox/columner/keymaps/via/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/columner/keymaps/via/rules.mk (renamed from keyboards/laser_ninja/pumpkin_pad/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox/columner/readme.md32
-rw-r--r--keyboards/kumaokobo/kudox/columner/rules.mk (renamed from keyboards/era/klein/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox/config.h (renamed from keyboards/kudox/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox/readme.md27
-rw-r--r--keyboards/kumaokobo/kudox/rev1/config.h (renamed from keyboards/kudox/rev1/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox/rev1/info.json (renamed from keyboards/kudox/rev1/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox/rev1/keymaps/default/keymap.c52
-rw-r--r--keyboards/kumaokobo/kudox/rev1/keymaps/default/readme.md (renamed from keyboards/kudox/rev1/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev1/keymaps/jis/keymap.c51
-rw-r--r--keyboards/kumaokobo/kudox/rev1/keymaps/jis/readme.md (renamed from keyboards/kudox/rev1/keymaps/jis/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev1/keymaps/x1/keymap.c76
-rw-r--r--keyboards/kumaokobo/kudox/rev1/keymaps/x1/readme.md (renamed from keyboards/kudox/rev1/keymaps/x1/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev1/rules.mk (renamed from keyboards/kudox/columner/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox/rev2/config.h (renamed from keyboards/kudox/rev2/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox/rev2/info.json (renamed from keyboards/kudox/rev2/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox/rev2/keymaps/default/keymap.c52
-rw-r--r--keyboards/kumaokobo/kudox/rev2/keymaps/default/readme.md (renamed from keyboards/kudox/rev2/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev2/keymaps/jis/keymap.c51
-rw-r--r--keyboards/kumaokobo/kudox/rev2/keymaps/jis/readme.md (renamed from keyboards/kudox/rev2/keymaps/jis/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev2/rules.mk (renamed from keyboards/kudox/rev1/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/config.h (renamed from keyboards/kudox/rev3/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/info.json (renamed from keyboards/kudox/rev3/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/default/keymap.c73
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/default/readme.md (renamed from keyboards/kudox/rev3/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/jis/keymap.c73
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/jis/readme.md (renamed from keyboards/kudox/rev3/keymaps/jis/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/via/keymap.c80
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/via/readme.md (renamed from keyboards/kudox/rev3/keymaps/via/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/keymaps/via/rules.mk (renamed from keyboards/lefty/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox/rev3/rules.mk (renamed from keyboards/kudox/rev2/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox/rules.mk16
-rw-r--r--keyboards/kumaokobo/kudox_full/config.h (renamed from keyboards/kudox_full/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox_full/keymaps/default/keymap.c (renamed from keyboards/kudox_full/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kumaokobo/kudox_full/keymaps/jis/keymap.c (renamed from keyboards/kudox_full/keymaps/jis/keymap.c)0
-rw-r--r--keyboards/kumaokobo/kudox_full/keymaps/via/keymap.c (renamed from keyboards/kudox_full/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kumaokobo/kudox_full/keymaps/via/rules.mk (renamed from keyboards/kudox_full/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox_full/kudox_full.c (renamed from keyboards/kudox_full/kudox_full.c)0
-rw-r--r--keyboards/kumaokobo/kudox_full/post_config.h (renamed from keyboards/kudox_full/post_config.h)0
-rw-r--r--keyboards/kumaokobo/kudox_full/readme.md32
-rw-r--r--keyboards/kumaokobo/kudox_full/rev1/config.h (renamed from keyboards/kudox_full/rev1/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox_full/rev1/info.json (renamed from keyboards/kudox_full/rev1/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox_full/rev1/rules.mk (renamed from keyboards/kudox_full/rev1/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox_full/rules.mk18
-rw-r--r--keyboards/kumaokobo/kudox_game/config.h (renamed from keyboards/kudox_game/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox_game/info.json (renamed from keyboards/kudox_game/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox_game/keymaps/default/keymap.c74
-rw-r--r--keyboards/kumaokobo/kudox_game/keymaps/default/readme.md (renamed from keyboards/kudox_game/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/kudox_game/keymaps/via/keymap.c81
-rw-r--r--keyboards/kumaokobo/kudox_game/keymaps/via/readme.md (renamed from keyboards/kudox_game/keymaps/via/readme.md)0
-rw-r--r--[-rwxr-xr-x]keyboards/kumaokobo/kudox_game/keymaps/via/rules.mk (renamed from keyboards/mnk1800s/keymaps/via/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox_game/readme.md26
-rw-r--r--keyboards/kumaokobo/kudox_game/rev1/config.h (renamed from keyboards/kudox_game/rev1/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox_game/rev1/info.json (renamed from keyboards/kudox_game/rev1/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox_game/rev1/rules.mk (renamed from keyboards/kudox/rev3/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox_game/rev2/config.h (renamed from keyboards/kudox_game/rev2/config.h)0
-rw-r--r--keyboards/kumaokobo/kudox_game/rev2/info.json (renamed from keyboards/kudox_game/rev2/info.json)0
-rw-r--r--keyboards/kumaokobo/kudox_game/rev2/rules.mk (renamed from keyboards/miniaxe/keymaps/underglow/rules.mk)0
-rw-r--r--keyboards/kumaokobo/kudox_game/rules.mk14
-rw-r--r--keyboards/kumaokobo/pico/65keys/config.h (renamed from keyboards/pico/65keys/config.h)0
-rw-r--r--keyboards/kumaokobo/pico/65keys/info.json (renamed from keyboards/pico/65keys/info.json)0
-rw-r--r--keyboards/kumaokobo/pico/65keys/keymaps/default/keymap.c49
-rw-r--r--keyboards/kumaokobo/pico/65keys/keymaps/default/readme.md (renamed from keyboards/pico/65keys/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/pico/65keys/keymaps/jis/keymap.c50
-rw-r--r--keyboards/kumaokobo/pico/65keys/keymaps/jis/readme.md (renamed from keyboards/pico/65keys/keymaps/jis/readme.md)0
-rw-r--r--keyboards/kumaokobo/pico/65keys/rules.mk (renamed from keyboards/kudox_game/rev1/rules.mk)0
-rw-r--r--keyboards/kumaokobo/pico/70keys/config.h (renamed from keyboards/pico/70keys/config.h)0
-rw-r--r--keyboards/kumaokobo/pico/70keys/info.json (renamed from keyboards/pico/70keys/info.json)0
-rw-r--r--keyboards/kumaokobo/pico/70keys/keymaps/default/keymap.c49
-rw-r--r--keyboards/kumaokobo/pico/70keys/keymaps/default/readme.md (renamed from keyboards/pico/70keys/keymaps/default/readme.md)0
-rw-r--r--keyboards/kumaokobo/pico/70keys/keymaps/jis/keymap.c50
-rw-r--r--keyboards/kumaokobo/pico/70keys/keymaps/jis/readme.md (renamed from keyboards/pico/70keys/keymaps/jis/readme.md)0
-rw-r--r--keyboards/kumaokobo/pico/70keys/rules.mk (renamed from keyboards/lefty/rev1/rules.mk)0
-rw-r--r--keyboards/kumaokobo/pico/config.h (renamed from keyboards/pico/config.h)0
-rw-r--r--keyboards/kumaokobo/pico/readme.md24
-rw-r--r--keyboards/kumaokobo/pico/rules.mk16
-rw-r--r--keyboards/kuro/kuro65/config.h2
-rw-r--r--keyboards/kwstudio/scorpio/config.h20
-rw-r--r--keyboards/laneware/lpad/config.h (renamed from keyboards/lpad/config.h)0
-rw-r--r--keyboards/laneware/lpad/info.json (renamed from keyboards/lpad/info.json)0
-rw-r--r--keyboards/laneware/lpad/keymaps/default/keymap.c (renamed from keyboards/lpad/keymaps/default/keymap.c)0
-rw-r--r--keyboards/laneware/lpad/keymaps/via/keymap.c (renamed from keyboards/lpad/keymaps/via/keymap.c)0
-rw-r--r--keyboards/laneware/lpad/keymaps/via/rules.mk (renamed from keyboards/lw75/keymaps/via/rules.mk)0
-rw-r--r--keyboards/laneware/lpad/readme.md27
-rw-r--r--keyboards/laneware/lpad/rules.mk (renamed from keyboards/lpad/rules.mk)0
-rw-r--r--keyboards/laneware/lw67/config.h (renamed from keyboards/lw67/config.h)0
-rw-r--r--keyboards/laneware/lw67/info.json (renamed from keyboards/lw67/info.json)0
-rw-r--r--keyboards/laneware/lw67/keymaps/ansi_split_backspace/keymap.c (renamed from keyboards/lw67/keymaps/ansi_split_backspace/keymap.c)0
-rw-r--r--keyboards/laneware/lw67/keymaps/default/keymap.c28
-rw-r--r--keyboards/laneware/lw67/keymaps/iso/keymap.c28
-rw-r--r--keyboards/laneware/lw67/keymaps/iso_split_backspace/keymap.c (renamed from keyboards/lw67/keymaps/iso_split_backspace/keymap.c)0
-rw-r--r--keyboards/laneware/lw67/keymaps/via/keymap.c34
-rw-r--r--keyboards/laneware/lw67/keymaps/via/rules.mk (renamed from keyboards/lw67/keymaps/via/rules.mk)0
-rw-r--r--keyboards/laneware/lw67/readme.md22
-rw-r--r--keyboards/laneware/lw67/rules.mk (renamed from keyboards/lw67/rules.mk)0
-rw-r--r--keyboards/laneware/lw75/config.h (renamed from keyboards/lw75/config.h)0
-rw-r--r--keyboards/laneware/lw75/info.json (renamed from keyboards/lw75/info.json)0
-rw-r--r--keyboards/laneware/lw75/keymaps/ansi_split_backspace/keymap.c (renamed from keyboards/lw75/keymaps/ansi_split_backspace/keymap.c)0
-rw-r--r--keyboards/laneware/lw75/keymaps/default/keymap.c (renamed from keyboards/lw75/keymaps/default/keymap.c)0
-rw-r--r--keyboards/laneware/lw75/keymaps/iso/keymap.c (renamed from keyboards/lw75/keymaps/iso/keymap.c)0
-rw-r--r--keyboards/laneware/lw75/keymaps/iso_split_backspace/keymap.c (renamed from keyboards/lw75/keymaps/iso_split_backspace/keymap.c)0
-rw-r--r--keyboards/laneware/lw75/keymaps/via/keymap.c (renamed from keyboards/lw75/keymaps/via/keymap.c)0
-rw-r--r--keyboards/laneware/lw75/keymaps/via/rules.mk2
-rw-r--r--keyboards/laneware/lw75/readme.md25
-rw-r--r--keyboards/laneware/lw75/rules.mk (renamed from keyboards/lw75/rules.mk)0
-rw-r--r--keyboards/laneware/macro1/config.h (renamed from keyboards/macro1/config.h)0
-rw-r--r--keyboards/laneware/macro1/info.json (renamed from keyboards/macro1/info.json)0
-rw-r--r--keyboards/laneware/macro1/keymaps/default/keymap.c40
-rw-r--r--keyboards/laneware/macro1/keymaps/macropad/keymap.c (renamed from keyboards/macro1/keymaps/macropad/keymap.c)0
-rw-r--r--keyboards/laneware/macro1/keymaps/southpaw/keymap.c (renamed from keyboards/macro1/keymaps/southpaw/keymap.c)0
-rw-r--r--keyboards/laneware/macro1/keymaps/via/keymap.c90
-rw-r--r--keyboards/laneware/macro1/keymaps/via/rules.mk (renamed from keyboards/macro1/keymaps/via/rules.mk)0
-rw-r--r--keyboards/laneware/macro1/readme.md22
-rw-r--r--keyboards/laneware/macro1/rules.mk (renamed from keyboards/macro1/rules.mk)0
-rw-r--r--keyboards/laneware/raindrop/config.h (renamed from keyboards/raindrop/config.h)0
-rw-r--r--keyboards/laneware/raindrop/info.json (renamed from keyboards/raindrop/info.json)0
-rw-r--r--keyboards/laneware/raindrop/keymaps/arrows/keymap.c (renamed from keyboards/raindrop/keymaps/arrows/keymap.c)0
-rw-r--r--keyboards/laneware/raindrop/keymaps/default/keymap.c (renamed from keyboards/raindrop/keymaps/default/keymap.c)0
-rw-r--r--keyboards/laneware/raindrop/keymaps/hhkb/keymap.c (renamed from keyboards/raindrop/keymaps/hhkb/keymap.c)0
-rw-r--r--keyboards/laneware/raindrop/matrix_diagram.md (renamed from keyboards/raindrop/matrix_diagram.md)0
-rw-r--r--keyboards/laneware/raindrop/readme.md38
-rw-r--r--keyboards/laneware/raindrop/rules.mk (renamed from keyboards/lefty/rev2/rules.mk)0
-rw-r--r--keyboards/laser_ninja/pumpkin_pad/config.h57
-rw-r--r--keyboards/laser_ninja/pumpkin_pad/info.json80
-rw-r--r--keyboards/laser_ninja/pumpkin_pad/readme.md23
-rw-r--r--keyboards/laser_ninja/pumpkinpad/config.h22
-rw-r--r--keyboards/laser_ninja/pumpkinpad/info.json112
-rw-r--r--keyboards/laser_ninja/pumpkinpad/keymaps/default/keymap.c (renamed from keyboards/laser_ninja/pumpkin_pad/keymaps/default/keymap.c)0
-rw-r--r--keyboards/laser_ninja/pumpkinpad/keymaps/via/keymap.c (renamed from keyboards/laser_ninja/pumpkin_pad/keymaps/via/keymap.c)0
-rw-r--r--[-rwxr-xr-x]keyboards/laser_ninja/pumpkinpad/keymaps/via/rules.mk (renamed from keyboards/mnk50/keymaps/via/rules.mk)0
-rw-r--r--keyboards/laser_ninja/pumpkinpad/readme.md23
-rw-r--r--keyboards/laser_ninja/pumpkinpad/rules.mk (renamed from keyboards/laser_ninja/pumpkin_pad/rules.mk)0
-rw-r--r--keyboards/late9/readme.md27
-rwxr-xr-xkeyboards/late9/rules.mk1
-rw-r--r--keyboards/latincompass/latin17rgb/config.h62
-rw-r--r--keyboards/latincompass/latin17rgb/info.json33
-rw-r--r--keyboards/latincompass/latin17rgb/latin17rgb.c2
-rw-r--r--keyboards/latincompass/latin60rgb/config.h58
-rw-r--r--keyboards/latincompass/latin60rgb/info.json33
-rw-r--r--keyboards/latincompass/latin60rgb/latin60rgb.c2
-rw-r--r--keyboards/latincompass/latin6rgb/config.h56
-rw-r--r--keyboards/latincompass/latin6rgb/info.json33
-rw-r--r--keyboards/latincompass/latin6rgb/latin6rgb.c2
-rw-r--r--keyboards/latincompass/latinpad/config.h50
-rw-r--r--keyboards/latincompass/latinpad/info.json31
-rw-r--r--keyboards/lefty/rules.mk17
-rw-r--r--keyboards/lets_split/keymaps/via/config.h4
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h2
-rw-r--r--keyboards/lily58/keymaps/default/config.h8
-rw-r--r--keyboards/lily58/keymaps/via/config.h4
-rw-r--r--keyboards/lily58/r2g/config.h48
-rw-r--r--keyboards/lily58/r2g/info.json23
-rw-r--r--keyboards/lime/rev1/rev1.c62
-rw-r--r--keyboards/linworks/fave60a/config.h67
-rw-r--r--keyboards/linworks/fave60a/info.json48
-rw-r--r--keyboards/linworks/fave65h/config.h85
-rw-r--r--keyboards/linworks/fave65h/info.json48
-rw-r--r--keyboards/linworks/fave84h/config.h63
-rw-r--r--keyboards/linworks/fave84h/info.json48
-rw-r--r--keyboards/linworks/fave87h/config.h85
-rw-r--r--keyboards/linworks/fave87h/info.json48
-rw-r--r--keyboards/linworks/favepada/config.h11
-rw-r--r--keyboards/linworks/favepada/info.json8
-rw-r--r--keyboards/lpad/readme.md27
-rw-r--r--keyboards/lw67/keymaps/default/keymap.c41
-rw-r--r--keyboards/lw67/keymaps/iso/keymap.c41
-rw-r--r--keyboards/lw67/keymaps/via/keymap.c47
-rw-r--r--keyboards/lw67/readme.md22
-rw-r--r--keyboards/lw75/readme.md25
-rw-r--r--keyboards/lxxt/config.h19
-rw-r--r--keyboards/macro1/keymaps/default/keymap.c53
-rw-r--r--keyboards/macro1/keymaps/via/keymap.c103
-rw-r--r--keyboards/macro1/readme.md22
-rw-r--r--keyboards/macro3/readme.md26
-rw-r--r--keyboards/magic_force/mf17/config.h14
-rw-r--r--keyboards/magic_force/mf17/info.json4
-rw-r--r--keyboards/magic_force/mf34/config.h56
-rw-r--r--keyboards/magic_force/mf34/info.json48
-rw-r--r--keyboards/majistic/keymaps/default/config.h17
-rw-r--r--keyboards/maple_computing/jnao/rules.mk2
-rw-r--r--keyboards/maple_computing/launchpad/keymaps/default_rgb/config.h2
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/config.h21
-rw-r--r--keyboards/marksard/rhymestone/rev1/config.h73
-rw-r--r--keyboards/marksard/rhymestone/rev1/info.json4
-rw-r--r--keyboards/marksard/treadstone48/rev1/config.h4
-rw-r--r--keyboards/massdrop/alt/keymaps/pregame/config.h2
-rw-r--r--keyboards/massdrop/alt/keymaps/urbanvanilla/config.h2
-rw-r--r--keyboards/massdrop/ctrl/keymaps/endgame/config.h2
-rw-r--r--keyboards/massdrop/ctrl/keymaps/foxx1337/config.h2
-rw-r--r--keyboards/massdrop/ctrl/keymaps/xanimos/config.h2
-rw-r--r--keyboards/matrix/abelx/abelx.c7
-rw-r--r--keyboards/matrix/abelx/aw9523b.c14
-rw-r--r--keyboards/matrix/abelx/info.json1
-rw-r--r--keyboards/matrix/abelx/rules.mk1
-rw-r--r--keyboards/matrix/abelx/tca6424.c4
-rw-r--r--keyboards/matrix/m20add/info.json1
-rw-r--r--keyboards/matrix/m20add/rgb_ring.c6
-rw-r--r--keyboards/matrix/m20add/tca6424.c4
-rw-r--r--keyboards/matrix/noah/config.h52
-rw-r--r--keyboards/matrix/noah/info.json45
-rw-r--r--keyboards/matrix/noah/noah.c39
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev1/config.h59
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev1/info.json53
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/config.h59
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/info.json52
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c2
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/config.h64
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/info.json51
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c2
-rw-r--r--keyboards/mechlovin/delphine/rgb_led/config.h56
-rw-r--r--keyboards/mechlovin/delphine/rgb_led/info.json51
-rw-r--r--keyboards/mechlovin/delphine/rgb_led/rgb_led.c2
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev1/config.h60
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev1/info.json51
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev2/config.h59
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev2/info.json51
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev2/rev2.c2
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/config.h59
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/info.json51
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c2
-rw-r--r--keyboards/mechlovin/infinity875/config.h7
-rw-r--r--keyboards/mechlovin/infinity875/info.json4
-rw-r--r--keyboards/mechlovin/olly/jf/config.h38
-rw-r--r--keyboards/mechlovin/olly/jf/info.json677
-rw-r--r--keyboards/mechlovin/olly/jf/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/olly/jf/matrix_diagram.md37
-rw-r--r--keyboards/mechlovin/olly/jf/readme.md12
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/info.json675
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default/readme.md (renamed from keyboards/mechlovin/olly/jf/keymaps/default/readme.md)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_ansi/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi_split_bs_rshift/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_ansi_split_bs_rshift/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_iso/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso_split_bs_rshift/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/default_iso_split_bs_rshift/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/via/config.h (renamed from keyboards/mechlovin/olly/jf/keymaps/via/config.h)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/via/keymap.c (renamed from keyboards/mechlovin/olly/jf/keymaps/via/keymap.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/keymaps/via/rules.mk (renamed from keyboards/mechlovin/olly/jf/keymaps/via/rules.mk)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/matrix.c (renamed from keyboards/mechlovin/olly/jf/matrix.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md37
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/readme.md27
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/rev1.c (renamed from keyboards/mechlovin/olly/jf/jf.c)0
-rw-r--r--keyboards/mechlovin/olly/jf/rev1/rules.mk4
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/config.h31
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/halconf.h25
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/info.json702
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c28
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md37
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/mcuconf.h27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/readme.md27
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/rev2.c92
-rw-r--r--keyboards/mechlovin/olly/jf/rev2/rules.mk1
-rw-r--r--keyboards/mechlovin/olly/jf/rules.mk19
-rw-r--r--keyboards/mechlovin/olly/octagon/config.h31
-rw-r--r--keyboards/mechlovin/olly/octagon/info.json25
-rw-r--r--keyboards/mechlovin/olly/octagon/octagon.c2
-rw-r--r--keyboards/mechlovin/zed65/mono_led/config.h30
-rw-r--r--keyboards/mechlovin/zed65/mono_led/info.json25
-rw-r--r--keyboards/mechlovin/zed65/mono_led/mono_led.c2
-rw-r--r--keyboards/mechlovin/zed65/no_backlight/cor65/info.json62
-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
-rwxr-xr-xkeyboards/melgeek/mach80/config.h54
-rwxr-xr-xkeyboards/melgeek/mach80/info.json54
-rwxr-xr-xkeyboards/melgeek/mach80/rev1/config.h5
-rw-r--r--keyboards/melgeek/mach80/rev1/info.json3
-rwxr-xr-xkeyboards/melgeek/mach80/rev1/rev1.c2
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/config.h5
-rw-r--r--keyboards/melgeek/mach80/rev2/info.json3
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/rev2.c2
-rw-r--r--keyboards/melgeek/mj61/config.h54
-rw-r--r--keyboards/melgeek/mj61/info.json51
-rw-r--r--keyboards/melgeek/mj61/rev1/config.h20
-rw-r--r--keyboards/melgeek/mj61/rev1/info.json3
-rw-r--r--keyboards/melgeek/mj61/rev1/rev1.c2
-rw-r--r--keyboards/melgeek/mj61/rev2/config.h20
-rw-r--r--keyboards/melgeek/mj61/rev2/info.json3
-rw-r--r--keyboards/melgeek/mj61/rev2/rev2.c2
-rw-r--r--keyboards/melgeek/mj63/config.h54
-rw-r--r--keyboards/melgeek/mj63/info.json51
-rw-r--r--keyboards/melgeek/mj63/rev1/config.h20
-rw-r--r--keyboards/melgeek/mj63/rev1/info.json3
-rw-r--r--keyboards/melgeek/mj63/rev1/rev1.c2
-rw-r--r--keyboards/melgeek/mj63/rev2/config.h20
-rw-r--r--keyboards/melgeek/mj63/rev2/info.json3
-rw-r--r--keyboards/melgeek/mj63/rev2/rev2.c2
-rw-r--r--keyboards/melgeek/mj64/config.h54
-rw-r--r--keyboards/melgeek/mj64/info.json51
-rw-r--r--keyboards/melgeek/mj64/rev1/config.h20
-rw-r--r--keyboards/melgeek/mj64/rev1/info.json3
-rw-r--r--keyboards/melgeek/mj64/rev1/rev1.c2
-rw-r--r--keyboards/melgeek/mj64/rev2/config.h20
-rw-r--r--keyboards/melgeek/mj64/rev2/info.json3
-rw-r--r--keyboards/melgeek/mj64/rev2/rev2.c2
-rw-r--r--keyboards/melgeek/mj64/rev3/config.h20
-rw-r--r--keyboards/melgeek/mj64/rev3/info.json3
-rw-r--r--keyboards/melgeek/mj64/rev3/rev3.c2
-rw-r--r--keyboards/melgeek/mj65/config.h54
-rw-r--r--keyboards/melgeek/mj65/info.json50
-rw-r--r--keyboards/melgeek/mj65/rev3/config.h20
-rw-r--r--keyboards/melgeek/mj65/rev3/rev3.c2
-rwxr-xr-xkeyboards/melgeek/mojo68/config.h53
-rwxr-xr-xkeyboards/melgeek/mojo68/info.json47
-rwxr-xr-xkeyboards/melgeek/mojo68/rev1/config.h1
-rwxr-xr-xkeyboards/melgeek/mojo68/rev1/rev1.c2
-rw-r--r--keyboards/melgeek/mojo75/config.h55
-rw-r--r--keyboards/melgeek/mojo75/info.json50
-rw-r--r--keyboards/melgeek/mojo75/rev1/config.h21
-rw-r--r--keyboards/melgeek/mojo75/rev1/rev1.c2
-rwxr-xr-xkeyboards/melgeek/tegic/config.h51
-rw-r--r--keyboards/melgeek/tegic/info.json53
-rwxr-xr-xkeyboards/melgeek/tegic/rev1/config.h24
-rwxr-xr-xkeyboards/melgeek/tegic/rev1/rev1.c2
-rw-r--r--keyboards/melgeek/z70ultra/config.h56
-rw-r--r--keyboards/melgeek/z70ultra/info.json50
-rw-r--r--keyboards/melgeek/z70ultra/z70ultra.c2
-rw-r--r--keyboards/merge/um70/config.h5
-rw-r--r--keyboards/merge/um70/info.json4
-rw-r--r--keyboards/merge/um80/config.h5
-rw-r--r--keyboards/miiiw/blackio83/config.h36
-rw-r--r--keyboards/miiiw/blackio83/info.json34
-rw-r--r--keyboards/miiiw/blackio83/rev_0100/config.h3
-rw-r--r--keyboards/miiiw/blackio83/rev_0100/rev_0100.c17
-rw-r--r--keyboards/miller/gm862/config.h57
-rw-r--r--keyboards/miller/gm862/gm862.c2
-rw-r--r--keyboards/miller/gm862/info.json33
-rw-r--r--keyboards/miniaxe/readme.md16
-rw-r--r--keyboards/mino/readme.md27
-rw-r--r--keyboards/mino_plus/mino_plus.c248
-rw-r--r--keyboards/mino_plus/readme.md29
-rw-r--r--keyboards/mixi/keymaps/default/keymap.c6
-rw-r--r--keyboards/mixi/keymaps/via/keymap.c6
-rw-r--r--keyboards/ml/gas75/config.h67
-rw-r--r--keyboards/ml/gas75/info.json46
-rw-r--r--keyboards/mlego/m48/keymaps/default/keymap.c8
-rw-r--r--keyboards/mlego/m48/keymaps/via/keymap.c8
-rw-r--r--keyboards/mlego/m60/keymaps/default/keymap.c8
-rw-r--r--keyboards/mlego/m60/keymaps/via/keymap.c8
-rw-r--r--keyboards/mlego/m60_split/keymaps/default/keymap.c8
-rw-r--r--keyboards/mlego/m60_split/keymaps/via/keymap.c8
-rw-r--r--keyboards/mlego/m65/m65.c8
-rwxr-xr-xkeyboards/mnk1800s/readme.md32
-rwxr-xr-xkeyboards/mnk50/readme.md32
-rwxr-xr-xkeyboards/mnk75/readme.md32
-rw-r--r--keyboards/momokai/aurora/config.h78
-rw-r--r--keyboards/momokai/aurora/info.json32
-rw-r--r--keyboards/momokai/tap_duo/config.h61
-rw-r--r--keyboards/momokai/tap_duo/info.json30
-rw-r--r--keyboards/momokai/tap_trio/config.h80
-rw-r--r--keyboards/momokai/tap_trio/info.json30
-rwxr-xr-xkeyboards/monokei/mnk1800s/config.h (renamed from keyboards/mnk1800s/config.h)0
-rwxr-xr-xkeyboards/monokei/mnk1800s/info.json (renamed from keyboards/mnk1800s/info.json)0
-rw-r--r--keyboards/monokei/mnk1800s/keymaps/default/keymap.c (renamed from keyboards/mnk1800s/keymaps/default/keymap.c)0
-rwxr-xr-xkeyboards/monokei/mnk1800s/keymaps/default/readme.md (renamed from keyboards/mnk1800s/keymaps/default/readme.md)0
-rw-r--r--keyboards/monokei/mnk1800s/keymaps/default_2u_bs/keymap.c (renamed from keyboards/mnk1800s/keymaps/default_2u_bs/keymap.c)0
-rw-r--r--keyboards/monokei/mnk1800s/keymaps/via/keymap.c (renamed from keyboards/mnk1800s/keymaps/via/keymap.c)0
-rwxr-xr-xkeyboards/monokei/mnk1800s/keymaps/via/readme.md (renamed from keyboards/mnk1800s/keymaps/via/readme.md)0
-rwxr-xr-xkeyboards/monokei/mnk1800s/keymaps/via/rules.mk (renamed from keyboards/mnk75/keymaps/via/rules.mk)0
-rw-r--r--keyboards/monokei/mnk1800s/matrix_diagram.md (renamed from keyboards/mnk1800s/matrix_diagram.md)0
-rwxr-xr-xkeyboards/monokei/mnk1800s/readme.md32
-rw-r--r--keyboards/monokei/mnk1800s/rules.mk (renamed from keyboards/mnk1800s/rules.mk)0
-rwxr-xr-xkeyboards/monokei/mnk50/config.h (renamed from keyboards/mnk50/config.h)0
-rwxr-xr-xkeyboards/monokei/mnk50/info.json (renamed from keyboards/mnk50/info.json)0
-rw-r--r--keyboards/monokei/mnk50/keymaps/default/keymap.c (renamed from keyboards/mnk50/keymaps/default/keymap.c)0
-rwxr-xr-xkeyboards/monokei/mnk50/keymaps/default/readme.md (renamed from keyboards/mnk50/keymaps/default/readme.md)0
-rw-r--r--keyboards/monokei/mnk50/keymaps/via/keymap.c (renamed from keyboards/mnk50/keymaps/via/keymap.c)0
-rwxr-xr-xkeyboards/monokei/mnk50/keymaps/via/readme.md (renamed from keyboards/mnk50/keymaps/via/readme.md)0
-rwxr-xr-x[-rw-r--r--]keyboards/monokei/mnk50/keymaps/via/rules.mk (renamed from keyboards/moonlander/keymaps/via/rules.mk)0
-rwxr-xr-xkeyboards/monokei/mnk50/readme.md32
-rw-r--r--keyboards/monokei/mnk50/rules.mk (renamed from keyboards/mnk50/rules.mk)0
-rwxr-xr-xkeyboards/monokei/mnk75/config.h (renamed from keyboards/mnk75/config.h)0
-rwxr-xr-xkeyboards/monokei/mnk75/info.json (renamed from keyboards/mnk75/info.json)0
-rw-r--r--keyboards/monokei/mnk75/keymaps/default/keymap.c (renamed from keyboards/mnk75/keymaps/default/keymap.c)0
-rwxr-xr-xkeyboards/monokei/mnk75/keymaps/default/readme.md (renamed from keyboards/mnk75/keymaps/default/readme.md)0
-rw-r--r--keyboards/monokei/mnk75/keymaps/via/keymap.c (renamed from keyboards/mnk75/keymaps/via/keymap.c)0
-rwxr-xr-xkeyboards/monokei/mnk75/keymaps/via/readme.md (renamed from keyboards/mnk75/keymaps/via/readme.md)0
-rwxr-xr-x[-rw-r--r--]keyboards/monokei/mnk75/keymaps/via/rules.mk (renamed from keyboards/pw88/keymaps/via/rules.mk)0
-rw-r--r--keyboards/monokei/mnk75/matrix_diagram.md (renamed from keyboards/mnk75/matrix_diagram.md)0
-rwxr-xr-xkeyboards/monokei/mnk75/readme.md32
-rw-r--r--keyboards/monokei/mnk75/rules.mk (renamed from keyboards/mnk75/rules.mk)0
-rw-r--r--keyboards/monsgeek/m1/config.h9
-rw-r--r--keyboards/monsgeek/m1/info.json4
-rw-r--r--keyboards/monsgeek/m1/m1.c2
-rw-r--r--keyboards/monsgeek/m3/config.h6
-rw-r--r--keyboards/monsgeek/m3/info.json3
-rw-r--r--keyboards/monsgeek/m3/m3.c2
-rw-r--r--keyboards/monsgeek/m5/config.h7
-rw-r--r--keyboards/monsgeek/m5/info.json4
-rw-r--r--keyboards/monsgeek/m5/m5.c2
-rw-r--r--keyboards/monsgeek/m6/config.h7
-rw-r--r--keyboards/monsgeek/m6/info.json4
-rw-r--r--keyboards/monsgeek/m6/m6.c2
-rw-r--r--keyboards/monstargear/xo87/rgb/config.h55
-rw-r--r--keyboards/monstargear/xo87/rgb/info.json49
-rw-r--r--keyboards/monstargear/xo87/rgb/keymaps/default/config.h16
-rw-r--r--keyboards/monstargear/xo87/solderable/solderable.h4
-rw-r--r--keyboards/montsinger/rebound/rev1/rules.mk2
-rw-r--r--keyboards/montsinger/rebound/rev2/rules.mk2
-rw-r--r--keyboards/montsinger/rebound/rev3/rules.mk2
-rw-r--r--keyboards/montsinger/rebound/rev4/rules.mk2
-rw-r--r--keyboards/moonlander/config.h147
-rw-r--r--keyboards/moonlander/info.json114
-rw-r--r--keyboards/moonlander/keymaps/shahn-neo/config.h19
-rw-r--r--keyboards/moonlander/keymaps/shahn-neo/keymap.c121
-rw-r--r--keyboards/moonlander/keymaps/shahn-neo/readme.md16
-rw-r--r--keyboards/moonlander/matrix.c233
-rw-r--r--keyboards/moonlander/moonlander.c469
-rw-r--r--keyboards/moonlander/readme.md58
-rw-r--r--keyboards/mss_studio/m63_rgb/config.h71
-rw-r--r--keyboards/mss_studio/m63_rgb/info.json47
-rw-r--r--keyboards/mss_studio/m64_rgb/config.h71
-rw-r--r--keyboards/mss_studio/m64_rgb/info.json47
-rw-r--r--keyboards/mt/mt40/rules.mk2
-rw-r--r--keyboards/mt/mt64rgb/config.h59
-rw-r--r--keyboards/mt/mt64rgb/info.json35
-rw-r--r--keyboards/mt/mt64rgb/mt64rgb.c2
-rw-r--r--keyboards/mt/mt84/config.h66
-rw-r--r--keyboards/mt/mt84/info.json38
-rw-r--r--keyboards/mt/mt84/mt84.c2
-rw-r--r--keyboards/mwstudio/alicekk/config.h19
-rw-r--r--keyboards/mwstudio/mw65_rgb/config.h66
-rw-r--r--keyboards/mwstudio/mw65_rgb/info.json45
-rw-r--r--keyboards/mwstudio/mw75/config.h66
-rw-r--r--keyboards/mwstudio/mw75/info.json47
-rw-r--r--keyboards/mwstudio/mw75r2/config.h41
-rw-r--r--keyboards/mwstudio/mw75r2/info.json22
-rw-r--r--keyboards/nack/config.h58
-rw-r--r--keyboards/nack/info.json50
-rw-r--r--keyboards/nek_type_a/nek_type_a.h4
-rw-r--r--keyboards/neopad/readme.md25
-rwxr-xr-xkeyboards/neopad/rules.mk1
-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.c12
-rw-r--r--keyboards/neson_design/nico/rules.mk2
-rw-r--r--keyboards/newgame40/post_config.h4
-rw-r--r--keyboards/ning/tiny_board/tb16_rgb/config.h24
-rw-r--r--keyboards/ning/tiny_board/tb16_rgb/info.json6
-rw-r--r--keyboards/nopunin10did/jabberwocky/v1/config.h3
-rw-r--r--keyboards/nopunin10did/jabberwocky/v1/info.json3
-rw-r--r--keyboards/nopunin10did/jabberwocky/v2/config.h3
-rw-r--r--keyboards/nopunin10did/jabberwocky/v2/info.json3
-rw-r--r--keyboards/novelkeys/nk20/config.h57
-rw-r--r--keyboards/novelkeys/nk20/info.json49
-rwxr-xr-xkeyboards/novelkeys/nk65b/config.h57
-rwxr-xr-xkeyboards/novelkeys/nk65b/info.json49
-rw-r--r--keyboards/novelkeys/nk87b/config.h57
-rwxr-xr-xkeyboards/novelkeys/nk87b/info.json49
-rw-r--r--keyboards/novelkeys/nk_plus/config.h56
-rwxr-xr-xkeyboards/novelkeys/nk_plus/info.json48
-rw-r--r--keyboards/null/st110r2/info.json596
-rw-r--r--keyboards/null/st110r2/keymaps/ansi_std/keymap.c32
-rw-r--r--keyboards/null/st110r2/keymaps/default/keymap.c32
-rw-r--r--keyboards/null/st110r2/keymaps/iso_default/keymap.c32
-rw-r--r--keyboards/null/st110r2/keymaps/iso_std/keymap.c32
-rw-r--r--keyboards/null/st110r2/keymaps/jis_std/keymap.c32
-rw-r--r--keyboards/null/st110r2/readme.md31
-rw-r--r--keyboards/null/st110r2/rules.mk1
-rw-r--r--keyboards/nullbitsco/nibble/keymaps/via/keymap.c2
-rw-r--r--keyboards/oddforge/vea/config.h2
-rw-r--r--keyboards/oddforge/vea/info.json3
-rw-r--r--keyboards/omkbd/runner3680/5x6_5x8/config.h5
-rw-r--r--keyboards/omkbd/runner3680/5x6_5x8/info.json3
-rw-r--r--keyboards/opendeck/32/rev1/config.h53
-rw-r--r--keyboards/opendeck/32/rev1/info.json51
-rw-r--r--keyboards/opendeck/32/rev1/rev1.c8
-rw-r--r--keyboards/ortho5by12/rules.mk1
-rw-r--r--keyboards/orthograph/config.h20
-rw-r--r--keyboards/orthograph/info.json229
-rw-r--r--keyboards/orthograph/keymaps/default/keymap.json24
-rw-r--r--keyboards/orthograph/orthograph.c128
-rw-r--r--keyboards/orthograph/readme.md25
-rw-r--r--keyboards/orthograph/rules.mk1
-rw-r--r--keyboards/owlab/voice65/hotswap/config.h60
-rw-r--r--keyboards/owlab/voice65/hotswap/hotswap.c2
-rw-r--r--keyboards/owlab/voice65/hotswap/info.json54
-rw-r--r--keyboards/owlab/voice65/soldered/config.h61
-rw-r--r--keyboards/owlab/voice65/soldered/info.json54
-rw-r--r--keyboards/owlab/voice65/soldered/soldered.c2
-rw-r--r--keyboards/pangorin/tan67/config.h23
-rw-r--r--keyboards/paprikman/albacore/config.h37
-rw-r--r--keyboards/paprikman/albacore/info.json4
-rw-r--r--keyboards/percent/canoe_gen2/config.h56
-rw-r--r--keyboards/percent/canoe_gen2/info.json35
-rw-r--r--keyboards/phage_studio/pila87/config.h73
-rw-r--r--keyboards/phage_studio/pila87/info.json48
-rw-r--r--keyboards/phase_studio/titan65/hotswap/config.h22
-rw-r--r--keyboards/phase_studio/titan65/hotswap/info.json3
-rw-r--r--keyboards/phentech/rpk_001/config.h11
-rw-r--r--keyboards/phentech/rpk_001/info.json7
-rw-r--r--keyboards/phentech/rpk_001/rpk_001.c2
-rw-r--r--keyboards/pico/65keys/keymaps/default/config.h18
-rw-r--r--keyboards/pico/65keys/keymaps/default/keymap.c46
-rw-r--r--keyboards/pico/65keys/keymaps/jis/config.h18
-rw-r--r--keyboards/pico/65keys/keymaps/jis/keymap.c47
-rw-r--r--keyboards/pico/70keys/keymaps/default/keymap.c46
-rw-r--r--keyboards/pico/70keys/keymaps/jis/keymap.c47
-rw-r--r--keyboards/pico/readme.md24
-rw-r--r--keyboards/pico/rules.mk16
-rw-r--r--keyboards/pisces/config.h2
-rw-r--r--keyboards/planck/ez/config.h57
-rw-r--r--keyboards/planck/ez/ez.c2
-rw-r--r--keyboards/planck/ez/info.json50
-rw-r--r--keyboards/planck/ez/rules.mk2
-rw-r--r--keyboards/planck/light/config.h52
-rw-r--r--keyboards/planck/light/info.json45
-rw-r--r--keyboards/planck/light/light.c2
-rw-r--r--keyboards/planck/light/rules.mk2
-rw-r--r--keyboards/planck/rev1/rules.mk2
-rw-r--r--keyboards/planck/rev2/rules.mk2
-rw-r--r--keyboards/planck/rev3/rules.mk2
-rw-r--r--keyboards/planck/rev4/rules.mk2
-rw-r--r--keyboards/planck/rev5/rules.mk2
-rw-r--r--keyboards/planck/rev6/config.h4
-rw-r--r--keyboards/planck/rev6/info.json3
-rw-r--r--keyboards/planck/rev6/rules.mk2
-rw-r--r--keyboards/planck/rev6_drop/config.h4
-rw-r--r--keyboards/planck/rev6_drop/info.json3
-rw-r--r--keyboards/planck/rev6_drop/rules.mk2
-rw-r--r--keyboards/planck/rev7/config.h2
-rw-r--r--keyboards/planck/rev7/info.json3
-rw-r--r--keyboards/planck/rev7/rules.mk2
-rw-r--r--keyboards/playkbtw/pk64rgb/config.h22
-rw-r--r--keyboards/playkbtw/pk64rgb/info.json5
-rw-r--r--keyboards/playkbtw/pk64rgb/pk64rgb.c2
-rw-r--r--keyboards/plywrks/ply8x/config.h4
-rw-r--r--keyboards/pom_keyboards/tnln95/config.h5
-rw-r--r--keyboards/preonic/rev3/config.h2
-rw-r--r--keyboards/preonic/rev3_drop/config.h2
-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/projectd/65/projectd_65_ansi/config.h4
-rw-r--r--keyboards/projectd/65/projectd_65_ansi/info.json3
-rw-r--r--keyboards/projectd/65/projectd_65_ansi/projectd_65_ansi.c2
-rw-r--r--keyboards/projectd/75/ansi/ansi.c2
-rw-r--r--keyboards/projectd/75/ansi/config.h14
-rw-r--r--keyboards/projectd/75/ansi/info.json5
-rw-r--r--keyboards/pw88/config.h21
-rw-r--r--keyboards/quarkeys/z40/config.h29
-rw-r--r--keyboards/quarkeys/z40/info.json23
-rw-r--r--keyboards/quarkeys/z40/z40.c2
-rw-r--r--keyboards/quokka/config.h1
-rw-r--r--keyboards/quokka/info.json145
-rw-r--r--keyboards/quokka/keymaps/default/keymap.c1
-rw-r--r--keyboards/qwertykeys/qk100/ansi/ansi.c2
-rw-r--r--keyboards/qwertykeys/qk100/ansi/config.h15
-rw-r--r--keyboards/qwertykeys/qk100/ansi/info.json11
-rw-r--r--keyboards/rabbit/rabbit68/keymaps/kaiec/config.h19
-rw-r--r--keyboards/raindrop/readme.md38
-rw-r--r--keyboards/raindrop/rules.mk0
-rw-r--r--keyboards/rate/pistachio/rev2/config.h1
-rw-r--r--keyboards/rate/pistachio_pro/lib/bme280.c14
-rw-r--r--keyboards/recompile_keys/choco60/config.h18
-rw-r--r--keyboards/redox/keymaps/KL1RL/config.h42
-rw-r--r--keyboards/redox/keymaps/KL1RL/keymap.c90
-rw-r--r--keyboards/redox/keymaps/KL1RL/readme.md22
-rw-r--r--keyboards/redox/keymaps/KL1RL/rules.mk2
-rw-r--r--keyboards/redox/keymaps/default/config.h4
-rw-r--r--keyboards/redox/keymaps/default/keymap.c36
-rw-r--r--keyboards/redox/keymaps/eightbitraptor/config.h41
-rw-r--r--keyboards/redox/keymaps/eightbitraptor/keymap.c87
-rw-r--r--keyboards/redox/keymaps/eightbitraptor/rules.mk2
-rw-r--r--keyboards/redox/keymaps/fculpo/config.h39
-rw-r--r--keyboards/redox/keymaps/fculpo/keymap.c92
-rw-r--r--keyboards/redox/keymaps/fculpo/keymap.json399
-rw-r--r--keyboards/redox/keymaps/fculpo/readme.md18
-rw-r--r--keyboards/redox/keymaps/fculpo/rules.mk2
-rw-r--r--keyboards/redox/keymaps/finex/config.h42
-rw-r--r--keyboards/redox/keymaps/finex/keymap.c386
-rw-r--r--keyboards/redox/keymaps/finex/readme.md69
-rw-r--r--keyboards/redox/keymaps/finex/rules.mk4
-rw-r--r--keyboards/redox/keymaps/german/config.h40
-rw-r--r--keyboards/redox/keymaps/german/keymap.c96
-rw-r--r--keyboards/redox/keymaps/german/readme.md5
-rw-r--r--keyboards/redox/keymaps/german/rules.mk1
-rw-r--r--keyboards/redox/keymaps/italian/config.h40
-rw-r--r--keyboards/redox/keymaps/italian/keymap.c102
-rw-r--r--keyboards/redox/keymaps/italian/readme.md1
-rw-r--r--keyboards/redox/keymaps/italian/rules.mk2
-rw-r--r--keyboards/redox/keymaps/jeherve/config.h41
-rw-r--r--keyboards/redox/keymaps/jeherve/keymap.c268
-rw-r--r--keyboards/redox/keymaps/jeherve/readme.md45
-rw-r--r--keyboards/redox/keymaps/jeherve/rules.mk3
-rwxr-xr-xkeyboards/redox/keymaps/nrichers/config.h40
-rwxr-xr-xkeyboards/redox/keymaps/nrichers/keymap.c92
-rwxr-xr-xkeyboards/redox/keymaps/nrichers/readme.md28
-rwxr-xr-xkeyboards/redox/keymaps/nrichers/rules.mk2
-rw-r--r--keyboards/redox/keymaps/tw1t611/config.h23
-rw-r--r--keyboards/redox/keymaps/tw1t611/keymap.c36
-rw-r--r--keyboards/redox/keymaps/tw1t611/readme.md1
-rw-r--r--keyboards/redox/keymaps/via/config.h4
-rw-r--r--keyboards/redox/keymaps/via/keymap.c36
-rw-r--r--keyboards/redox/keymaps/via/rules.mk2
-rw-r--r--keyboards/redox/readme.md48
-rw-r--r--keyboards/redox/rev1/base/info.json3
-rw-r--r--keyboards/redox/rev1/base/rules.mk1
-rw-r--r--keyboards/redox/rev1/info.json28
-rw-r--r--keyboards/redox/rev1/proton_c/config.h16
-rw-r--r--keyboards/redox/rev1/proton_c/info.json4
-rw-r--r--keyboards/redox/rev1/readme.md50
-rw-r--r--keyboards/redox/rules.mk15
-rw-r--r--keyboards/redox/wireless/config.h23
-rw-r--r--keyboards/redox/wireless/info.json105
-rw-r--r--keyboards/redox/wireless/matrix.c (renamed from keyboards/redox_w/matrix.c)0
-rw-r--r--keyboards/redox/wireless/readme.md34
-rw-r--r--keyboards/redox/wireless/rules.mk5
-rw-r--r--keyboards/redox/wireless/wireless.c49
-rw-r--r--keyboards/redox/wireless/wireless.h35
-rw-r--r--keyboards/redox_w/config.h40
-rw-r--r--keyboards/redox_w/info.json98
-rw-r--r--keyboards/redox_w/keymaps/default/keymap.c111
-rw-r--r--keyboards/redox_w/keymaps/default/readme.md1
-rw-r--r--keyboards/redox_w/keymaps/dvorak/keymap.c128
-rw-r--r--keyboards/redox_w/keymaps/dvorak/readme.md38
-rw-r--r--keyboards/redox_w/keymaps/italian/keymap.c123
-rw-r--r--keyboards/redox_w/keymaps/italian/readme.md1
-rw-r--r--keyboards/redox_w/keymaps/via/keymap.c89
-rw-r--r--keyboards/redox_w/keymaps/via/readme.md1
-rw-r--r--keyboards/redox_w/keymaps/via/rules.mk2
-rw-r--r--keyboards/redox_w/readme.md34
-rw-r--r--keyboards/redox_w/redox_w.c32
-rw-r--r--keyboards/redox_w/redox_w.h18
-rw-r--r--keyboards/redox_w/rules.mk17
-rw-r--r--keyboards/redragon/k667/config.h7
-rw-r--r--keyboards/redragon/k667/info.json1
-rw-r--r--keyboards/redragon/k667/k667.c2
-rw-r--r--keyboards/reviung/reviung34/keymaps/default_rgb/config.h2
-rw-r--r--keyboards/reviung/reviung34/keymaps/default_rgb2u/config.h2
-rw-r--r--keyboards/reviung/reviung39/keymaps/default/config.h2
-rw-r--r--keyboards/reviung/reviung39/keymaps/default_s/config.h2
-rw-r--r--keyboards/reviung/reviung39/keymaps/default_s/readme.md2
-rw-r--r--keyboards/reviung/reviung61/keymaps/default_rgb/config.h2
-rw-r--r--keyboards/rgbkb/common/touch_encoder.c4
-rw-r--r--keyboards/rgbkb/mun/config.h57
-rw-r--r--keyboards/rgbkb/mun/keymaps/default/config.h2
-rw-r--r--keyboards/rgbkb/mun/keymaps/via/config.h2
-rw-r--r--keyboards/rgbkb/mun/keymaps/xulkal2/config.h2
-rw-r--r--keyboards/rgbkb/mun/rev1/info.json52
-rw-r--r--keyboards/rgbkb/pan/config.h49
-rw-r--r--keyboards/rgbkb/pan/info.json45
-rw-r--r--keyboards/rgbkb/sol/config.h48
-rw-r--r--keyboards/rgbkb/sol/keymaps/brianweyer/config.h25
-rw-r--r--keyboards/rgbkb/sol/rev1/config.h8
-rw-r--r--keyboards/rgbkb/sol/rev1/info.json46
-rw-r--r--keyboards/rgbkb/sol/rev2/config.h16
-rw-r--r--keyboards/rgbkb/sol/rev2/info.json46
-rw-r--r--keyboards/rgbkb/sol3/config.h59
-rw-r--r--keyboards/rgbkb/sol3/keymaps/default/config.h2
-rw-r--r--keyboards/rgbkb/sol3/keymaps/via/config.h2
-rw-r--r--keyboards/rgbkb/sol3/rev1/info.json52
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/default/config.h4
-rw-r--r--keyboards/rgbkb/zygomorph/rev1/config.h7
-rw-r--r--keyboards/rgbkb/zygomorph/rev1/info.json3
-rw-r--r--keyboards/riot_pad/readme.md25
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/config.h20
-rw-r--r--keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/config.h19
-rw-r--r--keyboards/rookiebwoy/late9/readme.md27
-rw-r--r--keyboards/rookiebwoy/late9/rev1/config.h (renamed from keyboards/late9/rev1/config.h)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/info.json (renamed from keyboards/late9/rev1/info.json)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c (renamed from keyboards/late9/rev1/keymaps/default/keymap.c)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/keymaps/default/readme.md (renamed from keyboards/late9/rev1/keymaps/default/readme.md)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/keymaps/multitap/keymap.c (renamed from keyboards/late9/rev1/keymaps/multitap/keymap.c)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/keymaps/multitap/readme.md (renamed from keyboards/late9/rev1/keymaps/multitap/readme.md)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/keymaps/multitap/rules.mk (renamed from keyboards/late9/rev1/keymaps/multitap/rules.mk)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/readme.md (renamed from keyboards/late9/rev1/readme.md)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/rev1.c (renamed from keyboards/late9/rev1/rev1.c)0
-rw-r--r--keyboards/rookiebwoy/late9/rev1/rules.mk (renamed from keyboards/late9/rev1/rules.mk)0
-rwxr-xr-xkeyboards/rookiebwoy/late9/rules.mk1
-rw-r--r--keyboards/rookiebwoy/neopad/readme.md25
-rwxr-xr-xkeyboards/rookiebwoy/neopad/rev1/config.h (renamed from keyboards/neopad/rev1/config.h)0
-rwxr-xr-xkeyboards/rookiebwoy/neopad/rev1/info.json (renamed from keyboards/neopad/rev1/info.json)0
-rwxr-xr-xkeyboards/rookiebwoy/neopad/rev1/keymaps/default/keymap.c (renamed from keyboards/neopad/rev1/keymaps/default/keymap.c)0
-rw-r--r--keyboards/rookiebwoy/neopad/rev1/readme.md (renamed from keyboards/neopad/rev1/readme.md)0
-rwxr-xr-xkeyboards/rookiebwoy/neopad/rev1/rev1.c (renamed from keyboards/neopad/rev1/rev1.c)0
-rwxr-xr-xkeyboards/rookiebwoy/neopad/rev1/rules.mk (renamed from keyboards/neopad/rev1/rules.mk)0
-rwxr-xr-xkeyboards/rookiebwoy/neopad/rules.mk1
-rw-r--r--keyboards/rura66/rev1/oled_display.c141
-rw-r--r--keyboards/ryanskidmore/rskeys100/config.h9
-rw-r--r--keyboards/ryanskidmore/rskeys100/info.json6
-rw-r--r--keyboards/s_ol/0xc_pad/config.h47
-rw-r--r--keyboards/s_ol/0xc_pad/info.json20
-rw-r--r--keyboards/saevus/cor_tkl/config.h23
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/config.h6
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/default_with_setta21/config.h6
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/salicylic/config.h2
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/config.h6
-rw-r--r--keyboards/salicylic_acid3/naked64/keymaps/default_with_setta21/config.h2
-rw-r--r--keyboards/salicylic_acid3/setta21/keymaps/salicylic/config.h2
-rw-r--r--keyboards/sawnsprojects/satxri6key/config.h71
-rw-r--r--keyboards/sawnsprojects/satxri6key/info.json52
-rw-r--r--keyboards/senselessclay/ck60/config.h51
-rw-r--r--keyboards/senselessclay/ck60/info.json27
-rw-r--r--keyboards/sets3n/kk980/config.h5
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/config.h (renamed from keyboards/flygone60/rev3/config.h)0
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/info.json (renamed from keyboards/flygone60/rev3/info.json)0
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/keymaps/default/keymap.c (renamed from keyboards/flygone60/rev3/keymaps/default/keymap.c)0
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/keymaps/default/readme.md (renamed from keyboards/flygone60/rev3/keymaps/default/readme.md)0
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/keymaps/via/keymap.c (renamed from keyboards/flygone60/rev3/keymaps/via/keymap.c)0
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/keymaps/via/rules.mk (renamed from keyboards/flygone60/rev3/keymaps/via/rules.mk)0
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/readme.md19
-rw-r--r--keyboards/shandoncodes/flygone60/rev3/rules.mk (renamed from keyboards/flygone60/rev3/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino/hotswap/config.h (renamed from keyboards/mino/hotswap/config.h)0
-rw-r--r--keyboards/shandoncodes/mino/hotswap/info.json (renamed from keyboards/mino/hotswap/info.json)0
-rw-r--r--keyboards/shandoncodes/mino/hotswap/rules.mk (renamed from keyboards/mino/hotswap/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino/keymaps/default/keymap.c (renamed from keyboards/mino/keymaps/default/keymap.c)0
-rw-r--r--keyboards/shandoncodes/mino/keymaps/via/keymap.c (renamed from keyboards/mino/keymaps/via/keymap.c)0
-rw-r--r--keyboards/shandoncodes/mino/keymaps/via/rules.mk (renamed from keyboards/mino/keymaps/via/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino/readme.md27
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/config.h (renamed from keyboards/mino_plus/hotswap/config.h)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/halconf.h (renamed from keyboards/mino_plus/hotswap/halconf.h)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/hotswap.c (renamed from keyboards/mino_plus/hotswap/hotswap.c)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/info.json (renamed from keyboards/mino_plus/hotswap/info.json)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/keymaps/default/keymap.c (renamed from keyboards/mino_plus/hotswap/keymaps/default/keymap.c)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/keymaps/via/keymap.c (renamed from keyboards/mino_plus/hotswap/keymaps/via/keymap.c)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/keymaps/via/rules.mk (renamed from keyboards/mino_plus/hotswap/keymaps/via/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/mcuconf.h (renamed from keyboards/mino_plus/hotswap/mcuconf.h)0
-rw-r--r--keyboards/shandoncodes/mino_plus/hotswap/rules.mk (renamed from keyboards/mino_plus/hotswap/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino_plus/mino_plus.c251
-rw-r--r--keyboards/shandoncodes/mino_plus/readme.md29
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/config.h (renamed from keyboards/mino_plus/soldered/config.h)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/halconf.h (renamed from keyboards/mino_plus/soldered/halconf.h)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/info.json (renamed from keyboards/mino_plus/soldered/info.json)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/keymaps/default/keymap.c (renamed from keyboards/mino_plus/soldered/keymaps/default/keymap.c)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/keymaps/via/keymap.c (renamed from keyboards/mino_plus/soldered/keymaps/via/keymap.c)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/keymaps/via/rules.mk (renamed from keyboards/mino_plus/soldered/keymaps/via/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/mcuconf.h (renamed from keyboards/mino_plus/soldered/mcuconf.h)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/rules.mk (renamed from keyboards/mino_plus/soldered/rules.mk)0
-rw-r--r--keyboards/shandoncodes/mino_plus/soldered/soldered.c (renamed from keyboards/mino_plus/soldered/soldered.c)0
-rw-r--r--keyboards/shandoncodes/riot_pad/config.h (renamed from keyboards/riot_pad/config.h)0
-rw-r--r--keyboards/shandoncodes/riot_pad/halconf.h (renamed from keyboards/riot_pad/halconf.h)0
-rw-r--r--keyboards/shandoncodes/riot_pad/info.json (renamed from keyboards/riot_pad/info.json)0
-rw-r--r--keyboards/shandoncodes/riot_pad/keymaps/default/keymap.c (renamed from keyboards/riot_pad/keymaps/default/keymap.c)0
-rw-r--r--keyboards/shandoncodes/riot_pad/keymaps/via/keymap.c (renamed from keyboards/riot_pad/keymaps/via/keymap.c)0
-rw-r--r--keyboards/shandoncodes/riot_pad/keymaps/via/rules.mk (renamed from keyboards/riot_pad/keymaps/via/rules.mk)0
-rw-r--r--keyboards/shandoncodes/riot_pad/mcuconf.h (renamed from keyboards/riot_pad/mcuconf.h)0
-rw-r--r--keyboards/shandoncodes/riot_pad/readme.md25
-rw-r--r--keyboards/shandoncodes/riot_pad/rules.mk (renamed from keyboards/riot_pad/rules.mk)0
-rw-r--r--keyboards/sharkoon/skiller_sgk50_s3/config.h5
-rw-r--r--keyboards/sharkoon/skiller_sgk50_s3/info.json7
-rw-r--r--keyboards/silverbullet44/config.h15
-rw-r--r--keyboards/silverbullet44/info.json7
-rw-r--r--keyboards/sirius/unigo66/main.c2
-rw-r--r--keyboards/skeletonkbd/frost68/config.h55
-rw-r--r--keyboards/skeletonkbd/frost68/info.json52
-rw-r--r--keyboards/skmt/15k/config.h75
-rw-r--r--keyboards/skmt/15k/info.json50
-rw-r--r--keyboards/skyloong/dt40/config.h8
-rw-r--r--keyboards/skyloong/dt40/info.json6
-rw-r--r--keyboards/skyloong/gk61/pro/config.h11
-rw-r--r--keyboards/skyloong/gk61/pro/pro.c2
-rw-r--r--keyboards/skyloong/gk61/pro_48/config.h7
-rw-r--r--keyboards/skyloong/gk61/pro_48/info.json3
-rw-r--r--keyboards/skyloong/gk61/pro_48/pro_48.c2
-rw-r--r--keyboards/skyloong/gk61/v1/config.h5
-rw-r--r--keyboards/skyloong/gk61/v1/info.json3
-rw-r--r--keyboards/skyloong/gk61/v1/v1.c2
-rw-r--r--keyboards/skyloong/qk21/v1/config.h5
-rw-r--r--keyboards/skyloong/qk21/v1/info.json3
-rw-r--r--keyboards/smallkeyboard/config.h52
-rw-r--r--keyboards/smallkeyboard/info.json31
-rw-r--r--keyboards/smallkeyboard/smallkeyboard.c2
-rw-r--r--keyboards/smithrune/iron180/info.json2
-rw-r--r--keyboards/smithrune/iron180v2/readme.md27
-rw-r--r--keyboards/smithrune/iron180v2/v2h/config.h26
-rw-r--r--keyboards/smithrune/iron180v2/v2h/info.json674
-rwxr-xr-xkeyboards/smithrune/iron180v2/v2h/keymaps/default/keymap.c37
-rwxr-xr-xkeyboards/smithrune/iron180v2/v2h/keymaps/via/keymap.c37
-rw-r--r--keyboards/smithrune/iron180v2/v2h/keymaps/via/rules.mk (renamed from keyboards/w1_at/keymaps/via/rules.mk)0
-rw-r--r--keyboards/smithrune/iron180v2/v2h/matrix_diagram.md24
-rw-r--r--keyboards/smithrune/iron180v2/v2h/rules.mk1
-rw-r--r--keyboards/smithrune/iron180v2/v2s/config.h46
-rw-r--r--keyboards/smithrune/iron180v2/v2s/halconf.h26
-rw-r--r--keyboards/smithrune/iron180v2/v2s/info.json1432
-rwxr-xr-xkeyboards/smithrune/iron180v2/v2s/keymaps/default/keymap.c37
-rwxr-xr-xkeyboards/smithrune/iron180v2/v2s/keymaps/via/keymap.c37
-rw-r--r--keyboards/smithrune/iron180v2/v2s/keymaps/via/rules.mk1
-rw-r--r--keyboards/smithrune/iron180v2/v2s/matrix_diagram.md24
-rw-r--r--keyboards/smithrune/iron180v2/v2s/mcuconf.h22
-rw-r--r--keyboards/smithrune/iron180v2/v2s/rules.mk1
-rw-r--r--keyboards/smoll/lefty/config.h (renamed from keyboards/lefty/config.h)0
-rw-r--r--keyboards/smoll/lefty/info.json (renamed from keyboards/lefty/info.json)0
-rw-r--r--keyboards/smoll/lefty/keymaps/default/keymap.c (renamed from keyboards/lefty/keymaps/default/keymap.c)0
-rw-r--r--keyboards/smoll/lefty/keymaps/via/keymap.c (renamed from keyboards/lefty/keymaps/via/keymap.c)0
-rw-r--r--keyboards/smoll/lefty/keymaps/via/rules.mk1
-rw-r--r--keyboards/smoll/lefty/lefty.c (renamed from keyboards/lefty/lefty.c)0
-rw-r--r--keyboards/smoll/lefty/readme.md (renamed from keyboards/lefty/readme.md)0
-rw-r--r--keyboards/smoll/lefty/rev1/info.json (renamed from keyboards/lefty/rev1/info.json)0
-rw-r--r--keyboards/smoll/lefty/rev1/rules.mk (renamed from keyboards/pico/65keys/rules.mk)0
-rw-r--r--keyboards/smoll/lefty/rev2/info.json (renamed from keyboards/lefty/rev2/info.json)0
-rw-r--r--keyboards/smoll/lefty/rev2/rules.mk (renamed from keyboards/pico/70keys/rules.mk)0
-rw-r--r--keyboards/smoll/lefty/rules.mk17
-rw-r--r--keyboards/smoll/pw88/info.json (renamed from keyboards/pw88/info.json)0
-rw-r--r--keyboards/smoll/pw88/keymaps/default/keymap.c (renamed from keyboards/pw88/keymaps/default/keymap.c)0
-rw-r--r--keyboards/smoll/pw88/keymaps/via/keymap.c (renamed from keyboards/pw88/keymaps/via/keymap.c)0
-rw-r--r--keyboards/smoll/pw88/keymaps/via/rules.mk1
-rw-r--r--keyboards/smoll/pw88/readme.md (renamed from keyboards/pw88/readme.md)0
-rw-r--r--keyboards/smoll/pw88/rules.mk (renamed from keyboards/pw88/rules.mk)0
-rw-r--r--keyboards/snes_macropad/snes_macropad.c2
-rw-r--r--keyboards/sofle/info.json117
-rw-r--r--[-rwxr-xr-x]keyboards/sofle/keyhive/config.h0
-rw-r--r--keyboards/sofle/keyhive/info.json13
-rw-r--r--[-rwxr-xr-x]keyboards/sofle/keyhive/readme.md0
-rw-r--r--[-rwxr-xr-x]keyboards/sofle/keyhive/rules.mk17
-rw-r--r--keyboards/sofle/keymaps/default/config.h6
-rw-r--r--keyboards/sofle/keymaps/default/keymap.c163
-rw-r--r--keyboards/sofle/keymaps/default/readme.md8
-rw-r--r--keyboards/sofle/keymaps/default/rules.mk6
-rw-r--r--keyboards/sofle/keymaps/rgb_default/config.h14
-rw-r--r--keyboards/sofle/keymaps/via/config.h50
-rw-r--r--keyboards/sofle/keymaps/via/keymap.c29
-rw-r--r--keyboards/sofle/keymaps/via/oled.c85
-rw-r--r--keyboards/sofle/keymaps/via/readme.md2
-rw-r--r--keyboards/sofle/keymaps/via/rules.mk7
-rw-r--r--keyboards/sofle/readme.md2
-rw-r--r--keyboards/sofle/rev1/info.json13
-rw-r--r--keyboards/sofle/rev1/readme.md2
-rw-r--r--keyboards/sofle/rev1/rev1.c87
-rw-r--r--keyboards/sofle/rev1/rules.mk3
-rw-r--r--keyboards/sofle/rules.mk2
-rw-r--r--keyboards/sofle/sofle.c89
-rw-r--r--keyboards/sofle_choc/info.json1
-rw-r--r--keyboards/sofle_choc/keymaps/default/config.h2
-rw-r--r--keyboards/sofle_choc/keymaps/via/config.h2
-rw-r--r--keyboards/sowbug/68keys/config.h72
-rw-r--r--keyboards/sowbug/68keys/info.json48
-rw-r--r--keyboards/sowbug/ansi_tkl/config.h73
-rw-r--r--keyboards/sowbug/ansi_tkl/info.json48
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/config.h76
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/info.json48
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/config.h75
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/hs/config.h21
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/info.json49
-rw-r--r--keyboards/splitkb/aurora/corne/rev1/config.h8
-rw-r--r--keyboards/splitkb/aurora/corne/rev1/info.json8
-rw-r--r--keyboards/splitkb/aurora/helix/keymaps/default/config.h2
-rw-r--r--keyboards/splitkb/aurora/helix/rev1/config.h2
-rw-r--r--keyboards/splitkb/aurora/lily58/rev1/config.h7
-rw-r--r--keyboards/splitkb/aurora/lily58/rev1/info.json8
-rw-r--r--keyboards/splitkb/aurora/sofle_v2/keymaps/default/config.h2
-rw-r--r--keyboards/splitkb/aurora/sofle_v2/rev1/config.h2
-rw-r--r--keyboards/splitkb/aurora/sweep/keymaps/default/config.h2
-rw-r--r--keyboards/splitkb/aurora/sweep/rev1/config.h7
-rw-r--r--keyboards/splitkb/aurora/sweep/rev1/info.json8
-rw-r--r--keyboards/splitkb/kyria/rev1/config.h9
-rw-r--r--keyboards/splitkb/kyria/rev1/info.json10
-rw-r--r--keyboards/splitkb/kyria/rev2/config.h10
-rw-r--r--keyboards/splitkb/kyria/rev2/info.json10
-rw-r--r--keyboards/splitkb/kyria/rev3/config.h7
-rw-r--r--keyboards/splitkb/kyria/rev3/info.json8
-rw-r--r--keyboards/stront/config.h57
-rw-r--r--keyboards/stront/info.json49
-rw-r--r--keyboards/sx60/keymaps/amnobis/config.h1
-rw-r--r--keyboards/sx60/matrix.c4
-rwxr-xr-xkeyboards/sx60/sx60.c4
-rw-r--r--keyboards/synthlabs/060/config.h60
-rw-r--r--keyboards/synthlabs/060/info.json36
-rw-r--r--keyboards/system76/launch_1/config.h29
-rw-r--r--keyboards/system76/launch_1/info.json23
-rw-r--r--keyboards/system76/launch_1/usb_mux.c81
-rw-r--r--keyboards/takashicompany/minizone/config.h25
-rw-r--r--keyboards/takashicompany/minizone/info.json22
-rw-r--r--keyboards/takashicompany/minizone/keymaps/default/keymap.c86
-rw-r--r--keyboards/takashicompany/minizone/keymaps/via/config.h5
-rw-r--r--keyboards/takashicompany/minizone/keymaps/via/keymap.c98
-rw-r--r--keyboards/takashicompany/minizone/rules.mk14
-rw-r--r--keyboards/takashiski/namecard2x4/keymaps/brainfuck/config.h19
-rw-r--r--keyboards/teleport/native/config.h29
-rw-r--r--keyboards/teleport/native/info.json18
-rw-r--r--keyboards/teleport/native/native.c2
-rw-r--r--keyboards/terrazzo/config.h36
-rw-r--r--keyboards/terrazzo/info.json4
-rw-r--r--keyboards/terrazzo/terrazzo.c2
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/config.h6
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/info.json124
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/keymap.c97
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/rules.mk1
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/keymap.c85
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/rules.mk2
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/readme.md32
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/rules.mk15
-rw-r--r--keyboards/themadnoodle/noodlepad/config.h6
-rw-r--r--keyboards/themadnoodle/noodlepad/info.json107
-rw-r--r--keyboards/themadnoodle/noodlepad/keymaps/default/keymap.c93
-rw-r--r--keyboards/themadnoodle/noodlepad/keymaps/default/rules.mk1
-rw-r--r--keyboards/themadnoodle/noodlepad/keymaps/via/keymap.c85
-rw-r--r--keyboards/themadnoodle/noodlepad/keymaps/via/rules.mk2
-rw-r--r--keyboards/themadnoodle/noodlepad/readme.md17
-rw-r--r--keyboards/themadnoodle/noodlepad/rules.mk17
-rw-r--r--keyboards/themadnoodle/noodlepad/v1/info.json25
-rw-r--r--keyboards/themadnoodle/noodlepad/v1/readme.md27
-rw-r--r--keyboards/themadnoodle/noodlepad/v1/rules.mk1
-rw-r--r--keyboards/themadnoodle/noodlepad/v2/info.json24
-rw-r--r--keyboards/themadnoodle/noodlepad/v2/readme.md27
-rw-r--r--keyboards/themadnoodle/noodlepad/v2/rules.mk1
-rw-r--r--keyboards/thevankeyboards/caravan/keymaps/default/config.h1
-rw-r--r--keyboards/tkc/california/config.h3
-rw-r--r--keyboards/tkc/california/info.json3
-rw-r--r--keyboards/tkc/portico/config.h33
-rw-r--r--keyboards/tkc/portico/info.json34
-rw-r--r--keyboards/tkc/portico68v2/config.h59
-rw-r--r--keyboards/tkc/portico68v2/info.json48
-rw-r--r--keyboards/tkc/portico68v2/portico68v2.c6
-rw-r--r--keyboards/tkc/portico75/config.h64
-rw-r--r--keyboards/tkc/portico75/info.json34
-rw-r--r--keyboards/tkc/tkl_ab87/config.h3
-rw-r--r--keyboards/tominabox1/le_chiffre/config.h6
-rw-r--r--keyboards/tominabox1/le_chiffre/info.json3
-rw-r--r--keyboards/torn/mcp23018.c4
-rw-r--r--keyboards/touchpad/matrix.c2
-rw-r--r--keyboards/treasure/type9s3/config.h30
-rw-r--r--keyboards/treasure/type9s3/info.json25
-rw-r--r--keyboards/tunks/ergo33/keymaps/default/config.h2
-rw-r--r--keyboards/tweetydabird/chameleon/config.h6
-rw-r--r--keyboards/tzarc/djinn/rev1/config.h3
-rw-r--r--keyboards/tzarc/djinn/rev1/info.json3
-rw-r--r--keyboards/tzarc/djinn/rev2/config.h3
-rw-r--r--keyboards/tzarc/djinn/rev2/info.json3
-rw-r--r--keyboards/tzarc/ghoul/config.h3
-rw-r--r--keyboards/ungodly/launch_pad/config.h63
-rw-r--r--keyboards/ungodly/launch_pad/info.json11
-rw-r--r--keyboards/unikeyboard/diverge3/keymaps/workman/rules.mk1
-rw-r--r--keyboards/unison/keymaps/via/config.h4
-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/info.json569
-rw-r--r--keyboards/w1_at/keymaps/default/keymap.c49
-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/readme.md32
-rw-r--r--keyboards/w1_at/rules.mk15
-rw-r--r--keyboards/w1_at/w1_at.c30
-rw-r--r--keyboards/wavtype/p01_ultra/config.h2
-rw-r--r--keyboards/wekey/we27/config.h59
-rw-r--r--keyboards/wekey/we27/info.json9
-rw-r--r--keyboards/wilba_tech/wt60_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt60_a/wt60_a.c120
-rw-r--r--keyboards/wilba_tech/wt65_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt65_a/wt65_a.c120
-rw-r--r--keyboards/wilba_tech/wt65_b/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt65_b/wt65_b.c120
-rw-r--r--keyboards/wilba_tech/wt75_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt75_a/wt75_a.c120
-rw-r--r--keyboards/wilba_tech/wt75_b/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt75_b/wt75_b.c120
-rw-r--r--keyboards/wilba_tech/wt75_c/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt75_c/wt75_c.c120
-rw-r--r--keyboards/wilba_tech/wt80_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt80_a/wt80_a.c120
-rw-r--r--keyboards/wilba_tech/wt_mono_backlight.c112
-rw-r--r--keyboards/winry/winry315/config.h76
-rw-r--r--keyboards/winry/winry315/info.json46
-rw-r--r--keyboards/wolf/m60_b/config.h84
-rw-r--r--keyboards/wolf/m60_b/info.json48
-rw-r--r--keyboards/wolf/m6_c/config.h10
-rw-r--r--keyboards/wolf/m6_c/info.json7
-rw-r--r--keyboards/work_louder/loop/config.h55
-rw-r--r--keyboards/work_louder/loop/info.json38
-rw-r--r--keyboards/work_louder/micro/config.h52
-rw-r--r--keyboards/work_louder/micro/info.json38
-rw-r--r--keyboards/work_louder/nano/config.h54
-rw-r--r--keyboards/work_louder/nano/info.json38
-rw-r--r--keyboards/work_louder/numpad/config.h52
-rw-r--r--keyboards/work_louder/numpad/info.json38
-rw-r--r--keyboards/work_louder/rgb_functions.c6
-rw-r--r--keyboards/work_louder/work_board/config.h57
-rw-r--r--keyboards/work_louder/work_board/info.json40
-rw-r--r--keyboards/xbows/knight/config.h43
-rw-r--r--keyboards/xbows/knight/info.json24
-rw-r--r--keyboards/xbows/knight/knight.c2
-rw-r--r--keyboards/xbows/knight_plus/config.h43
-rw-r--r--keyboards/xbows/knight_plus/info.json24
-rw-r--r--keyboards/xbows/knight_plus/knight_plus.c2
-rw-r--r--keyboards/xbows/nature/config.h45
-rw-r--r--keyboards/xbows/nature/info.json24
-rw-r--r--keyboards/xbows/nature/nature.c2
-rw-r--r--keyboards/xbows/numpad/config.h36
-rw-r--r--keyboards/xbows/numpad/info.json24
-rw-r--r--keyboards/xbows/numpad/numpad.c2
-rw-r--r--keyboards/xbows/ranger/config.h43
-rw-r--r--keyboards/xbows/ranger/info.json24
-rw-r--r--keyboards/xbows/ranger/ranger.c2
-rw-r--r--keyboards/xbows/woody/config.h64
-rw-r--r--keyboards/xbows/woody/info.json36
-rw-r--r--keyboards/xbows/woody/woody.c2
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/config.h56
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/info.json46
-rwxr-xr-xkeyboards/xelus/la_plus/config.h53
-rw-r--r--keyboards/xelus/la_plus/info.json37
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/config.h55
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/info.json51
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/config.h56
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/info.json49
-rw-r--r--keyboards/xelus/valor/rev2/config.h57
-rw-r--r--keyboards/xelus/valor/rev2/info.json49
-rw-r--r--keyboards/yandrstudio/nz64/config.h78
-rw-r--r--keyboards/yandrstudio/nz64/info.json50
-rw-r--r--keyboards/yandrstudio/nz67v2/config.h66
-rw-r--r--keyboards/yandrstudio/nz67v2/info.json49
-rw-r--r--keyboards/yandrstudio/tg67/config.h69
-rw-r--r--keyboards/yandrstudio/tg67/info.json49
-rw-r--r--keyboards/ydkb/grape/config.h2
-rw-r--r--keyboards/ydkb/grape/info.json3
-rw-r--r--keyboards/yiancardesigns/barleycorn/matrix.c6
-rw-r--r--keyboards/yiancardesigns/gingham/gingham.c4
-rw-r--r--keyboards/yiancardesigns/gingham/matrix.c10
-rw-r--r--keyboards/yiancardesigns/seigaiha/matrix.c6
-rw-r--r--keyboards/yiancardesigns/seigaiha/seigaiha.c2
-rw-r--r--keyboards/ymdk/id75/config.h7
-rw-r--r--keyboards/ymdk/id75/info.json3
-rw-r--r--keyboards/ymdk/sp64/matrix.c4
-rw-r--r--keyboards/ymdk/sp64/sp64.c6
-rw-r--r--keyboards/ymdk/sp64/sp64.h4
-rw-r--r--keyboards/ymdk/ymd09/config.h53
-rw-r--r--keyboards/ymdk/ymd09/info.json37
-rw-r--r--keyboards/ymdk/ymd40/air40/config.h72
-rw-r--r--keyboards/ymdk/ymd40/air40/info.json49
-rw-r--r--keyboards/ymdk/ymd75/rev4/iso/config.h2
-rw-r--r--keyboards/ymdk/ymd75/rev4/iso/info.json3
-rw-r--r--keyboards/yncognito/batpad/config.h76
-rw-r--r--keyboards/yncognito/batpad/info.json51
-rw-r--r--keyboards/yoichiro/lunakey_macro/config.h3
-rw-r--r--keyboards/yosino58/keymaps/default/config.h4
-rw-r--r--keyboards/yushakobo/quick17/config.h12
-rw-r--r--keyboards/yushakobo/quick17/info.json2
-rw-r--r--keyboards/zigotica/z12/config.h (renamed from keyboards/z12/config.h)0
-rw-r--r--keyboards/zigotica/z12/info.json (renamed from keyboards/z12/info.json)0
-rw-r--r--keyboards/zigotica/z12/keymaps/default/config.h (renamed from keyboards/z12/keymaps/default/config.h)0
-rw-r--r--keyboards/zigotica/z12/keymaps/default/keymap.c (renamed from keyboards/z12/keymaps/default/keymap.c)0
-rw-r--r--keyboards/zigotica/z12/keymaps/default/readme.md (renamed from keyboards/z12/keymaps/default/readme.md)0
-rw-r--r--keyboards/zigotica/z12/keymaps/default/rules.mk (renamed from keyboards/z12/keymaps/default/rules.mk)0
-rw-r--r--keyboards/zigotica/z12/readme.md (renamed from keyboards/z12/readme.md)0
-rw-r--r--keyboards/zigotica/z12/rules.mk (renamed from keyboards/z12/rules.mk)0
-rw-r--r--keyboards/zigotica/z34/config.h (renamed from keyboards/z34/config.h)0
-rw-r--r--keyboards/zigotica/z34/info.json (renamed from keyboards/z34/info.json)0
-rw-r--r--keyboards/zigotica/z34/keymaps/default/config.h (renamed from keyboards/z34/keymaps/default/config.h)0
-rw-r--r--keyboards/zigotica/z34/keymaps/default/keymap.c (renamed from keyboards/z34/keymaps/default/keymap.c)0
-rw-r--r--keyboards/zigotica/z34/keymaps/default/readme.md (renamed from keyboards/z34/keymaps/default/readme.md)0
-rw-r--r--keyboards/zigotica/z34/keymaps/default/rules.mk (renamed from keyboards/z34/keymaps/default/rules.mk)0
-rw-r--r--keyboards/zigotica/z34/readme.md (renamed from keyboards/z34/readme.md)0
-rw-r--r--keyboards/zigotica/z34/rules.mk (renamed from keyboards/z34/rules.mk)0
-rw-r--r--keyboards/zsa/moonlander/config.h87
-rw-r--r--keyboards/zsa/moonlander/halconf.h (renamed from keyboards/moonlander/halconf.h)0
-rw-r--r--keyboards/zsa/moonlander/info.json162
-rw-r--r--keyboards/zsa/moonlander/keymaps/default/config.h (renamed from keyboards/moonlander/keymaps/default/config.h)0
-rw-r--r--keyboards/zsa/moonlander/keymaps/default/keymap.c (renamed from keyboards/moonlander/keymaps/default/keymap.c)0
-rw-r--r--keyboards/zsa/moonlander/keymaps/via/keymap.c (renamed from keyboards/moonlander/keymaps/via/keymap.c)0
-rw-r--r--keyboards/zsa/moonlander/keymaps/via/readme.md (renamed from keyboards/moonlander/keymaps/via/readme.md)0
-rw-r--r--keyboards/zsa/moonlander/keymaps/via/rules.mk1
-rw-r--r--keyboards/zsa/moonlander/matrix.c233
-rw-r--r--keyboards/zsa/moonlander/mcuconf.h (renamed from keyboards/moonlander/mcuconf.h)0
-rw-r--r--keyboards/zsa/moonlander/moonlander.c469
-rw-r--r--keyboards/zsa/moonlander/moonlander.h (renamed from keyboards/moonlander/moonlander.h)0
-rw-r--r--keyboards/zsa/moonlander/readme.md58
-rw-r--r--keyboards/zsa/moonlander/rules.mk (renamed from keyboards/moonlander/rules.mk)0
-rw-r--r--keyboards/zykrah/fuyu/config.h41
-rw-r--r--keyboards/zykrah/fuyu/info.json37
-rw-r--r--keyboards/zykrah/fuyu/keymaps/via/keymap.c2
-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
-rwxr-xr-xlib/python/qmk/cli/format/json.py4
-rwxr-xr-xlib/python/qmk/cli/generate/config_h.py2
-rwxr-xr-xlib/python/qmk/cli/generate/keyboard_c.py25
-rw-r--r--lib/python/qmk/cli/migrate.py5
-rw-r--r--lib/python/qmk/info.py43
-rw-r--r--platforms/avr/_print.h7
-rw-r--r--platforms/avr/drivers/i2c_master.c39
-rw-r--r--platforms/avr/drivers/i2c_master.h22
-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--platforms/chibios/drivers/analog.c111
-rw-r--r--platforms/chibios/drivers/audio_dac.h34
-rw-r--r--platforms/chibios/drivers/audio_dac_additive.c48
-rw-r--r--platforms/chibios/drivers/audio_pwm_hardware.c8
-rw-r--r--platforms/chibios/drivers/i2c_master.c47
-rw-r--r--platforms/chibios/drivers/i2c_master.h18
-rw-r--r--platforms/chibios/drivers/ws2812_pwm.c3
-rw-r--r--quantum/audio/audio.c37
-rw-r--r--quantum/audio/audio.h3
-rw-r--r--quantum/backlight/backlight.c21
-rw-r--r--quantum/backlight/backlight.h2
-rw-r--r--quantum/bootmagic/bootmagic.c (renamed from quantum/bootmagic/bootmagic_lite.c)0
-rw-r--r--quantum/bootmagic/bootmagic.h7
-rw-r--r--quantum/bootmagic/bootmagic_lite.h25
-rw-r--r--quantum/bootmagic/magic.c54
-rw-r--r--quantum/bootmagic/magic.h18
-rw-r--r--quantum/dip_switch.c57
-rw-r--r--quantum/dip_switch.h27
-rw-r--r--quantum/eeconfig.c2
-rw-r--r--quantum/keyboard.c60
-rw-r--r--quantum/keyboard.h13
-rw-r--r--quantum/keycode_config.c2
-rw-r--r--quantum/keymap_common.c12
-rw-r--r--quantum/keymap_extras/keymap_canadian_french.h122
-rw-r--r--quantum/keymap_extras/keymap_spanish_latin_america.h105
-rw-r--r--quantum/keymap_extras/sendstring_canadian_french.h120
-rw-r--r--quantum/keymap_extras/sendstring_spanish_latin_america.h120
-rw-r--r--quantum/keymap_introspection.c18
-rw-r--r--quantum/keymap_introspection.h12
-rw-r--r--quantum/led.c4
-rw-r--r--quantum/led_matrix/led_matrix.c43
-rw-r--r--quantum/led_matrix/led_matrix.h45
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c36
-rw-r--r--quantum/led_matrix/led_matrix_drivers.h44
-rw-r--r--quantum/logging/debug.h116
-rw-r--r--quantum/logging/print.h36
-rw-r--r--quantum/pointing_device/pointing_device.c11
-rw-r--r--quantum/pointing_device/pointing_device_auto_mouse.c15
-rw-r--r--quantum/pointing_device/pointing_device_auto_mouse.h10
-rw-r--r--quantum/process_keycode/process_caps_word.c4
-rw-r--r--quantum/process_keycode/process_midi.c23
-rw-r--r--quantum/process_keycode/process_space_cadet.c6
-rw-r--r--quantum/process_keycode/process_space_cadet.h1
-rw-r--r--quantum/process_keycode/process_tap_dance.c6
-rw-r--r--quantum/process_keycode/process_tap_dance.h4
-rw-r--r--quantum/quantum.h5
-rw-r--r--quantum/quantum_keycodes.h4
-rw-r--r--quantum/rgb_matrix/animations/solid_reactive_anim.h2
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c29
-rw-r--r--quantum/rgb_matrix/rgb_matrix.h40
-rw-r--r--quantum/rgb_matrix/rgb_matrix_drivers.c44
-rw-r--r--quantum/rgb_matrix/rgb_matrix_drivers.h47
-rw-r--r--quantum/rgblight/rgblight.c71
-rw-r--r--quantum/rgblight/rgblight.h9
-rw-r--r--quantum/rgblight/rgblight_drivers.c20
-rw-r--r--quantum/rgblight/rgblight_drivers.h13
-rw-r--r--quantum/split_common/split_util.c6
-rw-r--r--quantum/split_common/transport.c6
-rw-r--r--readme.md4
-rw-r--r--tests/caps_word/test_caps_word.cpp6
-rw-r--r--tests/tap_dance/examples.c2
-rw-r--r--tmk_core/protocol/chibios/usb_main.c103
-rw-r--r--tmk_core/protocol/chibios/usb_main.h3
-rw-r--r--tmk_core/protocol/lufa/lufa.c46
-rw-r--r--tmk_core/protocol/usb_descriptor.c20
-rw-r--r--tmk_core/protocol/usb_descriptor.h14
-rw-r--r--tmk_core/protocol/vusb/vusb.c17
-rw-r--r--tmk_core/protocol/vusb/vusb.h1
2345 files changed, 36034 insertions, 34752 deletions
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index 60f1cbd837..513a3678a9 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
@@ -361,71 +362,67 @@ ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3218)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31fl3218-simple.c
+ SRC += is31fl3218-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3731)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31fl3731-simple.c
+ SRC += is31fl3731-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3733)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31fl3733-simple.c
+ SRC += is31fl3733-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3736)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31fl3736-simple.c
+ SRC += is31fl3736-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3737)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31fl3737-simple.c
+ SRC += is31fl3737-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3741)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31fl3741-simple.c
+ SRC += is31fl3741-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3742a-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3743a)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3743a-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3745)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3745-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3746a)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3746a-mono.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), snled27351)
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
- SRC += snled27351-simple.c
+ SRC += snled27351-mono.c
endif
endif
@@ -502,31 +499,27 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3742a)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3742a.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3743a)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3743a.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3745)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3745.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3746a)
- OPT_DEFS += -DIS31FLCOMMON
I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
- SRC += is31flcommon.c
+ SRC += is31fl3746a.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), snled27351)
@@ -615,24 +608,9 @@ ifeq ($(strip $(VIA_ENABLE)), yes)
TRI_LAYER_ENABLE := yes
endif
-VALID_MAGIC_TYPES := yes
-BOOTMAGIC_ENABLE ?= no
-ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
- ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),)
- $(call CATASTROPHIC_ERROR,Invalid BOOTMAGIC_ENABLE,BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic)
- endif
- ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
- OPT_DEFS += -DBOOTMAGIC_LITE
- QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c
- endif
-endif
-COMMON_VPATH += $(QUANTUM_DIR)/bootmagic
-QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/magic.c
-
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
CUSTOM_MATRIX ?= no
-
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid CUSTOM_MATRIX,CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
@@ -907,6 +885,12 @@ ifeq ($(strip $(ENCODER_ENABLE)), yes)
endif
endif
+ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
+ ifeq ($(strip $(DIP_SWITCH_MAP_ENABLE)), yes)
+ OPT_DEFS += -DDIP_SWITCH_MAP_ENABLE
+ endif
+endif
+
VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor
WS2812_DRIVER ?= bitbang
diff --git a/builddefs/generic_features.mk b/builddefs/generic_features.mk
index 9c86958625..dc34a64230 100644
--- a/builddefs/generic_features.mk
+++ b/builddefs/generic_features.mk
@@ -21,6 +21,7 @@ SPACE_CADET_ENABLE ?= yes
GENERIC_FEATURES = \
AUTO_SHIFT \
AUTOCORRECT \
+ BOOTMAGIC \
CAPS_WORD \
COMBO \
COMMAND \
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
new file mode 100644
index 0000000000..6fefd11f59
--- /dev/null
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -0,0 +1,407 @@
+{
+ "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": "FR_HASH",
+ "label": "#",
+ }
+ "KC_1": {
+ "key": "FR_1",
+ "label": "1",
+ }
+ "KC_2": {
+ "key": "FR_2",
+ "label": "2",
+ }
+ "KC_3": {
+ "key": "FR_3",
+ "label": "3",
+ }
+ "KC_4": {
+ "key": "FR_4",
+ "label": "4",
+ }
+ "KC_5": {
+ "key": "FR_5",
+ "label": "5",
+ }
+ "KC_6": {
+ "key": "FR_6",
+ "label": "6",
+ }
+ "KC_7": {
+ "key": "FR_7",
+ "label": "7",
+ }
+ "KC_8": {
+ "key": "FR_8",
+ "label": "8",
+ }
+ "KC_9": {
+ "key": "FR_9",
+ "label": "9",
+ }
+ "KC_0": {
+ "key": "FR_0",
+ "label": "0",
+ }
+ "KC_MINS": {
+ "key": "FR_MINS",
+ "label": "-",
+ }
+ "KC_EQL": {
+ "key": "FR_EQL",
+ "label": "=",
+ }
+ "KC_Q": {
+ "key": "FR_Q",
+ "label": "Q",
+ }
+ "KC_W": {
+ "key": "FR_W",
+ "label": "W",
+ }
+ "KC_E": {
+ "key": "FR_E",
+ "label": "E",
+ }
+ "KC_R": {
+ "key": "FR_R",
+ "label": "R",
+ }
+ "KC_T": {
+ "key": "FR_T",
+ "label": "T",
+ }
+ "KC_Y": {
+ "key": "FR_Y",
+ "label": "Y",
+ }
+ "KC_U": {
+ "key": "FR_U",
+ "label": "U",
+ }
+ "KC_I": {
+ "key": "FR_I",
+ "label": "I",
+ }
+ "KC_O": {
+ "key": "FR_O",
+ "label": "O",
+ }
+ "KC_P": {
+ "key": "FR_P",
+ "label": "P",
+ }
+ "KC_LBRC": {
+ "key": "FR_DCIR",
+ "label": "^ (dead)",
+ }
+ "KC_RBRC": {
+ "key": "FR_CEDL",
+ "label": "¸ (dead)",
+ }
+ "KC_A": {
+ "key": "FR_A",
+ "label": "A",
+ }
+ "KC_S": {
+ "key": "FR_S",
+ "label": "S",
+ }
+ "KC_D": {
+ "key": "FR_D",
+ "label": "D",
+ }
+ "KC_F": {
+ "key": "FR_F",
+ "label": "F",
+ }
+ "KC_G": {
+ "key": "FR_G",
+ "label": "G",
+ }
+ "KC_H": {
+ "key": "FR_H",
+ "label": "H",
+ }
+ "KC_J": {
+ "key": "FR_J",
+ "label": "J",
+ }
+ "KC_K": {
+ "key": "FR_K",
+ "label": "K",
+ }
+ "KC_L": {
+ "key": "FR_L",
+ "label": "L",
+ }
+ "KC_SCLN": {
+ "key": "FR_SCLN",
+ "label": ";",
+ }
+ "KC_QUOT": {
+ "key": "FR_DGRV",
+ "label": "` (dead)",
+ }
+ "KC_NUHS": {
+ "key": "FR_LABK",
+ "label": "<",
+ }
+ "KC_NUBS": {
+ "key": "FR_LDAQ",
+ "label": "«",
+ }
+ "KC_Z": {
+ "key": "FR_Z",
+ "label": "Z",
+ }
+ "KC_X": {
+ "key": "FR_X",
+ "label": "X",
+ }
+ "KC_C": {
+ "key": "FR_C",
+ "label": "C",
+ }
+ "KC_V": {
+ "key": "FR_V",
+ "label": "V",
+ }
+ "KC_B": {
+ "key": "FR_B",
+ "label": "B",
+ }
+ "KC_N": {
+ "key": "FR_N",
+ "label": "N",
+ }
+ "KC_M": {
+ "key": "FR_M",
+ "label": "M",
+ }
+ "KC_COMM": {
+ "key": "FR_COMM",
+ "label": ",",
+ }
+ "KC_DOT": {
+ "key": "FR_DOT",
+ "label": ".",
+ }
+ "KC_SLSH": {
+ "key": "FR_EACU",
+ "label": "É",
+ }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │ | │ ! │ " │ / │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
+ * │ │ │ │ │ │ │ │ │ │ │ : │ │ > │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ » │ │ │ │ │ │ │ │ ' │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "S(FR_HASH)": {
+ "key": "FR_PIPE",
+ "label": "|",
+ }
+ "S(FR_1)": {
+ "key": "FR_EXLM",
+ "label": "!",
+ }
+ "S(FR_2)": {
+ "key": "FR_DQUO",
+ "label": "\"",
+ }
+ "S(FR_3)": {
+ "key": "FR_SLSH",
+ "label": "/",
+ }
+ "S(FR_4)": {
+ "key": "FR_DLR",
+ "label": "$",
+ }
+ "S(FR_5)": {
+ "key": "FR_PERC",
+ "label": "%",
+ }
+ "S(FR_6)": {
+ "key": "FR_QUES",
+ "label": "?",
+ }
+ "S(FR_7)": {
+ "key": "FR_AMPR",
+ "label": "&",
+ }
+ "S(FR_8)": {
+ "key": "FR_ASTR",
+ "label": "*",
+ }
+ "S(FR_9)": {
+ "key": "FR_LPRN",
+ "label": "(",
+ }
+ "S(FR_0)": {
+ "key": "FR_RPRN",
+ "label": ")",
+ }
+ "S(FR_MINS)": {
+ "key": "FR_UNDS",
+ "label": "_",
+ }
+ "S(FR_EQL)": {
+ "key": "FR_PLUS",
+ "label": "+",
+ }
+ "S(FR_CEDL)": {
+ "key": "FR_DIAE",
+ "label": "¨ (dead)",
+ }
+ "S(FR_SCLN)": {
+ "key": "FR_COLN",
+ "label": ":",
+ }
+ "S(FR_LABK)": {
+ "key": "FR_RABK",
+ "label": ">",
+ }
+ "S(FR_LDAQ)": {
+ "key": "FR_RDAQ",
+ "label": "»",
+ }
+ "S(FR_COMM)": {
+ "key": "FR_QUOT",
+ "label": "'",
+ }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │ \ │ ± │ @ │ £ │ ¢ │ ¤ │ ¬ │ ¦ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
+ * │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ ° │ │ │ │ │ │ │ µ │ ¯ │ - │ ´ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "ALGR(FR_HASH)": {
+ "key": "FR_BSLS",
+ "label": "\\",
+ }
+ "ALGR(FR_1)": {
+ "key": "FR_PLMN",
+ "label": "±",
+ }
+ "ALGR(FR_2)": {
+ "key": "FR_AT",
+ "label": "@",
+ }
+ "ALGR(FR_3)": {
+ "key": "FR_PND",
+ "label": "£",
+ }
+ "ALGR(FR_4)": {
+ "key": "FR_CENT",
+ "label": "¢",
+ }
+ "ALGR(FR_5)": {
+ "key": "FR_CURR",
+ "label": "¤",
+ }
+ "ALGR(FR_6)": {
+ "key": "FR_NOT",
+ "label": "¬",
+ }
+ "ALGR(FR_7)": {
+ "key": "FR_BRKP",
+ "label": "¦",
+ }
+ "ALGR(FR_8)": {
+ "key": "FR_SUP2",
+ "label": "²",
+ }
+ "ALGR(FR_9)": {
+ "key": "FR_SUP3",
+ "label": "³",
+ }
+ "ALGR(FR_0)": {
+ "key": "FR_QRTR",
+ "label": "¼",
+ }
+ "ALGR(FR_MINS)": {
+ "key": "FR_HALF",
+ "label": "½",
+ }
+ "ALGR(FR_EQL)": {
+ "key": "FR_TQTR",
+ "label": "¾",
+ }
+ "ALGR(FR_O)": {
+ "key": "FR_SECT",
+ "label": "§",
+ }
+ "ALGR(FR_P)": {
+ "key": "FR_PARA",
+ "label": "¶",
+ }
+ "ALGR(FR_DCIR)": {
+ "key": "FR_LBRC",
+ "label": "[",
+ }
+ "ALGR(FR_CEDL)": {
+ "key": "FR_RBRC",
+ "label": "]",
+ }
+ "ALGR(FR_SCLN)": {
+ "key": "FR_TILD",
+ "label": "~",
+ }
+ "ALGR(FR_DGRV)": {
+ "key": "FR_LCBR",
+ "label": "{",
+ }
+ "ALGR(FR_LABK)": {
+ "key": "FR_RCBR",
+ "label": "}",
+ }
+ "ALGR(FR_LDAQ)": {
+ "key": "FR_DEG",
+ "label": "°",
+ }
+ "ALGR(FR_M)": {
+ "key": "FR_MICR",
+ "label": "µ",
+ }
+ "ALGR(FR_COMM)": {
+ "key": "FR_MACR",
+ "label": "¯",
+ }
+ "ALGR(FR_DOT)": {
+ "key": "FR_SHYP",
+ "label": "­ (soft hyphen)",
+ }
+ "ALGR(FR_EACU)": {
+ "key": "FR_ACUT",
+ "label": "´ (dead)",
+ }
+ }
+}
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/info_config.hjson b/data/mappings/info_config.hjson
index 26b437b513..2c4a75df89 100644
--- a/data/mappings/info_config.hjson
+++ b/data/mappings/info_config.hjson
@@ -3,7 +3,7 @@
{
// Format:
// <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
- // value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping", "str", "raw"
+ // value_type: one of "array", "array.int", "bool, "flag", "int", "hex", "list", "mapping", "str", "raw"
// to_json: Default `true`. Set to `false` to exclude this mapping from info.json
// to_c: Default `true`. Set to `false` to exclude this mapping from config.h
// warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
@@ -17,12 +17,14 @@
"APA102_DI_PIN": {"info_key": "apa102.data_pin"},
// Audio
- "AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
- "SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
+ "AUDIO_DEFAULT_ON": {"info_key": "audio.default.on", "value_type": "bool"},
+ "AUDIO_DEFAULT_CLICKY_ON": {"info_key": "audio.default.clicky", "value_type": "bool"},
+ "AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "flag"},
+ "SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "flag"},
// Backlight
- "BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
- "BACKLIGHT_CAPS_LOCK": {"info_key": "backlight.as_caps_lock", "value_type": "bool"},
+ "BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "flag"},
+ "BACKLIGHT_CAPS_LOCK": {"info_key": "backlight.as_caps_lock", "value_type": "flag"},
"BACKLIGHT_LEVELS": {"info_key": "backlight.levels", "value_type": "int"},
"BACKLIGHT_LIMIT_VAL": {"info_key": "backlight.max_brightness", "value_type": "int"},
"BACKLIGHT_ON_STATE": {"info_key": "backlight.on_state", "value_type": "int"},
@@ -40,10 +42,10 @@
"BOOTMAGIC_LITE_ROW_RIGHT": {"info_key": "split.bootmagic.matrix.0", "value_type": "int"},
// Caps Word
- "BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "bool"},
+ "BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "flag"},
"CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"},
- "CAPS_WORD_INVERT_ON_SHIFT": {"info_key": "caps_word.invert_on_shift", "value_type": "bool"},
- "DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "bool"},
+ "CAPS_WORD_INVERT_ON_SHIFT": {"info_key": "caps_word.invert_on_shift", "value_type": "flag"},
+ "DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.double_tap_shift_turns_on", "value_type": "flag"},
// Combos
"COMBO_TERM": {"info_key": "combo.term", "value_type": "int"},
@@ -69,17 +71,17 @@
"LED_PIN_ON_STATE": {"info_key": "indicators.on_state", "value_type": "int"},
// Leader Key
- "LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "bool"},
- "LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "bool"},
+ "LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "flag"},
+ "LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "flag"},
"LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"},
// LED Matrix
- "LED_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "led_matrix.sleep", "value_type": "bool"},
"LED_MATRIX_CENTER": {"info_key": "led_matrix.center_point", "value_type": "array.int"},
- "LED_MATRIX_KEYRELEASES": {"info_key": "led_matrix.react_on_keyup", "value_type": "bool"},
+ "LED_MATRIX_KEYRELEASES": {"info_key": "led_matrix.react_on_keyup", "value_type": "flag"},
"LED_MATRIX_LED_FLUSH_LIMIT": {"info_key": "led_matrix.led_flush_limit", "value_type": "int"},
"LED_MATRIX_LED_PROCESS_LIMIT": {"info_key": "led_matrix.led_process_limit", "value_type": "int", "to_json": false},
"LED_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "led_matrix.max_brightness", "value_type": "int"},
+ "LED_MATRIX_SLEEP": {"info_key": "led_matrix.sleep", "value_type": "flag"},
"LED_MATRIX_SPD_STEP": {"info_key": "led_matrix.speed_steps", "value_type": "int"},
"LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"},
"LED_MATRIX_TIMEOUT": {"info_key": "led_matrix.timeout", "value_type": "int"},
@@ -90,8 +92,8 @@
"LED_MATRIX_DEFAULT_SPD": {"info_key": "led_matrix.default.speed", "value_type": "int"},
// Locking Switch
- "LOCKING_SUPPORT_ENABLE": {"info_key": "qmk.locking.enabled", "value_type": "bool"},
- "LOCKING_RESYNC_ENABLE": {"info_key": "qmk.locking.resync", "value_type": "bool"},
+ "LOCKING_SUPPORT_ENABLE": {"info_key": "qmk.locking.enabled", "value_type": "flag"},
+ "LOCKING_RESYNC_ENABLE": {"info_key": "qmk.locking.resync", "value_type": "flag"},
// LUFA Bootloader
"QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
@@ -102,7 +104,7 @@
// Matrix
"DEBOUNCE": {"info_key": "debounce", "value_type": "int"},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
- "MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "bool"},
+ "MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "flag"},
"MATRIX_INPUT_PRESSED_STATE": {"info_key": "matrix_pins.input_pressed_state", "value_type": "int"},
"MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"},
@@ -122,14 +124,14 @@
"PS2_DATA_PIN": {"info_key": "ps2.data_pin"},
// RGB Matrix
- "RGB_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "rgb_matrix.sleep", "value_type": "bool"},
"RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"},
"RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"},
- "RGB_MATRIX_KEYRELEASES": {"info_key": "rgb_matrix.react_on_keyup", "value_type": "bool"},
+ "RGB_MATRIX_KEYRELEASES": {"info_key": "rgb_matrix.react_on_keyup", "value_type": "flag"},
"RGB_MATRIX_LED_FLUSH_LIMIT": {"info_key": "rgb_matrix.led_flush_limit", "value_type": "int"},
"RGB_MATRIX_LED_PROCESS_LIMIT": {"info_key": "rgb_matrix.led_process_limit", "value_type": "int", "to_json": false},
"RGB_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "rgb_matrix.max_brightness", "value_type": "int"},
"RGB_MATRIX_SAT_STEP": {"info_key": "rgb_matrix.sat_steps", "value_type": "int"},
+ "RGB_MATRIX_SLEEP": {"info_key": "rgb_matrix.sleep", "value_type": "flag"},
"RGB_MATRIX_SPD_STEP": {"info_key": "rgb_matrix.speed_steps", "value_type": "int"},
"RGB_MATRIX_SPLIT": {"info_key": "rgb_matrix.split_count", "value_type": "array.int"},
"RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"},
@@ -142,25 +144,25 @@
"RGB_MATRIX_DEFAULT_SPD": {"info_key": "rgb_matrix.default.speed", "value_type": "int"},
// RGBLight
- "RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
"RGBLIGHT_HUE_STEP": {"info_key": "rgblight.hue_steps", "value_type": "int"},
- "RGBLIGHT_LAYER_BLINK": {"info_key": "rgblight.layers.blink", "value_type": "bool"},
- "RGBLIGHT_LAYERS": {"info_key": "rgblight.layers.enabled", "value_type": "bool"},
- "RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF": {"info_key": "rgblight.layers.override_rgb", "value_type": "bool"},
+ "RGBLIGHT_LAYER_BLINK": {"info_key": "rgblight.layers.blink", "value_type": "flag"},
+ "RGBLIGHT_LAYERS": {"info_key": "rgblight.layers.enabled", "value_type": "flag"},
+ "RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF": {"info_key": "rgblight.layers.override_rgb", "value_type": "flag"},
+ "RGBLIGHT_LED_COUNT": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLIGHT_LED_MAP": {"info_key": "rgblight.led_map", "value_type": "array.int"},
"RGBLIGHT_LIMIT_VAL": {"info_key": "rgblight.max_brightness", "value_type": "int"},
"RGBLIGHT_MAX_LAYERS": {"info_key": "rgblight.layers.max", "value_type": "int"},
"RGBLIGHT_SAT_STEP": {"info_key": "rgblight.saturation_steps", "value_type": "int"},
- "RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"},
- "RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"},
+ "RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "flag"},
+ "RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "flag"},
"RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"},
"RGBLIGHT_DEFAULT_ON": {"info_key": "rgblight.default.on", "value_type": "bool"},
"RGBLIGHT_DEFAULT_HUE": {"info_key": "rgblight.default.hue", "value_type": "int"},
"RGBLIGHT_DEFAULT_SAT": {"info_key": "rgblight.default.sat", "value_type": "int"},
"RGBLIGHT_DEFAULT_VAL": {"info_key": "rgblight.default.val", "value_type": "int"},
"RGBLIGHT_DEFAULT_SPD": {"info_key": "rgblight.default.speed", "value_type": "int"},
- "RGBW": {"info_key": "rgblight.rgbw", "value_type": "bool"},
+ "RGBW": {"info_key": "rgblight.rgbw", "value_type": "flag"},
// Secure
"SECURE_IDLE_TIMEOUT": {"info_key": "secure.idle_timeout", "value_type": "int"},
@@ -172,37 +174,37 @@
"SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"},
"SPLIT_HAND_MATRIX_GRID": {"info_key": "split.handedness.matrix_grid", "value_type": "array", "to_c": false},
"SPLIT_HAND_PIN": {"info_key": "split.handedness.pin"},
- "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"},
+ "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "flag"},
"SPLIT_USB_TIMEOUT": {"info_key": "split.usb_detect.timeout", "value_type": "int"},
"SPLIT_USB_TIMEOUT_POLL": {"info_key": "split.usb_detect.polling_interval", "value_type": "int"},
- "SPLIT_WATCHDOG_ENABLE": {"info_key": "split.transport.watchdog", "value_type": "bool"},
+ "SPLIT_WATCHDOG_ENABLE": {"info_key": "split.transport.watchdog", "value_type": "flag"},
"SPLIT_WATCHDOG_TIMEOUT": {"info_key": "split.transport.watchdog_timeout", "value_type": "int"},
- "SPLIT_ACTIVITY_ENABLE": {"info_key": "split.transport.sync.activity", "value_type": "bool"},
- "SPLIT_DETECTED_OS_ENABLE": {"info_key": "split.transport.sync.detected_os", "value_type": "bool"},
- "SPLIT_HAPTIC_ENABLE": {"info_key": "split.transport.sync.haptic", "value_type": "bool"},
- "SPLIT_LAYER_STATE_ENABLE": {"info_key": "split.transport.sync.layer_state", "value_type": "bool"},
- "SPLIT_LED_STATE_ENABLE": {"info_key": "split.transport.sync.indicators", "value_type": "bool"},
- "SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync.matrix_state", "value_type": "bool"},
- "SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync.modifiers", "value_type": "bool"},
- "SPLIT_OLED_ENABLE": {"info_key": "split.transport.sync.oled", "value_type": "bool"},
- "SPLIT_ST7565_ENABLE": {"info_key": "split.transport.sync.st7565", "value_type": "bool"},
- "SPLIT_WPM_ENABLE": {"info_key": "split.transport.sync.wpm", "value_type": "bool"},
+ "SPLIT_ACTIVITY_ENABLE": {"info_key": "split.transport.sync.activity", "value_type": "flag"},
+ "SPLIT_DETECTED_OS_ENABLE": {"info_key": "split.transport.sync.detected_os", "value_type": "flag"},
+ "SPLIT_HAPTIC_ENABLE": {"info_key": "split.transport.sync.haptic", "value_type": "flag"},
+ "SPLIT_LAYER_STATE_ENABLE": {"info_key": "split.transport.sync.layer_state", "value_type": "flag"},
+ "SPLIT_LED_STATE_ENABLE": {"info_key": "split.transport.sync.indicators", "value_type": "flag"},
+ "SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync.matrix_state", "value_type": "flag"},
+ "SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync.modifiers", "value_type": "flag"},
+ "SPLIT_OLED_ENABLE": {"info_key": "split.transport.sync.oled", "value_type": "flag"},
+ "SPLIT_ST7565_ENABLE": {"info_key": "split.transport.sync.st7565", "value_type": "flag"},
+ "SPLIT_WPM_ENABLE": {"info_key": "split.transport.sync.wpm", "value_type": "flag"},
// Tapping
- "HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "bool"},
- "HOLD_ON_OTHER_KEY_PRESS_PER_KEY": {"info_key": "tapping.hold_on_other_key_press_per_key", "value_type": "bool"},
- "PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "bool"},
- "PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "bool"},
- "RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "bool"},
- "RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "bool"},
+ "HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "flag"},
+ "HOLD_ON_OTHER_KEY_PRESS_PER_KEY": {"info_key": "tapping.hold_on_other_key_press_per_key", "value_type": "flag"},
+ "PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "flag"},
+ "PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "flag"},
+ "RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "flag"},
+ "RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "flag"},
"TAP_CODE_DELAY": {"info_key": "qmk.tap_keycode_delay", "value_type": "int"},
"TAP_HOLD_CAPS_DELAY": {"info_key": "qmk.tap_capslock_delay", "value_type": "int"},
"TAPPING_TERM": {"info_key": "tapping.term", "value_type": "int"},
- "TAPPING_TERM_PER_KEY": {"info_key": "tapping.term_per_key", "value_type": "bool"},
+ "TAPPING_TERM_PER_KEY": {"info_key": "tapping.term_per_key", "value_type": "flag"},
"TAPPING_TOGGLE": {"info_key": "tapping.toggle", "value_type": "int"},
// USB
- "FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},
+ "FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "flag"},
"USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"},
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
@@ -217,16 +219,18 @@
// Items we want flagged in lint
"DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true, "replace_with": "DEBOUNCE"},
"DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
- "IGNORE_MOD_TAP_INTERRUPT": {"info_key": "_invalid.ignore_mod_tap_interrupt", "value_type": "bool", "invalid": true},
- "IGNORE_MOD_TAP_INTERRUPT_PER_KEY": {"info_key": "_invalid.ignore_mod_tap_interrupt_per_key", "invalid": true}
+ "IGNORE_MOD_TAP_INTERRUPT": {"info_key": "_invalid.ignore_mod_tap_interrupt", "value_type": "flag", "invalid": true},
+ "IGNORE_MOD_TAP_INTERRUPT_PER_KEY": {"info_key": "_invalid.ignore_mod_tap_interrupt_per_key", "invalid": true},
+ "LED_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "_invalid.led_matrix_sleep", "invalid": true, "replace_with": "LED_MATRIX_SLEEP"},
"NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
"NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int", "deprecated": true},
"RGB_DI_PIN": {"info_key": "rgblight.pin", "invalid": true, "replace_with": "WS2812_DI_PIN or APA102_DI_PIN"},
- "RGBLIGHT_ANIMATIONS": {"info_key": "_invalid.rgblight.animations.all", "value_type": "bool", "invalid": true},
- "TAPPING_FORCE_HOLD": {"info_key": "tapping.force_hold", "value_type": "bool", "deprecated": true},
- "TAPPING_FORCE_HOLD_PER_KEY": {"info_key": "tapping.force_hold_per_key", "value_type": "bool", "deprecated": true},
+ "RGB_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "_invalid.rgb_matrix_sleep", "invalid": true, "replace_with": "RGB_MATRIX_SLEEP"},
+ "RGBLIGHT_ANIMATIONS": {"info_key": "_invalid.rgblight.animations.all", "value_type": "flag", "invalid": true},
+ "TAPPING_FORCE_HOLD": {"info_key": "tapping.force_hold", "value_type": "flag", "deprecated": true},
+ "TAPPING_FORCE_HOLD_PER_KEY": {"info_key": "tapping.force_hold_per_key", "value_type": "flag", "deprecated": true},
"UNUSED_PINS": {"info_key": "_invalid.unused_pins", "deprecated": true},
"COMBO_COUNT": {"info_key": "_invalid.combo.count", "invalid": true},
diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson
index 90f32ee6ac..8f931f4cd0 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"
},
@@ -284,6 +287,12 @@
"honeycomb": {
"target": "keyhive/honeycomb"
},
+ "hub16": {
+ "target": "joshajohnson/hub16"
+ },
+ "hub20": {
+ "target": "joshajohnson/hub20"
+ },
"idb_60": {
"target": "idb/idb_60"
},
@@ -326,12 +335,48 @@
"keycapsss/plaid_pad": {
"target": "keycapsss/plaid_pad/rev1"
},
+ "kira75": {
+ "target": "kira/kira75"
+ },
+ "kira80": {
+ "target": "kira/kira80"
+ },
"kudox": {
- "target": "kudox/rev1"
+ "target": "kumaokobo/kudox/rev1"
+ },
+ "kudox/columner": {
+ "target": "kumaokobo/kudox/columner"
+ },
+ "kudox/rev1": {
+ "target": "kumaokobo/kudox/rev1"
+ },
+ "kudox/rev2": {
+ "target": "kumaokobo/kudox/rev2"
+ },
+ "kudox/rev3": {
+ "target": "kumaokobo/kudox/rev3"
+ },
+ "kudox_full": {
+ "target": "kumaokobo/kudox_full/rev1"
+ },
+ "kudox_full/rev1": {
+ "target": "kumaokobo/kudox_full/rev1"
+ },
+ "kudox_game": {
+ "target": "kumaokobo/kudox_game/rev1"
+ },
+ "kudox_game/rev1": {
+ "target": "kumaokobo/kudox_game/rev1"
+ },
+ "kudox_game/rev2": {
+ "target": "kumaokobo/kudox_game/rev2"
},
"kyria": {
"target": "splitkb/kyria"
},
+ "laser_ninja/pumpkin_pad": {
+ "target": "laser_ninja/pumpkinpad"
+ },
"lattice60": {
"target": "keyhive/lattice60"
},
@@ -446,6 +491,15 @@
"minim": {
"target": "matthewdias/minim"
},
+ "mnk1800s": {
+ "target": "monokei/mnk1800s"
+ },
+ "mnk50": {
+ "target": "monokei/mnk50"
+ },
+ "mnk75": {
+ "target": "monokei/mnk75"
+ },
"model01": {
"target": "keyboardio/model01"
},
@@ -458,6 +512,9 @@
"montsinger/rebound": {
"target": "montsinger/rebound/rev1"
},
+ "moonlander": {
+ "target": "zsa/moonlander"
+ },
"mschwingen/modelm": {
"target": "ibm/model_m/mschwingen"
},
@@ -485,6 +542,15 @@
"peiorisboards/ixora": {
"target": "coarse/ixora"
},
+ "pico": {
+ "target": "kumaokobo/pico/65keys"
+ },
+ "pico/65keys": {
+ "target": "kumaokobo/pico/65keys"
+ },
+ "pico/70keys": {
+ "target": "kumaokobo/pico/70keys"
+ },
"plaid": {
"target": "dm9records/plaid"
},
@@ -530,6 +596,9 @@
"ramonimbao/mona": {
"target": "rmi_kb/mona/v1"
},
+ "redox_w": {
+ "target": "redox/wireless"
+ },
"rgbkb/pan": {
"target": "rgbkb/pan/rev1/32a"
},
@@ -798,6 +867,12 @@
"eggman": {
"target": "qpockets/eggman"
},
+ "enter67": {
+ "target": "kezewa/enter67"
+ },
+ "enter80": {
+ "target": "kezewa/enter80"
+ },
"ergo42": {
"target": "biacco42/ergo42"
},
@@ -822,6 +897,9 @@
"felix": {
"target": "unikeyboard/felix"
},
+ "flygone60/rev3": {
+ "target": "shandoncodes/flygone60/rev3"
+ },
"four_banger": {
"target": "bpiphany/four_banger"
},
@@ -915,6 +993,12 @@
"keychron/q4": {
"target": "keychron/q4/ansi/v1"
}
+ "kmac": {
+ "target": "kbdmania/kmac"
+ }
+ "kmac_pad": {
+ "target": "kbdmania/kmac_pad"
+ }
"kprepublic/bm40hsrgb": {
"target": "kprepublic/bm40hsrgb/rev1"
},
@@ -924,6 +1008,9 @@
"kprepublic/bm68hsrgb": {
"target": "kprepublic/bm68hsrgb/rev1"
},
+ "late9/rev1": {
+ "target": "rookiebwoy/late9/rev1"
+ },
"latin17rgb": {
"target": "latincompass/latin17rgb"
},
@@ -948,6 +1035,12 @@
"launchpad/rev1": {
"target": "maple_computing/launchpad/rev1"
},
+ "lefty": {
+ "target": "smoll/lefty/rev2"
+ },
+ "lefty/rev1": {
+ "target": "smoll/lefty/rev1"
+ },
"lck75": {
"target": "lyso1/lck75"
},
@@ -963,9 +1056,21 @@
"ls_60": {
"target": "weirdo/ls_60"
},
+ "lpad": {
+ "target": "laneware/lpad"
+ },
+ "lw67": {
+ "target": "laneware/lw67"
+ },
+ "lw75": {
+ "target": "laneware/lw75"
+ },
"m3n3van": {
"target": "matthewdias/m3n3van"
},
+ "macro1": {
+ "target": "laneware/macro1"
+ },
"massdrop/thekey": {
"target": "drop/thekey/v1"
},
@@ -990,9 +1095,21 @@
"melody96": {
"target": "ymdk/melody96"
},
+ "miniaxe": {
+ "target": "kagizaraya/miniaxe"
+ },
"minidox/rev1": {
"target": "maple_computing/minidox/rev1"
},
+ "mino/hotswap": {
+ "target": "shandoncodes/mino/hotswap"
+ },
+ "mino_plus/hotswap": {
+ "target": "shandoncodes/mino_plus/hotswap"
+ },
+ "mino_plus/soldered": {
+ "target": "shandoncodes/mino_plus/soldered"
+ },
"mio": {
"target": "recompile_keys/mio"
},
@@ -1047,6 +1164,9 @@
"nebula68b": {
"target": "spaceholdings/nebula68b"
},
+ "neopad/rev1": {
+ "target": "rookiebwoy/neopad/rev1"
+ },
"niu_mini": {
"target": "kbdfans/niu_mini"
},
@@ -1101,6 +1221,9 @@
"pursuit40": {
"target": "checkerboards/pursuit40"
},
+ "pw88": {
+ "target": "smoll/pw88"
+ },
"qaz": {
"target": "tominabox1/qaz"
},
@@ -1110,6 +1233,9 @@
"rabbit_capture_plan": {
"target": "kakunpc/rabbit_capture_plan"
},
+ "raindrop": {
+ "target": "laneware/raindrop"
+ },
"ramonimbao/aelith": {
"target": "rmi_kb/aelith"
},
@@ -1176,6 +1302,9 @@
"reviung61": {
"target": "reviung/reviung61"
},
+ "riot_pad": {
+ "target": "shandoncodes/riot_pad"
+ },
"runner3680/3x6": {
"target": "omkbd/runner3680/3x6"
},
@@ -1299,6 +1428,9 @@
"vn66": {
"target": "hnahkb/vn66"
},
+ "w1_at": {
+ "target": "geonworks/w1_at"
+ },
"wallaby": {
"target": "kkatano/wallaby"
},
@@ -1347,6 +1479,12 @@
"yurei": {
"target": "kkatano/yurei"
},
+ "z12": {
+ "target": "zigotica/z12"
+ },
+ "z34": {
+ "target": "zigotica/z34"
+ },
"zinc": {
"target": "25keys/zinc"
},
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 2996958084..4836cf1fca 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",
@@ -123,6 +123,14 @@
"type": "object",
"additionalProperties": false,
"properties": {
+ "default": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "on": {"type": "boolean"},
+ "clicky": {"type": "boolean"}
+ }
+ },
"macro_beep": {"type": "boolean"},
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"voices": {"type": "boolean"}
diff --git a/docs/audio_driver.md b/docs/audio_driver.md
index a0bbb22e19..03c0a824df 100644
--- a/docs/audio_driver.md
+++ b/docs/audio_driver.md
@@ -116,19 +116,32 @@ Additionally, in the board config, you'll want to make changes to enable the DAC
| Define | Defaults | Description |
| -------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AUDIO_DAC_SAMPLE_MAX` | `4095U` | Highest value allowed. Lower value means lower volume. And 4095U is the upper limit, since this is limited to a 12 bit value. Only effects non-pregenerated samples. |
-| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when notplaying anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
+| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when not playing anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
| `AUDIO_MAX_SIMULTANEOUS_TONES` | __see next table__ | The number of tones that can be played simultaneously. A value that is too high may freeze the controller or glitch out when too many tones are being played. |
| `AUDIO_DAC_SAMPLE_RATE` | __see next table__ | Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality. |
+| `AUDIO_DAC_BUFFER_SIZE` | __see next table__ | Number of samples generated every refill. Too few may cause excessive CPU load; too many may cause freezes, RAM or flash exhaustion or lags during matrix scanning. |
-There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate and number of simultaneous tones, instead of using one of the listed presets.
+There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate, number of simultaneous tones and buffer size, instead of using one of the listed presets.
-| Define | Sample Rate | Simultaneous tones |
-| --------------------------------- | ----------- | ------------------- |
-| `AUDIO_DAC_QUALITY_VERY_LOW` | `11025U` | `8` |
-| `AUDIO_DAC_QUALITY_LOW` | `22040U` | `4` |
-| `AUDIO_DAC_QUALITY_HIGH` | `44100U` | `2` |
-| `AUDIO_DAC_QUALITY_VERY_HIGH` | `88200U` | `1` |
-| `AUDIO_DAC_QUALITY_SANE_MINIMUM` | `16384U` | `8` |
+| Define | Sample Rate | Simultaneous tones | Buffer size |
+| --------------------------------- | ----------- | ------------------- | ----------- |
+| `AUDIO_DAC_QUALITY_VERY_LOW` | `11025U` | `8` | `64U` |
+| `AUDIO_DAC_QUALITY_LOW` | `22050U` | `4` | `128U` |
+| `AUDIO_DAC_QUALITY_HIGH` | `44100U` | `2` | `256U` |
+| `AUDIO_DAC_QUALITY_VERY_HIGH` | `88200U` | `1` | `256U` |
+| `AUDIO_DAC_QUALITY_SANE_MINIMUM` | `16384U` | `8` | `64U` |
+
+#### Notes on buffer size :id=buffer-size
+
+By default, the buffer size attempts to keep to these constraints:
+
+* The interval between buffer refills can't be too short, since the microcontroller would then only be servicing buffer refills and would freeze up.
+* On the additive driver, the interval between buffer refills can't be too long, since matrix scanning would suffer lengthy pauses every so often, which would delay key presses or releases or lose some short taps altogether.
+* The interval between buffer refills is kept to a minimum, which allows notes to stop as soon as possible after they should.
+* For greater compatibility, the buffer size should be a power of 2.
+* The buffer size being too large causes resource exhaustion leading to build failures or freezing at runtime: RAM usage (on the additive driver) or flash usage (on the basic driver).
+
+You can lower the buffer size if you need a bit more space in your firmware, or raise it if your keyboard freezes up.
```c
@@ -186,6 +199,11 @@ with all this information, the configuration would contain these lines:
ChibiOS uses GPIOv1 for the F103, which only knows of one alternate function.
On 'larger' STM32s, GPIOv2 or GPIOv3 are used; with them it is also necessary to configure `AUDIO_PWM_PAL_MODE` to the correct alternate function for the selected pin, timer and timer-channel.
+You can also use the Complementary output (`TIMx_CHyN`) for PWM on supported controllers. To enable this functionality, you will need to make the following changes:
+```c
+// config.h:
+#define AUDIO_PWM_COMPLEMENTARY_OUTPUT
+```
### PWM software :id=pwm-software
diff --git a/docs/config_options.md b/docs/config_options.md
index 8119b9e356..045d9c0747 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -223,7 +223,7 @@ If you define these options you will enable the associated feature, which may in
* Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
* `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF`
* If defined, then [lighting layers](feature_rgblight?id=overriding-rgb-lighting-onoff-status) will be shown even if RGB Light is off.
-* `#define RGBLED_NUM 12`
+* `#define RGBLIGHT_LED_COUNT 12`
* number of LEDs
* `#define RGBLIGHT_SPLIT`
* Needed if both halves of the board have RGB LEDs wired directly to the RGB output pin on the controllers instead of passing the output of the left half to the input of the right half
@@ -275,7 +275,7 @@ There are a few different ways to set handedness for split keyboards (listed in
* For using high/low pin to determine handedness, low = right hand, high = left hand. Replace `B7` with the pin you are using. This is optional, and if you leave `SPLIT_HAND_PIN` undefined, then you can still use the EE_HANDS method or MASTER_LEFT / MASTER_RIGHT defines like the stock Let's Split uses.
* `#define SPLIT_HAND_MATRIX_GRID <out_pin>,<in_pin>`
- * The handedness is determined by using the intersection of the keyswitches in the key matrix, which does not exist. Normally, when this intersection is shorted (level low), it is considered left. If you define `#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT`, it is determined to be right when the level is low.
+ * The handedness is determined by using the intersection of the keyswitches in the key matrix, which does not exist. Normally, when this intersection is shorted (level low), it is considered right. If you define `#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT`, it is determined to be left when the level is low.
* `#define EE_HANDS` (only works if `SPLIT_HAND_PIN` and `SPLIT_HAND_MATRIX_GRID` are not defined)
* Reads the handedness value stored in the EEPROM after `eeprom-lefthand.eep`/`eeprom-righthand.eep` has been flashed to their respective halves.
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_dip_switch.md b/docs/feature_dip_switch.md
index 6fbe91657d..0e31f5acae 100644
--- a/docs/feature_dip_switch.md
+++ b/docs/feature_dip_switch.md
@@ -20,6 +20,27 @@ or
#define DIP_SWITCH_MATRIX_GRID { {0,6}, {1,6}, {2,6} } // List of row and col pairs
```
+## DIP Switch map :id=dip-switch-map
+
+DIP Switch mapping may be added to your `keymap.c`, which replicates the normal keyswitch functionality, but with dip switches. Add this to your keymap's `rules.mk`:
+
+```make
+DIP_SWITCH_MAP_ENABLE = yes
+```
+
+Your `keymap.c` will then need a dip switch mapping defined (for two dip switches):
+
+```c
+#if defined(DIP_SWITCH_MAP_ENABLE)
+const uint16_t PROGMEM dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES] = {
+ DIP_SWITCH_OFF_ON(DF(0), DF(1)),
+ DIP_SWITCH_OFF_ON(EC_NORM, EC_SWAP)
+};
+#endif
+```
+
+?> This should only be enabled at the keymap level.
+
## Callbacks
The callback functions can be inserted into your `<keyboard>.c`:
diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md
index b1ce09d349..6cb173face 100644
--- a/docs/feature_led_matrix.md
+++ b/docs/feature_led_matrix.md
@@ -54,7 +54,7 @@ For split keyboards using `LED_MATRIX_SPLIT` with an LED driver, you can either
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
@@ -65,7 +65,7 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
}
```
-Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/led/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ).
+Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/led/issi/is31fl3731-mono.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ).
---
### IS31FLCOMMON :id=is31flcommon
@@ -357,7 +357,7 @@ For inspiration and examples, check out the built-in effects under `quantum/led_
```c
#define LED_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)
#define LED_MATRIX_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off
-#define LED_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define LED_MATRIX_SLEEP // turn off effects when suspended
#define LED_MATRIX_LED_PROCESS_LIMIT (LED_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define LED_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define LED_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs
@@ -365,6 +365,7 @@ For inspiration and examples, check out the built-in effects under `quantum/led_
#define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID // Sets the default mode, if none has been set
#define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define LED_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set
+#define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set
#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
```
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..b091dec08b 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.
@@ -197,12 +217,13 @@ Also see the `POINTING_DEVICE_TASK_THROTTLE_MS`, which defaults to 10ms when usi
#### Absolute mode settings
-| Setting | Description | Default |
-| -------------------------------- | ---------------------------------------------------------- | ------------------ |
-| `CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
-| `CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
-| `CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
-| `CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
+| Setting | Description | Default |
+|-----------------------------------------|-------------------------------------------------------------------------|-------------|
+| `CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
+| `CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
+| `CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
+| `CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
+| `CIRQUE_PINNACLE_REACHABLE_CALIBRATION` | (Optional) Enable console messages to aide in calibrating above values. | not defined |
#### Absolute mode gestures
@@ -708,6 +729,7 @@ There are a few ways to control the auto mouse feature with both `config.h` opti
| `AUTO_MOUSE_TIME` | (Optional) Time layer remains active after activation | _ideally_ (250-1000) | _ms_ | `650 ms` |
| `AUTO_MOUSE_DELAY` | (Optional) Lockout time after non-mouse key is pressed | _ideally_ (100-1000) | _ms_ | `TAPPING_TERM` or `200 ms` |
| `AUTO_MOUSE_DEBOUNCE` | (Optional) Time delay from last activation to next update | _ideally_ (10 - 100) | _ms_ | `25 ms` |
+| `AUTO_MOUSE_THRESHOLD` | (Optional) Amount of mouse movement required to switch layers | 0 - | _units_ | `10 units` |
### Adding mouse keys
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 824ff50648..25c924b9c9 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -55,7 +55,7 @@ For split keyboards using `RGB_MATRIX_SPLIT` with an LED driver, you can either
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -139,7 +139,7 @@ Currently only 4 drivers are supported, but it would be trivial to support all 8
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -218,7 +218,7 @@ Here is an example using 2 drivers.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
-const is31fl3736_led_t PROGMEM g_is31fl3736_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -292,7 +292,7 @@ Here is an example using 2 drivers.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
-const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -501,7 +501,7 @@ Here is an example using 2 drivers.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
-const aw20216s_led_t PROGMEM g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Each AW20216S channel is controlled by a register at some offset between 0x00
* and 0xD7 inclusive.
* See drivers/led/aw20216s.h for the mapping between register offsets and
@@ -869,16 +869,17 @@ These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master
```c
#define RGB_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)
#define RGB_MATRIX_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+#define RGB_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
#define RGB_MATRIX_DEFAULT_HUE 0 // Sets the default hue value, if none has been set
#define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
-#define RGB_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set
#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set
+#define RGB_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set
#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md
index 8a64454b0d..b7ba075731 100644
--- a/docs/feature_rgblight.md
+++ b/docs/feature_rgblight.md
@@ -33,13 +33,13 @@ RGBLIGHT_DRIVER = apa102
At minimum you must define the data pin your LED strip is connected to, and the number of LEDs in the strip, in your `config.h`. For APA102 LEDs, you must also define the clock pin. If your keyboard has onboard RGB LEDs, and you are simply creating a keymap, you usually won't need to modify these.
-|Define |Description |
-|---------------|-------------------------------------------------------------------------|
-|`WS2812_DI_PIN`|The pin connected to the data pin of the LEDs (WS2812) |
-|`APA102_DI_PIN`|The pin connected to the data pin of the LEDs (APA102) |
-|`APA102_CI_PIN`|The pin connected to the clock pin of the LEDs (APA102) |
-|`RGBLED_NUM` |The number of LEDs connected |
-|`RGBLED_SPLIT` |(Optional) For split keyboards, the number of LEDs connected on each half|
+|Define |Description |
+|--------------------|-------------------------------------------------------------------------|
+|`WS2812_DI_PIN` |The pin connected to the data pin of the LEDs (WS2812) |
+|`APA102_DI_PIN` |The pin connected to the data pin of the LEDs (APA102) |
+|`APA102_CI_PIN` |The pin connected to the clock pin of the LEDs (APA102) |
+|`RGBLIGHT_LED_COUNT`|The number of LEDs connected |
+|`RGBLED_SPLIT` |(Optional) For split keyboards, the number of LEDs connected on each half|
Then you should be able to use the keycodes below to change the RGB lighting to your liking.
@@ -152,28 +152,28 @@ Use these defines to add or remove animations from the firmware. When you are ru
The following options are used to tweak the various animations:
-|Define |Default |Description |
-|------------------------------------|-------------|-----------------------------------------------------------------------------------------------|
-|`RGBLIGHT_EFFECT_BREATHE_CENTER` |*Not defined*|If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 |
-|`RGBLIGHT_EFFECT_BREATHE_MAX` |`255` |The maximum brightness for the breathing mode. Valid values are 1 to 255 |
-|`RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL`|`40` |How long (in milliseconds) to wait between animation steps for the "Christmas" animation |
-|`RGBLIGHT_EFFECT_CHRISTMAS_STEP` |`2` |The number of LEDs to group the red/green colors by for the "Christmas" animation |
-|`RGBLIGHT_EFFECT_KNIGHT_LED_NUM` |`RGBLED_NUM` |The number of LEDs to have the "Knight" animation travel |
-|`RGBLIGHT_EFFECT_KNIGHT_LENGTH` |`3` |The number of LEDs to light up for the "Knight" animation |
-|`RGBLIGHT_EFFECT_KNIGHT_OFFSET` |`0` |The number of LEDs to start the "Knight" animation from the start of the strip by |
-|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`255` |Range adjustment for the rainbow swirl effect to get different swirls |
-|`RGBLIGHT_EFFECT_SNAKE_LENGTH` |`4` |The number of LEDs to light up for the "Snake" animation |
-|`RGBLIGHT_EFFECT_TWINKLE_LIFE` |`200` |Adjusts how quickly each LED brightens and dims when twinkling (in animation steps) |
-|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
+|Define |Default |Description |
+|------------------------------------|--------------------|-----------------------------------------------------------------------------------------------|
+|`RGBLIGHT_EFFECT_BREATHE_CENTER` |*Not defined* |If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 |
+|`RGBLIGHT_EFFECT_BREATHE_MAX` |`255` |The maximum brightness for the breathing mode. Valid values are 1 to 255 |
+|`RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL`|`40` |How long (in milliseconds) to wait between animation steps for the "Christmas" animation |
+|`RGBLIGHT_EFFECT_CHRISTMAS_STEP` |`2` |The number of LEDs to group the red/green colors by for the "Christmas" animation |
+|`RGBLIGHT_EFFECT_KNIGHT_LED_NUM` |`RGBLIGHT_LED_COUNT`|The number of LEDs to have the "Knight" animation travel |
+|`RGBLIGHT_EFFECT_KNIGHT_LENGTH` |`3` |The number of LEDs to light up for the "Knight" animation |
+|`RGBLIGHT_EFFECT_KNIGHT_OFFSET` |`0` |The number of LEDs to start the "Knight" animation from the start of the strip by |
+|`RGBLIGHT_RAINBOW_SWIRL_RANGE` |`255` |Range adjustment for the rainbow swirl effect to get different swirls |
+|`RGBLIGHT_EFFECT_SNAKE_LENGTH` |`4` |The number of LEDs to light up for the "Snake" animation |
+|`RGBLIGHT_EFFECT_TWINKLE_LIFE` |`200` |Adjusts how quickly each LED brightens and dims when twinkling (in animation steps) |
+|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
### Example Usage to Reduce Memory Footprint
1. Use `#undef` to selectively disable animations. The following would disable two animations and save about 4KiB:
```diff
- #undef RGBLED_NUM
+ #undef RGBLIGHT_LED_COUNT
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL
- #define RGBLED_NUM 12
+ #define RGBLIGHT_LED_COUNT 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
```
@@ -386,10 +386,10 @@ rgblight_set(); // Utility functions do not call rgblight_set() automatically, s
#### direct operation
|Function |Description |
|--------------------------------------------|-------------|
-|`rgblight_setrgb_at(r, g, b, index)` |Set a single LED to the given RGB value, where `r`/`g`/`b` are between 0 and 255 and `index` is between 0 and `RGBLED_NUM` (not written to EEPROM) |
-|`rgblight_sethsv_at(h, s, v, index)` |Set a single LED to the given HSV value, where `h`/`s`/`v` are between 0 and 255, and `index` is between 0 and `RGBLED_NUM` (not written to EEPROM) |
-|`rgblight_setrgb_range(r, g, b, start, end)`|Set a continuous range of LEDs to the given RGB value, where `r`/`g`/`b` are between 0 and 255 and `start`(included) and `stop`(excluded) are between 0 and `RGBLED_NUM` (not written to EEPROM)|
-|`rgblight_sethsv_range(h, s, v, start, end)`|Set a continuous range of LEDs to the given HSV value, where `h`/`s`/`v` are between 0 and 255, and `start`(included) and `stop`(excluded) are between 0 and `RGBLED_NUM` (not written to EEPROM)|
+|`rgblight_setrgb_at(r, g, b, index)` |Set a single LED to the given RGB value, where `r`/`g`/`b` are between 0 and 255 and `index` is between 0 and `RGBLIGHT_LED_COUNT` (not written to EEPROM) |
+|`rgblight_sethsv_at(h, s, v, index)` |Set a single LED to the given HSV value, where `h`/`s`/`v` are between 0 and 255, and `index` is between 0 and `RGBLIGHT_LED_COUNT` (not written to EEPROM) |
+|`rgblight_setrgb_range(r, g, b, start, end)`|Set a continuous range of LEDs to the given RGB value, where `r`/`g`/`b` are between 0 and 255 and `start`(included) and `stop`(excluded) are between 0 and `RGBLIGHT_LED_COUNT` (not written to EEPROM)|
+|`rgblight_sethsv_range(h, s, v, start, end)`|Set a continuous range of LEDs to the given HSV value, where `h`/`s`/`v` are between 0 and 255, and `start`(included) and `stop`(excluded) are between 0 and `RGBLIGHT_LED_COUNT` (not written to EEPROM)|
|`rgblight_setrgb(r, g, b)` |Set effect range LEDs to the given RGB value where `r`/`g`/`b` are between 0 and 255 (not written to EEPROM) |
|`rgblight_setrgb_master(r, g, b)` |Set the LEDs on the master side to the given RGB value, where `r`/`g`/`b` are between 0 and 255 (not written to EEPROM) |
|`rgblight_setrgb_slave(r, g, b)` |Set the LEDs on the slave side to the given RGB value, where `r`/`g`/`b` are between 0 and 255 (not written to EEPROM) |
@@ -519,7 +519,7 @@ By defining `RGBLIGHT_LED_MAP` as in the example below, you can specify the LED
```c
// config.h
-#define RGBLED_NUM 4
+#define RGBLIGHT_LED_COUNT 4
#define RGBLIGHT_LED_MAP { 3, 2, 1, 0 }
```
@@ -541,7 +541,7 @@ In addition to setting the Clipping Range, you can use `RGBLIGHT_LED_MAP` togeth
```c
// config.h
-#define RGBLED_NUM 8
+#define RGBLIGHT_LED_COUNT 8
#define RGBLIGHT_LED_MAP { 7, 6, 5, 4, 3, 2, 1, 0 }
// some source
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index 8f695a2b7c..59159cb3fa 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -119,12 +119,12 @@ You can configure the firmware to read key matrix pins on the controller to dete
The first pin is the output pin and the second is the input pin.
-Some keyboards have unused intersections in the key matrix. This setting uses one of these unused intersections to determine the handness.
+Some keyboards have unused intersections in the key matrix. This setting uses one of these unused intersections to determine the handedness.
-Normally, when a diode is connected to an intersection, it is judged to be left. If you add the following definition, it will be judged to be right.
+Normally, when a diode is connected to an intersection, it is judged to be right. If you add the following definition, it will be judged to be left.
```c
-#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
```
Note that adding a diode at a previously unused intersection will effectively tell the firmware that there is a key held down at that point. You can instruct qmk to ignore that intersection by defining `MATRIX_MASKED` and then defining a `matrix_row_t matrix_mask[MATRIX_ROWS]` array in your keyboard config. Each bit of a single value (starting form the least-significant bit) is used to tell qmk whether or not to pay attention to key presses at that intersection.
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index 42ea233962..bb1c2c8034 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -173,7 +173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations
- action = &tap_dance_actions[TD_INDEX(keycode)];
+ action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index fb434e1576..684ccc73f6 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -169,11 +169,11 @@ The `post_rules.mk` file can interpret `features` of a keyboard-level before `co
ifeq ($(strip $(RGBLED_OPTION_TYPE)),backlight)
RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_NUM=30
+ OPT_DEFS += -DRGBLIGHT_LED_COUNT=30
endif
ifeq ($(strip $(RGBLED_OPTION_TYPE)),underglow)
RGBLIGHT_ENABLE = yes
- OPT_DEFS += -DRGBLED_NUM=6
+ OPT_DEFS += -DRGBLIGHT_LED_COUNT=6
endif
```
diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md
index faff0a1d7b..868715a62c 100644
--- a/docs/i2c_driver.md
+++ b/docs/i2c_driver.md
@@ -138,23 +138,6 @@ void i2c_init(void) {
---
-### `i2c_status_t i2c_start(uint8_t address, uint16_t timeout)` :id=api-i2c-start
-
-Start an I2C transaction.
-
-#### Arguments :id=api-i2c-start-arguments
-
- - `uint8_t address`
- The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically).
- - `uint16_t timeout`
- The time in milliseconds to wait for a response from the target device.
-
-#### Return Value :id=api-i2c-start-return
-
-`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
-
----
-
### `i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)` :id=api-i2c-transmit
Send multiple bytes to the selected I2C device.
@@ -197,11 +180,11 @@ Receive multiple bytes from the selected I2C device.
---
-### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-writereg
+### `i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-write-register
Writes to a register with an 8-bit address on the I2C device.
-#### Arguments :id=api-i2c-writereg-arguments
+#### Arguments :id=api-i2c-write-register-arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
@@ -214,17 +197,17 @@ Writes to a register with an 8-bit address on the I2C device.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
-#### Return Value :id=api-i2c-writereg-return
+#### Return Value :id=api-i2c-write-register-return
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
-### `i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-writereg16
+### `i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-write-register16
Writes to a register with a 16-bit address (big endian) on the I2C device.
-#### Arguments :id=api-i2c-writereg16-arguments
+#### Arguments :id=api-i2c-write-register16-arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
@@ -237,17 +220,17 @@ Writes to a register with a 16-bit address (big endian) on the I2C device.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
-#### Return Value :id=api-i2c-writereg16-return
+#### Return Value :id=api-i2c-write-register16-return
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
-### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-readreg
+### `i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-read-register
Reads from a register with an 8-bit address on the I2C device.
-#### Arguments :id=api-i2c-readreg-arguments
+#### Arguments :id=api-i2c-read-register-arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
@@ -258,17 +241,17 @@ Reads from a register with an 8-bit address on the I2C device.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
-#### Return Value :id=api-i2c-readreg-return
+#### Return Value :id=api-i2c-read-register-return
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
-### `i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
+### `i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` :id=api-i2c-read-register16
Reads from a register with a 16-bit address (big endian) on the I2C device.
-#### Arguments :id=api-i2c-readreg16-arguments
+#### Arguments :id=api-i2c-read-register16-arguments
- `uint8_t devaddr`
The 7-bit I2C address of the device.
@@ -279,12 +262,27 @@ Reads from a register with a 16-bit address (big endian) on the I2C device.
- `uint16_t timeout`
The time in milliseconds to wait for a response from the target device.
-#### Return Value :id=api-i2c-readreg16-return
+#### Return Value :id=api-i2c-read-register16-return
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
---
-### `i2c_status_t i2c_stop(void)` :id=api-i2c-stop
+### `i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)` :id=api-i2c-ping-address
-Stop the current I2C transaction.
+Pings the I2C bus for a specific address.
+
+On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the requested address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsucessful response to ping attempt).
+
+This function is weakly defined, meaning it can be overridden if necessary for your particular use case:
+
+#### Arguments
+
+ - `uint8_t address`
+ The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically).
+ - `uint16_t timeout`
+ The time in milliseconds to wait for a response from the target device.
+
+#### Return Value
+
+`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md
index 5e98da5eee..a349081d6a 100644
--- a/docs/ja/config_options.md
+++ b/docs/ja/config_options.md
@@ -248,7 +248,7 @@ QMK ã§ã®å…¨ã¦ã®åˆ©ç”¨å¯èƒ½ãªè¨­å®šã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ã
* high/low ピンを使ã£ã¦å·¦å³ã‚’決定ã—ã¾ã™ã€‚low = å³æ‰‹ã€high = 左手。`B7` を使ã£ã¦ã„るピンã«ç½®ãæ›ãˆã¾ã™ã€‚ã“ã‚Œã¯ã‚ªãƒ—ションã§ã€`SPLIT_HAND_PIN` ãŒæœªå®šç¾©ã®ã¾ã¾ã§ã‚ã‚‹å ´åˆã€EE_HANDS メソッドã¾ãŸã¯æ¨™æº–ã® Let's SplitãŒä½¿ã£ã¦ã„ã‚‹ MASTER_LEFT / MASTER_RIGHT 定義をã¾ã ä½¿ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
* `#define SPLIT_HAND_MATRIX_GRID <out_pin>,<in_pin>`
- * å·¦å³ã¯ã‚­ãƒ¼ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ã®ã‚­ãƒ¼ã‚¹ã‚¤ãƒƒãƒãŒå­˜åœ¨ã—ãªã„交点を使ã£ã¦æ±ºå®šã•ã‚Œã¾ã™ã€‚通常ã€ã“ã®äº¤ç‚¹ãŒçŸ­çµ¡ã—ã¦ã„ã‚‹(ローレベル)ã®ã¨ãã«å·¦å´ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ã‚‚ã— `#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT` ãŒå®šç¾©ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€ãƒ­ãƒ¼ãƒ¬ãƒ™ãƒ«ã®æ™‚ã«å³å´ã¨æ±ºå®šã•ã‚Œã¾ã™ã€‚
+ * å·¦å³ã¯ã‚­ãƒ¼ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ã®ã‚­ãƒ¼ã‚¹ã‚¤ãƒƒãƒãŒå­˜åœ¨ã—ãªã„交点を使ã£ã¦æ±ºå®šã•ã‚Œã¾ã™ã€‚通常ã€ã“ã®äº¤ç‚¹ãŒçŸ­çµ¡ã—ã¦ã„ã‚‹(ローレベル)ã®ã¨ãã«å³å´ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ã‚‚ã— `#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT` ãŒå®šç¾©ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€ãƒ­ãƒ¼ãƒ¬ãƒ™ãƒ«ã®æ™‚ã«å·¦å´ã¨æ±ºå®šã•ã‚Œã¾ã™ã€‚
* `#define EE_HANDS` (`SPLIT_HAND_PIN` 㨠`SPLIT_HAND_MATRIX_GRID` ãŒå®šç¾©ã•ã‚Œã¦ã„ãªã„å ´åˆã®ã¿å‹•ä½œã—ã¾ã™)
* `eeprom-lefthand.eep`/`eeprom-righthand.eep` ãŒãã‚Œãžã‚Œã®åŠåˆ†ã«æ›¸ãè¾¼ã¾ã‚ŒãŸå¾Œã§ã€EEPROM 内ã«æ ¼ç´ã•ã‚Œã¦ã„ã‚‹å·¦å³ã®è¨­å®šã®å€¤ã‚’読ã¿è¾¼ã¿ã¾ã™ã€‚
diff --git a/docs/ja/feature_split_keyboard.md b/docs/ja/feature_split_keyboard.md
index 3bdf96d1c7..c84b782d87 100644
--- a/docs/ja/feature_split_keyboard.md
+++ b/docs/ja/feature_split_keyboard.md
@@ -108,10 +108,10 @@ SPLIT_TRANSPORT = custom
キーマトリックスã«æœªä½¿ç”¨ã®äº¤ç‚¹ãŒã‚るキーボードãŒã‚ã‚Šã¾ã™ã€‚ã“ã®è¨­å®šã¯ã€å·¦å³ã®æ±ºå®šã«ã“れらã®æœªä½¿ç”¨ã®äº¤ç‚¹ã®1ã¤ã‚’使用ã—ã¾ã™ã€‚
-通常ã€ãƒ€ã‚¤ã‚ªãƒ¼ãƒ‰ãŒäº¤ç‚¹ã«æŽ¥ç¶šã•ã‚Œã¦ã„ã‚‹å ´åˆã€å·¦å´ã¨åˆ¤æ–­ã•ã‚Œã¾ã™ã€‚次ã®å®šç¾©ã‚’追加ã™ã‚‹ã¨ã€å³å´ã¨åˆ¤æ–­ã•ã‚Œã¾ã™ã€‚
+通常ã€ãƒ€ã‚¤ã‚ªãƒ¼ãƒ‰ãŒäº¤ç‚¹ã«æŽ¥ç¶šã•ã‚Œã¦ã„ã‚‹å ´åˆã€å³å´ã¨åˆ¤æ–­ã•ã‚Œã¾ã™ã€‚次ã®å®šç¾©ã‚’追加ã™ã‚‹ã¨ã€å·¦å´ã¨åˆ¤æ–­ã•ã‚Œã¾ã™ã€‚
```c
-#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
```
#### EEPROM ã«ã‚ˆã‚‹å·¦å³ã®è¨­å®š
diff --git a/docs/ja/i2c_driver.md b/docs/ja/i2c_driver.md
index 1d8f70e163..92c4185370 100644
--- a/docs/ja/i2c_driver.md
+++ b/docs/ja/i2c_driver.md
@@ -23,12 +23,11 @@ I2C アドレスã¨ä»–ã®æŠ€è¡“詳細ã«ã¤ã„ã¦ã€ã•ã‚‰ãªã‚‹æƒ…報を得るã
| 関数 | 説明 |
|-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `void i2c_init(void);` | I2C ドライãƒã‚’åˆæœŸåŒ–ã—ã¾ã™ã€‚ä»–ã®ã‚らゆるトランザクションを開始ã™ã‚‹å‰ã«ã€ã“ã®é–¢æ•°ã‚’一度ã ã‘呼ã¶å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ |
-| `i2c_status_t i2c_start(uint8_t address, uint16_t timeout);` | I2C トランザクションを開始ã—ã¾ã™ã€‚アドレスã¯æ–¹å‘ビットã®ãªã„7ビットスレーブアドレスã§ã™ã€‚ |
| `i2c_status_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由ã§ãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡ã—ã¾ã™ã€‚アドレスã¯æ–¹å‘ビットã®ãªã„7ビットスレーブアドレスã§ã™ã€‚トランザクションã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ |
| `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);` | I2C 経由ã§ãƒ‡ãƒ¼ã‚¿ã‚’å—ä¿¡ã—ã¾ã™ã€‚アドレスã¯æ–¹å‘ビットã®ãªã„7ビットスレーブアドレスã§ã™ã€‚ `length` ã§æŒ‡å®šã—ãŸé•·ã•ã®ãƒã‚¤ãƒˆåˆ—ã‚’ `data` ã«ä¿å­˜ã—ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ |
| `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_transmit` ã¨åŒæ§˜ã§ã™ãŒã€ `regaddr` ã§ã‚¹ãƒ¬ãƒ¼ãƒ–ã®ãƒ‡ãƒ¼ã‚¿æ›¸ãè¾¼ã¿å…ˆã®ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’指定ã—ã¾ã™ã€‚ |
| `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);` | `i2c_receive` ã¨åŒæ§˜ã§ã™ãŒã€ `regaddr` ã§ã‚¹ãƒ¬ãƒ¼ãƒ–ã®ãƒ‡ãƒ¼ã‚¿èª­ã¿è¾¼ã¿å…ˆã®ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’指定ã—ã¾ã™ã€‚ |
-| `i2c_status_t i2c_stop(void);` | I2C トランザクションを終了ã—ã¾ã™ã€‚ |
+| `i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout);` | I2C アドレスをテストã—ã¾ã™ã€‚アドレスã¯æ–¹å‘ビットã®ãªã„7ビットスレーブアドレスã§ã™ã€‚ |
### 関数ã®æˆ»ã‚Šå€¤ :id=function-return
diff --git a/docs/quantum_painter.md b/docs/quantum_painter.md
index 181abf8bb3..dc855b1bf6 100644
--- a/docs/quantum_painter.md
+++ b/docs/quantum_painter.md
@@ -19,18 +19,20 @@ The QMK CLI can be used to convert from normal images such as PNG files or anima
Supported devices:
-| Display Panel | Panel Type | Size | Comms Transport | Driver |
-|---------------|--------------------|------------------|-----------------|------------------------------------------|
-| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += gc9a01_spi` |
-| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9163_spi` |
-| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9341_spi` |
-| ILI9488 | RGB LCD | 320x480 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9488_spi` |
-| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ssd1351_spi` |
-| ST7735 | RGB LCD | 132x162, 80x160 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7735_spi` |
-| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7789_spi` |
-| SH1106 (SPI) | Monochrome OLED | 128x64 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += sh1106_spi` |
-| SH1106 (I2C) | Monochrome OLED | 128x64 | I2C | `QUANTUM_PAINTER_DRIVERS += sh1106_i2c` |
-| Surface | Virtual | User-defined | None | `QUANTUM_PAINTER_DRIVERS += surface` |
+| Display Panel | Panel Type | Size | Comms Transport | Driver |
+|----------------|--------------------|------------------|-----------------|------------------------------------------|
+| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += gc9a01_spi` |
+| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9163_spi` |
+| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9341_spi` |
+| ILI9488 | RGB LCD | 320x480 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9488_spi` |
+| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ssd1351_spi` |
+| ST7735 | RGB LCD | 132x162, 80x160 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7735_spi` |
+| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7789_spi` |
+| SH1106 (SPI) | Monochrome OLED | 128x64 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += sh1106_spi` |
+| SH1106 (I2C) | Monochrome OLED | 128x64 | I2C | `QUANTUM_PAINTER_DRIVERS += sh1106_i2c` |
+| SSD1306 (SPI) | Monochrome OLED | 128x64 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += sh1106_spi` |
+| SSD1306 (I2C) | Monochrome OLED | 128x32 | I2C | `QUANTUM_PAINTER_DRIVERS += sh1106_i2c` |
+| Surface | Virtual | User-defined | None | `QUANTUM_PAINTER_DRIVERS += surface` |
## Quantum Painter Configuration :id=quantum-painter-config
@@ -433,6 +435,10 @@ The maximum number of displays of each type can be configured by changing the fo
Native color format mono2 is compatible with SH1106
+#### ** SSD1306 **
+
+SSD1306 and SH1106 are almost entirely identical, to the point of being indisinguishable by Quantum Painter. Enable SH1106 support in Quantum Painter and create SH1106 devices in firmware to perform drawing operations on SSD1306 displays.
+
<!-- tabs:end -->
### ** Surface **
diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md
index e102b9bfb9..1f73ec8fae 100644
--- a/docs/reference_info_json.md
+++ b/docs/reference_info_json.md
@@ -111,6 +111,13 @@ Configures the [APA102](apa102_driver.md) driver.
Configures the [Audio](feature_audio.md) feature.
* `audio`
+ * `default`
+ * `on`
+ * The default audio enabled state.
+ * Default: `true`
+ * `clicky`
+ * The default audio clicky enabled state.
+ * Default: `true`
* `macro_beep`
* Play a short beep for `\a` (ASCII `BEL`) characters in Send String macros.
* Default: `false`
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 84751a512c..cf2ab28876 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -36,6 +36,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` |
|French (BÉPO) |`keymap_bepo.h` |`sendstring_bepo.h` |
|French (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
+|French (Canada) |`keymap_canadian_french.h` |`sendstring_canadian_french.h` |
|French (Switzerland) |`keymap_swiss_fr.h` |`sendstring_swiss_fr.h` |
|French (macOS, ISO) |`keymap_french_mac_iso.h` |`sendstring_french_mac_iso.h` |
|German |`keymap_german.h` |`sendstring_german.h` |
@@ -67,6 +68,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/gpio/mcp23018.c b/drivers/gpio/mcp23018.c
index 41cbfe087e..3eca4f9d34 100644
--- a/drivers/gpio/mcp23018.c
+++ b/drivers/gpio/mcp23018.c
@@ -33,13 +33,13 @@ bool mcp23018_set_config(uint8_t slave_addr, mcp23018_port_t port, uint8_t conf)
uint8_t cmdDirection = port ? CMD_IODIRB : CMD_IODIRA;
uint8_t cmdPullup = port ? CMD_GPPUB : CMD_GPPUA;
- i2c_status_t ret = i2c_writeReg(addr, cmdDirection, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmdDirection, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("mcp23018_set_config::directionFAILED::%u\n", ret);
return false;
}
- ret = i2c_writeReg(addr, cmdPullup, &conf, sizeof(conf), TIMEOUT);
+ ret = i2c_write_register(addr, cmdPullup, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("mcp23018_set_config::pullupFAILED::%u\n", ret);
return false;
@@ -52,7 +52,7 @@ bool mcp23018_set_output(uint8_t slave_addr, mcp23018_port_t port, uint8_t conf)
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t cmd = port ? CMD_GPIOB : CMD_GPIOA;
- i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmd, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("mcp23018_set_output::FAILED::%u\n", ret);
return false;
@@ -65,7 +65,7 @@ bool mcp23018_set_output_all(uint8_t slave_addr, uint8_t confA, uint8_t confB) {
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t conf[2] = {confA, confB};
- i2c_status_t ret = i2c_writeReg(addr, CMD_GPIOA, &conf[0], sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, CMD_GPIOA, &conf[0], sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("mcp23018_set_output::FAILED::%u\n", ret);
return false;
@@ -78,7 +78,7 @@ bool mcp23018_readPins(uint8_t slave_addr, mcp23018_port_t port, uint8_t* out) {
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t cmd = port ? CMD_GPIOB : CMD_GPIOA;
- i2c_status_t ret = i2c_readReg(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
+ i2c_status_t ret = i2c_read_register(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("mcp23018_readPins::FAILED::%u\n", ret);
return false;
@@ -97,7 +97,7 @@ bool mcp23018_readPins_all(uint8_t slave_addr, uint16_t* out) {
data16 data = {.u16 = 0};
- i2c_status_t ret = i2c_readReg(addr, CMD_GPIOA, &data.u8[0], sizeof(data), TIMEOUT);
+ i2c_status_t ret = i2c_read_register(addr, CMD_GPIOA, &data.u8[0], sizeof(data), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("mcp23018_readPins::FAILED::%u\n", ret);
return false;
diff --git a/drivers/gpio/pca9505.c b/drivers/gpio/pca9505.c
index 5803746c96..5617a14a8b 100644
--- a/drivers/gpio/pca9505.c
+++ b/drivers/gpio/pca9505.c
@@ -41,8 +41,6 @@ void pca9505_init(uint8_t slave_addr) {
}
// TODO: could check device connected
- // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE);
- // i2c_stop();
}
bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) {
@@ -66,7 +64,7 @@ bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) {
break;
}
- i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmd, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9505_set_config::FAILED\n");
return false;
@@ -96,7 +94,7 @@ bool pca9505_set_polarity(uint8_t slave_addr, pca9505_port_t port, uint8_t conf)
break;
}
- i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmd, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9505_set_polarity::FAILED\n");
return false;
@@ -126,7 +124,7 @@ bool pca9505_set_output(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) {
break;
}
- i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmd, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9505_set_output::FAILED\n");
return false;
@@ -156,7 +154,7 @@ bool pca9505_readPins(uint8_t slave_addr, pca9505_port_t port, uint8_t* out) {
break;
}
- i2c_status_t ret = i2c_readReg(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
+ i2c_status_t ret = i2c_read_register(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9505_readPins::FAILED\n");
return false;
diff --git a/drivers/gpio/pca9555.c b/drivers/gpio/pca9555.c
index adcd040083..0fc30099ac 100644
--- a/drivers/gpio/pca9555.c
+++ b/drivers/gpio/pca9555.c
@@ -29,15 +29,13 @@ void pca9555_init(uint8_t slave_addr) {
}
// TODO: could check device connected
- // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE);
- // i2c_stop();
}
bool pca9555_set_config(uint8_t slave_addr, pca9555_port_t port, uint8_t conf) {
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t cmd = port ? CMD_CONFIG_1 : CMD_CONFIG_0;
- i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmd, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9555_set_config::FAILED\n");
return false;
@@ -50,7 +48,7 @@ bool pca9555_set_output(uint8_t slave_addr, pca9555_port_t port, uint8_t conf) {
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t cmd = port ? CMD_OUTPUT_1 : CMD_OUTPUT_0;
- i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, cmd, &conf, sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9555_set_output::FAILED\n");
return false;
@@ -63,7 +61,7 @@ bool pca9555_set_output_all(uint8_t slave_addr, uint8_t confA, uint8_t confB) {
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t conf[2] = {confA, confB};
- i2c_status_t ret = i2c_writeReg(addr, CMD_OUTPUT_0, &conf[0], sizeof(conf), TIMEOUT);
+ i2c_status_t ret = i2c_write_register(addr, CMD_OUTPUT_0, &conf[0], sizeof(conf), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
dprintf("pca9555_set_output::FAILED::%u\n", ret);
return false;
@@ -76,7 +74,7 @@ bool pca9555_readPins(uint8_t slave_addr, pca9555_port_t port, uint8_t* out) {
uint8_t addr = SLAVE_TO_ADDR(slave_addr);
uint8_t cmd = port ? CMD_INPUT_1 : CMD_INPUT_0;
- i2c_status_t ret = i2c_readReg(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
+ i2c_status_t ret = i2c_read_register(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9555_readPins::FAILED\n");
return false;
@@ -95,7 +93,7 @@ bool pca9555_readPins_all(uint8_t slave_addr, uint16_t* out) {
data16 data = {.u16 = 0};
- i2c_status_t ret = i2c_readReg(addr, CMD_INPUT_0, &data.u8[0], sizeof(data), TIMEOUT);
+ i2c_status_t ret = i2c_read_register(addr, CMD_INPUT_0, &data.u8[0], sizeof(data), TIMEOUT);
if (ret != I2C_STATUS_SUCCESS) {
print("pca9555_readPins_all::FAILED\n");
return false;
diff --git a/drivers/haptic/drv2605l.c b/drivers/haptic/drv2605l.c
index 1ad2ad385f..a5adde5366 100644
--- a/drivers/haptic/drv2605l.c
+++ b/drivers/haptic/drv2605l.c
@@ -29,7 +29,7 @@ void drv2605l_write(uint8_t reg_addr, uint8_t data) {
}
uint8_t drv2605l_read(uint8_t reg_addr) {
- i2c_readReg(DRV2605L_I2C_ADDRESS << 1, reg_addr, &drv2605l_read_buffer, 1, 100);
+ i2c_read_register(DRV2605L_I2C_ADDRESS << 1, reg_addr, &drv2605l_read_buffer, 1, 100);
return drv2605l_read_buffer;
}
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c
index 527519eb8a..548b8f094e 100644
--- a/drivers/led/apa102.c
+++ b/drivers/led/apa102.c
@@ -55,60 +55,25 @@
uint8_t apa102_led_brightness = APA102_DEFAULT_BRIGHTNESS;
-void static apa102_start_frame(void);
-void static apa102_end_frame(uint16_t num_leds);
-
-void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness);
-void static apa102_send_byte(uint8_t byte);
-
-void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
- rgb_led_t *end = start_led + num_leds;
-
- apa102_start_frame();
- for (rgb_led_t *led = start_led; led < end; led++) {
- apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
- }
- 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);
-
- writePinLow(APA102_DI_PIN);
- writePinLow(APA102_CI_PIN);
-}
-
-void apa102_set_brightness(uint8_t brightness) {
- if (brightness > APA102_MAX_BRIGHTNESS) {
- apa102_led_brightness = APA102_MAX_BRIGHTNESS;
- } else if (brightness < 0) {
- apa102_led_brightness = 0;
- } else {
- apa102_led_brightness = brightness;
- }
-}
-
-void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness) {
- apa102_send_byte(0b11100000 | brightness);
- apa102_send_byte(blue);
- apa102_send_byte(green);
- apa102_send_byte(red);
+static void apa102_send_byte(uint8_t byte) {
+ APA102_SEND_BIT(byte, 7);
+ APA102_SEND_BIT(byte, 6);
+ APA102_SEND_BIT(byte, 5);
+ APA102_SEND_BIT(byte, 4);
+ APA102_SEND_BIT(byte, 3);
+ APA102_SEND_BIT(byte, 2);
+ APA102_SEND_BIT(byte, 1);
+ APA102_SEND_BIT(byte, 0);
}
-void static apa102_start_frame(void) {
+static void apa102_start_frame(void) {
apa102_init();
for (uint16_t i = 0; i < 4; i++) {
apa102_send_byte(0);
}
}
-void static apa102_end_frame(uint16_t num_leds) {
+static void apa102_end_frame(uint16_t num_leds) {
// This function has been taken from: https://github.com/pololu/apa102-arduino/blob/master/APA102.h
// and adapted. The code is MIT licensed. I think thats compatible?
//
@@ -141,13 +106,37 @@ void static apa102_end_frame(uint16_t num_leds) {
apa102_init();
}
-void static apa102_send_byte(uint8_t byte) {
- APA102_SEND_BIT(byte, 7);
- APA102_SEND_BIT(byte, 6);
- APA102_SEND_BIT(byte, 5);
- APA102_SEND_BIT(byte, 4);
- APA102_SEND_BIT(byte, 3);
- APA102_SEND_BIT(byte, 2);
- APA102_SEND_BIT(byte, 1);
- APA102_SEND_BIT(byte, 0);
+static void apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness) {
+ apa102_send_byte(0b11100000 | brightness);
+ apa102_send_byte(blue);
+ apa102_send_byte(green);
+ apa102_send_byte(red);
+}
+
+void apa102_init(void) {
+ setPinOutput(APA102_DI_PIN);
+ setPinOutput(APA102_CI_PIN);
+
+ writePinLow(APA102_DI_PIN);
+ writePinLow(APA102_CI_PIN);
+}
+
+void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
+ rgb_led_t *end = start_led + num_leds;
+
+ apa102_start_frame();
+ for (rgb_led_t *led = start_led; led < end; led++) {
+ apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
+ }
+ apa102_end_frame(num_leds);
+}
+
+void apa102_set_brightness(uint8_t brightness) {
+ if (brightness > APA102_MAX_BRIGHTNESS) {
+ apa102_led_brightness = APA102_MAX_BRIGHTNESS;
+ } else if (brightness < 0) {
+ apa102_led_brightness = 0;
+ } else {
+ apa102_led_brightness = brightness;
+ }
}
diff --git a/drivers/led/apa102.h b/drivers/led/apa102.h
index cd0a19d445..5e2f78658b 100644
--- a/drivers/led/apa102.h
+++ b/drivers/led/apa102.h
@@ -19,13 +19,19 @@
#include "color.h"
+#if defined(RGBLIGHT_APA102)
+# define APA102_LED_COUNT RGBLIGHT_LED_COUNT
+#elif defined(RGB_MATRIX_APA102)
+# define APA102_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
#ifndef APA102_DEFAULT_BRIGHTNESS
# define APA102_DEFAULT_BRIGHTNESS 31
#endif
#define APA102_MAX_BRIGHTNESS 31
-extern uint8_t apa102_led_brightness;
+void apa102_init(void);
/* User Interface
*
@@ -38,4 +44,5 @@ extern uint8_t apa102_led_brightness;
* - Send out the LED data
*/
void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds);
+
void apa102_set_brightness(uint8_t brightness);
diff --git a/drivers/led/aw20216s.c b/drivers/led/aw20216s.c
index ab7f3ccb42..49b059186d 100644
--- a/drivers/led/aw20216s.c
+++ b/drivers/led/aw20216s.c
@@ -134,6 +134,7 @@ void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
@@ -149,8 +150,8 @@ void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
aw20216s_write(cs_pin, AW20216S_PAGE_PWM, 0, g_pwm_buffer[index], AW20216S_PWM_REGISTER_COUNT);
+ g_pwm_buffer_update_required[index] = false;
}
- g_pwm_buffer_update_required[index] = false;
}
void aw20216s_flush(void) {
diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h
index 38a0c92b2f..b8d8afc4cb 100644
--- a/drivers/led/aw20216s.h
+++ b/drivers/led/aw20216s.h
@@ -119,6 +119,7 @@ void aw20216s_flush(void);
#define CS16_SW1 0x0F
#define CS17_SW1 0x10
#define CS18_SW1 0x11
+
#define CS1_SW2 0x12
#define CS2_SW2 0x13
#define CS3_SW2 0x14
@@ -137,6 +138,7 @@ void aw20216s_flush(void);
#define CS16_SW2 0x21
#define CS17_SW2 0x22
#define CS18_SW2 0x23
+
#define CS1_SW3 0x24
#define CS2_SW3 0x25
#define CS3_SW3 0x26
@@ -155,6 +157,7 @@ void aw20216s_flush(void);
#define CS16_SW3 0x33
#define CS17_SW3 0x34
#define CS18_SW3 0x35
+
#define CS1_SW4 0x36
#define CS2_SW4 0x37
#define CS3_SW4 0x38
@@ -173,6 +176,7 @@ void aw20216s_flush(void);
#define CS16_SW4 0x45
#define CS17_SW4 0x46
#define CS18_SW4 0x47
+
#define CS1_SW5 0x48
#define CS2_SW5 0x49
#define CS3_SW5 0x4A
@@ -191,6 +195,7 @@ void aw20216s_flush(void);
#define CS16_SW5 0x57
#define CS17_SW5 0x58
#define CS18_SW5 0x59
+
#define CS1_SW6 0x5A
#define CS2_SW6 0x5B
#define CS3_SW6 0x5C
@@ -209,6 +214,7 @@ void aw20216s_flush(void);
#define CS16_SW6 0x69
#define CS17_SW6 0x6A
#define CS18_SW6 0x6B
+
#define CS1_SW7 0x6C
#define CS2_SW7 0x6D
#define CS3_SW7 0x6E
@@ -227,6 +233,7 @@ void aw20216s_flush(void);
#define CS16_SW7 0x7B
#define CS17_SW7 0x7C
#define CS18_SW7 0x7D
+
#define CS1_SW8 0x7E
#define CS2_SW8 0x7F
#define CS3_SW8 0x80
@@ -245,6 +252,7 @@ void aw20216s_flush(void);
#define CS16_SW8 0x8D
#define CS17_SW8 0x8E
#define CS18_SW8 0x8F
+
#define CS1_SW9 0x90
#define CS2_SW9 0x91
#define CS3_SW9 0x92
@@ -263,6 +271,7 @@ void aw20216s_flush(void);
#define CS16_SW9 0x9F
#define CS17_SW9 0xA0
#define CS18_SW9 0xA1
+
#define CS1_SW10 0xA2
#define CS2_SW10 0xA3
#define CS3_SW10 0xA4
@@ -281,6 +290,7 @@ void aw20216s_flush(void);
#define CS16_SW10 0xB1
#define CS17_SW10 0xB2
#define CS18_SW10 0xB3
+
#define CS1_SW11 0xB4
#define CS2_SW11 0xB5
#define CS3_SW11 0xB6
@@ -299,6 +309,7 @@ void aw20216s_flush(void);
#define CS16_SW11 0xC3
#define CS17_SW11 0xC4
#define CS18_SW11 0xC5
+
#define CS1_SW12 0xC6
#define CS2_SW12 0xC7
#define CS3_SW12 0xC8
diff --git a/drivers/led/issi/is31fl3218-mono.c b/drivers/led/issi/is31fl3218-mono.c
new file mode 100644
index 0000000000..1c5e4c055c
--- /dev/null
+++ b/drivers/led/issi/is31fl3218-mono.c
@@ -0,0 +1,142 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ *
+ * 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 "is31fl3218-mono.h"
+#include "i2c_master.h"
+
+#define IS31FL3218_PWM_REGISTER_COUNT 18
+#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3
+
+#ifndef IS31FL3218_I2C_TIMEOUT
+# define IS31FL3218_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3218_I2C_PERSISTENCE
+# define IS31FL3218_I2C_PERSISTENCE 0
+#endif
+
+// IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining.
+uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required = false;
+
+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) {
+#if IS31FL3218_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, reg, &data, 1, IS31FL3218_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, reg, &data, 1, IS31FL3218_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3218_write_pwm_buffer(void) {
+#if IS31FL3218_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, IS31FL3218_REG_PWM, g_pwm_buffer, 18, IS31FL3218_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, IS31FL3218_REG_PWM, g_pwm_buffer, 18, IS31FL3218_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3218_init(void) {
+ i2c_init();
+
+ // In case we ever want to reinitialize (?)
+ is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00);
+
+ // Turn off software shutdown
+ is31fl3218_write_register(IS31FL3218_REG_SHUTDOWN, 0x01);
+
+ // Set all PWM values to zero
+ for (uint8_t i = 0; i < IS31FL3218_PWM_REGISTER_COUNT; i++) {
+ is31fl3218_write_register(IS31FL3218_REG_PWM + i, 0x00);
+ }
+
+ // turn off all LEDs in the LED control register
+ for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00);
+ }
+
+ // Load PWM registers and LED Control register data
+ is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
+
+ for (int i = 0; i < IS31FL3218_LED_COUNT; i++) {
+ is31fl3218_set_led_control_register(i, true);
+ }
+
+ is31fl3218_update_led_control_registers();
+}
+
+void is31fl3218_set_value(int index, uint8_t value) {
+ is31fl3218_led_t led;
+
+ if (index >= 0 && index < IS31FL3218_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.v] = value;
+ g_pwm_buffer_update_required = true;
+ }
+}
+
+void is31fl3218_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3218_LED_COUNT; i++) {
+ is31fl3218_set_value(i, value);
+ }
+}
+
+void is31fl3218_set_led_control_register(uint8_t index, bool value) {
+ is31fl3218_led_t led;
+ memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 6;
+ uint8_t bit_value = led.v % 6;
+
+ if (value) {
+ g_led_control_registers[control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required = true;
+}
+
+void is31fl3218_update_pwm_buffers(void) {
+ if (g_pwm_buffer_update_required) {
+ is31fl3218_write_pwm_buffer();
+ // Load PWM registers and LED Control register data
+ is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
+
+ g_pwm_buffer_update_required = false;
+ }
+}
+
+void is31fl3218_update_led_control_registers(void) {
+ if (g_led_control_registers_update_required) {
+ for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]);
+ }
+
+ g_led_control_registers_update_required = false;
+ }
+}
diff --git a/drivers/led/issi/is31fl3218-mono.h b/drivers/led/issi/is31fl3218-mono.h
new file mode 100644
index 0000000000..38beed0569
--- /dev/null
+++ b/drivers/led/issi/is31fl3218-mono.h
@@ -0,0 +1,75 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3218_REG_SHUTDOWN 0x00
+#define IS31FL3218_REG_PWM 0x01
+#define IS31FL3218_REG_LED_CONTROL_1 0x13
+#define IS31FL3218_REG_LED_CONTROL_2 0x14
+#define IS31FL3218_REG_LED_CONTROL_3 0x15
+#define IS31FL3218_REG_UPDATE 0x16
+#define IS31FL3218_REG_RESET 0x17
+
+#define IS31FL3218_I2C_ADDRESS 0x54
+
+#if defined(LED_MATRIX_IS31FL3218)
+# define IS31FL3218_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+typedef struct is31fl3218_led_t {
+ uint8_t v;
+} PACKED is31fl3218_led_t;
+
+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);
+
+void is31fl3218_set_led_control_register(uint8_t index, bool value);
+
+void is31fl3218_update_pwm_buffers(void);
+
+void is31fl3218_update_led_control_registers(void);
+
+#define OUT1 0x00
+#define OUT2 0x01
+#define OUT3 0x02
+#define OUT4 0x03
+#define OUT5 0x04
+#define OUT6 0x05
+#define OUT7 0x06
+#define OUT8 0x07
+#define OUT9 0x08
+#define OUT10 0x09
+#define OUT11 0x0A
+#define OUT12 0x0B
+#define OUT13 0x0C
+#define OUT14 0x0D
+#define OUT15 0x0E
+#define OUT16 0x0F
+#define OUT17 0x10
+#define OUT18 0x11
diff --git a/drivers/led/issi/is31fl3218-simple.c b/drivers/led/issi/is31fl3218-simple.c
deleted file mode 100644
index ce28c51d18..0000000000
--- a/drivers/led/issi/is31fl3218-simple.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Copyright 2018 Jason Williams (Wilba)
- *
- * 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 "is31fl3218.h"
-#include <string.h>
-#include "i2c_master.h"
-
-#define IS31FL3218_PWM_REGISTER_COUNT 18
-#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3
-
-#ifndef IS31FL3218_I2C_TIMEOUT
-# define IS31FL3218_I2C_TIMEOUT 100
-#endif
-
-#ifndef IS31FL3218_I2C_PERSISTENCE
-# define IS31FL3218_I2C_PERSISTENCE 0
-#endif
-
-// Reusable buffer for transfers
-uint8_t g_twi_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];
-bool g_pwm_buffer_update_required = false;
-
-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;
-#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;
- }
-#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_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);
-
-#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);
- }
-#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
-#endif
-}
-
-void is31fl3218_init(void) {
- i2c_init();
-
- // In case we ever want to reinitialize (?)
- is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00);
-
- // Turn off software shutdown
- is31fl3218_write_register(IS31FL3218_REG_SHUTDOWN, 0x01);
-
- // Set all PWM values to zero
- for (uint8_t i = 0; i < IS31FL3218_PWM_REGISTER_COUNT; i++) {
- is31fl3218_write_register(IS31FL3218_REG_PWM + i, 0x00);
- }
-
- // turn off all LEDs in the LED control register
- for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00);
- }
-
- // Load PWM registers and LED Control register data
- is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
-
- for (int i = 0; i < IS31FL3218_LED_COUNT; i++) {
- is31fl3218_set_led_control_register(i, true);
- }
-
- is31fl3218_update_led_control_registers();
-}
-
-void is31fl3218_set_value(int index, uint8_t value) {
- is31fl3218_led_t led;
- if (index >= 0 && index < IS31FL3218_LED_COUNT) {
- memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led));
- }
- if (g_pwm_buffer[led.v - IS31FL3218_REG_PWM] == value) {
- return;
- }
- g_pwm_buffer[led.v - IS31FL3218_REG_PWM] = value;
- g_pwm_buffer_update_required = true;
-}
-
-void is31fl3218_set_value_all(uint8_t value) {
- for (int i = 0; i < IS31FL3218_LED_COUNT; i++) {
- is31fl3218_set_value(i, value);
- }
-}
-
-void is31fl3218_set_led_control_register(uint8_t index, bool value) {
- is31fl3218_led_t led;
- memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led));
-
- uint8_t control_register = (led.v - IS31FL3218_REG_PWM) / 6;
- uint8_t bit_value = (led.v - IS31FL3218_REG_PWM) % 6;
-
- if (value) {
- g_led_control_registers[control_register] |= (1 << bit_value);
- } else {
- g_led_control_registers[control_register] &= ~(1 << bit_value);
- }
-
- g_led_control_registers_update_required = true;
-}
-
-void is31fl3218_update_pwm_buffers(void) {
- if (g_pwm_buffer_update_required) {
- is31fl3218_write_pwm_buffer(g_pwm_buffer);
- // Load PWM registers and LED Control register data
- is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
-
- g_pwm_buffer_update_required = false;
- }
-}
-
-void is31fl3218_update_led_control_registers(void) {
- if (g_led_control_registers_update_required) {
- for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]);
- }
-
- g_led_control_registers_update_required = false;
- }
-}
diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h
deleted file mode 100644
index 9492817809..0000000000
--- a/drivers/led/issi/is31fl3218-simple.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2018 Jason Williams (Wilba)
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-#define IS31FL3218_REG_SHUTDOWN 0x00
-#define IS31FL3218_REG_PWM 0x01
-#define IS31FL3218_REG_LED_CONTROL_1 0x13
-#define IS31FL3218_REG_LED_CONTROL_2 0x14
-#define IS31FL3218_REG_LED_CONTROL_3 0x15
-#define IS31FL3218_REG_UPDATE 0x16
-#define IS31FL3218_REG_RESET 0x17
-
-#define IS31FL3218_I2C_ADDRESS 0x54
-
-#if defined(LED_MATRIX_IS31FL3218)
-# define IS31FL3218_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-typedef struct is31fl3218_led_t {
- uint8_t v;
-} PACKED is31fl3218_led_t;
-
-extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT];
-
-void is31fl3218_init(void);
-
-void is31fl3218_set_value(int index, uint8_t value);
-
-void is31fl3218_set_value_all(uint8_t value);
-
-void is31fl3218_set_led_control_register(uint8_t index, bool value);
-
-void is31fl3218_update_pwm_buffers(void);
-
-void is31fl3218_update_led_control_registers(void);
-
-#define OUT1 0x01
-#define OUT2 0x02
-#define OUT3 0x03
-#define OUT4 0x04
-#define OUT5 0x05
-#define OUT6 0x06
-#define OUT7 0x07
-#define OUT8 0x08
-#define OUT9 0x09
-#define OUT10 0x0A
-#define OUT11 0x0B
-#define OUT12 0x0C
-#define OUT13 0x0D
-#define OUT14 0x0E
-#define OUT15 0x0F
-#define OUT16 0x10
-#define OUT17 0x11
-#define OUT18 0x12
diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c
index 39db09d518..5099480023 100644
--- a/drivers/led/issi/is31fl3218.c
+++ b/drivers/led/issi/is31fl3218.c
@@ -13,8 +13,8 @@
* 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 "is31fl3218.h"
-#include <string.h>
#include "i2c_master.h"
#define IS31FL3218_PWM_REGISTER_COUNT 18
@@ -28,9 +28,6 @@
# define IS31FL3218_I2C_PERSISTENCE 0
#endif
-// Reusable buffer for transfers
-uint8_t g_twi_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];
bool g_pwm_buffer_update_required = false;
@@ -39,27 +36,22 @@ 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;
#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_write_register(IS31FL3218_I2C_ADDRESS << 1, reg, &data, 1, IS31FL3218_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
+ i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, reg, &data, 1, 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);
-
+void is31fl3218_write_pwm_buffer(void) {
#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);
+ if (i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, IS31FL3218_REG_PWM, g_pwm_buffer, 18, IS31FL3218_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
+ i2c_write_register(IS31FL3218_I2C_ADDRESS << 1, IS31FL3218_REG_PWM, g_pwm_buffer, 18, IS31FL3218_I2C_TIMEOUT);
#endif
}
@@ -94,16 +86,19 @@ void is31fl3218_init(void) {
void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
is31fl3218_led_t led;
+
if (index >= 0 && index < IS31FL3218_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.r] == red && g_pwm_buffer[led.g] == green && g_pwm_buffer[led.b] == blue) {
+ return;
+ }
+
+ g_pwm_buffer[led.r] = red;
+ g_pwm_buffer[led.g] = green;
+ g_pwm_buffer[led.b] = blue;
+ g_pwm_buffer_update_required = true;
}
- if (g_pwm_buffer[led.r - IS31FL3218_REG_PWM] == red && g_pwm_buffer[led.g - IS31FL3218_REG_PWM] == green && g_pwm_buffer[led.b - IS31FL3218_REG_PWM] == blue) {
- return;
- }
- g_pwm_buffer[led.r - IS31FL3218_REG_PWM] = red;
- g_pwm_buffer[led.g - IS31FL3218_REG_PWM] = green;
- g_pwm_buffer[led.b - IS31FL3218_REG_PWM] = blue;
- g_pwm_buffer_update_required = true;
}
void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
@@ -116,12 +111,12 @@ void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bo
is31fl3218_led_t led;
memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led));
- uint8_t control_register_r = (led.r - IS31FL3218_REG_PWM) / 6;
- uint8_t control_register_g = (led.g - IS31FL3218_REG_PWM) / 6;
- uint8_t control_register_b = (led.b - IS31FL3218_REG_PWM) / 6;
- uint8_t bit_r = (led.r - IS31FL3218_REG_PWM) % 6;
- uint8_t bit_g = (led.g - IS31FL3218_REG_PWM) % 6;
- uint8_t bit_b = (led.b - IS31FL3218_REG_PWM) % 6;
+ uint8_t control_register_r = led.r / 6;
+ uint8_t control_register_g = led.g / 6;
+ uint8_t control_register_b = led.b / 6;
+ uint8_t bit_r = led.r % 6;
+ uint8_t bit_g = led.g % 6;
+ uint8_t bit_b = led.b % 6;
if (red) {
g_led_control_registers[control_register_r] |= (1 << bit_r);
@@ -144,7 +139,7 @@ void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3218_update_pwm_buffers(void) {
if (g_pwm_buffer_update_required) {
- is31fl3218_write_pwm_buffer(g_pwm_buffer);
+ is31fl3218_write_pwm_buffer();
// Load PWM registers and LED Control register data
is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
@@ -154,7 +149,7 @@ void is31fl3218_update_pwm_buffers(void) {
void is31fl3218_update_led_control_registers(void) {
if (g_led_control_registers_update_required) {
- for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
+ for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]);
}
diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h
index ffa7f36d61..2228343329 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);
@@ -55,21 +57,21 @@ void is31fl3218_update_pwm_buffers(void);
void is31fl3218_update_led_control_registers(void);
-#define OUT1 0x01
-#define OUT2 0x02
-#define OUT3 0x03
-#define OUT4 0x04
-#define OUT5 0x05
-#define OUT6 0x06
-#define OUT7 0x07
-#define OUT8 0x08
-#define OUT9 0x09
-#define OUT10 0x0A
-#define OUT11 0x0B
-#define OUT12 0x0C
-#define OUT13 0x0D
-#define OUT14 0x0E
-#define OUT15 0x0F
-#define OUT16 0x10
-#define OUT17 0x11
-#define OUT18 0x12
+#define OUT1 0x00
+#define OUT2 0x01
+#define OUT3 0x02
+#define OUT4 0x03
+#define OUT5 0x04
+#define OUT6 0x05
+#define OUT7 0x06
+#define OUT8 0x07
+#define OUT9 0x08
+#define OUT10 0x09
+#define OUT11 0x0A
+#define OUT12 0x0B
+#define OUT13 0x0C
+#define OUT14 0x0D
+#define OUT15 0x0E
+#define OUT16 0x0F
+#define OUT17 0x10
+#define OUT18 0x11
diff --git a/drivers/led/issi/is31fl3731-mono.c b/drivers/led/issi/is31fl3731-mono.c
new file mode 100644
index 0000000000..ca4e3449b2
--- /dev/null
+++ b/drivers/led/issi/is31fl3731-mono.c
@@ -0,0 +1,224 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2019 Clueboard
+ * Copyright 2021 Doni Crosby
+ *
+ * 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 "is31fl3731-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3731_PWM_REGISTER_COUNT 144
+#define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18
+
+#ifndef IS31FL3731_I2C_TIMEOUT
+# define IS31FL3731_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3731_I2C_PERSISTENCE
+# define IS31FL3731_I2C_PERSISTENCE 0
+#endif
+
+// These buffers match the IS31FL3731 PWM registers 0x24-0xB3.
+// 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 is31fl3731_write_pwm_buffer() but it's
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[IS31FL3731_DRIVER_COUNT][IS31FL3731_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3731_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false};
+
+void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3731_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3731_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, 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 index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 9 transfers of 16 bytes.
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) {
+#if IS31FL3731_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3731_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, IS31FL3731_FRAME_REG_PWM + i, g_pwm_buffer[index] + i, 16, IS31FL3731_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, IS31FL3731_FRAME_REG_PWM + i, g_pwm_buffer[index] + i, 16, IS31FL3731_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3731_init_drivers(void) {
+ i2c_init();
+
+ is31fl3731_init(IS31FL3731_I2C_ADDRESS_1);
+#if defined(IS31FL3731_I2C_ADDRESS_2)
+ is31fl3731_init(IS31FL3731_I2C_ADDRESS_2);
+# if defined(IS31FL3731_I2C_ADDRESS_3)
+ is31fl3731_init(IS31FL3731_I2C_ADDRESS_3);
+# if defined(IS31FL3731_I2C_ADDRESS_4)
+ is31fl3731_init(IS31FL3731_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3731_LED_COUNT; i++) {
+ is31fl3731_set_led_control_register(i, true);
+ }
+
+ is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3731_I2C_ADDRESS_2)
+ is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3731_I2C_ADDRESS_3)
+ is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3731_I2C_ADDRESS_4)
+ is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3731_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, first enable software shutdown,
+ // then set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FUNCTION);
+
+ // enable software shutdown
+ is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00);
+#ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array
+ is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN);
+#endif
+
+ // this delay was copied from other drivers, might not be needed
+ wait_ms(10);
+
+ // picture mode
+ is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE);
+ // display frame 0
+ is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00);
+ // audio sync off
+ is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00);
+
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FRAME_1);
+
+ // turn off all LEDs in the LED control register
+ for (uint8_t i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, IS31FL3731_FRAME_REG_LED_CONTROL + i, 0x00);
+ }
+
+ // turn off all LEDs in the blink control register (not really needed)
+ for (uint8_t i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, IS31FL3731_FRAME_REG_BLINK_CONTROL + i, 0x00);
+ }
+
+ // set PWM on all LEDs to 0
+ for (uint8_t i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, IS31FL3731_FRAME_REG_PWM + i, 0x00);
+ }
+
+ is31fl3731_select_page(addr, IS31FL3731_COMMAND_FUNCTION);
+
+ // disable software shutdown
+ is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01);
+
+ // 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_select_page(addr, IS31FL3731_COMMAND_FRAME_1);
+}
+
+void is31fl3731_set_value(int index, uint8_t value) {
+ is31fl3731_led_t led;
+
+ if (index >= 0 && index < IS31FL3731_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void is31fl3731_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3731_LED_COUNT; i++) {
+ is31fl3731_set_value(i, value);
+ }
+}
+
+void is31fl3731_set_led_control_register(uint8_t index, bool value) {
+ is31fl3731_led_t led;
+ memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3731_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ for (uint8_t i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+
+ g_led_control_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3731_flush(void) {
+ is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3731_I2C_ADDRESS_2)
+ is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3731_I2C_ADDRESS_3)
+ is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3731_I2C_ADDRESS_4)
+ is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3731-mono.h b/drivers/led/issi/is31fl3731-mono.h
new file mode 100644
index 0000000000..1b205e0115
--- /dev/null
+++ b/drivers/led/issi/is31fl3731-mono.h
@@ -0,0 +1,286 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2019 Clueboard
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef LED_DRIVER_ADDR_1
+# define IS31FL3731_I2C_ADDRESS_1 LED_DRIVER_ADDR_1
+#endif
+#ifdef LED_DRIVER_ADDR_2
+# define IS31FL3731_I2C_ADDRESS_2 LED_DRIVER_ADDR_2
+#endif
+#ifdef LED_DRIVER_ADDR_3
+# define IS31FL3731_I2C_ADDRESS_3 LED_DRIVER_ADDR_3
+#endif
+#ifdef LED_DRIVER_ADDR_4
+# define IS31FL3731_I2C_ADDRESS_4 LED_DRIVER_ADDR_4
+#endif
+#ifdef ISSI_TIMEOUT
+# define IS31FL3731_I2C_TIMEOUT ISSI_TIMEOUT
+#endif
+#ifdef ISSI_PERSISTENCE
+# define IS31FL3731_I2C_PERSISTENCE ISSI_PERSISTENCE
+#endif
+#ifdef ISSI_3731_DEGHOST
+# define IS31FL3731_DEGHOST ISSI_3731_DEGHOST
+#endif
+
+#define is31_led is31fl3731_led_t
+#define g_is31_leds g_is31fl3731_leds
+// ========
+
+#define IS31FL3731_REG_COMMAND 0xFD
+#define IS31FL3731_COMMAND_FRAME_1 0x00
+#define IS31FL3731_COMMAND_FRAME_2 0x01
+#define IS31FL3731_COMMAND_FRAME_3 0x02
+#define IS31FL3731_COMMAND_FRAME_4 0x03
+#define IS31FL3731_COMMAND_FRAME_5 0x04
+#define IS31FL3731_COMMAND_FRAME_6 0x05
+#define IS31FL3731_COMMAND_FRAME_7 0x06
+#define IS31FL3731_COMMAND_FRAME_8 0x07
+#define IS31FL3731_COMMAND_FUNCTION 0x0B
+
+#define IS31FL3731_FRAME_REG_LED_CONTROL 0x00
+#define IS31FL3731_FRAME_REG_BLINK_CONTROL 0x12
+#define IS31FL3731_FRAME_REG_PWM 0x24
+
+#define IS31FL3731_FUNCTION_REG_CONFIG 0x00
+#define IS31FL3731_CONFIG_MODE_PICTURE 0x00
+#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08
+#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18
+
+#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01
+#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06
+#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A
+
+// Not defined in the datasheet -- See AN for IC
+#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2
+#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10
+
+#define IS31FL3731_I2C_ADDRESS_GND 0x74
+#define IS31FL3731_I2C_ADDRESS_SCL 0x75
+#define IS31FL3731_I2C_ADDRESS_SDA 0x76
+#define IS31FL3731_I2C_ADDRESS_VCC 0x77
+
+#if defined(LED_MATRIX_IS31FL3731)
+# define IS31FL3731_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined IS31FL3731_I2C_ADDRESS_4
+# define IS31FL3731_DRIVER_COUNT 4
+#elif defined IS31FL3731_I2C_ADDRESS_3
+# define IS31FL3731_DRIVER_COUNT 3
+#elif defined IS31FL3731_I2C_ADDRESS_2
+# define IS31FL3731_DRIVER_COUNT 2
+#elif defined IS31FL3731_I2C_ADDRESS_1
+# define IS31FL3731_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3731_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3731_led_t;
+
+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_set_value(int index, uint8_t value);
+void is31fl3731_set_value_all(uint8_t value);
+
+void is31fl3731_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void is31fl3731_flush(void);
+
+#define C1_1 0x00
+#define C1_2 0x01
+#define C1_3 0x02
+#define C1_4 0x03
+#define C1_5 0x04
+#define C1_6 0x05
+#define C1_7 0x06
+#define C1_8 0x07
+
+#define C1_9 0x08
+#define C1_10 0x09
+#define C1_11 0x0A
+#define C1_12 0x0B
+#define C1_13 0x0C
+#define C1_14 0x0D
+#define C1_15 0x0E
+#define C1_16 0x0F
+
+#define C2_1 0x10
+#define C2_2 0x11
+#define C2_3 0x12
+#define C2_4 0x13
+#define C2_5 0x14
+#define C2_6 0x15
+#define C2_7 0x16
+#define C2_8 0x17
+
+#define C2_9 0x18
+#define C2_10 0x19
+#define C2_11 0x1A
+#define C2_12 0x1B
+#define C2_13 0x1C
+#define C2_14 0x1D
+#define C2_15 0x1E
+#define C2_16 0x1F
+
+#define C3_1 0x20
+#define C3_2 0x21
+#define C3_3 0x22
+#define C3_4 0x23
+#define C3_5 0x24
+#define C3_6 0x25
+#define C3_7 0x26
+#define C3_8 0x27
+
+#define C3_9 0x28
+#define C3_10 0x29
+#define C3_11 0x2A
+#define C3_12 0x2B
+#define C3_13 0x2C
+#define C3_14 0x2D
+#define C3_15 0x2E
+#define C3_16 0x2F
+
+#define C4_1 0x30
+#define C4_2 0x31
+#define C4_3 0x32
+#define C4_4 0x33
+#define C4_5 0x34
+#define C4_6 0x35
+#define C4_7 0x36
+#define C4_8 0x37
+
+#define C4_9 0x38
+#define C4_10 0x39
+#define C4_11 0x3A
+#define C4_12 0x3B
+#define C4_13 0x3C
+#define C4_14 0x3D
+#define C4_15 0x3E
+#define C4_16 0x3F
+
+#define C5_1 0x40
+#define C5_2 0x41
+#define C5_3 0x42
+#define C5_4 0x43
+#define C5_5 0x44
+#define C5_6 0x45
+#define C5_7 0x46
+#define C5_8 0x47
+
+#define C5_9 0x48
+#define C5_10 0x49
+#define C5_11 0x4A
+#define C5_12 0x4B
+#define C5_13 0x4C
+#define C5_14 0x4D
+#define C5_15 0x4E
+#define C5_16 0x4F
+
+#define C6_1 0x50
+#define C6_2 0x51
+#define C6_3 0x52
+#define C6_4 0x53
+#define C6_5 0x54
+#define C6_6 0x55
+#define C6_7 0x56
+#define C6_8 0x57
+
+#define C6_9 0x58
+#define C6_10 0x59
+#define C6_11 0x5A
+#define C6_12 0x5B
+#define C6_13 0x5C
+#define C6_14 0x5D
+#define C6_15 0x5E
+#define C6_16 0x5F
+
+#define C7_1 0x60
+#define C7_2 0x61
+#define C7_3 0x62
+#define C7_4 0x63
+#define C7_5 0x64
+#define C7_6 0x65
+#define C7_7 0x66
+#define C7_8 0x67
+
+#define C7_9 0x68
+#define C7_10 0x69
+#define C7_11 0x6A
+#define C7_12 0x6B
+#define C7_13 0x6C
+#define C7_14 0x6D
+#define C7_15 0x6E
+#define C7_16 0x6F
+
+#define C8_1 0x70
+#define C8_2 0x71
+#define C8_3 0x72
+#define C8_4 0x73
+#define C8_5 0x74
+#define C8_6 0x75
+#define C8_7 0x76
+#define C8_8 0x77
+
+#define C8_9 0x78
+#define C8_10 0x79
+#define C8_11 0x7A
+#define C8_12 0x7B
+#define C8_13 0x7C
+#define C8_14 0x7D
+#define C8_15 0x7E
+#define C8_16 0x7F
+
+#define C9_1 0x80
+#define C9_2 0x81
+#define C9_3 0x82
+#define C9_4 0x83
+#define C9_5 0x84
+#define C9_6 0x85
+#define C9_7 0x86
+#define C9_8 0x87
+
+#define C9_9 0x88
+#define C9_10 0x89
+#define C9_11 0x8A
+#define C9_12 0x8B
+#define C9_13 0x8C
+#define C9_14 0x8D
+#define C9_15 0x8E
+#define C9_16 0x8F
diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c
deleted file mode 100644
index 8dbfc3cd31..0000000000
--- a/drivers/led/issi/is31fl3731-simple.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2019 Clueboard
- * Copyright 2021 Doni Crosby
- *
- * 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 "is31fl3731-simple.h"
-#include <string.h>
-#include "i2c_master.h"
-#include "wait.h"
-
-#define IS31FL3731_PWM_REGISTER_COUNT 144
-#define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18
-
-#ifndef IS31FL3731_I2C_TIMEOUT
-# define IS31FL3731_I2C_TIMEOUT 100
-#endif
-
-#ifndef IS31FL3731_I2C_PERSISTENCE
-# define IS31FL3731_I2C_PERSISTENCE 0
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
-// These buffers match the IS31FL3731 PWM registers 0x24-0xB3.
-// 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 is31fl3731_write_pwm_buffer() but it's
-// probably not worth the extra complexity.
-uint8_t g_pwm_buffer[IS31FL3731_DRIVER_COUNT][IS31FL3731_PWM_REGISTER_COUNT];
-bool g_pwm_buffer_update_required[IS31FL3731_DRIVER_COUNT] = {false};
-
-uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_REGISTER_COUNT] = {0};
-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;
-
-#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;
- }
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT);
-#endif
-}
-
-void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes bank is already selected
-
- // transmit PWM registers in 9 transfers of 16 bytes
- // g_twi_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;
- // 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);
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT);
-#endif
- }
-}
-
-void is31fl3731_init_drivers(void) {
- i2c_init();
-
- is31fl3731_init(IS31FL3731_I2C_ADDRESS_1);
-#if defined(IS31FL3731_I2C_ADDRESS_2)
- is31fl3731_init(IS31FL3731_I2C_ADDRESS_2);
-# if defined(IS31FL3731_I2C_ADDRESS_3)
- is31fl3731_init(IS31FL3731_I2C_ADDRESS_3);
-# if defined(IS31FL3731_I2C_ADDRESS_4)
- is31fl3731_init(IS31FL3731_I2C_ADDRESS_4);
-# endif
-# endif
-#endif
-
- for (int i = 0; i < IS31FL3731_LED_COUNT; i++) {
- is31fl3731_set_led_control_register(i, true);
- }
-
- is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3731_I2C_ADDRESS_2)
- is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3731_I2C_ADDRESS_3)
- is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3731_I2C_ADDRESS_4)
- is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void is31fl3731_init(uint8_t addr) {
- // In order to avoid the LEDs being driven with garbage data
- // in the LED driver's PWM registers, first enable software shutdown,
- // 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);
-
- // enable software shutdown
- is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00);
-#ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array
- is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN);
-#endif
-
- // this delay was copied from other drivers, might not be needed
- wait_ms(10);
-
- // picture mode
- is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE);
- // display frame 0
- is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00);
- // 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);
-
- // turn off all LEDs in the LED control register
- for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3731_write_register(addr, i, 0x00);
- }
-
- // turn off all LEDs in the blink control register (not really needed)
- for (int i = 0x12; i <= 0x23; i++) {
- is31fl3731_write_register(addr, i, 0x00);
- }
-
- // set PWM on all LEDs to 0
- for (int i = 0x24; i <= 0xB3; i++) {
- is31fl3731_write_register(addr, i, 0x00);
- }
-
- // select "function register" bank
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, 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
- // as there's not much point in double-buffering
- is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1);
-}
-
-void is31fl3731_set_value(int index, uint8_t value) {
- is31fl3731_led_t led;
- if (index >= 0 && index < IS31FL3731_LED_COUNT) {
- memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led));
-
- // Subtract 0x24 to get the second index of g_pwm_buffer
-
- if (g_pwm_buffer[led.driver][led.v - 0x24] == value) {
- return;
- }
- g_pwm_buffer[led.driver][led.v - 0x24] = value;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void is31fl3731_set_value_all(uint8_t value) {
- for (int i = 0; i < IS31FL3731_LED_COUNT; i++) {
- is31fl3731_set_value(i, value);
- }
-}
-
-void is31fl3731_set_led_control_register(uint8_t index, bool value) {
- is31fl3731_led_t led;
- memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led));
-
- uint8_t control_register = (led.v - 0x24) / 8;
- uint8_t bit_value = (led.v - 0x24) % 8;
-
- if (value) {
- g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
- } else {
- g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
- }
-
- g_led_control_registers_update_required[led.driver] = true;
-}
-
-void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) {
- if (g_pwm_buffer_update_required[index]) {
- is31fl3731_write_pwm_buffer(addr, g_pwm_buffer[index]);
- g_pwm_buffer_update_required[index] = false;
- }
-}
-
-void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
- if (g_led_control_registers_update_required[index]) {
- for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3731_write_register(addr, i, g_led_control_registers[index][i]);
- }
- g_led_control_registers_update_required[index] = false;
- }
-}
-
-void is31fl3731_flush(void) {
- is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3731_I2C_ADDRESS_2)
- is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3731_I2C_ADDRESS_3)
- is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3731_I2C_ADDRESS_4)
- is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h
deleted file mode 100644
index 4d173847dd..0000000000
--- a/drivers/led/issi/is31fl3731-simple.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2019 Clueboard
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// ======== DEPRECATED DEFINES - DO NOT USE ========
-#ifdef LED_DRIVER_ADDR_1
-# define IS31FL3731_I2C_ADDRESS_1 LED_DRIVER_ADDR_1
-#endif
-#ifdef LED_DRIVER_ADDR_2
-# define IS31FL3731_I2C_ADDRESS_2 LED_DRIVER_ADDR_2
-#endif
-#ifdef LED_DRIVER_ADDR_3
-# define IS31FL3731_I2C_ADDRESS_3 LED_DRIVER_ADDR_3
-#endif
-#ifdef LED_DRIVER_ADDR_4
-# define IS31FL3731_I2C_ADDRESS_4 LED_DRIVER_ADDR_4
-#endif
-#ifdef ISSI_TIMEOUT
-# define IS31FL3731_I2C_TIMEOUT ISSI_TIMEOUT
-#endif
-#ifdef ISSI_PERSISTENCE
-# define IS31FL3731_I2C_PERSISTENCE ISSI_PERSISTENCE
-#endif
-#ifdef ISSI_3731_DEGHOST
-# define IS31FL3731_DEGHOST ISSI_3731_DEGHOST
-#endif
-
-#define is31_led is31fl3731_led_t
-#define g_is31_leds g_is31fl3731_leds
-// ========
-
-#define IS31FL3731_REG_COMMAND 0xFD
-#define IS31FL3731_COMMAND_FRAME_1 0x00
-#define IS31FL3731_COMMAND_FRAME_2 0x01
-#define IS31FL3731_COMMAND_FRAME_3 0x02
-#define IS31FL3731_COMMAND_FRAME_4 0x03
-#define IS31FL3731_COMMAND_FRAME_5 0x04
-#define IS31FL3731_COMMAND_FRAME_6 0x05
-#define IS31FL3731_COMMAND_FRAME_7 0x06
-#define IS31FL3731_COMMAND_FRAME_8 0x07
-#define IS31FL3731_COMMAND_FUNCTION 0x0B
-
-#define IS31FL3731_FUNCTION_REG_CONFIG 0x00
-#define IS31FL3731_CONFIG_MODE_PICTURE 0x00
-#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08
-#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18
-
-#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01
-#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06
-#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A
-
-// Not defined in the datasheet -- See AN for IC
-#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2
-#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10
-
-#define IS31FL3731_I2C_ADDRESS_GND 0x74
-#define IS31FL3731_I2C_ADDRESS_SCL 0x75
-#define IS31FL3731_I2C_ADDRESS_SDA 0x76
-#define IS31FL3731_I2C_ADDRESS_VCC 0x77
-
-#if defined(LED_MATRIX_IS31FL3731)
-# define IS31FL3731_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-#if defined IS31FL3731_I2C_ADDRESS_4
-# define IS31FL3731_DRIVER_COUNT 4
-#elif defined IS31FL3731_I2C_ADDRESS_3
-# define IS31FL3731_DRIVER_COUNT 3
-#elif defined IS31FL3731_I2C_ADDRESS_2
-# define IS31FL3731_DRIVER_COUNT 2
-#elif defined IS31FL3731_I2C_ADDRESS_1
-# define IS31FL3731_DRIVER_COUNT 1
-#endif
-
-typedef struct is31fl3731_led_t {
- uint8_t driver : 2;
- uint8_t v;
-} PACKED is31fl3731_led_t;
-
-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_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
-
-void is31fl3731_set_value(int index, uint8_t value);
-void is31fl3731_set_value_all(uint8_t value);
-
-void is31fl3731_set_led_control_register(uint8_t index, bool value);
-
-// This should not be called from an interrupt
-// (eg. from a timer interrupt).
-// Call this while idle (in between matrix scans).
-// If the buffer is dirty, it will update the driver with the buffer.
-void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index);
-void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);
-
-void is31fl3731_flush(void);
-
-#define C1_1 0x24
-#define C1_2 0x25
-#define C1_3 0x26
-#define C1_4 0x27
-#define C1_5 0x28
-#define C1_6 0x29
-#define C1_7 0x2A
-#define C1_8 0x2B
-
-#define C1_9 0x2C
-#define C1_10 0x2D
-#define C1_11 0x2E
-#define C1_12 0x2F
-#define C1_13 0x30
-#define C1_14 0x31
-#define C1_15 0x32
-#define C1_16 0x33
-
-#define C2_1 0x34
-#define C2_2 0x35
-#define C2_3 0x36
-#define C2_4 0x37
-#define C2_5 0x38
-#define C2_6 0x39
-#define C2_7 0x3A
-#define C2_8 0x3B
-
-#define C2_9 0x3C
-#define C2_10 0x3D
-#define C2_11 0x3E
-#define C2_12 0x3F
-#define C2_13 0x40
-#define C2_14 0x41
-#define C2_15 0x42
-#define C2_16 0x43
-
-#define C3_1 0x44
-#define C3_2 0x45
-#define C3_3 0x46
-#define C3_4 0x47
-#define C3_5 0x48
-#define C3_6 0x49
-#define C3_7 0x4A
-#define C3_8 0x4B
-
-#define C3_9 0x4C
-#define C3_10 0x4D
-#define C3_11 0x4E
-#define C3_12 0x4F
-#define C3_13 0x50
-#define C3_14 0x51
-#define C3_15 0x52
-#define C3_16 0x53
-
-#define C4_1 0x54
-#define C4_2 0x55
-#define C4_3 0x56
-#define C4_4 0x57
-#define C4_5 0x58
-#define C4_6 0x59
-#define C4_7 0x5A
-#define C4_8 0x5B
-
-#define C4_9 0x5C
-#define C4_10 0x5D
-#define C4_11 0x5E
-#define C4_12 0x5F
-#define C4_13 0x60
-#define C4_14 0x61
-#define C4_15 0x62
-#define C4_16 0x63
-
-#define C5_1 0x64
-#define C5_2 0x65
-#define C5_3 0x66
-#define C5_4 0x67
-#define C5_5 0x68
-#define C5_6 0x69
-#define C5_7 0x6A
-#define C5_8 0x6B
-
-#define C5_9 0x6C
-#define C5_10 0x6D
-#define C5_11 0x6E
-#define C5_12 0x6F
-#define C5_13 0x70
-#define C5_14 0x71
-#define C5_15 0x72
-#define C5_16 0x73
-
-#define C6_1 0x74
-#define C6_2 0x75
-#define C6_3 0x76
-#define C6_4 0x77
-#define C6_5 0x78
-#define C6_6 0x79
-#define C6_7 0x7A
-#define C6_8 0x7B
-
-#define C6_9 0x7C
-#define C6_10 0x7D
-#define C6_11 0x7E
-#define C6_12 0x7F
-#define C6_13 0x80
-#define C6_14 0x81
-#define C6_15 0x82
-#define C6_16 0x83
-
-#define C7_1 0x84
-#define C7_2 0x85
-#define C7_3 0x86
-#define C7_4 0x87
-#define C7_5 0x88
-#define C7_6 0x89
-#define C7_7 0x8A
-#define C7_8 0x8B
-
-#define C7_9 0x8C
-#define C7_10 0x8D
-#define C7_11 0x8E
-#define C7_12 0x8F
-#define C7_13 0x90
-#define C7_14 0x91
-#define C7_15 0x92
-#define C7_16 0x93
-
-#define C8_1 0x94
-#define C8_2 0x95
-#define C8_3 0x96
-#define C8_4 0x97
-#define C8_5 0x98
-#define C8_6 0x99
-#define C8_7 0x9A
-#define C8_8 0x9B
-
-#define C8_9 0x9C
-#define C8_10 0x9D
-#define C8_11 0x9E
-#define C8_12 0x9F
-#define C8_13 0xA0
-#define C8_14 0xA1
-#define C8_15 0xA2
-#define C8_16 0xA3
-
-#define C9_1 0xA4
-#define C9_2 0xA5
-#define C9_3 0xA6
-#define C9_4 0xA7
-#define C9_5 0xA8
-#define C9_6 0xA9
-#define C9_7 0xAA
-#define C9_8 0xAB
-
-#define C9_9 0xAC
-#define C9_10 0xAD
-#define C9_11 0xAE
-#define C9_12 0xAF
-#define C9_13 0xB0
-#define C9_14 0xB1
-#define C9_15 0xB2
-#define C9_16 0xB3
diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c
index 1ab8997731..07f8194c0b 100644
--- a/drivers/led/issi/is31fl3731.c
+++ b/drivers/led/issi/is31fl3731.c
@@ -17,7 +17,6 @@
*/
#include "is31fl3731.h"
-#include <string.h>
#include "i2c_master.h"
#include "wait.h"
@@ -32,9 +31,6 @@
# define IS31FL3731_I2C_PERSISTENCE 0
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
// These buffers match the IS31FL3731 PWM registers 0x24-0xB3.
// Storing them like this is optimal for I2C transfers to the registers.
// We could optimize this and take out the unused registers from these
@@ -47,39 +43,31 @@ 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;
-
#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_write_register(addr << 1, reg, &data, 1, IS31FL3731_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3731_I2C_TIMEOUT);
#endif
}
-void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes bank is already selected
-
- // transmit PWM registers in 9 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+void is31fl3731_select_page(uint8_t addr, uint8_t page) {
+ is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, page);
+}
- // 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;
- // 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);
+void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 9 transfers of 16 bytes.
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; 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;
+ for (uint8_t j = 0; j < IS31FL3731_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, IS31FL3731_FRAME_REG_PWM + i, g_pwm_buffer[index] + i, 16, IS31FL3731_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, IS31FL3731_FRAME_REG_PWM + i, g_pwm_buffer[index] + i, 16, IS31FL3731_I2C_TIMEOUT);
#endif
}
}
@@ -120,8 +108,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,48 +126,47 @@ 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++) {
- is31fl3731_write_register(addr, i, 0x00);
+ for (uint8_t i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, IS31FL3731_FRAME_REG_LED_CONTROL + i, 0x00);
}
// turn off all LEDs in the blink control register (not really needed)
- for (int i = 0x12; i <= 0x23; i++) {
- is31fl3731_write_register(addr, i, 0x00);
+ for (uint8_t i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, IS31FL3731_FRAME_REG_BLINK_CONTROL + i, 0x00);
}
// set PWM on all LEDs to 0
- for (int i = 0x24; i <= 0xB3; i++) {
- is31fl3731_write_register(addr, i, 0x00);
+ for (uint8_t i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i++) {
+ is31fl3731_write_register(addr, IS31FL3731_FRAME_REG_PWM + 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) {
is31fl3731_led_t led;
+
if (index >= 0 && index < IS31FL3731_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led));
- // Subtract 0x24 to get the second index of g_pwm_buffer
- if (g_pwm_buffer[led.driver][led.r - 0x24] == red && g_pwm_buffer[led.driver][led.g - 0x24] == green && g_pwm_buffer[led.driver][led.b - 0x24] == blue) {
+ if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
- g_pwm_buffer[led.driver][led.r - 0x24] = red;
- g_pwm_buffer[led.driver][led.g - 0x24] = green;
- g_pwm_buffer[led.driver][led.b - 0x24] = blue;
+
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
g_pwm_buffer_update_required[led.driver] = true;
}
}
@@ -195,12 +181,12 @@ void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bo
is31fl3731_led_t led;
memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led));
- uint8_t control_register_r = (led.r - 0x24) / 8;
- uint8_t control_register_g = (led.g - 0x24) / 8;
- uint8_t control_register_b = (led.b - 0x24) / 8;
- uint8_t bit_r = (led.r - 0x24) % 8;
- uint8_t bit_g = (led.g - 0x24) % 8;
- uint8_t bit_b = (led.b - 0x24) % 8;
+ uint8_t control_register_r = led.r / 8;
+ uint8_t control_register_g = led.g / 8;
+ uint8_t control_register_b = led.b / 8;
+ uint8_t bit_r = led.r % 8;
+ uint8_t bit_g = led.g % 8;
+ uint8_t bit_b = led.b % 8;
if (red) {
g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r);
@@ -223,18 +209,20 @@ void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) {
if (g_pwm_buffer_update_required[index]) {
- is31fl3731_write_pwm_buffer(addr, g_pwm_buffer[index]);
+ is31fl3731_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
}
- g_pwm_buffer_update_required[index] = false;
}
void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
if (g_led_control_registers_update_required[index]) {
- for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
+ for (uint8_t i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3731_write_register(addr, i, g_led_control_registers[index][i]);
}
+
+ g_led_control_registers_update_required[index] = false;
}
- g_led_control_registers_update_required[index] = false;
}
void is31fl3731_flush(void) {
diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h
index b45cb2b07d..71cf38db4d 100644
--- a/drivers/led/issi/is31fl3731.h
+++ b/drivers/led/issi/is31fl3731.h
@@ -60,6 +60,10 @@
#define IS31FL3731_COMMAND_FRAME_8 0x07
#define IS31FL3731_COMMAND_FUNCTION 0x0B
+#define IS31FL3731_FRAME_REG_LED_CONTROL 0x00
+#define IS31FL3731_FRAME_REG_BLINK_CONTROL 0x12
+#define IS31FL3731_FRAME_REG_PWM 0x24
+
#define IS31FL3731_FUNCTION_REG_CONFIG 0x00
#define IS31FL3731_CONFIG_MODE_PICTURE 0x00
#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08
@@ -104,7 +108,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_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+void is31fl3731_select_page(uint8_t addr, uint8_t page);
void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
@@ -120,164 +124,164 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);
void is31fl3731_flush(void);
-#define C1_1 0x24
-#define C1_2 0x25
-#define C1_3 0x26
-#define C1_4 0x27
-#define C1_5 0x28
-#define C1_6 0x29
-#define C1_7 0x2A
-#define C1_8 0x2B
-
-#define C1_9 0x2C
-#define C1_10 0x2D
-#define C1_11 0x2E
-#define C1_12 0x2F
-#define C1_13 0x30
-#define C1_14 0x31
-#define C1_15 0x32
-#define C1_16 0x33
-
-#define C2_1 0x34
-#define C2_2 0x35
-#define C2_3 0x36
-#define C2_4 0x37
-#define C2_5 0x38
-#define C2_6 0x39
-#define C2_7 0x3A
-#define C2_8 0x3B
-
-#define C2_9 0x3C
-#define C2_10 0x3D
-#define C2_11 0x3E
-#define C2_12 0x3F
-#define C2_13 0x40
-#define C2_14 0x41
-#define C2_15 0x42
-#define C2_16 0x43
-
-#define C3_1 0x44
-#define C3_2 0x45
-#define C3_3 0x46
-#define C3_4 0x47
-#define C3_5 0x48
-#define C3_6 0x49
-#define C3_7 0x4A
-#define C3_8 0x4B
-
-#define C3_9 0x4C
-#define C3_10 0x4D
-#define C3_11 0x4E
-#define C3_12 0x4F
-#define C3_13 0x50
-#define C3_14 0x51
-#define C3_15 0x52
-#define C3_16 0x53
-
-#define C4_1 0x54
-#define C4_2 0x55
-#define C4_3 0x56
-#define C4_4 0x57
-#define C4_5 0x58
-#define C4_6 0x59
-#define C4_7 0x5A
-#define C4_8 0x5B
-
-#define C4_9 0x5C
-#define C4_10 0x5D
-#define C4_11 0x5E
-#define C4_12 0x5F
-#define C4_13 0x60
-#define C4_14 0x61
-#define C4_15 0x62
-#define C4_16 0x63
-
-#define C5_1 0x64
-#define C5_2 0x65
-#define C5_3 0x66
-#define C5_4 0x67
-#define C5_5 0x68
-#define C5_6 0x69
-#define C5_7 0x6A
-#define C5_8 0x6B
-
-#define C5_9 0x6C
-#define C5_10 0x6D
-#define C5_11 0x6E
-#define C5_12 0x6F
-#define C5_13 0x70
-#define C5_14 0x71
-#define C5_15 0x72
-#define C5_16 0x73
-
-#define C6_1 0x74
-#define C6_2 0x75
-#define C6_3 0x76
-#define C6_4 0x77
-#define C6_5 0x78
-#define C6_6 0x79
-#define C6_7 0x7A
-#define C6_8 0x7B
-
-#define C6_9 0x7C
-#define C6_10 0x7D
-#define C6_11 0x7E
-#define C6_12 0x7F
-#define C6_13 0x80
-#define C6_14 0x81
-#define C6_15 0x82
-#define C6_16 0x83
-
-#define C7_1 0x84
-#define C7_2 0x85
-#define C7_3 0x86
-#define C7_4 0x87
-#define C7_5 0x88
-#define C7_6 0x89
-#define C7_7 0x8A
-#define C7_8 0x8B
-
-#define C7_9 0x8C
-#define C7_10 0x8D
-#define C7_11 0x8E
-#define C7_12 0x8F
-#define C7_13 0x90
-#define C7_14 0x91
-#define C7_15 0x92
-#define C7_16 0x93
-
-#define C8_1 0x94
-#define C8_2 0x95
-#define C8_3 0x96
-#define C8_4 0x97
-#define C8_5 0x98
-#define C8_6 0x99
-#define C8_7 0x9A
-#define C8_8 0x9B
-
-#define C8_9 0x9C
-#define C8_10 0x9D
-#define C8_11 0x9E
-#define C8_12 0x9F
-#define C8_13 0xA0
-#define C8_14 0xA1
-#define C8_15 0xA2
-#define C8_16 0xA3
-
-#define C9_1 0xA4
-#define C9_2 0xA5
-#define C9_3 0xA6
-#define C9_4 0xA7
-#define C9_5 0xA8
-#define C9_6 0xA9
-#define C9_7 0xAA
-#define C9_8 0xAB
-
-#define C9_9 0xAC
-#define C9_10 0xAD
-#define C9_11 0xAE
-#define C9_12 0xAF
-#define C9_13 0xB0
-#define C9_14 0xB1
-#define C9_15 0xB2
-#define C9_16 0xB3
+#define C1_1 0x00
+#define C1_2 0x01
+#define C1_3 0x02
+#define C1_4 0x03
+#define C1_5 0x04
+#define C1_6 0x05
+#define C1_7 0x06
+#define C1_8 0x07
+
+#define C1_9 0x08
+#define C1_10 0x09
+#define C1_11 0x0A
+#define C1_12 0x0B
+#define C1_13 0x0C
+#define C1_14 0x0D
+#define C1_15 0x0E
+#define C1_16 0x0F
+
+#define C2_1 0x10
+#define C2_2 0x11
+#define C2_3 0x12
+#define C2_4 0x13
+#define C2_5 0x14
+#define C2_6 0x15
+#define C2_7 0x16
+#define C2_8 0x17
+
+#define C2_9 0x18
+#define C2_10 0x19
+#define C2_11 0x1A
+#define C2_12 0x1B
+#define C2_13 0x1C
+#define C2_14 0x1D
+#define C2_15 0x1E
+#define C2_16 0x1F
+
+#define C3_1 0x20
+#define C3_2 0x21
+#define C3_3 0x22
+#define C3_4 0x23
+#define C3_5 0x24
+#define C3_6 0x25
+#define C3_7 0x26
+#define C3_8 0x27
+
+#define C3_9 0x28
+#define C3_10 0x29
+#define C3_11 0x2A
+#define C3_12 0x2B
+#define C3_13 0x2C
+#define C3_14 0x2D
+#define C3_15 0x2E
+#define C3_16 0x2F
+
+#define C4_1 0x30
+#define C4_2 0x31
+#define C4_3 0x32
+#define C4_4 0x33
+#define C4_5 0x34
+#define C4_6 0x35
+#define C4_7 0x36
+#define C4_8 0x37
+
+#define C4_9 0x38
+#define C4_10 0x39
+#define C4_11 0x3A
+#define C4_12 0x3B
+#define C4_13 0x3C
+#define C4_14 0x3D
+#define C4_15 0x3E
+#define C4_16 0x3F
+
+#define C5_1 0x40
+#define C5_2 0x41
+#define C5_3 0x42
+#define C5_4 0x43
+#define C5_5 0x44
+#define C5_6 0x45
+#define C5_7 0x46
+#define C5_8 0x47
+
+#define C5_9 0x48
+#define C5_10 0x49
+#define C5_11 0x4A
+#define C5_12 0x4B
+#define C5_13 0x4C
+#define C5_14 0x4D
+#define C5_15 0x4E
+#define C5_16 0x4F
+
+#define C6_1 0x50
+#define C6_2 0x51
+#define C6_3 0x52
+#define C6_4 0x53
+#define C6_5 0x54
+#define C6_6 0x55
+#define C6_7 0x56
+#define C6_8 0x57
+
+#define C6_9 0x58
+#define C6_10 0x59
+#define C6_11 0x5A
+#define C6_12 0x5B
+#define C6_13 0x5C
+#define C6_14 0x5D
+#define C6_15 0x5E
+#define C6_16 0x5F
+
+#define C7_1 0x60
+#define C7_2 0x61
+#define C7_3 0x62
+#define C7_4 0x63
+#define C7_5 0x64
+#define C7_6 0x65
+#define C7_7 0x66
+#define C7_8 0x67
+
+#define C7_9 0x68
+#define C7_10 0x69
+#define C7_11 0x6A
+#define C7_12 0x6B
+#define C7_13 0x6C
+#define C7_14 0x6D
+#define C7_15 0x6E
+#define C7_16 0x6F
+
+#define C8_1 0x70
+#define C8_2 0x71
+#define C8_3 0x72
+#define C8_4 0x73
+#define C8_5 0x74
+#define C8_6 0x75
+#define C8_7 0x76
+#define C8_8 0x77
+
+#define C8_9 0x78
+#define C8_10 0x79
+#define C8_11 0x7A
+#define C8_12 0x7B
+#define C8_13 0x7C
+#define C8_14 0x7D
+#define C8_15 0x7E
+#define C8_16 0x7F
+
+#define C9_1 0x80
+#define C9_2 0x81
+#define C9_3 0x82
+#define C9_4 0x83
+#define C9_5 0x84
+#define C9_6 0x85
+#define C9_7 0x86
+#define C9_8 0x87
+
+#define C9_9 0x88
+#define C9_10 0x89
+#define C9_11 0x8A
+#define C9_12 0x8B
+#define C9_13 0x8C
+#define C9_14 0x8D
+#define C9_15 0x8E
+#define C9_16 0x8F
diff --git a/drivers/led/issi/is31fl3733-mono.c b/drivers/led/issi/is31fl3733-mono.c
new file mode 100644
index 0000000000..fe8419e2bc
--- /dev/null
+++ b/drivers/led/issi/is31fl3733-mono.c
@@ -0,0 +1,245 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
+ * Copyright 2021 Leo Deng
+ *
+ * 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 "is31fl3733-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3733_PWM_REGISTER_COUNT 192
+#define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24
+
+#ifndef IS31FL3733_I2C_TIMEOUT
+# define IS31FL3733_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3733_I2C_PERSISTENCE
+# define IS31FL3733_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3733_PWM_FREQUENCY
+# define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3733B only
+#endif
+
+#ifndef IS31FL3733_SW_PULLUP
+# define IS31FL3733_SW_PULLUP IS31FL3733_PUR_0_OHM
+#endif
+
+#ifndef IS31FL3733_CS_PULLDOWN
+# define IS31FL3733_CS_PULLDOWN IS31FL3733_PDR_0_OHM
+#endif
+
+#ifndef IS31FL3733_GLOBAL_CURRENT
+# define IS31FL3733_GLOBAL_CURRENT 0xFF
+#endif
+
+#ifndef IS31FL3733_SYNC_1
+# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE
+#endif
+#ifndef IS31FL3733_SYNC_2
+# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE
+#endif
+#ifndef IS31FL3733_SYNC_3
+# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE
+#endif
+#ifndef IS31FL3733_SYNC_4
+# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
+#endif
+
+// These buffers match the IS31FL3733 PWM 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
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[IS31FL3733_DRIVER_COUNT][IS31FL3733_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3733_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[IS31FL3733_DRIVER_COUNT][IS31FL3733_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] = {false};
+
+void is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3733_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3733_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3733_I2C_TIMEOUT);
+#endif
+}
+
+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);
+}
+
+void is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 1 is already selected.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) {
+#if IS31FL3733_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3733_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3733_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3733_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3733_init_drivers(void) {
+ i2c_init();
+
+ is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1);
+#if defined(IS31FL3733_I2C_ADDRESS_2)
+ is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2);
+# if defined(IS31FL3733_I2C_ADDRESS_3)
+ is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3);
+# if defined(IS31FL3733_I2C_ADDRESS_4)
+ is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3733_LED_COUNT; i++) {
+ is31fl3733_set_led_control_register(i, true);
+ }
+
+ is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3733_I2C_ADDRESS_2)
+ is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3733_I2C_ADDRESS_3)
+ is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3733_I2C_ADDRESS_4)
+ is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3733_init(uint8_t addr, uint8_t sync) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+ // Sync is passed so set it according to the datasheet.
+
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3733_write_register(addr, i, 0x00);
+ }
+
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
+
+ // Set PWM on all LEDs to 0
+ // No need to setup Breath registers to PWM as that is the default.
+ for (uint8_t i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) {
+ is31fl3733_write_register(addr, i, 0x00);
+ }
+
+ is31fl3733_select_page(addr, 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)
+ is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN);
+ // Set global current to maximum.
+ is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT);
+ // Disable software shutdown.
+ is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3733_set_value(int index, uint8_t value) {
+ is31fl3733_led_t led;
+
+ if (index >= 0 && index < IS31FL3733_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void is31fl3733_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3733_LED_COUNT; i++) {
+ is31fl3733_set_value(i, value);
+ }
+}
+
+void is31fl3733_set_led_control_register(uint8_t index, bool value) {
+ is31fl3733_led_t led;
+ memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
+
+ is31fl3733_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3733_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+
+ g_led_control_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3733_flush(void) {
+ is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3733_I2C_ADDRESS_2)
+ is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3733_I2C_ADDRESS_3)
+ is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3733_I2C_ADDRESS_4)
+ is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3733-mono.h b/drivers/led/issi/is31fl3733-mono.h
new file mode 100644
index 0000000000..591fca907a
--- /dev/null
+++ b/drivers/led/issi/is31fl3733-mono.h
@@ -0,0 +1,366 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
+ * Copyright 2021 Leo Deng
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef ISSI_TIMEOUT
+# define IS31FL3733_I2C_TIMEOUT ISSI_TIMEOUT
+#endif
+#ifdef ISSI_PERSISTENCE
+# define IS31FL3733_I2C_PERSISTENCE ISSI_PERSISTENCE
+#endif
+#ifdef ISSI_PWM_FREQUENCY
+# define IS31FL3733_PWM_FREQUENCY ISSI_PWM_FREQUENCY
+#endif
+#ifdef ISSI_SWPULLUP
+# define IS31FL3733_SW_PULLUP ISSI_SWPULLUP
+#endif
+#ifdef ISSI_CSPULLUP
+# define IS31FL3733_CS_PULLDOWN ISSI_CSPULLUP
+#endif
+#ifdef ISSI_GLOBALCURRENT
+# define IS31FL3733_GLOBAL_CURRENT ISSI_GLOBALCURRENT
+#endif
+
+#define is31_led is31fl3733_led_t
+#define g_is31_leds g_is31fl3733_leds
+
+#define PUR_0R IS31FL3733_PUR_0_OHM
+#define PUR_05KR IS31FL3733_PUR_1K_OHM
+#define PUR_3KR IS31FL3733_PUR_2K_OHM
+#define PUR_4KR IS31FL3733_PUR_4K_OHM
+#define PUR_8KR IS31FL3733_PUR_8K_OHM
+#define PUR_16KR IS31FL3733_PUR_16K_OHM
+#define PUR_32KR IS31FL3733_PUR_32K_OHM
+// ========
+
+#define IS31FL3733_REG_INTERRUPT_MASK 0xF0
+#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1
+
+#define IS31FL3733_REG_COMMAND 0xFD
+
+#define IS31FL3733_COMMAND_LED_CONTROL 0x00
+#define IS31FL3733_COMMAND_PWM 0x01
+#define IS31FL3733_COMMAND_AUTO_BREATH 0x02
+#define IS31FL3733_COMMAND_FUNCTION 0x03
+
+#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F
+#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10
+#define IS31FL3733_FUNCTION_REG_RESET 0x11
+
+#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3733_I2C_ADDRESS_GND_GND 0x50
+#define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51
+#define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52
+#define IS31FL3733_I2C_ADDRESS_GND_VCC 0x53
+#define IS31FL3733_I2C_ADDRESS_SCL_GND 0x54
+#define IS31FL3733_I2C_ADDRESS_SCL_SCL 0x55
+#define IS31FL3733_I2C_ADDRESS_SCL_SDA 0x56
+#define IS31FL3733_I2C_ADDRESS_SCL_VCC 0x57
+#define IS31FL3733_I2C_ADDRESS_SDA_GND 0x58
+#define IS31FL3733_I2C_ADDRESS_SDA_SCL 0x59
+#define IS31FL3733_I2C_ADDRESS_SDA_SDA 0x5A
+#define IS31FL3733_I2C_ADDRESS_SDA_VCC 0x5B
+#define IS31FL3733_I2C_ADDRESS_VCC_GND 0x5C
+#define IS31FL3733_I2C_ADDRESS_VCC_SCL 0x5D
+#define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E
+#define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F
+
+#if defined(LED_MATRIX_IS31FL3733)
+# define IS31FL3733_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3733_I2C_ADDRESS_4)
+# define IS31FL3733_DRIVER_COUNT 4
+#elif defined(IS31FL3733_I2C_ADDRESS_3)
+# define IS31FL3733_DRIVER_COUNT 3
+#elif defined(IS31FL3733_I2C_ADDRESS_2)
+# define IS31FL3733_DRIVER_COUNT 2
+#elif defined(IS31FL3733_I2C_ADDRESS_1)
+# define IS31FL3733_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3733_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3733_led_t;
+
+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);
+void is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3733_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3733_set_value(int index, uint8_t value);
+void is31fl3733_set_value_all(uint8_t value);
+
+void is31fl3733_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void is31fl3733_flush(void);
+
+#define IS31FL3733_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3733_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3733_PDR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3733_PDR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3733_PDR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3733_PDR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3733_PDR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3733_PDR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3733_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3733_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3733_PUR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3733_PUR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3733_PUR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3733_PUR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3733_PUR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3733_PUR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3733_PWM_FREQUENCY_8K4_HZ 0b000
+#define IS31FL3733_PWM_FREQUENCY_4K2_HZ 0b001
+#define IS31FL3733_PWM_FREQUENCY_26K7_HZ 0b010
+#define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0b011
+#define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0b100
+
+#define IS31FL3733_SYNC_NONE 0b00
+#define IS31FL3733_SYNC_MASTER 0b01
+#define IS31FL3733_SYNC_SLAVE 0b10
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x06
+#define A_8 0x07
+#define A_9 0x08
+#define A_10 0x09
+#define A_11 0x0A
+#define A_12 0x0B
+#define A_13 0x0C
+#define A_14 0x0D
+#define A_15 0x0E
+#define A_16 0x0F
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x16
+#define B_8 0x17
+#define B_9 0x18
+#define B_10 0x19
+#define B_11 0x1A
+#define B_12 0x1B
+#define B_13 0x1C
+#define B_14 0x1D
+#define B_15 0x1E
+#define B_16 0x1F
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x26
+#define C_8 0x27
+#define C_9 0x28
+#define C_10 0x29
+#define C_11 0x2A
+#define C_12 0x2B
+#define C_13 0x2C
+#define C_14 0x2D
+#define C_15 0x2E
+#define C_16 0x2F
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x36
+#define D_8 0x37
+#define D_9 0x38
+#define D_10 0x39
+#define D_11 0x3A
+#define D_12 0x3B
+#define D_13 0x3C
+#define D_14 0x3D
+#define D_15 0x3E
+#define D_16 0x3F
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x46
+#define E_8 0x47
+#define E_9 0x48
+#define E_10 0x49
+#define E_11 0x4A
+#define E_12 0x4B
+#define E_13 0x4C
+#define E_14 0x4D
+#define E_15 0x4E
+#define E_16 0x4F
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x56
+#define F_8 0x57
+#define F_9 0x58
+#define F_10 0x59
+#define F_11 0x5A
+#define F_12 0x5B
+#define F_13 0x5C
+#define F_14 0x5D
+#define F_15 0x5E
+#define F_16 0x5F
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x66
+#define G_8 0x67
+#define G_9 0x68
+#define G_10 0x69
+#define G_11 0x6A
+#define G_12 0x6B
+#define G_13 0x6C
+#define G_14 0x6D
+#define G_15 0x6E
+#define G_16 0x6F
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x76
+#define H_8 0x77
+#define H_9 0x78
+#define H_10 0x79
+#define H_11 0x7A
+#define H_12 0x7B
+#define H_13 0x7C
+#define H_14 0x7D
+#define H_15 0x7E
+#define H_16 0x7F
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x86
+#define I_8 0x87
+#define I_9 0x88
+#define I_10 0x89
+#define I_11 0x8A
+#define I_12 0x8B
+#define I_13 0x8C
+#define I_14 0x8D
+#define I_15 0x8E
+#define I_16 0x8F
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x96
+#define J_8 0x97
+#define J_9 0x98
+#define J_10 0x99
+#define J_11 0x9A
+#define J_12 0x9B
+#define J_13 0x9C
+#define J_14 0x9D
+#define J_15 0x9E
+#define J_16 0x9F
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA6
+#define K_8 0xA7
+#define K_9 0xA8
+#define K_10 0xA9
+#define K_11 0xAA
+#define K_12 0xAB
+#define K_13 0xAC
+#define K_14 0xAD
+#define K_15 0xAE
+#define K_16 0xAF
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB6
+#define L_8 0xB7
+#define L_9 0xB8
+#define L_10 0xB9
+#define L_11 0xBA
+#define L_12 0xBB
+#define L_13 0xBC
+#define L_14 0xBD
+#define L_15 0xBE
+#define L_16 0xBF
diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c
deleted file mode 100644
index 9f2444c253..0000000000
--- a/drivers/led/issi/is31fl3733-simple.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2021 Doni Crosby
- * Copyright 2021 Leo Deng
- *
- * 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 "is31fl3733-simple.h"
-#include <string.h>
-#include "i2c_master.h"
-#include "wait.h"
-
-#define IS31FL3733_PWM_REGISTER_COUNT 192
-#define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24
-
-#ifndef IS31FL3733_I2C_TIMEOUT
-# define IS31FL3733_I2C_TIMEOUT 100
-#endif
-
-#ifndef IS31FL3733_I2C_PERSISTENCE
-# define IS31FL3733_I2C_PERSISTENCE 0
-#endif
-
-#ifndef IS31FL3733_PWM_FREQUENCY
-# define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3733B only
-#endif
-
-#ifndef IS31FL3733_SW_PULLUP
-# define IS31FL3733_SW_PULLUP IS31FL3733_PUR_0_OHM
-#endif
-
-#ifndef IS31FL3733_CS_PULLDOWN
-# define IS31FL3733_CSPULLDOWN IS31FL3733_PDR_0_OHM
-#endif
-
-#ifndef IS31FL3733_GLOBAL_CURRENT
-# define IS31FL3733_GLOBAL_CURRENT 0xFF
-#endif
-
-#ifndef IS31FL3733_SYNC_1
-# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE
-#endif
-#ifndef IS31FL3733_SYNC_2
-# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE
-#endif
-#ifndef IS31FL3733_SYNC_3
-# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE
-#endif
-#ifndef IS31FL3733_SYNC_4
-# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
-// These buffers match the IS31FL3733 PWM registers.
-// The control buffers match the PG0 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
-// probably not worth the extra complexity.
-uint8_t g_pwm_buffer[IS31FL3733_DRIVER_COUNT][IS31FL3733_PWM_REGISTER_COUNT];
-bool g_pwm_buffer_update_required[IS31FL3733_DRIVER_COUNT] = {false};
-
-uint8_t g_led_control_registers[IS31FL3733_DRIVER_COUNT][IS31FL3733_LED_CONTROL_REGISTER_COUNT] = {0};
-bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] = {false};
-
-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;
-
-#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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
- return false;
- }
-#endif
- return true;
-}
-
-bool is31fl3733_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
-
- // 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;
- // 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);
-
-#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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
- return false;
- }
-#endif
- }
- return true;
-}
-
-void is31fl3733_init_drivers(void) {
- i2c_init();
-
- is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1);
-#if defined(IS31FL3733_I2C_ADDRESS_2)
- is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2);
-# if defined(IS31FL3733_I2C_ADDRESS_3)
- is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3);
-# if defined(IS31FL3733_I2C_ADDRESS_4)
- is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4);
-# endif
-# endif
-#endif
-
- for (int i = 0; i < IS31FL3733_LED_COUNT; i++) {
- is31fl3733_set_led_control_register(i, true);
- }
-
- is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3733_I2C_ADDRESS_2)
- is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3733_I2C_ADDRESS_3)
- is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3733_I2C_ADDRESS_4)
- is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void is31fl3733_init(uint8_t addr, uint8_t sync) {
- // In order to avoid the LEDs being driven with garbage data
- // in the LED driver's PWM registers, shutdown is enabled last.
- // Set up the mode and other settings, clear the PWM registers,
- // 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);
-
- // 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);
-
- // 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);
-
- // 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)
- is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN);
- // Set global current to maximum.
- is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT);
- // Disable software shutdown.
- is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01);
-
- // Wait 10ms to ensure the device has woken up.
- wait_ms(10);
-}
-
-void is31fl3733_set_value(int index, uint8_t value) {
- is31fl3733_led_t led;
- if (index >= 0 && index < IS31FL3733_LED_COUNT) {
- memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led));
-
- if (g_pwm_buffer[led.driver][led.v] == value) {
- return;
- }
- g_pwm_buffer[led.driver][led.v] = value;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void is31fl3733_set_value_all(uint8_t value) {
- for (int i = 0; i < IS31FL3733_LED_COUNT; i++) {
- is31fl3733_set_value(i, value);
- }
-}
-
-void is31fl3733_set_led_control_register(uint8_t index, bool value) {
- is31fl3733_led_t led;
- memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led));
-
- uint8_t control_register = led.v / 8;
- uint8_t bit_value = led.v % 8;
-
- if (value) {
- g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
- } else {
- g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
- }
-
- g_led_control_registers_update_required[led.driver] = true;
-}
-
-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);
-
- // If any of the transactions fail we risk writing dirty PG0,
- // refresh page 0 just in case.
- if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) {
- g_led_control_registers_update_required[index] = true;
- }
- g_pwm_buffer_update_required[index] = false;
- }
-}
-
-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);
- for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3733_write_register(addr, i, g_led_control_registers[index][i]);
- }
- g_led_control_registers_update_required[index] = false;
- }
-}
-
-void is31fl3733_flush(void) {
- is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3733_I2C_ADDRESS_2)
- is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3733_I2C_ADDRESS_3)
- is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3733_I2C_ADDRESS_4)
- is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h
deleted file mode 100644
index c37b1fe5f2..0000000000
--- a/drivers/led/issi/is31fl3733-simple.h
+++ /dev/null
@@ -1,366 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2021 Doni Crosby
- * Copyright 2021 Leo Deng
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// ======== DEPRECATED DEFINES - DO NOT USE ========
-#ifdef ISSI_TIMEOUT
-# define IS31FL3733_I2C_TIMEOUT ISSI_TIMEOUT
-#endif
-#ifdef ISSI_PERSISTENCE
-# define IS31FL3733_I2C_PERSISTENCE ISSI_PERSISTENCE
-#endif
-#ifdef ISSI_PWM_FREQUENCY
-# define IS31FL3733_PWM_FREQUENCY ISSI_PWM_FREQUENCY
-#endif
-#ifdef ISSI_SWPULLUP
-# define IS31FL3733_SW_PULLUP ISSI_SWPULLUP
-#endif
-#ifdef ISSI_CSPULLUP
-# define IS31FL3733_CS_PULLDOWN ISSI_CSPULLUP
-#endif
-#ifdef ISSI_GLOBALCURRENT
-# define IS31FL3733_GLOBAL_CURRENT ISSI_GLOBALCURRENT
-#endif
-
-#define is31_led is31fl3733_led_t
-#define g_is31_leds g_is31fl3733_leds
-
-#define PUR_0R IS31FL3733_PUR_0_OHM
-#define PUR_05KR IS31FL3733_PUR_1K_OHM
-#define PUR_3KR IS31FL3733_PUR_2K_OHM
-#define PUR_4KR IS31FL3733_PUR_4K_OHM
-#define PUR_8KR IS31FL3733_PUR_8K_OHM
-#define PUR_16KR IS31FL3733_PUR_16K_OHM
-#define PUR_32KR IS31FL3733_PUR_32K_OHM
-// ========
-
-#define IS31FL3733_REG_INTERRUPT_MASK 0xF0
-#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1
-
-#define IS31FL3733_REG_COMMAND 0xFD
-
-#define IS31FL3733_COMMAND_LED_CONTROL 0x00
-#define IS31FL3733_COMMAND_PWM 0x01
-#define IS31FL3733_COMMAND_AUTO_BREATH 0x02
-#define IS31FL3733_COMMAND_FUNCTION 0x03
-
-#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00
-#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01
-#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F
-#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10
-#define IS31FL3733_FUNCTION_REG_RESET 0x11
-
-#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE
-#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5
-
-#define IS31FL3733_I2C_ADDRESS_GND_GND 0x50
-#define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51
-#define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52
-#define IS31FL3733_I2C_ADDRESS_GND_VCC 0x53
-#define IS31FL3733_I2C_ADDRESS_SCL_GND 0x54
-#define IS31FL3733_I2C_ADDRESS_SCL_SCL 0x55
-#define IS31FL3733_I2C_ADDRESS_SCL_SDA 0x56
-#define IS31FL3733_I2C_ADDRESS_SCL_VCC 0x57
-#define IS31FL3733_I2C_ADDRESS_SDA_GND 0x58
-#define IS31FL3733_I2C_ADDRESS_SDA_SCL 0x59
-#define IS31FL3733_I2C_ADDRESS_SDA_SDA 0x5A
-#define IS31FL3733_I2C_ADDRESS_SDA_VCC 0x5B
-#define IS31FL3733_I2C_ADDRESS_VCC_GND 0x5C
-#define IS31FL3733_I2C_ADDRESS_VCC_SCL 0x5D
-#define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E
-#define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F
-
-#if defined(LED_MATRIX_IS31FL3733)
-# define IS31FL3733_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-#if defined(IS31FL3733_I2C_ADDRESS_4)
-# define IS31FL3733_DRIVER_COUNT 4
-#elif defined(IS31FL3733_I2C_ADDRESS_3)
-# define IS31FL3733_DRIVER_COUNT 3
-#elif defined(IS31FL3733_I2C_ADDRESS_2)
-# define IS31FL3733_DRIVER_COUNT 2
-#elif defined(IS31FL3733_I2C_ADDRESS_1)
-# define IS31FL3733_DRIVER_COUNT 1
-#endif
-
-typedef struct is31fl3733_led_t {
- uint8_t driver : 2;
- uint8_t v;
-} PACKED is31fl3733_led_t;
-
-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);
-bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
-
-void is31fl3733_set_value(int index, uint8_t value);
-void is31fl3733_set_value_all(uint8_t value);
-
-void is31fl3733_set_led_control_register(uint8_t index, bool value);
-
-// This should not be called from an interrupt
-// (eg. from a timer interrupt).
-// Call this while idle (in between matrix scans).
-// If the buffer is dirty, it will update the driver with the buffer.
-void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index);
-void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);
-
-void is31fl3733_flush(void);
-
-#define IS31FL3733_PDR_0_OHM 0b000 // No pull-down resistor
-#define IS31FL3733_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3733_PDR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3733_PDR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3733_PDR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3733_PDR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3733_PDR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3733_PDR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3733_PUR_0_OHM 0b000 // No pull-up resistor
-#define IS31FL3733_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3733_PUR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3733_PUR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3733_PUR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3733_PUR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3733_PUR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3733_PUR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3733_PWM_FREQUENCY_8K4_HZ 0b000
-#define IS31FL3733_PWM_FREQUENCY_4K2_HZ 0b001
-#define IS31FL3733_PWM_FREQUENCY_26K7_HZ 0b010
-#define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0b011
-#define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0b100
-
-#define IS31FL3733_SYNC_NONE 0b00
-#define IS31FL3733_SYNC_MASTER 0b01
-#define IS31FL3733_SYNC_SLAVE 0b10
-
-#define A_1 0x00
-#define A_2 0x01
-#define A_3 0x02
-#define A_4 0x03
-#define A_5 0x04
-#define A_6 0x05
-#define A_7 0x06
-#define A_8 0x07
-#define A_9 0x08
-#define A_10 0x09
-#define A_11 0x0A
-#define A_12 0x0B
-#define A_13 0x0C
-#define A_14 0x0D
-#define A_15 0x0E
-#define A_16 0x0F
-
-#define B_1 0x10
-#define B_2 0x11
-#define B_3 0x12
-#define B_4 0x13
-#define B_5 0x14
-#define B_6 0x15
-#define B_7 0x16
-#define B_8 0x17
-#define B_9 0x18
-#define B_10 0x19
-#define B_11 0x1A
-#define B_12 0x1B
-#define B_13 0x1C
-#define B_14 0x1D
-#define B_15 0x1E
-#define B_16 0x1F
-
-#define C_1 0x20
-#define C_2 0x21
-#define C_3 0x22
-#define C_4 0x23
-#define C_5 0x24
-#define C_6 0x25
-#define C_7 0x26
-#define C_8 0x27
-#define C_9 0x28
-#define C_10 0x29
-#define C_11 0x2A
-#define C_12 0x2B
-#define C_13 0x2C
-#define C_14 0x2D
-#define C_15 0x2E
-#define C_16 0x2F
-
-#define D_1 0x30
-#define D_2 0x31
-#define D_3 0x32
-#define D_4 0x33
-#define D_5 0x34
-#define D_6 0x35
-#define D_7 0x36
-#define D_8 0x37
-#define D_9 0x38
-#define D_10 0x39
-#define D_11 0x3A
-#define D_12 0x3B
-#define D_13 0x3C
-#define D_14 0x3D
-#define D_15 0x3E
-#define D_16 0x3F
-
-#define E_1 0x40
-#define E_2 0x41
-#define E_3 0x42
-#define E_4 0x43
-#define E_5 0x44
-#define E_6 0x45
-#define E_7 0x46
-#define E_8 0x47
-#define E_9 0x48
-#define E_10 0x49
-#define E_11 0x4A
-#define E_12 0x4B
-#define E_13 0x4C
-#define E_14 0x4D
-#define E_15 0x4E
-#define E_16 0x4F
-
-#define F_1 0x50
-#define F_2 0x51
-#define F_3 0x52
-#define F_4 0x53
-#define F_5 0x54
-#define F_6 0x55
-#define F_7 0x56
-#define F_8 0x57
-#define F_9 0x58
-#define F_10 0x59
-#define F_11 0x5A
-#define F_12 0x5B
-#define F_13 0x5C
-#define F_14 0x5D
-#define F_15 0x5E
-#define F_16 0x5F
-
-#define G_1 0x60
-#define G_2 0x61
-#define G_3 0x62
-#define G_4 0x63
-#define G_5 0x64
-#define G_6 0x65
-#define G_7 0x66
-#define G_8 0x67
-#define G_9 0x68
-#define G_10 0x69
-#define G_11 0x6A
-#define G_12 0x6B
-#define G_13 0x6C
-#define G_14 0x6D
-#define G_15 0x6E
-#define G_16 0x6F
-
-#define H_1 0x70
-#define H_2 0x71
-#define H_3 0x72
-#define H_4 0x73
-#define H_5 0x74
-#define H_6 0x75
-#define H_7 0x76
-#define H_8 0x77
-#define H_9 0x78
-#define H_10 0x79
-#define H_11 0x7A
-#define H_12 0x7B
-#define H_13 0x7C
-#define H_14 0x7D
-#define H_15 0x7E
-#define H_16 0x7F
-
-#define I_1 0x80
-#define I_2 0x81
-#define I_3 0x82
-#define I_4 0x83
-#define I_5 0x84
-#define I_6 0x85
-#define I_7 0x86
-#define I_8 0x87
-#define I_9 0x88
-#define I_10 0x89
-#define I_11 0x8A
-#define I_12 0x8B
-#define I_13 0x8C
-#define I_14 0x8D
-#define I_15 0x8E
-#define I_16 0x8F
-
-#define J_1 0x90
-#define J_2 0x91
-#define J_3 0x92
-#define J_4 0x93
-#define J_5 0x94
-#define J_6 0x95
-#define J_7 0x96
-#define J_8 0x97
-#define J_9 0x98
-#define J_10 0x99
-#define J_11 0x9A
-#define J_12 0x9B
-#define J_13 0x9C
-#define J_14 0x9D
-#define J_15 0x9E
-#define J_16 0x9F
-
-#define K_1 0xA0
-#define K_2 0xA1
-#define K_3 0xA2
-#define K_4 0xA3
-#define K_5 0xA4
-#define K_6 0xA5
-#define K_7 0xA6
-#define K_8 0xA7
-#define K_9 0xA8
-#define K_10 0xA9
-#define K_11 0xAA
-#define K_12 0xAB
-#define K_13 0xAC
-#define K_14 0xAD
-#define K_15 0xAE
-#define K_16 0xAF
-
-#define L_1 0xB0
-#define L_2 0xB1
-#define L_3 0xB2
-#define L_4 0xB3
-#define L_5 0xB4
-#define L_6 0xB5
-#define L_7 0xB6
-#define L_8 0xB7
-#define L_9 0xB8
-#define L_10 0xB9
-#define L_11 0xBA
-#define L_12 0xBB
-#define L_13 0xBC
-#define L_14 0xBD
-#define L_15 0xBE
-#define L_16 0xBF
diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c
index 5857a800d7..a54b9c90ba 100644
--- a/drivers/led/issi/is31fl3733.c
+++ b/drivers/led/issi/is31fl3733.c
@@ -18,7 +18,6 @@
*/
#include "is31fl3733.h"
-#include <string.h>
#include "i2c_master.h"
#include "wait.h"
@@ -62,11 +61,8 @@
# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_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,52 +73,35 @@ bool g_pwm_buffer_update_required[IS31FL3733_DRIVER_COUNT] = {false};
uint8_t g_led_control_registers[IS31FL3733_DRIVER_COUNT][IS31FL3733_LED_CONTROL_REGISTER_COUNT] = {0};
bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] = {false};
-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;
-
+void is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t 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) {
- return false;
- }
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3733_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3733_I2C_TIMEOUT);
#endif
- return true;
}
-bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assumes PG1 is already selected.
- // If any of the transactions fails function returns false.
+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);
+}
+
+void is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 1 is already selected.
// Transmit PWM registers in 12 transfers of 16 bytes.
- // g_twi_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;
- // 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);
-
+ for (uint8_t i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; 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) {
- return false;
- }
+ for (uint8_t j = 0; j < IS31FL3733_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3733_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3733_I2C_TIMEOUT);
#endif
}
- return true;
}
void is31fl3733_init_drivers(void) {
@@ -162,32 +141,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++) {
+ for (uint8_t 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++) {
+ for (uint8_t 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)
@@ -203,12 +173,14 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) {
void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
is31fl3733_led_t led;
+
if (index >= 0 && index < IS31FL3733_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led));
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
@@ -254,27 +226,22 @@ 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);
-
- // If any of the transactions fail we risk writing dirty PG0,
- // refresh page 0 just in case.
- if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) {
- g_led_control_registers_update_required[index] = true;
- }
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_PWM);
+
+ is31fl3733_write_pwm_buffer(addr, index);
+
g_pwm_buffer_update_required[index] = false;
}
}
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);
- for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3733_select_page(addr, IS31FL3733_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3733_write_register(addr, i, g_led_control_registers[index][i]);
}
+
g_led_control_registers_update_required[index] = false;
}
}
diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h
index 20804b016b..532d35ed57 100644
--- a/drivers/led/issi/is31fl3733.h
+++ b/drivers/led/issi/is31fl3733.h
@@ -40,13 +40,13 @@
#ifdef DRIVER_SYNC_1
# define IS31FL3733_SYNC_1 DRIVER_SYNC_1
#endif
-#ifdef DRIVER_ADDR_2
+#ifdef DRIVER_SYNC_2
# define IS31FL3733_SYNC_2 DRIVER_SYNC_2
#endif
-#ifdef DRIVER_ADDR_3
+#ifdef DRIVER_SYNC_3
# define IS31FL3733_SYNC_3 DRIVER_SYNC_3
#endif
-#ifdef DRIVER_ADDR_4
+#ifdef DRIVER_SYNC_4
# define IS31FL3733_SYNC_4 DRIVER_SYNC_4
#endif
#ifdef ISSI_TIMEOUT
@@ -141,8 +141,8 @@ 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);
-bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+void is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3733_select_page(uint8_t addr, uint8_t page);
void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3736-mono.c b/drivers/led/issi/is31fl3736-mono.c
new file mode 100644
index 0000000000..2bb83169a4
--- /dev/null
+++ b/drivers/led/issi/is31fl3736-mono.c
@@ -0,0 +1,234 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2021 Doni Crosby
+ *
+ * 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 "is31fl3736-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96
+#define IS31FL3736_LED_CONTROL_REGISTER_COUNT 24
+
+#ifndef IS31FL3736_I2C_TIMEOUT
+# define IS31FL3736_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3736_I2C_PERSISTENCE
+# define IS31FL3736_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3736_PWM_FREQUENCY
+# define IS31FL3736_PWM_FREQUENCY IS31FL3736_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3736B only
+#endif
+
+#ifndef IS31FL3736_SW_PULLUP
+# define IS31FL3736_SW_PULLUP IS31FL3736_PUR_0_OHM
+#endif
+
+#ifndef IS31FL3736_CS_PULLDOWN
+# define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM
+#endif
+
+#ifndef IS31FL3736_GLOBAL_CURRENT
+# define IS31FL3736_GLOBAL_CURRENT 0xFF
+#endif
+
+// These buffers match the IS31FL3736 PWM 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
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[IS31FL3736_DRIVER_COUNT][IS31FL3736_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3736_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false};
+
+void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3736_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3736_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, 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 index) {
+ // Assumes page 1 is already selected.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i += 16) {
+#if IS31FL3736_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3736_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3736_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3736_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3736_init_drivers(void) {
+ i2c_init();
+
+ is31fl3736_init(IS31FL3736_I2C_ADDRESS_1);
+#if defined(IS31FL3736_I2C_ADDRESS_2)
+ is31fl3736_init(IS31FL3736_I2C_ADDRESS_2);
+# if defined(IS31FL3736_I2C_ADDRESS_3)
+ is31fl3736_init(IS31FL3736_I2C_ADDRESS_3);
+# if defined(IS31FL3736_I2C_ADDRESS_4)
+ is31fl3736_init(IS31FL3736_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3736_LED_COUNT; i++) {
+ is31fl3736_set_led_control_register(i, true);
+ }
+
+ is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3736_I2C_ADDRESS_2)
+ is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3736_I2C_ADDRESS_3)
+ is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3736_I2C_ADDRESS_4)
+ is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3736_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_LED_CONTROL);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3736_write_register(addr, i, 0x00);
+ }
+
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM);
+
+ // Set PWM on all LEDs to 0
+ // No need to setup Breath registers to PWM as that is the default.
+ for (uint8_t i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) {
+ is31fl3736_write_register(addr, i, 0x00);
+ }
+
+ is31fl3736_select_page(addr, 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)
+ is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN);
+ // Set global current to maximum.
+ is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3736_GLOBAL_CURRENT);
+ // Disable software shutdown.
+ is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3736_set_value(int index, uint8_t value) {
+ is31fl3736_led_t led;
+
+ if (index >= 0 && index < IS31FL3736_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void is31fl3736_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3736_LED_COUNT; i++) {
+ is31fl3736_set_value(i, value);
+ }
+}
+
+void is31fl3736_set_led_control_register(uint8_t index, bool value) {
+ is31fl3736_led_t led;
+ memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led));
+
+ // The PWM register for a matrix position (0x00 to 0xBF) is interleaved, so:
+ // A1=0x00 A2=0x02 A3=0x04 A4=0x06 A5=0x08 A6=0x0A A7=0x0C A8=0x0E
+ // B1=0x10 B2=0x12 B3=0x14
+ // But also, the LED control registers (0x00 to 0x17) are also interleaved, so:
+ // A1-A4=0x00 A5-A8=0x01
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_PWM);
+
+ is31fl3736_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3736_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+
+ g_led_control_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3736_flush(void) {
+ is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3736_I2C_ADDRESS_2)
+ is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3736_I2C_ADDRESS_3)
+ is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3736_I2C_ADDRESS_4)
+ is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3736-mono.h b/drivers/led/issi/is31fl3736-mono.h
new file mode 100644
index 0000000000..43d1548c02
--- /dev/null
+++ b/drivers/led/issi/is31fl3736-mono.h
@@ -0,0 +1,261 @@
+/* Copyright 2018 Jason Williams (Wilba)
+ * Copyright 2021 Doni Crosby
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef ISSI_TIMEOUT
+# define IS31FL3736_I2C_TIMEOUT ISSI_TIMEOUT
+#endif
+#ifdef ISSI_PERSISTENCE
+# define IS31FL3736_I2C_PERSISTENCE ISSI_PERSISTENCE
+#endif
+#ifdef ISSI_SWPULLUP
+# define IS31FL3736_SW_PULLUP ISSI_SWPULLUP
+#endif
+#ifdef ISSI_CSPULLUP
+# define IS31FL3736_CS_PULLDOWN ISSI_CSPULLUP
+#endif
+#ifdef ISSI_GLOBALCURRENT
+# define IS31FL3736_GLOBAL_CURRENT ISSI_GLOBALCURRENT
+#endif
+
+#define is31_led is31fl3736_led_t
+#define g_is31_leds g_is31fl3736_leds
+
+#define PUR_0R IS31FL3736_PUR_0_OHM
+#define PUR_05KR IS31FL3736_PUR_05K_OHM
+#define PUR_1KR IS31FL3736_PUR_1K_OHM
+#define PUR_2KR IS31FL3736_PUR_2K_OHM
+#define PUR_4KR IS31FL3736_PUR_4K_OHM
+#define PUR_8KR IS31FL3736_PUR_8K_OHM
+#define PUR_16KR IS31FL3736_PUR_16K_OHM
+#define PUR_32KR IS31FL3736_PUR_32K_OHM
+// ========
+
+#define IS31FL3736_REG_INTERRUPT_MASK 0xF0
+#define IS31FL3736_REG_INTERRUPT_STATUS 0xF1
+
+#define IS31FL3736_REG_COMMAND 0xFD
+
+#define IS31FL3736_COMMAND_LED_CONTROL 0x00
+#define IS31FL3736_COMMAND_PWM 0x01
+#define IS31FL3736_COMMAND_AUTO_BREATH 0x02
+#define IS31FL3736_COMMAND_FUNCTION 0x03
+
+#define IS31FL3736_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3736_FUNCTION_REG_SW_PULLUP 0x0F
+#define IS31FL3736_FUNCTION_REG_CS_PULLDOWN 0x10
+#define IS31FL3736_FUNCTION_REG_RESET 0x11
+
+#define IS31FL3736_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3736_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3736_I2C_ADDRESS_GND_GND 0x50
+#define IS31FL3736_I2C_ADDRESS_GND_SCL 0x51
+#define IS31FL3736_I2C_ADDRESS_GND_SDA 0x52
+#define IS31FL3736_I2C_ADDRESS_GND_VCC 0x53
+#define IS31FL3736_I2C_ADDRESS_SCL_GND 0x54
+#define IS31FL3736_I2C_ADDRESS_SCL_SCL 0x55
+#define IS31FL3736_I2C_ADDRESS_SCL_SDA 0x56
+#define IS31FL3736_I2C_ADDRESS_SCL_VCC 0x57
+#define IS31FL3736_I2C_ADDRESS_SDA_GND 0x58
+#define IS31FL3736_I2C_ADDRESS_SDA_SCL 0x59
+#define IS31FL3736_I2C_ADDRESS_SDA_SDA 0x5A
+#define IS31FL3736_I2C_ADDRESS_SDA_VCC 0x5B
+#define IS31FL3736_I2C_ADDRESS_VCC_GND 0x5C
+#define IS31FL3736_I2C_ADDRESS_VCC_SCL 0x5D
+#define IS31FL3736_I2C_ADDRESS_VCC_SDA 0x5E
+#define IS31FL3736_I2C_ADDRESS_VCC_VCC 0x5F
+
+#if defined(LED_MATRIX_IS31FL3736)
+# define IS31FL3736_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3736_I2C_ADDRESS_4)
+# define IS31FL3736_DRIVER_COUNT 4
+#elif defined(IS31FL3736_I2C_ADDRESS_3)
+# define IS31FL3736_DRIVER_COUNT 3
+#elif defined(IS31FL3736_I2C_ADDRESS_2)
+# define IS31FL3736_DRIVER_COUNT 2
+#elif defined(IS31FL3736_I2C_ADDRESS_1)
+# define IS31FL3736_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3736_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3736_led_t;
+
+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_set_value(int index, uint8_t value);
+void is31fl3736_set_value_all(uint8_t value);
+
+void is31fl3736_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void is31fl3736_flush(void);
+
+#define IS31FL3736_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3736_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3736_PDR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3736_PDR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3736_PDR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3736_PDR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3736_PDR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3736_PDR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3736_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3736_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3736_PUR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3736_PUR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3736_PUR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3736_PUR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3736_PUR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3736_PUR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3736_PWM_FREQUENCY_8K4_HZ 0b000
+#define IS31FL3736_PWM_FREQUENCY_4K2_HZ 0b001
+#define IS31FL3736_PWM_FREQUENCY_26K7_HZ 0b010
+#define IS31FL3736_PWM_FREQUENCY_2K1_HZ 0b011
+#define IS31FL3736_PWM_FREQUENCY_1K05_HZ 0b100
+
+#define A_1 0x00
+#define A_2 0x02
+#define A_3 0x04
+#define A_4 0x06
+#define A_5 0x08
+#define A_6 0x0A
+#define A_7 0x0C
+#define A_8 0x0E
+
+#define B_1 0x10
+#define B_2 0x12
+#define B_3 0x14
+#define B_4 0x16
+#define B_5 0x18
+#define B_6 0x1A
+#define B_7 0x1C
+#define B_8 0x1E
+
+#define C_1 0x20
+#define C_2 0x22
+#define C_3 0x24
+#define C_4 0x26
+#define C_5 0x28
+#define C_6 0x2A
+#define C_7 0x2C
+#define C_8 0x2E
+
+#define D_1 0x30
+#define D_2 0x32
+#define D_3 0x34
+#define D_4 0x36
+#define D_5 0x38
+#define D_6 0x3A
+#define D_7 0x3C
+#define D_8 0x3E
+
+#define E_1 0x40
+#define E_2 0x42
+#define E_3 0x44
+#define E_4 0x46
+#define E_5 0x48
+#define E_6 0x4A
+#define E_7 0x4C
+#define E_8 0x4E
+
+#define F_1 0x50
+#define F_2 0x52
+#define F_3 0x54
+#define F_4 0x56
+#define F_5 0x58
+#define F_6 0x5A
+#define F_7 0x5C
+#define F_8 0x5E
+
+#define G_1 0x60
+#define G_2 0x62
+#define G_3 0x64
+#define G_4 0x66
+#define G_5 0x68
+#define G_6 0x6A
+#define G_7 0x6C
+#define G_8 0x6E
+
+#define H_1 0x70
+#define H_2 0x72
+#define H_3 0x74
+#define H_4 0x76
+#define H_5 0x78
+#define H_6 0x7A
+#define H_7 0x7C
+#define H_8 0x7E
+
+#define I_1 0x80
+#define I_2 0x82
+#define I_3 0x84
+#define I_4 0x86
+#define I_5 0x88
+#define I_6 0x8A
+#define I_7 0x8C
+#define I_8 0x8E
+
+#define J_1 0x90
+#define J_2 0x92
+#define J_3 0x94
+#define J_4 0x96
+#define J_5 0x98
+#define J_6 0x9A
+#define J_7 0x9C
+#define J_8 0x9E
+
+#define K_1 0xA0
+#define K_2 0xA2
+#define K_3 0xA4
+#define K_4 0xA6
+#define K_5 0xA8
+#define K_6 0xAA
+#define K_7 0xAC
+#define K_8 0xAE
+
+#define L_1 0xB0
+#define L_2 0xB2
+#define L_3 0xB4
+#define L_4 0xB6
+#define L_5 0xB8
+#define L_6 0xBA
+#define L_7 0xBC
+#define L_8 0xBE
diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c
deleted file mode 100644
index e1cce3c48a..0000000000
--- a/drivers/led/issi/is31fl3736-simple.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Copyright 2018 Jason Williams (Wilba)
- * Copyright 2021 Doni Crosby
- *
- * 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 "is31fl3736-simple.h"
-#include <string.h>
-#include "i2c_master.h"
-#include "wait.h"
-
-#define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96
-#define IS31FL3736_LED_CONTROL_REGISTER_COUNT 24
-
-#ifndef IS31FL3736_I2C_TIMEOUT
-# define IS31FL3736_I2C_TIMEOUT 100
-#endif
-
-#ifndef IS31FL3736_I2C_PERSISTENCE
-# define IS31FL3736_I2C_PERSISTENCE 0
-#endif
-
-#ifndef IS31FL3736_PWM_FREQUENCY
-# define IS31FL3736_PWM_FREQUENCY IS31FL3736_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3736B only
-#endif
-
-#ifndef IS31FL3736_SW_PULLUP
-# define IS31FL3736_SW_PULLUP IS31FL3736_PUR_0_OHM
-#endif
-
-#ifndef IS31FL3736_CS_PULLDOWN
-# define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM
-#endif
-
-#ifndef IS31FL3736_GLOBAL_CURRENT
-# define IS31FL3736_GLOBAL_CURRENT 0xFF
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
-// These buffers match the IS31FL3736 PWM registers.
-// The control buffers match the PG0 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
-// probably not worth the extra complexity.
-uint8_t g_pwm_buffer[IS31FL3736_DRIVER_COUNT][IS31FL3736_PWM_REGISTER_COUNT];
-bool g_pwm_buffer_update_required[IS31FL3736_DRIVER_COUNT] = {false};
-
-uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_REGISTER_COUNT] = {0};
-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;
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT);
-#endif
-}
-
-void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
-
- // transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_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;
- // 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);
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT);
-#endif
- }
-}
-
-void is31fl3736_init_drivers(void) {
- i2c_init();
-
- is31fl3736_init(IS31FL3736_I2C_ADDRESS_1);
-#if defined(IS31FL3736_I2C_ADDRESS_2)
- is31fl3736_init(IS31FL3736_I2C_ADDRESS_2);
-# if defined(IS31FL3736_I2C_ADDRESS_3)
- is31fl3736_init(IS31FL3736_I2C_ADDRESS_3);
-# if defined(IS31FL3736_I2C_ADDRESS_4)
- is31fl3736_init(IS31FL3736_I2C_ADDRESS_4);
-# endif
-# endif
-#endif
-
- for (int i = 0; i < IS31FL3736_LED_COUNT; i++) {
- is31fl3736_set_led_control_register(i, true);
- }
-
- is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3736_I2C_ADDRESS_2)
- is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3736_I2C_ADDRESS_3)
- is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3736_I2C_ADDRESS_4)
- is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void is31fl3736_init(uint8_t addr) {
- // In order to avoid the LEDs being driven with garbage data
- // in the LED driver's PWM registers, shutdown is enabled last.
- // 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);
-
- // 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);
-
- // 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);
-
- // 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)
- is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN);
- // Set global current to maximum.
- is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3736_GLOBAL_CURRENT);
- // Disable software shutdown.
- is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01);
-
- // Wait 10ms to ensure the device has woken up.
- wait_ms(10);
-}
-
-void is31fl3736_set_value(int index, uint8_t value) {
- is31fl3736_led_t led;
- if (index >= 0 && index < IS31FL3736_LED_COUNT) {
- memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led));
-
- if (g_pwm_buffer[led.driver][led.v] == value) {
- return;
- }
- g_pwm_buffer[led.driver][led.v] = value;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void is31fl3736_set_value_all(uint8_t value) {
- for (int i = 0; i < IS31FL3736_LED_COUNT; i++) {
- is31fl3736_set_value(i, value);
- }
-}
-
-void is31fl3736_set_led_control_register(uint8_t index, bool value) {
- is31fl3736_led_t led;
- memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led));
-
- // The PWM register for a matrix position (0x00 to 0xBF) is interleaved, so:
- // A1=0x00 A2=0x02 A3=0x04 A4=0x06 A5=0x08 A6=0x0A A7=0x0C A8=0x0E
- // B1=0x10 B2=0x12 B3=0x14
- // But also, the LED control registers (0x00 to 0x17) are also interleaved, so:
- // A1-A4=0x00 A5-A8=0x01
-
- uint8_t control_register = led.v / 8;
- uint8_t bit_value = led.v % 8;
-
- if (value) {
- g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
- } else {
- g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
- }
-
- g_led_control_registers_update_required[led.driver] = true;
-}
-
-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_write_pwm_buffer(addr, g_pwm_buffer[index]);
- g_pwm_buffer_update_required[index] = false;
- }
-}
-
-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);
- for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3736_write_register(addr, i, g_led_control_registers[index][i]);
- }
- g_led_control_registers_update_required[index] = false;
- }
-}
-
-void is31fl3736_flush(void) {
- is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3736_I2C_ADDRESS_2)
- is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3736_I2C_ADDRESS_3)
- is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3736_I2C_ADDRESS_4)
- is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h
deleted file mode 100644
index a73a872545..0000000000
--- a/drivers/led/issi/is31fl3736-simple.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Copyright 2018 Jason Williams (Wilba)
- * Copyright 2021 Doni Crosby
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// ======== DEPRECATED DEFINES - DO NOT USE ========
-#ifdef ISSI_TIMEOUT
-# define IS31FL3736_I2C_TIMEOUT ISSI_TIMEOUT
-#endif
-#ifdef ISSI_PERSISTENCE
-# define IS31FL3736_I2C_PERSISTENCE ISSI_PERSISTENCE
-#endif
-#ifdef ISSI_SWPULLUP
-# define IS31FL3736_SW_PULLUP ISSI_SWPULLUP
-#endif
-#ifdef ISSI_CSPULLUP
-# define IS31FL3736_CS_PULLDOWN ISSI_CSPULLUP
-#endif
-#ifdef ISSI_GLOBALCURRENT
-# define IS31FL3736_GLOBAL_CURRENT ISSI_GLOBALCURRENT
-#endif
-
-#define is31_led is31fl3736_led_t
-#define g_is31_leds g_is31fl3736_leds
-
-#define PUR_0R IS31FL3736_PUR_0_OHM
-#define PUR_05KR IS31FL3736_PUR_05K_OHM
-#define PUR_1KR IS31FL3736_PUR_1K_OHM
-#define PUR_2KR IS31FL3736_PUR_2K_OHM
-#define PUR_4KR IS31FL3736_PUR_4K_OHM
-#define PUR_8KR IS31FL3736_PUR_8K_OHM
-#define PUR_16KR IS31FL3736_PUR_16K_OHM
-#define PUR_32KR IS31FL3736_PUR_32K_OHM
-// ========
-
-#define IS31FL3736_REG_INTERRUPT_MASK 0xF0
-#define IS31FL3736_REG_INTERRUPT_STATUS 0xF1
-
-#define IS31FL3736_REG_COMMAND 0xFD
-
-#define IS31FL3736_COMMAND_LED_CONTROL 0x00
-#define IS31FL3736_COMMAND_PWM 0x01
-#define IS31FL3736_COMMAND_AUTO_BREATH 0x02
-#define IS31FL3736_COMMAND_FUNCTION 0x03
-
-#define IS31FL3736_FUNCTION_REG_CONFIGURATION 0x00
-#define IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT 0x01
-#define IS31FL3736_FUNCTION_REG_SW_PULLUP 0x0F
-#define IS31FL3736_FUNCTION_REG_CS_PULLDOWN 0x10
-#define IS31FL3736_FUNCTION_REG_RESET 0x11
-
-#define IS31FL3736_REG_COMMAND_WRITE_LOCK 0xFE
-#define IS31FL3736_COMMAND_WRITE_LOCK_MAGIC 0xC5
-
-#define IS31FL3736_I2C_ADDRESS_GND_GND 0x50
-#define IS31FL3736_I2C_ADDRESS_GND_SCL 0x51
-#define IS31FL3736_I2C_ADDRESS_GND_SDA 0x52
-#define IS31FL3736_I2C_ADDRESS_GND_VCC 0x53
-#define IS31FL3736_I2C_ADDRESS_SCL_GND 0x54
-#define IS31FL3736_I2C_ADDRESS_SCL_SCL 0x55
-#define IS31FL3736_I2C_ADDRESS_SCL_SDA 0x56
-#define IS31FL3736_I2C_ADDRESS_SCL_VCC 0x57
-#define IS31FL3736_I2C_ADDRESS_SDA_GND 0x58
-#define IS31FL3736_I2C_ADDRESS_SDA_SCL 0x59
-#define IS31FL3736_I2C_ADDRESS_SDA_SDA 0x5A
-#define IS31FL3736_I2C_ADDRESS_SDA_VCC 0x5B
-#define IS31FL3736_I2C_ADDRESS_VCC_GND 0x5C
-#define IS31FL3736_I2C_ADDRESS_VCC_SCL 0x5D
-#define IS31FL3736_I2C_ADDRESS_VCC_SDA 0x5E
-#define IS31FL3736_I2C_ADDRESS_VCC_VCC 0x5F
-
-#if defined(LED_MATRIX_IS31FL3736)
-# define IS31FL3736_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-#if defined(IS31FL3736_I2C_ADDRESS_4)
-# define IS31FL3736_DRIVER_COUNT 4
-#elif defined(IS31FL3736_I2C_ADDRESS_3)
-# define IS31FL3736_DRIVER_COUNT 3
-#elif defined(IS31FL3736_I2C_ADDRESS_2)
-# define IS31FL3736_DRIVER_COUNT 2
-#elif defined(IS31FL3736_I2C_ADDRESS_1)
-# define IS31FL3736_DRIVER_COUNT 1
-#endif
-
-typedef struct is31fl3736_led_t {
- uint8_t driver : 2;
- uint8_t v;
-} PACKED is31fl3736_led_t;
-
-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_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
-
-void is31fl3736_set_value(int index, uint8_t value);
-void is31fl3736_set_value_all(uint8_t value);
-
-void is31fl3736_set_led_control_register(uint8_t index, bool value);
-
-// This should not be called from an interrupt
-// (eg. from a timer interrupt).
-// Call this while idle (in between matrix scans).
-// If the buffer is dirty, it will update the driver with the buffer.
-void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index);
-void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index);
-
-void is31fl3736_flush(void);
-
-#define IS31FL3736_PDR_0_OHM 0b000 // No pull-down resistor
-#define IS31FL3736_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3736_PDR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3736_PDR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3736_PDR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3736_PDR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3736_PDR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3736_PDR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3736_PUR_0_OHM 0b000 // No pull-up resistor
-#define IS31FL3736_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3736_PUR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3736_PUR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3736_PUR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3736_PUR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3736_PUR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3736_PUR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3736_PWM_FREQUENCY_8K4_HZ 0b000
-#define IS31FL3736_PWM_FREQUENCY_4K2_HZ 0b001
-#define IS31FL3736_PWM_FREQUENCY_26K7_HZ 0b010
-#define IS31FL3736_PWM_FREQUENCY_2K1_HZ 0b011
-#define IS31FL3736_PWM_FREQUENCY_1K05_HZ 0b100
-
-#define A_1 0x00
-#define A_2 0x02
-#define A_3 0x04
-#define A_4 0x06
-#define A_5 0x08
-#define A_6 0x0A
-#define A_7 0x0C
-#define A_8 0x0E
-
-#define B_1 0x10
-#define B_2 0x12
-#define B_3 0x14
-#define B_4 0x16
-#define B_5 0x18
-#define B_6 0x1A
-#define B_7 0x1C
-#define B_8 0x1E
-
-#define C_1 0x20
-#define C_2 0x22
-#define C_3 0x24
-#define C_4 0x26
-#define C_5 0x28
-#define C_6 0x2A
-#define C_7 0x2C
-#define C_8 0x2E
-
-#define D_1 0x30
-#define D_2 0x32
-#define D_3 0x34
-#define D_4 0x36
-#define D_5 0x38
-#define D_6 0x3A
-#define D_7 0x3C
-#define D_8 0x3E
-
-#define E_1 0x40
-#define E_2 0x42
-#define E_3 0x44
-#define E_4 0x46
-#define E_5 0x48
-#define E_6 0x4A
-#define E_7 0x4C
-#define E_8 0x4E
-
-#define F_1 0x50
-#define F_2 0x52
-#define F_3 0x54
-#define F_4 0x56
-#define F_5 0x58
-#define F_6 0x5A
-#define F_7 0x5C
-#define F_8 0x5E
-
-#define G_1 0x60
-#define G_2 0x62
-#define G_3 0x64
-#define G_4 0x66
-#define G_5 0x68
-#define G_6 0x6A
-#define G_7 0x6C
-#define G_8 0x6E
-
-#define H_1 0x70
-#define H_2 0x72
-#define H_3 0x74
-#define H_4 0x76
-#define H_5 0x78
-#define H_6 0x7A
-#define H_7 0x7C
-#define H_8 0x7E
-
-#define I_1 0x80
-#define I_2 0x82
-#define I_3 0x84
-#define I_4 0x86
-#define I_5 0x88
-#define I_6 0x8A
-#define I_7 0x8C
-#define I_8 0x8E
-
-#define J_1 0x90
-#define J_2 0x92
-#define J_3 0x94
-#define J_4 0x96
-#define J_5 0x98
-#define J_6 0x9A
-#define J_7 0x9C
-#define J_8 0x9E
-
-#define K_1 0xA0
-#define K_2 0xA2
-#define K_3 0xA4
-#define K_4 0xA6
-#define K_5 0xA8
-#define K_6 0xAA
-#define K_7 0xAC
-#define K_8 0xAE
-
-#define L_1 0xB0
-#define L_2 0xB2
-#define L_3 0xB4
-#define L_4 0xB6
-#define L_5 0xB8
-#define L_6 0xBA
-#define L_7 0xBC
-#define L_8 0xBE
diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c
index 30ab796f3e..e4cba2c398 100644
--- a/drivers/led/issi/is31fl3736.c
+++ b/drivers/led/issi/is31fl3736.c
@@ -16,7 +16,6 @@
*/
#include "is31fl3736.h"
-#include <string.h>
#include "i2c_master.h"
#include "wait.h"
@@ -47,11 +46,8 @@
# define IS31FL3736_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_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 +59,32 @@ 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;
-
#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_write_register(addr << 1, reg, &data, 1, IS31FL3736_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3736_I2C_TIMEOUT);
#endif
}
-void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
-
- // transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+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);
+}
- // 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;
- // 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);
+void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 1 is already selected.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; 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;
+ for (uint8_t j = 0; j < IS31FL3736_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3736_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3736_I2C_TIMEOUT);
#endif
}
}
@@ -135,32 +125,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_REG_LED_CONTROL);
// Turn off all LEDs.
- for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
+ for (uint8_t 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++) {
+ for (uint8_t 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)
@@ -176,12 +157,14 @@ void is31fl3736_init(uint8_t addr) {
void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
is31fl3736_led_t led;
+
if (index >= 0 && index < IS31FL3736_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led));
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
@@ -234,23 +217,22 @@ 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, index);
- is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required[index] = false;
}
}
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);
- for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3736_select_page(addr, IS31FL3736_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3736_write_register(addr, i, g_led_control_registers[index][i]);
}
+
g_led_control_registers_update_required[index] = false;
}
}
diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h
index a5710d7ed4..086edc0e4a 100644
--- a/drivers/led/issi/is31fl3736.h
+++ b/drivers/led/issi/is31fl3736.h
@@ -126,7 +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_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+void is31fl3736_select_page(uint8_t addr, uint8_t page);
void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3737-mono.c b/drivers/led/issi/is31fl3737-mono.c
new file mode 100644
index 0000000000..0e22ea8a6a
--- /dev/null
+++ b/drivers/led/issi/is31fl3737-mono.c
@@ -0,0 +1,231 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
+ *
+ * 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 "is31fl3737-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144
+#define IS31FL3737_LED_CONTROL_REGISTER_COUNT 24
+
+#ifndef IS31FL3737_I2C_TIMEOUT
+# define IS31FL3737_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3737_I2C_PERSISTENCE
+# define IS31FL3737_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3737_PWM_FREQUENCY
+# define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3737B only
+#endif
+
+#ifndef IS31FL3737_SW_PULLUP
+# define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM
+#endif
+
+#ifndef IS31FL3737_CS_PULLDOWN
+# define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM
+#endif
+
+#ifndef IS31FL3737_GLOBAL_CURRENT
+# define IS31FL3737_GLOBAL_CURRENT 0xFF
+#endif
+
+// These buffers match the IS31FL3737 PWM 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
+// probably not worth the extra complexity.
+
+uint8_t g_pwm_buffer[IS31FL3737_DRIVER_COUNT][IS31FL3737_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3737_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false};
+
+void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3737_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3737_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, 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 index) {
+ // Assumes page 1 is already selected.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i += 16) {
+#if IS31FL3737_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3737_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3737_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3737_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3737_init_drivers(void) {
+ i2c_init();
+
+ is31fl3737_init(IS31FL3737_I2C_ADDRESS_1);
+#if defined(IS31FL3737_I2C_ADDRESS_2)
+ is31fl3737_init(IS31FL3737_I2C_ADDRESS_2);
+# if defined(IS31FL3737_I2C_ADDRESS_3)
+ is31fl3737_init(IS31FL3737_I2C_ADDRESS_3);
+# if defined(IS31FL3737_I2C_ADDRESS_4)
+ is31fl3737_init(IS31FL3737_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3737_LED_COUNT; i++) {
+ is31fl3737_set_led_control_register(i, true);
+ }
+
+ is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3737_I2C_ADDRESS_2)
+ is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3737_I2C_ADDRESS_3)
+ is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3737_I2C_ADDRESS_4)
+ is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3737_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3737_write_register(addr, i, 0x00);
+ }
+
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM);
+
+ // Set PWM on all LEDs to 0
+ // No need to setup Breath registers to PWM as that is the default.
+ for (uint8_t i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) {
+ is31fl3737_write_register(addr, i, 0x00);
+ }
+
+ is31fl3737_select_page(addr, 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)
+ is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN);
+ // Set global current to maximum.
+ is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3737_GLOBAL_CURRENT);
+ // Disable software shutdown.
+ is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3737_set_value(int index, uint8_t value) {
+ is31fl3737_led_t led;
+
+ if (index >= 0 && index < IS31FL3737_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void is31fl3737_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3737_LED_COUNT; i++) {
+ is31fl3737_set_value(i, value);
+ }
+}
+
+void is31fl3737_set_led_control_register(uint8_t index, bool value) {
+ is31fl3737_led_t led;
+ memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_PWM);
+
+ is31fl3737_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3737_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+
+ g_led_control_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3737_flush(void) {
+ is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3737_I2C_ADDRESS_2)
+ is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3737_I2C_ADDRESS_3)
+ is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3737_I2C_ADDRESS_4)
+ is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3737-mono.h b/drivers/led/issi/is31fl3737-mono.h
new file mode 100644
index 0000000000..6d081bfa00
--- /dev/null
+++ b/drivers/led/issi/is31fl3737-mono.h
@@ -0,0 +1,299 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2021 Doni Crosby
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef ISSI_TIMEOUT
+# define IS31FL3737_I2C_TIMEOUT ISSI_TIMEOUT
+#endif
+#ifdef ISSI_PERSISTENCE
+# define IS31FL3737_I2C_PERSISTENCE ISSI_PERSISTENCE
+#endif
+#ifdef ISSI_PWM_FREQUENCY
+# define IS31FL3737_PWM_FREQUENCY ISSI_PWM_FREQUENCY
+#endif
+#ifdef ISSI_SWPULLUP
+# define IS31FL3737_SW_PULLUP ISSI_SWPULLUP
+#endif
+#ifdef ISSI_CSPULLUP
+# define IS31FL3737_CS_PULLDOWN ISSI_CSPULLUP
+#endif
+#ifdef ISSI_GLOBALCURRENT
+# define IS31FL3737_GLOBAL_CURRENT ISSI_GLOBALCURRENT
+#endif
+
+#define PUR_0R IS31FL3737_PUR_0_OHM
+#define PUR_05KR IS31FL3737_PUR_0K5_OHM
+#define PUR_1KR IS31FL3737_PUR_1K_OHM
+#define PUR_2KR IS31FL3737_PUR_2K_OHM
+#define PUR_4KR IS31FL3737_PUR_4K_OHM
+#define PUR_8KR IS31FL3737_PUR_8K_OHM
+#define PUR_16KR IS31FL3737_PUR_16K_OHM
+#define PUR_32KR IS31FL3737_PUR_32K_OHM
+// ========
+
+#define IS31FL3737_REG_INTERRUPT_MASK 0xF0
+#define IS31FL3737_REG_INTERRUPT_STATUS 0xF1
+
+#define IS31FL3737_REG_COMMAND 0xFD
+
+#define IS31FL3737_COMMAND_LED_CONTROL 0x00
+#define IS31FL3737_COMMAND_PWM 0x01
+#define IS31FL3737_COMMAND_AUTO_BREATH 0x02
+#define IS31FL3737_COMMAND_FUNCTION 0x03
+
+#define IS31FL3737_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3737_FUNCTION_REG_SW_PULLUP 0x0F
+#define IS31FL3737_FUNCTION_REG_CS_PULLDOWN 0x10
+#define IS31FL3737_FUNCTION_REG_RESET 0x11
+
+#define IS31FL3737_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3737_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3737_I2C_ADDRESS_GND 0x50
+#define IS31FL3737_I2C_ADDRESS_SCL 0x55
+#define IS31FL3737_I2C_ADDRESS_SDA 0x5A
+#define IS31FL3737_I2C_ADDRESS_VCC 0x5F
+
+#if defined(LED_MATRIX_IS31FL3737)
+# define IS31FL3737_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3737_I2C_ADDRESS_4)
+# define IS31FL3737_DRIVER_COUNT 4
+#elif defined(IS31FL3737_I2C_ADDRESS_3)
+# define IS31FL3737_DRIVER_COUNT 3
+#elif defined(IS31FL3737_I2C_ADDRESS_2)
+# define IS31FL3737_DRIVER_COUNT 2
+#elif defined(IS31FL3737_I2C_ADDRESS_1)
+# define IS31FL3737_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3737_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3737_led_t;
+
+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_set_value(int index, uint8_t value);
+void is31fl3737_set_value_all(uint8_t value);
+
+void is31fl3737_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void is31fl3737_flush(void);
+
+#define IS31FL3737_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3737_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3737_PDR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3737_PDR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3737_PDR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3737_PDR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3737_PDR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3737_PDR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3737_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3737_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3737_PUR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3737_PUR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3737_PUR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3737_PUR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3737_PUR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3737_PUR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3737_PWM_FREQUENCY_8K4_HZ 0b000
+#define IS31FL3737_PWM_FREQUENCY_4K2_HZ 0b001
+#define IS31FL3737_PWM_FREQUENCY_26K7_HZ 0b010
+#define IS31FL3737_PWM_FREQUENCY_2K1_HZ 0b011
+#define IS31FL3737_PWM_FREQUENCY_1K05_HZ 0b100
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x08
+#define A_8 0x09
+#define A_9 0x0A
+#define A_10 0x0B
+#define A_11 0x0C
+#define A_12 0x0D
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x18
+#define B_8 0x19
+#define B_9 0x1A
+#define B_10 0x1B
+#define B_11 0x1C
+#define B_12 0x1D
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x28
+#define C_8 0x29
+#define C_9 0x2A
+#define C_10 0x2B
+#define C_11 0x2C
+#define C_12 0x2D
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x38
+#define D_8 0x39
+#define D_9 0x3A
+#define D_10 0x3B
+#define D_11 0x3C
+#define D_12 0x3D
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x48
+#define E_8 0x49
+#define E_9 0x4A
+#define E_10 0x4B
+#define E_11 0x4C
+#define E_12 0x4D
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x58
+#define F_8 0x59
+#define F_9 0x5A
+#define F_10 0x5B
+#define F_11 0x5C
+#define F_12 0x5D
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x68
+#define G_8 0x69
+#define G_9 0x6A
+#define G_10 0x6B
+#define G_11 0x6C
+#define G_12 0x6D
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x78
+#define H_8 0x79
+#define H_9 0x7A
+#define H_10 0x7B
+#define H_11 0x7C
+#define H_12 0x7D
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x88
+#define I_8 0x89
+#define I_9 0x8A
+#define I_10 0x8B
+#define I_11 0x8C
+#define I_12 0x8D
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x98
+#define J_8 0x99
+#define J_9 0x9A
+#define J_10 0x9B
+#define J_11 0x9C
+#define J_12 0x9D
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA8
+#define K_8 0xA9
+#define K_9 0xAA
+#define K_10 0xAB
+#define K_11 0xAC
+#define K_12 0xAD
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB8
+#define L_8 0xB9
+#define L_9 0xBA
+#define L_10 0xBB
+#define L_11 0xBC
+#define L_12 0xBD
diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c
deleted file mode 100644
index 7f641f4ca5..0000000000
--- a/drivers/led/issi/is31fl3737-simple.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2021 Doni Crosby
- *
- * 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 "is31fl3737-simple.h"
-#include <string.h>
-#include "i2c_master.h"
-#include "wait.h"
-
-#define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144
-#define IS31FL3737_LED_CONTROL_REGISTER_COUNT 24
-
-#ifndef IS31FL3737_I2C_TIMEOUT
-# define IS31FL3737_I2C_TIMEOUT 100
-#endif
-
-#ifndef IS31FL3737_I2C_PERSISTENCE
-# define IS31FL3737_I2C_PERSISTENCE 0
-#endif
-
-#ifndef IS31FL3737_PWM_FREQUENCY
-# define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3737B only
-#endif
-
-#ifndef IS31FL3737_SW_PULLUP
-# define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM
-#endif
-
-#ifndef IS31FL3737_CS_PULLDOWN
-# define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM
-#endif
-
-#ifndef IS31FL3737_GLOBAL_CURRENT
-# define IS31FL3737_GLOBAL_CURRENT 0xFF
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
-// These buffers match the IS31FL3737 PWM registers.
-// The control buffers match the PG0 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
-// probably not worth the extra complexity.
-
-uint8_t g_pwm_buffer[IS31FL3737_DRIVER_COUNT][IS31FL3737_PWM_REGISTER_COUNT];
-bool g_pwm_buffer_update_required[IS31FL3737_DRIVER_COUNT] = {false};
-
-uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_REGISTER_COUNT] = {0};
-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;
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT);
-#endif
-}
-
-void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
-
- // transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_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;
- // 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);
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT);
-#endif
- }
-}
-
-void is31fl3737_init_drivers(void) {
- i2c_init();
-
- is31fl3737_init(IS31FL3737_I2C_ADDRESS_1);
-#if defined(IS31FL3737_I2C_ADDRESS_2)
- is31fl3737_init(IS31FL3737_I2C_ADDRESS_2);
-# if defined(IS31FL3737_I2C_ADDRESS_3)
- is31fl3737_init(IS31FL3737_I2C_ADDRESS_3);
-# if defined(IS31FL3737_I2C_ADDRESS_4)
- is31fl3737_init(IS31FL3737_I2C_ADDRESS_4);
-# endif
-# endif
-#endif
-
- for (int i = 0; i < IS31FL3737_LED_COUNT; i++) {
- is31fl3737_set_led_control_register(i, true);
- }
-
- is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3737_I2C_ADDRESS_2)
- is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3737_I2C_ADDRESS_3)
- is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3737_I2C_ADDRESS_4)
- is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void is31fl3737_init(uint8_t addr) {
- // In order to avoid the LEDs being driven with garbage data
- // in the LED driver's PWM registers, shutdown is enabled last.
- // 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);
-
- // 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);
-
- // 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);
-
- // 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)
- is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN);
- // Set global current to maximum.
- is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3737_GLOBAL_CURRENT);
- // Disable software shutdown.
- is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01);
-
- // Wait 10ms to ensure the device has woken up.
- wait_ms(10);
-}
-
-void is31fl3737_set_value(int index, uint8_t value) {
- is31fl3737_led_t led;
- if (index >= 0 && index < IS31FL3737_LED_COUNT) {
- memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led));
-
- if (g_pwm_buffer[led.driver][led.v] == value) {
- return;
- }
- g_pwm_buffer[led.driver][led.v] = value;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void is31fl3737_set_value_all(uint8_t value) {
- for (int i = 0; i < IS31FL3737_LED_COUNT; i++) {
- is31fl3737_set_value(i, value);
- }
-}
-
-void is31fl3737_set_led_control_register(uint8_t index, bool value) {
- is31fl3737_led_t led;
- memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led));
-
- uint8_t control_register = led.v / 8;
- uint8_t bit_value = led.v % 8;
-
- if (value) {
- g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
- } else {
- g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
- }
-
- g_led_control_registers_update_required[led.driver] = true;
-}
-
-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_write_pwm_buffer(addr, g_pwm_buffer[index]);
- g_pwm_buffer_update_required[index] = false;
- }
-}
-
-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);
- for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
- is31fl3737_write_register(addr, i, g_led_control_registers[index][i]);
- }
- g_led_control_registers_update_required[index] = false;
- }
-}
-
-void is31fl3737_flush(void) {
- is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3737_I2C_ADDRESS_2)
- is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3737_I2C_ADDRESS_3)
- is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3737_I2C_ADDRESS_4)
- is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h
deleted file mode 100644
index 2658702b1b..0000000000
--- a/drivers/led/issi/is31fl3737-simple.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2021 Doni Crosby
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// ======== DEPRECATED DEFINES - DO NOT USE ========
-#ifdef ISSI_TIMEOUT
-# define IS31FL3737_I2C_TIMEOUT ISSI_TIMEOUT
-#endif
-#ifdef ISSI_PERSISTENCE
-# define IS31FL3737_I2C_PERSISTENCE ISSI_PERSISTENCE
-#endif
-#ifdef ISSI_PWM_FREQUENCY
-# define IS31FL3737_PWM_FREQUENCY ISSI_PWM_FREQUENCY
-#endif
-#ifdef ISSI_SWPULLUP
-# define IS31FL3737_SW_PULLUP ISSI_SWPULLUP
-#endif
-#ifdef ISSI_CSPULLUP
-# define IS31FL3737_CS_PULLDOWN ISSI_CSPULLUP
-#endif
-#ifdef ISSI_GLOBALCURRENT
-# define IS31FL3737_GLOBAL_CURRENT ISSI_GLOBALCURRENT
-#endif
-
-#define PUR_0R IS31FL3737_PUR_0_OHM
-#define PUR_05KR IS31FL3737_PUR_0K5_OHM
-#define PUR_1KR IS31FL3737_PUR_1K_OHM
-#define PUR_2KR IS31FL3737_PUR_2K_OHM
-#define PUR_4KR IS31FL3737_PUR_4K_OHM
-#define PUR_8KR IS31FL3737_PUR_8K_OHM
-#define PUR_16KR IS31FL3737_PUR_16K_OHM
-#define PUR_32KR IS31FL3737_PUR_32K_OHM
-// ========
-
-#define IS31FL3737_REG_INTERRUPT_MASK 0xF0
-#define IS31FL3737_REG_INTERRUPT_STATUS 0xF1
-
-#define IS31FL3737_REG_COMMAND 0xFD
-
-#define IS31FL3737_COMMAND_LED_CONTROL 0x00
-#define IS31FL3737_COMMAND_PWM 0x01
-#define IS31FL3737_COMMAND_AUTO_BREATH 0x02
-#define IS31FL3737_COMMAND_FUNCTION 0x03
-
-#define IS31FL3737_FUNCTION_REG_CONFIGURATION 0x00
-#define IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT 0x01
-#define IS31FL3737_FUNCTION_REG_SW_PULLUP 0x0F
-#define IS31FL3737_FUNCTION_REG_CS_PULLDOWN 0x10
-#define IS31FL3737_FUNCTION_REG_RESET 0x11
-
-#define IS31FL3737_REG_COMMAND_WRITE_LOCK 0xFE
-#define IS31FL3737_COMMAND_WRITE_LOCK_MAGIC 0xC5
-
-#define IS31FL3737_I2C_ADDRESS_GND 0x50
-#define IS31FL3737_I2C_ADDRESS_SCL 0x55
-#define IS31FL3737_I2C_ADDRESS_SDA 0x5A
-#define IS31FL3737_I2C_ADDRESS_VCC 0x5F
-
-#if defined(LED_MATRIX_IS31FL3737)
-# define IS31FL3737_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-#if defined(IS31FL3737_I2C_ADDRESS_4)
-# define IS31FL3737_DRIVER_COUNT 4
-#elif defined(IS31FL3737_I2C_ADDRESS_3)
-# define IS31FL3737_DRIVER_COUNT 3
-#elif defined(IS31FL3737_I2C_ADDRESS_2)
-# define IS31FL3737_DRIVER_COUNT 2
-#elif defined(IS31FL3737_I2C_ADDRESS_1)
-# define IS31FL3737_DRIVER_COUNT 1
-#endif
-
-typedef struct is31fl3737_led_t {
- uint8_t driver : 2;
- uint8_t v;
-} PACKED is31fl3737_led_t;
-
-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_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
-
-void is31fl3737_set_value(int index, uint8_t value);
-void is31fl3737_set_value_all(uint8_t value);
-
-void is31fl3737_set_led_control_register(uint8_t index, bool value);
-
-// This should not be called from an interrupt
-// (eg. from a timer interrupt).
-// Call this while idle (in between matrix scans).
-// If the buffer is dirty, it will update the driver with the buffer.
-void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index);
-void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index);
-
-void is31fl3737_flush(void);
-
-#define IS31FL3737_PDR_0_OHM 0b000 // No pull-down resistor
-#define IS31FL3737_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3737_PDR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3737_PDR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3737_PDR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3737_PDR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3737_PDR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3737_PDR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3737_PUR_0_OHM 0b000 // No pull-up resistor
-#define IS31FL3737_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3737_PUR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3737_PUR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3737_PUR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3737_PUR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3737_PUR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3737_PUR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3737_PWM_FREQUENCY_8K4_HZ 0b000
-#define IS31FL3737_PWM_FREQUENCY_4K2_HZ 0b001
-#define IS31FL3737_PWM_FREQUENCY_26K7_HZ 0b010
-#define IS31FL3737_PWM_FREQUENCY_2K1_HZ 0b011
-#define IS31FL3737_PWM_FREQUENCY_1K05_HZ 0b100
-
-#define A_1 0x00
-#define A_2 0x01
-#define A_3 0x02
-#define A_4 0x03
-#define A_5 0x04
-#define A_6 0x05
-#define A_7 0x08
-#define A_8 0x09
-#define A_9 0x0A
-#define A_10 0x0B
-#define A_11 0x0C
-#define A_12 0x0D
-
-#define B_1 0x10
-#define B_2 0x11
-#define B_3 0x12
-#define B_4 0x13
-#define B_5 0x14
-#define B_6 0x15
-#define B_7 0x18
-#define B_8 0x19
-#define B_9 0x1A
-#define B_10 0x1B
-#define B_11 0x1C
-#define B_12 0x1D
-
-#define C_1 0x20
-#define C_2 0x21
-#define C_3 0x22
-#define C_4 0x23
-#define C_5 0x24
-#define C_6 0x25
-#define C_7 0x28
-#define C_8 0x29
-#define C_9 0x2A
-#define C_10 0x2B
-#define C_11 0x2C
-#define C_12 0x2D
-
-#define D_1 0x30
-#define D_2 0x31
-#define D_3 0x32
-#define D_4 0x33
-#define D_5 0x34
-#define D_6 0x35
-#define D_7 0x38
-#define D_8 0x39
-#define D_9 0x3A
-#define D_10 0x3B
-#define D_11 0x3C
-#define D_12 0x3D
-
-#define E_1 0x40
-#define E_2 0x41
-#define E_3 0x42
-#define E_4 0x43
-#define E_5 0x44
-#define E_6 0x45
-#define E_7 0x48
-#define E_8 0x49
-#define E_9 0x4A
-#define E_10 0x4B
-#define E_11 0x4C
-#define E_12 0x4D
-
-#define F_1 0x50
-#define F_2 0x51
-#define F_3 0x52
-#define F_4 0x53
-#define F_5 0x54
-#define F_6 0x55
-#define F_7 0x58
-#define F_8 0x59
-#define F_9 0x5A
-#define F_10 0x5B
-#define F_11 0x5C
-#define F_12 0x5D
-
-#define G_1 0x60
-#define G_2 0x61
-#define G_3 0x62
-#define G_4 0x63
-#define G_5 0x64
-#define G_6 0x65
-#define G_7 0x68
-#define G_8 0x69
-#define G_9 0x6A
-#define G_10 0x6B
-#define G_11 0x6C
-#define G_12 0x6D
-
-#define H_1 0x70
-#define H_2 0x71
-#define H_3 0x72
-#define H_4 0x73
-#define H_5 0x74
-#define H_6 0x75
-#define H_7 0x78
-#define H_8 0x79
-#define H_9 0x7A
-#define H_10 0x7B
-#define H_11 0x7C
-#define H_12 0x7D
-
-#define I_1 0x80
-#define I_2 0x81
-#define I_3 0x82
-#define I_4 0x83
-#define I_5 0x84
-#define I_6 0x85
-#define I_7 0x88
-#define I_8 0x89
-#define I_9 0x8A
-#define I_10 0x8B
-#define I_11 0x8C
-#define I_12 0x8D
-
-#define J_1 0x90
-#define J_2 0x91
-#define J_3 0x92
-#define J_4 0x93
-#define J_5 0x94
-#define J_6 0x95
-#define J_7 0x98
-#define J_8 0x99
-#define J_9 0x9A
-#define J_10 0x9B
-#define J_11 0x9C
-#define J_12 0x9D
-
-#define K_1 0xA0
-#define K_2 0xA1
-#define K_3 0xA2
-#define K_4 0xA3
-#define K_5 0xA4
-#define K_6 0xA5
-#define K_7 0xA8
-#define K_8 0xA9
-#define K_9 0xAA
-#define K_10 0xAB
-#define K_11 0xAC
-#define K_12 0xAD
-
-#define L_1 0xB0
-#define L_2 0xB1
-#define L_3 0xB2
-#define L_4 0xB3
-#define L_5 0xB4
-#define L_6 0xB5
-#define L_7 0xB8
-#define L_8 0xB9
-#define L_9 0xBA
-#define L_10 0xBB
-#define L_11 0xBC
-#define L_12 0xBD
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c
index a458431952..e17d73c36f 100644
--- a/drivers/led/issi/is31fl3737.c
+++ b/drivers/led/issi/is31fl3737.c
@@ -18,7 +18,6 @@
*/
#include "is31fl3737.h"
-#include <string.h>
#include "i2c_master.h"
#include "wait.h"
@@ -41,7 +40,7 @@
# define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM
#endif
-#ifndef IS31FL3737_CS_PULLDONW
+#ifndef IS31FL3737_CS_PULLDOWN
# define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM
#endif
@@ -49,11 +48,8 @@
# define IS31FL3737_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_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 +62,32 @@ 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;
-
#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_write_register(addr << 1, reg, &data, 1, IS31FL3737_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3737_I2C_TIMEOUT);
#endif
}
-void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // assumes PG1 is already selected
-
- // transmit PWM registers in 12 transfers of 16 bytes
- // g_twi_transfer_buffer[] is 20 bytes
+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);
+}
- // 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;
- // 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);
+void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 1 is already selected.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; 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;
+ for (uint8_t j = 0; j < IS31FL3737_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3737_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3737_I2C_TIMEOUT);
#endif
}
}
@@ -138,32 +128,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++) {
+ for (uint8_t 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++) {
+ for (uint8_t 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)
@@ -179,12 +160,14 @@ void is31fl3737_init(uint8_t addr) {
void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
is31fl3737_led_t led;
+
if (index >= 0 && index < IS31FL3737_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led));
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
@@ -230,23 +213,22 @@ 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, index);
- is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]);
g_pwm_buffer_update_required[index] = false;
}
}
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);
- for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
+ is31fl3737_select_page(addr, IS31FL3737_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) {
is31fl3737_write_register(addr, i, g_led_control_registers[index][i]);
}
+
g_led_control_registers_update_required[index] = false;
}
}
diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h
index 8de3bf4ef5..7f0d86df82 100644
--- a/drivers/led/issi/is31fl3737.h
+++ b/drivers/led/issi/is31fl3737.h
@@ -119,7 +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_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+void is31fl3737_select_page(uint8_t addr, uint8_t page);
void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3741-mono.c b/drivers/led/issi/is31fl3741-mono.c
new file mode 100644
index 0000000000..4f388f56b0
--- /dev/null
+++ b/drivers/led/issi/is31fl3741-mono.c
@@ -0,0 +1,249 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ *
+ * 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 "is31fl3741-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3741_PWM_REGISTER_COUNT 351
+#define IS31FL3741_SCALING_REGISTER_COUNT 351
+
+#ifndef IS31FL3741_I2C_TIMEOUT
+# define IS31FL3741_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3741_I2C_PERSISTENCE
+# define IS31FL3741_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3741_CONFIGURATION
+# define IS31FL3741_CONFIGURATION 0x01
+#endif
+
+#ifndef IS31FL3741_PWM_FREQUENCY
+# define IS31FL3741_PWM_FREQUENCY IS31FL3741_PWM_FREQUENCY_29K_HZ
+#endif
+
+#ifndef IS31FL3741_SW_PULLUP
+# define IS31FL3741_SW_PULLUP IS31FL3741_PUR_32K_OHM
+#endif
+
+#ifndef IS31FL3741_CS_PULLDOWN
+# define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM
+#endif
+
+#ifndef IS31FL3741_GLOBAL_CURRENT
+# define IS31FL3741_GLOBAL_CURRENT 0xFF
+#endif
+
+// These buffers match the IS31FL3741 and IS31FL3741A PWM 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
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3741_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_SCALING_REGISTER_COUNT];
+
+void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3741_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3741_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, 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);
+}
+
+void is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assume page 0 is already selected
+
+ for (uint16_t i = 0; i < 342; i += 18) {
+ if (i == 180) {
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_1);
+ }
+
+#if IS31FL3741_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3741_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i % 180, g_pwm_buffer[index] + i, 18, IS31FL3741_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i % 180, g_pwm_buffer[index] + i, 18, IS31FL3741_I2C_TIMEOUT);
+#endif
+ }
+
+ // transfer the left cause the total number is 351
+#if IS31FL3741_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, 162, g_pwm_buffer[index] + 342, 9, IS31FL3741_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, 162, g_pwm_buffer[index] + 342, 9, IS31FL3741_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3741_init_drivers(void) {
+ i2c_init();
+
+ is31fl3741_init(IS31FL3741_I2C_ADDRESS_1);
+#if defined(IS31FL3741_I2C_ADDRESS_2)
+ is31fl3741_init(IS31FL3741_I2C_ADDRESS_2);
+# if defined(IS31FL3741_I2C_ADDRESS_3)
+ is31fl3741_init(IS31FL3741_I2C_ADDRESS_3);
+# if defined(IS31FL3741_I2C_ADDRESS_4)
+ is31fl3741_init(IS31FL3741_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3741_LED_COUNT; i++) {
+ is31fl3741_set_led_control_register(i, true);
+ }
+
+ is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3741_I2C_ADDRESS_2)
+ is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3741_I2C_ADDRESS_3)
+ is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3741_I2C_ADDRESS_4)
+ is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3741_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+ // Unlock the command register.
+
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_FUNCTION);
+
+ // Set to Normal operation
+ is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION);
+
+ // Set Golbal Current Control Register
+ is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3741_GLOBAL_CURRENT);
+ // Set Pull up & Down for SWx CSy
+ is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP));
+ // Set PWM frequency
+ is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111));
+
+ // is31fl3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3741_set_value(int index, uint8_t value) {
+ is31fl3741_led_t led;
+
+ if (index >= 0 && index < IS31FL3741_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.v] = value;
+ }
+}
+
+void is31fl3741_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3741_LED_COUNT; i++) {
+ is31fl3741_set_value(i, value);
+ }
+}
+
+void is31fl3741_set_led_control_register(uint8_t index, bool value) {
+ is31fl3741_led_t led;
+ memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led));
+
+ if (value) {
+ g_scaling_registers[led.driver][led.v] = 0xFF;
+ } else {
+ g_scaling_registers[led.driver][led.v] = 0x00;
+ }
+
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_PWM_0);
+
+ is31fl3741_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) {
+ g_pwm_buffer[pled->driver][pled->v] = value;
+ g_pwm_buffer_update_required[pled->driver] = true;
+}
+
+void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_SCALING_0);
+
+ // 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]);
+ }
+
+ is31fl3741_select_page(addr, IS31FL3741_COMMAND_SCALING_1);
+
+ // 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]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value) {
+ g_scaling_registers[pled->driver][pled->v] = value;
+ g_scaling_registers_update_required[pled->driver] = true;
+}
+
+void is31fl3741_flush(void) {
+ is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3741_I2C_ADDRESS_2)
+ is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3741_I2C_ADDRESS_3)
+ is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3741_I2C_ADDRESS_4)
+ is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3741-mono.h b/drivers/led/issi/is31fl3741-mono.h
new file mode 100644
index 0000000000..d2ba1b7d17
--- /dev/null
+++ b/drivers/led/issi/is31fl3741-mono.h
@@ -0,0 +1,516 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef ISSI_TIMEOUT
+# define IS31FL3741_I2C_TIMEOUT ISSI_TIMEOUT
+#endif
+#ifdef ISSI_PERSISTENCE
+# define IS31FL3741_I2C_PERSISTENCE ISSI_PERSISTENCE
+#endif
+#ifdef ISSI_CONFIGURATION
+# define IS31FL3741_CONFIGURATION ISSI_CONFIGURATION
+#endif
+#ifdef ISSI_SWPULLUP
+# define IS31FL3741_SW_PULLUP ISSI_SWPULLUP
+#endif
+#ifdef ISSI_CSPULLUP
+# define IS31FL3741_CS_PULLDOWN ISSI_CSPULLUP
+#endif
+#ifdef ISSI_GLOBALCURRENT
+# define IS31FL3741_GLOBAL_CURRENT ISSI_GLOBALCURRENT
+#endif
+
+#define PUR_0R IS31FL3741_PUR_0_OHM
+#define PUR_05KR IS31FL3741_PUR_0K5_OHM
+#define PUR_1KR IS31FL3741_PUR_1K_OHM
+#define PUR_2KR IS31FL3741_PUR_2K_OHM
+#define PUR_4KR IS31FL3741_PUR_4K_OHM
+#define PUR_8KR IS31FL3741_PUR_8K_OHM
+#define PUR_16KR IS31FL3741_PUR_16K_OHM
+#define PUR_32KR IS31FL3741_PUR_32K_OHM
+// ========
+
+#define IS31FL3741_REG_INTERRUPT_MASK 0xF0
+#define IS31FL3741_REG_INTERRUPT_STATUS 0xF1
+#define IS31FL3741_REG_ID 0xFC
+
+#define IS31FL3741_REG_COMMAND 0xFD
+
+#define IS31FL3741_COMMAND_PWM_0 0x00
+#define IS31FL3741_COMMAND_PWM_1 0x01
+#define IS31FL3741_COMMAND_SCALING_0 0x02
+#define IS31FL3741_COMMAND_SCALING_1 0x03
+#define IS31FL3741_COMMAND_FUNCTION 0x04
+
+#define IS31FL3741_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3741_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3741_FUNCTION_REG_PWM_FREQUENCY 0x36
+#define IS31FL3741_FUNCTION_REG_RESET 0x3F
+
+#define IS31FL3741_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3741_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3741_I2C_ADDRESS_GND 0x30
+#define IS31FL3741_I2C_ADDRESS_SCL 0x31
+#define IS31FL3741_I2C_ADDRESS_SDA 0x32
+#define IS31FL3741_I2C_ADDRESS_VCC 0x33
+
+#if defined(LED_MATRIX_IS31FL3741)
+# define IS31FL3741_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3741_I2C_ADDRESS_4)
+# define IS31FL3741_DRIVER_COUNT 4
+#elif defined(IS31FL3741_I2C_ADDRESS_3)
+# define IS31FL3741_DRIVER_COUNT 3
+#elif defined(IS31FL3741_I2C_ADDRESS_2)
+# define IS31FL3741_DRIVER_COUNT 2
+#elif defined(IS31FL3741_I2C_ADDRESS_1)
+# define IS31FL3741_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3741_led_t {
+ uint8_t driver : 2;
+ uint16_t v : 9;
+} PACKED is31fl3741_led_t;
+
+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);
+
+void is31fl3741_set_value(int index, uint8_t value);
+void is31fl3741_set_value_all(uint8_t value);
+
+void is31fl3741_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index);
+void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value);
+
+void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value);
+
+void is31fl3741_flush(void);
+
+#define IS31FL3741_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3741_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3741_PDR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3741_PDR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3741_PDR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3741_PDR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3741_PDR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3741_PDR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3741_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3741_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3741_PUR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3741_PUR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3741_PUR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3741_PUR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3741_PUR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3741_PUR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3741_PWM_FREQUENCY_29K_HZ 0b0000
+#define IS31FL3741_PWM_FREQUENCY_3K6_HZ 0b0011
+#define IS31FL3741_PWM_FREQUENCY_1K8_HZ 0b0111
+#define IS31FL3741_PWM_FREQUENCY_900_HZ 0b1011
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+#define CS19_SW1 0x12
+#define CS20_SW1 0x13
+#define CS21_SW1 0x14
+#define CS22_SW1 0x15
+#define CS23_SW1 0x16
+#define CS24_SW1 0x17
+#define CS25_SW1 0x18
+#define CS26_SW1 0x19
+#define CS27_SW1 0x1A
+#define CS28_SW1 0x1B
+#define CS29_SW1 0x1C
+#define CS30_SW1 0x1D
+
+#define CS1_SW2 0x1E
+#define CS2_SW2 0x1F
+#define CS3_SW2 0x20
+#define CS4_SW2 0x21
+#define CS5_SW2 0x22
+#define CS6_SW2 0x23
+#define CS7_SW2 0x24
+#define CS8_SW2 0x25
+#define CS9_SW2 0x26
+#define CS10_SW2 0x27
+#define CS11_SW2 0x28
+#define CS12_SW2 0x29
+#define CS13_SW2 0x2A
+#define CS14_SW2 0x2B
+#define CS15_SW2 0x2C
+#define CS16_SW2 0x2D
+#define CS17_SW2 0x2E
+#define CS18_SW2 0x2F
+#define CS19_SW2 0x30
+#define CS20_SW2 0x31
+#define CS21_SW2 0x32
+#define CS22_SW2 0x33
+#define CS23_SW2 0x34
+#define CS24_SW2 0x35
+#define CS25_SW2 0x36
+#define CS26_SW2 0x37
+#define CS27_SW2 0x38
+#define CS28_SW2 0x39
+#define CS29_SW2 0x3A
+#define CS30_SW2 0x3B
+
+#define CS1_SW3 0x3C
+#define CS2_SW3 0x3D
+#define CS3_SW3 0x3E
+#define CS4_SW3 0x3F
+#define CS5_SW3 0x40
+#define CS6_SW3 0x41
+#define CS7_SW3 0x42
+#define CS8_SW3 0x43
+#define CS9_SW3 0x44
+#define CS10_SW3 0x45
+#define CS11_SW3 0x46
+#define CS12_SW3 0x47
+#define CS13_SW3 0x48
+#define CS14_SW3 0x49
+#define CS15_SW3 0x4A
+#define CS16_SW3 0x4B
+#define CS17_SW3 0x4C
+#define CS18_SW3 0x4D
+#define CS19_SW3 0x4E
+#define CS20_SW3 0x4F
+#define CS21_SW3 0x50
+#define CS22_SW3 0x51
+#define CS23_SW3 0x52
+#define CS24_SW3 0x53
+#define CS25_SW3 0x54
+#define CS26_SW3 0x55
+#define CS27_SW3 0x56
+#define CS28_SW3 0x57
+#define CS29_SW3 0x58
+#define CS30_SW3 0x59
+
+#define CS1_SW4 0x5A
+#define CS2_SW4 0x5B
+#define CS3_SW4 0x5C
+#define CS4_SW4 0x5D
+#define CS5_SW4 0x5E
+#define CS6_SW4 0x5F
+#define CS7_SW4 0x60
+#define CS8_SW4 0x61
+#define CS9_SW4 0x62
+#define CS10_SW4 0x63
+#define CS11_SW4 0x64
+#define CS12_SW4 0x65
+#define CS13_SW4 0x66
+#define CS14_SW4 0x67
+#define CS15_SW4 0x68
+#define CS16_SW4 0x69
+#define CS17_SW4 0x6A
+#define CS18_SW4 0x6B
+#define CS19_SW4 0x6C
+#define CS20_SW4 0x6D
+#define CS21_SW4 0x6E
+#define CS22_SW4 0x6F
+#define CS23_SW4 0x70
+#define CS24_SW4 0x71
+#define CS25_SW4 0x72
+#define CS26_SW4 0x73
+#define CS27_SW4 0x74
+#define CS28_SW4 0x75
+#define CS29_SW4 0x76
+#define CS30_SW4 0x77
+
+#define CS1_SW5 0x78
+#define CS2_SW5 0x79
+#define CS3_SW5 0x7A
+#define CS4_SW5 0x7B
+#define CS5_SW5 0x7C
+#define CS6_SW5 0x7D
+#define CS7_SW5 0x7E
+#define CS8_SW5 0x7F
+#define CS9_SW5 0x80
+#define CS10_SW5 0x81
+#define CS11_SW5 0x82
+#define CS12_SW5 0x83
+#define CS13_SW5 0x84
+#define CS14_SW5 0x85
+#define CS15_SW5 0x86
+#define CS16_SW5 0x87
+#define CS17_SW5 0x88
+#define CS18_SW5 0x89
+#define CS19_SW5 0x8A
+#define CS20_SW5 0x8B
+#define CS21_SW5 0x8C
+#define CS22_SW5 0x8D
+#define CS23_SW5 0x8E
+#define CS24_SW5 0x8F
+#define CS25_SW5 0x90
+#define CS26_SW5 0x91
+#define CS27_SW5 0x92
+#define CS28_SW5 0x93
+#define CS29_SW5 0x94
+#define CS30_SW5 0x95
+
+#define CS1_SW6 0x96
+#define CS2_SW6 0x97
+#define CS3_SW6 0x98
+#define CS4_SW6 0x99
+#define CS5_SW6 0x9A
+#define CS6_SW6 0x9B
+#define CS7_SW6 0x9C
+#define CS8_SW6 0x9D
+#define CS9_SW6 0x9E
+#define CS10_SW6 0x9F
+#define CS11_SW6 0xA0
+#define CS12_SW6 0xA1
+#define CS13_SW6 0xA2
+#define CS14_SW6 0xA3
+#define CS15_SW6 0xA4
+#define CS16_SW6 0xA5
+#define CS17_SW6 0xA6
+#define CS18_SW6 0xA7
+#define CS19_SW6 0xA8
+#define CS20_SW6 0xA9
+#define CS21_SW6 0xAA
+#define CS22_SW6 0xAB
+#define CS23_SW6 0xAC
+#define CS24_SW6 0xAD
+#define CS25_SW6 0xAE
+#define CS26_SW6 0xAF
+#define CS27_SW6 0xB0
+#define CS28_SW6 0xB1
+#define CS29_SW6 0xB2
+#define CS30_SW6 0xB3
+
+#define CS1_SW7 0xB4
+#define CS2_SW7 0xB5
+#define CS3_SW7 0xB6
+#define CS4_SW7 0xB7
+#define CS5_SW7 0xB8
+#define CS6_SW7 0xB9
+#define CS7_SW7 0xBA
+#define CS8_SW7 0xBB
+#define CS9_SW7 0xBC
+#define CS10_SW7 0xBD
+#define CS11_SW7 0xBE
+#define CS12_SW7 0xBF
+#define CS13_SW7 0xC0
+#define CS14_SW7 0xC1
+#define CS15_SW7 0xC2
+#define CS16_SW7 0xC3
+#define CS17_SW7 0xC4
+#define CS18_SW7 0xC5
+#define CS19_SW7 0xC6
+#define CS20_SW7 0xC7
+#define CS21_SW7 0xC8
+#define CS22_SW7 0xC9
+#define CS23_SW7 0xCA
+#define CS24_SW7 0xCB
+#define CS25_SW7 0xCC
+#define CS26_SW7 0xCD
+#define CS27_SW7 0xCE
+#define CS28_SW7 0xCF
+#define CS29_SW7 0xD0
+#define CS30_SW7 0xD1
+
+#define CS1_SW8 0xD2
+#define CS2_SW8 0xD3
+#define CS3_SW8 0xD4
+#define CS4_SW8 0xD5
+#define CS5_SW8 0xD6
+#define CS6_SW8 0xD7
+#define CS7_SW8 0xD8
+#define CS8_SW8 0xD9
+#define CS9_SW8 0xDA
+#define CS10_SW8 0xDB
+#define CS11_SW8 0xDC
+#define CS12_SW8 0xDD
+#define CS13_SW8 0xDE
+#define CS14_SW8 0xDF
+#define CS15_SW8 0xE0
+#define CS16_SW8 0xE1
+#define CS17_SW8 0xE2
+#define CS18_SW8 0xE3
+#define CS19_SW8 0xE4
+#define CS20_SW8 0xE5
+#define CS21_SW8 0xE6
+#define CS22_SW8 0xE7
+#define CS23_SW8 0xE8
+#define CS24_SW8 0xE9
+#define CS25_SW8 0xEA
+#define CS26_SW8 0xEB
+#define CS27_SW8 0xEC
+#define CS28_SW8 0xED
+#define CS29_SW8 0xEE
+#define CS30_SW8 0xEF
+
+#define CS1_SW9 0xF0
+#define CS2_SW9 0xF1
+#define CS3_SW9 0xF2
+#define CS4_SW9 0xF3
+#define CS5_SW9 0xF4
+#define CS6_SW9 0xF5
+#define CS7_SW9 0xF6
+#define CS8_SW9 0xF7
+#define CS9_SW9 0xF8
+#define CS10_SW9 0xF9
+#define CS11_SW9 0xFA
+#define CS12_SW9 0xFB
+#define CS13_SW9 0xFC
+#define CS14_SW9 0xFD
+#define CS15_SW9 0xFE
+#define CS16_SW9 0xFF
+#define CS17_SW9 0x100
+#define CS18_SW9 0x101
+#define CS19_SW9 0x102
+#define CS20_SW9 0x103
+#define CS21_SW9 0x104
+#define CS22_SW9 0x105
+#define CS23_SW9 0x106
+#define CS24_SW9 0x107
+#define CS25_SW9 0x108
+#define CS26_SW9 0x109
+#define CS27_SW9 0x10A
+#define CS28_SW9 0x10B
+#define CS29_SW9 0x10C
+#define CS30_SW9 0x10D
+
+#define CS31_SW1 0x10E
+#define CS32_SW1 0x10F
+#define CS33_SW1 0x110
+#define CS34_SW1 0x111
+#define CS35_SW1 0x112
+#define CS36_SW1 0x113
+#define CS37_SW1 0x114
+#define CS38_SW1 0x115
+#define CS39_SW1 0x116
+
+#define CS31_SW2 0x117
+#define CS32_SW2 0x118
+#define CS33_SW2 0x119
+#define CS34_SW2 0x11A
+#define CS35_SW2 0x11B
+#define CS36_SW2 0x11C
+#define CS37_SW2 0x11D
+#define CS38_SW2 0x11E
+#define CS39_SW2 0x11F
+
+#define CS31_SW3 0x120
+#define CS32_SW3 0x121
+#define CS33_SW3 0x122
+#define CS34_SW3 0x123
+#define CS35_SW3 0x124
+#define CS36_SW3 0x125
+#define CS37_SW3 0x126
+#define CS38_SW3 0x127
+#define CS39_SW3 0x128
+
+#define CS31_SW4 0x129
+#define CS32_SW4 0x12A
+#define CS33_SW4 0x12B
+#define CS34_SW4 0x12C
+#define CS35_SW4 0x12D
+#define CS36_SW4 0x12E
+#define CS37_SW4 0x12F
+#define CS38_SW4 0x130
+#define CS39_SW4 0x131
+
+#define CS31_SW5 0x132
+#define CS32_SW5 0x133
+#define CS33_SW5 0x134
+#define CS34_SW5 0x135
+#define CS35_SW5 0x136
+#define CS36_SW5 0x137
+#define CS37_SW5 0x138
+#define CS38_SW5 0x139
+#define CS39_SW5 0x13A
+
+#define CS31_SW6 0x13B
+#define CS32_SW6 0x13C
+#define CS33_SW6 0x13D
+#define CS34_SW6 0x13E
+#define CS35_SW6 0x13F
+#define CS36_SW6 0x140
+#define CS37_SW6 0x141
+#define CS38_SW6 0x142
+#define CS39_SW6 0x143
+
+#define CS31_SW7 0x144
+#define CS32_SW7 0x145
+#define CS33_SW7 0x146
+#define CS34_SW7 0x147
+#define CS35_SW7 0x148
+#define CS36_SW7 0x149
+#define CS37_SW7 0x14A
+#define CS38_SW7 0x14B
+#define CS39_SW7 0x14C
+
+#define CS31_SW8 0x14D
+#define CS32_SW8 0x14E
+#define CS33_SW8 0x14F
+#define CS34_SW8 0x150
+#define CS35_SW8 0x151
+#define CS36_SW8 0x152
+#define CS37_SW8 0x153
+#define CS38_SW8 0x154
+#define CS39_SW8 0x155
+
+#define CS31_SW9 0x156
+#define CS32_SW9 0x157
+#define CS33_SW9 0x158
+#define CS34_SW9 0x159
+#define CS35_SW9 0x15A
+#define CS36_SW9 0x15B
+#define CS37_SW9 0x15C
+#define CS38_SW9 0x15D
+#define CS39_SW9 0x15E
diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c
deleted file mode 100644
index f7009853ba..0000000000
--- a/drivers/led/issi/is31fl3741-simple.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- *
- * 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 "is31fl3741-simple.h"
-#include <string.h>
-#include "i2c_master.h"
-#include "wait.h"
-
-#define IS31FL3741_PWM_REGISTER_COUNT 351
-
-#ifndef IS31FL3741_I2C_TIMEOUT
-# define IS31FL3741_I2C_TIMEOUT 100
-#endif
-
-#ifndef IS31FL3741_I2C_PERSISTENCE
-# define IS31FL3741_I2C_PERSISTENCE 0
-#endif
-
-#ifndef IS31FL3741_CONFIGURATION
-# define IS31FL3741_CONFIGURATION 0x01
-#endif
-
-#ifndef IS31FL3741_PWM_FREQUENCY
-# define IS31FL3741_PWM_FREQUENCY IS31FL3741_PWM_FREQUENCY_29K_HZ
-#endif
-
-#ifndef IS31FL3741_SW_PULLUP
-# define IS31FL3741_SW_PULLUP IS31FL3741_PUR_32K_OHM
-#endif
-
-#ifndef IS31FL3741_CS_PULLDOWN
-# define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM
-#endif
-
-#ifndef IS31FL3741_GLOBAL_CURRENT
-# define IS31FL3741_GLOBAL_CURRENT 0xFF
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_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.
-// 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
-// probably not worth the extra complexity.
-uint8_t g_pwm_buffer[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT];
-bool g_pwm_buffer_update_required[IS31FL3741_DRIVER_COUNT] = {false};
-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;
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT);
-#endif
-}
-
-bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assume PG0 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);
- }
-
- g_twi_transfer_buffer[0] = i % 180;
- memcpy(g_twi_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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_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);
-
-#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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
- return false;
- }
-#endif
-
- return true;
-}
-
-void is31fl3741_init_drivers(void) {
- i2c_init();
-
- is31fl3741_init(IS31FL3741_I2C_ADDRESS_1);
-#if defined(IS31FL3741_I2C_ADDRESS_2)
- is31fl3741_init(IS31FL3741_I2C_ADDRESS_2);
-# if defined(IS31FL3741_I2C_ADDRESS_3)
- is31fl3741_init(IS31FL3741_I2C_ADDRESS_3);
-# if defined(IS31FL3741_I2C_ADDRESS_4)
- is31fl3741_init(IS31FL3741_I2C_ADDRESS_4);
-# endif
-# endif
-#endif
-
- for (int i = 0; i < IS31FL3741_LED_COUNT; i++) {
- is31fl3741_set_led_control_register(i, true);
- }
-
- is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3741_I2C_ADDRESS_2)
- is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3741_I2C_ADDRESS_3)
- is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3741_I2C_ADDRESS_4)
- is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void is31fl3741_init(uint8_t addr) {
- // In order to avoid the LEDs being driven with garbage data
- // in the LED driver's PWM registers, shutdown is enabled last.
- // Set up the mode and other settings, clear the PWM registers,
- // 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);
-
- // Set to Normal operation
- is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION);
-
- // Set Golbal Current Control Register
- is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3741_GLOBAL_CURRENT);
- // Set Pull up & Down for SWx CSy
- is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP));
- // Set PWM frequency
- is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111));
-
- // is31fl3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF);
-
- // Wait 10ms to ensure the device has woken up.
- wait_ms(10);
-}
-
-void is31fl3741_set_value(int index, uint8_t value) {
- is31fl3741_led_t led;
- if (index >= 0 && index < IS31FL3741_LED_COUNT) {
- memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led));
-
- if (g_pwm_buffer[led.driver][led.v] == value) {
- return;
- }
- g_pwm_buffer_update_required[led.driver] = true;
- g_pwm_buffer[led.driver][led.v] = value;
- }
-}
-
-void is31fl3741_set_value_all(uint8_t value) {
- for (int i = 0; i < IS31FL3741_LED_COUNT; i++) {
- is31fl3741_set_value(i, value);
- }
-}
-
-void is31fl3741_set_led_control_register(uint8_t index, bool value) {
- is31fl3741_led_t led;
- memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led));
-
- if (value) {
- g_scaling_registers[led.driver][led.v] = 0xFF;
- } else {
- g_scaling_registers[led.driver][led.v] = 0x00;
- }
-
- g_scaling_registers_update_required[led.driver] = true;
-}
-
-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_write_pwm_buffer(addr, g_pwm_buffer[index]);
- }
-
- g_pwm_buffer_update_required[index] = false;
-}
-
-void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) {
- g_pwm_buffer[pled->driver][pled->v] = value;
-
- g_pwm_buffer_update_required[pled->driver] = true;
-}
-
-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);
-
- // CS1_SW1 to CS30_SW6 are on PG2
- 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);
-
- // CS1_SW7 to CS39_SW9 are on PG3
- for (int i = CS1_SW7; i <= CS39_SW9; ++i) {
- is31fl3741_write_register(addr, i - CS1_SW7, g_scaling_registers[index][i]);
- }
-
- g_scaling_registers_update_required[index] = false;
- }
-}
-
-void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value) {
- g_scaling_registers[pled->driver][pled->v] = value;
-
- g_scaling_registers_update_required[pled->driver] = true;
-}
-
-void is31fl3741_flush(void) {
- is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0);
-#if defined(IS31FL3741_I2C_ADDRESS_2)
- is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1);
-# if defined(IS31FL3741_I2C_ADDRESS_3)
- is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2);
-# if defined(IS31FL3741_I2C_ADDRESS_4)
- is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h
deleted file mode 100644
index 34608a37e0..0000000000
--- a/drivers/led/issi/is31fl3741-simple.h
+++ /dev/null
@@ -1,516 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// ======== DEPRECATED DEFINES - DO NOT USE ========
-#ifdef ISSI_TIMEOUT
-# define IS31FL3741_I2C_TIMEOUT ISSI_TIMEOUT
-#endif
-#ifdef ISSI_PERSISTENCE
-# define IS31FL3741_I2C_PERSISTENCE ISSI_PERSISTENCE
-#endif
-#ifdef ISSI_CONFIGURATION
-# define IS31FL3741_CONFIGURATION ISSI_CONFIGURATION
-#endif
-#ifdef ISSI_SWPULLUP
-# define IS31FL3741_SW_PULLUP ISSI_SWPULLUP
-#endif
-#ifdef ISSI_CSPULLUP
-# define IS31FL3741_CS_PULLDOWN ISSI_CSPULLUP
-#endif
-#ifdef ISSI_GLOBALCURRENT
-# define IS31FL3741_GLOBAL_CURRENT ISSI_GLOBALCURRENT
-#endif
-
-#define PUR_0R IS31FL3741_PUR_0_OHM
-#define PUR_05KR IS31FL3741_PUR_0K5_OHM
-#define PUR_1KR IS31FL3741_PUR_1K_OHM
-#define PUR_2KR IS31FL3741_PUR_2K_OHM
-#define PUR_4KR IS31FL3741_PUR_4K_OHM
-#define PUR_8KR IS31FL3741_PUR_8K_OHM
-#define PUR_16KR IS31FL3741_PUR_16K_OHM
-#define PUR_32KR IS31FL3741_PUR_32K_OHM
-// ========
-
-#define IS31FL3741_REG_INTERRUPT_MASK 0xF0
-#define IS31FL3741_REG_INTERRUPT_STATUS 0xF1
-#define IS31FL3741_REG_ID 0xFC
-
-#define IS31FL3741_REG_COMMAND 0xFD
-
-#define IS31FL3741_COMMAND_PWM_0 0x00
-#define IS31FL3741_COMMAND_PWM_1 0x01
-#define IS31FL3741_COMMAND_SCALING_0 0x02
-#define IS31FL3741_COMMAND_SCALING_1 0x03
-#define IS31FL3741_COMMAND_FUNCTION 0x04
-
-#define IS31FL3741_FUNCTION_REG_CONFIGURATION 0x00
-#define IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT 0x01
-#define IS31FL3741_FUNCTION_REG_PULLDOWNUP 0x02
-#define IS31FL3741_FUNCTION_REG_PWM_FREQUENCY 0x36
-#define IS31FL3741_FUNCTION_REG_RESET 0x3F
-
-#define IS31FL3741_REG_COMMAND_WRITE_LOCK 0xFE
-#define IS31FL3741_COMMAND_WRITE_LOCK_MAGIC 0xC5
-
-#define IS31FL3741_I2C_ADDRESS_GND 0x30
-#define IS31FL3741_I2C_ADDRESS_SCL 0x31
-#define IS31FL3741_I2C_ADDRESS_SDA 0x32
-#define IS31FL3741_I2C_ADDRESS_VCC 0x33
-
-#if defined(LED_MATRIX_IS31FL3741)
-# define IS31FL3741_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-#if defined(IS31FL3741_I2C_ADDRESS_4)
-# define IS31FL3741_DRIVER_COUNT 4
-#elif defined(IS31FL3741_I2C_ADDRESS_3)
-# define IS31FL3741_DRIVER_COUNT 3
-#elif defined(IS31FL3741_I2C_ADDRESS_2)
-# define IS31FL3741_DRIVER_COUNT 2
-#elif defined(IS31FL3741_I2C_ADDRESS_1)
-# define IS31FL3741_DRIVER_COUNT 1
-#endif
-
-typedef struct is31fl3741_led_t {
- uint8_t driver : 2;
- uint16_t v : 9;
-} PACKED is31fl3741_led_t;
-
-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);
-bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
-
-void is31fl3741_set_value(int index, uint8_t value);
-void is31fl3741_set_value_all(uint8_t value);
-
-void is31fl3741_set_led_control_register(uint8_t index, bool value);
-
-// This should not be called from an interrupt
-// (eg. from a timer interrupt).
-// Call this while idle (in between matrix scans).
-// If the buffer is dirty, it will update the driver with the buffer.
-void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index);
-void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index);
-void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value);
-
-void is31fl3741_set_pwm_buffer(const is31fl3741_led *pled, uint8_t value);
-
-void is31fl3741_flush(void);
-
-#define IS31FL3741_PDR_0_OHM 0b000 // No pull-down resistor
-#define IS31FL3741_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3741_PDR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3741_PDR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3741_PDR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3741_PDR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3741_PDR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3741_PDR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3741_PUR_0_OHM 0b000 // No pull-up resistor
-#define IS31FL3741_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
-#define IS31FL3741_PUR_1K_OHM 0b010 // 1 kOhm resistor
-#define IS31FL3741_PUR_2K_OHM 0b011 // 2 kOhm resistor
-#define IS31FL3741_PUR_4K_OHM 0b100 // 4 kOhm resistor
-#define IS31FL3741_PUR_8K_OHM 0b101 // 8 kOhm resistor
-#define IS31FL3741_PUR_16K_OHM 0b110 // 16 kOhm resistor
-#define IS31FL3741_PUR_32K_OHM 0b111 // 32 kOhm resistor
-
-#define IS31FL3741_PWM_FREQUENCY_29K_HZ 0b0000
-#define IS31FL3741_PWM_FREQUENCY_3K6_HZ 0b0011
-#define IS31FL3741_PWM_FREQUENCY_1K8_HZ 0b0111
-#define IS31FL3741_PWM_FREQUENCY_900_HZ 0b1011
-
-#define CS1_SW1 0x00
-#define CS2_SW1 0x01
-#define CS3_SW1 0x02
-#define CS4_SW1 0x03
-#define CS5_SW1 0x04
-#define CS6_SW1 0x05
-#define CS7_SW1 0x06
-#define CS8_SW1 0x07
-#define CS9_SW1 0x08
-#define CS10_SW1 0x09
-#define CS11_SW1 0x0A
-#define CS12_SW1 0x0B
-#define CS13_SW1 0x0C
-#define CS14_SW1 0x0D
-#define CS15_SW1 0x0E
-#define CS16_SW1 0x0F
-#define CS17_SW1 0x10
-#define CS18_SW1 0x11
-#define CS19_SW1 0x12
-#define CS20_SW1 0x13
-#define CS21_SW1 0x14
-#define CS22_SW1 0x15
-#define CS23_SW1 0x16
-#define CS24_SW1 0x17
-#define CS25_SW1 0x18
-#define CS26_SW1 0x19
-#define CS27_SW1 0x1A
-#define CS28_SW1 0x1B
-#define CS29_SW1 0x1C
-#define CS30_SW1 0x1D
-
-#define CS1_SW2 0x1E
-#define CS2_SW2 0x1F
-#define CS3_SW2 0x20
-#define CS4_SW2 0x21
-#define CS5_SW2 0x22
-#define CS6_SW2 0x23
-#define CS7_SW2 0x24
-#define CS8_SW2 0x25
-#define CS9_SW2 0x26
-#define CS10_SW2 0x27
-#define CS11_SW2 0x28
-#define CS12_SW2 0x29
-#define CS13_SW2 0x2A
-#define CS14_SW2 0x2B
-#define CS15_SW2 0x2C
-#define CS16_SW2 0x2D
-#define CS17_SW2 0x2E
-#define CS18_SW2 0x2F
-#define CS19_SW2 0x30
-#define CS20_SW2 0x31
-#define CS21_SW2 0x32
-#define CS22_SW2 0x33
-#define CS23_SW2 0x34
-#define CS24_SW2 0x35
-#define CS25_SW2 0x36
-#define CS26_SW2 0x37
-#define CS27_SW2 0x38
-#define CS28_SW2 0x39
-#define CS29_SW2 0x3A
-#define CS30_SW2 0x3B
-
-#define CS1_SW3 0x3C
-#define CS2_SW3 0x3D
-#define CS3_SW3 0x3E
-#define CS4_SW3 0x3F
-#define CS5_SW3 0x40
-#define CS6_SW3 0x41
-#define CS7_SW3 0x42
-#define CS8_SW3 0x43
-#define CS9_SW3 0x44
-#define CS10_SW3 0x45
-#define CS11_SW3 0x46
-#define CS12_SW3 0x47
-#define CS13_SW3 0x48
-#define CS14_SW3 0x49
-#define CS15_SW3 0x4A
-#define CS16_SW3 0x4B
-#define CS17_SW3 0x4C
-#define CS18_SW3 0x4D
-#define CS19_SW3 0x4E
-#define CS20_SW3 0x4F
-#define CS21_SW3 0x50
-#define CS22_SW3 0x51
-#define CS23_SW3 0x52
-#define CS24_SW3 0x53
-#define CS25_SW3 0x54
-#define CS26_SW3 0x55
-#define CS27_SW3 0x56
-#define CS28_SW3 0x57
-#define CS29_SW3 0x58
-#define CS30_SW3 0x59
-
-#define CS1_SW4 0x5A
-#define CS2_SW4 0x5B
-#define CS3_SW4 0x5C
-#define CS4_SW4 0x5D
-#define CS5_SW4 0x5E
-#define CS6_SW4 0x5F
-#define CS7_SW4 0x60
-#define CS8_SW4 0x61
-#define CS9_SW4 0x62
-#define CS10_SW4 0x63
-#define CS11_SW4 0x64
-#define CS12_SW4 0x65
-#define CS13_SW4 0x66
-#define CS14_SW4 0x67
-#define CS15_SW4 0x68
-#define CS16_SW4 0x69
-#define CS17_SW4 0x6A
-#define CS18_SW4 0x6B
-#define CS19_SW4 0x6C
-#define CS20_SW4 0x6D
-#define CS21_SW4 0x6E
-#define CS22_SW4 0x6F
-#define CS23_SW4 0x70
-#define CS24_SW4 0x71
-#define CS25_SW4 0x72
-#define CS26_SW4 0x73
-#define CS27_SW4 0x74
-#define CS28_SW4 0x75
-#define CS29_SW4 0x76
-#define CS30_SW4 0x77
-
-#define CS1_SW5 0x78
-#define CS2_SW5 0x79
-#define CS3_SW5 0x7A
-#define CS4_SW5 0x7B
-#define CS5_SW5 0x7C
-#define CS6_SW5 0x7D
-#define CS7_SW5 0x7E
-#define CS8_SW5 0x7F
-#define CS9_SW5 0x80
-#define CS10_SW5 0x81
-#define CS11_SW5 0x82
-#define CS12_SW5 0x83
-#define CS13_SW5 0x84
-#define CS14_SW5 0x85
-#define CS15_SW5 0x86
-#define CS16_SW5 0x87
-#define CS17_SW5 0x88
-#define CS18_SW5 0x89
-#define CS19_SW5 0x8A
-#define CS20_SW5 0x8B
-#define CS21_SW5 0x8C
-#define CS22_SW5 0x8D
-#define CS23_SW5 0x8E
-#define CS24_SW5 0x8F
-#define CS25_SW5 0x90
-#define CS26_SW5 0x91
-#define CS27_SW5 0x92
-#define CS28_SW5 0x93
-#define CS29_SW5 0x94
-#define CS30_SW5 0x95
-
-#define CS1_SW6 0x96
-#define CS2_SW6 0x97
-#define CS3_SW6 0x98
-#define CS4_SW6 0x99
-#define CS5_SW6 0x9A
-#define CS6_SW6 0x9B
-#define CS7_SW6 0x9C
-#define CS8_SW6 0x9D
-#define CS9_SW6 0x9E
-#define CS10_SW6 0x9F
-#define CS11_SW6 0xA0
-#define CS12_SW6 0xA1
-#define CS13_SW6 0xA2
-#define CS14_SW6 0xA3
-#define CS15_SW6 0xA4
-#define CS16_SW6 0xA5
-#define CS17_SW6 0xA6
-#define CS18_SW6 0xA7
-#define CS19_SW6 0xA8
-#define CS20_SW6 0xA9
-#define CS21_SW6 0xAA
-#define CS22_SW6 0xAB
-#define CS23_SW6 0xAC
-#define CS24_SW6 0xAD
-#define CS25_SW6 0xAE
-#define CS26_SW6 0xAF
-#define CS27_SW6 0xB0
-#define CS28_SW6 0xB1
-#define CS29_SW6 0xB2
-#define CS30_SW6 0xB3
-
-#define CS1_SW7 0xB4
-#define CS2_SW7 0xB5
-#define CS3_SW7 0xB6
-#define CS4_SW7 0xB7
-#define CS5_SW7 0xB8
-#define CS6_SW7 0xB9
-#define CS7_SW7 0xBA
-#define CS8_SW7 0xBB
-#define CS9_SW7 0xBC
-#define CS10_SW7 0xBD
-#define CS11_SW7 0xBE
-#define CS12_SW7 0xBF
-#define CS13_SW7 0xC0
-#define CS14_SW7 0xC1
-#define CS15_SW7 0xC2
-#define CS16_SW7 0xC3
-#define CS17_SW7 0xC4
-#define CS18_SW7 0xC5
-#define CS19_SW7 0xC6
-#define CS20_SW7 0xC7
-#define CS21_SW7 0xC8
-#define CS22_SW7 0xC9
-#define CS23_SW7 0xCA
-#define CS24_SW7 0xCB
-#define CS25_SW7 0xCC
-#define CS26_SW7 0xCD
-#define CS27_SW7 0xCE
-#define CS28_SW7 0xCF
-#define CS29_SW7 0xD0
-#define CS30_SW7 0xD1
-
-#define CS1_SW8 0xD2
-#define CS2_SW8 0xD3
-#define CS3_SW8 0xD4
-#define CS4_SW8 0xD5
-#define CS5_SW8 0xD6
-#define CS6_SW8 0xD7
-#define CS7_SW8 0xD8
-#define CS8_SW8 0xD9
-#define CS9_SW8 0xDA
-#define CS10_SW8 0xDB
-#define CS11_SW8 0xDC
-#define CS12_SW8 0xDD
-#define CS13_SW8 0xDE
-#define CS14_SW8 0xDF
-#define CS15_SW8 0xE0
-#define CS16_SW8 0xE1
-#define CS17_SW8 0xE2
-#define CS18_SW8 0xE3
-#define CS19_SW8 0xE4
-#define CS20_SW8 0xE5
-#define CS21_SW8 0xE6
-#define CS22_SW8 0xE7
-#define CS23_SW8 0xE8
-#define CS24_SW8 0xE9
-#define CS25_SW8 0xEA
-#define CS26_SW8 0xEB
-#define CS27_SW8 0xEC
-#define CS28_SW8 0xED
-#define CS29_SW8 0xEE
-#define CS30_SW8 0xEF
-
-#define CS1_SW9 0xF0
-#define CS2_SW9 0xF1
-#define CS3_SW9 0xF2
-#define CS4_SW9 0xF3
-#define CS5_SW9 0xF4
-#define CS6_SW9 0xF5
-#define CS7_SW9 0xF6
-#define CS8_SW9 0xF7
-#define CS9_SW9 0xF8
-#define CS10_SW9 0xF9
-#define CS11_SW9 0xFA
-#define CS12_SW9 0xFB
-#define CS13_SW9 0xFC
-#define CS14_SW9 0xFD
-#define CS15_SW9 0xFE
-#define CS16_SW9 0xFF
-#define CS17_SW9 0x100
-#define CS18_SW9 0x101
-#define CS19_SW9 0x102
-#define CS20_SW9 0x103
-#define CS21_SW9 0x104
-#define CS22_SW9 0x105
-#define CS23_SW9 0x106
-#define CS24_SW9 0x107
-#define CS25_SW9 0x108
-#define CS26_SW9 0x109
-#define CS27_SW9 0x10A
-#define CS28_SW9 0x10B
-#define CS29_SW9 0x10C
-#define CS30_SW9 0x10D
-
-#define CS31_SW1 0x10E
-#define CS32_SW1 0x10F
-#define CS33_SW1 0x110
-#define CS34_SW1 0x111
-#define CS35_SW1 0x112
-#define CS36_SW1 0x113
-#define CS37_SW1 0x114
-#define CS38_SW1 0x115
-#define CS39_SW1 0x116
-
-#define CS31_SW2 0x117
-#define CS32_SW2 0x118
-#define CS33_SW2 0x119
-#define CS34_SW2 0x11A
-#define CS35_SW2 0x11B
-#define CS36_SW2 0x11C
-#define CS37_SW2 0x11D
-#define CS38_SW2 0x11E
-#define CS39_SW2 0x11F
-
-#define CS31_SW3 0x120
-#define CS32_SW3 0x121
-#define CS33_SW3 0x122
-#define CS34_SW3 0x123
-#define CS35_SW3 0x124
-#define CS36_SW3 0x125
-#define CS37_SW3 0x126
-#define CS38_SW3 0x127
-#define CS39_SW3 0x128
-
-#define CS31_SW4 0x129
-#define CS32_SW4 0x12A
-#define CS33_SW4 0x12B
-#define CS34_SW4 0x12C
-#define CS35_SW4 0x12D
-#define CS36_SW4 0x12E
-#define CS37_SW4 0x12F
-#define CS38_SW4 0x130
-#define CS39_SW4 0x131
-
-#define CS31_SW5 0x132
-#define CS32_SW5 0x133
-#define CS33_SW5 0x134
-#define CS34_SW5 0x135
-#define CS35_SW5 0x136
-#define CS36_SW5 0x137
-#define CS37_SW5 0x138
-#define CS38_SW5 0x139
-#define CS39_SW5 0x13A
-
-#define CS31_SW6 0x13B
-#define CS32_SW6 0x13C
-#define CS33_SW6 0x13D
-#define CS34_SW6 0x13E
-#define CS35_SW6 0x13F
-#define CS36_SW6 0x140
-#define CS37_SW6 0x141
-#define CS38_SW6 0x142
-#define CS39_SW6 0x143
-
-#define CS31_SW7 0x144
-#define CS32_SW7 0x145
-#define CS33_SW7 0x146
-#define CS34_SW7 0x147
-#define CS35_SW7 0x148
-#define CS36_SW7 0x149
-#define CS37_SW7 0x14A
-#define CS38_SW7 0x14B
-#define CS39_SW7 0x14C
-
-#define CS31_SW8 0x14D
-#define CS32_SW8 0x14E
-#define CS33_SW8 0x14F
-#define CS34_SW8 0x150
-#define CS35_SW8 0x151
-#define CS36_SW8 0x152
-#define CS37_SW8 0x153
-#define CS38_SW8 0x154
-#define CS39_SW8 0x155
-
-#define CS31_SW9 0x156
-#define CS32_SW9 0x157
-#define CS33_SW9 0x158
-#define CS34_SW9 0x159
-#define CS35_SW9 0x15A
-#define CS36_SW9 0x15B
-#define CS37_SW9 0x15C
-#define CS38_SW9 0x15D
-#define CS39_SW9 0x15E
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c
index efcfa77b46..5f641aa53f 100644
--- a/drivers/led/issi/is31fl3741.c
+++ b/drivers/led/issi/is31fl3741.c
@@ -18,11 +18,11 @@
*/
#include "is31fl3741.h"
-#include <string.h>
#include "i2c_master.h"
#include "wait.h"
#define IS31FL3741_PWM_REGISTER_COUNT 351
+#define IS31FL3741_SCALING_REGISTER_COUNT 351
#ifndef IS31FL3741_I2C_TIMEOUT
# define IS31FL3741_I2C_TIMEOUT 100
@@ -52,11 +52,8 @@
# define IS31FL3741_GLOBAL_CURRENT 0xFF
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_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
@@ -65,64 +62,48 @@ uint8_t g_pwm_buffer[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT];
bool g_pwm_buffer_update_required[IS31FL3741_DRIVER_COUNT] = {false};
bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false};
-uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT];
+uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_SCALING_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;
-
#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_write_register(addr << 1, reg, &data, 1, IS31FL3741_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT);
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3741_I2C_TIMEOUT);
#endif
}
-bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
- // Assume PG0 is already selected
+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);
+}
+
+void is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assume page 0 is already selected
- for (int i = 0; i < 342; i += 18) {
+ for (uint16_t 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);
-
#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) {
- return false;
- }
+ for (uint8_t j = 0; j < IS31FL3741_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i % 180, g_pwm_buffer[index] + i, 18, IS31FL3741_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(addr << 1, i % 180, g_pwm_buffer[index] + i, 18, IS31FL3741_I2C_TIMEOUT);
#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);
-
#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) {
- return false;
- }
+ if (i2c_write_register(addr << 1, 162, g_pwm_buffer[index] + 342, 9, IS31FL3741_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(addr << 1, 162, g_pwm_buffer[index] + 342, 9, IS31FL3741_I2C_TIMEOUT);
#endif
-
- return true;
}
void is31fl3741_init_drivers(void) {
@@ -162,11 +143,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);
@@ -186,12 +163,14 @@ void is31fl3741_init(uint8_t addr) {
void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
is31fl3741_led_t led;
+
if (index >= 0 && index < IS31FL3741_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led));
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer_update_required[led.driver] = true;
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
@@ -232,40 +211,33 @@ 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]);
- }
+ is31fl3741_write_pwm_buffer(addr, index);
- g_pwm_buffer_update_required[index] = false;
+ g_pwm_buffer_update_required[index] = false;
+ }
}
void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) {
- g_pwm_buffer[pled->driver][pled->r] = red;
- g_pwm_buffer[pled->driver][pled->g] = green;
- g_pwm_buffer[pled->driver][pled->b] = blue;
-
+ g_pwm_buffer[pled->driver][pled->r] = red;
+ g_pwm_buffer[pled->driver][pled->g] = green;
+ g_pwm_buffer[pled->driver][pled->b] = blue;
g_pwm_buffer_update_required[pled->driver] = true;
}
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]);
}
@@ -275,10 +247,9 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) {
}
void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) {
- g_scaling_registers[pled->driver][pled->r] = red;
- g_scaling_registers[pled->driver][pled->g] = green;
- g_scaling_registers[pled->driver][pled->b] = blue;
-
+ g_scaling_registers[pled->driver][pled->r] = red;
+ g_scaling_registers[pled->driver][pled->g] = green;
+ g_scaling_registers[pled->driver][pled->b] = blue;
g_scaling_registers_update_required[pled->driver] = true;
}
diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h
index 6466696b60..e7777a88d5 100644
--- a/drivers/led/issi/is31fl3741.h
+++ b/drivers/led/issi/is31fl3741.h
@@ -121,7 +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);
-bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+void is31fl3741_select_page(uint8_t addr, uint8_t page);
void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/led/issi/is31fl3742.h b/drivers/led/issi/is31fl3742.h
deleted file mode 100644
index c96f12d0f1..0000000000
--- a/drivers/led/issi/is31fl3742.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- * Copyright 2021 MasterSpoon
- *
- * 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
-
-// This is a 7-bit address, that gets left-shifted and bit 0
-// set to 0 for write, 1 for read (as per I2C protocol)
-// The address will vary depending on your wiring:
-// 00 <-> GND
-// 01 <-> SCL
-// 10 <-> SDA
-// 11 <-> VCC
-// ADDR represents A1:A0 of the 7-bit address.
-// The result is: 0b01100(ADDR)
-#ifndef DRIVER_ADDR_1
-# define DRIVER_ADDR_1 0b0110000
-#endif
-
-// Command Registers
-#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE
-#define ISSI_COMMANDREGISTER 0xFD
-#define ISSI_IDREGISTER 0xFC
-#define ISSI_REGISTER_UNLOCK 0xC5
-
-// Response Registers
-#define ISSI_PAGE_PWM 0x00
-#define ISSI_PAGE_SCALING 0x02
-#define ISSI_PAGE_FUNCTION 0x04
-
-// Registers under Function Register
-#define ISSI_REG_CONFIGURATION 0x00
-#define ISSI_REG_GLOBALCURRENT 0x01
-#define ISSI_REG_PULLDOWNUP 0x02
-#define ISSI_REG_SSR 0x41
-#define ISSI_REG_RESET 0x3F
-#define ISSI_REG_PWM_SET 0x36
-
-// Set defaults for Function Registers
-#ifndef ISSI_CONFIGURATION
-# define ISSI_CONFIGURATION 0x31
-#endif
-#ifndef ISSI_GLOBALCURRENT
-# define ISSI_GLOBALCURRENT 0xFF
-#endif
-#ifndef ISSI_PULLDOWNUP
-# define ISSI_PULLDOWNUP 0x55
-#endif
-#ifndef ISSI_PWM_SET
-# define ISSI_PWM_SET 0x00
-#endif
-
-// Set defaults for Spread Spectrum Register
-#ifndef ISSI_SSR_1
-# define ISSI_SSR_1 0x00
-#endif
-#ifndef ISSI_SSR_2
-# define ISSI_SSR_2 0x00
-#endif
-#ifndef ISSI_SSR_3
-# define ISSI_SSR_3 0x00
-#endif
-#ifndef ISSI_SSR_4
-# define ISSI_SSR_4 0x00
-#endif
-
-// Set defaults for Scaling registers
-#ifndef ISSI_SCAL_RED
-# define ISSI_SCAL_RED 0xFF
-#endif
-#ifndef ISSI_SCAL_BLUE
-# define ISSI_SCAL_BLUE 0xFF
-#endif
-#ifndef ISSI_SCAL_GREEN
-# define ISSI_SCAL_GREEN 0xFF
-#endif
-#define ISSI_SCAL_RED_OFF 0x00
-#define ISSI_SCAL_GREEN_OFF 0x00
-#define ISSI_SCAL_BLUE_OFF 0x00
-
-#ifndef ISSI_SCAL_LED
-# define ISSI_SCAL_LED 0xFF
-#endif
-#define ISSI_SCAL_LED_OFF 0x00
-
-// Set buffer sizes
-#define ISSI_MAX_LEDS 180
-#define ISSI_SCALING_SIZE 180
-#define ISSI_PWM_TRF_SIZE 18
-#define ISSI_SCALING_TRF_SIZE 18
-
-// Location of 1st bit for PWM and Scaling registers
-#define ISSI_PWM_REG_1ST 0x00
-#define ISSI_SCL_REG_1ST 0x00
-
-// Map CS SW locations to order in PWM / Scaling buffers
-// This matches the ORDER in the Datasheet Register not the POSITION
-// It will always count from 0x00 to (ISSI_MAX_LEDS - 1)
-#define CS1_SW1 0x00
-#define CS2_SW1 0x01
-#define CS3_SW1 0x02
-#define CS4_SW1 0x03
-#define CS5_SW1 0x04
-#define CS6_SW1 0x05
-#define CS7_SW1 0x06
-#define CS8_SW1 0x07
-#define CS9_SW1 0x08
-#define CS10_SW1 0x09
-#define CS11_SW1 0x0A
-#define CS12_SW1 0x0B
-#define CS13_SW1 0x0C
-#define CS14_SW1 0x0D
-#define CS15_SW1 0x0E
-#define CS16_SW1 0x0F
-#define CS17_SW1 0x10
-#define CS18_SW1 0x11
-#define CS19_SW1 0x12
-#define CS20_SW1 0x13
-#define CS21_SW1 0x14
-#define CS22_SW1 0x15
-#define CS23_SW1 0x16
-#define CS24_SW1 0x17
-#define CS25_SW1 0x18
-#define CS26_SW1 0x19
-#define CS27_SW1 0x1A
-#define CS28_SW1 0x1B
-#define CS29_SW1 0x1C
-#define CS30_SW1 0x1D
-
-#define CS1_SW2 0x1E
-#define CS2_SW2 0x1F
-#define CS3_SW2 0x20
-#define CS4_SW2 0x21
-#define CS5_SW2 0x22
-#define CS6_SW2 0x23
-#define CS7_SW2 0x24
-#define CS8_SW2 0x25
-#define CS9_SW2 0x26
-#define CS10_SW2 0x27
-#define CS11_SW2 0x28
-#define CS12_SW2 0x29
-#define CS13_SW2 0x2A
-#define CS14_SW2 0x2B
-#define CS15_SW2 0x2C
-#define CS16_SW2 0x2D
-#define CS17_SW2 0x2E
-#define CS18_SW2 0x2F
-#define CS19_SW2 0x30
-#define CS20_SW2 0x31
-#define CS21_SW2 0x32
-#define CS22_SW2 0x33
-#define CS23_SW2 0x34
-#define CS24_SW2 0x35
-#define CS25_SW2 0x36
-#define CS26_SW2 0x37
-#define CS27_SW2 0x38
-#define CS28_SW2 0x39
-#define CS29_SW2 0x3A
-#define CS30_SW2 0x3B
-
-#define CS1_SW3 0x3C
-#define CS2_SW3 0x3D
-#define CS3_SW3 0x3E
-#define CS4_SW3 0x3F
-#define CS5_SW3 0x40
-#define CS6_SW3 0x41
-#define CS7_SW3 0x42
-#define CS8_SW3 0x43
-#define CS9_SW3 0x44
-#define CS10_SW3 0x45
-#define CS11_SW3 0x46
-#define CS12_SW3 0x47
-#define CS13_SW3 0x48
-#define CS14_SW3 0x49
-#define CS15_SW3 0x4A
-#define CS16_SW3 0x4B
-#define CS17_SW3 0x4C
-#define CS18_SW3 0x4D
-#define CS19_SW3 0x4E
-#define CS20_SW3 0x4F
-#define CS21_SW3 0x50
-#define CS22_SW3 0x51
-#define CS23_SW3 0x52
-#define CS24_SW3 0x53
-#define CS25_SW3 0x54
-#define CS26_SW3 0x55
-#define CS27_SW3 0x56
-#define CS28_SW3 0x57
-#define CS29_SW3 0x58
-#define CS30_SW3 0x59
-
-#define CS1_SW4 0x5A
-#define CS2_SW4 0x5B
-#define CS3_SW4 0x5C
-#define CS4_SW4 0x5D
-#define CS5_SW4 0x5E
-#define CS6_SW4 0x5F
-#define CS7_SW4 0x60
-#define CS8_SW4 0x61
-#define CS9_SW4 0x62
-#define CS10_SW4 0x63
-#define CS11_SW4 0x64
-#define CS12_SW4 0x65
-#define CS13_SW4 0x66
-#define CS14_SW4 0x67
-#define CS15_SW4 0x68
-#define CS16_SW4 0x69
-#define CS17_SW4 0x6A
-#define CS18_SW4 0x6B
-#define CS19_SW4 0x6C
-#define CS20_SW4 0x6D
-#define CS21_SW4 0x6E
-#define CS22_SW4 0x6F
-#define CS23_SW4 0x70
-#define CS24_SW4 0x71
-#define CS25_SW4 0x72
-#define CS26_SW4 0x73
-#define CS27_SW4 0x74
-#define CS28_SW4 0x75
-#define CS29_SW4 0x76
-#define CS30_SW4 0x77
-
-#define CS1_SW5 0x78
-#define CS2_SW5 0x79
-#define CS3_SW5 0x7A
-#define CS4_SW5 0x7B
-#define CS5_SW5 0x7C
-#define CS6_SW5 0x7D
-#define CS7_SW5 0x7E
-#define CS8_SW5 0x7F
-#define CS9_SW5 0x80
-#define CS10_SW5 0x81
-#define CS11_SW5 0x82
-#define CS12_SW5 0x83
-#define CS13_SW5 0x84
-#define CS14_SW5 0x85
-#define CS15_SW5 0x86
-#define CS16_SW5 0x87
-#define CS17_SW5 0x88
-#define CS18_SW5 0x89
-#define CS19_SW5 0x8A
-#define CS20_SW5 0x8B
-#define CS21_SW5 0x8C
-#define CS22_SW5 0x8D
-#define CS23_SW5 0x8E
-#define CS24_SW5 0x8F
-#define CS25_SW5 0x90
-#define CS26_SW5 0x91
-#define CS27_SW5 0x92
-#define CS28_SW5 0x93
-#define CS29_SW5 0x94
-#define CS30_SW5 0x95
-
-#define CS1_SW6 0x96
-#define CS2_SW6 0x97
-#define CS3_SW6 0x98
-#define CS4_SW6 0x99
-#define CS5_SW6 0x9A
-#define CS6_SW6 0x9B
-#define CS7_SW6 0x9C
-#define CS8_SW6 0x9D
-#define CS9_SW6 0x9E
-#define CS10_SW6 0x9F
-#define CS11_SW6 0xA0
-#define CS12_SW6 0xA1
-#define CS13_SW6 0xA2
-#define CS14_SW6 0xA3
-#define CS15_SW6 0xA4
-#define CS16_SW6 0xA5
-#define CS17_SW6 0xA6
-#define CS18_SW6 0xA7
-#define CS19_SW6 0xA8
-#define CS20_SW6 0xA9
-#define CS21_SW6 0xAA
-#define CS22_SW6 0xAB
-#define CS23_SW6 0xAC
-#define CS24_SW6 0xAD
-#define CS25_SW6 0xAE
-#define CS26_SW6 0xAF
-#define CS27_SW6 0xB0
-#define CS28_SW6 0xB1
-#define CS29_SW6 0xB2
-#define CS30_SW6 0xB3
diff --git a/drivers/led/issi/is31fl3742a-mono.c b/drivers/led/issi/is31fl3742a-mono.c
new file mode 100644
index 0000000000..3a607f02d1
--- /dev/null
+++ b/drivers/led/issi/is31fl3742a-mono.c
@@ -0,0 +1,215 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3742a-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3742A_PWM_REGISTER_COUNT 180
+#define IS31FL3742A_SCALING_REGISTER_COUNT 180
+
+#ifndef IS31FL3742A_I2C_TIMEOUT
+# define IS31FL3742A_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3742A_I2C_PERSISTENCE
+# define IS31FL3742A_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3742A_CONFIGURATION
+# define IS31FL3742A_CONFIGURATION 0x31
+#endif
+
+#ifndef IS31FL3742A_PWM_FREQUENCY
+# define IS31FL3742A_PWM_FREQUENCY IS31FL3742A_PWM_FREQUENCY_29K_HZ
+#endif
+
+#ifndef IS31FL3742A_SW_PULLDOWN
+# define IS31FL3742A_SW_PULLDOWN IS31FL3742A_PDR_8K_OHM
+#endif
+
+#ifndef IS31FL3742A_CS_PULLUP
+# define IS31FL3742A_CS_PULLUP IS31FL3742A_PUR_8K_OHM
+#endif
+
+#ifndef IS31FL3742A_GLOBAL_CURRENT
+# define IS31FL3742A_GLOBAL_CURRENT 0xFF
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3742A_DRIVER_COUNT][IS31FL3742A_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3742A_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3742A_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3742A_DRIVER_COUNT][IS31FL3742A_SCALING_REGISTER_COUNT];
+
+void is31fl3742a_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3742A_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3742A_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3742A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3742A_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3742a_select_page(uint8_t addr, uint8_t page) {
+ is31fl3742a_write_register(addr, IS31FL3742A_REG_COMMAND_WRITE_LOCK, IS31FL3742A_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3742a_write_register(addr, IS31FL3742A_REG_COMMAND, page);
+}
+
+void is31fl3742a_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 6 transfers of 30 bytes.
+
+ // Iterate over the pwm_buffer contents at 30 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3742A_PWM_REGISTER_COUNT; i += 30) {
+#if IS31FL3742A_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3742A_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 30, IS31FL3742A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 30, IS31FL3742A_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3742a_init_drivers(void) {
+ i2c_init();
+
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_1);
+#if defined(IS31FL3742A_I2C_ADDRESS_2)
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_2);
+# if defined(IS31FL3742A_I2C_ADDRESS_3)
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_3);
+# if defined(IS31FL3742A_I2C_ADDRESS_4)
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3742A_LED_COUNT; i++) {
+ is31fl3742a_set_scaling_register(i, 0xFF);
+ }
+
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3742A_I2C_ADDRESS_2)
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3742A_I2C_ADDRESS_3)
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3742A_I2C_ADDRESS_4)
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3742a_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3742a_write_register(addr, i, 0x00);
+ }
+
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3742A_PWM_REGISTER_COUNT; i++) {
+ is31fl3742a_write_register(addr, i, 0x00);
+ }
+
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_FUNCTION);
+
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_PULLDOWNUP, (IS31FL3742A_SW_PULLDOWN << 4) | IS31FL3742A_CS_PULLUP);
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3742A_GLOBAL_CURRENT);
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3742A_PWM_FREQUENCY & 0b0111));
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_CONFIGURATION, IS31FL3742A_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3742a_set_value(int index, uint8_t value) {
+ is31fl3742a_led_t led;
+
+ if (index >= 0 && index < IS31FL3742A_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void is31fl3742a_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3742A_LED_COUNT; i++) {
+ is31fl3742a_set_value(i, value);
+ }
+}
+
+void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value) {
+ is31fl3742a_led_t led;
+ memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.v] = value;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3742a_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM);
+
+ is31fl3742a_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3742a_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3742a_write_register(addr, i, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3742a_flush(void) {
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3742A_I2C_ADDRESS_2)
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3742A_I2C_ADDRESS_3)
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3742A_I2C_ADDRESS_4)
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3742a-mono.h b/drivers/led/issi/is31fl3742a-mono.h
new file mode 100644
index 0000000000..8de284fa7d
--- /dev/null
+++ b/drivers/led/issi/is31fl3742a-mono.h
@@ -0,0 +1,296 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3742A_REG_INTERRUPT_MASK 0xF0
+#define IS31FL3742A_REG_INTERRUPT_STATUS 0xF1
+#define IS31FL3742A_REG_ID 0xFC
+
+#define IS31FL3742A_REG_COMMAND 0xFD
+
+#define IS31FL3742A_COMMAND_PWM 0x00
+#define IS31FL3742A_COMMAND_SCALING 0x02
+#define IS31FL3742A_COMMAND_FUNCTION 0x04
+
+#define IS31FL3742A_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3742A_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3742A_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3742A_FUNCTION_REG_PWM_FREQUENCY 0x36
+#define IS31FL3742A_FUNCTION_REG_RESET 0x3F
+#define IS31FL3742A_FUNCTION_REG_SPREAD_SPECTRUM 0x41
+
+#define IS31FL3742A_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3742A_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3742A_I2C_ADDRESS_GND 0x30
+#define IS31FL3742A_I2C_ADDRESS_SCL 0x31
+#define IS31FL3742A_I2C_ADDRESS_SDA 0x32
+#define IS31FL3742A_I2C_ADDRESS_VCC 0x33
+
+#if defined(LED_MATRIX_IS31FL3742A)
+# define IS31FL3742A_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3742A_I2C_ADDRESS_4)
+# define IS31FL3742A_DRIVER_COUNT 4
+#elif defined(IS31FL3742A_I2C_ADDRESS_3)
+# define IS31FL3742A_DRIVER_COUNT 3
+#elif defined(IS31FL3742A_I2C_ADDRESS_2)
+# define IS31FL3742A_DRIVER_COUNT 2
+#elif defined(IS31FL3742A_I2C_ADDRESS_1)
+# define IS31FL3742A_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3742a_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3742a_led_t;
+
+extern const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT];
+
+void is31fl3742a_init_drivers(void);
+void is31fl3742a_init(uint8_t addr);
+void is31fl3742a_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3742a_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3742a_set_value(int index, uint8_t value);
+void is31fl3742a_set_value_all(uint8_t value);
+
+void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value);
+
+void is31fl3742a_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3742a_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3742a_flush(void);
+
+#define IS31FL3742A_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3742A_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3742A_PDR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3742A_PDR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3742A_PDR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3742A_PDR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3742A_PDR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3742A_PDR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3742A_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3742A_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3742A_PUR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3742A_PUR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3742A_PUR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3742A_PUR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3742A_PUR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3742A_PUR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3742A_PWM_FREQUENCY_29K_HZ 0b0000
+#define IS31FL3742A_PWM_FREQUENCY_3K6_HZ 0b0011
+#define IS31FL3742A_PWM_FREQUENCY_1K8_HZ 0b0111
+#define IS31FL3742A_PWM_FREQUENCY_900_HZ 0b1011
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+#define CS19_SW1 0x12
+#define CS20_SW1 0x13
+#define CS21_SW1 0x14
+#define CS22_SW1 0x15
+#define CS23_SW1 0x16
+#define CS24_SW1 0x17
+#define CS25_SW1 0x18
+#define CS26_SW1 0x19
+#define CS27_SW1 0x1A
+#define CS28_SW1 0x1B
+#define CS29_SW1 0x1C
+#define CS30_SW1 0x1D
+
+#define CS1_SW2 0x1E
+#define CS2_SW2 0x1F
+#define CS3_SW2 0x20
+#define CS4_SW2 0x21
+#define CS5_SW2 0x22
+#define CS6_SW2 0x23
+#define CS7_SW2 0x24
+#define CS8_SW2 0x25
+#define CS9_SW2 0x26
+#define CS10_SW2 0x27
+#define CS11_SW2 0x28
+#define CS12_SW2 0x29
+#define CS13_SW2 0x2A
+#define CS14_SW2 0x2B
+#define CS15_SW2 0x2C
+#define CS16_SW2 0x2D
+#define CS17_SW2 0x2E
+#define CS18_SW2 0x2F
+#define CS19_SW2 0x30
+#define CS20_SW2 0x31
+#define CS21_SW2 0x32
+#define CS22_SW2 0x33
+#define CS23_SW2 0x34
+#define CS24_SW2 0x35
+#define CS25_SW2 0x36
+#define CS26_SW2 0x37
+#define CS27_SW2 0x38
+#define CS28_SW2 0x39
+#define CS29_SW2 0x3A
+#define CS30_SW2 0x3B
+
+#define CS1_SW3 0x3C
+#define CS2_SW3 0x3D
+#define CS3_SW3 0x3E
+#define CS4_SW3 0x3F
+#define CS5_SW3 0x40
+#define CS6_SW3 0x41
+#define CS7_SW3 0x42
+#define CS8_SW3 0x43
+#define CS9_SW3 0x44
+#define CS10_SW3 0x45
+#define CS11_SW3 0x46
+#define CS12_SW3 0x47
+#define CS13_SW3 0x48
+#define CS14_SW3 0x49
+#define CS15_SW3 0x4A
+#define CS16_SW3 0x4B
+#define CS17_SW3 0x4C
+#define CS18_SW3 0x4D
+#define CS19_SW3 0x4E
+#define CS20_SW3 0x4F
+#define CS21_SW3 0x50
+#define CS22_SW3 0x51
+#define CS23_SW3 0x52
+#define CS24_SW3 0x53
+#define CS25_SW3 0x54
+#define CS26_SW3 0x55
+#define CS27_SW3 0x56
+#define CS28_SW3 0x57
+#define CS29_SW3 0x58
+#define CS30_SW3 0x59
+
+#define CS1_SW4 0x5A
+#define CS2_SW4 0x5B
+#define CS3_SW4 0x5C
+#define CS4_SW4 0x5D
+#define CS5_SW4 0x5E
+#define CS6_SW4 0x5F
+#define CS7_SW4 0x60
+#define CS8_SW4 0x61
+#define CS9_SW4 0x62
+#define CS10_SW4 0x63
+#define CS11_SW4 0x64
+#define CS12_SW4 0x65
+#define CS13_SW4 0x66
+#define CS14_SW4 0x67
+#define CS15_SW4 0x68
+#define CS16_SW4 0x69
+#define CS17_SW4 0x6A
+#define CS18_SW4 0x6B
+#define CS19_SW4 0x6C
+#define CS20_SW4 0x6D
+#define CS21_SW4 0x6E
+#define CS22_SW4 0x6F
+#define CS23_SW4 0x70
+#define CS24_SW4 0x71
+#define CS25_SW4 0x72
+#define CS26_SW4 0x73
+#define CS27_SW4 0x74
+#define CS28_SW4 0x75
+#define CS29_SW4 0x76
+#define CS30_SW4 0x77
+
+#define CS1_SW5 0x78
+#define CS2_SW5 0x79
+#define CS3_SW5 0x7A
+#define CS4_SW5 0x7B
+#define CS5_SW5 0x7C
+#define CS6_SW5 0x7D
+#define CS7_SW5 0x7E
+#define CS8_SW5 0x7F
+#define CS9_SW5 0x80
+#define CS10_SW5 0x81
+#define CS11_SW5 0x82
+#define CS12_SW5 0x83
+#define CS13_SW5 0x84
+#define CS14_SW5 0x85
+#define CS15_SW5 0x86
+#define CS16_SW5 0x87
+#define CS17_SW5 0x88
+#define CS18_SW5 0x89
+#define CS19_SW5 0x8A
+#define CS20_SW5 0x8B
+#define CS21_SW5 0x8C
+#define CS22_SW5 0x8D
+#define CS23_SW5 0x8E
+#define CS24_SW5 0x8F
+#define CS25_SW5 0x90
+#define CS26_SW5 0x91
+#define CS27_SW5 0x92
+#define CS28_SW5 0x93
+#define CS29_SW5 0x94
+#define CS30_SW5 0x95
+
+#define CS1_SW6 0x96
+#define CS2_SW6 0x97
+#define CS3_SW6 0x98
+#define CS4_SW6 0x99
+#define CS5_SW6 0x9A
+#define CS6_SW6 0x9B
+#define CS7_SW6 0x9C
+#define CS8_SW6 0x9D
+#define CS9_SW6 0x9E
+#define CS10_SW6 0x9F
+#define CS11_SW6 0xA0
+#define CS12_SW6 0xA1
+#define CS13_SW6 0xA2
+#define CS14_SW6 0xA3
+#define CS15_SW6 0xA4
+#define CS16_SW6 0xA5
+#define CS17_SW6 0xA6
+#define CS18_SW6 0xA7
+#define CS19_SW6 0xA8
+#define CS20_SW6 0xA9
+#define CS21_SW6 0xAA
+#define CS22_SW6 0xAB
+#define CS23_SW6 0xAC
+#define CS24_SW6 0xAD
+#define CS25_SW6 0xAE
+#define CS26_SW6 0xAF
+#define CS27_SW6 0xB0
+#define CS28_SW6 0xB1
+#define CS29_SW6 0xB2
+#define CS30_SW6 0xB3
diff --git a/drivers/led/issi/is31fl3742a.c b/drivers/led/issi/is31fl3742a.c
new file mode 100644
index 0000000000..2e6cf151c3
--- /dev/null
+++ b/drivers/led/issi/is31fl3742a.c
@@ -0,0 +1,219 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3742a.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3742A_PWM_REGISTER_COUNT 180
+#define IS31FL3742A_SCALING_REGISTER_COUNT 180
+
+#ifndef IS31FL3742A_I2C_TIMEOUT
+# define IS31FL3742A_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3742A_I2C_PERSISTENCE
+# define IS31FL3742A_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3742A_CONFIGURATION
+# define IS31FL3742A_CONFIGURATION 0x31
+#endif
+
+#ifndef IS31FL3742A_PWM_FREQUENCY
+# define IS31FL3742A_PWM_FREQUENCY IS31FL3742A_PWM_FREQUENCY_29K_HZ
+#endif
+
+#ifndef IS31FL3742A_SW_PULLDOWN
+# define IS31FL3742A_SW_PULLDOWN IS31FL3742A_PDR_8K_OHM
+#endif
+
+#ifndef IS31FL3742A_CS_PULLUP
+# define IS31FL3742A_CS_PULLUP IS31FL3742A_PUR_8K_OHM
+#endif
+
+#ifndef IS31FL3742A_GLOBAL_CURRENT
+# define IS31FL3742A_GLOBAL_CURRENT 0xFF
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3742A_DRIVER_COUNT][IS31FL3742A_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3742A_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3742A_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3742A_DRIVER_COUNT][IS31FL3742A_SCALING_REGISTER_COUNT];
+
+void is31fl3742a_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3742A_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3742A_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3742A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3742A_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3742a_select_page(uint8_t addr, uint8_t page) {
+ is31fl3742a_write_register(addr, IS31FL3742A_REG_COMMAND_WRITE_LOCK, IS31FL3742A_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3742a_write_register(addr, IS31FL3742A_REG_COMMAND, page);
+}
+
+void is31fl3742a_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 6 transfers of 30 bytes.
+
+ // Iterate over the pwm_buffer contents at 30 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3742A_PWM_REGISTER_COUNT; i += 30) {
+#if IS31FL3742A_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3742A_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 30, IS31FL3742A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 30, IS31FL3742A_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3742a_init_drivers(void) {
+ i2c_init();
+
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_1);
+#if defined(IS31FL3742A_I2C_ADDRESS_2)
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_2);
+# if defined(IS31FL3742A_I2C_ADDRESS_3)
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_3);
+# if defined(IS31FL3742A_I2C_ADDRESS_4)
+ is31fl3742a_init(IS31FL3742A_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3742A_LED_COUNT; i++) {
+ is31fl3742a_set_scaling_register(i, 0xFF, 0xFF, 0xFF);
+ }
+
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3742A_I2C_ADDRESS_2)
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3742A_I2C_ADDRESS_3)
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3742A_I2C_ADDRESS_4)
+ is31fl3742a_update_scaling_registers(IS31FL3742A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3742a_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3742a_write_register(addr, i, 0x00);
+ }
+
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3742A_PWM_REGISTER_COUNT; i++) {
+ is31fl3742a_write_register(addr, i, 0x00);
+ }
+
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_FUNCTION);
+
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_PULLDOWNUP, (IS31FL3742A_SW_PULLDOWN << 4) | IS31FL3742A_CS_PULLUP);
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3742A_GLOBAL_CURRENT);
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3742A_PWM_FREQUENCY & 0b0111));
+ is31fl3742a_write_register(addr, IS31FL3742A_FUNCTION_REG_CONFIGURATION, IS31FL3742A_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3742a_led_t led;
+
+ if (index >= 0 && index < IS31FL3742A_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < IS31FL3742A_LED_COUNT; i++) {
+ is31fl3742a_set_color(i, red, green, blue);
+ }
+}
+
+void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3742a_led_t led;
+ memcpy_P(&led, (&g_is31fl3742a_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.r] = red;
+ g_scaling_registers[led.driver][led.g] = green;
+ g_scaling_registers[led.driver][led.b] = blue;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3742a_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_PWM);
+
+ is31fl3742a_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3742a_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3742a_select_page(addr, IS31FL3742A_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3742A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3742a_write_register(addr, i, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3742a_flush(void) {
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3742A_I2C_ADDRESS_2)
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3742A_I2C_ADDRESS_3)
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3742A_I2C_ADDRESS_4)
+ is31fl3742a_update_pwm_buffers(IS31FL3742A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3742a.h b/drivers/led/issi/is31fl3742a.h
new file mode 100644
index 0000000000..5f34a3cdb9
--- /dev/null
+++ b/drivers/led/issi/is31fl3742a.h
@@ -0,0 +1,298 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3742A_REG_INTERRUPT_MASK 0xF0
+#define IS31FL3742A_REG_INTERRUPT_STATUS 0xF1
+#define IS31FL3742A_REG_ID 0xFC
+
+#define IS31FL3742A_REG_COMMAND 0xFD
+
+#define IS31FL3742A_COMMAND_PWM 0x00
+#define IS31FL3742A_COMMAND_SCALING 0x02
+#define IS31FL3742A_COMMAND_FUNCTION 0x04
+
+#define IS31FL3742A_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3742A_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3742A_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3742A_FUNCTION_REG_PWM_FREQUENCY 0x36
+#define IS31FL3742A_FUNCTION_REG_RESET 0x3F
+#define IS31FL3742A_FUNCTION_REG_SPREAD_SPECTRUM 0x41
+
+#define IS31FL3742A_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3742A_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3742A_I2C_ADDRESS_GND 0x30
+#define IS31FL3742A_I2C_ADDRESS_SCL 0x31
+#define IS31FL3742A_I2C_ADDRESS_SDA 0x32
+#define IS31FL3742A_I2C_ADDRESS_VCC 0x33
+
+#if defined(RGB_MATRIX_IS31FL3742A)
+# define IS31FL3742A_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3742A_I2C_ADDRESS_4)
+# define IS31FL3742A_DRIVER_COUNT 4
+#elif defined(IS31FL3742A_I2C_ADDRESS_3)
+# define IS31FL3742A_DRIVER_COUNT 3
+#elif defined(IS31FL3742A_I2C_ADDRESS_2)
+# define IS31FL3742A_DRIVER_COUNT 2
+#elif defined(IS31FL3742A_I2C_ADDRESS_1)
+# define IS31FL3742A_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3742a_led_t {
+ uint8_t driver : 2;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+} PACKED is31fl3742a_led_t;
+
+extern const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT];
+
+void is31fl3742a_init_drivers(void);
+void is31fl3742a_init(uint8_t addr);
+void is31fl3742a_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3742a_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
+void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3742a_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3742a_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3742a_flush(void);
+
+#define IS31FL3742A_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3742A_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3742A_PDR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3742A_PDR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3742A_PDR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3742A_PDR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3742A_PDR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3742A_PDR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3742A_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3742A_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor
+#define IS31FL3742A_PUR_1K_OHM 0b010 // 1 kOhm resistor
+#define IS31FL3742A_PUR_2K_OHM 0b011 // 2 kOhm resistor
+#define IS31FL3742A_PUR_4K_OHM 0b100 // 4 kOhm resistor
+#define IS31FL3742A_PUR_8K_OHM 0b101 // 8 kOhm resistor
+#define IS31FL3742A_PUR_16K_OHM 0b110 // 16 kOhm resistor
+#define IS31FL3742A_PUR_32K_OHM 0b111 // 32 kOhm resistor
+
+#define IS31FL3742A_PWM_FREQUENCY_29K_HZ 0b0000
+#define IS31FL3742A_PWM_FREQUENCY_3K6_HZ 0b0011
+#define IS31FL3742A_PWM_FREQUENCY_1K8_HZ 0b0111
+#define IS31FL3742A_PWM_FREQUENCY_900_HZ 0b1011
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+#define CS19_SW1 0x12
+#define CS20_SW1 0x13
+#define CS21_SW1 0x14
+#define CS22_SW1 0x15
+#define CS23_SW1 0x16
+#define CS24_SW1 0x17
+#define CS25_SW1 0x18
+#define CS26_SW1 0x19
+#define CS27_SW1 0x1A
+#define CS28_SW1 0x1B
+#define CS29_SW1 0x1C
+#define CS30_SW1 0x1D
+
+#define CS1_SW2 0x1E
+#define CS2_SW2 0x1F
+#define CS3_SW2 0x20
+#define CS4_SW2 0x21
+#define CS5_SW2 0x22
+#define CS6_SW2 0x23
+#define CS7_SW2 0x24
+#define CS8_SW2 0x25
+#define CS9_SW2 0x26
+#define CS10_SW2 0x27
+#define CS11_SW2 0x28
+#define CS12_SW2 0x29
+#define CS13_SW2 0x2A
+#define CS14_SW2 0x2B
+#define CS15_SW2 0x2C
+#define CS16_SW2 0x2D
+#define CS17_SW2 0x2E
+#define CS18_SW2 0x2F
+#define CS19_SW2 0x30
+#define CS20_SW2 0x31
+#define CS21_SW2 0x32
+#define CS22_SW2 0x33
+#define CS23_SW2 0x34
+#define CS24_SW2 0x35
+#define CS25_SW2 0x36
+#define CS26_SW2 0x37
+#define CS27_SW2 0x38
+#define CS28_SW2 0x39
+#define CS29_SW2 0x3A
+#define CS30_SW2 0x3B
+
+#define CS1_SW3 0x3C
+#define CS2_SW3 0x3D
+#define CS3_SW3 0x3E
+#define CS4_SW3 0x3F
+#define CS5_SW3 0x40
+#define CS6_SW3 0x41
+#define CS7_SW3 0x42
+#define CS8_SW3 0x43
+#define CS9_SW3 0x44
+#define CS10_SW3 0x45
+#define CS11_SW3 0x46
+#define CS12_SW3 0x47
+#define CS13_SW3 0x48
+#define CS14_SW3 0x49
+#define CS15_SW3 0x4A
+#define CS16_SW3 0x4B
+#define CS17_SW3 0x4C
+#define CS18_SW3 0x4D
+#define CS19_SW3 0x4E
+#define CS20_SW3 0x4F
+#define CS21_SW3 0x50
+#define CS22_SW3 0x51
+#define CS23_SW3 0x52
+#define CS24_SW3 0x53
+#define CS25_SW3 0x54
+#define CS26_SW3 0x55
+#define CS27_SW3 0x56
+#define CS28_SW3 0x57
+#define CS29_SW3 0x58
+#define CS30_SW3 0x59
+
+#define CS1_SW4 0x5A
+#define CS2_SW4 0x5B
+#define CS3_SW4 0x5C
+#define CS4_SW4 0x5D
+#define CS5_SW4 0x5E
+#define CS6_SW4 0x5F
+#define CS7_SW4 0x60
+#define CS8_SW4 0x61
+#define CS9_SW4 0x62
+#define CS10_SW4 0x63
+#define CS11_SW4 0x64
+#define CS12_SW4 0x65
+#define CS13_SW4 0x66
+#define CS14_SW4 0x67
+#define CS15_SW4 0x68
+#define CS16_SW4 0x69
+#define CS17_SW4 0x6A
+#define CS18_SW4 0x6B
+#define CS19_SW4 0x6C
+#define CS20_SW4 0x6D
+#define CS21_SW4 0x6E
+#define CS22_SW4 0x6F
+#define CS23_SW4 0x70
+#define CS24_SW4 0x71
+#define CS25_SW4 0x72
+#define CS26_SW4 0x73
+#define CS27_SW4 0x74
+#define CS28_SW4 0x75
+#define CS29_SW4 0x76
+#define CS30_SW4 0x77
+
+#define CS1_SW5 0x78
+#define CS2_SW5 0x79
+#define CS3_SW5 0x7A
+#define CS4_SW5 0x7B
+#define CS5_SW5 0x7C
+#define CS6_SW5 0x7D
+#define CS7_SW5 0x7E
+#define CS8_SW5 0x7F
+#define CS9_SW5 0x80
+#define CS10_SW5 0x81
+#define CS11_SW5 0x82
+#define CS12_SW5 0x83
+#define CS13_SW5 0x84
+#define CS14_SW5 0x85
+#define CS15_SW5 0x86
+#define CS16_SW5 0x87
+#define CS17_SW5 0x88
+#define CS18_SW5 0x89
+#define CS19_SW5 0x8A
+#define CS20_SW5 0x8B
+#define CS21_SW5 0x8C
+#define CS22_SW5 0x8D
+#define CS23_SW5 0x8E
+#define CS24_SW5 0x8F
+#define CS25_SW5 0x90
+#define CS26_SW5 0x91
+#define CS27_SW5 0x92
+#define CS28_SW5 0x93
+#define CS29_SW5 0x94
+#define CS30_SW5 0x95
+
+#define CS1_SW6 0x96
+#define CS2_SW6 0x97
+#define CS3_SW6 0x98
+#define CS4_SW6 0x99
+#define CS5_SW6 0x9A
+#define CS6_SW6 0x9B
+#define CS7_SW6 0x9C
+#define CS8_SW6 0x9D
+#define CS9_SW6 0x9E
+#define CS10_SW6 0x9F
+#define CS11_SW6 0xA0
+#define CS12_SW6 0xA1
+#define CS13_SW6 0xA2
+#define CS14_SW6 0xA3
+#define CS15_SW6 0xA4
+#define CS16_SW6 0xA5
+#define CS17_SW6 0xA6
+#define CS18_SW6 0xA7
+#define CS19_SW6 0xA8
+#define CS20_SW6 0xA9
+#define CS21_SW6 0xAA
+#define CS22_SW6 0xAB
+#define CS23_SW6 0xAC
+#define CS24_SW6 0xAD
+#define CS25_SW6 0xAE
+#define CS26_SW6 0xAF
+#define CS27_SW6 0xB0
+#define CS28_SW6 0xB1
+#define CS29_SW6 0xB2
+#define CS30_SW6 0xB3
diff --git a/drivers/led/issi/is31fl3743.h b/drivers/led/issi/is31fl3743.h
deleted file mode 100644
index 706b271254..0000000000
--- a/drivers/led/issi/is31fl3743.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- * Copyright 2021 MasterSpoon
- *
- * 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
-
-// This is a 7-bit address, that gets left-shifted and bit 0
-// set to 0 for write, 1 for read (as per I2C protocol)
-// The address will vary depending on your wiring:
-// 00 <-> GND
-// 01 <-> SCL
-// 10 <-> SDA
-// 11 <-> VCC
-// ADDR1 represents A1:A0 of the 7-bit address.
-// ADDR2 represents A3:A2 of the 7-bit address.
-// The result is: 0b010(ADDR2)(ADDR1)
-#ifndef DRIVER_ADDR_1
-# define DRIVER_ADDR_1 0b0100000
-#endif
-
-// Set defaults for Spread Spectrum Register
-#ifndef ISSI_SSR_1
-# ifndef DRIVER_ADDR_2
-# define ISSI_SSR_1 0x00
-# else
-# define ISSI_SSR_1 0xC0
-# endif
-#endif
-#ifndef ISSI_SSR_2
-# define ISSI_SSR_2 0x80
-#endif
-#ifndef ISSI_SSR_3
-# define ISSI_SSR_3 0x80
-#endif
-#ifndef ISSI_SSR_4
-# define ISSI_SSR_4 0x80
-#endif
-
-// Command Registers
-#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE
-#define ISSI_COMMANDREGISTER 0xFD
-#define ISSI_IDREGISTER 0xFC
-#define ISSI_REGISTER_UNLOCK 0xC5
-
-// Response Registers
-#define ISSI_PAGE_PWM 0x00
-#define ISSI_PAGE_SCALING 0x01
-#define ISSI_PAGE_FUNCTION 0x02
-
-// Registers under Function Register
-#define ISSI_REG_CONFIGURATION 0x00
-#define ISSI_REG_GLOBALCURRENT 0x01
-#define ISSI_REG_PULLDOWNUP 0x02
-#define ISSI_REG_TEMP 0x24
-#define ISSI_REG_SSR 0x25
-#define ISSI_REG_RESET 0x2F
-
-// Set defaults for Function Registers
-#ifndef ISSI_CONFIGURATION
-# define ISSI_CONFIGURATION 0x01
-#endif
-#ifndef ISSI_GLOBALCURRENT
-# define ISSI_GLOBALCURRENT 0xFF
-#endif
-#ifndef ISSI_PULLDOWNUP
-# define ISSI_PULLDOWNUP 0x33
-#endif
-#ifndef ISSI_TEMP
-# define ISSI_TEMP 0x00
-#endif
-
-// Set defaults for Scaling registers
-#ifndef ISSI_SCAL_RED
-# define ISSI_SCAL_RED 0xFF
-#endif
-#ifndef ISSI_SCAL_BLUE
-# define ISSI_SCAL_BLUE 0xFF
-#endif
-#ifndef ISSI_SCAL_GREEN
-# define ISSI_SCAL_GREEN 0xFF
-#endif
-#define ISSI_SCAL_RED_OFF 0x00
-#define ISSI_SCAL_GREEN_OFF 0x00
-#define ISSI_SCAL_BLUE_OFF 0x00
-
-#ifndef ISSI_SCAL_LED
-# define ISSI_SCAL_LED 0xFF
-#endif
-#define ISSI_SCAL_LED_OFF 0x00
-
-// Set buffer sizes
-#define ISSI_MAX_LEDS 198
-#define ISSI_SCALING_SIZE 198
-#define ISSI_PWM_TRF_SIZE 18
-#define ISSI_SCALING_TRF_SIZE 18
-
-// Location of 1st bit for PWM and Scaling registers
-#define ISSI_PWM_REG_1ST 0x01
-#define ISSI_SCL_REG_1ST 0x01
-
-// Map CS SW locations to order in PWM / Scaling buffers
-// This matches the ORDER in the Datasheet Register not the POSITION
-// It will always count from 0x00 to (ISSI_MAX_LEDS - 1)
-#define CS1_SW1 0x00
-#define CS2_SW1 0x01
-#define CS3_SW1 0x02
-#define CS4_SW1 0x03
-#define CS5_SW1 0x04
-#define CS6_SW1 0x05
-#define CS7_SW1 0x06
-#define CS8_SW1 0x07
-#define CS9_SW1 0x08
-#define CS10_SW1 0x09
-#define CS11_SW1 0x0A
-#define CS12_SW1 0x0B
-#define CS13_SW1 0x0C
-#define CS14_SW1 0x0D
-#define CS15_SW1 0x0E
-#define CS16_SW1 0x0F
-#define CS17_SW1 0x10
-#define CS18_SW1 0x11
-
-#define CS1_SW2 0x12
-#define CS2_SW2 0x13
-#define CS3_SW2 0x14
-#define CS4_SW2 0x15
-#define CS5_SW2 0x16
-#define CS6_SW2 0x17
-#define CS7_SW2 0x18
-#define CS8_SW2 0x19
-#define CS9_SW2 0x1A
-#define CS10_SW2 0x1B
-#define CS11_SW2 0x1C
-#define CS12_SW2 0x1D
-#define CS13_SW2 0x1E
-#define CS14_SW2 0x1F
-#define CS15_SW2 0x20
-#define CS16_SW2 0x21
-#define CS17_SW2 0x22
-#define CS18_SW2 0x23
-
-#define CS1_SW3 0x24
-#define CS2_SW3 0x25
-#define CS3_SW3 0x26
-#define CS4_SW3 0x27
-#define CS5_SW3 0x28
-#define CS6_SW3 0x29
-#define CS7_SW3 0x2A
-#define CS8_SW3 0x2B
-#define CS9_SW3 0x2C
-#define CS10_SW3 0x2D
-#define CS11_SW3 0x2E
-#define CS12_SW3 0x2F
-#define CS13_SW3 0x30
-#define CS14_SW3 0x31
-#define CS15_SW3 0x32
-#define CS16_SW3 0x33
-#define CS17_SW3 0x34
-#define CS18_SW3 0x35
-
-#define CS1_SW4 0x36
-#define CS2_SW4 0x37
-#define CS3_SW4 0x38
-#define CS4_SW4 0x39
-#define CS5_SW4 0x3A
-#define CS6_SW4 0x3B
-#define CS7_SW4 0x3C
-#define CS8_SW4 0x3D
-#define CS9_SW4 0x3E
-#define CS10_SW4 0x3F
-#define CS11_SW4 0x40
-#define CS12_SW4 0x41
-#define CS13_SW4 0x42
-#define CS14_SW4 0x43
-#define CS15_SW4 0x44
-#define CS16_SW4 0x45
-#define CS17_SW4 0x46
-#define CS18_SW4 0x47
-
-#define CS1_SW5 0x48
-#define CS2_SW5 0x49
-#define CS3_SW5 0x4A
-#define CS4_SW5 0x4B
-#define CS5_SW5 0x4C
-#define CS6_SW5 0x4D
-#define CS7_SW5 0x4E
-#define CS8_SW5 0x4F
-#define CS9_SW5 0x50
-#define CS10_SW5 0x51
-#define CS11_SW5 0x52
-#define CS12_SW5 0x53
-#define CS13_SW5 0x54
-#define CS14_SW5 0x55
-#define CS15_SW5 0x56
-#define CS16_SW5 0x57
-#define CS17_SW5 0x58
-#define CS18_SW5 0x59
-
-#define CS1_SW6 0x5A
-#define CS2_SW6 0x5B
-#define CS3_SW6 0x5C
-#define CS4_SW6 0x5D
-#define CS5_SW6 0x5E
-#define CS6_SW6 0x5F
-#define CS7_SW6 0x60
-#define CS8_SW6 0x61
-#define CS9_SW6 0x62
-#define CS10_SW6 0x63
-#define CS11_SW6 0x64
-#define CS12_SW6 0x65
-#define CS13_SW6 0x66
-#define CS14_SW6 0x67
-#define CS15_SW6 0x68
-#define CS16_SW6 0x69
-#define CS17_SW6 0x6A
-#define CS18_SW6 0x6B
-
-#define CS1_SW7 0x6C
-#define CS2_SW7 0x6D
-#define CS3_SW7 0x6E
-#define CS4_SW7 0x6F
-#define CS5_SW7 0x70
-#define CS6_SW7 0x71
-#define CS7_SW7 0x72
-#define CS8_SW7 0x73
-#define CS9_SW7 0x74
-#define CS10_SW7 0x75
-#define CS11_SW7 0x76
-#define CS12_SW7 0x77
-#define CS13_SW7 0x78
-#define CS14_SW7 0x79
-#define CS15_SW7 0x7A
-#define CS16_SW7 0x7B
-#define CS17_SW7 0x7C
-#define CS18_SW7 0x7D
-
-#define CS1_SW8 0x7E
-#define CS2_SW8 0x7F
-#define CS3_SW8 0x80
-#define CS4_SW8 0x81
-#define CS5_SW8 0x82
-#define CS6_SW8 0x83
-#define CS7_SW8 0x84
-#define CS8_SW8 0x85
-#define CS9_SW8 0x86
-#define CS10_SW8 0x87
-#define CS11_SW8 0x88
-#define CS12_SW8 0x89
-#define CS13_SW8 0x8A
-#define CS14_SW8 0x8B
-#define CS15_SW8 0x8C
-#define CS16_SW8 0x8D
-#define CS17_SW8 0x8E
-#define CS18_SW8 0x8F
-
-#define CS1_SW9 0x90
-#define CS2_SW9 0x91
-#define CS3_SW9 0x92
-#define CS4_SW9 0x93
-#define CS5_SW9 0x94
-#define CS6_SW9 0x95
-#define CS7_SW9 0x96
-#define CS8_SW9 0x97
-#define CS9_SW9 0x98
-#define CS10_SW9 0x99
-#define CS11_SW9 0x9A
-#define CS12_SW9 0x9B
-#define CS13_SW9 0x9C
-#define CS14_SW9 0x9D
-#define CS15_SW9 0x9E
-#define CS16_SW9 0x9F
-#define CS17_SW9 0xA0
-#define CS18_SW9 0xA1
-
-#define CS1_SW10 0xA2
-#define CS2_SW10 0xA3
-#define CS3_SW10 0xA4
-#define CS4_SW10 0xA5
-#define CS5_SW10 0xA6
-#define CS6_SW10 0xA7
-#define CS7_SW10 0xA8
-#define CS8_SW10 0xA9
-#define CS9_SW10 0xAA
-#define CS10_SW10 0xAB
-#define CS11_SW10 0xAC
-#define CS12_SW10 0xAD
-#define CS13_SW10 0xAE
-#define CS14_SW10 0xAF
-#define CS15_SW10 0xB0
-#define CS16_SW10 0xB1
-#define CS17_SW10 0xB2
-#define CS18_SW10 0xB3
-
-#define CS1_SW11 0xB4
-#define CS2_SW11 0xB5
-#define CS3_SW11 0xB6
-#define CS4_SW11 0xB7
-#define CS5_SW11 0xB8
-#define CS6_SW11 0xB9
-#define CS7_SW11 0xBA
-#define CS8_SW11 0xBB
-#define CS9_SW11 0xBC
-#define CS10_SW11 0xBD
-#define CS11_SW11 0xBE
-#define CS12_SW11 0xBF
-#define CS13_SW11 0xC0
-#define CS14_SW11 0xC1
-#define CS15_SW11 0xC2
-#define CS16_SW11 0xC3
-#define CS17_SW11 0xC4
-#define CS18_SW11 0xC5
diff --git a/drivers/led/issi/is31fl3743a-mono.c b/drivers/led/issi/is31fl3743a-mono.c
new file mode 100644
index 0000000000..4df0956ed2
--- /dev/null
+++ b/drivers/led/issi/is31fl3743a-mono.c
@@ -0,0 +1,224 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3743a-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3743A_PWM_REGISTER_COUNT 198
+#define IS31FL3743A_SCALING_REGISTER_COUNT 198
+
+#ifndef IS31FL3743A_I2C_TIMEOUT
+# define IS31FL3743A_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3743A_I2C_PERSISTENCE
+# define IS31FL3743A_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3743A_CONFIGURATION
+# define IS31FL3743A_CONFIGURATION 0x01
+#endif
+
+#ifndef IS31FL3743A_SW_PULLDOWN
+# define IS31FL3743A_SW_PULLDOWN IS31FL3743A_PDR_2K_OHM_SW_OFF
+#endif
+
+#ifndef IS31FL3743A_CS_PULLUP
+# define IS31FL3743A_CS_PULLUP IS31FL3743A_PUR_2K_OHM_CS_OFF
+#endif
+
+#ifndef IS31FL3743A_GLOBAL_CURRENT
+# define IS31FL3743A_GLOBAL_CURRENT 0xFF
+#endif
+
+#ifndef IS31FL3743A_SYNC_1
+# define IS31FL3743A_SYNC_1 IS31FL3743A_SYNC_NONE
+#endif
+#ifndef IS31FL3743A_SYNC_2
+# define IS31FL3743A_SYNC_2 IS31FL3743A_SYNC_NONE
+#endif
+#ifndef IS31FL3743A_SYNC_3
+# define IS31FL3743A_SYNC_3 IS31FL3743A_SYNC_NONE
+#endif
+#ifndef IS31FL3743A_SYNC_4
+# define IS31FL3743A_SYNC_4 IS31FL3743A_SYNC_NONE
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3743A_DRIVER_COUNT][IS31FL3743A_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3743A_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3743A_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3743A_DRIVER_COUNT][IS31FL3743A_SCALING_REGISTER_COUNT];
+
+void is31fl3743a_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3743A_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3743A_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3743A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3743A_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3743a_select_page(uint8_t addr, uint8_t page) {
+ is31fl3743a_write_register(addr, IS31FL3743A_REG_COMMAND_WRITE_LOCK, IS31FL3743A_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3743a_write_register(addr, IS31FL3743A_REG_COMMAND, page);
+}
+
+void is31fl3743a_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 11 transfers of 18 bytes.
+
+ // Iterate over the pwm_buffer contents at 18 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3743A_PWM_REGISTER_COUNT; i += 18) {
+#if IS31FL3743A_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3743A_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3743A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3743A_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3743a_init_drivers(void) {
+ i2c_init();
+
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_1, IS31FL3743A_SYNC_1);
+#if defined(IS31FL3743A_I2C_ADDRESS_2)
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_2, IS31FL3743A_SYNC_2);
+# if defined(IS31FL3743A_I2C_ADDRESS_3)
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_3, IS31FL3743A_SYNC_3);
+# if defined(IS31FL3743A_I2C_ADDRESS_4)
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_4, IS31FL3743A_SYNC_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3743A_LED_COUNT; i++) {
+ is31fl3743a_set_scaling_register(i, 0xFF);
+ }
+
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3743A_I2C_ADDRESS_2)
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3743A_I2C_ADDRESS_3)
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3743A_I2C_ADDRESS_4)
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3743a_init(uint8_t addr, uint8_t sync) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3743a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3743A_PWM_REGISTER_COUNT; i++) {
+ is31fl3743a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_FUNCTION);
+
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_PULLDOWNUP, (IS31FL3743A_SW_PULLDOWN << 4) | IS31FL3743A_CS_PULLUP);
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3743A_GLOBAL_CURRENT);
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_SPREAD_SPECTRUM, (sync & 0b11) << 6);
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_CONFIGURATION, IS31FL3743A_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3743a_set_value(int index, uint8_t value) {
+ is31fl3743a_led_t led;
+
+ if (index >= 0 && index < IS31FL3743A_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.v] = value;
+ }
+}
+
+void is31fl3743a_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3743A_LED_COUNT; i++) {
+ is31fl3743a_set_value(i, value);
+ }
+}
+
+void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value) {
+ is31fl3743a_led_t led;
+ memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.v] = value;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3743a_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM);
+
+ is31fl3743a_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3743a_write_register(addr, i + 1, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3743a_flush(void) {
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3743A_I2C_ADDRESS_2)
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3743A_I2C_ADDRESS_3)
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3743A_I2C_ADDRESS_4)
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3743a-mono.h b/drivers/led/issi/is31fl3743a-mono.h
new file mode 100644
index 0000000000..8ec3ce0755
--- /dev/null
+++ b/drivers/led/issi/is31fl3743a-mono.h
@@ -0,0 +1,328 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3743A_REG_ID 0xFC
+
+#define IS31FL3743A_REG_COMMAND 0xFD
+
+#define IS31FL3743A_COMMAND_PWM 0x00
+#define IS31FL3743A_COMMAND_SCALING 0x01
+#define IS31FL3743A_COMMAND_FUNCTION 0x02
+
+#define IS31FL3743A_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3743A_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3743A_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3743A_FUNCTION_REG_TEMPERATURE 0x24
+#define IS31FL3743A_FUNCTION_REG_SPREAD_SPECTRUM 0x25
+#define IS31FL3743A_FUNCTION_REG_RESET 0x2F
+
+#define IS31FL3743A_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3743A_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3743A_I2C_ADDRESS_GND_GND 0x20
+#define IS31FL3743A_I2C_ADDRESS_GND_SCL 0x21
+#define IS31FL3743A_I2C_ADDRESS_GND_SDA 0x22
+#define IS31FL3743A_I2C_ADDRESS_GND_VCC 0x23
+#define IS31FL3743A_I2C_ADDRESS_SCL_GND 0x24
+#define IS31FL3743A_I2C_ADDRESS_SCL_SCL 0x25
+#define IS31FL3743A_I2C_ADDRESS_SCL_SDA 0x26
+#define IS31FL3743A_I2C_ADDRESS_SCL_VCC 0x27
+#define IS31FL3743A_I2C_ADDRESS_SDA_GND 0x28
+#define IS31FL3743A_I2C_ADDRESS_SDA_SCL 0x29
+#define IS31FL3743A_I2C_ADDRESS_SDA_SDA 0x2A
+#define IS31FL3743A_I2C_ADDRESS_SDA_VCC 0x2B
+#define IS31FL3743A_I2C_ADDRESS_VCC_GND 0x2C
+#define IS31FL3743A_I2C_ADDRESS_VCC_SCL 0x2D
+#define IS31FL3743A_I2C_ADDRESS_VCC_SDA 0x2E
+#define IS31FL3743A_I2C_ADDRESS_VCC_VCC 0x2F
+
+#if defined(LED_MATRIX_IS31FL3743A)
+# define IS31FL3743A_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3743A_I2C_ADDRESS_4)
+# define IS31FL3743A_DRIVER_COUNT 4
+#elif defined(IS31FL3743A_I2C_ADDRESS_3)
+# define IS31FL3743A_DRIVER_COUNT 3
+#elif defined(IS31FL3743A_I2C_ADDRESS_2)
+# define IS31FL3743A_DRIVER_COUNT 2
+#elif defined(IS31FL3743A_I2C_ADDRESS_1)
+# define IS31FL3743A_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3743a_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3743a_led_t;
+
+extern const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT];
+
+void is31fl3743a_init_drivers(void);
+void is31fl3743a_init(uint8_t addr, uint8_t sync);
+void is31fl3743a_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3743a_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3743a_set_value(int index, uint8_t value);
+void is31fl3743a_set_value_all(uint8_t value);
+
+void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value);
+
+void is31fl3743a_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3743a_flush(void);
+
+#define IS31FL3743A_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3743A_PDR_0K5_OHM_SW_OFF 0b001 // 0.5 kOhm resistor in SWx off time
+#define IS31FL3743A_PDR_1K_OHM_SW_OFF 0b010 // 1 kOhm resistor in SWx off time
+#define IS31FL3743A_PDR_2K_OHM_SW_OFF 0b011 // 2 kOhm resistor in SWx off time
+#define IS31FL3743A_PDR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3743A_PDR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3743A_PDR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3743A_PDR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3743A_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3743A_PUR_0K5_OHM_CS_OFF 0b001 // 0.5 kOhm resistor in CSy off time
+#define IS31FL3743A_PUR_1K_OHM_CS_OFF 0b010 // 1 kOhm resistor in CSy off time
+#define IS31FL3743A_PUR_2K_OHM_CS_OFF 0b011 // 2 kOhm resistor in CSy off time
+#define IS31FL3743A_PUR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3743A_PUR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3743A_PUR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3743A_PUR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3743A_SYNC_NONE 0b00
+#define IS31FL3743A_SYNC_SLAVE 0b10
+#define IS31FL3743A_SYNC_MASTER 0b11
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+
+#define CS1_SW2 0x12
+#define CS2_SW2 0x13
+#define CS3_SW2 0x14
+#define CS4_SW2 0x15
+#define CS5_SW2 0x16
+#define CS6_SW2 0x17
+#define CS7_SW2 0x18
+#define CS8_SW2 0x19
+#define CS9_SW2 0x1A
+#define CS10_SW2 0x1B
+#define CS11_SW2 0x1C
+#define CS12_SW2 0x1D
+#define CS13_SW2 0x1E
+#define CS14_SW2 0x1F
+#define CS15_SW2 0x20
+#define CS16_SW2 0x21
+#define CS17_SW2 0x22
+#define CS18_SW2 0x23
+
+#define CS1_SW3 0x24
+#define CS2_SW3 0x25
+#define CS3_SW3 0x26
+#define CS4_SW3 0x27
+#define CS5_SW3 0x28
+#define CS6_SW3 0x29
+#define CS7_SW3 0x2A
+#define CS8_SW3 0x2B
+#define CS9_SW3 0x2C
+#define CS10_SW3 0x2D
+#define CS11_SW3 0x2E
+#define CS12_SW3 0x2F
+#define CS13_SW3 0x30
+#define CS14_SW3 0x31
+#define CS15_SW3 0x32
+#define CS16_SW3 0x33
+#define CS17_SW3 0x34
+#define CS18_SW3 0x35
+
+#define CS1_SW4 0x36
+#define CS2_SW4 0x37
+#define CS3_SW4 0x38
+#define CS4_SW4 0x39
+#define CS5_SW4 0x3A
+#define CS6_SW4 0x3B
+#define CS7_SW4 0x3C
+#define CS8_SW4 0x3D
+#define CS9_SW4 0x3E
+#define CS10_SW4 0x3F
+#define CS11_SW4 0x40
+#define CS12_SW4 0x41
+#define CS13_SW4 0x42
+#define CS14_SW4 0x43
+#define CS15_SW4 0x44
+#define CS16_SW4 0x45
+#define CS17_SW4 0x46
+#define CS18_SW4 0x47
+
+#define CS1_SW5 0x48
+#define CS2_SW5 0x49
+#define CS3_SW5 0x4A
+#define CS4_SW5 0x4B
+#define CS5_SW5 0x4C
+#define CS6_SW5 0x4D
+#define CS7_SW5 0x4E
+#define CS8_SW5 0x4F
+#define CS9_SW5 0x50
+#define CS10_SW5 0x51
+#define CS11_SW5 0x52
+#define CS12_SW5 0x53
+#define CS13_SW5 0x54
+#define CS14_SW5 0x55
+#define CS15_SW5 0x56
+#define CS16_SW5 0x57
+#define CS17_SW5 0x58
+#define CS18_SW5 0x59
+
+#define CS1_SW6 0x5A
+#define CS2_SW6 0x5B
+#define CS3_SW6 0x5C
+#define CS4_SW6 0x5D
+#define CS5_SW6 0x5E
+#define CS6_SW6 0x5F
+#define CS7_SW6 0x60
+#define CS8_SW6 0x61
+#define CS9_SW6 0x62
+#define CS10_SW6 0x63
+#define CS11_SW6 0x64
+#define CS12_SW6 0x65
+#define CS13_SW6 0x66
+#define CS14_SW6 0x67
+#define CS15_SW6 0x68
+#define CS16_SW6 0x69
+#define CS17_SW6 0x6A
+#define CS18_SW6 0x6B
+
+#define CS1_SW7 0x6C
+#define CS2_SW7 0x6D
+#define CS3_SW7 0x6E
+#define CS4_SW7 0x6F
+#define CS5_SW7 0x70
+#define CS6_SW7 0x71
+#define CS7_SW7 0x72
+#define CS8_SW7 0x73
+#define CS9_SW7 0x74
+#define CS10_SW7 0x75
+#define CS11_SW7 0x76
+#define CS12_SW7 0x77
+#define CS13_SW7 0x78
+#define CS14_SW7 0x79
+#define CS15_SW7 0x7A
+#define CS16_SW7 0x7B
+#define CS17_SW7 0x7C
+#define CS18_SW7 0x7D
+
+#define CS1_SW8 0x7E
+#define CS2_SW8 0x7F
+#define CS3_SW8 0x80
+#define CS4_SW8 0x81
+#define CS5_SW8 0x82
+#define CS6_SW8 0x83
+#define CS7_SW8 0x84
+#define CS8_SW8 0x85
+#define CS9_SW8 0x86
+#define CS10_SW8 0x87
+#define CS11_SW8 0x88
+#define CS12_SW8 0x89
+#define CS13_SW8 0x8A
+#define CS14_SW8 0x8B
+#define CS15_SW8 0x8C
+#define CS16_SW8 0x8D
+#define CS17_SW8 0x8E
+#define CS18_SW8 0x8F
+
+#define CS1_SW9 0x90
+#define CS2_SW9 0x91
+#define CS3_SW9 0x92
+#define CS4_SW9 0x93
+#define CS5_SW9 0x94
+#define CS6_SW9 0x95
+#define CS7_SW9 0x96
+#define CS8_SW9 0x97
+#define CS9_SW9 0x98
+#define CS10_SW9 0x99
+#define CS11_SW9 0x9A
+#define CS12_SW9 0x9B
+#define CS13_SW9 0x9C
+#define CS14_SW9 0x9D
+#define CS15_SW9 0x9E
+#define CS16_SW9 0x9F
+#define CS17_SW9 0xA0
+#define CS18_SW9 0xA1
+
+#define CS1_SW10 0xA2
+#define CS2_SW10 0xA3
+#define CS3_SW10 0xA4
+#define CS4_SW10 0xA5
+#define CS5_SW10 0xA6
+#define CS6_SW10 0xA7
+#define CS7_SW10 0xA8
+#define CS8_SW10 0xA9
+#define CS9_SW10 0xAA
+#define CS10_SW10 0xAB
+#define CS11_SW10 0xAC
+#define CS12_SW10 0xAD
+#define CS13_SW10 0xAE
+#define CS14_SW10 0xAF
+#define CS15_SW10 0xB0
+#define CS16_SW10 0xB1
+#define CS17_SW10 0xB2
+#define CS18_SW10 0xB3
+
+#define CS1_SW11 0xB4
+#define CS2_SW11 0xB5
+#define CS3_SW11 0xB6
+#define CS4_SW11 0xB7
+#define CS5_SW11 0xB8
+#define CS6_SW11 0xB9
+#define CS7_SW11 0xBA
+#define CS8_SW11 0xBB
+#define CS9_SW11 0xBC
+#define CS10_SW11 0xBD
+#define CS11_SW11 0xBE
+#define CS12_SW11 0xBF
+#define CS13_SW11 0xC0
+#define CS14_SW11 0xC1
+#define CS15_SW11 0xC2
+#define CS16_SW11 0xC3
+#define CS17_SW11 0xC4
+#define CS18_SW11 0xC5
diff --git a/drivers/led/issi/is31fl3743a.c b/drivers/led/issi/is31fl3743a.c
new file mode 100644
index 0000000000..f9cdb130da
--- /dev/null
+++ b/drivers/led/issi/is31fl3743a.c
@@ -0,0 +1,228 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3743a.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3743A_PWM_REGISTER_COUNT 198
+#define IS31FL3743A_SCALING_REGISTER_COUNT 198
+
+#ifndef IS31FL3743A_I2C_TIMEOUT
+# define IS31FL3743A_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3743A_I2C_PERSISTENCE
+# define IS31FL3743A_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3743A_CONFIGURATION
+# define IS31FL3743A_CONFIGURATION 0x01
+#endif
+
+#ifndef IS31FL3743A_SW_PULLDOWN
+# define IS31FL3743A_SW_PULLDOWN IS31FL3743A_PDR_2K_OHM_SW_OFF
+#endif
+
+#ifndef IS31FL3743A_CS_PULLUP
+# define IS31FL3743A_CS_PULLUP IS31FL3743A_PUR_2K_OHM_CS_OFF
+#endif
+
+#ifndef IS31FL3743A_GLOBAL_CURRENT
+# define IS31FL3743A_GLOBAL_CURRENT 0xFF
+#endif
+
+#ifndef IS31FL3743A_SYNC_1
+# define IS31FL3743A_SYNC_1 IS31FL3743A_SYNC_NONE
+#endif
+#ifndef IS31FL3743A_SYNC_2
+# define IS31FL3743A_SYNC_2 IS31FL3743A_SYNC_NONE
+#endif
+#ifndef IS31FL3743A_SYNC_3
+# define IS31FL3743A_SYNC_3 IS31FL3743A_SYNC_NONE
+#endif
+#ifndef IS31FL3743A_SYNC_4
+# define IS31FL3743A_SYNC_4 IS31FL3743A_SYNC_NONE
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3743A_DRIVER_COUNT][IS31FL3743A_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3743A_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3743A_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3743A_DRIVER_COUNT][IS31FL3743A_SCALING_REGISTER_COUNT];
+
+void is31fl3743a_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3743A_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3743A_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3743A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3743A_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3743a_select_page(uint8_t addr, uint8_t page) {
+ is31fl3743a_write_register(addr, IS31FL3743A_REG_COMMAND_WRITE_LOCK, IS31FL3743A_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3743a_write_register(addr, IS31FL3743A_REG_COMMAND, page);
+}
+
+void is31fl3743a_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 11 transfers of 18 bytes.
+
+ // Iterate over the pwm_buffer contents at 18 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3743A_PWM_REGISTER_COUNT; i += 18) {
+#if IS31FL3743A_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3743A_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3743A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3743A_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3743a_init_drivers(void) {
+ i2c_init();
+
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_1, IS31FL3743A_SYNC_1);
+#if defined(IS31FL3743A_I2C_ADDRESS_2)
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_2, IS31FL3743A_SYNC_2);
+# if defined(IS31FL3743A_I2C_ADDRESS_3)
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_3, IS31FL3743A_SYNC_3);
+# if defined(IS31FL3743A_I2C_ADDRESS_4)
+ is31fl3743a_init(IS31FL3743A_I2C_ADDRESS_4, IS31FL3743A_SYNC_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3743A_LED_COUNT; i++) {
+ is31fl3743a_set_scaling_register(i, 0xFF, 0xFF, 0xFF);
+ }
+
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3743A_I2C_ADDRESS_2)
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3743A_I2C_ADDRESS_3)
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3743A_I2C_ADDRESS_4)
+ is31fl3743a_update_scaling_registers(IS31FL3743A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3743a_init(uint8_t addr, uint8_t sync) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3743a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3743A_PWM_REGISTER_COUNT; i++) {
+ is31fl3743a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_FUNCTION);
+
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_PULLDOWNUP, (IS31FL3743A_SW_PULLDOWN << 4) | IS31FL3743A_CS_PULLUP);
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3743A_GLOBAL_CURRENT);
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_SPREAD_SPECTRUM, (sync & 0b11) << 6);
+ is31fl3743a_write_register(addr, IS31FL3743A_FUNCTION_REG_CONFIGURATION, IS31FL3743A_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3743a_led_t led;
+
+ if (index >= 0 && index < IS31FL3743A_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
+ }
+}
+
+void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < IS31FL3743A_LED_COUNT; i++) {
+ is31fl3743a_set_color(i, red, green, blue);
+ }
+}
+
+void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3743a_led_t led;
+ memcpy_P(&led, (&g_is31fl3743a_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.r] = red;
+ g_scaling_registers[led.driver][led.g] = green;
+ g_scaling_registers[led.driver][led.b] = blue;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3743a_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_PWM);
+
+ is31fl3743a_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3743a_select_page(addr, IS31FL3743A_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3743A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3743a_write_register(addr, i + 1, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3743a_flush(void) {
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3743A_I2C_ADDRESS_2)
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3743A_I2C_ADDRESS_3)
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3743A_I2C_ADDRESS_4)
+ is31fl3743a_update_pwm_buffers(IS31FL3743A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3743a.h b/drivers/led/issi/is31fl3743a.h
new file mode 100644
index 0000000000..381b853716
--- /dev/null
+++ b/drivers/led/issi/is31fl3743a.h
@@ -0,0 +1,330 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3743A_REG_ID 0xFC
+
+#define IS31FL3743A_REG_COMMAND 0xFD
+
+#define IS31FL3743A_COMMAND_PWM 0x00
+#define IS31FL3743A_COMMAND_SCALING 0x01
+#define IS31FL3743A_COMMAND_FUNCTION 0x02
+
+#define IS31FL3743A_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3743A_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3743A_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3743A_FUNCTION_REG_TEMPERATURE 0x24
+#define IS31FL3743A_FUNCTION_REG_SPREAD_SPECTRUM 0x25
+#define IS31FL3743A_FUNCTION_REG_RESET 0x2F
+
+#define IS31FL3743A_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3743A_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3743A_I2C_ADDRESS_GND_GND 0x20
+#define IS31FL3743A_I2C_ADDRESS_GND_SCL 0x21
+#define IS31FL3743A_I2C_ADDRESS_GND_SDA 0x22
+#define IS31FL3743A_I2C_ADDRESS_GND_VCC 0x23
+#define IS31FL3743A_I2C_ADDRESS_SCL_GND 0x24
+#define IS31FL3743A_I2C_ADDRESS_SCL_SCL 0x25
+#define IS31FL3743A_I2C_ADDRESS_SCL_SDA 0x26
+#define IS31FL3743A_I2C_ADDRESS_SCL_VCC 0x27
+#define IS31FL3743A_I2C_ADDRESS_SDA_GND 0x28
+#define IS31FL3743A_I2C_ADDRESS_SDA_SCL 0x29
+#define IS31FL3743A_I2C_ADDRESS_SDA_SDA 0x2A
+#define IS31FL3743A_I2C_ADDRESS_SDA_VCC 0x2B
+#define IS31FL3743A_I2C_ADDRESS_VCC_GND 0x2C
+#define IS31FL3743A_I2C_ADDRESS_VCC_SCL 0x2D
+#define IS31FL3743A_I2C_ADDRESS_VCC_SDA 0x2E
+#define IS31FL3743A_I2C_ADDRESS_VCC_VCC 0x2F
+
+#if defined(RGB_MATRIX_IS31FL3743A)
+# define IS31FL3743A_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3743A_I2C_ADDRESS_4)
+# define IS31FL3743A_DRIVER_COUNT 4
+#elif defined(IS31FL3743A_I2C_ADDRESS_3)
+# define IS31FL3743A_DRIVER_COUNT 3
+#elif defined(IS31FL3743A_I2C_ADDRESS_2)
+# define IS31FL3743A_DRIVER_COUNT 2
+#elif defined(IS31FL3743A_I2C_ADDRESS_1)
+# define IS31FL3743A_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3743a_led_t {
+ uint8_t driver : 2;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+} PACKED is31fl3743a_led_t;
+
+extern const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT];
+
+void is31fl3743a_init_drivers(void);
+void is31fl3743a_init(uint8_t addr, uint8_t sync);
+void is31fl3743a_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3743a_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
+void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3743a_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3743a_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3743a_flush(void);
+
+#define IS31FL3743A_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3743A_PDR_0K5_OHM_SW_OFF 0b001 // 0.5 kOhm resistor in SWx off time
+#define IS31FL3743A_PDR_1K_OHM_SW_OFF 0b010 // 1 kOhm resistor in SWx off time
+#define IS31FL3743A_PDR_2K_OHM_SW_OFF 0b011 // 2 kOhm resistor in SWx off time
+#define IS31FL3743A_PDR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3743A_PDR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3743A_PDR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3743A_PDR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3743A_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3743A_PUR_0K5_OHM_CS_OFF 0b001 // 0.5 kOhm resistor in CSy off time
+#define IS31FL3743A_PUR_1K_OHM_CS_OFF 0b010 // 1 kOhm resistor in CSy off time
+#define IS31FL3743A_PUR_2K_OHM_CS_OFF 0b011 // 2 kOhm resistor in CSy off time
+#define IS31FL3743A_PUR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3743A_PUR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3743A_PUR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3743A_PUR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3743A_SYNC_NONE 0b00
+#define IS31FL3743A_SYNC_SLAVE 0b10
+#define IS31FL3743A_SYNC_MASTER 0b11
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+
+#define CS1_SW2 0x12
+#define CS2_SW2 0x13
+#define CS3_SW2 0x14
+#define CS4_SW2 0x15
+#define CS5_SW2 0x16
+#define CS6_SW2 0x17
+#define CS7_SW2 0x18
+#define CS8_SW2 0x19
+#define CS9_SW2 0x1A
+#define CS10_SW2 0x1B
+#define CS11_SW2 0x1C
+#define CS12_SW2 0x1D
+#define CS13_SW2 0x1E
+#define CS14_SW2 0x1F
+#define CS15_SW2 0x20
+#define CS16_SW2 0x21
+#define CS17_SW2 0x22
+#define CS18_SW2 0x23
+
+#define CS1_SW3 0x24
+#define CS2_SW3 0x25
+#define CS3_SW3 0x26
+#define CS4_SW3 0x27
+#define CS5_SW3 0x28
+#define CS6_SW3 0x29
+#define CS7_SW3 0x2A
+#define CS8_SW3 0x2B
+#define CS9_SW3 0x2C
+#define CS10_SW3 0x2D
+#define CS11_SW3 0x2E
+#define CS12_SW3 0x2F
+#define CS13_SW3 0x30
+#define CS14_SW3 0x31
+#define CS15_SW3 0x32
+#define CS16_SW3 0x33
+#define CS17_SW3 0x34
+#define CS18_SW3 0x35
+
+#define CS1_SW4 0x36
+#define CS2_SW4 0x37
+#define CS3_SW4 0x38
+#define CS4_SW4 0x39
+#define CS5_SW4 0x3A
+#define CS6_SW4 0x3B
+#define CS7_SW4 0x3C
+#define CS8_SW4 0x3D
+#define CS9_SW4 0x3E
+#define CS10_SW4 0x3F
+#define CS11_SW4 0x40
+#define CS12_SW4 0x41
+#define CS13_SW4 0x42
+#define CS14_SW4 0x43
+#define CS15_SW4 0x44
+#define CS16_SW4 0x45
+#define CS17_SW4 0x46
+#define CS18_SW4 0x47
+
+#define CS1_SW5 0x48
+#define CS2_SW5 0x49
+#define CS3_SW5 0x4A
+#define CS4_SW5 0x4B
+#define CS5_SW5 0x4C
+#define CS6_SW5 0x4D
+#define CS7_SW5 0x4E
+#define CS8_SW5 0x4F
+#define CS9_SW5 0x50
+#define CS10_SW5 0x51
+#define CS11_SW5 0x52
+#define CS12_SW5 0x53
+#define CS13_SW5 0x54
+#define CS14_SW5 0x55
+#define CS15_SW5 0x56
+#define CS16_SW5 0x57
+#define CS17_SW5 0x58
+#define CS18_SW5 0x59
+
+#define CS1_SW6 0x5A
+#define CS2_SW6 0x5B
+#define CS3_SW6 0x5C
+#define CS4_SW6 0x5D
+#define CS5_SW6 0x5E
+#define CS6_SW6 0x5F
+#define CS7_SW6 0x60
+#define CS8_SW6 0x61
+#define CS9_SW6 0x62
+#define CS10_SW6 0x63
+#define CS11_SW6 0x64
+#define CS12_SW6 0x65
+#define CS13_SW6 0x66
+#define CS14_SW6 0x67
+#define CS15_SW6 0x68
+#define CS16_SW6 0x69
+#define CS17_SW6 0x6A
+#define CS18_SW6 0x6B
+
+#define CS1_SW7 0x6C
+#define CS2_SW7 0x6D
+#define CS3_SW7 0x6E
+#define CS4_SW7 0x6F
+#define CS5_SW7 0x70
+#define CS6_SW7 0x71
+#define CS7_SW7 0x72
+#define CS8_SW7 0x73
+#define CS9_SW7 0x74
+#define CS10_SW7 0x75
+#define CS11_SW7 0x76
+#define CS12_SW7 0x77
+#define CS13_SW7 0x78
+#define CS14_SW7 0x79
+#define CS15_SW7 0x7A
+#define CS16_SW7 0x7B
+#define CS17_SW7 0x7C
+#define CS18_SW7 0x7D
+
+#define CS1_SW8 0x7E
+#define CS2_SW8 0x7F
+#define CS3_SW8 0x80
+#define CS4_SW8 0x81
+#define CS5_SW8 0x82
+#define CS6_SW8 0x83
+#define CS7_SW8 0x84
+#define CS8_SW8 0x85
+#define CS9_SW8 0x86
+#define CS10_SW8 0x87
+#define CS11_SW8 0x88
+#define CS12_SW8 0x89
+#define CS13_SW8 0x8A
+#define CS14_SW8 0x8B
+#define CS15_SW8 0x8C
+#define CS16_SW8 0x8D
+#define CS17_SW8 0x8E
+#define CS18_SW8 0x8F
+
+#define CS1_SW9 0x90
+#define CS2_SW9 0x91
+#define CS3_SW9 0x92
+#define CS4_SW9 0x93
+#define CS5_SW9 0x94
+#define CS6_SW9 0x95
+#define CS7_SW9 0x96
+#define CS8_SW9 0x97
+#define CS9_SW9 0x98
+#define CS10_SW9 0x99
+#define CS11_SW9 0x9A
+#define CS12_SW9 0x9B
+#define CS13_SW9 0x9C
+#define CS14_SW9 0x9D
+#define CS15_SW9 0x9E
+#define CS16_SW9 0x9F
+#define CS17_SW9 0xA0
+#define CS18_SW9 0xA1
+
+#define CS1_SW10 0xA2
+#define CS2_SW10 0xA3
+#define CS3_SW10 0xA4
+#define CS4_SW10 0xA5
+#define CS5_SW10 0xA6
+#define CS6_SW10 0xA7
+#define CS7_SW10 0xA8
+#define CS8_SW10 0xA9
+#define CS9_SW10 0xAA
+#define CS10_SW10 0xAB
+#define CS11_SW10 0xAC
+#define CS12_SW10 0xAD
+#define CS13_SW10 0xAE
+#define CS14_SW10 0xAF
+#define CS15_SW10 0xB0
+#define CS16_SW10 0xB1
+#define CS17_SW10 0xB2
+#define CS18_SW10 0xB3
+
+#define CS1_SW11 0xB4
+#define CS2_SW11 0xB5
+#define CS3_SW11 0xB6
+#define CS4_SW11 0xB7
+#define CS5_SW11 0xB8
+#define CS6_SW11 0xB9
+#define CS7_SW11 0xBA
+#define CS8_SW11 0xBB
+#define CS9_SW11 0xBC
+#define CS10_SW11 0xBD
+#define CS11_SW11 0xBE
+#define CS12_SW11 0xBF
+#define CS13_SW11 0xC0
+#define CS14_SW11 0xC1
+#define CS15_SW11 0xC2
+#define CS16_SW11 0xC3
+#define CS17_SW11 0xC4
+#define CS18_SW11 0xC5
diff --git a/drivers/led/issi/is31fl3745-mono.c b/drivers/led/issi/is31fl3745-mono.c
new file mode 100644
index 0000000000..2b68c96326
--- /dev/null
+++ b/drivers/led/issi/is31fl3745-mono.c
@@ -0,0 +1,224 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3745-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3745_PWM_REGISTER_COUNT 144
+#define IS31FL3745_SCALING_REGISTER_COUNT 144
+
+#ifndef IS31FL3745_I2C_TIMEOUT
+# define IS31FL3745_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3745_I2C_PERSISTENCE
+# define IS31FL3745_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3745_CONFIGURATION
+# define IS31FL3745_CONFIGURATION 0x31
+#endif
+
+#ifndef IS31FL3745_SW_PULLDOWN
+# define IS31FL3745_SW_PULLDOWN IS31FL3745_PDR_2K_OHM_SW_OFF
+#endif
+
+#ifndef IS31FL3745_CS_PULLUP
+# define IS31FL3745_CS_PULLUP IS31FL3745_PUR_2K_OHM_CS_OFF
+#endif
+
+#ifndef IS31FL3745_GLOBAL_CURRENT
+# define IS31FL3745_GLOBAL_CURRENT 0xFF
+#endif
+
+#ifndef IS31FL3745_SYNC_1
+# define IS31FL3745_SYNC_1 IS31FL3745_SYNC_NONE
+#endif
+#ifndef IS31FL3745_SYNC_2
+# define IS31FL3745_SYNC_2 IS31FL3745_SYNC_NONE
+#endif
+#ifndef IS31FL3745_SYNC_3
+# define IS31FL3745_SYNC_3 IS31FL3745_SYNC_NONE
+#endif
+#ifndef IS31FL3745_SYNC_4
+# define IS31FL3745_SYNC_4 IS31FL3745_SYNC_NONE
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3745_DRIVER_COUNT][IS31FL3745_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3745_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3745_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3745_DRIVER_COUNT][IS31FL3745_SCALING_REGISTER_COUNT];
+
+void is31fl3745_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3745_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3745_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3745_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3745_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3745_select_page(uint8_t addr, uint8_t page) {
+ is31fl3745_write_register(addr, IS31FL3745_REG_COMMAND_WRITE_LOCK, IS31FL3745_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3745_write_register(addr, IS31FL3745_REG_COMMAND, page);
+}
+
+void is31fl3745_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 8 transfers of 18 bytes.
+
+ // Iterate over the pwm_buffer contents at 18 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3745_PWM_REGISTER_COUNT; i += 18) {
+#if IS31FL3745_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3745_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3745_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3745_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3745_init_drivers(void) {
+ i2c_init();
+
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_1, IS31FL3745_SYNC_1);
+#if defined(IS31FL3745_I2C_ADDRESS_2)
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_2, IS31FL3745_SYNC_2);
+# if defined(IS31FL3745_I2C_ADDRESS_3)
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_3, IS31FL3745_SYNC_3);
+# if defined(IS31FL3745_I2C_ADDRESS_4)
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_4, IS31FL3745_SYNC_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3745_LED_COUNT; i++) {
+ is31fl3745_set_scaling_register(i, 0xFF);
+ }
+
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3745_I2C_ADDRESS_2)
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3745_I2C_ADDRESS_3)
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3745_I2C_ADDRESS_4)
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3745_init(uint8_t addr, uint8_t sync) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) {
+ is31fl3745_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3745_PWM_REGISTER_COUNT; i++) {
+ is31fl3745_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_FUNCTION);
+
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_PULLDOWNUP, (IS31FL3745_SW_PULLDOWN << 4) | IS31FL3745_CS_PULLUP);
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3745_GLOBAL_CURRENT);
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_SPREAD_SPECTRUM, (sync & 0b11) << 6);
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_CONFIGURATION, IS31FL3745_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3745_set_value(int index, uint8_t value) {
+ is31fl3745_led_t led;
+
+ if (index >= 0 && index < IS31FL3745_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.v] = value;
+ }
+}
+
+void is31fl3745_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3745_LED_COUNT; i++) {
+ is31fl3745_set_value(i, value);
+ }
+}
+
+void is31fl3745_set_scaling_register(uint8_t index, uint8_t value) {
+ is31fl3745_led_t led;
+ memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.v] = value;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3745_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM);
+
+ is31fl3745_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) {
+ is31fl3745_write_register(addr, i + 1, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3745_flush(void) {
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3745_I2C_ADDRESS_2)
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3745_I2C_ADDRESS_3)
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3745_I2C_ADDRESS_4)
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3745-mono.h b/drivers/led/issi/is31fl3745-mono.h
new file mode 100644
index 0000000000..f60f0acfd9
--- /dev/null
+++ b/drivers/led/issi/is31fl3745-mono.h
@@ -0,0 +1,271 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3745_REG_ID 0xFC
+
+#define IS31FL3745_REG_COMMAND 0xFD
+
+#define IS31FL3745_COMMAND_PWM 0x00
+#define IS31FL3745_COMMAND_SCALING 0x01
+#define IS31FL3745_COMMAND_FUNCTION 0x02
+
+#define IS31FL3745_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3745_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3745_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3745_FUNCTION_REG_TEMPERATURE 0x24
+#define IS31FL3745_FUNCTION_REG_SPREAD_SPECTRUM 0x25
+#define IS31FL3745_FUNCTION_REG_RESET 0x2F
+
+#define IS31FL3745_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3745_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3745_I2C_ADDRESS_GND_GND 0x20
+#define IS31FL3745_I2C_ADDRESS_GND_SCL 0x21
+#define IS31FL3745_I2C_ADDRESS_GND_SDA 0x22
+#define IS31FL3745_I2C_ADDRESS_GND_VCC 0x23
+#define IS31FL3745_I2C_ADDRESS_SCL_GND 0x24
+#define IS31FL3745_I2C_ADDRESS_SCL_SCL 0x25
+#define IS31FL3745_I2C_ADDRESS_SCL_SDA 0x26
+#define IS31FL3745_I2C_ADDRESS_SCL_VCC 0x27
+#define IS31FL3745_I2C_ADDRESS_SDA_GND 0x28
+#define IS31FL3745_I2C_ADDRESS_SDA_SCL 0x29
+#define IS31FL3745_I2C_ADDRESS_SDA_SDA 0x2A
+#define IS31FL3745_I2C_ADDRESS_SDA_VCC 0x2B
+#define IS31FL3745_I2C_ADDRESS_VCC_GND 0x2C
+#define IS31FL3745_I2C_ADDRESS_VCC_SCL 0x2D
+#define IS31FL3745_I2C_ADDRESS_VCC_SDA 0x2E
+#define IS31FL3745_I2C_ADDRESS_VCC_VCC 0x2F
+
+#if defined(LED_MATRIX_IS31FL3745)
+# define IS31FL3745_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3745_I2C_ADDRESS_4)
+# define IS31FL3745_DRIVER_COUNT 4
+#elif defined(IS31FL3745_I2C_ADDRESS_3)
+# define IS31FL3745_DRIVER_COUNT 3
+#elif defined(IS31FL3745_I2C_ADDRESS_2)
+# define IS31FL3745_DRIVER_COUNT 2
+#elif defined(IS31FL3745_I2C_ADDRESS_1)
+# define IS31FL3745_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3745_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3745_led_t;
+
+extern const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT];
+
+void is31fl3745_init_drivers(void);
+void is31fl3745_init(uint8_t addr, uint8_t sync);
+void is31fl3745_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3745_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3745_set_value(int index, uint8_t value);
+void is31fl3745_set_value_all(uint8_t value);
+
+void is31fl3745_set_scaling_register(uint8_t index, uint8_t value);
+
+void is31fl3745_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3745_flush(void);
+
+#define IS31FL3745_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3745_PDR_0K5_OHM_SW_OFF 0b001 // 0.5 kOhm resistor in SWx off time
+#define IS31FL3745_PDR_1K_OHM_SW_OFF 0b010 // 1 kOhm resistor in SWx off time
+#define IS31FL3745_PDR_2K_OHM_SW_OFF 0b011 // 2 kOhm resistor in SWx off time
+#define IS31FL3745_PDR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3745_PDR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3745_PDR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3745_PDR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3745_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3745_PUR_0K5_OHM_CS_OFF 0b001 // 0.5 kOhm resistor in CSy off time
+#define IS31FL3745_PUR_1K_OHM_CS_OFF 0b010 // 1 kOhm resistor in CSy off time
+#define IS31FL3745_PUR_2K_OHM_CS_OFF 0b011 // 2 kOhm resistor in CSy off time
+#define IS31FL3745_PUR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3745_PUR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3745_PUR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3745_PUR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3745_SYNC_NONE 0b00
+#define IS31FL3745_SYNC_SLAVE 0b10
+#define IS31FL3745_SYNC_MASTER 0b11
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+
+#define CS1_SW2 0x12
+#define CS2_SW2 0x13
+#define CS3_SW2 0x14
+#define CS4_SW2 0x15
+#define CS5_SW2 0x16
+#define CS6_SW2 0x17
+#define CS7_SW2 0x18
+#define CS8_SW2 0x19
+#define CS9_SW2 0x1A
+#define CS10_SW2 0x1B
+#define CS11_SW2 0x1C
+#define CS12_SW2 0x1D
+#define CS13_SW2 0x1E
+#define CS14_SW2 0x1F
+#define CS15_SW2 0x20
+#define CS16_SW2 0x21
+#define CS17_SW2 0x22
+#define CS18_SW2 0x23
+
+#define CS1_SW3 0x24
+#define CS2_SW3 0x25
+#define CS3_SW3 0x26
+#define CS4_SW3 0x27
+#define CS5_SW3 0x28
+#define CS6_SW3 0x29
+#define CS7_SW3 0x2A
+#define CS8_SW3 0x2B
+#define CS9_SW3 0x2C
+#define CS10_SW3 0x2D
+#define CS11_SW3 0x2E
+#define CS12_SW3 0x2F
+#define CS13_SW3 0x30
+#define CS14_SW3 0x31
+#define CS15_SW3 0x32
+#define CS16_SW3 0x33
+#define CS17_SW3 0x34
+#define CS18_SW3 0x35
+
+#define CS1_SW4 0x36
+#define CS2_SW4 0x37
+#define CS3_SW4 0x38
+#define CS4_SW4 0x39
+#define CS5_SW4 0x3A
+#define CS6_SW4 0x3B
+#define CS7_SW4 0x3C
+#define CS8_SW4 0x3D
+#define CS9_SW4 0x3E
+#define CS10_SW4 0x3F
+#define CS11_SW4 0x40
+#define CS12_SW4 0x41
+#define CS13_SW4 0x42
+#define CS14_SW4 0x43
+#define CS15_SW4 0x44
+#define CS16_SW4 0x45
+#define CS17_SW4 0x46
+#define CS18_SW4 0x47
+
+#define CS1_SW5 0x48
+#define CS2_SW5 0x49
+#define CS3_SW5 0x4A
+#define CS4_SW5 0x4B
+#define CS5_SW5 0x4C
+#define CS6_SW5 0x4D
+#define CS7_SW5 0x4E
+#define CS8_SW5 0x4F
+#define CS9_SW5 0x50
+#define CS10_SW5 0x51
+#define CS11_SW5 0x52
+#define CS12_SW5 0x53
+#define CS13_SW5 0x54
+#define CS14_SW5 0x55
+#define CS15_SW5 0x56
+#define CS16_SW5 0x57
+#define CS17_SW5 0x58
+#define CS18_SW5 0x59
+
+#define CS1_SW6 0x5A
+#define CS2_SW6 0x5B
+#define CS3_SW6 0x5C
+#define CS4_SW6 0x5D
+#define CS5_SW6 0x5E
+#define CS6_SW6 0x5F
+#define CS7_SW6 0x60
+#define CS8_SW6 0x61
+#define CS9_SW6 0x62
+#define CS10_SW6 0x63
+#define CS11_SW6 0x64
+#define CS12_SW6 0x65
+#define CS13_SW6 0x66
+#define CS14_SW6 0x67
+#define CS15_SW6 0x68
+#define CS16_SW6 0x69
+#define CS17_SW6 0x6A
+#define CS18_SW6 0x6B
+
+#define CS1_SW7 0x6C
+#define CS2_SW7 0x6D
+#define CS3_SW7 0x6E
+#define CS4_SW7 0x6F
+#define CS5_SW7 0x70
+#define CS6_SW7 0x71
+#define CS7_SW7 0x72
+#define CS8_SW7 0x73
+#define CS9_SW7 0x74
+#define CS10_SW7 0x75
+#define CS11_SW7 0x76
+#define CS12_SW7 0x77
+#define CS13_SW7 0x78
+#define CS14_SW7 0x79
+#define CS15_SW7 0x7A
+#define CS16_SW7 0x7B
+#define CS17_SW7 0x7C
+#define CS18_SW7 0x7D
+
+#define CS1_SW8 0x7E
+#define CS2_SW8 0x7F
+#define CS3_SW8 0x80
+#define CS4_SW8 0x81
+#define CS5_SW8 0x82
+#define CS6_SW8 0x83
+#define CS7_SW8 0x84
+#define CS8_SW8 0x85
+#define CS9_SW8 0x86
+#define CS10_SW8 0x87
+#define CS11_SW8 0x88
+#define CS12_SW8 0x89
+#define CS13_SW8 0x8A
+#define CS14_SW8 0x8B
+#define CS15_SW8 0x8C
+#define CS16_SW8 0x8D
+#define CS17_SW8 0x8E
+#define CS18_SW8 0x8F
diff --git a/drivers/led/issi/is31fl3745.c b/drivers/led/issi/is31fl3745.c
new file mode 100644
index 0000000000..0f91a75bcc
--- /dev/null
+++ b/drivers/led/issi/is31fl3745.c
@@ -0,0 +1,228 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3745.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3745_PWM_REGISTER_COUNT 144
+#define IS31FL3745_SCALING_REGISTER_COUNT 144
+
+#ifndef IS31FL3745_I2C_TIMEOUT
+# define IS31FL3745_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3745_I2C_PERSISTENCE
+# define IS31FL3745_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3745_CONFIGURATION
+# define IS31FL3745_CONFIGURATION 0x31
+#endif
+
+#ifndef IS31FL3745_SW_PULLDOWN
+# define IS31FL3745_SW_PULLDOWN IS31FL3745_PDR_2K_OHM_SW_OFF
+#endif
+
+#ifndef IS31FL3745_CS_PULLUP
+# define IS31FL3745_CS_PULLUP IS31FL3745_PUR_2K_OHM_CS_OFF
+#endif
+
+#ifndef IS31FL3745_GLOBAL_CURRENT
+# define IS31FL3745_GLOBAL_CURRENT 0xFF
+#endif
+
+#ifndef IS31FL3745_SYNC_1
+# define IS31FL3745_SYNC_1 IS31FL3745_SYNC_NONE
+#endif
+#ifndef IS31FL3745_SYNC_2
+# define IS31FL3745_SYNC_2 IS31FL3745_SYNC_NONE
+#endif
+#ifndef IS31FL3745_SYNC_3
+# define IS31FL3745_SYNC_3 IS31FL3745_SYNC_NONE
+#endif
+#ifndef IS31FL3745_SYNC_4
+# define IS31FL3745_SYNC_4 IS31FL3745_SYNC_NONE
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3745_DRIVER_COUNT][IS31FL3745_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3745_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3745_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3745_DRIVER_COUNT][IS31FL3745_SCALING_REGISTER_COUNT];
+
+void is31fl3745_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3745_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3745_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3745_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3745_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3745_select_page(uint8_t addr, uint8_t page) {
+ is31fl3745_write_register(addr, IS31FL3745_REG_COMMAND_WRITE_LOCK, IS31FL3745_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3745_write_register(addr, IS31FL3745_REG_COMMAND, page);
+}
+
+void is31fl3745_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 8 transfers of 18 bytes.
+
+ // Iterate over the pwm_buffer contents at 18 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3745_PWM_REGISTER_COUNT; i += 18) {
+#if IS31FL3745_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3745_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3745_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3745_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3745_init_drivers(void) {
+ i2c_init();
+
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_1, IS31FL3745_SYNC_1);
+#if defined(IS31FL3745_I2C_ADDRESS_2)
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_2, IS31FL3745_SYNC_2);
+# if defined(IS31FL3745_I2C_ADDRESS_3)
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_3, IS31FL3745_SYNC_3);
+# if defined(IS31FL3745_I2C_ADDRESS_4)
+ is31fl3745_init(IS31FL3745_I2C_ADDRESS_4, IS31FL3745_SYNC_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3745_LED_COUNT; i++) {
+ is31fl3745_set_scaling_register(i, 0xFF, 0xFF, 0xFF);
+ }
+
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3745_I2C_ADDRESS_2)
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3745_I2C_ADDRESS_3)
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3745_I2C_ADDRESS_4)
+ is31fl3745_update_scaling_registers(IS31FL3745_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3745_init(uint8_t addr, uint8_t sync) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) {
+ is31fl3745_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3745_PWM_REGISTER_COUNT; i++) {
+ is31fl3745_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_FUNCTION);
+
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_PULLDOWNUP, (IS31FL3745_SW_PULLDOWN << 4) | IS31FL3745_CS_PULLUP);
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3745_GLOBAL_CURRENT);
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_SPREAD_SPECTRUM, (sync & 0b11) << 6);
+ is31fl3745_write_register(addr, IS31FL3745_FUNCTION_REG_CONFIGURATION, IS31FL3745_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3745_led_t led;
+
+ if (index >= 0 && index < IS31FL3745_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
+ }
+}
+
+void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < IS31FL3745_LED_COUNT; i++) {
+ is31fl3745_set_color(i, red, green, blue);
+ }
+}
+
+void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3745_led_t led;
+ memcpy_P(&led, (&g_is31fl3745_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.r] = red;
+ g_scaling_registers[led.driver][led.g] = green;
+ g_scaling_registers[led.driver][led.b] = blue;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3745_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_PWM);
+
+ is31fl3745_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3745_select_page(addr, IS31FL3745_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3745_SCALING_REGISTER_COUNT; i++) {
+ is31fl3745_write_register(addr, i + 1, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3745_flush(void) {
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3745_I2C_ADDRESS_2)
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3745_I2C_ADDRESS_3)
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3745_I2C_ADDRESS_4)
+ is31fl3745_update_pwm_buffers(IS31FL3745_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3745.h b/drivers/led/issi/is31fl3745.h
index 1e88aab4a8..3c67f7ecc7 100644
--- a/drivers/led/issi/is31fl3745.h
+++ b/drivers/led/issi/is31fl3745.h
@@ -20,103 +20,106 @@
#pragma once
-// This is a 7-bit address, that gets left-shifted and bit 0
-// set to 0 for write, 1 for read (as per I2C protocol)
-// The address will vary depending on your wiring:
-// 00 <-> GND
-// 01 <-> SCL
-// 10 <-> SDA
-// 11 <-> VCC
-// ADDR1 represents A1:A0 of the 7-bit address.
-// ADDR2 represents A3:A2 of the 7-bit address.
-// The result is: 0b010(ADDR2)(ADDR1)
-#ifndef DRIVER_ADDR_1
-# define DRIVER_ADDR_1 0b0100000
-#endif
+#include <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
-// Set defaults for Spread Spectrum Register
-#ifndef ISSI_SSR_1
-# ifndef DRIVER_ADDR_2
-# define ISSI_SSR_1 0x00
-# else
-# define ISSI_SSR_1 0xC0
-# endif
-#endif
-#ifndef ISSI_SSR_2
-# define ISSI_SSR_2 0x80
-#endif
-#ifndef ISSI_SSR_3
-# define ISSI_SSR_3 0x80
-#endif
-#ifndef ISSI_SSR_4
-# define ISSI_SSR_4 0x80
-#endif
+#define IS31FL3745_REG_ID 0xFC
-// Command Registers
-#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE
-#define ISSI_COMMANDREGISTER 0xFD
-#define ISSI_IDREGISTER 0xFC
-#define ISSI_REGISTER_UNLOCK 0xC5
+#define IS31FL3745_REG_COMMAND 0xFD
-// Response Registers
-#define ISSI_PAGE_PWM 0x00
-#define ISSI_PAGE_SCALING 0x01
-#define ISSI_PAGE_FUNCTION 0x02
+#define IS31FL3745_COMMAND_PWM 0x00
+#define IS31FL3745_COMMAND_SCALING 0x01
+#define IS31FL3745_COMMAND_FUNCTION 0x02
-// Registers under Function Register
-#define ISSI_REG_CONFIGURATION 0x00
-#define ISSI_REG_GLOBALCURRENT 0x01
-#define ISSI_REG_PULLDOWNUP 0x02
-#define ISSI_REG_TEMP 0x24
-#define ISSI_REG_SSR 0x25
-#define ISSI_REG_RESET 0x2F
+#define IS31FL3745_FUNCTION_REG_CONFIGURATION 0x00
+#define IS31FL3745_FUNCTION_REG_GLOBAL_CURRENT 0x01
+#define IS31FL3745_FUNCTION_REG_PULLDOWNUP 0x02
+#define IS31FL3745_FUNCTION_REG_TEMPERATURE 0x24
+#define IS31FL3745_FUNCTION_REG_SPREAD_SPECTRUM 0x25
+#define IS31FL3745_FUNCTION_REG_RESET 0x2F
-// Set defaults for Function Registers
-#ifndef ISSI_CONFIGURATION
-# define ISSI_CONFIGURATION 0x31
-#endif
-#ifndef ISSI_GLOBALCURRENT
-# define ISSI_GLOBALCURRENT 0xFF
-#endif
-#ifndef ISSI_PULLDOWNUP
-# define ISSI_PULLDOWNUP 0x33
-#endif
-#ifndef ISSI_TEMP
-# define ISSI_TEMP 0x00
-#endif
+#define IS31FL3745_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3745_COMMAND_WRITE_LOCK_MAGIC 0xC5
-// Set defaults for Scaling registers
-#ifndef ISSI_SCAL_RED
-# define ISSI_SCAL_RED 0xFF
-#endif
-#ifndef ISSI_SCAL_BLUE
-# define ISSI_SCAL_BLUE 0xFF
-#endif
-#ifndef ISSI_SCAL_GREEN
-# define ISSI_SCAL_GREEN 0xFF
+#define IS31FL3745_I2C_ADDRESS_GND_GND 0x20
+#define IS31FL3745_I2C_ADDRESS_GND_SCL 0x21
+#define IS31FL3745_I2C_ADDRESS_GND_SDA 0x22
+#define IS31FL3745_I2C_ADDRESS_GND_VCC 0x23
+#define IS31FL3745_I2C_ADDRESS_SCL_GND 0x24
+#define IS31FL3745_I2C_ADDRESS_SCL_SCL 0x25
+#define IS31FL3745_I2C_ADDRESS_SCL_SDA 0x26
+#define IS31FL3745_I2C_ADDRESS_SCL_VCC 0x27
+#define IS31FL3745_I2C_ADDRESS_SDA_GND 0x28
+#define IS31FL3745_I2C_ADDRESS_SDA_SCL 0x29
+#define IS31FL3745_I2C_ADDRESS_SDA_SDA 0x2A
+#define IS31FL3745_I2C_ADDRESS_SDA_VCC 0x2B
+#define IS31FL3745_I2C_ADDRESS_VCC_GND 0x2C
+#define IS31FL3745_I2C_ADDRESS_VCC_SCL 0x2D
+#define IS31FL3745_I2C_ADDRESS_VCC_SDA 0x2E
+#define IS31FL3745_I2C_ADDRESS_VCC_VCC 0x2F
+
+#if defined(RGB_MATRIX_IS31FL3745)
+# define IS31FL3745_LED_COUNT RGB_MATRIX_LED_COUNT
#endif
-#define ISSI_SCAL_RED_OFF 0x00
-#define ISSI_SCAL_GREEN_OFF 0x00
-#define ISSI_SCAL_BLUE_OFF 0x00
-#ifndef ISSI_SCAL_LED
-# define ISSI_SCAL_LED 0xFF
+#if defined(IS31FL3745_I2C_ADDRESS_4)
+# define IS31FL3745_DRIVER_COUNT 4
+#elif defined(IS31FL3745_I2C_ADDRESS_3)
+# define IS31FL3745_DRIVER_COUNT 3
+#elif defined(IS31FL3745_I2C_ADDRESS_2)
+# define IS31FL3745_DRIVER_COUNT 2
+#elif defined(IS31FL3745_I2C_ADDRESS_1)
+# define IS31FL3745_DRIVER_COUNT 1
#endif
-#define ISSI_SCAL_LED_OFF 0x00
-// Set buffer sizes
-#define ISSI_MAX_LEDS 144
-#define ISSI_SCALING_SIZE 144
-#define ISSI_PWM_TRF_SIZE 18
-#define ISSI_SCALING_TRF_SIZE 18
+typedef struct is31fl3745_led_t {
+ uint8_t driver : 2;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+} PACKED is31fl3745_led_t;
+
+extern const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT];
+
+void is31fl3745_init_drivers(void);
+void is31fl3745_init(uint8_t addr, uint8_t sync);
+void is31fl3745_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3745_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
+void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3745_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3745_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3745_flush(void);
+
+#define IS31FL3745_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3745_PDR_0K5_OHM_SW_OFF 0b001 // 0.5 kOhm resistor in SWx off time
+#define IS31FL3745_PDR_1K_OHM_SW_OFF 0b010 // 1 kOhm resistor in SWx off time
+#define IS31FL3745_PDR_2K_OHM_SW_OFF 0b011 // 2 kOhm resistor in SWx off time
+#define IS31FL3745_PDR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3745_PDR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3745_PDR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3745_PDR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3745_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3745_PUR_0K5_OHM_CS_OFF 0b001 // 0.5 kOhm resistor in CSy off time
+#define IS31FL3745_PUR_1K_OHM_CS_OFF 0b010 // 1 kOhm resistor in CSy off time
+#define IS31FL3745_PUR_2K_OHM_CS_OFF 0b011 // 2 kOhm resistor in CSy off time
+#define IS31FL3745_PUR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3745_PUR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3745_PUR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3745_PUR_8K_OHM 0b111 // 8 kOhm resistor
-// Location of 1st bit for PWM and Scaling registers
-#define ISSI_PWM_REG_1ST 0x01
-#define ISSI_SCL_REG_1ST 0x01
+#define IS31FL3745_SYNC_NONE 0b00
+#define IS31FL3745_SYNC_SLAVE 0b10
+#define IS31FL3745_SYNC_MASTER 0b11
-// Map CS SW locations to order in PWM / Scaling buffers
-// This matches the ORDER in the Datasheet Register not the POSITION
-// It will always count from 0x00 to (ISSI_MAX_LEDS - 1)
#define CS1_SW1 0x00
#define CS2_SW1 0x01
#define CS3_SW1 0x02
diff --git a/drivers/led/issi/is31fl3746.h b/drivers/led/issi/is31fl3746.h
deleted file mode 100644
index f89f281533..0000000000
--- a/drivers/led/issi/is31fl3746.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- * Copyright 2021 MasterSpoon
- *
- * 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
-
-// This is a 7-bit address, that gets left-shifted and bit 0
-// set to 0 for write, 1 for read (as per I2C protocol)
-// The address will vary depending on your wiring:
-// 00 <-> GND
-// 01 <-> SCL
-// 10 <-> SDA
-// 11 <-> VCC
-// ADDR1 represents A1:A0 of the 7-bit address.
-// ADDR2 represents A3:A2 of the 7-bit address.
-// The result is: 0b110(ADDR2)(ADDR1)
-#ifndef DRIVER_ADDR_1
-# define DRIVER_ADDR_1 0b1100000
-#endif
-
-// Set defaults for Spread Spectrum Register
-#ifndef ISSI_SSR_1
-# define ISSI_SSR_1 0x00
-#endif
-#ifndef ISSI_SSR_2
-# define ISSI_SSR_2 0x00
-#endif
-#ifndef ISSI_SSR_3
-# define ISSI_SSR_3 0x00
-#endif
-#ifndef ISSI_SSR_4
-# define ISSI_SSR_4 0x00
-#endif
-
-// Command Registers
-#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE
-#define ISSI_COMMANDREGISTER 0xFD
-#define ISSI_IDREGISTER 0xFC
-#define ISSI_REGISTER_UNLOCK 0xC5
-
-// Response Registers
-#define ISSI_PAGE_PWM 0x00
-#define ISSI_PAGE_SCALING 0x01
-#define ISSI_PAGE_FUNCTION 0x01
-
-// Registers under Function Register
-#define ISSI_REG_CONFIGURATION 0x50
-#define ISSI_REG_GLOBALCURRENT 0x51
-#define ISSI_REG_PULLDOWNUP 0x52
-#define ISSI_REG_TEMP 0x5F
-#define ISSI_REG_SSR 0x60
-#define ISSI_REG_RESET 0x8F
-#define ISSI_REG_PWM_ENABLE 0xE0
-#define ISSI_REG_PWM_SET 0xE2
-
-// Set defaults for Function Registers
-#ifndef ISSI_CONFIGURATION
-# define ISSI_CONFIGURATION 0x01
-#endif
-#ifndef ISSI_GLOBALCURRENT
-# define ISSI_GLOBALCURRENT 0xFF
-#endif
-#ifndef ISSI_PULLDOWNUP
-# define ISSI_PULLDOWNUP 0x33
-#endif
-#ifndef ISSI_TEMP
-# define ISSI_TEMP 0x00
-#endif
-#ifndef ISSI_PWM_ENABLE
-# define ISSI_PWM_ENABLE 0x00
-#endif
-#ifndef ISSI_PWM_SET
-# define ISSI_PWM_SET 0x00
-#endif
-
-// Set defaults for Scaling registers
-#ifndef ISSI_SCAL_RED
-# define ISSI_SCAL_RED 0xFF
-#endif
-#ifndef ISSI_SCAL_BLUE
-# define ISSI_SCAL_BLUE 0xFF
-#endif
-#ifndef ISSI_SCAL_GREEN
-# define ISSI_SCAL_GREEN 0xFF
-#endif
-#define ISSI_SCAL_RED_OFF 0x00
-#define ISSI_SCAL_GREEN_OFF 0x00
-#define ISSI_SCAL_BLUE_OFF 0x00
-
-#ifndef ISSI_SCAL_LED
-# define ISSI_SCAL_LED 0xFF
-#endif
-#define ISSI_SCAL_LED_OFF 0x00
-
-// Set buffer sizes
-#define ISSI_MAX_LEDS 72
-#define ISSI_SCALING_SIZE 72
-#define ISSI_PWM_TRF_SIZE 18
-#define ISSI_SCALING_TRF_SIZE 18
-
-// Location of 1st bit for PWM and Scaling registers
-#define ISSI_PWM_REG_1ST 0x01
-#define ISSI_SCL_REG_1ST 0x01
-
-// Map CS SW locations to order in PWM / Scaling buffers
-// This matches the ORDER in the Datasheet Register not the POSITION
-// It will always count from 0x00 to (ISSI_MAX_LEDS - 1)
-#define CS1_SW1 0x00
-#define CS2_SW1 0x01
-#define CS3_SW1 0x02
-#define CS4_SW1 0x03
-#define CS5_SW1 0x04
-#define CS6_SW1 0x05
-#define CS7_SW1 0x06
-#define CS8_SW1 0x07
-#define CS9_SW1 0x08
-#define CS10_SW1 0x09
-#define CS11_SW1 0x0A
-#define CS12_SW1 0x0B
-#define CS13_SW1 0x0C
-#define CS14_SW1 0x0D
-#define CS15_SW1 0x0E
-#define CS16_SW1 0x0F
-#define CS17_SW1 0x10
-#define CS18_SW1 0x11
-
-#define CS1_SW2 0x12
-#define CS2_SW2 0x13
-#define CS3_SW2 0x14
-#define CS4_SW2 0x15
-#define CS5_SW2 0x16
-#define CS6_SW2 0x17
-#define CS7_SW2 0x18
-#define CS8_SW2 0x19
-#define CS9_SW2 0x1A
-#define CS10_SW2 0x1B
-#define CS11_SW2 0x1C
-#define CS12_SW2 0x1D
-#define CS13_SW2 0x1E
-#define CS14_SW2 0x1F
-#define CS15_SW2 0x20
-#define CS16_SW2 0x21
-#define CS17_SW2 0x22
-#define CS18_SW2 0x23
-
-#define CS1_SW3 0x24
-#define CS2_SW3 0x25
-#define CS3_SW3 0x26
-#define CS4_SW3 0x27
-#define CS5_SW3 0x28
-#define CS6_SW3 0x29
-#define CS7_SW3 0x2A
-#define CS8_SW3 0x2B
-#define CS9_SW3 0x2C
-#define CS10_SW3 0x2D
-#define CS11_SW3 0x2E
-#define CS12_SW3 0x2F
-#define CS13_SW3 0x30
-#define CS14_SW3 0x31
-#define CS15_SW3 0x32
-#define CS16_SW3 0x33
-#define CS17_SW3 0x34
-#define CS18_SW3 0x35
-
-#define CS1_SW4 0x36
-#define CS2_SW4 0x37
-#define CS3_SW4 0x38
-#define CS4_SW4 0x39
-#define CS5_SW4 0x3A
-#define CS6_SW4 0x3B
-#define CS7_SW4 0x3C
-#define CS8_SW4 0x3D
-#define CS9_SW4 0x3E
-#define CS10_SW4 0x3F
-#define CS11_SW4 0x40
-#define CS12_SW4 0x41
-#define CS13_SW4 0x42
-#define CS14_SW4 0x43
-#define CS15_SW4 0x44
-#define CS16_SW4 0x45
-#define CS17_SW4 0x46
-#define CS18_SW4 0x47
diff --git a/drivers/led/issi/is31fl3746a-mono.c b/drivers/led/issi/is31fl3746a-mono.c
new file mode 100644
index 0000000000..c21269b3a3
--- /dev/null
+++ b/drivers/led/issi/is31fl3746a-mono.c
@@ -0,0 +1,216 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3746a-mono.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3746A_PWM_REGISTER_COUNT 72
+#define IS31FL3746A_SCALING_REGISTER_COUNT 72
+
+#ifndef IS31FL3746A_I2C_TIMEOUT
+# define IS31FL3746A_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3746A_I2C_PERSISTENCE
+# define IS31FL3746A_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3746A_CONFIGURATION
+# define IS31FL3746A_CONFIGURATION 0x01
+#endif
+
+#ifndef IS31FL3746A_PWM_FREQUENCY
+# define IS31FL3746A_PWM_FREQUENCY IS31FL3746A_PWM_FREQUENCY_29K_HZ
+#endif
+
+#ifndef IS31FL3746A_SW_PULLDOWN
+# define IS31FL3746A_SW_PULLDOWN IS31FL3746A_PDR_2K_OHM_SW_OFF
+#endif
+
+#ifndef IS31FL3746A_CS_PULLUP
+# define IS31FL3746A_CS_PULLUP IS31FL3746A_PUR_2K_OHM_CS_OFF
+#endif
+
+#ifndef IS31FL3746A_GLOBAL_CURRENT
+# define IS31FL3746A_GLOBAL_CURRENT 0xFF
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3746A_DRIVER_COUNT][IS31FL3746A_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3746A_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3746A_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3746A_DRIVER_COUNT][IS31FL3746A_SCALING_REGISTER_COUNT];
+
+void is31fl3746a_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3746A_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3746A_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3746A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3746A_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3746a_select_page(uint8_t addr, uint8_t page) {
+ is31fl3746a_write_register(addr, IS31FL3746A_REG_COMMAND_WRITE_LOCK, IS31FL3746A_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3746a_write_register(addr, IS31FL3746A_REG_COMMAND, page);
+}
+
+void is31fl3746a_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 4 transfers of 18 bytes.
+
+ // Iterate over the pwm_buffer contents at 18 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3746A_PWM_REGISTER_COUNT; i += 18) {
+#if IS31FL3746A_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3746A_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3746A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3746A_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3746a_init_drivers(void) {
+ i2c_init();
+
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_1);
+#if defined(IS31FL3746A_I2C_ADDRESS_2)
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_2);
+# if defined(IS31FL3746A_I2C_ADDRESS_3)
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_3);
+# if defined(IS31FL3746A_I2C_ADDRESS_4)
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3746A_LED_COUNT; i++) {
+ is31fl3746a_set_scaling_register(i, 0xFF);
+ }
+
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3746A_I2C_ADDRESS_2)
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3746A_I2C_ADDRESS_3)
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3746A_I2C_ADDRESS_4)
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3746a_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3746a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3746A_PWM_REGISTER_COUNT; i++) {
+ is31fl3746a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_FUNCTION);
+
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_PULLDOWNUP, (IS31FL3746A_SW_PULLDOWN << 4) | IS31FL3746A_CS_PULLUP);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3746A_GLOBAL_CURRENT);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_PWM_ENABLE, 0x01);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_PWM_FREQUENCY, IS31FL3746A_PWM_FREQUENCY);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_CONFIGURATION, IS31FL3746A_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3746a_set_value(int index, uint8_t value) {
+ is31fl3746a_led_t led;
+
+ if (index >= 0 && index < IS31FL3746A_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.v] = value;
+ }
+}
+
+void is31fl3746a_set_value_all(uint8_t value) {
+ for (int i = 0; i < IS31FL3746A_LED_COUNT; i++) {
+ is31fl3746a_set_value(i, value);
+ }
+}
+
+void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value) {
+ is31fl3746a_led_t led;
+ memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.v] = value;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3746a_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM);
+
+ is31fl3746a_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3746a_write_register(addr, i + 1, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3746a_flush(void) {
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3746A_I2C_ADDRESS_2)
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3746A_I2C_ADDRESS_3)
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3746A_I2C_ADDRESS_4)
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3746a-mono.h b/drivers/led/issi/is31fl3746a-mono.h
new file mode 100644
index 0000000000..002a91f175
--- /dev/null
+++ b/drivers/led/issi/is31fl3746a-mono.h
@@ -0,0 +1,201 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3746A_REG_ID 0xFC
+
+#define IS31FL3746A_REG_COMMAND 0xFD
+
+#define IS31FL3746A_COMMAND_PWM 0x00
+#define IS31FL3746A_COMMAND_SCALING 0x01
+#define IS31FL3746A_COMMAND_FUNCTION 0x01
+
+#define IS31FL3746A_FUNCTION_REG_CONFIGURATION 0x50
+#define IS31FL3746A_FUNCTION_REG_GLOBAL_CURRENT 0x51
+#define IS31FL3746A_FUNCTION_REG_PULLDOWNUP 0x52
+#define IS31FL3746A_FUNCTION_REG_TEMPERATURE 0x5F
+#define IS31FL3746A_FUNCTION_REG_SPREAD_SPECTRUM 0x60
+#define IS31FL3746A_FUNCTION_REG_RESET 0x8F
+#define IS31FL3746A_FUNCTION_REG_PWM_ENABLE 0xE0
+#define IS31FL3746A_FUNCTION_REG_PWM_FREQUENCY 0xE2
+
+#define IS31FL3746A_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3746A_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3746A_I2C_ADDRESS_GND_GND 0x60
+#define IS31FL3746A_I2C_ADDRESS_GND_SCL 0x61
+#define IS31FL3746A_I2C_ADDRESS_GND_SDA 0x62
+#define IS31FL3746A_I2C_ADDRESS_GND_VCC 0x63
+#define IS31FL3746A_I2C_ADDRESS_SCL_GND 0x64
+#define IS31FL3746A_I2C_ADDRESS_SCL_SCL 0x65
+#define IS31FL3746A_I2C_ADDRESS_SCL_SDA 0x66
+#define IS31FL3746A_I2C_ADDRESS_SCL_VCC 0x67
+#define IS31FL3746A_I2C_ADDRESS_SDA_GND 0x68
+#define IS31FL3746A_I2C_ADDRESS_SDA_SCL 0x69
+#define IS31FL3746A_I2C_ADDRESS_SDA_SDA 0x6A
+#define IS31FL3746A_I2C_ADDRESS_SDA_VCC 0x6B
+#define IS31FL3746A_I2C_ADDRESS_VCC_GND 0x6C
+#define IS31FL3746A_I2C_ADDRESS_VCC_SCL 0x6D
+#define IS31FL3746A_I2C_ADDRESS_VCC_SDA 0x6E
+#define IS31FL3746A_I2C_ADDRESS_VCC_VCC 0x6F
+
+#if defined(LED_MATRIX_IS31FL3746A)
+# define IS31FL3746A_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3746A_I2C_ADDRESS_4)
+# define IS31FL3746A_DRIVER_COUNT 4
+#elif defined(IS31FL3746A_I2C_ADDRESS_3)
+# define IS31FL3746A_DRIVER_COUNT 3
+#elif defined(IS31FL3746A_I2C_ADDRESS_2)
+# define IS31FL3746A_DRIVER_COUNT 2
+#elif defined(IS31FL3746A_I2C_ADDRESS_1)
+# define IS31FL3746A_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3746a_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED is31fl3746a_led_t;
+
+extern const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT];
+
+void is31fl3746a_init_drivers(void);
+void is31fl3746a_init(uint8_t addr);
+void is31fl3746a_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3746a_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3746a_set_value(int index, uint8_t value);
+void is31fl3746a_set_value_all(uint8_t value);
+
+void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value);
+
+void is31fl3746a_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3746a_flush(void);
+
+#define IS31FL3746A_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3746A_PDR_0K5_OHM_SW_OFF 0b001 // 0.5 kOhm resistor in SWx off time
+#define IS31FL3746A_PDR_1K_OHM_SW_OFF 0b010 // 1 kOhm resistor in SWx off time
+#define IS31FL3746A_PDR_2K_OHM_SW_OFF 0b011 // 2 kOhm resistor in SWx off time
+#define IS31FL3746A_PDR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3746A_PDR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3746A_PDR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3746A_PDR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3746A_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3746A_PUR_0K5_OHM_CS_OFF 0b001 // 0.5 kOhm resistor in CSy off time
+#define IS31FL3746A_PUR_1K_OHM_CS_OFF 0b010 // 1 kOhm resistor in CSy off time
+#define IS31FL3746A_PUR_2K_OHM_CS_OFF 0b011 // 2 kOhm resistor in CSy off time
+#define IS31FL3746A_PUR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3746A_PUR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3746A_PUR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3746A_PUR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3746A_PWM_FREQUENCY_29K_HZ 0b000
+#define IS31FL3746A_PWM_FREQUENCY_14K5_HZ 0b001
+#define IS31FL3746A_PWM_FREQUENCY_7K25_HZ 0b010
+#define IS31FL3746A_PWM_FREQUENCY_3K63_HZ 0b011
+#define IS31FL3746A_PWM_FREQUENCY_1K81_HZ 0b100
+#define IS31FL3746A_PWM_FREQUENCY_906_HZ 0b101
+#define IS31FL3746A_PWM_FREQUENCY_453_HZ 0b110
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+
+#define CS1_SW2 0x12
+#define CS2_SW2 0x13
+#define CS3_SW2 0x14
+#define CS4_SW2 0x15
+#define CS5_SW2 0x16
+#define CS6_SW2 0x17
+#define CS7_SW2 0x18
+#define CS8_SW2 0x19
+#define CS9_SW2 0x1A
+#define CS10_SW2 0x1B
+#define CS11_SW2 0x1C
+#define CS12_SW2 0x1D
+#define CS13_SW2 0x1E
+#define CS14_SW2 0x1F
+#define CS15_SW2 0x20
+#define CS16_SW2 0x21
+#define CS17_SW2 0x22
+#define CS18_SW2 0x23
+
+#define CS1_SW3 0x24
+#define CS2_SW3 0x25
+#define CS3_SW3 0x26
+#define CS4_SW3 0x27
+#define CS5_SW3 0x28
+#define CS6_SW3 0x29
+#define CS7_SW3 0x2A
+#define CS8_SW3 0x2B
+#define CS9_SW3 0x2C
+#define CS10_SW3 0x2D
+#define CS11_SW3 0x2E
+#define CS12_SW3 0x2F
+#define CS13_SW3 0x30
+#define CS14_SW3 0x31
+#define CS15_SW3 0x32
+#define CS16_SW3 0x33
+#define CS17_SW3 0x34
+#define CS18_SW3 0x35
+
+#define CS1_SW4 0x36
+#define CS2_SW4 0x37
+#define CS3_SW4 0x38
+#define CS4_SW4 0x39
+#define CS5_SW4 0x3A
+#define CS6_SW4 0x3B
+#define CS7_SW4 0x3C
+#define CS8_SW4 0x3D
+#define CS9_SW4 0x3E
+#define CS10_SW4 0x3F
+#define CS11_SW4 0x40
+#define CS12_SW4 0x41
+#define CS13_SW4 0x42
+#define CS14_SW4 0x43
+#define CS15_SW4 0x44
+#define CS16_SW4 0x45
+#define CS17_SW4 0x46
+#define CS18_SW4 0x47
diff --git a/drivers/led/issi/is31fl3746a.c b/drivers/led/issi/is31fl3746a.c
new file mode 100644
index 0000000000..d167cdd90b
--- /dev/null
+++ b/drivers/led/issi/is31fl3746a.c
@@ -0,0 +1,220 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 "is31fl3746a.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#define IS31FL3746A_PWM_REGISTER_COUNT 72
+#define IS31FL3746A_SCALING_REGISTER_COUNT 72
+
+#ifndef IS31FL3746A_I2C_TIMEOUT
+# define IS31FL3746A_I2C_TIMEOUT 100
+#endif
+
+#ifndef IS31FL3746A_I2C_PERSISTENCE
+# define IS31FL3746A_I2C_PERSISTENCE 0
+#endif
+
+#ifndef IS31FL3746A_CONFIGURATION
+# define IS31FL3746A_CONFIGURATION 0x01
+#endif
+
+#ifndef IS31FL3746A_PWM_FREQUENCY
+# define IS31FL3746A_PWM_FREQUENCY IS31FL3746A_PWM_FREQUENCY_29K_HZ
+#endif
+
+#ifndef IS31FL3746A_SW_PULLDOWN
+# define IS31FL3746A_SW_PULLDOWN IS31FL3746A_PDR_2K_OHM_SW_OFF
+#endif
+
+#ifndef IS31FL3746A_CS_PULLUP
+# define IS31FL3746A_CS_PULLUP IS31FL3746A_PUR_2K_OHM_CS_OFF
+#endif
+
+#ifndef IS31FL3746A_GLOBAL_CURRENT
+# define IS31FL3746A_GLOBAL_CURRENT 0xFF
+#endif
+
+uint8_t g_pwm_buffer[IS31FL3746A_DRIVER_COUNT][IS31FL3746A_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[IS31FL3746A_DRIVER_COUNT] = {false};
+bool g_scaling_registers_update_required[IS31FL3746A_DRIVER_COUNT] = {false};
+
+uint8_t g_scaling_registers[IS31FL3746A_DRIVER_COUNT][IS31FL3746A_SCALING_REGISTER_COUNT];
+
+void is31fl3746a_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if IS31FL3746A_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < IS31FL3746A_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, IS31FL3746A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, IS31FL3746A_I2C_TIMEOUT);
+#endif
+}
+
+void is31fl3746a_select_page(uint8_t addr, uint8_t page) {
+ is31fl3746a_write_register(addr, IS31FL3746A_REG_COMMAND_WRITE_LOCK, IS31FL3746A_COMMAND_WRITE_LOCK_MAGIC);
+ is31fl3746a_write_register(addr, IS31FL3746A_REG_COMMAND, page);
+}
+
+void is31fl3746a_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 0 is already selected.
+ // Transmit PWM registers in 4 transfers of 18 bytes.
+
+ // Iterate over the pwm_buffer contents at 18 byte intervals.
+ for (uint8_t i = 0; i < IS31FL3746A_PWM_REGISTER_COUNT; i += 18) {
+#if IS31FL3746A_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < IS31FL3746A_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3746A_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i + 1, g_pwm_buffer[index] + i, 18, IS31FL3746A_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void is31fl3746a_init_drivers(void) {
+ i2c_init();
+
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_1);
+#if defined(IS31FL3746A_I2C_ADDRESS_2)
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_2);
+# if defined(IS31FL3746A_I2C_ADDRESS_3)
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_3);
+# if defined(IS31FL3746A_I2C_ADDRESS_4)
+ is31fl3746a_init(IS31FL3746A_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < IS31FL3746A_LED_COUNT; i++) {
+ is31fl3746a_set_scaling_register(i, 0xFF, 0xFF, 0xFF);
+ }
+
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3746A_I2C_ADDRESS_2)
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3746A_I2C_ADDRESS_3)
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3746A_I2C_ADDRESS_4)
+ is31fl3746a_update_scaling_registers(IS31FL3746A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void is31fl3746a_init(uint8_t addr) {
+ // In order to avoid the LEDs being driven with garbage data
+ // in the LED driver's PWM registers, shutdown is enabled last.
+ // Set up the mode and other settings, clear the PWM registers,
+ // then disable software shutdown.
+
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_SCALING);
+
+ // Turn off all LEDs.
+ for (uint8_t i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3746a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM);
+
+ for (uint8_t i = 0; i < IS31FL3746A_PWM_REGISTER_COUNT; i++) {
+ is31fl3746a_write_register(addr, i + 1, 0x00);
+ }
+
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_FUNCTION);
+
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_PULLDOWNUP, (IS31FL3746A_SW_PULLDOWN << 4) | IS31FL3746A_CS_PULLUP);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3746A_GLOBAL_CURRENT);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_PWM_ENABLE, 0x01);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_PWM_FREQUENCY, IS31FL3746A_PWM_FREQUENCY);
+ is31fl3746a_write_register(addr, IS31FL3746A_FUNCTION_REG_CONFIGURATION, IS31FL3746A_CONFIGURATION);
+
+ // Wait 10ms to ensure the device has woken up.
+ wait_ms(10);
+}
+
+void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3746a_led_t led;
+
+ if (index >= 0 && index < IS31FL3746A_LED_COUNT) {
+ memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
+ return;
+ }
+
+ g_pwm_buffer_update_required[led.driver] = true;
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
+ }
+}
+
+void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < IS31FL3746A_LED_COUNT; i++) {
+ is31fl3746a_set_color(i, red, green, blue);
+ }
+}
+
+void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue) {
+ is31fl3746a_led_t led;
+ memcpy_P(&led, (&g_is31fl3746a_leds[index]), sizeof(led));
+
+ g_scaling_registers[led.driver][led.r] = red;
+ g_scaling_registers[led.driver][led.g] = green;
+ g_scaling_registers[led.driver][led.b] = blue;
+ g_scaling_registers_update_required[led.driver] = true;
+}
+
+void is31fl3746a_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_PWM);
+
+ is31fl3746a_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index) {
+ if (g_scaling_registers_update_required[index]) {
+ is31fl3746a_select_page(addr, IS31FL3746A_COMMAND_SCALING);
+
+ for (uint8_t i = 0; i < IS31FL3746A_SCALING_REGISTER_COUNT; i++) {
+ is31fl3746a_write_register(addr, i + 1, g_scaling_registers[index][i]);
+ }
+
+ g_scaling_registers_update_required[index] = false;
+ }
+}
+
+void is31fl3746a_flush(void) {
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_1, 0);
+#if defined(IS31FL3746A_I2C_ADDRESS_2)
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_2, 1);
+# if defined(IS31FL3746A_I2C_ADDRESS_3)
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_3, 2);
+# if defined(IS31FL3746A_I2C_ADDRESS_4)
+ is31fl3746a_update_pwm_buffers(IS31FL3746A_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
diff --git a/drivers/led/issi/is31fl3746a.h b/drivers/led/issi/is31fl3746a.h
new file mode 100644
index 0000000000..32647a37bd
--- /dev/null
+++ b/drivers/led/issi/is31fl3746a.h
@@ -0,0 +1,203 @@
+/* Copyright 2017 Jason Williams
+ * Copyright 2018 Jack Humbert
+ * Copyright 2018 Yiancar
+ * Copyright 2020 MelGeek
+ * Copyright 2021 MasterSpoon
+ *
+ * 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+#define IS31FL3746A_REG_ID 0xFC
+
+#define IS31FL3746A_REG_COMMAND 0xFD
+
+#define IS31FL3746A_COMMAND_PWM 0x00
+#define IS31FL3746A_COMMAND_SCALING 0x01
+#define IS31FL3746A_COMMAND_FUNCTION 0x01
+
+#define IS31FL3746A_FUNCTION_REG_CONFIGURATION 0x50
+#define IS31FL3746A_FUNCTION_REG_GLOBAL_CURRENT 0x51
+#define IS31FL3746A_FUNCTION_REG_PULLDOWNUP 0x52
+#define IS31FL3746A_FUNCTION_REG_TEMPERATURE 0x5F
+#define IS31FL3746A_FUNCTION_REG_SPREAD_SPECTRUM 0x60
+#define IS31FL3746A_FUNCTION_REG_RESET 0x8F
+#define IS31FL3746A_FUNCTION_REG_PWM_ENABLE 0xE0
+#define IS31FL3746A_FUNCTION_REG_PWM_FREQUENCY 0xE2
+
+#define IS31FL3746A_REG_COMMAND_WRITE_LOCK 0xFE
+#define IS31FL3746A_COMMAND_WRITE_LOCK_MAGIC 0xC5
+
+#define IS31FL3746A_I2C_ADDRESS_GND_GND 0x60
+#define IS31FL3746A_I2C_ADDRESS_GND_SCL 0x61
+#define IS31FL3746A_I2C_ADDRESS_GND_SDA 0x62
+#define IS31FL3746A_I2C_ADDRESS_GND_VCC 0x63
+#define IS31FL3746A_I2C_ADDRESS_SCL_GND 0x64
+#define IS31FL3746A_I2C_ADDRESS_SCL_SCL 0x65
+#define IS31FL3746A_I2C_ADDRESS_SCL_SDA 0x66
+#define IS31FL3746A_I2C_ADDRESS_SCL_VCC 0x67
+#define IS31FL3746A_I2C_ADDRESS_SDA_GND 0x68
+#define IS31FL3746A_I2C_ADDRESS_SDA_SCL 0x69
+#define IS31FL3746A_I2C_ADDRESS_SDA_SDA 0x6A
+#define IS31FL3746A_I2C_ADDRESS_SDA_VCC 0x6B
+#define IS31FL3746A_I2C_ADDRESS_VCC_GND 0x6C
+#define IS31FL3746A_I2C_ADDRESS_VCC_SCL 0x6D
+#define IS31FL3746A_I2C_ADDRESS_VCC_SDA 0x6E
+#define IS31FL3746A_I2C_ADDRESS_VCC_VCC 0x6F
+
+#if defined(RGB_MATRIX_IS31FL3746A)
+# define IS31FL3746A_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3746A_I2C_ADDRESS_4)
+# define IS31FL3746A_DRIVER_COUNT 4
+#elif defined(IS31FL3746A_I2C_ADDRESS_3)
+# define IS31FL3746A_DRIVER_COUNT 3
+#elif defined(IS31FL3746A_I2C_ADDRESS_2)
+# define IS31FL3746A_DRIVER_COUNT 2
+#elif defined(IS31FL3746A_I2C_ADDRESS_1)
+# define IS31FL3746A_DRIVER_COUNT 1
+#endif
+
+typedef struct is31fl3746a_led_t {
+ uint8_t driver : 2;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+} PACKED is31fl3746a_led_t;
+
+extern const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT];
+
+void is31fl3746a_init_drivers(void);
+void is31fl3746a_init(uint8_t addr);
+void is31fl3746a_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+void is31fl3746a_select_page(uint8_t addr, uint8_t page);
+
+void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
+void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue);
+
+void is31fl3746a_update_pwm_buffers(uint8_t addr, uint8_t index);
+void is31fl3746a_update_scaling_registers(uint8_t addr, uint8_t index);
+
+void is31fl3746a_flush(void);
+
+#define IS31FL3746A_PDR_0_OHM 0b000 // No pull-down resistor
+#define IS31FL3746A_PDR_0K5_OHM_SW_OFF 0b001 // 0.5 kOhm resistor in SWx off time
+#define IS31FL3746A_PDR_1K_OHM_SW_OFF 0b010 // 1 kOhm resistor in SWx off time
+#define IS31FL3746A_PDR_2K_OHM_SW_OFF 0b011 // 2 kOhm resistor in SWx off time
+#define IS31FL3746A_PDR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3746A_PDR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3746A_PDR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3746A_PDR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3746A_PUR_0_OHM 0b000 // No pull-up resistor
+#define IS31FL3746A_PUR_0K5_OHM_CS_OFF 0b001 // 0.5 kOhm resistor in CSy off time
+#define IS31FL3746A_PUR_1K_OHM_CS_OFF 0b010 // 1 kOhm resistor in CSy off time
+#define IS31FL3746A_PUR_2K_OHM_CS_OFF 0b011 // 2 kOhm resistor in CSy off time
+#define IS31FL3746A_PUR_1K_OHM 0b100 // 1 kOhm resistor
+#define IS31FL3746A_PUR_2K_OHM 0b101 // 2 kOhm resistor
+#define IS31FL3746A_PUR_4K_OHM 0b110 // 4 kOhm resistor
+#define IS31FL3746A_PUR_8K_OHM 0b111 // 8 kOhm resistor
+
+#define IS31FL3746A_PWM_FREQUENCY_29K_HZ 0b000
+#define IS31FL3746A_PWM_FREQUENCY_14K5_HZ 0b001
+#define IS31FL3746A_PWM_FREQUENCY_7K25_HZ 0b010
+#define IS31FL3746A_PWM_FREQUENCY_3K63_HZ 0b011
+#define IS31FL3746A_PWM_FREQUENCY_1K81_HZ 0b100
+#define IS31FL3746A_PWM_FREQUENCY_906_HZ 0b101
+#define IS31FL3746A_PWM_FREQUENCY_453_HZ 0b110
+
+#define CS1_SW1 0x00
+#define CS2_SW1 0x01
+#define CS3_SW1 0x02
+#define CS4_SW1 0x03
+#define CS5_SW1 0x04
+#define CS6_SW1 0x05
+#define CS7_SW1 0x06
+#define CS8_SW1 0x07
+#define CS9_SW1 0x08
+#define CS10_SW1 0x09
+#define CS11_SW1 0x0A
+#define CS12_SW1 0x0B
+#define CS13_SW1 0x0C
+#define CS14_SW1 0x0D
+#define CS15_SW1 0x0E
+#define CS16_SW1 0x0F
+#define CS17_SW1 0x10
+#define CS18_SW1 0x11
+
+#define CS1_SW2 0x12
+#define CS2_SW2 0x13
+#define CS3_SW2 0x14
+#define CS4_SW2 0x15
+#define CS5_SW2 0x16
+#define CS6_SW2 0x17
+#define CS7_SW2 0x18
+#define CS8_SW2 0x19
+#define CS9_SW2 0x1A
+#define CS10_SW2 0x1B
+#define CS11_SW2 0x1C
+#define CS12_SW2 0x1D
+#define CS13_SW2 0x1E
+#define CS14_SW2 0x1F
+#define CS15_SW2 0x20
+#define CS16_SW2 0x21
+#define CS17_SW2 0x22
+#define CS18_SW2 0x23
+
+#define CS1_SW3 0x24
+#define CS2_SW3 0x25
+#define CS3_SW3 0x26
+#define CS4_SW3 0x27
+#define CS5_SW3 0x28
+#define CS6_SW3 0x29
+#define CS7_SW3 0x2A
+#define CS8_SW3 0x2B
+#define CS9_SW3 0x2C
+#define CS10_SW3 0x2D
+#define CS11_SW3 0x2E
+#define CS12_SW3 0x2F
+#define CS13_SW3 0x30
+#define CS14_SW3 0x31
+#define CS15_SW3 0x32
+#define CS16_SW3 0x33
+#define CS17_SW3 0x34
+#define CS18_SW3 0x35
+
+#define CS1_SW4 0x36
+#define CS2_SW4 0x37
+#define CS3_SW4 0x38
+#define CS4_SW4 0x39
+#define CS5_SW4 0x3A
+#define CS6_SW4 0x3B
+#define CS7_SW4 0x3C
+#define CS8_SW4 0x3D
+#define CS9_SW4 0x3E
+#define CS10_SW4 0x3F
+#define CS11_SW4 0x40
+#define CS12_SW4 0x41
+#define CS13_SW4 0x42
+#define CS14_SW4 0x43
+#define CS15_SW4 0x44
+#define CS16_SW4 0x45
+#define CS17_SW4 0x46
+#define CS18_SW4 0x47
diff --git a/drivers/led/issi/is31flcommon.c b/drivers/led/issi/is31flcommon.c
deleted file mode 100644
index d6b9bce93d..0000000000
--- a/drivers/led/issi/is31flcommon.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- * Copyright 2021 MasterSpoon
- *
- * 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 "is31flcommon.h"
-#include "i2c_master.h"
-#include "wait.h"
-#include <string.h>
-
-// Set defaults for Timeout and Persistence
-#ifndef ISSI_TIMEOUT
-# define ISSI_TIMEOUT 100
-#endif
-#ifndef ISSI_PERSISTENCE
-# define ISSI_PERSISTENCE 0
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
-// These buffers match the PWM & scaling registers.
-// Storing them like this is optimal for I2C transfers to the registers.
-uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS];
-bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false};
-
-uint8_t g_scaling_buffer[DRIVER_COUNT][ISSI_SCALING_SIZE];
-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;
-
-#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;
- }
-#else
- i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT);
-#endif
-}
-
-// For writing of mulitple register entries to make use of address auto increment
-// Once the controller has been called and we have written the first bit of data
-// the controller will move to the next register meaning we can write sequential blocks.
-bool IS31FL_write_multi_registers(uint8_t addr, uint8_t *source_buffer, uint8_t buffer_size, uint8_t transfer_size, uint8_t start_reg_addr) {
- // 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;
- // 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);
-
-#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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, transfer_size + 1, ISSI_TIMEOUT) != 0) {
- return false;
- }
-#endif
- }
- return true;
-}
-
-void IS31FL_unlock_register(uint8_t addr, uint8_t page) {
- // unlock the command register and select Page to write
- IS31FL_write_single_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, ISSI_REGISTER_UNLOCK);
- IS31FL_write_single_register(addr, ISSI_COMMANDREGISTER, page);
-}
-
-void IS31FL_common_init(uint8_t addr, uint8_t ssr) {
- // Setup phase, need to take out of software shutdown and configure
- // ISSI_SSR_x is passed to allow Master / Slave setting where applicable
-
- // Unlock the command register & select Function Register
- IS31FL_unlock_register(addr, ISSI_PAGE_FUNCTION);
- // Set Configuration Register to remove Software shutdown
- IS31FL_write_single_register(addr, ISSI_REG_CONFIGURATION, ISSI_CONFIGURATION);
- // Set Golbal Current Control Register
- IS31FL_write_single_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
- // Set Pull up & Down for SWx CSy
- IS31FL_write_single_register(addr, ISSI_REG_PULLDOWNUP, ISSI_PULLDOWNUP);
-// Set Tempature Status
-#ifdef ISSI_REG_TEMP
- IS31FL_write_single_register(addr, ISSI_REG_TEMP, ISSI_TEMP);
-#endif
- // Set Spread Spectrum Register, passed through as sets SYNC function
- IS31FL_write_single_register(addr, ISSI_REG_SSR, ssr);
-// Set PWM Frequency Enable Register if applicable
-#ifdef ISSI_REG_PWM_ENABLE
- IS31FL_write_single_register(addr, ISSI_REG_PWM_ENABLE, ISSI_PWM_ENABLE);
-#endif
-// Set PWM Frequency Register if applicable
-#ifdef ISSI_REG_PWM_SET
- IS31FL_write_single_register(addr, ISSI_REG_PWM_SET, ISSI_PWM_SET);
-#endif
-
- // Wait 10ms to ensure the device has woken up.
- wait_ms(10);
-}
-
-void IS31FL_common_update_pwm_register(uint8_t addr, uint8_t index) {
- if (g_pwm_buffer_update_required[index]) {
- // Queue up the correct page
- IS31FL_unlock_register(addr, ISSI_PAGE_PWM);
- // Hand off the update to IS31FL_write_multi_registers
- IS31FL_write_multi_registers(addr, g_pwm_buffer[index], ISSI_MAX_LEDS, ISSI_PWM_TRF_SIZE, ISSI_PWM_REG_1ST);
- // Update flags that pwm_buffer has been updated
- g_pwm_buffer_update_required[index] = false;
- }
-}
-
-#ifdef ISSI_MANUAL_SCALING
-void IS31FL_set_manual_scaling_buffer(void) {
- is31_led led;
- is31_led scale;
- for (int i = 0; i < ISSI_MANUAL_SCALING; i++) {
- memcpy_P(&scale, (&g_is31_scaling[i]), sizeof(scale));
-
-# ifdef RGB_MATRIX_ENABLE
- if (scale.driver >= 0 && scale.driver < RGB_MATRIX_LED_COUNT) {
- memcpy_P(&led, (&g_is31_leds[scale.driver]), sizeof(led));
-
- if (g_scaling_buffer[led.driver][led.r] = scale.r && g_scaling_buffer[led.driver][led.g] = scale.g && g_scaling_buffer[led.driver][led.b] = scale.b) {
- return;
- }
- g_scaling_buffer[led.driver][led.r] = scale.r;
- g_scaling_buffer[led.driver][led.g] = scale.g;
- g_scaling_buffer[led.driver][led.b] = scale.b;
-# elif defined(LED_MATRIX_ENABLE)
- if (scale.driver >= 0 && scale.driver < LED_MATRIX_LED_COUNT) {
- memcpy_P(&led, (&g_is31_leds[scale.driver]), sizeof(led));
-
- if (g_scaling_buffer[led.driver][led.v] == scale.v) {
- return;
- }
- g_scaling_buffer[led.driver][led.v] = scale.v;
-# endif
- g_scaling_buffer_update_required[led.driver] = true;
- }
- }
-}
-#endif
-
-void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index) {
- if (g_scaling_buffer_update_required[index]) {
- // Queue up the correct page
- IS31FL_unlock_register(addr, ISSI_PAGE_SCALING);
- // Hand off the update to IS31FL_write_multi_registers
- IS31FL_write_multi_registers(addr, g_scaling_buffer[index], ISSI_SCALING_SIZE, ISSI_SCALING_TRF_SIZE, ISSI_SCL_REG_1ST);
- // Update flags that scaling_buffer has been updated
- g_scaling_buffer_update_required[index] = false;
- }
-}
-
-void IS31FL_common_flush(void) {
- IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0);
-#if defined(DRIVER_ADDR_2)
- IS31FL_common_update_pwm_register(DRIVER_ADDR_2, 1);
-# if defined(DRIVER_ADDR_3)
- IS31FL_common_update_pwm_register(DRIVER_ADDR_3, 2);
-# if defined(DRIVER_ADDR_4)
- IS31FL_common_update_pwm_register(DRIVER_ADDR_4, 3);
-# endif
-# endif
-#endif
-}
-
-#ifdef RGB_MATRIX_ENABLE
-void IS31FL_RGB_init_drivers(void) {
- i2c_init();
-
- IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1);
-# if defined(DRIVER_ADDR_2)
- IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2);
-# if defined(DRIVER_ADDR_3)
- IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3);
-# if defined(DRIVER_ADDR_4)
- IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4);
-# endif
-# endif
-# endif
-
- for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
- IS31FL_RGB_set_scaling_buffer(i, true, true, true);
- }
-
- // This actually updates the LED drivers
-# ifdef ISSI_MANUAL_SCALING
- IS31FL_set_manual_scaling_buffer();
-# endif
-
- IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0);
-# if defined(DRIVER_ADDR_2)
- IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1);
-# if defined(DRIVER_ADDR_3)
- IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2);
-# if defined(DRIVER_ADDR_4)
- IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3);
-# endif
-# endif
-# endif
-}
-
-// Colour is set by adjusting PWM register
-void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
- if (index >= 0 && index < RGB_MATRIX_LED_COUNT) {
- is31_led led;
- memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
-
- g_pwm_buffer[led.driver][led.r] = red;
- g_pwm_buffer[led.driver][led.g] = green;
- g_pwm_buffer[led.driver][led.b] = blue;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void IS31FL_RGB_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
- for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
- IS31FL_RGB_set_color(i, red, green, blue);
- }
-}
-
-// Setup Scaling register that decides the peak current of each LED
-void IS31FL_RGB_set_scaling_buffer(uint8_t index, bool red, bool green, bool blue) {
- is31_led led;
- memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
- if (red) {
- g_scaling_buffer[led.driver][led.r] = ISSI_SCAL_RED;
- } else {
- g_scaling_buffer[led.driver][led.r] = ISSI_SCAL_RED_OFF;
- }
- if (green) {
- g_scaling_buffer[led.driver][led.g] = ISSI_SCAL_GREEN;
- } else {
- g_scaling_buffer[led.driver][led.g] = ISSI_SCAL_GREEN_OFF;
- }
- if (blue) {
- g_scaling_buffer[led.driver][led.b] = ISSI_SCAL_BLUE;
- } else {
- g_scaling_buffer[led.driver][led.b] = ISSI_SCAL_BLUE_OFF;
- }
- g_scaling_buffer_update_required[led.driver] = true;
-}
-
-#elif defined(LED_MATRIX_ENABLE)
-// LED Matrix Specific scripts
-void IS31FL_simple_init_drivers(void) {
- i2c_init();
-
- IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1);
-# if defined(DRIVER_ADDR_2)
- IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2);
-# if defined(DRIVER_ADDR_3)
- IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3);
-# if defined(DRIVER_ADDR_4)
- IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4);
-# endif
-# endif
-# endif
-
- for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) {
- IS31FL_simple_set_scaling_buffer(i, true);
- }
-
-// This actually updates the LED drivers
-# ifdef ISSI_MANUAL_SCALING
- IS31FL_set_manual_scaling_buffer();
-# endif
-
- IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0);
-# if defined(DRIVER_ADDR_2)
- IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1);
-# if defined(DRIVER_ADDR_3)
- IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2);
-# if defined(DRIVER_ADDR_4)
- IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3);
-# endif
-# endif
-# endif
-}
-
-void IS31FL_simple_set_scaling_buffer(uint8_t index, bool value) {
- is31_led led;
- memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
- if (value) {
- g_scaling_buffer[led.driver][led.v] = ISSI_SCAL_LED;
- } else {
- g_scaling_buffer[led.driver][led.v] = ISSI_SCAL_LED_OFF;
- }
- g_scaling_buffer_update_required[led.driver] = true;
-}
-
-void IS31FL_simple_set_brightness(int index, uint8_t value) {
- if (index >= 0 && index < LED_MATRIX_LED_COUNT) {
- is31_led led;
- memcpy_P(&led, (&g_is31_leds[index]), sizeof(led));
-
- g_pwm_buffer[led.driver][led.v] = value;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void IS31FL_simple_set_brigntness_all(uint8_t value) {
- for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) {
- IS31FL_simple_set_brightness(i, value);
- }
-}
-#endif
diff --git a/drivers/led/issi/is31flcommon.h b/drivers/led/issi/is31flcommon.h
deleted file mode 100644
index 10613a6eed..0000000000
--- a/drivers/led/issi/is31flcommon.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright 2017 Jason Williams
- * Copyright 2018 Jack Humbert
- * Copyright 2018 Yiancar
- * Copyright 2020 MelGeek
- * Copyright 2021 MasterSpoon
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// Which variant header file to use
-#if defined(LED_MATRIX_IS31FL3742A) || defined(RGB_MATRIX_IS31FL3742A)
-# include "is31fl3742.h"
-#elif defined(LED_MATRIX_IS31FL3743A) || defined(RGB_MATRIX_IS31FL3743A)
-# include "is31fl3743.h"
-#elif defined(LED_MATRIX_IS31FL3745) || defined(RGB_MATRIX_IS31FL3745)
-# include "is31fl3745.h"
-#elif defined(LED_MATRIX_IS31FL3746A) || defined(RGB_MATRIX_IS31FL3746A)
-# include "is31fl3746.h"
-#endif
-
-#if defined DRIVER_ADDR_4
-# define DRIVER_COUNT 4
-#elif defined DRIVER_ADDR_3
-# define DRIVER_COUNT 3
-#elif defined DRIVER_ADDR_2
-# define DRIVER_COUNT 2
-#elif defined DRIVER_ADDR_1
-# define DRIVER_COUNT 1
-#endif
-
-#ifdef RGB_MATRIX_ENABLE
-typedef struct is31_led {
- uint8_t driver : 2;
- uint8_t r;
- uint8_t g;
- uint8_t b;
-} PACKED is31_led;
-
-extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT];
-
-#elif defined(LED_MATRIX_ENABLE)
-typedef struct is31_led {
- uint8_t driver : 2;
- uint8_t v;
-} PACKED is31_led;
-
-extern const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT];
-#endif
-
-#ifdef ISSI_MANUAL_SCALING
-extern const is31_led PROGMEM g_is31_scaling[];
-void IS31FL_set_manual_scaling_buffer(void);
-#endif
-
-void IS31FL_write_single_register(uint8_t addr, uint8_t reg, uint8_t data);
-bool IS31FL_write_multi_registers(uint8_t addr, uint8_t *source_buffer, uint8_t buffer_size, uint8_t transfer_size, uint8_t start_reg_addr);
-void IS31FL_unlock_register(uint8_t addr, uint8_t page);
-void IS31FL_common_init(uint8_t addr, uint8_t ssr);
-
-void IS31FL_common_update_pwm_register(uint8_t addr, uint8_t index);
-void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index);
-
-void IS31FL_common_flush(void);
-
-#ifdef RGB_MATRIX_ENABLE
-// RGB Matrix Specific scripts
-void IS31FL_RGB_init_drivers(void);
-void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
-void IS31FL_RGB_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
-void IS31FL_RGB_set_scaling_buffer(uint8_t index, bool red, bool green, bool blue);
-#elif defined(LED_MATRIX_ENABLE)
-// LED Matrix Specific scripts
-void IS31FL_simple_init_drivers(void);
-void IS31FL_simple_set_scaling_buffer(uint8_t index, bool value);
-void IS31FL_simple_set_brightness(int index, uint8_t value);
-void IS31FL_simple_set_brigntness_all(uint8_t value);
-#endif
diff --git a/drivers/led/snled27351-mono.c b/drivers/led/snled27351-mono.c
new file mode 100644
index 0000000000..854d21d3dc
--- /dev/null
+++ b/drivers/led/snled27351-mono.c
@@ -0,0 +1,244 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.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/>.
+ */
+
+#include "snled27351-mono.h"
+#include "i2c_master.h"
+
+#define SNLED27351_PWM_REGISTER_COUNT 192
+#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24
+
+#ifndef SNLED27351_I2C_TIMEOUT
+# define SNLED27351_I2C_TIMEOUT 100
+#endif
+
+#ifndef SNLED27351_I2C_PERSISTENCE
+# define SNLED27351_I2C_PERSISTENCE 0
+#endif
+
+#ifndef SNLED27351_PHASE_CHANNEL
+# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL
+#endif
+
+#ifndef SNLED27351_CURRENT_TUNE
+# define SNLED27351_CURRENT_TUNE \
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
+#endif
+
+// These buffers match the SNLED27351 PWM registers.
+// The control buffers match the PG0 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 snled27351_write_pwm_buffer() but it's
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[SNLED27351_DRIVER_COUNT][SNLED27351_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false};
+
+void snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+#if SNLED27351_I2C_PERSISTENCE > 0
+ for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) {
+ if (i2c_write_register(addr << 1, reg, &data, 1, SNLED27351_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, reg, &data, 1, SNLED27351_I2C_TIMEOUT);
+#endif
+}
+
+void snled27351_select_page(uint8_t addr, uint8_t page) {
+ snled27351_write_register(addr, SNLED27351_REG_COMMAND, page);
+}
+
+void snled27351_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes PG1 is already selected.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 16) {
+#if SNLED27351_I2C_PERSISTENCE > 0
+ for (uint8_t j = 0; j < SNLED27351_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, SNLED27351_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
+ }
+#else
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, SNLED27351_I2C_TIMEOUT);
+#endif
+ }
+}
+
+void snled27351_init_drivers(void) {
+ i2c_init();
+
+ snled27351_init(SNLED27351_I2C_ADDRESS_1);
+#if defined(SNLED27351_I2C_ADDRESS_2)
+ snled27351_init(SNLED27351_I2C_ADDRESS_2);
+# if defined(SNLED27351_I2C_ADDRESS_3)
+ snled27351_init(SNLED27351_I2C_ADDRESS_3);
+# if defined(SNLED27351_I2C_ADDRESS_4)
+ snled27351_init(SNLED27351_I2C_ADDRESS_4);
+# endif
+# endif
+#endif
+
+ for (int i = 0; i < SNLED27351_LED_COUNT; i++) {
+ snled27351_set_led_control_register(i, true);
+ }
+
+ snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0);
+#if defined(SNLED27351_I2C_ADDRESS_2)
+ snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1);
+# if defined(SNLED27351_I2C_ADDRESS_3)
+ snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2);
+# if defined(SNLED27351_I2C_ADDRESS_4)
+ snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void snled27351_init(uint8_t addr) {
+ 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
+ snled27351_write_register(addr, SNLED27351_FUNCTION_REG_PULLDOWNUP, SNLED27351_PULLDOWNUP_ALL_ENABLED);
+ // Select number of scan phase
+ snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL);
+ // Setting PWM Delay Phase
+ snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1, SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE);
+ // Setting Driving/Sinking Channel Slew Rate
+ 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);
+
+ 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);
+ }
+
+ snled27351_select_page(addr, SNLED27351_COMMAND_PWM);
+
+ for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) {
+ snled27351_write_register(addr, i, 0x00);
+ }
+
+ snled27351_select_page(addr, SNLED27351_COMMAND_CURRENT_TUNE);
+
+ uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_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);
+
+ for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) {
+ snled27351_write_register(addr, i, 0xFF);
+ }
+
+ 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_set_value(int index, uint8_t value) {
+ snled27351_led_t led;
+ if (index >= 0 && index < SNLED27351_LED_COUNT) {
+ memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
+
+ if (g_pwm_buffer[led.driver][led.v] == value) {
+ return;
+ }
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void snled27351_set_value_all(uint8_t value) {
+ for (int i = 0; i < SNLED27351_LED_COUNT; i++) {
+ snled27351_set_value(i, value);
+ }
+}
+
+void snled27351_set_led_control_register(uint8_t index, bool value) {
+ snled27351_led_t led;
+ memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ snled27351_select_page(addr, SNLED27351_COMMAND_PWM);
+
+ snled27351_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
+ }
+}
+
+void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) {
+ snled27351_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+
+ g_led_control_registers_update_required[index] = false;
+ }
+}
+
+void snled27351_flush(void) {
+ snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0);
+#if defined(SNLED27351_I2C_ADDRESS_2)
+ snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1);
+# if defined(SNLED27351_I2C_ADDRESS_3)
+ snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2);
+# if defined(SNLED27351_I2C_ADDRESS_4)
+ snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3);
+# endif
+# endif
+#endif
+}
+
+void snled27351_sw_return_normal(uint8_t addr) {
+ 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) {
+ 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
+ snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, SNLED27351_SOFTWARE_SLEEP_ENABLE);
+}
diff --git a/drivers/led/snled27351-mono.h b/drivers/led/snled27351-mono.h
new file mode 100644
index 0000000000..3a22115623
--- /dev/null
+++ b/drivers/led/snled27351-mono.h
@@ -0,0 +1,380 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.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
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+#include "util.h"
+
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef CKLED2001_TIMEOUT
+# define SNLED27351_I2C_TIMEOUT CKLED2001_TIMEOUT
+#endif
+#ifdef CKLED2001_PERSISTENCE
+# define SNLED27351_I2C_PERSISTENCE CKLED2001_PERSISTENCE
+#endif
+#ifdef PHASE_CHANNEL
+# define SNLED27351_PHASE_CHANNEL PHASE_CHANNEL
+#endif
+#ifdef CKLED2001_CURRENT_TUNE
+# define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE
+#endif
+
+#define MSKPHASE_12CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL
+#define MSKPHASE_11CHANNEL SNLED27351_SCAN_PHASE_11_CHANNEL
+#define MSKPHASE_10CHANNEL SNLED27351_SCAN_PHASE_10_CHANNEL
+#define MSKPHASE_9CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
+#define MSKPHASE_8CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL
+#define MSKPHASE_7CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL
+#define MSKPHASE_6CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL
+#define MSKPHASE_5CHANNEL SNLED27351_SCAN_PHASE_5_CHANNEL
+#define MSKPHASE_4CHANNEL SNLED27351_SCAN_PHASE_4_CHANNEL
+#define MSKPHASE_3CHANNEL SNLED27351_SCAN_PHASE_3_CHANNEL
+#define MSKPHASE_2CHANNEL SNLED27351_SCAN_PHASE_2_CHANNEL
+#define MSKPHASE_1CHANNEL SNLED27351_SCAN_PHASE_1_CHANNEL
+
+#define ckled2001_led snled27351_led_t
+#define g_ckled2001_leds g_snled27351_leds
+// ========
+
+#define SNLED27351_REG_COMMAND 0xFD
+#define SNLED27351_COMMAND_LED_CONTROL 0x00
+#define SNLED27351_COMMAND_PWM 0x01
+#define SNLED27351_COMMAND_FUNCTION 0x03
+#define SNLED27351_COMMAND_CURRENT_TUNE 0x04
+
+#define SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN 0x00
+#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN (0x0 << 0)
+#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL (0x1 << 0)
+
+#define SNLED27351_FUNCTION_REG_ID 0x11
+#define SNLED27351_DRIVER_ID 0x8A
+
+#define SNLED27351_FUNCTION_REG_PULLDOWNUP 0x13
+#define SNLED27351_PULLDOWNUP_ALL_ENABLED 0xAA
+
+#define SNLED27351_FUNCTION_REG_SCAN_PHASE 0x14
+#define SNLED27351_SCAN_PHASE_12_CHANNEL 0x00
+#define SNLED27351_SCAN_PHASE_11_CHANNEL 0x01
+#define SNLED27351_SCAN_PHASE_10_CHANNEL 0x02
+#define SNLED27351_SCAN_PHASE_9_CHANNEL 0x03
+#define SNLED27351_SCAN_PHASE_8_CHANNEL 0x04
+#define SNLED27351_SCAN_PHASE_7_CHANNEL 0x05
+#define SNLED27351_SCAN_PHASE_6_CHANNEL 0x06
+#define SNLED27351_SCAN_PHASE_5_CHANNEL 0x07
+#define SNLED27351_SCAN_PHASE_4_CHANNEL 0x08
+#define SNLED27351_SCAN_PHASE_3_CHANNEL 0x09
+#define SNLED27351_SCAN_PHASE_2_CHANNEL 0x0A
+#define SNLED27351_SCAN_PHASE_1_CHANNEL 0x0B
+
+#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1 0x15
+#define SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE (0b1 << 2)
+
+#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2 0x16
+#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE (0b1 << 6)
+#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE (0b1 << 7)
+
+#define SNLED27351_FUNCTION_REG_OPEN_SHORT_ENABLE 0x17
+#define SNLED27351_OPEN_SHORT_ENABLE_SDS_ENABLE (0b1 << 6)
+#define SNLED27351_OPEN_SHORT_ENABLE_ODS_ENABLE (0b1 << 7)
+
+#define SNLED27351_FUNCTION_REG_OPEN_SHORT_DUTY 0x18
+
+#define SNLED27351_FUNCTION_REG_OPEN_SHORT_FLAG 0x19
+#define SNLED27351_OPEN_SHORT_FLAG_OSINT_ENABLE (0b1 << 6)
+#define SNLED27351_OPEN_SHORT_FLAG_ODINT_ENABLE (0b1 << 7)
+
+#define SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP 0x1A
+#define SNLED27351_SOFTWARE_SLEEP_ENABLE (0b1 << 1)
+
+// LED Control Registers
+#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0
+#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17
+#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1)
+
+#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18
+#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F
+#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1)
+
+#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30
+#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47
+#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1)
+
+#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48
+
+// LED Control Registers
+#define SNLED27351_LED_PWM_FIRST_ADDR 0x00
+#define SNLED27351_LED_PWM_LAST_ADDR 0xBF
+#define SNLED27351_LED_PWM_LENGTH 0xC0
+
+// Current Tune Registers
+#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00
+#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B
+#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C
+
+#define SNLED27351_I2C_ADDRESS_GND 0x74
+#define SNLED27351_I2C_ADDRESS_SCL 0x75
+#define SNLED27351_I2C_ADDRESS_SDA 0x76
+#define SNLED27351_I2C_ADDRESS_VDDIO 0x77
+
+#if defined(LED_MATRIX_SNLED27351)
+# define SNLED27351_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#if defined(SNLED27351_I2C_ADDRESS_4)
+# define SNLED27351_DRIVER_COUNT 4
+#elif defined(SNLED27351_I2C_ADDRESS_3)
+# define SNLED27351_DRIVER_COUNT 3
+#elif defined(SNLED27351_I2C_ADDRESS_2)
+# define SNLED27351_DRIVER_COUNT 2
+#elif defined(SNLED27351_I2C_ADDRESS_1)
+# define SNLED27351_DRIVER_COUNT 1
+#endif
+
+typedef struct snled27351_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED snled27351_led_t;
+
+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);
+void snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+
+void snled27351_set_value(int index, uint8_t value);
+void snled27351_set_value_all(uint8_t value);
+
+void snled27351_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index);
+void snled27351_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void snled27351_flush(void);
+
+void snled27351_sw_return_normal(uint8_t addr);
+void snled27351_sw_shutdown(uint8_t addr);
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x06
+#define A_8 0x07
+#define A_9 0x08
+#define A_10 0x09
+#define A_11 0x0A
+#define A_12 0x0B
+#define A_13 0x0C
+#define A_14 0x0D
+#define A_15 0x0E
+#define A_16 0x0F
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x16
+#define B_8 0x17
+#define B_9 0x18
+#define B_10 0x19
+#define B_11 0x1A
+#define B_12 0x1B
+#define B_13 0x1C
+#define B_14 0x1D
+#define B_15 0x1E
+#define B_16 0x1F
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x26
+#define C_8 0x27
+#define C_9 0x28
+#define C_10 0x29
+#define C_11 0x2A
+#define C_12 0x2B
+#define C_13 0x2C
+#define C_14 0x2D
+#define C_15 0x2E
+#define C_16 0x2F
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x36
+#define D_8 0x37
+#define D_9 0x38
+#define D_10 0x39
+#define D_11 0x3A
+#define D_12 0x3B
+#define D_13 0x3C
+#define D_14 0x3D
+#define D_15 0x3E
+#define D_16 0x3F
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x46
+#define E_8 0x47
+#define E_9 0x48
+#define E_10 0x49
+#define E_11 0x4A
+#define E_12 0x4B
+#define E_13 0x4C
+#define E_14 0x4D
+#define E_15 0x4E
+#define E_16 0x4F
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x56
+#define F_8 0x57
+#define F_9 0x58
+#define F_10 0x59
+#define F_11 0x5A
+#define F_12 0x5B
+#define F_13 0x5C
+#define F_14 0x5D
+#define F_15 0x5E
+#define F_16 0x5F
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x66
+#define G_8 0x67
+#define G_9 0x68
+#define G_10 0x69
+#define G_11 0x6A
+#define G_12 0x6B
+#define G_13 0x6C
+#define G_14 0x6D
+#define G_15 0x6E
+#define G_16 0x6F
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x76
+#define H_8 0x77
+#define H_9 0x78
+#define H_10 0x79
+#define H_11 0x7A
+#define H_12 0x7B
+#define H_13 0x7C
+#define H_14 0x7D
+#define H_15 0x7E
+#define H_16 0x7F
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x86
+#define I_8 0x87
+#define I_9 0x88
+#define I_10 0x89
+#define I_11 0x8A
+#define I_12 0x8B
+#define I_13 0x8C
+#define I_14 0x8D
+#define I_15 0x8E
+#define I_16 0x8F
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x96
+#define J_8 0x97
+#define J_9 0x98
+#define J_10 0x99
+#define J_11 0x9A
+#define J_12 0x9B
+#define J_13 0x9C
+#define J_14 0x9D
+#define J_15 0x9E
+#define J_16 0x9F
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA6
+#define K_8 0xA7
+#define K_9 0xA8
+#define K_10 0xA9
+#define K_11 0xAA
+#define K_12 0xAB
+#define K_13 0xAC
+#define K_14 0xAD
+#define K_15 0xAE
+#define K_16 0xAF
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB6
+#define L_8 0xB7
+#define L_9 0xB8
+#define L_10 0xB9
+#define L_11 0xBA
+#define L_12 0xBB
+#define L_13 0xBC
+#define L_14 0xBD
+#define L_15 0xBE
+#define L_16 0xBF
diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c
deleted file mode 100644
index b2054c96d5..0000000000
--- a/drivers/led/snled27351-simple.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.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/>.
- */
-
-#include "snled27351-simple.h"
-#include "i2c_master.h"
-
-#define SNLED27351_PWM_REGISTER_COUNT 192
-#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24
-
-#ifndef SNLED27351_I2C_TIMEOUT
-# define SNLED27351_I2C_TIMEOUT 100
-#endif
-
-#ifndef SNLED27351_I2C_PERSISTENCE
-# define SNLED27351_I2C_PERSISTENCE 0
-#endif
-
-#ifndef SNLED27351_PHASE_CHANNEL
-# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL
-#endif
-
-#ifndef SNLED27351_CURRENT_TUNE
-# define SNLED27351_CURRENT_TUNE \
- { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
-#endif
-
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[20];
-
-// These buffers match the SNLED27351 PWM registers.
-// The control buffers match the PG0 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 snled27351_write_pwm_buffer() but it's
-// probably not worth the extra complexity.
-uint8_t g_pwm_buffer[SNLED27351_DRIVER_COUNT][SNLED27351_PWM_REGISTER_COUNT];
-bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false};
-
-uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0};
-bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false};
-
-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;
-
-#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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
- return false;
- }
-#endif
- return true;
-}
-
-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
-
- // 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;
- // 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];
- }
-
-#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) {
- return false;
- }
- }
-#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) {
- return false;
- }
-#endif
- }
- return true;
-}
-
-void snled27351_init_drivers(void) {
- i2c_init();
-
- snled27351_init(SNLED27351_I2C_ADDRESS_1);
-#if defined(SNLED27351_I2C_ADDRESS_2)
- snled27351_init(SNLED27351_I2C_ADDRESS_2);
-# if defined(SNLED27351_I2C_ADDRESS_3)
- snled27351_init(SNLED27351_I2C_ADDRESS_3);
-# if defined(SNLED27351_I2C_ADDRESS_4)
- snled27351_init(SNLED27351_I2C_ADDRESS_4);
-# endif
-# endif
-#endif
-
- for (int i = 0; i < SNLED27351_LED_COUNT; i++) {
- snled27351_set_led_control_register(i, true);
- }
-
- snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0);
-#if defined(SNLED27351_I2C_ADDRESS_2)
- snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1);
-# if defined(SNLED27351_I2C_ADDRESS_3)
- snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2);
-# if defined(SNLED27351_I2C_ADDRESS_4)
- snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void snled27351_init(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, 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
- snled27351_write_register(addr, SNLED27351_FUNCTION_REG_PULLDOWNUP, SNLED27351_PULLDOWNUP_ALL_ENABLED);
- // Select number of scan phase
- snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL);
- // Setting PWM Delay Phase
- snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1, SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE);
- // Setting Driving/Sinking Channel Slew Rate
- 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);
- 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);
- for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) {
- snled27351_write_register(addr, i, 0x00);
- }
-
- // Set CURRENT PAGE (Page 4)
- 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);
- 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);
- // Setting LED driver to normal mode
- snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL);
-}
-
-void snled27351_set_value(int index, uint8_t value) {
- snled27351_led_t led;
- if (index >= 0 && index < SNLED27351_LED_COUNT) {
- memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
-
- if (g_pwm_buffer[led.driver][led.v] == value) {
- return;
- }
- g_pwm_buffer[led.driver][led.v] = value;
- g_pwm_buffer_update_required[led.driver] = true;
- }
-}
-
-void snled27351_set_value_all(uint8_t value) {
- for (int i = 0; i < SNLED27351_LED_COUNT; i++) {
- snled27351_set_value(i, value);
- }
-}
-
-void snled27351_set_led_control_register(uint8_t index, bool value) {
- snled27351_led_t led;
- memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
-
- uint8_t control_register = led.v / 8;
- uint8_t bit_value = led.v % 8;
-
- if (value) {
- g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
- } else {
- g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
- }
-
- g_led_control_registers_update_required[led.driver] = true;
-}
-
-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);
-
- // If any of the transactions fail we risk writing dirty PG0,
- // refresh page 0 just in case.
- if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) {
- g_led_control_registers_update_required[index] = true;
- }
- }
- g_pwm_buffer_update_required[index] = false;
-}
-
-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);
- for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) {
- snled27351_write_register(addr, i, g_led_control_registers[index][i]);
- }
- }
- g_led_control_registers_update_required[index] = false;
-}
-
-void snled27351_flush(void) {
- snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0);
-#if defined(SNLED27351_I2C_ADDRESS_2)
- snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1);
-# if defined(SNLED27351_I2C_ADDRESS_3)
- snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2);
-# if defined(SNLED27351_I2C_ADDRESS_4)
- snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3);
-# endif
-# endif
-#endif
-}
-
-void snled27351_sw_return_normal(uint8_t addr) {
- // Select to function page
- snled27351_write_register(addr, SNLED27351_REG_COMMAND, 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);
- // Setting LED driver to shutdown mode
- snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN);
- // Write SW Sleep Register
- snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, SNLED27351_SOFTWARE_SLEEP_ENABLE);
-}
diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h
deleted file mode 100644
index 2fc62a6f0a..0000000000
--- a/drivers/led/snled27351-simple.h
+++ /dev/null
@@ -1,380 +0,0 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.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
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "progmem.h"
-#include "util.h"
-
-// ======== DEPRECATED DEFINES - DO NOT USE ========
-#ifdef CKLED2001_TIMEOUT
-# define SNLED27351_I2C_TIMEOUT CKLED2001_TIMEOUT
-#endif
-#ifdef CKLED2001_PERSISTENCE
-# define SNLED27351_I2C_PERSISTENCE CKLED2001_PERSISTENCE
-#endif
-#ifdef PHASE_CHANNEL
-# define SNLED27351_PHASE_CHANNEL PHASE_CHANNEL
-#endif
-#ifdef CKLED2001_CURRENT_TUNE
-# define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE
-#endif
-
-#define MSKPHASE_12CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL
-#define MSKPHASE_11CHANNEL SNLED27351_SCAN_PHASE_11_CHANNEL
-#define MSKPHASE_10CHANNEL SNLED27351_SCAN_PHASE_10_CHANNEL
-#define MSKPHASE_9CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
-#define MSKPHASE_8CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL
-#define MSKPHASE_7CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL
-#define MSKPHASE_6CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL
-#define MSKPHASE_5CHANNEL SNLED27351_SCAN_PHASE_5_CHANNEL
-#define MSKPHASE_4CHANNEL SNLED27351_SCAN_PHASE_4_CHANNEL
-#define MSKPHASE_3CHANNEL SNLED27351_SCAN_PHASE_3_CHANNEL
-#define MSKPHASE_2CHANNEL SNLED27351_SCAN_PHASE_2_CHANNEL
-#define MSKPHASE_1CHANNEL SNLED27351_SCAN_PHASE_1_CHANNEL
-
-#define ckled2001_led snled27351_led_t
-#define g_ckled2001_leds g_snled27351_leds
-// ========
-
-#define SNLED27351_REG_COMMAND 0xFD
-#define SNLED27351_COMMAND_LED_CONTROL 0x00
-#define SNLED27351_COMMAND_PWM 0x01
-#define SNLED27351_COMMAND_FUNCTION 0x03
-#define SNLED27351_COMMAND_CURRENT_TUNE 0x04
-
-#define SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN 0x00
-#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN (0x0 << 0)
-#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL (0x1 << 0)
-
-#define SNLED27351_FUNCTION_REG_ID 0x11
-#define SNLED27351_DRIVER_ID 0x8A
-
-#define SNLED27351_FUNCTION_REG_PULLDOWNUP 0x13
-#define SNLED27351_PULLDOWNUP_ALL_ENABLED 0xAA
-
-#define SNLED27351_FUNCTION_REG_SCAN_PHASE 0x14
-#define SNLED27351_SCAN_PHASE_12_CHANNEL 0x00
-#define SNLED27351_SCAN_PHASE_11_CHANNEL 0x01
-#define SNLED27351_SCAN_PHASE_10_CHANNEL 0x02
-#define SNLED27351_SCAN_PHASE_9_CHANNEL 0x03
-#define SNLED27351_SCAN_PHASE_8_CHANNEL 0x04
-#define SNLED27351_SCAN_PHASE_7_CHANNEL 0x05
-#define SNLED27351_SCAN_PHASE_6_CHANNEL 0x06
-#define SNLED27351_SCAN_PHASE_5_CHANNEL 0x07
-#define SNLED27351_SCAN_PHASE_4_CHANNEL 0x08
-#define SNLED27351_SCAN_PHASE_3_CHANNEL 0x09
-#define SNLED27351_SCAN_PHASE_2_CHANNEL 0x0A
-#define SNLED27351_SCAN_PHASE_1_CHANNEL 0x0B
-
-#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1 0x15
-#define SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE (0b1 << 2)
-
-#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2 0x16
-#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE (0b1 << 6)
-#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE (0b1 << 7)
-
-#define SNLED27351_FUNCTION_REG_OPEN_SHORT_ENABLE 0x17
-#define SNLED27351_OPEN_SHORT_ENABLE_SDS_ENABLE (0b1 << 6)
-#define SNLED27351_OPEN_SHORT_ENABLE_ODS_ENABLE (0b1 << 7)
-
-#define SNLED27351_FUNCTION_REG_OPEN_SHORT_DUTY 0x18
-
-#define SNLED27351_FUNCTION_REG_OPEN_SHORT_FLAG 0x19
-#define SNLED27351_OPEN_SHORT_FLAG_OSINT_ENABLE (0b1 << 6)
-#define SNLED27351_OPEN_SHORT_FLAG_ODINT_ENABLE (0b1 << 7)
-
-#define SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP 0x1A
-#define SNLED27351_SOFTWARE_SLEEP_ENABLE (0b1 << 1)
-
-// LED Control Registers
-#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0
-#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17
-#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1)
-
-#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18
-#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F
-#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1)
-
-#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30
-#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47
-#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1)
-
-#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48
-
-// LED Control Registers
-#define SNLED27351_LED_PWM_FIRST_ADDR 0x00
-#define SNLED27351_LED_PWM_LAST_ADDR 0xBF
-#define SNLED27351_LED_PWM_LENGTH 0xC0
-
-// Current Tune Registers
-#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00
-#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B
-#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C
-
-#define SNLED27351_I2C_ADDRESS_GND 0x74
-#define SNLED27351_I2C_ADDRESS_SCL 0x75
-#define SNLED27351_I2C_ADDRESS_SDA 0x76
-#define SNLED27351_I2C_ADDRESS_VDDIO 0x77
-
-#if defined(LED_MATRIX_SNLED27351)
-# define SNLED27351_LED_COUNT LED_MATRIX_LED_COUNT
-#endif
-
-#if defined(SNLED27351_I2C_ADDRESS_4)
-# define SNLED27351_DRIVER_COUNT 4
-#elif defined(SNLED27351_I2C_ADDRESS_3)
-# define SNLED27351_DRIVER_COUNT 3
-#elif defined(SNLED27351_I2C_ADDRESS_2)
-# define SNLED27351_DRIVER_COUNT 2
-#elif defined(SNLED27351_I2C_ADDRESS_1)
-# define SNLED27351_DRIVER_COUNT 1
-#endif
-
-typedef struct snled27351_led_t {
- uint8_t driver : 2;
- uint8_t v;
-} PACKED snled27351_led_t;
-
-extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT];
-
-void snled27351_init_drivers(void);
-void snled27351_init(uint8_t addr);
-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);
-
-void snled27351_set_value(int index, uint8_t value);
-void snled27351_set_value_all(uint8_t value);
-
-void snled27351_set_led_control_register(uint8_t index, bool value);
-
-// This should not be called from an interrupt
-// (eg. from a timer interrupt).
-// Call this while idle (in between matrix scans).
-// If the buffer is dirty, it will update the driver with the buffer.
-void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index);
-void snled27351_update_led_control_registers(uint8_t addr, uint8_t index);
-
-void snled27351_flush(void);
-
-void snled27351_sw_return_normal(uint8_t addr);
-void snled27351_sw_shutdown(uint8_t addr);
-
-#define A_1 0x00
-#define A_2 0x01
-#define A_3 0x02
-#define A_4 0x03
-#define A_5 0x04
-#define A_6 0x05
-#define A_7 0x06
-#define A_8 0x07
-#define A_9 0x08
-#define A_10 0x09
-#define A_11 0x0A
-#define A_12 0x0B
-#define A_13 0x0C
-#define A_14 0x0D
-#define A_15 0x0E
-#define A_16 0x0F
-
-#define B_1 0x10
-#define B_2 0x11
-#define B_3 0x12
-#define B_4 0x13
-#define B_5 0x14
-#define B_6 0x15
-#define B_7 0x16
-#define B_8 0x17
-#define B_9 0x18
-#define B_10 0x19
-#define B_11 0x1A
-#define B_12 0x1B
-#define B_13 0x1C
-#define B_14 0x1D
-#define B_15 0x1E
-#define B_16 0x1F
-
-#define C_1 0x20
-#define C_2 0x21
-#define C_3 0x22
-#define C_4 0x23
-#define C_5 0x24
-#define C_6 0x25
-#define C_7 0x26
-#define C_8 0x27
-#define C_9 0x28
-#define C_10 0x29
-#define C_11 0x2A
-#define C_12 0x2B
-#define C_13 0x2C
-#define C_14 0x2D
-#define C_15 0x2E
-#define C_16 0x2F
-
-#define D_1 0x30
-#define D_2 0x31
-#define D_3 0x32
-#define D_4 0x33
-#define D_5 0x34
-#define D_6 0x35
-#define D_7 0x36
-#define D_8 0x37
-#define D_9 0x38
-#define D_10 0x39
-#define D_11 0x3A
-#define D_12 0x3B
-#define D_13 0x3C
-#define D_14 0x3D
-#define D_15 0x3E
-#define D_16 0x3F
-
-#define E_1 0x40
-#define E_2 0x41
-#define E_3 0x42
-#define E_4 0x43
-#define E_5 0x44
-#define E_6 0x45
-#define E_7 0x46
-#define E_8 0x47
-#define E_9 0x48
-#define E_10 0x49
-#define E_11 0x4A
-#define E_12 0x4B
-#define E_13 0x4C
-#define E_14 0x4D
-#define E_15 0x4E
-#define E_16 0x4F
-
-#define F_1 0x50
-#define F_2 0x51
-#define F_3 0x52
-#define F_4 0x53
-#define F_5 0x54
-#define F_6 0x55
-#define F_7 0x56
-#define F_8 0x57
-#define F_9 0x58
-#define F_10 0x59
-#define F_11 0x5A
-#define F_12 0x5B
-#define F_13 0x5C
-#define F_14 0x5D
-#define F_15 0x5E
-#define F_16 0x5F
-
-#define G_1 0x60
-#define G_2 0x61
-#define G_3 0x62
-#define G_4 0x63
-#define G_5 0x64
-#define G_6 0x65
-#define G_7 0x66
-#define G_8 0x67
-#define G_9 0x68
-#define G_10 0x69
-#define G_11 0x6A
-#define G_12 0x6B
-#define G_13 0x6C
-#define G_14 0x6D
-#define G_15 0x6E
-#define G_16 0x6F
-
-#define H_1 0x70
-#define H_2 0x71
-#define H_3 0x72
-#define H_4 0x73
-#define H_5 0x74
-#define H_6 0x75
-#define H_7 0x76
-#define H_8 0x77
-#define H_9 0x78
-#define H_10 0x79
-#define H_11 0x7A
-#define H_12 0x7B
-#define H_13 0x7C
-#define H_14 0x7D
-#define H_15 0x7E
-#define H_16 0x7F
-
-#define I_1 0x80
-#define I_2 0x81
-#define I_3 0x82
-#define I_4 0x83
-#define I_5 0x84
-#define I_6 0x85
-#define I_7 0x86
-#define I_8 0x87
-#define I_9 0x88
-#define I_10 0x89
-#define I_11 0x8A
-#define I_12 0x8B
-#define I_13 0x8C
-#define I_14 0x8D
-#define I_15 0x8E
-#define I_16 0x8F
-
-#define J_1 0x90
-#define J_2 0x91
-#define J_3 0x92
-#define J_4 0x93
-#define J_5 0x94
-#define J_6 0x95
-#define J_7 0x96
-#define J_8 0x97
-#define J_9 0x98
-#define J_10 0x99
-#define J_11 0x9A
-#define J_12 0x9B
-#define J_13 0x9C
-#define J_14 0x9D
-#define J_15 0x9E
-#define J_16 0x9F
-
-#define K_1 0xA0
-#define K_2 0xA1
-#define K_3 0xA2
-#define K_4 0xA3
-#define K_5 0xA4
-#define K_6 0xA5
-#define K_7 0xA6
-#define K_8 0xA7
-#define K_9 0xA8
-#define K_10 0xA9
-#define K_11 0xAA
-#define K_12 0xAB
-#define K_13 0xAC
-#define K_14 0xAD
-#define K_15 0xAE
-#define K_16 0xAF
-
-#define L_1 0xB0
-#define L_2 0xB1
-#define L_3 0xB2
-#define L_4 0xB3
-#define L_5 0xB4
-#define L_6 0xB5
-#define L_7 0xB6
-#define L_8 0xB7
-#define L_9 0xB8
-#define L_10 0xB9
-#define L_11 0xBA
-#define L_12 0xBB
-#define L_13 0xBC
-#define L_14 0xBD
-#define L_15 0xBE
-#define L_16 0xBF
diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c
index 71992b7322..662335afd2 100644
--- a/drivers/led/snled27351.c
+++ b/drivers/led/snled27351.c
@@ -37,9 +37,6 @@
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_transfer_buffer[65];
-
// These buffers match the SNLED27351 PWM registers.
// The control buffers match the PG0 LED On/Off registers.
// Storing them like this is optimal for I2C transfers to the registers.
@@ -52,53 +49,34 @@ bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false};
uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0};
bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false};
-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;
-
+void snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t 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) {
- return false;
- }
+ if (i2c_write_register(addr << 1, reg, &data, 1, SNLED27351_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(addr << 1, reg, &data, 1, SNLED27351_I2C_TIMEOUT);
#endif
- return true;
}
-bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
+void snled27351_select_page(uint8_t addr, uint8_t page) {
+ snled27351_write_register(addr, SNLED27351_REG_COMMAND, page);
+}
+
+void snled27351_write_pwm_buffer(uint8_t addr, uint8_t index) {
// Assumes PG1 is already selected.
- // If any of the transactions fails function returns false.
- // Transmit PWM registers in 3 transfers of 64 bytes.
-
- // 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;
- // 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];
- }
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (uint8_t i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 16) {
#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) {
- return false;
- }
+ for (uint8_t j = 0; j < SNLED27351_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, SNLED27351_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(addr << 1, i, g_pwm_buffer[index] + i, 16, SNLED27351_I2C_TIMEOUT);
#endif
}
- return true;
}
void snled27351_init_drivers(void) {
@@ -132,8 +110,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 +124,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);
}
@@ -185,6 +164,7 @@ void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
@@ -230,25 +210,24 @@ 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.
- if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) {
- g_led_control_registers_update_required[index] = true;
- }
+ snled27351_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
}
- g_pwm_buffer_update_required[index] = false;
}
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);
- for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) {
+ snled27351_select_page(addr, SNLED27351_COMMAND_LED_CONTROL);
+
+ for (uint8_t i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) {
snled27351_write_register(addr, i, g_led_control_registers[index][i]);
}
+
+ g_led_control_registers_update_required[index] = false;
}
- g_led_control_registers_update_required[index] = false;
}
void snled27351_flush(void) {
@@ -265,15 +244,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..4b811719d9 100644
--- a/drivers/led/snled27351.h
+++ b/drivers/led/snled27351.h
@@ -169,8 +169,8 @@ extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT];
void snled27351_init_drivers(void);
void snled27351_init(uint8_t addr);
-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);
+void snled27351_select_page(uint8_t addr, uint8_t page);
+void snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data);
void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c
index 4a2121cd7c..8cca41394f 100644
--- a/drivers/oled/oled_driver.c
+++ b/drivers/oled/oled_driver.c
@@ -223,13 +223,8 @@ __attribute__((weak)) bool oled_send_cmd_P(const uint8_t *data, uint16_t size) {
spi_stop();
return (status >= 0);
# elif defined(OLED_TRANSPORT_I2C)
- i2c_status_t status = i2c_start((OLED_DISPLAY_ADDRESS << 1) | I2C_WRITE, OLED_I2C_TIMEOUT);
- for (uint16_t i = 0; i < size && status >= 0; i++) {
- status = i2c_write(pgm_read_byte((const char *)data++), OLED_I2C_TIMEOUT);
- }
-
- i2c_stop();
+ i2c_status_t status = i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), data, size, OLED_I2C_TIMEOUT);
return (status == I2C_STATUS_SUCCESS);
# endif
@@ -253,7 +248,7 @@ __attribute__((weak)) bool oled_send_data(const uint8_t *data, uint16_t size) {
spi_stop();
return true;
#elif defined(OLED_TRANSPORT_I2C)
- i2c_status_t status = i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), I2C_DATA, data, size, OLED_I2C_TIMEOUT);
+ i2c_status_t status = i2c_write_register((OLED_DISPLAY_ADDRESS << 1), I2C_DATA, data, size, OLED_I2C_TIMEOUT);
return (status == I2C_STATUS_SUCCESS);
#endif
}
diff --git a/drivers/painter/comms/qp_comms_i2c.c b/drivers/painter/comms/qp_comms_i2c.c
index ec45ddfb3b..93f503f3dd 100644
--- a/drivers/painter/comms/qp_comms_i2c.c
+++ b/drivers/painter/comms/qp_comms_i2c.c
@@ -28,18 +28,14 @@ bool qp_comms_i2c_init(painter_device_t device) {
}
bool qp_comms_i2c_start(painter_device_t device) {
- painter_driver_t * driver = (painter_driver_t *)device;
- qp_comms_i2c_config_t *comms_config = (qp_comms_i2c_config_t *)driver->comms_config;
- return i2c_start(comms_config->chip_address << 1) == I2C_STATUS_SUCCESS;
+ return true;
}
uint32_t qp_comms_i2c_send_data(painter_device_t device, const void *data, uint32_t byte_count) {
return qp_comms_i2c_send_raw(device, data, byte_count);
}
-void qp_comms_i2c_stop(painter_device_t device) {
- i2c_stop();
-}
+void qp_comms_i2c_stop(painter_device_t device) {}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Command+Data I2C support
diff --git a/drivers/painter/sh1106/qp_sh1106.c b/drivers/painter/sh1106/qp_sh1106.c
index 7cb6e398fa..4117115aec 100644
--- a/drivers/painter/sh1106/qp_sh1106.c
+++ b/drivers/painter/sh1106/qp_sh1106.c
@@ -44,7 +44,7 @@ __attribute__((weak)) bool qp_sh1106_init(painter_device_t device, painter_rotat
}
// clang-format off
- const uint8_t sh1106_init_sequence[] = {
+ uint8_t sh1106_init_sequence[] = {
// Command, Delay, N, Data[N]
SH1106_SET_MUX_RATIO, 0, 1, 0x3F,
SH1106_DISPLAY_OFFSET, 0, 1, 0x00,
@@ -61,6 +61,16 @@ __attribute__((weak)) bool qp_sh1106_init(painter_device_t device, painter_rotat
};
// clang-format on
+ // If the display height is anything other than the default 64 pixels, change SH1106_SET_MUX_RATIO data byte to the correct value
+ if (driver->oled.base.panel_height != 64) {
+ sh1106_init_sequence[3] = driver->oled.base.panel_height - 1;
+ }
+
+ // For 128x32 or 96x16 displays, change SH1106_COM_PADS_HW_CFG data byte from alternative (0x12) to sequential (0x02) configuration
+ if (driver->oled.base.panel_height <= 32) {
+ sh1106_init_sequence[20] = 0x02;
+ }
+
qp_comms_bulk_command_sequence(device, sh1106_init_sequence, sizeof(sh1106_init_sequence));
return true;
}
@@ -203,4 +213,4 @@ painter_device_t qp_sh1106_make_i2c_device(uint16_t panel_width, uint16_t panel_
return NULL;
}
-#endif // QUANTUM_PAINTER_SH1106_SPI_ENABLE
+#endif // QUANTUM_PAINTER_SH1106_I2C_ENABLE
diff --git a/drivers/painter/sh1106/qp_sh1106_opcodes.h b/drivers/painter/sh1106/qp_sh1106_opcodes.h
index a2e100d770..bf86ba4c2c 100644
--- a/drivers/painter/sh1106/qp_sh1106_opcodes.h
+++ b/drivers/painter/sh1106/qp_sh1106_opcodes.h
@@ -16,7 +16,7 @@
#define SH1106_COM_PADS_HW_CFG 0xDA
#define SH1106_SET_CONTRAST 0x81
#define SH1106_SET_PRECHARGE_PERIOD 0xD9
-#define SH1106_VCOM_DETECT 0xDB
+#define SH1106_VCOM_DESELECT_LEVEL 0xDB
#define SH1106_ALL_ON_RESUME 0xA4
#define SH1106_NON_INVERTING_DISPLAY 0xA6
#define SH1106_DEACTIVATE_SCROLL 0x2E
diff --git a/drivers/sensors/analog_joystick.c b/drivers/sensors/analog_joystick.c
index 12256a8e7a..221625075c 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);
@@ -87,10 +128,20 @@ report_analog_joystick_t analog_joystick_read(void) {
}
void analog_joystick_init(void) {
+ setPinInputHigh(ANALOG_JOYSTICK_X_AXIS_PIN);
+ setPinInputHigh(ANALOG_JOYSTICK_Y_AXIS_PIN);
+
#ifdef ANALOG_JOYSTICK_CLICK_PIN
setPinInputHigh(ANALOG_JOYSTICK_CLICK_PIN);
#endif
// 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/azoteq_iqs5xx.c b/drivers/sensors/azoteq_iqs5xx.c
index 521f558b5f..367873eb06 100644
--- a/drivers/sensors/azoteq_iqs5xx.c
+++ b/drivers/sensors/azoteq_iqs5xx.c
@@ -107,18 +107,17 @@ static struct {
i2c_status_t azoteq_iqs5xx_wake(void) {
uint8_t data = 0;
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME, (uint8_t *)&data, sizeof(data), 1);
- i2c_stop();
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME, (uint8_t *)&data, sizeof(data), 1);
wait_us(150);
return status;
}
i2c_status_t azoteq_iqs5xx_end_session(void) {
const uint8_t END_BYTE = 1; // any data
- return i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_END_COMMS, &END_BYTE, 1, AZOTEQ_IQS5XX_TIMEOUT_MS);
+ return i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_END_COMMS, &END_BYTE, 1, AZOTEQ_IQS5XX_TIMEOUT_MS);
}
i2c_status_t azoteq_iqs5xx_get_base_data(azoteq_iqs5xx_base_data_t *base_data) {
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME, (uint8_t *)base_data, 10, AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME, (uint8_t *)base_data, 10, AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
azoteq_iqs5xx_end_session();
}
@@ -131,7 +130,7 @@ i2c_status_t azoteq_iqs5xx_get_report_rate(azoteq_iqs5xx_report_rate_t *report_r
return I2C_STATUS_ERROR;
}
uint16_t selected_reg = AZOTEQ_IQS5XX_REG_REPORT_RATE_ACTIVE + (2 * mode);
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, selected_reg, (uint8_t *)report_rate, 2, AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, selected_reg, (uint8_t *)report_rate, 2, AZOTEQ_IQS5XX_TIMEOUT_MS);
if (end_session) {
azoteq_iqs5xx_end_session();
}
@@ -147,7 +146,7 @@ i2c_status_t azoteq_iqs5xx_set_report_rate(uint16_t report_rate_ms, azoteq_iqs5x
azoteq_iqs5xx_report_rate_t report_rate = {0};
report_rate.h = (uint8_t)((report_rate_ms >> 8) & 0xFF);
report_rate.l = (uint8_t)(report_rate_ms & 0xFF);
- i2c_status_t status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, selected_reg, (uint8_t *)&report_rate, 2, AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, selected_reg, (uint8_t *)&report_rate, 2, AZOTEQ_IQS5XX_TIMEOUT_MS);
if (end_session) {
azoteq_iqs5xx_end_session();
}
@@ -156,10 +155,10 @@ i2c_status_t azoteq_iqs5xx_set_report_rate(uint16_t report_rate_ms, azoteq_iqs5x
i2c_status_t azoteq_iqs5xx_set_reati(bool enabled, bool end_session) {
azoteq_iqs5xx_system_config_0_t config = {0};
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
config.reati = enabled;
- status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ status = i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
}
if (end_session) {
azoteq_iqs5xx_end_session();
@@ -169,7 +168,7 @@ i2c_status_t azoteq_iqs5xx_set_reati(bool enabled, bool end_session) {
i2c_status_t azoteq_iqs5xx_set_event_mode(bool enabled, bool end_session) {
azoteq_iqs5xx_system_config_1_t config = {0};
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
config.event_mode = enabled;
config.touch_event = true;
@@ -179,7 +178,7 @@ i2c_status_t azoteq_iqs5xx_set_event_mode(bool enabled, bool end_session) {
config.reati_event = false;
config.alp_prox_event = false;
config.gesture_event = true;
- status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ status = i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
}
if (end_session) {
azoteq_iqs5xx_end_session();
@@ -189,7 +188,7 @@ i2c_status_t azoteq_iqs5xx_set_event_mode(bool enabled, bool end_session) {
i2c_status_t azoteq_iqs5xx_set_gesture_config(bool end_session) {
azoteq_iqs5xx_gesture_config_t config = {0};
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES, (uint8_t *)&config, sizeof(azoteq_iqs5xx_gesture_config_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES, (uint8_t *)&config, sizeof(azoteq_iqs5xx_gesture_config_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
pd_dprintf("azo scroll: %d\n", config.multi_finger_gestures.scroll);
if (status == I2C_STATUS_SUCCESS) {
config.single_finger_gestures.single_tap = AZOTEQ_IQS5XX_TAP_ENABLE;
@@ -211,7 +210,7 @@ i2c_status_t azoteq_iqs5xx_set_gesture_config(bool end_session) {
config.scroll_initial_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE);
config.zoom_initial_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_ZOOM_INITIAL_DISTANCE);
config.zoom_consecutive_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_ZOOM_CONSECUTIVE_DISTANCE);
- status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES, (uint8_t *)&config, sizeof(azoteq_iqs5xx_gesture_config_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ status = i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES, (uint8_t *)&config, sizeof(azoteq_iqs5xx_gesture_config_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
}
if (end_session) {
azoteq_iqs5xx_end_session();
@@ -221,7 +220,7 @@ i2c_status_t azoteq_iqs5xx_set_gesture_config(bool end_session) {
i2c_status_t azoteq_iqs5xx_set_xy_config(bool flip_x, bool flip_y, bool switch_xy, bool palm_reject, bool end_session) {
azoteq_iqs5xx_xy_config_0_t config = {0};
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_XY_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_xy_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_XY_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_xy_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
if (flip_x) {
config.flip_x = !config.flip_x;
@@ -233,7 +232,7 @@ i2c_status_t azoteq_iqs5xx_set_xy_config(bool flip_x, bool flip_y, bool switch_x
config.switch_xy_axis = !config.switch_xy_axis;
}
config.palm_reject = palm_reject;
- status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_XY_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_xy_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ status = i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_XY_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_xy_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
}
if (end_session) {
azoteq_iqs5xx_end_session();
@@ -243,11 +242,11 @@ i2c_status_t azoteq_iqs5xx_set_xy_config(bool flip_x, bool flip_y, bool switch_x
i2c_status_t azoteq_iqs5xx_reset_suspend(bool reset, bool suspend, bool end_session) {
azoteq_iqs5xx_system_control_1_t config = {0};
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_control_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_control_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
config.reset = reset;
config.suspend = suspend;
- status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_control_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ status = i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_control_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
}
if (end_session) {
azoteq_iqs5xx_end_session();
@@ -260,14 +259,14 @@ void azoteq_iqs5xx_set_cpi(uint16_t cpi) {
azoteq_iqs5xx_resolution_t resolution = {0};
resolution.x_resolution = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(MIN(azoteq_iqs5xx_device_resolution_t.resolution_x, AZOTEQ_IQS5XX_INCH_TO_RESOLUTION_X(cpi)));
resolution.y_resolution = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(MIN(azoteq_iqs5xx_device_resolution_t.resolution_y, AZOTEQ_IQS5XX_INCH_TO_RESOLUTION_Y(cpi)));
- i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_X_RESOLUTION, (uint8_t *)&resolution, sizeof(azoteq_iqs5xx_resolution_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_write_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_X_RESOLUTION, (uint8_t *)&resolution, sizeof(azoteq_iqs5xx_resolution_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
}
}
uint16_t azoteq_iqs5xx_get_cpi(void) {
if (azoteq_iqs5xx_product_number != AZOTEQ_IQS5XX_UNKNOWN) {
azoteq_iqs5xx_resolution_t resolution = {0};
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_X_RESOLUTION, (uint8_t *)&resolution, sizeof(azoteq_iqs5xx_resolution_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_X_RESOLUTION, (uint8_t *)&resolution, sizeof(azoteq_iqs5xx_resolution_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
return AZOTEQ_IQS5XX_RESOLUTION_X_TO_INCH(AZOTEQ_IQS5XX_SWAP_H_L_BYTES(resolution.x_resolution));
}
@@ -276,7 +275,7 @@ uint16_t azoteq_iqs5xx_get_cpi(void) {
}
uint16_t azoteq_iqs5xx_get_product(void) {
- i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PRODUCT_NUMBER, (uint8_t *)&azoteq_iqs5xx_product_number, sizeof(uint16_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
+ i2c_status_t status = i2c_read_register16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PRODUCT_NUMBER, (uint8_t *)&azoteq_iqs5xx_product_number, sizeof(uint16_t), AZOTEQ_IQS5XX_TIMEOUT_MS);
if (status == I2C_STATUS_SUCCESS) {
azoteq_iqs5xx_product_number = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(azoteq_iqs5xx_product_number);
}
diff --git a/drivers/sensors/cirque_pinnacle.c b/drivers/sensors/cirque_pinnacle.c
index 3131805c20..9afc9df804 100644
--- a/drivers/sensors/cirque_pinnacle.c
+++ b/drivers/sensors/cirque_pinnacle.c
@@ -216,6 +216,20 @@ void cirque_pinnacle_cursor_smoothing(bool enable) {
RAP_Write(HOSTREG__FEEDCONFIG3, feedconfig3);
}
+// Check sensor is connected
+bool cirque_pinnacle_connected(void) {
+ uint8_t current_zidle = 0;
+ uint8_t temp_zidle = 0;
+ RAP_ReadBytes(HOSTREG__ZIDLE, &current_zidle, 1);
+ RAP_Write(HOSTREG__ZIDLE, HOSTREG__ZIDLE_DEFVAL);
+ RAP_ReadBytes(HOSTREG__ZIDLE, &temp_zidle, 1);
+ if (temp_zidle == HOSTREG__ZIDLE_DEFVAL) {
+ RAP_Write(HOSTREG__ZIDLE, current_zidle);
+ return true;
+ }
+ return false;
+}
+
/* Pinnacle-based TM040040/TM035035/TM023023 Functions */
void cirque_pinnacle_init(void) {
#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
@@ -274,6 +288,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) {
@@ -320,6 +338,15 @@ pinnacle_data_t cirque_pinnacle_read_data(void) {
result.wheelCount = ((int8_t*)data)[3];
#endif
+#ifdef CIRQUE_PINNACLE_REACHABLE_CALIBRATION
+ static uint16_t xMin = UINT16_MAX, yMin = UINT16_MAX, yMax = 0, xMax = 0;
+ if (result.xValue < xMin) xMin = result.xValue;
+ if (result.xValue > xMax) xMax = result.xValue;
+ if (result.yValue < yMin) yMin = result.yValue;
+ if (result.yValue > yMax) yMax = result.yValue;
+ pd_dprintf("%s: xLo=%3d xHi=%3d yLo=%3d yHi=%3d\n", __FUNCTION__, xMin, xMax, yMin, yMax);
+#endif
+
result.valid = true;
return result;
}
diff --git a/drivers/sensors/cirque_pinnacle_i2c.c b/drivers/sensors/cirque_pinnacle_i2c.c
index 3c11e5f079..a3622e9d60 100644
--- a/drivers/sensors/cirque_pinnacle_i2c.c
+++ b/drivers/sensors/cirque_pinnacle_i2c.c
@@ -14,12 +14,11 @@ extern bool touchpad_init;
void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
uint8_t cmdByte = READ_MASK | address; // Form the READ command byte
if (touchpad_init) {
- i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
- if (i2c_readReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
- pd_dprintf("error cirque_pinnacle i2c_readReg\n");
+ i2c_write_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
+ if (i2c_read_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
+ pd_dprintf("error cirque_pinnacle i2c_read_register\n");
touchpad_init = false;
}
- i2c_stop();
}
}
@@ -28,10 +27,9 @@ void RAP_Write(uint8_t address, uint8_t data) {
uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte
if (touchpad_init) {
- if (i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
- pd_dprintf("error cirque_pinnacle i2c_writeReg\n");
+ if (i2c_write_register(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
+ pd_dprintf("error cirque_pinnacle i2c_write_register\n");
touchpad_init = false;
}
- i2c_stop();
}
}
diff --git a/drivers/sensors/pimoroni_trackball.c b/drivers/sensors/pimoroni_trackball.c
index 326e59744f..9c6d26d73d 100644
--- a/drivers/sensors/pimoroni_trackball.c
+++ b/drivers/sensors/pimoroni_trackball.c
@@ -56,13 +56,13 @@ void pimoroni_trackball_set_cpi(uint16_t cpi) {
void pimoroni_trackball_set_rgbw(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
uint8_t data[4] = {r, g, b, w};
- __attribute__((unused)) i2c_status_t status = i2c_writeReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LED_RED, data, sizeof(data), PIMORONI_TRACKBALL_TIMEOUT);
+ __attribute__((unused)) i2c_status_t status = i2c_write_register(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LED_RED, data, sizeof(data), PIMORONI_TRACKBALL_TIMEOUT);
pd_dprintf("Trackball RGBW i2c_status_t: %d\n", status);
}
i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data) {
- i2c_status_t status = i2c_readReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LEFT, (uint8_t*)data, sizeof(*data), PIMORONI_TRACKBALL_TIMEOUT);
+ i2c_status_t status = i2c_read_register(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LEFT, (uint8_t*)data, sizeof(*data), PIMORONI_TRACKBALL_TIMEOUT);
#ifdef POINTING_DEVICE_DEBUG
static uint16_t d_timer;
diff --git a/drivers/ws2812.h b/drivers/ws2812.h
index 1527df23d3..134de51c50 100644
--- a/drivers/ws2812.h
+++ b/drivers/ws2812.h
@@ -56,9 +56,9 @@
# define WS2812_TRST_US 280
#endif
-#if defined(RGBLED_NUM)
-# define WS2812_LED_COUNT RGBLED_NUM
-#elif defined(RGB_MATRIX_LED_COUNT)
+#if defined(RGBLIGHT_WS2812)
+# define WS2812_LED_COUNT RGBLIGHT_LED_COUNT
+#elif defined(RGB_MATRIX_WS2812)
# define WS2812_LED_COUNT RGB_MATRIX_LED_COUNT
#endif
diff --git a/keyboards/0xcb/splaytoraid/config.h b/keyboards/0xcb/splaytoraid/config.h
deleted file mode 100644
index 00674eea11..0000000000
--- a/keyboards/0xcb/splaytoraid/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2023 Conor Burns (@Conor-Burns)
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 18
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING
-#define RGB_MATRIX_DEFAULT_HUE 152
-#define RGB_MATRIX_DEFAULT_SAT 232
-#define RGB_MATRIX_DEFAULT_SPD 50
-
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_SOLID_COLOR
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
diff --git a/keyboards/0xcb/splaytoraid/info.json b/keyboards/0xcb/splaytoraid/info.json
index c218d1ff78..1d47f7d77c 100644
--- a/keyboards/0xcb/splaytoraid/info.json
+++ b/keyboards/0xcb/splaytoraid/info.json
@@ -36,6 +36,20 @@
]
},
"rgb_matrix": {
+ "animations": {
+ "breathing": true,
+ "band_sat": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "raindrops": true,
+ "cycle_left_right": true
+ },
+ "default": {
+ "animation": "breathing",
+ "hue": 152,
+ "sat": 232,
+ "speed": 50
+ },
"driver": "ws2812",
"layout": [
{"flags": 4, "matrix": [0, 2], "x": 0, "y": 0},
@@ -56,7 +70,8 @@
{"flags": 4, "matrix": [7, 5], "x": 122, "y": 64},
{"flags": 4, "matrix": [1, 5], "x": 142, "y": 64},
{"flags": 4, "matrix": [0, 3], "x": 163, "y": 64}
- ]
+ ],
+ "max_brightness": 200
},
"ws2812": {
"pin": "D0"
diff --git a/keyboards/0xcb/splaytoraid/rp2040_ce/config.h b/keyboards/0xcb/splaytoraid/rp2040_ce/config.h
deleted file mode 100644
index 65bb22450e..0000000000
--- a/keyboards/0xcb/splaytoraid/rp2040_ce/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2023 Conor Burns (@Conor-Burns)
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-
-#pragma once
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/0xcb/splaytoraid/rp2040_ce/info.json b/keyboards/0xcb/splaytoraid/rp2040_ce/info.json
index 9f0eb51118..49256b6482 100644
--- a/keyboards/0xcb/splaytoraid/rp2040_ce/info.json
+++ b/keyboards/0xcb/splaytoraid/rp2040_ce/info.json
@@ -1,4 +1,25 @@
{
+ "rgb_matrix": {
+ "animations": {
+ "cycle_up_down": true,
+ "jellybean_raindrops": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "pixel_fractal": true,
+ "rainbow_moving_chevron": true,
+ "cycle_pinwheel": true,
+ "pixel_rain": true,
+ "dual_beacon": true,
+ "hue_breathing": true,
+ "typing_heatmap": true,
+ "digital_rain": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true
+ }
+ },
"ws2812": {
"driver": "vendor"
}
diff --git a/keyboards/1k/keymaps/default/rgblite.h b/keyboards/1k/keymaps/default/rgblite.h
index 29d684ac08..9a7761e30d 100644
--- a/keyboards/1k/keymaps/default/rgblite.h
+++ b/keyboards/1k/keymaps/default/rgblite.h
@@ -7,8 +7,8 @@
#include "color.h"
static inline void rgblite_setrgb(RGB rgb) {
- rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
- ws2812_setleds(leds, RGBLED_NUM);
+ rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
+ ws2812_setleds(leds, RGBLIGHT_LED_COUNT);
}
static void rgblite_increase_hue(void) {
diff --git a/keyboards/1upkeyboards/1upocarina/config.h b/keyboards/1upkeyboards/1upocarina/config.h
deleted file mode 100644
index 4431ef6bdb..0000000000
--- a/keyboards/1upkeyboards/1upocarina/config.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright 2023 Ziptyze
- *
- * 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 RGB_MATRIX_LED_COUNT 32
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/1upkeyboards/1upocarina/info.json b/keyboards/1upkeyboards/1upocarina/info.json
index c6a3718082..008896d40e 100644
--- a/keyboards/1upkeyboards/1upocarina/info.json
+++ b/keyboards/1upkeyboards/1upocarina/info.json
@@ -41,6 +41,45 @@
"pin": "GP24"
},
"rgb_matrix": {
+ "animations": {
+ "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,
+ "typing_heatmap": 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": [
{ "flags": 4, "matrix": [0, 0], "x": 23, "y": 26 },
@@ -81,7 +120,8 @@
{ "flags": 2, "x": 70, "y": 3 },
{ "flags": 2, "x": 91, "y": 3 }
- ]
+ ],
+ "sleep": true
},
"layouts": {
"LAYOUT_1x5": {
diff --git a/keyboards/1upkeyboards/1upslider8/config.h b/keyboards/1upkeyboards/1upslider8/config.h
index 059d16f3fa..d65fa3daab 100644
--- a/keyboards/1upkeyboards/1upslider8/config.h
+++ b/keyboards/1upkeyboards/1upslider8/config.h
@@ -22,8 +22,3 @@
#define SLIDER_PIN GP28
#define MIDI_ADVANCED
-
-#define RGB_MATRIX_LED_COUNT 8
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/1upkeyboards/1upslider8/info.json b/keyboards/1upkeyboards/1upslider8/info.json
index f2fe651060..6b65361f67 100644
--- a/keyboards/1upkeyboards/1upslider8/info.json
+++ b/keyboards/1upkeyboards/1upslider8/info.json
@@ -95,7 +95,8 @@
{ "flags": 4, "matrix": [0, 6], "x": 84, "y": 48 },
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 48 },
{ "flags": 4, "matrix": [0, 8], "x": 196, "y": 48 }
- ]
+ ],
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/1upkeyboards/1upsuper16v3/config.h b/keyboards/1upkeyboards/1upsuper16v3/config.h
deleted file mode 100644
index 41e1679d48..0000000000
--- a/keyboards/1upkeyboards/1upsuper16v3/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2023 ziptyze
- *
- * 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 RGB_MATRIX_LED_COUNT 48
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/1upkeyboards/1upsuper16v3/info.json b/keyboards/1upkeyboards/1upsuper16v3/info.json
index b11654a942..7ef33a0342 100644
--- a/keyboards/1upkeyboards/1upsuper16v3/info.json
+++ b/keyboards/1upkeyboards/1upsuper16v3/info.json
@@ -127,7 +127,8 @@
{"x": 182, "y": 1, "flags": 2},
{"x": 154, "y": 1, "flags": 2},
{"x": 126, "y": 1, "flags": 2}
- ]
+ ],
+ "sleep": true
},
"usb": {
"device_version": "1.0.0",
diff --git a/keyboards/1upkeyboards/pi40/config.h b/keyboards/1upkeyboards/pi40/config.h
index 361982d153..c93b70f120 100644
--- a/keyboards/1upkeyboards/pi40/config.h
+++ b/keyboards/1upkeyboards/pi40/config.h
@@ -10,61 +10,6 @@
#define OLED_BRIGHTNESS 128
#define OLED_FONT_H "keyboards/1upkeyboards/pi40/lib/glcdfont.c"
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/pi40/grid_v1_1/config.h b/keyboards/1upkeyboards/pi40/grid_v1_1/config.h
deleted file mode 100644
index 00ed9f3196..0000000000
--- a/keyboards/1upkeyboards/pi40/grid_v1_1/config.h
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright 2022 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 48 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/info.json b/keyboards/1upkeyboards/pi40/info.json
new file mode 100644
index 0000000000..135c32dede
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/info.json
@@ -0,0 +1,51 @@
+{
+ "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
+ },
+ "max_brightness": 150,
+ "sleep": true
+ }
+}
diff --git a/keyboards/1upkeyboards/pi40/mit_v1_0/config.h b/keyboards/1upkeyboards/pi40/mit_v1_0/config.h
deleted file mode 100644
index a4d7d0e39a..0000000000
--- a/keyboards/1upkeyboards/pi40/mit_v1_0/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-// Copyright 2022 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#define RGB_MATRIX_LED_COUNT 47 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/mit_v1_1/config.h b/keyboards/1upkeyboards/pi40/mit_v1_1/config.h
deleted file mode 100644
index a4d7d0e39a..0000000000
--- a/keyboards/1upkeyboards/pi40/mit_v1_1/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-// Copyright 2022 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#define RGB_MATRIX_LED_COUNT 47 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi50/config.h b/keyboards/1upkeyboards/pi50/config.h
index 4c17e6a4f0..ffdba3bd1f 100644
--- a/keyboards/1upkeyboards/pi50/config.h
+++ b/keyboards/1upkeyboards/pi50/config.h
@@ -9,10 +9,6 @@
#define OLED_BRIGHTNESS 128
#define OLED_FONT_H "keyboards/1upkeyboards/pi50/lib/glcdfont.c"
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/pi50/grid/config.h b/keyboards/1upkeyboards/pi50/grid/config.h
deleted file mode 100644
index 0bb970a3f2..0000000000
--- a/keyboards/1upkeyboards/pi50/grid/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-// Copyright 2023 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#define RGB_MATRIX_LED_COUNT 60 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi50/info.json b/keyboards/1upkeyboards/pi50/info.json
index 17345284ca..2a4fdef384 100644
--- a/keyboards/1upkeyboards/pi50/info.json
+++ b/keyboards/1upkeyboards/pi50/info.json
@@ -41,7 +41,6 @@
"driver": "ws2812",
"max_brightness": 150,
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
@@ -85,7 +84,8 @@
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
- }
+ },
+ "sleep": true
},
"ws2812": {
"pin": "GP0",
diff --git a/keyboards/1upkeyboards/pi50/mit/config.h b/keyboards/1upkeyboards/pi50/mit/config.h
deleted file mode 100644
index 39a6d35c05..0000000000
--- a/keyboards/1upkeyboards/pi50/mit/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-// Copyright 2023 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#define RGB_MATRIX_LED_COUNT 59 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi60/config.h b/keyboards/1upkeyboards/pi60/config.h
index 6bbbb2293c..a697e565c9 100644
--- a/keyboards/1upkeyboards/pi60/config.h
+++ b/keyboards/1upkeyboards/pi60/config.h
@@ -3,60 +3,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 21
-//#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-//#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-//# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-//# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-//# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-//# define ENABLE_RGB_MATRIX_SPLASH
-//# define ENABLE_RGB_MATRIX_MULTISPLASH
-//# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-//# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/pi60/info.json b/keyboards/1upkeyboards/pi60/info.json
index 4d0d21ea25..06abb1a4a6 100644
--- a/keyboards/1upkeyboards/pi60/info.json
+++ b/keyboards/1upkeyboards/pi60/info.json
@@ -44,6 +44,35 @@
]
},
"rgb_matrix": {
+ "animations": {
+ "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
+ },
"driver": "ws2812",
"layout": [
{"flags": 2, "x": 17, "y": 50},
@@ -67,7 +96,8 @@
{"flags": 2, "x": 71, "y": 13},
{"flags": 2, "x": 54, "y": 13},
{"flags": 2, "x": 20, "y": 13}
- ]
+ ],
+ "sleep": true
},
"community_layouts": [
"60_ansi",
diff --git a/keyboards/1upkeyboards/pi60_hse/config.h b/keyboards/1upkeyboards/pi60_hse/config.h
index b7c4d5e8bc..2c04274299 100644
--- a/keyboards/1upkeyboards/pi60_hse/config.h
+++ b/keyboards/1upkeyboards/pi60_hse/config.h
@@ -3,59 +3,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 16
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/pi60_hse/info.json b/keyboards/1upkeyboards/pi60_hse/info.json
index 5b3e6b35e5..6b1fcdda41 100644
--- a/keyboards/1upkeyboards/pi60_hse/info.json
+++ b/keyboards/1upkeyboards/pi60_hse/info.json
@@ -35,6 +35,51 @@
"rows": ["GP4", "GP3", "GP2", "GP1", "GP0", "GP21"]
},
"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": [
{"flags": 2, "x": 98, "y": 51},
@@ -53,7 +98,8 @@
{"flags": 2, "x": 183, "y": 51},
{"flags": 2, "x": 157, "y": 51},
{"flags": 2, "x": 126, "y": 51}
- ]
+ ],
+ "sleep": true
},
"community_layouts": [
"60_ansi_split_bs_rshift"
diff --git a/keyboards/1upkeyboards/pi60_rgb/config.h b/keyboards/1upkeyboards/pi60_rgb/config.h
index b0747bd56d..2c04274299 100644
--- a/keyboards/1upkeyboards/pi60_rgb/config.h
+++ b/keyboards/1upkeyboards/pi60_rgb/config.h
@@ -3,61 +3,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 61
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 125
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/pi60_rgb/info.json b/keyboards/1upkeyboards/pi60_rgb/info.json
index 68634f4da1..044e0e3b4b 100644
--- a/keyboards/1upkeyboards/pi60_rgb/info.json
+++ b/keyboards/1upkeyboards/pi60_rgb/info.json
@@ -38,6 +38,51 @@
"enabled": true
},
"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": [
{"flags": 1, "matrix": [5, 5], "x": 103, "y": 58},
@@ -101,7 +146,9 @@
{"flags": 4, "matrix": [0, 11], "x": 172, "y": 7},
{"flags": 4, "matrix": [0, 12], "x": 187, "y": 7},
{"flags": 1, "matrix": [0, 13], "x": 209, "y": 7}
- ]
+ ],
+ "max_brightness": 125,
+ "sleep": true
},
"layouts": {
"LAYOUT_60_ansi": {
diff --git a/keyboards/1upkeyboards/super16/config.h b/keyboards/1upkeyboards/super16/config.h
index 7a5c6e0e83..043d8b154b 100644
--- a/keyboards/1upkeyboards/super16/config.h
+++ b/keyboards/1upkeyboards/super16/config.h
@@ -17,61 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-# define RGB_MATRIX_LED_COUNT 16
-# ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS // reacts to keyreleases (instead of keypresses)
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/1upkeyboards/super16/info.json b/keyboards/1upkeyboards/super16/info.json
index 6d63921f1b..81b28c6655 100644
--- a/keyboards/1upkeyboards/super16/info.json
+++ b/keyboards/1upkeyboards/super16/info.json
@@ -30,6 +30,51 @@
}
},
"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"
},
"matrix_pins": {
diff --git a/keyboards/1upkeyboards/super16v2/config.h b/keyboards/1upkeyboards/super16v2/config.h
index 73d8badc5e..67af6d7cab 100644
--- a/keyboards/1upkeyboards/super16v2/config.h
+++ b/keyboards/1upkeyboards/super16v2/config.h
@@ -16,64 +16,8 @@
#pragma once
-
#define MOUSEKEY_MOVE_DELTA 25
-#define RGB_MATRIX_LED_COUNT 20
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-//# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-//# define ENABLE_RGB_MATRIX_MULTISPLASH
-//# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-//# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/super16v2/info.json b/keyboards/1upkeyboards/super16v2/info.json
index c4bdc441ee..20a06f4c5e 100644
--- a/keyboards/1upkeyboards/super16v2/info.json
+++ b/keyboards/1upkeyboards/super16v2/info.json
@@ -12,7 +12,42 @@
"pin": "B5"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animmations": {
+ "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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "splash": true
+ },
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["D5", "D6", "C2", "D0"],
diff --git a/keyboards/1upkeyboards/sweet16v2/kb2040/config.h b/keyboards/1upkeyboards/sweet16v2/kb2040/config.h
index e4609962f1..39e43b90cd 100644
--- a/keyboards/1upkeyboards/sweet16v2/kb2040/config.h
+++ b/keyboards/1upkeyboards/sweet16v2/kb2040/config.h
@@ -16,59 +16,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 20
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/sweet16v2/kb2040/info.json b/keyboards/1upkeyboards/sweet16v2/kb2040/info.json
index 928c8106bf..40f96fb736 100644
--- a/keyboards/1upkeyboards/sweet16v2/kb2040/info.json
+++ b/keyboards/1upkeyboards/sweet16v2/kb2040/info.json
@@ -44,6 +44,51 @@
]
},
"rgb_matrix": {
+ "animmations": {
+ "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": [
{"flags": 4, "matrix": [0, 0], "x": 28, "y": 12},
@@ -66,7 +111,8 @@
{"flags": 4, "matrix": [3, 1], "x": 84, "y": 60},
{"flags": 2, "x": 28, "y": 47},
{"flags": 4, "matrix": [3, 0], "x": 28, "y": 60}
- ]
+ ],
+ "sleep": true
},
"community_layouts": [
"ortho_4x4"
diff --git a/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h b/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h
index e4609962f1..39e43b90cd 100644
--- a/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h
+++ b/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h
@@ -16,59 +16,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 20
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json b/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json
index 87f2f3574c..31805fc967 100644
--- a/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json
+++ b/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json
@@ -42,6 +42,51 @@
]
},
"rgb_matrix": {
+ "animmations": {
+ "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": [
{"flags": 4, "matrix": [0, 0], "x": 28, "y": 12},
@@ -64,7 +109,8 @@
{"flags": 4, "matrix": [3, 1], "x": 84, "y": 60},
{"flags": 2, "x": 28, "y": 47},
{"flags": 4, "matrix": [3, 0], "x": 28, "y": 60}
- ]
+ ],
+ "sleep": true
},
"community_layouts": [
"ortho_4x4"
diff --git a/keyboards/25keys/zinc/rev1/post_config.h b/keyboards/25keys/zinc/rev1/post_config.h
index 3d51de9e4c..42d2d7e46c 100644
--- a/keyboards/25keys/zinc/rev1/post_config.h
+++ b/keyboards/25keys/zinc/rev1/post_config.h
@@ -24,35 +24,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SPLIT
#ifdef RGBLED_BACK
#ifdef RGBLED_CONT
- #define RGBLED_NUM 48
+ #define RGBLIGHT_LED_COUNT 48
#define RGBLED_SPLIT { 24, 24 }
#else
- #define RGBLED_NUM 24
+ #define RGBLIGHT_LED_COUNT 24
#endif
#else
#ifdef RGBLED_BOTH
#ifdef RGBLED_CONT
- #define RGBLED_NUM 60
+ #define RGBLIGHT_LED_COUNT 60
#define RGBLED_SPLIT { 30, 30 }
#else
- #define RGBLED_NUM 30
+ #define RGBLIGHT_LED_COUNT 30
#endif
#else
#ifdef RGBLED_CONT
- #define RGBLED_NUM 12
+ #define RGBLIGHT_LED_COUNT 12
#define RGBLED_SPLIT { 6, 6 }
#else
- #define RGBLED_NUM 6
+ #define RGBLIGHT_LED_COUNT 6
#endif
#endif
#endif
#endif
#ifndef IOS_DEVICE_ENABLE
- #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12))
+ #if (RGBLIGHT_LED_COUNT <= 6) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 12))
#define RGBLIGHT_LIMIT_VAL 255
#else
- #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32))
+ #if (RGBLIGHT_LED_COUNT <= 16) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 32))
#define RGBLIGHT_LIMIT_VAL 130
#else
#define RGBLIGHT_LIMIT_VAL 120
@@ -60,10 +60,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define RGBLIGHT_VAL_STEP 17
#else
- #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12))
+ #if (RGBLIGHT_LED_COUNT <= 6) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 12))
#define RGBLIGHT_LIMIT_VAL 90
#else
- #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32))
+ #if (RGBLIGHT_LED_COUNT <= 16) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 32))
#define RGBLIGHT_LIMIT_VAL 45
#else
#define RGBLIGHT_LIMIT_VAL 35
diff --git a/keyboards/25keys/zinc/reva/post_config.h b/keyboards/25keys/zinc/reva/post_config.h
index 3d51de9e4c..42d2d7e46c 100644
--- a/keyboards/25keys/zinc/reva/post_config.h
+++ b/keyboards/25keys/zinc/reva/post_config.h
@@ -24,35 +24,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SPLIT
#ifdef RGBLED_BACK
#ifdef RGBLED_CONT
- #define RGBLED_NUM 48
+ #define RGBLIGHT_LED_COUNT 48
#define RGBLED_SPLIT { 24, 24 }
#else
- #define RGBLED_NUM 24
+ #define RGBLIGHT_LED_COUNT 24
#endif
#else
#ifdef RGBLED_BOTH
#ifdef RGBLED_CONT
- #define RGBLED_NUM 60
+ #define RGBLIGHT_LED_COUNT 60
#define RGBLED_SPLIT { 30, 30 }
#else
- #define RGBLED_NUM 30
+ #define RGBLIGHT_LED_COUNT 30
#endif
#else
#ifdef RGBLED_CONT
- #define RGBLED_NUM 12
+ #define RGBLIGHT_LED_COUNT 12
#define RGBLED_SPLIT { 6, 6 }
#else
- #define RGBLED_NUM 6
+ #define RGBLIGHT_LED_COUNT 6
#endif
#endif
#endif
#endif
#ifndef IOS_DEVICE_ENABLE
- #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12))
+ #if (RGBLIGHT_LED_COUNT <= 6) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 12))
#define RGBLIGHT_LIMIT_VAL 255
#else
- #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32))
+ #if (RGBLIGHT_LED_COUNT <= 16) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 32))
#define RGBLIGHT_LIMIT_VAL 130
#else
#define RGBLIGHT_LIMIT_VAL 120
@@ -60,10 +60,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define RGBLIGHT_VAL_STEP 17
#else
- #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12))
+ #if (RGBLIGHT_LED_COUNT <= 6) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 12))
#define RGBLIGHT_LIMIT_VAL 90
#else
- #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32))
+ #if (RGBLIGHT_LED_COUNT <= 16) || (defined(RGBLED_CONT) && (RGBLIGHT_LED_COUNT <= 32))
#define RGBLIGHT_LIMIT_VAL 45
#else
#define RGBLIGHT_LIMIT_VAL 35
diff --git a/keyboards/3keyecosystem/2key2/2key2.c b/keyboards/3keyecosystem/2key2/2key2.c
deleted file mode 100644
index 11f4b8b217..0000000000
--- a/keyboards/3keyecosystem/2key2/2key2.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-Copyright 2021 John Mueller
-
-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 "quantum.h"
-
-// RGB Matrix configuration
-// based on https://docs.qmk.fm/#/feature_rgb_matrix?id=common-configuration
-
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
- // Key Matrix to LED Index
- { 0, 1 }
-}, {
- // LED Index to Physical Position
- // Using range { 0..224, 0..64 }
- { 0, 32 }, { 224, 32 }
-}, {
- // LED Index to Flag
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=flags
- LED_FLAG_ALL, LED_FLAG_ALL
-} };
-#endif
diff --git a/keyboards/3keyecosystem/2key2/config.h b/keyboards/3keyecosystem/2key2/config.h
deleted file mode 100644
index 49bd09eb7e..0000000000
--- a/keyboards/3keyecosystem/2key2/config.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright 2021 John Mueller
-
-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
-
-/* RGB matrix key backlighting */
-#define RGB_MATRIX_LED_COUNT 2
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE
-#define RGB_MATRIX_DEFAULT_HUE 90
-#define RGB_MATRIX_DEFAULT_SPD 20
-#define RGB_MATRIX_DEFAULT_VAL 128
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/3keyecosystem/2key2/info.json b/keyboards/3keyecosystem/2key2/info.json
index 35cc3ee3c4..129662175c 100644
--- a/keyboards/3keyecosystem/2key2/info.json
+++ b/keyboards/3keyecosystem/2key2/info.json
@@ -9,8 +9,64 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "solid_reactive",
+ "hue": 90,
+ "speed": 20,
+ "val": 128
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 32, "flags": 255},
+ {"matrix": [0, 1], "x": 224, "y": 32, "flags": 255}
+ ],
+ "sleep": true
},
+
"matrix_pins": {
"cols": ["F4", "D7"],
"rows": ["F6"]
diff --git a/keyboards/3w6/rev1/matrix.c b/keyboards/3w6/rev1/matrix.c
index 8bb6c77aaa..aa3e43fbe0 100644
--- a/keyboards/3w6/rev1/matrix.c
+++ b/keyboards/3w6/rev1/matrix.c
@@ -70,7 +70,7 @@ uint8_t init_tca9555(void) {
// This means: we will write on pins 0 to 2 on port 1. read rest
0b11111000,
};
- tca9555_status = i2c_writeReg(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT);
+ tca9555_status = i2c_write_register(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT);
return tca9555_status;
}
@@ -189,7 +189,7 @@ static matrix_row_t read_cols(uint8_t row) {
} else {
uint8_t data = 0;
uint8_t ports[2] = {0};
- tca9555_status = i2c_readReg(I2C_ADDR, IREGP0, ports, 2, I2C_TIMEOUT);
+ tca9555_status = i2c_read_register(I2C_ADDR, IREGP0, ports, 2, I2C_TIMEOUT);
if (tca9555_status) { // if there was an error
// do nothing
return 0;
@@ -252,7 +252,7 @@ static void select_row(uint8_t row) {
}
uint8_t ports[2] = {port0, port1};
- tca9555_status = i2c_writeReg(I2C_ADDR, OREGP0, ports, 2, I2C_TIMEOUT);
+ tca9555_status = i2c_write_register(I2C_ADDR, OREGP0, ports, 2, I2C_TIMEOUT);
// Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one.
// Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus.
}
diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c
index a6661cdc07..0db58bfabd 100644
--- a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c
+++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c
@@ -38,7 +38,7 @@ static uint16_t i2c_timeout_timer;
void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) {
uint8_t data[] = {0x00, red, green, blue, white};
- i2c_transmit(TRACKBALL_WRITE, data, sizeof(data), I2C_TIMEOUT);
+ i2c_transmit(TRACKBALL_ADDRESS, data, sizeof(data), I2C_TIMEOUT);
}
int16_t mouse_offset(uint8_t positive, uint8_t negative, int16_t scale) {
@@ -120,7 +120,7 @@ bool pointing_device_task(void) {
static uint16_t debounce_timer;
uint8_t state[5] = {};
if (timer_elapsed(i2c_timeout_timer) > I2C_WAITCHECK) {
- if (i2c_readReg(TRACKBALL_WRITE, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) {
+ if (i2c_read_register(TRACKBALL_ADDRESS, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) {
if (!state[4] && !debounce) {
if (scrolling) {
#ifdef PIMORONI_TRACKBALL_INVERT_X
diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h
index cfcd5a47a1..ca2559bec7 100644
--- a/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h
+++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h
@@ -20,10 +20,8 @@
#include "pointing_device.h"
#ifndef TRACKBALL_ADDRESS
-# define TRACKBALL_ADDRESS 0x0A
+# define TRACKBALL_ADDRESS (0x0A << 1)
#endif
-#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE)
-#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ)
void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
void trackball_check_click(bool pressed, report_mouse_t *mouse);
diff --git a/keyboards/3w6/rev2/matrix.c b/keyboards/3w6/rev2/matrix.c
index 49cb09a9f8..da7a5344e5 100644
--- a/keyboards/3w6/rev2/matrix.c
+++ b/keyboards/3w6/rev2/matrix.c
@@ -70,7 +70,7 @@ uint8_t init_tca9555(void) {
// This means: we will write on pins 0 to 3 on port 1. read rest
0b11110000,
};
- tca9555_status = i2c_writeReg(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT);
+ tca9555_status = i2c_write_register(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT);
return tca9555_status;
}
@@ -189,7 +189,7 @@ static matrix_row_t read_cols(uint8_t row) {
} else {
uint8_t data = 0;
uint8_t port0 = 0;
- tca9555_status = i2c_readReg(I2C_ADDR, IREGP0, &port0, 1, I2C_TIMEOUT);
+ tca9555_status = i2c_read_register(I2C_ADDR, IREGP0, &port0, 1, I2C_TIMEOUT);
if (tca9555_status) { // if there was an error
// do nothing
return 0;
@@ -250,7 +250,7 @@ static void select_row(uint8_t row) {
default: break;
}
- tca9555_status = i2c_writeReg(I2C_ADDR, OREGP1, &port1, 1, I2C_TIMEOUT);
+ tca9555_status = i2c_write_register(I2C_ADDR, OREGP1, &port1, 1, I2C_TIMEOUT);
// Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one.
// Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus.
}
diff --git a/keyboards/40percentclub/ut47/matrix.c b/keyboards/40percentclub/ut47/matrix.c
index 97922e2dbe..02ed88b709 100644
--- a/keyboards/40percentclub/ut47/matrix.c
+++ b/keyboards/40percentclub/ut47/matrix.c
@@ -76,7 +76,7 @@ uint8_t matrix_scan(void)
if (matrix_debouncing[i] != cols) {
matrix_debouncing[i] = cols;
if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
+ dprintf("bounce!: %02X\n", debouncing);
}
debouncing = DEBOUNCE;
}
diff --git a/keyboards/4pplet/perk60_iso/rev_a/config.h b/keyboards/4pplet/perk60_iso/rev_a/config.h
index efad0a1718..e45200d734 100644
--- a/keyboards/4pplet/perk60_iso/rev_a/config.h
+++ b/keyboards/4pplet/perk60_iso/rev_a/config.h
@@ -22,38 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-#define RGB_MATRIX_LED_COUNT 62
#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-
+#define RGB_MATRIX_LED_COUNT 62
diff --git a/keyboards/4pplet/perk60_iso/rev_a/info.json b/keyboards/4pplet/perk60_iso/rev_a/info.json
index 527f3d5772..06b16d1900 100644
--- a/keyboards/4pplet/perk60_iso/rev_a/info.json
+++ b/keyboards/4pplet/perk60_iso/rev_a/info.json
@@ -9,6 +9,35 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "splash": true,
+ "solid_splash": true
+ },
+ "default": {
+ "val": 80
+ },
"driver": "is31fl3733"
},
"matrix_pins": {
diff --git a/keyboards/4pplet/perk60_iso/rev_a/rev_a.c b/keyboards/4pplet/perk60_iso/rev_a/rev_a.c
index e3b8d71a90..55af271f3b 100644
--- a/keyboards/4pplet/perk60_iso/rev_a/rev_a.c
+++ b/keyboards/4pplet/perk60_iso/rev_a/rev_a.c
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "rev_a.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, K_2, J_2, L_2 }, //D402
{ 0, K_3, J_3, L_3 }, //D403
{ 0, K_4, J_4, L_4 }, //D404
diff --git a/keyboards/7c8/framework/rules.mk b/keyboards/7c8/framework/rules.mk
index 8e856a5336..a9d41f8eff 100644
--- a/keyboards/7c8/framework/rules.mk
+++ b/keyboards/7c8/framework/rules.mk
@@ -11,6 +11,5 @@ BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
AUDIO_ENABLE = no
FAUXCLICKY_ENABLE = no
-LAYOUTS_HAS_RGB = no
ENCODER_ENABLE = yes
LEADER_ENABLE = yes
diff --git a/keyboards/abatskeyboardclub/nayeon/config.h b/keyboards/abatskeyboardclub/nayeon/config.h
deleted file mode 100644
index 7fedf4dce1..0000000000
--- a/keyboards/abatskeyboardclub/nayeon/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2022 Ramon Imbao
-
-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
-
-
-/* RGB Matrix setup */
-#define RGB_MATRIX_LED_COUNT 2
-#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
diff --git a/keyboards/abatskeyboardclub/nayeon/info.json b/keyboards/abatskeyboardclub/nayeon/info.json
index 7a3b650ff1..a3fac207f4 100644
--- a/keyboards/abatskeyboardclub/nayeon/info.json
+++ b/keyboards/abatskeyboardclub/nayeon/info.json
@@ -13,7 +13,8 @@
"extrakey": true,
"console": false,
"command": false,
- "nkro": false
+ "nkro": false,
+ "rgb_matrix": true
},
"usb": {
"vid": "0xABA7",
@@ -25,7 +26,11 @@
"driver": "vendor"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "layout": [
+ {"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
+ {"matrix": [0, 15], "x": 211, "y": 0, "flags": 8}
+ ]
},
"processor": "RP2040",
"bootloader": "rp2040",
diff --git a/keyboards/abatskeyboardclub/nayeon/nayeon.c b/keyboards/abatskeyboardclub/nayeon/nayeon.c
index 504df12999..0c559046e9 100644
--- a/keyboards/abatskeyboardclub/nayeon/nayeon.c
+++ b/keyboards/abatskeyboardclub/nayeon/nayeon.c
@@ -16,21 +16,7 @@
#include "quantum.h"
-led_config_t g_led_config = {{
- // Key Matrix to LED Index
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 1, NO_LED },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
- { 0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
-}, {
- // LED Index to Physical Position
- { 5, 40 }, { 211, 0 }
-}, {
- // LED Index to Flag
- LED_FLAG_INDICATOR, LED_FLAG_INDICATOR
-}};
+#ifdef RGB_MATRIX_ENABLE
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) {
@@ -45,3 +31,5 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
return true;
}
+
+#endif
diff --git a/keyboards/abatskeyboardclub/nayeon/rules.mk b/keyboards/abatskeyboardclub/nayeon/rules.mk
index e458f33f3c..6e7633bfe0 100644
--- a/keyboards/abatskeyboardclub/nayeon/rules.mk
+++ b/keyboards/abatskeyboardclub/nayeon/rules.mk
@@ -1,2 +1 @@
-# RGB Matrix
-RGB_MATRIX_ENABLE = yes
+# This file intentionally left blank
diff --git a/keyboards/abko/ak84bt/ak84bt.c b/keyboards/abko/ak84bt/ak84bt.c
index a51f1f458f..86f28a1bb2 100644
--- a/keyboards/abko/ak84bt/ak84bt.c
+++ b/keyboards/abko/ak84bt/ak84bt.c
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{0, G_1, I_1, H_1},
{0, G_3, I_3, H_3},
{0, G_4, I_4, H_4},
diff --git a/keyboards/abko/ak84bt/config.h b/keyboards/abko/ak84bt/config.h
index 0a7f31bf7d..6408c97af4 100644
--- a/keyboards/abko/ak84bt/config.h
+++ b/keyboards/abko/ak84bt/config.h
@@ -16,25 +16,5 @@
#pragma once
-
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
-
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 45
-
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL)
-
-#define ENABLE_RGB_MATRIX_SOLID_COLOR
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
diff --git a/keyboards/abko/ak84bt/info.json b/keyboards/abko/ak84bt/info.json
index 4660fb7024..ff44df60a1 100644
--- a/keyboards/abko/ak84bt/info.json
+++ b/keyboards/abko/ak84bt/info.json
@@ -27,6 +27,20 @@
},
"processor": "STM32F103",
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "hue_wave": true,
+ "pixel_flow": true
+ },
"driver": "is31fl3733",
"layout": [
{"matrix": [0, 0], "x": 7, "y": 2, "flags": 4},
diff --git a/keyboards/acheron/apollo/87h/delta/config.h b/keyboards/acheron/apollo/87h/delta/config.h
index 0798ffa70b..578a443e88 100644
--- a/keyboards/acheron/apollo/87h/delta/config.h
+++ b/keyboards/acheron/apollo/87h/delta/config.h
@@ -24,63 +24,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define RGB_MATRIX_LED_COUNT 87
-
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
-
-#define RGB_MATRIX_DEFAULT_VAL 60
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/acheron/apollo/87h/delta/info.json b/keyboards/acheron/apollo/87h/delta/info.json
index b5b935ab58..729512839f 100644
--- a/keyboards/acheron/apollo/87h/delta/info.json
+++ b/keyboards/acheron/apollo/87h/delta/info.json
@@ -8,7 +8,56 @@
"pin": "B15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "fractal": true,
+ "pixel_rain": true,
+ "pixel_flow": 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
+ },
+ "default": {
+ "val": 60
+ },
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C8", "C9", "A8", "A10", "C7", "C6", "B14", "B12", "B10", "B1", "C5", "C4", "A7", "B0", "C11", "A3", "B4"],
diff --git a/keyboards/acheron/apollo/87h/gamma/config.h b/keyboards/acheron/apollo/87h/gamma/config.h
index 37c0aaef64..42b27d55ba 100644
--- a/keyboards/acheron/apollo/87h/gamma/config.h
+++ b/keyboards/acheron/apollo/87h/gamma/config.h
@@ -26,57 +26,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// RGB Matrix defines
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-
-#define DRIVER_1_LED_TOTAL 87
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_HUE_WAVE
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/acheron/apollo/87h/gamma/gamma.c b/keyboards/acheron/apollo/87h/gamma/gamma.c
index 19e9106287..43802bb4ad 100644
--- a/keyboards/acheron/apollo/87h/gamma/gamma.c
+++ b/keyboards/acheron/apollo/87h/gamma/gamma.c
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/acheron/apollo/87h/gamma/info.json b/keyboards/acheron/apollo/87h/gamma/info.json
index 0a3b28e31f..150f838c89 100644
--- a/keyboards/acheron/apollo/87h/gamma/info.json
+++ b/keyboards/acheron/apollo/87h/gamma/info.json
@@ -5,7 +5,57 @@
"device_version": "0.0.3"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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,
+ "fractal": true,
+ "pixel_rain": true,
+ "pixel_flow": 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
+ },
+ "default": {
+ "animation": "hue_wave",
+ "val": 80
+ },
+ "driver": "is31fl3741",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B3", "A15", "A10", "A8", "B14", "B12", "B10", "B1", "B0", "A7", "A4", "A5", "A6", "C15", "A0", "A1"],
diff --git a/keyboards/acheron/apollo/87htsc/config.h b/keyboards/acheron/apollo/87htsc/config.h
index e8dd40b32f..578a443e88 100644
--- a/keyboards/acheron/apollo/87htsc/config.h
+++ b/keyboards/acheron/apollo/87htsc/config.h
@@ -24,63 +24,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define RGB_MATRIX_LED_COUNT 86
-
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
-
-#define RGB_MATRIX_DEFAULT_VAL 60
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/acheron/apollo/87htsc/info.json b/keyboards/acheron/apollo/87htsc/info.json
index de0388176e..91e2cb320e 100644
--- a/keyboards/acheron/apollo/87htsc/info.json
+++ b/keyboards/acheron/apollo/87htsc/info.json
@@ -12,7 +12,56 @@
"pin": "B15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "fractal": true,
+ "pixel_rain": true,
+ "pixel_flow": 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
+ },
+ "default": {
+ "val": 60
+ },
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C8", "C9", "A8", "A10", "C7", "C6", "B14", "B12", "B10", "B1", "C5", "C4", "A7", "B0", "C11", "A3", "B4"],
diff --git a/keyboards/acheron/apollo/88htsc/config.h b/keyboards/acheron/apollo/88htsc/config.h
index 0798ffa70b..578a443e88 100644
--- a/keyboards/acheron/apollo/88htsc/config.h
+++ b/keyboards/acheron/apollo/88htsc/config.h
@@ -24,63 +24,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define RGB_MATRIX_LED_COUNT 87
-
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
-
-#define RGB_MATRIX_DEFAULT_VAL 60
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/acheron/apollo/88htsc/info.json b/keyboards/acheron/apollo/88htsc/info.json
index adb2372e60..17c12b3beb 100644
--- a/keyboards/acheron/apollo/88htsc/info.json
+++ b/keyboards/acheron/apollo/88htsc/info.json
@@ -12,7 +12,56 @@
"pin": "B15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "fractal": true,
+ "pixel_rain": true,
+ "pixel_flow": 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
+ },
+ "default": {
+ "val": 60
+ },
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C8", "C9", "A8", "A10", "C7", "C6", "B14", "B12", "B10", "B1", "C5", "C4", "A7", "B0", "C11", "A3", "B4"],
diff --git a/keyboards/acheron/themis/87h/config.h b/keyboards/acheron/themis/87h/config.h
index 605594eea2..ed1229c779 100644
--- a/keyboards/acheron/themis/87h/config.h
+++ b/keyboards/acheron/themis/87h/config.h
@@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
-#define RGBLED_NUM 1
-
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
diff --git a/keyboards/acheron/themis/87h/info.json b/keyboards/acheron/themis/87h/info.json
index cbff8f4eec..0ef52a61a0 100644
--- a/keyboards/acheron/themis/87h/info.json
+++ b/keyboards/acheron/themis/87h/info.json
@@ -26,6 +26,9 @@
"backing_size": 8192
}
},
+ "rgblight": {
+ "led_count": 1
+ },
"ws2812": {
"pin": "B15"
},
diff --git a/keyboards/acheron/themis/87htsc/config.h b/keyboards/acheron/themis/87htsc/config.h
index 605594eea2..ed1229c779 100644
--- a/keyboards/acheron/themis/87htsc/config.h
+++ b/keyboards/acheron/themis/87htsc/config.h
@@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
-#define RGBLED_NUM 1
-
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
diff --git a/keyboards/acheron/themis/87htsc/info.json b/keyboards/acheron/themis/87htsc/info.json
index 5b491690bb..75c680d2a4 100644
--- a/keyboards/acheron/themis/87htsc/info.json
+++ b/keyboards/acheron/themis/87htsc/info.json
@@ -26,6 +26,9 @@
"backing_size": 8192
}
},
+ "rgblight": {
+ "led_count": 1
+ },
"ws2812": {
"pin": "B15"
},
diff --git a/keyboards/acheron/themis/88htsc/config.h b/keyboards/acheron/themis/88htsc/config.h
index 605594eea2..ed1229c779 100644
--- a/keyboards/acheron/themis/88htsc/config.h
+++ b/keyboards/acheron/themis/88htsc/config.h
@@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
-#define RGBLED_NUM 1
-
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
diff --git a/keyboards/acheron/themis/88htsc/info.json b/keyboards/acheron/themis/88htsc/info.json
index 073a16e946..8726642c0c 100644
--- a/keyboards/acheron/themis/88htsc/info.json
+++ b/keyboards/acheron/themis/88htsc/info.json
@@ -26,6 +26,9 @@
"backing_size": 8192
}
},
+ "rgblight": {
+ "led_count": 1
+ },
"ws2812": {
"pin": "B15"
},
diff --git a/keyboards/adafruit/macropad/config.h b/keyboards/adafruit/macropad/config.h
index 818a8229f5..7f2e9ab6f9 100644
--- a/keyboards/adafruit/macropad/config.h
+++ b/keyboards/adafruit/macropad/config.h
@@ -50,57 +50,3 @@
#define AUDIO_CLICKY
#define SPEAKER_SHUTDOWN GP14
-
-#ifdef RGB_MATRIX_ENABLE
-
- /* RGB Defines */
-# define RGB_MATRIX_LED_COUNT 12
-
- /* Enable Framebuffer and keypress effects */
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_KEYPRESSES
-
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/adafruit/macropad/info.json b/keyboards/adafruit/macropad/info.json
index bac0061f3e..0facf7e0f6 100644
--- a/keyboards/adafruit/macropad/info.json
+++ b/keyboards/adafruit/macropad/info.json
@@ -14,7 +14,66 @@
]
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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": [1, 0], "x": 0, "y": 0, "flags": 4},
+ {"matrix": [1, 1], "x": 112, "y": 0, "flags": 4},
+ {"matrix": [1, 2], "x": 224, "y": 0, "flags": 4},
+ {"matrix": [2, 0], "x": 0, "y": 21, "flags": 4},
+ {"matrix": [2, 1], "x": 112, "y": 21, "flags": 4},
+ {"matrix": [2, 2], "x": 224, "y": 21, "flags": 4},
+ {"matrix": [3, 0], "x": 0, "y": 42, "flags": 4},
+ {"matrix": [3, 1], "x": 112, "y": 42, "flags": 4},
+ {"matrix": [3, 2], "x": 224, "y": 42, "flags": 4},
+ {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
+ {"matrix": [4, 1], "x": 112, "y": 64, "flags": 4},
+ {"matrix": [4, 2], "x": 224, "y": 64, "flags": 4}
+ ]
},
"bootmagic": {
"matrix": [1, 2]
diff --git a/keyboards/adafruit/macropad/macropad.c b/keyboards/adafruit/macropad/macropad.c
index 6661e43909..5c1d2ba593 100644
--- a/keyboards/adafruit/macropad/macropad.c
+++ b/keyboards/adafruit/macropad/macropad.c
@@ -16,31 +16,6 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
-#define NA NO_LED
-
-/* RGB Positioning */
-led_config_t g_led_config = { {
- { NA, NA, NA },
- { 0, 1, 2 },
- { 3, 4, 5 },
- { 6, 7, 8 },
- { 9, 10, 11 }
-}, {
- { 0, 0 }, { 112, 0 }, { 224, 0},
- { 0, 21 }, { 112, 21 }, { 224, 21},
- { 0, 42 }, { 112, 42 }, { 224, 42},
- { 0, 64 }, { 112, 64 }, { 224, 64}
-}, {
- 4, 4, 4,
- 4, 4, 4,
- 4, 4, 4,
- 4, 4, 4
-} };
-
-#endif
-
#ifdef AUDIO_ENABLE
void keyboard_pre_init_kb(void) {
// ensure pin is set and enabled pre-audio init
diff --git a/keyboards/adpenrose/akemipad/config.h b/keyboards/adpenrose/akemipad/config.h
index 230453c3a0..8c70779a29 100644
--- a/keyboards/adpenrose/akemipad/config.h
+++ b/keyboards/adpenrose/akemipad/config.h
@@ -8,16 +8,3 @@
#define AUDIO_CLICKY
#define AUDIO_ENABLE_TONE_MULTIPLEXING
#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10
-
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 27
-#define RGB_MATRIX_CENTER { 60, 77 }
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 175
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#ifdef RGB_MATRIX_ENABLE
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#endif
diff --git a/keyboards/adpenrose/akemipad/info.json b/keyboards/adpenrose/akemipad/info.json
index 0484578571..28ac8d6d4c 100644
--- a/keyboards/adpenrose/akemipad/info.json
+++ b/keyboards/adpenrose/akemipad/info.json
@@ -11,7 +11,14 @@
"pin": "F4"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "cycle_left_right": true,
+ "cycle_up_down": true
+ },
+ "center_point": [60, 77],
+ "driver": "ws2812",
+ "max_brightness": 175,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D3", "D2", "F5", "F6", "B2"],
diff --git a/keyboards/adpenrose/mine/config.h b/keyboards/adpenrose/mine/config.h
index cc05ddf8f1..2ddf1c4393 100644
--- a/keyboards/adpenrose/mine/config.h
+++ b/keyboards/adpenrose/mine/config.h
@@ -5,5 +5,3 @@
/* Solenoid pin */
#define SOLENOID_PIN A7
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/adpenrose/mine/info.json b/keyboards/adpenrose/mine/info.json
index 5010485602..79aceaa3d1 100644
--- a/keyboards/adpenrose/mine/info.json
+++ b/keyboards/adpenrose/mine/info.json
@@ -15,6 +15,9 @@
"build": {
"lto": true
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"encoder": {
"rotary": [{ "pin_a": "C4", "pin_b": "C3" }]
},
diff --git a/keyboards/aeboards/ext65/rev2/rev2.c b/keyboards/aeboards/ext65/rev2/rev2.c
index 6fe2d469dc..934553abcf 100644
--- a/keyboards/aeboards/ext65/rev2/rev2.c
+++ b/keyboards/aeboards/ext65/rev2/rev2.c
@@ -17,16 +17,18 @@
#include "quantum.h"
// Tested and verified working on ext65rev2
-void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); }
+void matrix_io_delay(void) {
+ __asm__ volatile("nop\nnop\nnop\n");
+}
#ifdef OLED_ENABLE
void board_init(void) {
- SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
- SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
+ SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
+ SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
}
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
- return OLED_ROTATION_90; // rotates the display 90 degrees
+ return OLED_ROTATION_90; // rotates the display 90 degrees
}
void render_layer_state(void) {
@@ -55,26 +57,31 @@ void render_mod_status(uint8_t modifiers) {
}
bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
render_layer_state();
render_keylock_status(host_keyboard_led_state());
- render_mod_status(get_mods()|get_oneshot_mods());
- return false;
+ render_mod_status(get_mods() | get_oneshot_mods());
+ return true;
}
#else
-void keyboard_pre_init_user(void) {
- // Call the keyboard pre init code.
- // Set our LED pins as output
- setPinOutput(B4);
- setPinOutput(B3);
- setPinOutput(A15);
- setPinOutput(A14);
+void keyboard_pre_init_kb(void) {
+ // Call the keyboard pre init code.
+ // Set our LED pins as output
+ setPinOutput(B4);
+ setPinOutput(B3);
+ setPinOutput(A15);
+ setPinOutput(A14);
+
+ keyboard_pre_init_user();
}
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
- if(res) {
+ if (res) {
writePin(B4, led_state.num_lock);
writePin(B3, led_state.caps_lock);
writePin(A15, led_state.scroll_lock);
@@ -84,14 +91,13 @@ bool led_update_kb(led_t led_state) {
layer_state_t layer_state_set_kb(layer_state_t state) {
switch (get_highest_layer(state)) {
- case 1:
- writePinHigh(A14);
- break;
- default: // for any other layers, or the default layer
- writePinLow(A14);
- break;
- }
+ case 1:
+ writePinHigh(A14);
+ break;
+ default: // for any other layers, or the default layer
+ writePinLow(A14);
+ break;
+ }
return layer_state_set_user(state);
}
#endif
-
diff --git a/keyboards/aeboards/satellite/rev1/config.h b/keyboards/aeboards/satellite/rev1/config.h
index 429bc2af54..06c3464fe4 100644
--- a/keyboards/aeboards/satellite/rev1/config.h
+++ b/keyboards/aeboards/satellite/rev1/config.h
@@ -20,62 +20,4 @@
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-#define DRIVER_1_LED_TOTAL 36
-#define DRIVER_2_LED_TOTAL 36
-#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define RGB_MATRIX_LED_COUNT IS31FL3731_LED_COUNT
-
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define IS31FL3731_LED_COUNT 72
diff --git a/keyboards/aeboards/satellite/rev1/info.json b/keyboards/aeboards/satellite/rev1/info.json
index 4669fca319..68256ed869 100644
--- a/keyboards/aeboards/satellite/rev1/info.json
+++ b/keyboards/aeboards/satellite/rev1/info.json
@@ -9,7 +9,57 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "custom"
+ "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_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_all",
+ "val": 80
+ },
+ "driver": "custom",
+ "sleep": true
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
diff --git a/keyboards/aidansmithdotdev/sango/config.h b/keyboards/aidansmithdotdev/sango/config.h
new file mode 100644
index 0000000000..13b2c01f3e
--- /dev/null
+++ b/keyboards/aidansmithdotdev/sango/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2024 Aidan Smith <aidan@aidansmith.dev>
+ *
+ * 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 EE_HANDS
diff --git a/keyboards/aidansmithdotdev/sango/info.json b/keyboards/aidansmithdotdev/sango/info.json
new file mode 100644
index 0000000000..f62ae7466b
--- /dev/null
+++ b/keyboards/aidansmithdotdev/sango/info.json
@@ -0,0 +1,219 @@
+{
+ "manufacturer": "AidanSmith.dev",
+ "keyboard_name": "aidansmithdotdev/Sango",
+ "Maintainer": "AidanSmith.dev",
+ "bootloader": "rp2040",
+ "bootmagic": {
+ "matrix": [0, 7]
+ },
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["GP4", "GP8", "GP9", "GP11", "GP12", "GP13", "GP14", "GP15"],
+ "rows": ["GP7", "GP6", "GP3", "GP2", "GP0"]
+ },
+ "processor": "RP2040",
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "layout": [
+ {"matrix": [0, 1], "x": 60, "y": 0, "flags": 4},
+ {"matrix": [0, 2], "x": 50, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 40, "y": 0, "flags": 4},
+ {"matrix": [0, 4], "x": 30, "y": 0, "flags": 4},
+ {"matrix": [0, 5], "x": 20, "y": 0, "flags": 4},
+ {"matrix": [0, 6], "x": 10, "y": 0, "flags": 4},
+ {"matrix": [0, 7], "x": 0, "y": 0, "flags": 4},
+ {"matrix": [1, 7], "x": 0, "y": 10, "flags": 4},
+ {"matrix": [1, 6], "x": 10, "y": 10, "flags": 4},
+ {"matrix": [1, 5], "x": 20, "y": 10, "flags": 4},
+ {"matrix": [1, 4], "x": 30, "y": 10, "flags": 4},
+ {"matrix": [1, 3], "x": 40, "y": 10, "flags": 4},
+ {"matrix": [1, 2], "x": 50, "y": 10, "flags": 4},
+ {"matrix": [1, 1], "x": 60, "y": 10, "flags": 4},
+ {"matrix": [2, 0], "x": 70, "y": 20, "flags": 4},
+ {"matrix": [2, 1], "x": 60, "y": 20, "flags": 4},
+ {"matrix": [2, 2], "x": 50, "y": 20, "flags": 4},
+ {"matrix": [2, 3], "x": 40, "y": 20, "flags": 4},
+ {"matrix": [2, 4], "x": 30, "y": 20, "flags": 4},
+ {"matrix": [2, 5], "x": 20, "y": 20, "flags": 4},
+ {"matrix": [2, 6], "x": 10, "y": 20, "flags": 4},
+ {"matrix": [2, 7], "x": 0, "y": 20, "flags": 4},
+ {"matrix": [3, 7], "x": 0, "y": 30, "flags": 4},
+ {"matrix": [3, 6], "x": 10, "y": 30, "flags": 4},
+ {"matrix": [3, 5], "x": 20, "y": 30, "flags": 4},
+ {"matrix": [3, 4], "x": 30, "y": 30, "flags": 4},
+ {"matrix": [3, 3], "x": 40, "y": 30, "flags": 4},
+ {"matrix": [3, 2], "x": 50, "y": 30, "flags": 4},
+ {"matrix": [3, 1], "x": 60, "y": 30, "flags": 4},
+ {"matrix": [3, 0], "x": 70, "y": 30, "flags": 4},
+ {"matrix": [4, 0], "x": 70, "y": 30, "flags": 4},
+ {"matrix": [4, 1], "x": 60, "y": 30, "flags": 4},
+ {"matrix": [4, 2], "x": 50, "y": 30, "flags": 4},
+ {"matrix": [4, 5], "x": 20, "y": 30, "flags": 4},
+ {"matrix": [4, 6], "x": 10, "y": 30, "flags": 4},
+ {"matrix": [4, 7], "x": 0, "y": 30, "flags": 4},
+ {"matrix": [5, 1], "x": 100, "y": 0, "flags": 4},
+ {"matrix": [5, 2], "x": 110, "y": 0, "flags": 4},
+ {"matrix": [5, 3], "x": 120, "y": 0, "flags": 4},
+ {"matrix": [5, 4], "x": 130, "y": 0, "flags": 4},
+ {"matrix": [5, 5], "x": 140, "y": 0, "flags": 4},
+ {"matrix": [5, 6], "x": 150, "y": 0, "flags": 4},
+ {"matrix": [5, 7], "x": 160, "y": 0, "flags": 4},
+ {"matrix": [6, 7], "x": 160, "y": 10, "flags": 4},
+ {"matrix": [6, 6], "x": 150, "y": 10, "flags": 4},
+ {"matrix": [6, 5], "x": 140, "y": 10, "flags": 4},
+ {"matrix": [6, 4], "x": 130, "y": 10, "flags": 4},
+ {"matrix": [6, 3], "x": 120, "y": 10, "flags": 4},
+ {"matrix": [6, 2], "x": 110, "y": 10, "flags": 4},
+ {"matrix": [6, 1], "x": 100, "y": 10, "flags": 4},
+ {"matrix": [7, 0], "x": 90, "y": 20, "flags": 4},
+ {"matrix": [7, 1], "x": 100, "y": 20, "flags": 4},
+ {"matrix": [7, 2], "x": 110, "y": 20, "flags": 4},
+ {"matrix": [7, 3], "x": 120, "y": 20, "flags": 4},
+ {"matrix": [7, 4], "x": 130, "y": 20, "flags": 4},
+ {"matrix": [7, 5], "x": 140, "y": 20, "flags": 4},
+ {"matrix": [7, 6], "x": 150, "y": 20, "flags": 4},
+ {"matrix": [7, 7], "x": 160, "y": 20, "flags": 4},
+ {"matrix": [8, 7], "x": 160, "y": 30, "flags": 4},
+ {"matrix": [8, 6], "x": 150, "y": 30, "flags": 4},
+ {"matrix": [8, 5], "x": 140, "y": 30, "flags": 4},
+ {"matrix": [8, 4], "x": 130, "y": 30, "flags": 4},
+ {"matrix": [8, 3], "x": 120, "y": 30, "flags": 4},
+ {"matrix": [8, 2], "x": 110, "y": 30, "flags": 4},
+ {"matrix": [8, 1], "x": 100, "y": 30, "flags": 4},
+ {"matrix": [8, 0], "x": 90, "y": 30, "flags": 4},
+ {"matrix": [9, 0], "x": 90, "y": 30, "flags": 4},
+ {"matrix": [9, 1], "x": 100, "y": 30, "flags": 4},
+ {"matrix": [9, 2], "x": 110, "y": 30, "flags": 4},
+ {"matrix": [9, 5], "x": 140, "y": 30, "flags": 4},
+ {"matrix": [9, 6], "x": 150, "y": 30, "flags": 4},
+ {"matrix": [9, 7], "x": 160, "y": 30, "flags": 4}
+ ]
+ },
+ "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,
+ "max_brightness": 128,
+ "saturation_steps": 8,
+ "split": true,
+ "split_count": [36, 36]
+ },
+ "split": {
+ "bootmagic": {
+ "matrix": [4, 7]
+ },
+ "enabled": true,
+ "main": "matrix_grid",
+ "matrix_pins": {
+ "right": {
+ "cols": ["GP7", "GP8", "GP9", "GP11", "GP12", "GP13", "GP14", "GP15"],
+ "rows": ["GP2", "GP3", "GP4", "GP5", "GP6"]
+ }
+ },
+ "soft_serial_pin": "GP1"
+ },
+ "url": "https://aidansmith.dev",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x2567",
+ "vid": "0xA059"
+ },
+ "ws2812": {
+ "driver": "vendor",
+ "pin": "GP10"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "L07", "matrix": [0, 7], "x": 0, "y": 0.3},
+ {"label": "L06", "matrix": [0, 6], "x": 1, "y": 0.3},
+ {"label": "L05", "matrix": [0, 5], "x": 2, "y": 0.3},
+ {"label": "L04", "matrix": [0, 4], "x": 3, "y": 0.1},
+ {"label": "L03", "matrix": [0, 3], "x": 4, "y": 0},
+ {"label": "L02", "matrix": [0, 2], "x": 5, "y": 0.1},
+ {"label": "L01", "matrix": [0, 1], "x": 6, "y": 0.2},
+ {"label": "R01", "matrix": [5, 1], "x": 10, "y": 0.2},
+ {"label": "R02", "matrix": [5, 2], "x": 11, "y": 0.1},
+ {"label": "R03", "matrix": [5, 3], "x": 12, "y": 0},
+ {"label": "R04", "matrix": [5, 4], "x": 13, "y": 0.1},
+ {"label": "R05", "matrix": [5, 5], "x": 14, "y": 0.3},
+ {"label": "R06", "matrix": [5, 6], "x": 15, "y": 0.3},
+ {"label": "R07", "matrix": [5, 7], "x": 16, "y": 0.3},
+ {"label": "L17", "matrix": [1, 7], "x": 0, "y": 1.3},
+ {"label": "L16", "matrix": [1, 6], "x": 1, "y": 1.3},
+ {"label": "L15", "matrix": [1, 5], "x": 2, "y": 1.3},
+ {"label": "L14", "matrix": [1, 4], "x": 3, "y": 1.1},
+ {"label": "L13", "matrix": [1, 3], "x": 4, "y": 1},
+ {"label": "L12", "matrix": [1, 2], "x": 5, "y": 1.1},
+ {"label": "L11", "matrix": [1, 1], "x": 6, "y": 1.2},
+ {"label": "R11", "matrix": [6, 1], "x": 10, "y": 1.2},
+ {"label": "R12", "matrix": [6, 2], "x": 11, "y": 1.1},
+ {"label": "R13", "matrix": [6, 3], "x": 12, "y": 1},
+ {"label": "R14", "matrix": [6, 4], "x": 13, "y": 1.1},
+ {"label": "R15", "matrix": [6, 5], "x": 14, "y": 1.3},
+ {"label": "R16", "matrix": [6, 6], "x": 15, "y": 1.3},
+ {"label": "R17", "matrix": [6, 7], "x": 16, "y": 1.3},
+ {"label": "L27", "matrix": [2, 7], "x": 0, "y": 2.3},
+ {"label": "L26", "matrix": [2, 6], "x": 1, "y": 2.3},
+ {"label": "L25", "matrix": [2, 5], "x": 2, "y": 2.3},
+ {"label": "L24", "matrix": [2, 4], "x": 3, "y": 2.1},
+ {"label": "L23", "matrix": [2, 3], "x": 4, "y": 2},
+ {"label": "L22", "matrix": [2, 2], "x": 5, "y": 2.1},
+ {"label": "L21", "matrix": [2, 1], "x": 6, "y": 2.2},
+ {"label": "L20", "matrix": [2, 0], "x": 7, "y": 2.7},
+ {"label": "R20", "matrix": [7, 0], "x": 9, "y": 2.7},
+ {"label": "R21", "matrix": [7, 1], "x": 10, "y": 2.2},
+ {"label": "R22", "matrix": [7, 2], "x": 11, "y": 2.1},
+ {"label": "R23", "matrix": [7, 3], "x": 12, "y": 2},
+ {"label": "R24", "matrix": [7, 4], "x": 13, "y": 2.1},
+ {"label": "R25", "matrix": [7, 5], "x": 14, "y": 2.3},
+ {"label": "R26", "matrix": [7, 6], "x": 15, "y": 2.3},
+ {"label": "R27", "matrix": [7, 7], "x": 16, "y": 2.3},
+ {"label": "L37", "matrix": [3, 7], "x": 0, "y": 3.3},
+ {"label": "L36", "matrix": [3, 6], "x": 1, "y": 3.3},
+ {"label": "L35", "matrix": [3, 5], "x": 2, "y": 3.3},
+ {"label": "L34", "matrix": [3, 4], "x": 3, "y": 3.1},
+ {"label": "L33", "matrix": [3, 3], "x": 4, "y": 3},
+ {"label": "L32", "matrix": [3, 2], "x": 5, "y": 3.1},
+ {"label": "L31", "matrix": [3, 1], "x": 6, "y": 3.2},
+ {"label": "L30", "matrix": [3, 0], "x": 7, "y": 3.7},
+ {"label": "R30", "matrix": [8, 0], "x": 9, "y": 3.7},
+ {"label": "R31", "matrix": [8, 1], "x": 10, "y": 3.2},
+ {"label": "R32", "matrix": [8, 2], "x": 11, "y": 3.1},
+ {"label": "R33", "matrix": [8, 3], "x": 12, "y": 3},
+ {"label": "R34", "matrix": [8, 4], "x": 13, "y": 3.1},
+ {"label": "R35", "matrix": [8, 5], "x": 14, "y": 3.3},
+ {"label": "R36", "matrix": [8, 6], "x": 15, "y": 3.3},
+ {"label": "R37", "matrix": [8, 7], "x": 16, "y": 3.3},
+ {"label": "L47", "matrix": [4, 7], "x": 0, "y": 3.3},
+ {"label": "L46", "matrix": [4, 6], "x": 1, "y": 3.3},
+ {"label": "L45", "matrix": [4, 5], "x": 2, "y": 3.3},
+ {"label": "L42", "matrix": [4, 2], "x": 5, "y": 3.1},
+ {"label": "L41", "matrix": [4, 1], "x": 6, "y": 3.2},
+ {"label": "L40", "matrix": [4, 0], "x": 7, "y": 3.7},
+ {"label": "R40", "matrix": [9, 0], "x": 9, "y": 3.7},
+ {"label": "R41", "matrix": [9, 1], "x": 10, "y": 3.2},
+ {"label": "R42", "matrix": [9, 2], "x": 11, "y": 3.1},
+ {"label": "R45", "matrix": [9, 5], "x": 14, "y": 3.3},
+ {"label": "R46", "matrix": [9, 6], "x": 15, "y": 3.3},
+ {"label": "R47", "matrix": [9, 7], "x": 16, "y": 3.3}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c b/keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a1730a7f86
--- /dev/null
+++ b/keyboards/aidansmithdotdev/sango/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2024 Aidan Smith <aidan@aidansmith.dev>
+ *
+ * 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 {
+ _QWERTY,
+};
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = 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_DEL , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC , KC_RBRC ,
+ KC_PGUP , KC_LCAP , KC_A , KC_S , KC_D , KC_F , KC_G , KC_LCBR , KC_RCBR , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , KC_ENT ,
+ KC_PGDN , KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC , KC_RBRC , KC_N , KC_M , KC_DOT , KC_COMM , KC_SLSH , KC_UP , KC_BSLS ,
+ KC_LCTL , KC_LGUI , KC_LALT , KC_LCTL , KC_LALT , KC_BSPC , KC_SPC , KC_RGUI , KC_RALT , KC_LEFT , KC_DOWN , KC_RGHT
+ )
+};
diff --git a/keyboards/aidansmithdotdev/sango/readme.md b/keyboards/aidansmithdotdev/sango/readme.md
new file mode 100644
index 0000000000..415e21add4
--- /dev/null
+++ b/keyboards/aidansmithdotdev/sango/readme.md
@@ -0,0 +1,19 @@
+# Sango
+
+![aidansmithdotdev/sango](https://i.imgur.com/NzvLxqyh.jpg)
+
+An open source 65%ish split columnar low profile keyboard.
+
+* Keyboard Maintainer: [Aidan Smith](https://github.com/Aidan-OS)
+* Hardware Supported: Sango
+* Hardware Availability: https://github.com/Aidan-OS/Sango
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aidansmithdotdev/sango:default
+
+Flashing example for this keyboard:
+
+ make aidansmithdotdev/sango: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).
diff --git a/keyboards/aidansmithdotdev/sango/rules.mk b/keyboards/aidansmithdotdev/sango/rules.mk
new file mode 100644
index 0000000000..743228e94b
--- /dev/null
+++ b/keyboards/aidansmithdotdev/sango/rules.mk
@@ -0,0 +1 @@
+SERIAL_DRIVER = vendor \ No newline at end of file
diff --git a/keyboards/akko/5087/5087.c b/keyboards/akko/5087/5087.c
index 4d6cf94900..6374adc301 100644
--- a/keyboards/akko/5087/5087.c
+++ b/keyboards/akko/5087/5087.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/akko/5087/config.h b/keyboards/akko/5087/config.h
index 3a6b7030ee..ceb9872738 100644
--- a/keyboards/akko/5087/config.h
+++ b/keyboards/akko/5087/config.h
@@ -16,7 +16,6 @@
#pragma once
-
/* LED Indicators */
#define LED_MAC_OS_PIN C10
#define LED_WIN_LOCK_PIN C11
@@ -36,16 +35,8 @@
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
/* I2C Config for LED Driver */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110100
-#define DRIVER_ADDR_2 0b1110111
+#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
+#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
+
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-
-#define RGB_MATRIX_LED_COUNT 87
-
-#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-
diff --git a/keyboards/akko/5087/info.json b/keyboards/akko/5087/info.json
index 1b4059b0d5..67ea54c169 100644
--- a/keyboards/akko/5087/info.json
+++ b/keyboards/akko/5087/info.json
@@ -40,7 +40,7 @@
"caps_lock": "A15"
},
"rgb_matrix": {
- "driver": "ckled2001",
+ "driver": "snled27351",
"max_brightness": 180,
"animations": {
"breathing": true,
@@ -155,7 +155,9 @@
{ "flags": 4, "matrix": [5, 15], "x":210, "y": 64},
{ "flags": 4, "matrix": [5, 16], "x":224, "y": 64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"community_layouts": ["tkl_ansi"],
"layouts": {
diff --git a/keyboards/akko/5108/5108.c b/keyboards/akko/5108/5108.c
index 91f53e1e55..0fd71834d1 100644
--- a/keyboards/akko/5108/5108.c
+++ b/keyboards/akko/5108/5108.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/akko/5108/config.h b/keyboards/akko/5108/config.h
index 7154ce44d2..6a509733d6 100644
--- a/keyboards/akko/5108/config.h
+++ b/keyboards/akko/5108/config.h
@@ -40,10 +40,4 @@
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define RGB_MATRIX_LED_COUNT 108
-
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/akko/5108/info.json b/keyboards/akko/5108/info.json
index 662a949a53..5e97d151c3 100644
--- a/keyboards/akko/5108/info.json
+++ b/keyboards/akko/5108/info.json
@@ -176,7 +176,9 @@
{ "flags": 4, "matrix": [5, 16], "x": 176, "y": 64 },
{ "flags": 4, "matrix": [5, 18], "x": 199, "y": 64 },
{ "flags": 4, "matrix": [5, 19], "x": 214, "y": 64 }
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/akko/acr87/acr87.c b/keyboards/akko/acr87/acr87.c
index 7ee9ec6470..3e7f603474 100644
--- a/keyboards/akko/acr87/acr87.c
+++ b/keyboards/akko/acr87/acr87.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/akko/acr87/config.h b/keyboards/akko/acr87/config.h
index 4c1fb9afa1..cdc4b6011a 100644
--- a/keyboards/akko/acr87/config.h
+++ b/keyboards/akko/acr87/config.h
@@ -39,10 +39,4 @@
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define RGB_MATRIX_LED_COUNT 135
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/akko/acr87/info.json b/keyboards/akko/acr87/info.json
index 5ccb0c3f73..2702ee7915 100644
--- a/keyboards/akko/acr87/info.json
+++ b/keyboards/akko/acr87/info.json
@@ -200,7 +200,9 @@
{"flags": 2, "x":196, "y":64},
{"flags": 2, "x":210, "y":64},
{"flags": 2, "x":224, "y":64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/akko/top40/config.h b/keyboards/akko/top40/config.h
index 1d601a189c..a23cf6db92 100644
--- a/keyboards/akko/top40/config.h
+++ b/keyboards/akko/top40/config.h
@@ -37,11 +37,4 @@
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define RGB_MATRIX_LED_COUNT 76
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
#define RGB_TRIGGER_ON_KEYDOWN
-
diff --git a/keyboards/akko/top40/info.json b/keyboards/akko/top40/info.json
index 243952ccc8..183c9242f4 100644
--- a/keyboards/akko/top40/info.json
+++ b/keyboards/akko/top40/info.json
@@ -139,7 +139,9 @@
{"flags": 2, "x":185, "y":64},
{"flags": 2, "x":205, "y":64},
{"flags": 2, "x":224, "y":64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/akko/top40/top40.c b/keyboards/akko/top40/top40.c
index 028e4bdd05..2d75b77497 100644
--- a/keyboards/akko/top40/top40.c
+++ b/keyboards/akko/top40/top40.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/aleblazer/zodiark/config.h b/keyboards/aleblazer/zodiark/config.h
index d765afd355..8230f082b3 100644
--- a/keyboards/aleblazer/zodiark/config.h
+++ b/keyboards/aleblazer/zodiark/config.h
@@ -17,11 +17,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#define SELECT_SOFT_SERIAL_SPEED 1
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 68
-#define RGB_MATRIX_SPLIT { 34, 34 }
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#endif
diff --git a/keyboards/aleblazer/zodiark/info.json b/keyboards/aleblazer/zodiark/info.json
index c7c5b9a8a8..a66b5188b6 100644
--- a/keyboards/aleblazer/zodiark/info.json
+++ b/keyboards/aleblazer/zodiark/info.json
@@ -32,9 +32,11 @@
},
"rgb_matrix": {
"driver": "ws2812",
+ "max_brightness": 150,
"sat_steps": 8,
- "val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "split_count": [34, 34],
+ "val_steps": 8
},
"matrix_pins": {
"cols": ["F5", "F6", "F7", "B1", "B3", "B2", "B6"],
diff --git a/keyboards/aliceh66/pianoforte/config.h b/keyboards/aliceh66/pianoforte/config.h
index 91e0225569..ff87862693 100644
--- a/keyboards/aliceh66/pianoforte/config.h
+++ b/keyboards/aliceh66/pianoforte/config.h
@@ -17,11 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
-
/* 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
-
-
diff --git a/keyboards/aliceh66/pianoforte_hs/config.h b/keyboards/aliceh66/pianoforte_hs/config.h
index 91e0225569..ff87862693 100644
--- a/keyboards/aliceh66/pianoforte_hs/config.h
+++ b/keyboards/aliceh66/pianoforte_hs/config.h
@@ -17,11 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
-
/* 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
-
-
diff --git a/keyboards/alpaca/wfeclipse/info.json b/keyboards/alpaca/wfeclipse/info.json
index 47288bb190..da0ebe388a 100644
--- a/keyboards/alpaca/wfeclipse/info.json
+++ b/keyboards/alpaca/wfeclipse/info.json
@@ -30,7 +30,6 @@
"gradient_up_down": true,
"hue_wave": true,
"pixel_fractal": true,
- "solid_color": true,
"solid_reactive_simple": true,
"solid_splash": true
},
diff --git a/keyboards/amjkeyboard/amj96/matrix.c b/keyboards/amjkeyboard/amj96/matrix.c
index 2999c6241b..7faf40d4fe 100644
--- a/keyboards/amjkeyboard/amj96/matrix.c
+++ b/keyboards/amjkeyboard/amj96/matrix.c
@@ -88,7 +88,7 @@ uint8_t matrix_scan(void)
if (matrix_debouncing[i] != cols) {
matrix_debouncing[i] = cols;
if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
+ dprintf("bounce!: %02X\n", debouncing);
}
debouncing = DEBOUNCE;
}
diff --git a/keyboards/an_achronism/tetromino/config.h b/keyboards/an_achronism/tetromino/config.h
index e543d7ae24..c7087edb88 100644
--- a/keyboards/an_achronism/tetromino/config.h
+++ b/keyboards/an_achronism/tetromino/config.h
@@ -16,8 +16,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
+
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
-#define RGB_MATRIX_LED_COUNT 70
/* disable debug print */
//#define NO_DEBUG
diff --git a/keyboards/annepro2/c15/info.json b/keyboards/annepro2/c15/info.json
index b7624dd6c5..a4412f036c 100644
--- a/keyboards/annepro2/c15/info.json
+++ b/keyboards/annepro2/c15/info.json
@@ -1,7 +1,7 @@
{
"keyboard_name": "Anne Pro 2 C15 (QMK)",
"usb": {
- "pid": "0xAC15"
+ "pid": "0x8008"
},
"eeprom": {
"driver": "wear_leveling",
diff --git a/keyboards/annepro2/c18/info.json b/keyboards/annepro2/c18/info.json
index c8f524e3cf..a141237cd9 100644
--- a/keyboards/annepro2/c18/info.json
+++ b/keyboards/annepro2/c18/info.json
@@ -1,7 +1,7 @@
{
"keyboard_name": "Anne Pro 2 C18 (QMK)",
"usb": {
- "pid": "0xAC18"
+ "pid": "0x8009"
},
"eeprom": {
"driver": "wear_leveling",
diff --git a/keyboards/annepro2/info.json b/keyboards/annepro2/info.json
index a24479a9fa..d06fe5bed4 100644
--- a/keyboards/annepro2/info.json
+++ b/keyboards/annepro2/info.json
@@ -3,7 +3,7 @@
"url": "https://openannepro.github.io/",
"maintainer": "bwisn",
"usb": {
- "vid": "0xFEED",
+ "vid": "0xAC20",
"device_version": "13.3.7"
},
"layouts": {
diff --git a/keyboards/arabica37/keymaps/default/config.h b/keyboards/arabica37/keymaps/default/config.h
index 57ce4cc0c1..5654f4daf4 100644
--- a/keyboards/arabica37/keymaps/default/config.h
+++ b/keyboards/arabica37/keymaps/default/config.h
@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 170
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -42,7 +42,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 50
+#define RGBLIGHT_LED_COUNT 50
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
diff --git a/keyboards/argyle/matrix.c b/keyboards/argyle/matrix.c
index 7430c6d9d8..d723392a01 100644
--- a/keyboards/argyle/matrix.c
+++ b/keyboards/argyle/matrix.c
@@ -78,9 +78,9 @@ static void init_pins(void) {
unselect_rows();
// Set I/O
uint8_t send_data = 0xFF;
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20);
// Set Pull-up
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20);
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if (col_pins[x] != NO_PIN) {
@@ -111,7 +111,7 @@ static bool matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t curre
matrix_output_select_delay();
uint8_t port_expander_buffer;
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &port_expander_buffer, 1, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &port_expander_buffer, 1, 20);
// For each col...
// matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
diff --git a/keyboards/atlantis/ak81_ve/config.h b/keyboards/atlantis/ak81_ve/config.h
index c6e12504a3..374119935e 100644
--- a/keyboards/atlantis/ak81_ve/config.h
+++ b/keyboards/atlantis/ak81_ve/config.h
@@ -22,52 +22,4 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true
#define RGB_MATRIX_LED_COUNT 96
-#define RGB_MATRIX_DEFAULT_HUE 170
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-#define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-#define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-#define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-#define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-#define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-#define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-#define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
-#define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Single hue fractal filled keys pulsing horizontally out to edges
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN // Randomly light keys with random hues
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-#define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
diff --git a/keyboards/atlantis/ak81_ve/info.json b/keyboards/atlantis/ak81_ve/info.json
index 1a2d1eebe1..a6b78bb5a8 100644
--- a/keyboards/atlantis/ak81_ve/info.json
+++ b/keyboards/atlantis/ak81_ve/info.json
@@ -9,7 +9,56 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "hue": 170
+ },
+ "driver": "ws2812",
+ "max_brightness": 130,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F0", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "B2", "B7", "D3", "D2", "D1", "D0", "B3"],
diff --git a/keyboards/atlantis/ps17/config.h b/keyboards/atlantis/ps17/config.h
index a41720aeb5..8b2691b751 100644
--- a/keyboards/atlantis/ps17/config.h
+++ b/keyboards/atlantis/ps17/config.h
@@ -7,46 +7,3 @@
#define LED_INDICATOR_0_PIN D0
#define LED_INDICATOR_1_PIN D5
#define LED_INDICATOR_2_PIN D4
-
-/* RGB matrix */
-#define RGB_MATRIX_LED_COUNT 28
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#ifdef RGB_MATRIX_ENABLE
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- // #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- // #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- // #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- // #define ENABLE_RGB_MATRIX_BREATHING
- // #define ENABLE_RGB_MATRIX_BAND_SAT
- // #define ENABLE_RGB_MATRIX_BAND_VAL
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- // #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- // #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- // #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- // #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- // #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- // #define ENABLE_RGB_MATRIX_RAINDROPS
- // #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- // #define ENABLE_RGB_MATRIX_HUE_BREATHING
- // #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- // #define ENABLE_RGB_MATRIX_HUE_WAVE
- // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#endif
diff --git a/keyboards/atlantis/ps17/info.json b/keyboards/atlantis/ps17/info.json
index 5a85dec5b4..ac8f979d39 100644
--- a/keyboards/atlantis/ps17/info.json
+++ b/keyboards/atlantis/ps17/info.json
@@ -64,6 +64,12 @@
}
},
"rgb_matrix": {
+ "animations": {
+ "cycle_all": true,
+ "cycle_pinwheel": true,
+ "rainbow_beacon": true,
+ "pixel_rain": true
+ },
"driver": "ws2812",
"center_point": [126, 126],
"layout": [
@@ -96,6 +102,7 @@
{"flags": 2, "x": 192, "y": 87},
{"flags": 2, "x": 183, "y": 26},
{"flags": 2, "x": 127, "y": 24}
- ]
+ ],
+ "sleep": true
}
}
diff --git a/keyboards/axolstudio/yeti/hotswap/config.h b/keyboards/axolstudio/yeti/hotswap/config.h
index 02077e05a7..2c238e3854 100644
--- a/keyboards/axolstudio/yeti/hotswap/config.h
+++ b/keyboards/axolstudio/yeti/hotswap/config.h
@@ -17,50 +17,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* RGB Matrix */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_SOLID_COLOR
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // 16 is equivalent to limiting to 60fps
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 64
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/axolstudio/yeti/hotswap/hotswap.c b/keyboards/axolstudio/yeti/hotswap/hotswap.c
index 527bec17ee..dd65a16a80 100644
--- a/keyboards/axolstudio/yeti/hotswap/hotswap.c
+++ b/keyboards/axolstudio/yeti/hotswap/hotswap.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, B_1, A_1, C_1 },
{ 0, B_2, A_2, C_2 },
{ 0, B_3, A_3, C_3 },
diff --git a/keyboards/axolstudio/yeti/hotswap/info.json b/keyboards/axolstudio/yeti/hotswap/info.json
index 9b782c88c9..d89d690360 100644
--- a/keyboards/axolstudio/yeti/hotswap/info.json
+++ b/keyboards/axolstudio/yeti/hotswap/info.json
@@ -9,7 +9,42 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "breathing": true,
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "band_val": true,
+ "band_pinwheel_val": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_beacon": true,
+ "rainbow_beacon": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "pixel_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": true,
+ "typing_heatmap": true,
+ "digital_rain": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multicross": true,
+ "solid_reactive_multinexus": true,
+ "multisplash": true,
+ "solid_multisplash": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5"],
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/bajjak/bajjak.c b/keyboards/bajjak/bajjak.c
index 74e2b2aa8c..e6102e817b 100644
--- a/keyboards/bajjak/bajjak.c
+++ b/keyboards/bajjak/bajjak.c
@@ -137,23 +137,16 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- i2c_stop();
-
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b01111111, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
-
-out:
- i2c_stop();
+ uint8_t data[] = {0b00000000, 0b00111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, BAJJAK_EZ_I2C_TIMEOUT);
+
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, BAJJAK_EZ_I2C_TIMEOUT);
+ }
#ifdef LEFT_LEDS
if (!mcp23018_status) mcp23018_status = bajjak_left_leds_update();
@@ -176,21 +169,11 @@ uint8_t bajjak_left_leds_update(void) {
// - unused : hi-Z : 1
// - input : hi-Z : 1
// - driving : hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(OLATA, BAJJAK_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111
- & ~(bajjak_left_led_1<<LEFT_LED_1_SHIFT),
- BAJJAK_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111
- & ~(bajjak_left_led_2<<LEFT_LED_2_SHIFT),
- BAJJAK_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
-
- out:
- i2c_stop();
+ uint8_t data[2];
+ data[0] = 0b11111111 & ~(bajjak_left_led_1<<LEFT_LED_1_SHIFT);
+ data[1] = 0b11111111 & ~(bajjak_left_led_2<<LEFT_LED_2_SHIFT);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, OLATA, data, 2, BAJJAK_EZ_I2C_TIMEOUT);
+
return mcp23018_status;
}
#endif
diff --git a/keyboards/bajjak/bajjak.h b/keyboards/bajjak/bajjak.h
index 52f14ad3ea..c2d2d77ef6 100644
--- a/keyboards/bajjak/bajjak.h
+++ b/keyboards/bajjak/bajjak.h
@@ -27,9 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "i2c_master.h"
// I2C aliases and register addresses (see "mcp23018.md")
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0b0100000<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/bajjak/matrix.c b/keyboards/bajjak/matrix.c
index 20fc3c8f23..424bc29e4e 100644
--- a/keyboards/bajjak/matrix.c
+++ b/keyboards/bajjak/matrix.c
@@ -145,12 +145,7 @@ static matrix_row_t read_cols(uint8_t row) {
uint8_t data = 0;
// reading GPIOB (column port) since in mcp23018's sequential mode
// it is addressed directly after writing to GPIOA in select_row()
- mcp23018_status = i2c_start(I2C_ADDR_READ, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
- data = ~((uint8_t)mcp23018_status);
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
+ mcp23018_status = i2c_receive(I2C_ADDR, &data, 1, BAJJAK_EZ_I2C_TIMEOUT);
return data;
}
} else {
@@ -195,11 +190,10 @@ static void select_row(uint8_t row) {
if (!mcp23018_status) {
// set active row low : 0
// set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0xFF & ~(1 << row), BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data;
+ data = 0xFF & ~(1 << row);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, BAJJAK_EZ_I2C_TIMEOUT);
+
}
} else {
// select on teensy
diff --git a/keyboards/bandominedoni/bandominedoni.c b/keyboards/bandominedoni/bandominedoni.c
index 47be95a62b..2884e41c9c 100644
--- a/keyboards/bandominedoni/bandominedoni.c
+++ b/keyboards/bandominedoni/bandominedoni.c
@@ -97,11 +97,11 @@ static enum { UNKNOWN, LEFT, RIGHT } hand_side = UNKNOWN;
hand_side = readPin(SPLIT_HAND_PIN) ? LEFT : RIGHT;
return (hand_side == LEFT);
#elif defined(SPLIT_HAND_MATRIX_GRID)
-# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
- hand_side = peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID) ? LEFT : RIGHT;
+# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
+ hand_side = peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID) ? RIGHT : LEFT;
return (hand_side == LEFT);
# else
- hand_side = peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID) ? RIGHT : LEFT;
+ hand_side = peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID) ? LEFT : RIGHT;
return (hand_side == LEFT);
# endif
#elif defined(EE_HANDS)
diff --git a/keyboards/bandominedoni/config.h b/keyboards/bandominedoni/config.h
index 7dfa48fbd4..ecab8fc61f 100644
--- a/keyboards/bandominedoni/config.h
+++ b/keyboards/bandominedoni/config.h
@@ -19,23 +19,16 @@
#ifndef MASTER_RIGHT
// SPLIT_HAND_MATRIX_GRID was initially designed to use with left hand side diode D35 mounted and not pressing K7 on the right hand side during boot. However when a USB cable is reconnected immediately, it fails. Decided to use "MASTER_RIGHT" to make it more reliable.
# define SPLIT_HAND_MATRIX_GRID B5, D0
+# define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
#endif
#define SPLIT_USB_DETECT
#ifdef RGB_MATRIX_ENABLE
-
-/* ws2812 RGB MATRIX */
-# define RGB_MATRIX_LED_COUNT 76
-
- // reacts to keypresses
-# define RGB_MATRIX_KEYPRESSES
-
// for all fingers used at once.
# define LED_HITS_TO_REMEMBER 10
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
-// the above brighness setting has no effect on rgb_matrix_set_color().
+// the max brightness setting has no effect on rgb_matrix_set_color().
// Use darker colors instead.
/* RGB darker COLORS */
# define RGB_DARKWHITE 0x33, 0x33, 0x33
@@ -58,8 +51,6 @@
# define RGB_DARKPINK 0x33, 0x19, 0x26
// https://docs.qmk.fm/#/feature_rgb_matrix
-// Enable suspend mode.
-# define RGB_DISABLE_WHEN_USB_SUSPENDED true
# ifdef CONSOLE_ENABLE
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
@@ -84,7 +75,7 @@
// RAINDROPS don't match well with layer LED indicator (oc) using rgb_matrix_set_color().
// #define ENABLE_RGB_MATRIX_RAINDROPS
// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// Recommendend not to use these.
+// Recommended not to use these.
# ifndef VIA_ENABLE
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_BAND_VAL
diff --git a/keyboards/bandominedoni/info.json b/keyboards/bandominedoni/info.json
index aa5b2f9a2f..deea0f3e5e 100644
--- a/keyboards/bandominedoni/info.json
+++ b/keyboards/bandominedoni/info.json
@@ -9,7 +9,9 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 50,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D1", "E6", "F7", "B1", "B3", "B2", "D0"],
diff --git a/keyboards/barleycorn_smd/matrix.c b/keyboards/barleycorn_smd/matrix.c
index b717452f3d..315093c8a9 100644
--- a/keyboards/barleycorn_smd/matrix.c
+++ b/keyboards/barleycorn_smd/matrix.c
@@ -42,9 +42,9 @@ static void init_pins(void) {
unselect_rows();
// Set I/O
uint8_t send_data[2] = { 0xFF, 0x03};
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20);
// Set Pull-up
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20);
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if ( x < 8 ) {
@@ -75,7 +75,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
matrix_io_delay();
uint8_t port_expander_col_buffer[2];
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20);
// For each col...
for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
diff --git a/keyboards/basekeys/trifecta/config.h b/keyboards/basekeys/trifecta/config.h
index 341f6f03e0..584a6e4bfc 100644
--- a/keyboards/basekeys/trifecta/config.h
+++ b/keyboards/basekeys/trifecta/config.h
@@ -16,75 +16,8 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 80
-
/* 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
-
-/* EEPROM for via */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-//# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-
-/* Disable the animations you don't want/need. You will need to disable a good number of these *
- * because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
diff --git a/keyboards/basekeys/trifecta/info.json b/keyboards/basekeys/trifecta/info.json
index 338eb1ae90..d9afe40a0c 100644
--- a/keyboards/basekeys/trifecta/info.json
+++ b/keyboards/basekeys/trifecta/info.json
@@ -46,11 +46,57 @@
"rgb_matrix": {
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "max_brightness": 150,
+ "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
+ }
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
- "layouts": {
+ "layouts": {
"LAYOUT": {
"layout": [
{"matrix": [1, 0], "x": 0, "y": 0},
diff --git a/keyboards/bastardkb/charybdis/3x5/config.h b/keyboards/bastardkb/charybdis/3x5/config.h
index e373627d51..1c952759a7 100644
--- a/keyboards/bastardkb/charybdis/3x5/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/config.h
@@ -20,10 +20,3 @@
/* Trackball angle adjustment. */
#define ROTATIONAL_TRANSFORM_ANGLE -25
-
-/* RGB settings. */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 36
-# define RGB_MATRIX_SPLIT \
- { 18, 18 }
-#endif
diff --git a/keyboards/bastardkb/charybdis/3x5/info.json b/keyboards/bastardkb/charybdis/3x5/info.json
index cc233f3568..9627b9852f 100644
--- a/keyboards/bastardkb/charybdis/3x5/info.json
+++ b/keyboards/bastardkb/charybdis/3x5/info.json
@@ -5,6 +5,9 @@
"pid": "0x1832",
"vid": "0xA8F8"
},
+ "rgb_matrix": {
+ "split_count": [18, 18]
+ },
"layout_aliases": {
"LAYOUT_charybdis_3x5": "LAYOUT"
},
diff --git a/keyboards/bastardkb/charybdis/3x6/config.h b/keyboards/bastardkb/charybdis/3x6/config.h
index ba729aee3e..1c952759a7 100644
--- a/keyboards/bastardkb/charybdis/3x6/config.h
+++ b/keyboards/bastardkb/charybdis/3x6/config.h
@@ -20,10 +20,3 @@
/* Trackball angle adjustment. */
#define ROTATIONAL_TRANSFORM_ANGLE -25
-
-/* RGB settings. */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 42
-# define RGB_MATRIX_SPLIT \
- { 21, 21 }
-#endif
diff --git a/keyboards/bastardkb/charybdis/3x6/info.json b/keyboards/bastardkb/charybdis/3x6/info.json
index 787e3bdf14..3597e72534 100644
--- a/keyboards/bastardkb/charybdis/3x6/info.json
+++ b/keyboards/bastardkb/charybdis/3x6/info.json
@@ -3,10 +3,13 @@
"usb": {
"pid": "0x1834"
},
+ "rgb_matrix": {
+ "split_count": [21, 21]
+ },
"layout_aliases": {
"LAYOUT_charybdis_3x6": "LAYOUT"
},
- "layouts": {
+ "layouts": {
"LAYOUT": {
"layout": [
{"label": "L00", "matrix": [0, 0], "x": 0, "y": 0},
diff --git a/keyboards/bastardkb/charybdis/4x6/config.h b/keyboards/bastardkb/charybdis/4x6/config.h
index 64b5158698..1c952759a7 100644
--- a/keyboards/bastardkb/charybdis/4x6/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/config.h
@@ -20,10 +20,3 @@
/* Trackball angle adjustment. */
#define ROTATIONAL_TRANSFORM_ANGLE -25
-
-/* RGB settings. */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 58
-# define RGB_MATRIX_SPLIT \
- { 29, 29 }
-#endif
diff --git a/keyboards/bastardkb/charybdis/4x6/info.json b/keyboards/bastardkb/charybdis/4x6/info.json
index 8259e96141..54bb564306 100644
--- a/keyboards/bastardkb/charybdis/4x6/info.json
+++ b/keyboards/bastardkb/charybdis/4x6/info.json
@@ -5,6 +5,9 @@
"pid": "0x1833",
"vid": "0xA8F8"
},
+ "rgb_matrix": {
+ "split_count": [29, 29]
+ },
"layout_aliases": {
"LAYOUT_charybdis_4x6": "LAYOUT"
},
diff --git a/keyboards/bastardkb/charybdis/config.h b/keyboards/bastardkb/charybdis/config.h
index 2cd4394da0..32ab7b0ebb 100644
--- a/keyboards/bastardkb/charybdis/config.h
+++ b/keyboards/bastardkb/charybdis/config.h
@@ -18,7 +18,6 @@
#pragma once
-
/* Pointing device configuration. */
// Enable use of pointing device on slave split.
@@ -35,21 +34,6 @@
/* RGB matrix support. */
#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-
-// Startup values.
-# define RGB_MATRIX_DEFAULT_VAL 64
-
-// Rainbow swirl as startup mode.
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-// Slow swirl at startup.
-# define RGB_MATRIX_DEFAULT_SPD 32
-
# ifndef __arm__
// Disable control of RGB matrix by keycodes (must use firmware implementation
// to control the feature).
diff --git a/keyboards/bastardkb/charybdis/info.json b/keyboards/bastardkb/charybdis/info.json
new file mode 100644
index 0000000000..6a4ed7c9f7
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/info.json
@@ -0,0 +1,19 @@
+{
+ "rgb_matrix": {
+ "animations": {
+ "cycle_left_right": true
+ },
+ "default": {
+ "speed": 32,
+ "val": 64
+ },
+ "sleep": true
+ },
+ "split": {
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c
index b9787f473e..0a5ba15181 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c
+++ b/keyboards/bastardkb/dilemma/3x5_3/3x5_3.c
@@ -2,6 +2,7 @@
* Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
+ * Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Publicw License as published by
@@ -19,65 +20,74 @@
#include "quantum.h"
-/**
- * LEDs index.
- *
- * ╭────────────────────╮ ╭────────────────────╮
- * 2 3 8 9 12 30 27 26 21 20
- * ├────────────────────┤ ├────────────────────┤
- * 1 4 7 10 13 31 28 25 22 19
- * ├────────────────────┤ ├────────────────────┤
- * 0 5 6 11 14 32 29 24 23 18
- * ╰────────────────────╯ ╰────────────────────╯
- * 15 16 17 35 34 33
- * ╰────────────╯ ╰────────────╯
- */
-// clang-format off
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ switch (index) {
+ case 0: // Left-half encoder, mouse scroll.
+ tap_code(clockwise ? KC_MS_WH_UP : KC_MS_WH_DOWN);
+ break;
+ case 1: // Right-half encoder, volume control.
+ tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN);
+ break;
+ }
+ return true;
+}
+#endif // ENCODER_ENABLE
+
#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
- /* Key Matrix to LED index. */
- // Left split.
- { 2, 3, 8, 9, 12 }, // Top row
- { 1, 4, 7, 10, 13 }, // Middle row
- { 0, 5, 6, 11, 14 }, // Bottom row
- { 17, NO_LED, 15, 16, NO_LED }, // Thumb cluster
- // Right split.
- { 20, 21, 26, 27, 30 }, // Top row
- { 19, 22, 25, 28, 31 }, // Middle row
- { 18, 23, 24, 29, 32 }, // Bottom row
- { 35, NO_LED, 33, 34, NO_LED }, // Thumb cluster
-}, {
- /* LED index to physical position. */
- // Left split.
- /* index=0 */ { 0, 42 }, { 0, 21 }, { 0, 0 }, // col 1 (left most)
- /* index=3 */ { 18, 0 }, { 18, 21 }, { 18, 42 }, // col 2
- /* index=6 */ { 36, 42 }, { 36, 21 }, { 36, 0 },
- /* index=9 */ { 54, 0 }, { 54, 21 }, { 54, 42 },
- /* index=12 */ { 72, 0 }, { 72, 21 }, { 72, 42 },
- /* index=15 */ { 72, 64 }, { 90, 64 }, { 108, 64 }, // Thumb cluster
- // Right split.
- /* index=18 */ { 224, 42 }, { 224, 21 }, { 224, 0 }, // col 10 (right most)
- /* index=21 */ { 206, 0 }, { 206, 21 }, { 206, 42 }, // col 9
- /* index=24 */ { 188, 42 }, { 188, 21 }, { 188, 0 },
- /* index=27 */ { 170, 0 }, { 170, 21 }, { 170, 42 },
- /* index=30 */ { 152, 0 }, { 152, 21 }, { 152, 42 },
- /* index=33 */ { 152, 64 }, { 134, 64 }, { 116, 64 }, // Thumb cluster
-}, {
- /* LED index to flag. */
- // Left split.
- /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1
- /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2
- /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- /* index=15 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster
- // Right split.
- /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10
- /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9
- /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- /* index=33 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster
-} };
-#endif
-// clang-format on
+// Layer state indicator
+bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { return false; }
+ if (host_keyboard_led_state().caps_lock) {
+ for (int i = led_min; i <= led_max; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color(i, MIN(rgb_matrix_get_val() + 76, 255), 0x00, 0x00);
+ }
+ }
+ }
+
+ uint8_t layer = get_highest_layer(layer_state);
+ if (layer > 0) {
+ HSV hsv = rgb_matrix_get_hsv();
+ switch (get_highest_layer(layer_state)) {
+ case 1:
+ hsv = (HSV){HSV_BLUE};
+ break;
+ case 2:
+ hsv = (HSV){HSV_AZURE};
+ break;
+ case 3:
+ hsv = (HSV){HSV_ORANGE};
+ break;
+ case 4:
+ hsv = (HSV){HSV_GREEN};
+ break;
+ case 5:
+ hsv = (HSV){HSV_TEAL};
+ break;
+ case 6:
+ hsv = (HSV){HSV_PURPLE};
+ break;
+ case 7:
+ default:
+ hsv = (HSV){HSV_RED};
+ break;
+ };
+
+ if (hsv.v > rgb_matrix_get_val()) {
+ hsv.v = MIN(rgb_matrix_get_val() + 22, 255);
+ }
+ RGB rgb = hsv_to_rgb(hsv);
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) {
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ }
+ return false;
+};
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/dilemma/3x5_3/config.h b/keyboards/bastardkb/dilemma/3x5_3/config.h
index d25bb07528..7276c6181f 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/config.h
+++ b/keyboards/bastardkb/dilemma/3x5_3/config.h
@@ -1,5 +1,6 @@
/**
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
+ * Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* 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
@@ -21,32 +22,23 @@
#define SPLIT_HAND_PIN GP29
#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+/* VBUS detection. */
+#define USB_VBUS_PIN GP19
+
/* CRC. */
#define CRC8_USE_TABLE
#define CRC8_OPTIMIZE_SPEED
/* Cirque trackpad over SPI. */
+#define SPI_DRIVER SPID0
#define SPI_SCK_PIN GP22
#define SPI_MOSI_PIN GP23
#define SPI_MISO_PIN GP20
#define POINTING_DEVICE_CS_PIN GP21
-
-/* OLED over i2c. */
-#define I2C1_CLOCK_SPEED 400000
-#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9
-#define OLED_DISPLAY_HEIGHT 128
+#undef CIRQUE_PINNACLE_DIAMETER_MM
+#define CIRQUE_PINNACLE_DIAMETER_MM 40
/* Reset. */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
-#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
-
-/* RGB matrix support. */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 36
-# define RGB_MATRIX_SPLIT { 18, 18 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-#endif
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
diff --git a/keyboards/bastardkb/dilemma/3x5_3/halconf.h b/keyboards/bastardkb/dilemma/3x5_3/halconf.h
index b79b0f9e88..57d15376d6 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/halconf.h
+++ b/keyboards/bastardkb/dilemma/3x5_3/halconf.h
@@ -17,7 +17,6 @@
#pragma once
-#define HAL_USE_I2C TRUE
#define HAL_USE_SPI TRUE
#include_next <halconf.h>
diff --git a/keyboards/bastardkb/dilemma/3x5_3/info.json b/keyboards/bastardkb/dilemma/3x5_3/info.json
index 4ab43d6a8e..2da4f1785e 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/info.json
+++ b/keyboards/bastardkb/dilemma/3x5_3/info.json
@@ -2,28 +2,195 @@
"keyboard_name": "Dilemma (3x5+3) Assembled",
"usb": {
"device_version": "2.0.0",
- "pid": "0x1835"
- },
- "rgb_matrix": {
- "driver": "ws2812"
+ "pid": "0x1836"
},
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "GENERIC_RP_RP2040",
"matrix_pins": {
"cols": ["GP8", "GP9", "GP7", "GP6", "GP28"],
"rows": ["GP4", "GP5", "GP27", "GP26"]
},
"diode_direction": "ROW2COL",
"split": {
- "soft_serial_pin": "GP1"
+ "enabled": true,
+ "soft_serial_pin": "GP1",
+ "bootmagic": {
+ "matrix": [4, 0]
+ },
+ "transport":{
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ },
+ "encoder": {
+ "enabled" : true,
+ "rotary" : [
+ {"pin_a": "GP25", "pin_b": "GP24"}
+ ]
},
- "rgblight": {
- "split_count": [18, 18]
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "caps_word": true,
+ "tri_layer": true
},
"ws2812": {
- "pin": "GP0",
+ "pin": "GP10",
"driver": "vendor"
},
- "processor": "RP2040",
- "bootloader": "rp2040",
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "split_count": [36, 36],
+ "max_brightness": 176,
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "speed": 32,
+ "val": 128
+ },
+ "layout": [
+ {"x": 82, "y": 0, "flags": 2},
+ {"x": 60, "y": 0, "flags": 2},
+ {"x": 22, "y": 0, "flags": 2},
+ {"x": 15, "y": 0, "flags": 2},
+
+ {"x": 0, "y": 25, "flags": 2},
+ {"x": 0, "y": 40, "flags": 2},
+ {"x": 0, "y": 55, "flags": 2},
+
+ {"x": 15, "y": 45, "flags": 2},
+ {"x": 30, "y": 45, "flags": 2},
+ {"x": 35, "y": 60, "flags": 2},
+ {"x": 55, "y": 62, "flags": 2},
+
+ {"x": 72, "y": 64, "flags": 2},
+ {"x": 90, "y": 64, "flags": 2},
+ {"x": 98, "y": 47, "flags": 2},
+ {"x": 107, "y": 40, "flags": 2},
+
+ {"x": 110, "y": 33, "flags": 2},
+ {"x": 110, "y": 19, "flags": 2},
+ {"x": 110, "y": 5, "flags": 2},
+
+ {"matrix": [0, 4], "x": 73, "y": 11, "flags": 4},
+ {"matrix": [0, 3], "x": 56, "y": 9, "flags": 4},
+ {"matrix": [0, 2], "x": 39, "y": 5, "flags": 4},
+ {"matrix": [0, 1], "x": 22, "y": 10, "flags": 4},
+ {"matrix": [0, 0], "x": 5, "y": 15, "flags": 1},
+
+ {"matrix": [1, 0], "x": 5, "y": 30, "flags": 1},
+ {"matrix": [1, 1], "x": 22, "y": 25, "flags": 4},
+ {"matrix": [1, 2], "x": 39, "y": 20, "flags": 4},
+ {"matrix": [1, 3], "x": 56, "y": 24, "flags": 4},
+ {"matrix": [1, 4], "x": 73, "y": 26, "flags": 4},
+
+ {"matrix": [2, 4], "x": 73, "y": 41, "flags": 4},
+ {"matrix": [2, 3], "x": 56, "y": 39, "flags": 4},
+ {"matrix": [2, 2], "x": 39, "y": 35, "flags": 4},
+ {"matrix": [2, 1], "x": 22, "y": 40, "flags": 4},
+ {"matrix": [2, 0], "x": 5, "y": 45, "flags": 1},
+
+ {"matrix": [3, 2], "x": 45, "y": 51, "flags": 4},
+ {"matrix": [3, 0], "x": 64, "y": 53, "flags": 4},
+ {"matrix": [3, 1], "x": 81, "y": 60, "flags": 4},
+
+ {"x": 142, "y": 0, "flags": 2},
+ {"x": 164, "y": 0, "flags": 2},
+ {"x": 202, "y": 0, "flags": 2},
+ {"x": 209, "y": 0, "flags": 2},
+
+ {"x": 224, "y": 25, "flags": 2},
+ {"x": 224, "y": 40, "flags": 2},
+ {"x": 224, "y": 55, "flags": 2},
+
+ {"x": 209, "y": 45, "flags": 2},
+ {"x": 194, "y": 45, "flags": 2},
+ {"x": 189, "y": 60, "flags": 2},
+ {"x": 169, "y": 62, "flags": 2},
+
+ {"x": 152, "y": 64, "flags": 2},
+ {"x": 134, "y": 64, "flags": 2},
+ {"x": 126, "y": 47, "flags": 2},
+ {"x": 117, "y": 40, "flags": 2},
+
+ {"x": 114, "y": 33, "flags": 2},
+ {"x": 114, "y": 19, "flags": 2},
+ {"x": 114, "y": 5, "flags": 2},
+
+ {"matrix": [4, 4], "x": 151, "y": 11, "flags": 4},
+ {"matrix": [4, 3], "x": 168, "y": 9, "flags": 4},
+ {"matrix": [4, 2], "x": 185, "y": 5, "flags": 4},
+ {"matrix": [4, 1], "x": 202, "y": 10, "flags": 4},
+ {"matrix": [4, 0], "x": 219, "y": 15, "flags": 1},
+
+ {"matrix": [5, 0], "x": 219, "y": 30, "flags": 1},
+ {"matrix": [5, 1], "x": 202, "y": 25, "flags": 4},
+ {"matrix": [5, 2], "x": 185, "y": 20, "flags": 4},
+ {"matrix": [5, 3], "x": 168, "y": 24, "flags": 4},
+ {"matrix": [5, 4], "x": 151, "y": 26, "flags": 4},
+
+ {"matrix": [6, 4], "x": 151, "y": 41, "flags": 4},
+ {"matrix": [6, 3], "x": 168, "y": 39, "flags": 4},
+ {"matrix": [6, 2], "x": 185, "y": 35, "flags": 4},
+ {"matrix": [6, 1], "x": 202, "y": 40, "flags": 4},
+ {"matrix": [6, 0], "x": 219, "y": 45, "flags": 1},
+
+ {"matrix": [7, 2], "x": 179, "y": 51, "flags": 4},
+ {"matrix": [7, 0], "x": 160, "y": 53, "flags": 4},
+ {"matrix": [7, 1], "x": 143, "y": 60, "flags": 4}
+ ],
+ "sleep": true
+ },
"community_layouts": ["split_3x5_3"],
"layouts": {
"LAYOUT_split_3x5_3": {
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c
index 30fef9bbeb..4185bba7d9 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/default/keymap.c
@@ -24,8 +24,8 @@ enum dilemma_keymap_layers {
LAYER_NUM,
};
-#define NAV MO(LAYER_NAV)
-#define SYM MO(LAYER_SYM)
+#define NAV QK_TRI_LAYER_LOWER
+#define SYM QK_TRI_LAYER_UPPER
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,11 +33,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
// ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
- KC_A, NAV, CW_TOGG, KC_SPC, SYM, KC_A
+ KC_LCTL, NAV, KC_LGUI, KC_SPC, SYM, KC_A
// ╰───────────────────────────╯ ╰──────────────────────────╯
),
@@ -45,11 +45,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_DEL,
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
- KC_LSFT, KC_LCTL, KC_LALT, KC_RGUI, KC_VOLD, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
+ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_VOLD, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
- QK_BOOT, EE_CLR, KC_MPRV, KC_MNXT, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, KC_ENT,
+ QK_BOOT, EE_CLR, KC_MPRV, KC_MNXT, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, KC_ENT,
// ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
- KC_A, _______, KC_LSFT, KC_SPC, _______, KC_A
+ XXXXXXX, _______, KC_LSFT, KC_SPC, _______, KC_ESC
// ╰───────────────────────────╯ ╰──────────────────────────╯
),
@@ -59,9 +59,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
KC_MINS, KC_ASTR, KC_EQL, KC_UNDS, KC_DLR, KC_HASH, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT,
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
- KC_PLUS, KC_PIPE, KC_AT, KC_SLSH, KC_PERC, _______, KC_BSLS, KC_AMPR, KC_QUES, KC_EXLM,
+ KC_PLUS, KC_PIPE, KC_AT, KC_SLSH, KC_PERC, KC_SCLN, KC_BSLS, KC_AMPR, KC_QUES, KC_EXLM,
// ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
- KC_A, _______, KC_LSFT, KC_SPC, _______, KC_A
+ KC_ESC, _______, KC_LSFT, KC_SPC, _______, XXXXXXX
// ╰───────────────────────────╯ ╰──────────────────────────╯
),
@@ -73,12 +73,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
// ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
- KC_A, _______, KC_LSFT, KC_SPC, _______, KC_A
+ XXXXXXX, _______, KC_LSFT, KC_SPC, _______, XXXXXXX
// ╰───────────────────────────╯ ╰──────────────────────────╯
),
};
// clang-format on
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- return update_tri_layer_state(state, LAYER_NAV, LAYER_SYM, LAYER_NUM);
-}
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/config.h b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/config.h
new file mode 100644
index 0000000000..790d6bf751
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/config.h
@@ -0,0 +1,23 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ * Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
+ *
+ * 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 DYNAMIC_KEYMAP_LAYER_COUNT 8
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..dacef2231e
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/keymap.c
@@ -0,0 +1,170 @@
+/**
+ * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
+ * Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
+ *
+ * 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 dilemma_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_FUNCTION,
+ LAYER_NAVIGATION,
+ LAYER_MEDIA,
+ LAYER_POINTER,
+ LAYER_NUMERAL,
+ LAYER_SYMBOLS,
+};
+
+// Automatically enable sniping-mode on the pointer layer.
+// #define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+
+#define ESC_MED LT(LAYER_MEDIA, KC_ESC)
+#define SPC_NAV LT(LAYER_NAVIGATION, KC_SPC)
+#define TAB_FUN LT(LAYER_FUNCTION, KC_TAB)
+#define ENT_SYM LT(LAYER_SYMBOLS, KC_ENT)
+#define BSP_NUM LT(LAYER_NUMERAL, KC_BSPC)
+#define PT_Z LT(LAYER_POINTER, KC_Z)
+#define PT_SLSH LT(LAYER_POINTER, KC_SLSH)
+
+#ifndef POINTING_DEVICE_ENABLE
+# define DRGSCRL KC_NO
+# define DPI_MOD KC_NO
+# define S_D_MOD KC_NO
+# define SNIPING KC_NO
+#endif // !POINTING_DEVICE_ENABLE
+
+// clang-format off
+/** \brief QWERTY layout (3 rows, 10 columns). */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, RSFT_T(KC_J), RCTL_T(KC_K), RALT_T(KC_L), RGUI_T(KC_QUOT),
+ PT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, PT_SLSH,
+ ESC_MED, TAB_FUN, SPC_NAV, ENT_SYM, BSP_NUM, KC_MUTE
+ ),
+
+/*
+ * Layers used on the Dilemma.
+ *
+ * These layers started off heavily inspired by the Miryoku layout, but trimmed
+ * down and tailored for a stock experience that is meant to be fundation for
+ * further personalization.
+ *
+ * See https://github.com/manna-harbour/miryoku for the original layout.
+ */
+
+/**
+ * \brief Function layer.
+ *
+ * Secondary right-hand layer has function keys mirroring the numerals on the
+ * primary layer with extras on the pinkie column, plus system keys on the inner
+ * column. App is on the tertiary thumb key and other thumb keys are duplicated
+ * from the base layer to enable auto-repeat.
+ */
+ [LAYER_FUNCTION] = LAYOUT_split_3x5_3(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12,
+ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_SCRL, KC_F4, KC_F5, KC_F6, KC_F11,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10,
+ XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+
+/**
+ * \brief Navigation layer.
+ *
+ * Primary right-hand layer (left home thumb) is navigation and editing. Cursor
+ * keys are on the home position, line and page movement below, clipboard above,
+ * caps lock and insert on the inner column. Thumb keys are duplicated from the
+ * base layer to avoid having to layer change mid edit and to enable auto-repeat.
+ */
+ [LAYER_NAVIGATION] = LAYOUT_split_3x5_3(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
+ XXXXXXX, XXXXXXX, _______, KC_ENT, KC_BSPC, KC_DEL
+ ),
+
+/**
+ * \brief Media layer.
+ *
+ * Tertiary left- and right-hand layer is media and RGB control. This layer is
+ * symmetrical to accomodate the left- and right-hand trackball.
+ */
+ [LAYER_MEDIA] = LAYOUT_split_3x5_3(
+ XXXXXXX,RGB_RMOD, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX,RGB_RMOD, RGB_TOG, RGB_MOD, XXXXXXX,
+ KC_MPRV, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_MPRV, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_MPLY, KC_MSTP, KC_MSTP, KC_MPLY, KC_MUTE
+ ),
+
+/** \brief Mouse emulation and pointer functions. */
+ [LAYER_POINTER] = LAYOUT_split_3x5_3(
+ QK_BOOT, EE_CLR, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, EE_CLR, QK_BOOT,
+ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
+ _______, DRGSCRL, SNIPING, KC_BTN3, XXXXXXX, XXXXXXX, KC_BTN3, SNIPING, DRGSCRL, _______,
+ KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2, KC_BTN3
+ ),
+
+/**
+ * \brief Numeral layout.
+ *
+ * Primary left-hand layer (right home thumb) is numerals and symbols. Numerals
+ * are in the standard numpad locations with symbols in the remaining positions.
+ * `KC_DOT` is duplicated from the base layer.
+ */
+ [LAYER_NUMERAL] = LAYOUT_split_3x5_3(
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
+ KC_DOT, KC_1, KC_2, KC_3, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_DOT, KC_MINS, KC_0, XXXXXXX, _______, XXXXXXX
+ ),
+
+/**
+ * \brief Symbols layer.
+ *
+ * Secondary left-hand layer has shifted symbols in the same locations to reduce
+ * chording when using mods with shifted symbols. `KC_LPRN` is duplicated next to
+ * `KC_RPRN`.
+ */
+ [LAYER_SYMBOLS] = LAYOUT_split_3x5_3(
+ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LPRN, KC_GRV, KC_UNDS, _______, XXXXXXX, XXXXXXX
+ ),
+};
+// clang-format on
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifdef DILEMMA_AUTO_SNIPING_ON_LAYER
+layer_state_t layer_state_set_user(layer_state_t state) {
+ dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
+ return state;
+}
+# endif // DILEMMA_AUTO_SNIPING_ON_LAYER
+#endif // POINTING_DEVICE_ENABLE
+
+#ifdef ENCODER_MAP_ENABLE
+// clang-format off
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [LAYER_BASE] = {ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [LAYER_FUNCTION] = {ENCODER_CCW_CW(KC_DOWN, KC_UP), ENCODER_CCW_CW(KC_LEFT, KC_RGHT)},
+ [LAYER_NAVIGATION] = {ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)},
+ [LAYER_POINTER] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI)},
+ [LAYER_NUMERAL] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI)},
+ [LAYER_SYMBOLS] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_LEFT, KC_RGHT)},
+};
+// clang-format on
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/readme.md b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/readme.md
new file mode 100644
index 0000000000..4552f0948d
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/readme.md
@@ -0,0 +1,47 @@
+# Dilemma `via` keymap
+
+The Dilemma `via` keymap is based on a QWERTY layout with [home row mods](https://precondition.github.io/home-row-mods) and [Miryoku-inspired layers](https://github.com/manna-harbour/miryoku), and some features and changes specific to the Dilemma.
+
+This layout also supports VIA.
+
+## Customizing the keymap
+
+### Dynamic DPI scaling
+
+Use the following keycodes to change the default DPI:
+
+- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 16 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
+
+Use the following keycodes to change the sniping mode DPI:
+
+- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 4 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
+
+### Drag-scroll
+
+Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press.
+
+### Circular scroll
+
+By default, the firmware is configured to enable the circular scroll feature on Cirque trackpad.
+
+To disable this, add the following to your keymap:
+
+```c
+#undef POINTING_DEVICE_GESTURES_SCROLL_ENABLE
+```
+
+### Sniping
+
+Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press.
+
+Change the value of `DILEMMA_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer:
+
+```c
+#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+``` \ No newline at end of file
diff --git a/keyboards/lpad/keymaps/via/rules.mk b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/rules.mk
index f1adcab005..f1adcab005 100644
--- a/keyboards/lpad/keymaps/via/rules.mk
+++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/via/rules.mk
diff --git a/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h
index f194dd225c..52b726a56d 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h
+++ b/keyboards/bastardkb/dilemma/3x5_3/mcuconf.h
@@ -19,8 +19,5 @@
#include_next <mcuconf.h>
-#undef RP_SPI_USE_SPI1
-#define RP_SPI_USE_SPI1 TRUE
-
-#undef RP_I2C_USE_I2C1
-#define RP_I2C_USE_I2C1 TRUE
+#undef RP_SPI_USE_SPI0
+#define RP_SPI_USE_SPI0 TRUE
diff --git a/keyboards/bastardkb/dilemma/3x5_3/readme.md b/keyboards/bastardkb/dilemma/3x5_3/readme.md
index bfddbc9efc..b57df90921 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/readme.md
+++ b/keyboards/bastardkb/dilemma/3x5_3/readme.md
@@ -1,5 +1,5 @@
-# Next generation Dilemma keyboard
+# Dilemma v2 (3x5+3 assembled)
This keyboard is an updated version of the [3x5+2 Dilemma](../3x5_2/).
-This is still under active development, and not available publicly yet.
+The Dilemma v2 is available at [bastardkb.com](https://bastardkb.com).
diff --git a/keyboards/bastardkb/dilemma/3x5_3/rules.mk b/keyboards/bastardkb/dilemma/3x5_3/rules.mk
index 3cdb41160c..4923c2c84a 100644
--- a/keyboards/bastardkb/dilemma/3x5_3/rules.mk
+++ b/keyboards/bastardkb/dilemma/3x5_3/rules.mk
@@ -1,24 +1,4 @@
-# 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
-
-AUDIO_SUPPORTED = no # Audio is not supported
-RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default
-RGBLIGHT_SUPPORTED = no # RGB underglow is supported, but not enabled by default
-RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality
-
SERIAL_DRIVER = vendor
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
-
-SPLIT_KEYBOARD = yes
diff --git a/keyboards/bastardkb/dilemma/4x6_4/config.h b/keyboards/bastardkb/dilemma/4x6_4/config.h
index 9c76cb76f9..549965444d 100644
--- a/keyboards/bastardkb/dilemma/4x6_4/config.h
+++ b/keyboards/bastardkb/dilemma/4x6_4/config.h
@@ -44,11 +44,4 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
/* RGB matrix support. */
-#define SPLIT_TRANSPORT_MIRROR
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// Startup values.
-#define RGB_MATRIX_DEFAULT_VAL 64
-#define RGB_MATRIX_DEFAULT_SPD 32
+#define SPLIT_TRANSPORT_MIRROR \ No newline at end of file
diff --git a/keyboards/bastardkb/dilemma/4x6_4/info.json b/keyboards/bastardkb/dilemma/4x6_4/info.json
index ba07a7fccf..cc8c30b510 100644
--- a/keyboards/bastardkb/dilemma/4x6_4/info.json
+++ b/keyboards/bastardkb/dilemma/4x6_4/info.json
@@ -17,6 +17,11 @@
"soft_serial_pin": "GP1",
"bootmagic": {
"matrix": [5, 0]
+ },
+ "transport":{
+ "sync": {
+ "matrix_state": true
+ }
}
},
"encoder": {
@@ -46,7 +51,6 @@
"max_brightness": 176,
"center_point": [112, 28],
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
@@ -91,6 +95,10 @@
"solid_splash": true,
"solid_multisplash": true
},
+ "default": {
+ "speed": 32,
+ "val": 128
+ },
"layout": [
{"x": 81, "y": 4, "flags": 2},
{"x": 65, "y": 2, "flags": 2},
@@ -199,7 +207,8 @@
{"matrix": [9, 2], "x": 156, "y": 53, "flags": 4},
{"matrix": [9, 1], "x": 143, "y": 57, "flags": 4},
{"matrix": [9, 3], "x": 132, "y": 64, "flags": 4}
- ]
+ ],
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/bastardkb/dilemma/config.h b/keyboards/bastardkb/dilemma/config.h
index d282c635ea..0da85ec99a 100644
--- a/keyboards/bastardkb/dilemma/config.h
+++ b/keyboards/bastardkb/dilemma/config.h
@@ -26,6 +26,9 @@
// Pointing device is on the right split.
#define POINTING_DEVICE_RIGHT
+// Enables support for extended i16 mouse reports (instead of i8).
+#define MOUSE_EXTENDED_REPORT
+
// Limits the frequency that the sensor is polled for motion.
#define POINTING_DEVICE_TASK_THROTTLE_MS 10
diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h
deleted file mode 100644
index ec538f8a55..0000000000
--- a/keyboards/bastardkb/scylla/config.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
- * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
- *
- * 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
-
-/* RGB matrix support. */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 58
-# define RGB_MATRIX_SPLIT { 29, 29 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-#endif
diff --git a/keyboards/bastardkb/scylla/info.json b/keyboards/bastardkb/scylla/info.json
index 24a0262bee..6508c15b5a 100644
--- a/keyboards/bastardkb/scylla/info.json
+++ b/keyboards/bastardkb/scylla/info.json
@@ -3,10 +3,22 @@
"usb": {
"pid": "0x1829"
},
+ "rgb_matrix": {
+ "max_brightness": 50,
+ "sleep": true,
+ "split_count": [29, 29]
+ },
"rgblight": {
"led_count": 58,
"split_count": [29, 29]
},
+ "split": {
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ },
"layouts": {
"LAYOUT_split_4x6_5": {
"layout": [
diff --git a/keyboards/bastardkb/skeletyl/config.h b/keyboards/bastardkb/skeletyl/config.h
deleted file mode 100644
index 58dacb5c53..0000000000
--- a/keyboards/bastardkb/skeletyl/config.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
- * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
- *
- * 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
-
-/* RGB matrix support. */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 36
-# define RGB_MATRIX_SPLIT { 18, 18 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-#endif
diff --git a/keyboards/bastardkb/skeletyl/info.json b/keyboards/bastardkb/skeletyl/info.json
index b4bb9ea78e..e4ac29207d 100644
--- a/keyboards/bastardkb/skeletyl/info.json
+++ b/keyboards/bastardkb/skeletyl/info.json
@@ -3,10 +3,22 @@
"usb": {
"pid": "0x1830"
},
+ "rgb_matrix": {
+ "max_brightness": 50,
+ "sleep": true,
+ "split_count": [18, 18]
+ },
"rgblight": {
"led_count": 36,
"split_count": [18, 18]
},
+ "split": {
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ },
"community_layouts": ["split_3x5_3"],
"layouts": {
"LAYOUT_split_3x5_3": {
diff --git a/keyboards/bastardkb/tbkmini/config.h b/keyboards/bastardkb/tbkmini/config.h
deleted file mode 100644
index 1a1540b280..0000000000
--- a/keyboards/bastardkb/tbkmini/config.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
- * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
- *
- * 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
-
-/* RGB matrix support. */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 42
-# define RGB_MATRIX_SPLIT { 21, 21 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-#endif
diff --git a/keyboards/bastardkb/tbkmini/info.json b/keyboards/bastardkb/tbkmini/info.json
index ec0433d387..ff2df9cdd6 100644
--- a/keyboards/bastardkb/tbkmini/info.json
+++ b/keyboards/bastardkb/tbkmini/info.json
@@ -3,10 +3,22 @@
"usb": {
"pid": "0x1828"
},
+ "rgb_matrix": {
+ "max_brightness": 50,
+ "sleep": true,
+ "split_count": [21, 21]
+ },
"rgblight": {
"led_count": 42,
"split_count": [21, 21]
},
+ "split": {
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ },
"community_layouts": ["split_3x6_3"],
"layouts": {
"LAYOUT_split_3x6_3": {
diff --git a/keyboards/beekeeb/piantor/info.json b/keyboards/beekeeb/piantor/info.json
index 7d74c81f45..e4ecd4207e 100644
--- a/keyboards/beekeeb/piantor/info.json
+++ b/keyboards/beekeeb/piantor/info.json
@@ -95,31 +95,31 @@
},
"LAYOUT_split_3x5_3": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.125},
- {"matrix": [0, 2], "x": 2, "y": 0},
- {"matrix": [0, 3], "x": 3, "y": 0.125},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 1], "x": 0, "y": 0.25},
+ {"matrix": [0, 2], "x": 1, "y": 0.125},
+ {"matrix": [0, 3], "x": 2, "y": 0},
+ {"matrix": [0, 4], "x": 3, "y": 0.125},
+ {"matrix": [0, 5], "x": 4, "y": 0.25},
{"matrix": [4, 0], "x": 7, "y": 0.25},
{"matrix": [4, 1], "x": 8, "y": 0.125},
{"matrix": [4, 2], "x": 9, "y": 0},
{"matrix": [4, 3], "x": 10, "y": 0.125},
{"matrix": [4, 4], "x": 11, "y": 0.25},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.125},
- {"matrix": [1, 2], "x": 2, "y": 1},
- {"matrix": [1, 3], "x": 3, "y": 1.125},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 1], "x": 0, "y": 1.25},
+ {"matrix": [1, 2], "x": 1, "y": 1.125},
+ {"matrix": [1, 3], "x": 2, "y": 1},
+ {"matrix": [1, 4], "x": 3, "y": 1.125},
+ {"matrix": [1, 5], "x": 4, "y": 1.25},
{"matrix": [5, 0], "x": 7, "y": 1.25},
{"matrix": [5, 1], "x": 8, "y": 1.125},
{"matrix": [5, 2], "x": 9, "y": 1},
{"matrix": [5, 3], "x": 10, "y": 1.125},
{"matrix": [5, 4], "x": 11, "y": 1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25},
- {"matrix": [2, 1], "x": 1, "y": 2.125},
- {"matrix": [2, 2], "x": 2, "y": 2},
- {"matrix": [2, 3], "x": 3, "y": 2.125},
- {"matrix": [2, 4], "x": 4, "y": 2.25},
+ {"matrix": [2, 1], "x": 0, "y": 2.25},
+ {"matrix": [2, 2], "x": 1, "y": 2.125},
+ {"matrix": [2, 3], "x": 2, "y": 2},
+ {"matrix": [2, 4], "x": 3, "y": 2.125},
+ {"matrix": [2, 5], "x": 4, "y": 2.25},
{"matrix": [6, 0], "x": 7, "y": 2.25},
{"matrix": [6, 1], "x": 8, "y": 2.125},
{"matrix": [6, 2], "x": 9, "y": 2},
diff --git a/keyboards/biacco42/ergo42/keymaps/default-underglow/config.h b/keyboards/biacco42/ergo42/keymaps/default-underglow/config.h
index a56bd0f2e7..2469b627e2 100644
--- a/keyboards/biacco42/ergo42/keymaps/default-underglow/config.h
+++ b/keyboards/biacco42/ergo42/keymaps/default-underglow/config.h
@@ -27,8 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define EE_HANDS
// Underglow
-#undef RGBLED_NUM
-#define RGBLED_NUM 14 // Number of LEDs
+#undef RGBLIGHT_LED_COUNT
+#define RGBLIGHT_LED_COUNT 14 // Number of LEDs
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/binepad/bn006/config.h b/keyboards/binepad/bn006/config.h
index 0569ccff03..01b94d6baa 100755
--- a/keyboards/binepad/bn006/config.h
+++ b/keyboards/binepad/bn006/config.h
@@ -3,68 +3,4 @@
#pragma once
-/*
- * RGB Matrix
- */
-
-#ifdef RGB_MATRIX_ENABLE
- /* ===========================================================================================
- * PLEASE NOTE: Because the BN006 only has 6 keys, not all the animations are visually viable
- * =========================================================================================== */
-
- #define RGB_MATRIX_LED_COUNT 6
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING // Sets the default mode, if none has been set
- #define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
-
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see: https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- // #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- // #define ENABLE_RGB_MATRIX_BAND_SAT
- // #define ENABLE_RGB_MATRIX_BAND_VAL
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- // #define ENABLE_RGB_MATRIX_CYCLE_ALL
- // #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- // #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- // #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- // #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- // #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- // #define ENABLE_RGB_MATRIX_DUAL_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- // #define ENABLE_RGB_MATRIX_RAINDROPS
- // #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- // #define ENABLE_RGB_MATRIX_HUE_BREATHING
- // #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- // #define ENABLE_RGB_MATRIX_HUE_WAVE
- // #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- // #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- // #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- // #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
+#define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
diff --git a/keyboards/binepad/bn006/info.json b/keyboards/binepad/bn006/info.json
index 81e68d2e0c..e5e25b4b90 100755
--- a/keyboards/binepad/bn006/info.json
+++ b/keyboards/binepad/bn006/info.json
@@ -33,6 +33,18 @@
"pin": "B15"
},
"rgb_matrix": {
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "splash": true,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "breathing"
+ },
"driver": "ws2812",
"layout": [
{"flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
@@ -41,7 +53,9 @@
{"flags": 4, "matrix": [1, 0], "x": 0, "y": 64},
{"flags": 4, "matrix": [1, 1], "x": 112, "y": 64},
{"flags": 4, "matrix": [1, 2], "x": 224, "y": 64}
- ]
+ ],
+ "max_brightness": 200,
+ "sleep": true
},
"community_layouts": ["ortho_2x3"],
"layouts": {
diff --git a/keyboards/bioi/bluetooth_custom.c b/keyboards/bioi/bluetooth_custom.c
index 4ea277f731..c3e12d3c6a 100644
--- a/keyboards/bioi/bluetooth_custom.c
+++ b/keyboards/bioi/bluetooth_custom.c
@@ -59,9 +59,7 @@ static void bluefruit_trace_footer(void)
static void bluefruit_serial_send(uint8_t data)
{
#ifdef BLUEFRUIT_TRACE_SERIAL
- dprintf(" ");
- debug_hex8(data);
- dprintf(" ");
+ dprintf(" %02X ", data);
#endif
serial_send(data);
}
@@ -146,11 +144,7 @@ void bluetooth_send_consumer(uint16_t usage)
uint16_t bitmap = CONSUMER2BLUEFRUIT(usage);
#ifdef BLUEFRUIT_TRACE_SERIAL
- dprintf("\nData: ");
- debug_hex16(data);
- dprintf("; bitmap: ");
- debug_hex16(bitmap);
- dprintf("\n");
+ dprintf("\nData: %04X; bitmap: %04X\n", data, bitmap);
bluefruit_trace_header();
#endif
send_str(PSTR("AT+BLEHIDCONTROLKEY=0x"));
diff --git a/keyboards/black_hellebore/config.h b/keyboards/black_hellebore/config.h
index ae0bc0aedb..53910fed09 100644
--- a/keyboards/black_hellebore/config.h
+++ b/keyboards/black_hellebore/config.h
@@ -13,70 +13,12 @@
* 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
-
-
-#ifdef RGB_MATRIX_ENABLE
-
- #define WS2812_PWM_DRIVER PWMD1
- #define WS2812_PWM_CHANNEL 1
- #define WS2812_PWM_PAL_MODE 1 //TIM1_CH1N (AF1)
- #define WS2812_PWM_COMPLEMENTARY_OUTPUT
- #define WS2812_DMA_STREAM STM32_DMA1_STREAM6
- #define WS2812_DMA_CHANNEL 7 //7 works, CxS[3:0] 0111 = TIM1_UP on Channel 6? (RM0394.pdf pg.298)
- #define RGB_MATRIX_LED_COUNT 61 // The number of LEDs connected
-
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
- #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* RGB_MATRIX_FRAMEBUFFER_EFFECTS) */
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- /* RGB_MATRIX_KEYPRESSES) | defined(RGB_MATRIX_KEYRELEASES) */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
+#pragma once
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 1
+#define WS2812_PWM_PAL_MODE 1 //TIM1_CH1N (AF1)
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM6
+#define WS2812_DMA_CHANNEL 7 //7 works, CxS[3:0] 0111 = TIM1_UP on Channel 6? (RM0394.pdf pg.298)
diff --git a/keyboards/black_hellebore/info.json b/keyboards/black_hellebore/info.json
index bc70e3eb98..b59cb8f7b9 100644
--- a/keyboards/black_hellebore/info.json
+++ b/keyboards/black_hellebore/info.json
@@ -29,6 +29,48 @@
"vid": "0x3141"
},
"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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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": [
{"flags": 4, "matrix": [0, 0], "x": 7, "y": 5},
@@ -92,7 +134,8 @@
{"flags": 4, "matrix": [4, 10], "x": 177, "y": 54},
{"flags": 4, "matrix": [4, 11], "x": 196, "y": 54},
{"flags": 4, "matrix": [4, 13], "x": 215, "y": 54}
- ]
+ ],
+ "react_on_keyup": true
},
"layouts": {
"LAYOUT_60_ansi": {
diff --git a/keyboards/blockboy/ac980mini/config.h b/keyboards/blockboy/ac980mini/config.h
deleted file mode 100644
index b98cb7964f..0000000000
--- a/keyboards/blockboy/ac980mini/config.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2022 rooski15 (@rooski15)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-// RGB configuration
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 81
-
-#ifdef RGB_MATRIX_ENABLE
-//# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-//# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-
-/* Enable the animations you want/need. You may need to enable only a small number of these because *
- * they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
-
-/*
- * 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/blockboy/ac980mini/info.json b/keyboards/blockboy/ac980mini/info.json
index 36d6fe5ba9..4bc05236bc 100644
--- a/keyboards/blockboy/ac980mini/info.json
+++ b/keyboards/blockboy/ac980mini/info.json
@@ -19,9 +19,56 @@
"pin": "B7"
},
"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",
"sat_steps": 8,
"val_steps": 8,
+ "max_brightness": 150,
+ "sleep": true,
"speed_steps": 10
},
"layouts": {
diff --git a/keyboards/boardsource/beiwagon/config.h b/keyboards/boardsource/beiwagon/config.h
deleted file mode 100644
index 75b5888bc3..0000000000
--- a/keyboards/boardsource/beiwagon/config.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright 2022 Boardsource
-
-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 RGB_MATRIX_LED_COUNT 18
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/boardsource/beiwagon/info.json b/keyboards/boardsource/beiwagon/info.json
index b02c528867..39a9006b85 100644
--- a/keyboards/boardsource/beiwagon/info.json
+++ b/keyboards/boardsource/beiwagon/info.json
@@ -25,6 +25,40 @@
"vid": "0x4273"
},
"rgb_matrix": {
+ "animations":{
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_pinwheel_sat": true,
+ "band_spiral_sat": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": 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": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true
+ },
"driver": "ws2812",
"layout": [
{"flags": 2, "x": 16, "y": 38},
diff --git a/keyboards/boardsource/equals/48/config.h b/keyboards/boardsource/equals/48/config.h
index 952fa269c6..39d114872f 100644
--- a/keyboards/boardsource/equals/48/config.h
+++ b/keyboards/boardsource/equals/48/config.h
@@ -1,11 +1,10 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
+
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
-#define RGB_MATRIX_LED_COUNT 58
-
#define AUDIO_PIN GP29
#define AUDIO_PWM_DRIVER PWMD6
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B
diff --git a/keyboards/boardsource/equals/60/config.h b/keyboards/boardsource/equals/60/config.h
index ee4bc6b1e8..39d114872f 100644
--- a/keyboards/boardsource/equals/60/config.h
+++ b/keyboards/boardsource/equals/60/config.h
@@ -1,11 +1,10 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
+
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
-#define RGB_MATRIX_LED_COUNT 70
-
#define AUDIO_PIN GP29
#define AUDIO_PWM_DRIVER PWMD6
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B
diff --git a/keyboards/boardsource/equals/avr/config.h b/keyboards/boardsource/equals/avr/config.h
deleted file mode 100644
index 68754cbe52..0000000000
--- a/keyboards/boardsource/equals/avr/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-// Copyright 2023 Cole Smith (@boardsource)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-#define RGB_MATRIX_LED_COUNT 70
diff --git a/keyboards/boardsource/lulu/config.h b/keyboards/boardsource/lulu/config.h
deleted file mode 100644
index 537bf0da1c..0000000000
--- a/keyboards/boardsource/lulu/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2022 Cole Smith <cole@boadsource.xyz>
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-#define RGB_MATRIX_LED_COUNT 70
diff --git a/keyboards/boardsource/microdox/v2/config.h b/keyboards/boardsource/microdox/v2/config.h
deleted file mode 100644
index 236254317a..0000000000
--- a/keyboards/boardsource/microdox/v2/config.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2022 jack (@waffle87)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-#define RGB_MATRIX_LED_COUNT 44
-#define RGB_MATRIX_SPLIT { 22, 22 }
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
diff --git a/keyboards/boardsource/microdox/v2/info.json b/keyboards/boardsource/microdox/v2/info.json
index dccecb4980..94577059c5 100644
--- a/keyboards/boardsource/microdox/v2/info.json
+++ b/keyboards/boardsource/microdox/v2/info.json
@@ -35,6 +35,14 @@
}
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_left_right": true,
+ "cycle_spiral": true,
+ "jellybean_raindrops": true
+ },
"driver": "ws2812",
"layout": [
{"flags": 2, "x": 12, "y": 11},
@@ -81,6 +89,9 @@
{"flags": 1, "matrix": [7, 4], "x": 124, "y": 64},
{"flags": 1, "matrix": [7, 3], "x": 149, "y": 64},
{"flags": 1, "matrix": [7, 2], "x": 174, "y": 64}
- ]
+ ],
+ "max_brightness": 150,
+ "sleep": true,
+ "split_count": [22, 22]
}
}
diff --git a/keyboards/boardsource/technik_o/config.h b/keyboards/boardsource/technik_o/config.h
deleted file mode 100644
index 4d7d053cfb..0000000000
--- a/keyboards/boardsource/technik_o/config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright 2022 Boardsource
-
-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 RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-#define RGB_MATRIX_LED_COUNT 58
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/boardsource/technik_o/info.json b/keyboards/boardsource/technik_o/info.json
index 91840eeb4f..65d46a8b62 100644
--- a/keyboards/boardsource/technik_o/info.json
+++ b/keyboards/boardsource/technik_o/info.json
@@ -26,6 +26,31 @@
"vid": "0x4273"
},
"rgb_matrix": {
+ "animations":{
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_pinwheel_sat": true,
+ "band_spiral_sat": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": 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
+ },
"driver": "ws2812",
"layout": [
{"flags": 2, "x": 220, "y": 17},
@@ -86,7 +111,8 @@
{"flags": 1, "matrix": [3, 9], "x": 183, "y": 64},
{"flags": 1, "matrix": [3, 10], "x": 203, "y": 64},
{"flags": 1, "matrix": [3, 11], "x": 224, "y": 64}
- ]
+ ],
+ "max_brightness": 120
},
"community_layouts": [
"ortho_4x12"
diff --git a/keyboards/boardsource/technik_s/config.h b/keyboards/boardsource/technik_s/config.h
deleted file mode 100644
index b01542d77b..0000000000
--- a/keyboards/boardsource/technik_s/config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright 2022 Boardsource
-
-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 RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-#define RGB_MATRIX_LED_COUNT 55
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/boardsource/technik_s/info.json b/keyboards/boardsource/technik_s/info.json
index 0c8b101b20..ffb8cb09ec 100644
--- a/keyboards/boardsource/technik_s/info.json
+++ b/keyboards/boardsource/technik_s/info.json
@@ -26,6 +26,31 @@
"vid": "0x4273"
},
"rgb_matrix": {
+ "animations":{
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_pinwheel_sat": true,
+ "band_spiral_sat": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": 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
+ },
"driver": "ws2812",
"layout": [
{"flags": 2, "x": 220, "y": 17},
@@ -83,7 +108,8 @@
{"flags": 4, "matrix": [3, 9], "x": 183, "y": 64},
{"flags": 4, "matrix": [3, 10], "x": 203, "y": 64},
{"flags": 1, "matrix": [3, 11], "x": 224, "y": 64}
- ]
+ ],
+ "max_brightness": 120
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/boardsource/the_mark/config.h b/keyboards/boardsource/the_mark/config.h
deleted file mode 100644
index 6d9c9642de..0000000000
--- a/keyboards/boardsource/the_mark/config.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-Copyright 2022 Boardsource
-
-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
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 24
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#endif
diff --git a/keyboards/boardsource/the_mark/info.json b/keyboards/boardsource/the_mark/info.json
index c574f7ab66..8dc08e4fc4 100644
--- a/keyboards/boardsource/the_mark/info.json
+++ b/keyboards/boardsource/the_mark/info.json
@@ -43,6 +43,40 @@
"pin": "C6"
},
"rgb_matrix": {
+ "animations":{
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_pinwheel_sat": true,
+ "band_spiral_sat": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": 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": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true
+ },
"driver": "ws2812",
"layout": [
{"flags": 2, "x": 224, "y": 42},
@@ -69,7 +103,9 @@
{"flags": 2, "x": 209, "y": 85},
{"flags": 2, "x": 224, "y": 85},
{"flags": 2, "x": 224, "y": 64}
- ]
+ ],
+ "max_brightness": 200,
+ "sleep": true
},
"layouts": {
"LAYOUT_all": {
diff --git a/keyboards/boardsource/unicorne/config.h b/keyboards/boardsource/unicorne/config.h
index 5843a0c847..e79c00f14d 100644
--- a/keyboards/boardsource/unicorne/config.h
+++ b/keyboards/boardsource/unicorne/config.h
@@ -2,10 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-#define RGB_MATRIX_LED_COUNT 54
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_ALPHAS_MODS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define I2C_DRIVER I2CD1
diff --git a/keyboards/boardsource/unicorne/info.json b/keyboards/boardsource/unicorne/info.json
index 4184c870fe..299ca6cd00 100644
--- a/keyboards/boardsource/unicorne/info.json
+++ b/keyboards/boardsource/unicorne/info.json
@@ -54,6 +54,9 @@
"gradient_left_right": true,
"gradient_up_down": true
},
+ "default": {
+ "animation": "alphas_mods"
+ },
"max_brightness": 150,
"split_count": [27, 27],
"driver": "ws2812",
@@ -112,7 +115,8 @@
{"matrix": [4, 0], "x": 0, "y": 7, "flags": 1},
{"matrix": [5, 0], "x": 0, "y": 24, "flags": 1},
{"matrix": [6, 0], "x": 0, "y": 41, "flags": 1}
- ]
+ ],
+ "sleep": true
},
"community_layouts": ["split_3x6_3"],
"layouts": {
diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h
index e89623ec8a..8a895c3e50 100644
--- a/keyboards/bpiphany/frosty_flake/config.h
+++ b/keyboards/bpiphany/frosty_flake/config.h
@@ -58,5 +58,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/bpiphany/frosty_flake/info.json b/keyboards/bpiphany/frosty_flake/info.json
index 748ad68076..95fbd477eb 100644
--- a/keyboards/bpiphany/frosty_flake/info.json
+++ b/keyboards/bpiphany/frosty_flake/info.json
@@ -10,6 +10,9 @@
},
"processor": "atmega32u2",
"bootloader": "atmel-dfu",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"community_layouts": ["tkl_ansi"],
"layouts": {
"LAYOUT": {
diff --git a/keyboards/bpiphany/pegasushoof/2013/config.h b/keyboards/bpiphany/pegasushoof/2013/config.h
index eb7c2fde13..182495aa9b 100644
--- a/keyboards/bpiphany/pegasushoof/2013/config.h
+++ b/keyboards/bpiphany/pegasushoof/2013/config.h
@@ -20,5 +20,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3 // not enough memory for a 4th layer with VIA
diff --git a/keyboards/bpiphany/pegasushoof/2013/info.json b/keyboards/bpiphany/pegasushoof/2013/info.json
index abbeeb0f36..c7b120fd05 100644
--- a/keyboards/bpiphany/pegasushoof/2013/info.json
+++ b/keyboards/bpiphany/pegasushoof/2013/info.json
@@ -1,6 +1,9 @@
{
"keyboard_name": "Majestouch TKL \\\\w The Pegasus Hoof 2013",
"diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "C6",
"scroll_lock": "C5",
diff --git a/keyboards/bpiphany/pegasushoof/2015/config.h b/keyboards/bpiphany/pegasushoof/2015/config.h
index eb7c2fde13..182495aa9b 100644
--- a/keyboards/bpiphany/pegasushoof/2015/config.h
+++ b/keyboards/bpiphany/pegasushoof/2015/config.h
@@ -20,5 +20,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3 // not enough memory for a 4th layer with VIA
diff --git a/keyboards/bpiphany/pegasushoof/2015/info.json b/keyboards/bpiphany/pegasushoof/2015/info.json
index a3b5f66784..5c4f8d6f91 100644
--- a/keyboards/bpiphany/pegasushoof/2015/info.json
+++ b/keyboards/bpiphany/pegasushoof/2015/info.json
@@ -1,6 +1,9 @@
{
"keyboard_name": "Majestouch TKL The Pegasus Hoof 2015",
"diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "C6",
"scroll_lock": "C5",
diff --git a/keyboards/bubble75/hotswap/config.h b/keyboards/bubble75/hotswap/config.h
index 657c373c7b..de1b75d0d6 100644
--- a/keyboards/bubble75/hotswap/config.h
+++ b/keyboards/bubble75/hotswap/config.h
@@ -21,73 +21,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-/* WS2812 RGB */
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 81
-#define RGBLIGHT_LAYERS
-//#define RGBLIGHT_LAYER_BLINK
-#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
-
-#define RGB_MATRIX_KEYPRESSES
-
-#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-
-
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#endif
diff --git a/keyboards/bubble75/hotswap/info.json b/keyboards/bubble75/hotswap/info.json
index c9757847b0..99cfc4064e 100644
--- a/keyboards/bubble75/hotswap/info.json
+++ b/keyboards/bubble75/hotswap/info.json
@@ -13,7 +13,36 @@
"pin": "B7"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "breathing": 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,
+ "raindrops": 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",
+ "max_brightness": 180
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "E6", "F0", "D0", "D1", "D4", "D6", "D7", "B4", "B5", "B6", "C6"],
diff --git a/keyboards/canary/canary60rgb/canary60rgb.c b/keyboards/canary/canary60rgb/canary60rgb.c
index 065268c531..55569f5049 100644
--- a/keyboards/canary/canary60rgb/canary60rgb.c
+++ b/keyboards/canary/canary60rgb/canary60rgb.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, J_14, K_14, L_14 },
{ 0, J_13, K_13, L_13 },
{ 0, J_12, K_12, L_12 },
diff --git a/keyboards/canary/canary60rgb/info.json b/keyboards/canary/canary60rgb/info.json
index 7f19520ac3..fc973b8810 100644
--- a/keyboards/canary/canary60rgb/info.json
+++ b/keyboards/canary/canary60rgb/info.json
@@ -30,7 +30,40 @@
"pin": "B6"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "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,
+ "flower_blooming": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/canary/canary60rgb/keymaps/via/config.h b/keyboards/canary/canary60rgb/keymaps/via/config.h
index d3256bff33..2546add6da 100644
--- a/keyboards/canary/canary60rgb/keymaps/via/config.h
+++ b/keyboards/canary/canary60rgb/keymaps/via/config.h
@@ -16,5 +16,5 @@
#pragma once
-#define DISABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/canary/canary60rgb/v1/config.h b/keyboards/canary/canary60rgb/v1/config.h
index ab5c817000..3550dd64d3 100644
--- a/keyboards/canary/canary60rgb/v1/config.h
+++ b/keyboards/canary/canary60rgb/v1/config.h
@@ -13,26 +13,6 @@
* 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
+#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define DISABLE_RGB_MATRIX_BAND_SAT
-# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define DISABLE_RGB_MATRIX_SPLASH
-# define DISABLE_RGB_MATRIX_MULTISPLASH
-# define DISABLE_RGB_MATRIX_SOLID_SPLASH
-# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 63
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/cannonkeys/balance/config.h b/keyboards/cannonkeys/balance/config.h
index 0f2582901b..4b007cf387 100644
--- a/keyboards/cannonkeys/balance/config.h
+++ b/keyboards/cannonkeys/balance/config.h
@@ -22,8 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/bastion60/config.h b/keyboards/cannonkeys/bastion60/config.h
index 206ca9cf56..f410fb5325 100644
--- a/keyboards/cannonkeys/bastion60/config.h
+++ b/keyboards/cannonkeys/bastion60/config.h
@@ -10,5 +10,3 @@
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A
-
-#define WS2812_PIO_USE_PIO1
diff --git a/keyboards/cannonkeys/bastion65/config.h b/keyboards/cannonkeys/bastion65/config.h
index 0b93d1434b..640aa33134 100644
--- a/keyboards/cannonkeys/bastion65/config.h
+++ b/keyboards/cannonkeys/bastion65/config.h
@@ -24,5 +24,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A
-
-#define WS2812_PIO_USE_PIO1
diff --git a/keyboards/cannonkeys/bastion75/config.h b/keyboards/cannonkeys/bastion75/config.h
index 0b93d1434b..640aa33134 100644
--- a/keyboards/cannonkeys/bastion75/config.h
+++ b/keyboards/cannonkeys/bastion75/config.h
@@ -24,5 +24,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A
-
-#define WS2812_PIO_USE_PIO1
diff --git a/keyboards/cannonkeys/brutalv2_1800/config.h b/keyboards/cannonkeys/brutalv2_1800/config.h
index 9ac66b5624..17bba21f22 100644
--- a/keyboards/cannonkeys/brutalv2_1800/config.h
+++ b/keyboards/cannonkeys/brutalv2_1800/config.h
@@ -20,6 +20,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
-
diff --git a/keyboards/cannonkeys/hoodrowg/config.h b/keyboards/cannonkeys/hoodrowg/config.h
index 3b78decb27..dabdb5ee30 100644
--- a/keyboards/cannonkeys/hoodrowg/config.h
+++ b/keyboards/cannonkeys/hoodrowg/config.h
@@ -22,9 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/rekt1800/config.h b/keyboards/cannonkeys/rekt1800/config.h
index 7f21b3f8a8..a47b76953a 100644
--- a/keyboards/cannonkeys/rekt1800/config.h
+++ b/keyboards/cannonkeys/rekt1800/config.h
@@ -26,9 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/sagittarius/config.h b/keyboards/cannonkeys/sagittarius/config.h
index b8cdc797d0..f3d6237a78 100644
--- a/keyboards/cannonkeys/sagittarius/config.h
+++ b/keyboards/cannonkeys/sagittarius/config.h
@@ -31,8 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define WS2812_SPI_SCK_PAL_MODE 0
#define WS2812_SPI_SCK_PIN B13
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/capsunlocked/cu80/v2/ansi/ansi.c b/keyboards/capsunlocked/cu80/v2/ansi/ansi.c
index 9967388153..2d4055d984 100644
--- a/keyboards/capsunlocked/cu80/v2/ansi/ansi.c
+++ b/keyboards/capsunlocked/cu80/v2/ansi/ansi.c
@@ -8,8 +8,8 @@ led_config_t g_led_config = {
{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16},
{33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49},
- {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50},
- {63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75},
+ {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, NO_LED, NO_LED, NO_LED, NO_LED},
+ {63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75, NO_LED},
{86, 85, 84, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, 82, 81, 80, 79, 78, NO_LED, 77, 76}
}, {
{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 13}, {212, 13}, {198, 13}, {184, 13}, {169, 13}, {155, 13}, {141, 13}, {127, 13}, {113, 13}, {99, 13}, {85, 13}, {71, 13}, {56, 13}, {42, 13}, {28, 13}, {14, 13}, {0, 13}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26}, {155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64}
diff --git a/keyboards/capsunlocked/cu80/v2/ansi/config.h b/keyboards/capsunlocked/cu80/v2/ansi/config.h
deleted file mode 100644
index 638c9a820f..0000000000
--- a/keyboards/capsunlocked/cu80/v2/ansi/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2021 CapsUnlocked
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 87
-# define RGB_MATRIX_KEYPRESSES
-#endif
diff --git a/keyboards/capsunlocked/cu80/v2/info.json b/keyboards/capsunlocked/cu80/v2/info.json
index c21572be66..67c914d2e1 100644
--- a/keyboards/capsunlocked/cu80/v2/info.json
+++ b/keyboards/capsunlocked/cu80/v2/info.json
@@ -52,7 +52,6 @@
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
- "solid_color": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
diff --git a/keyboards/capsunlocked/cu80/v2/iso/config.h b/keyboards/capsunlocked/cu80/v2/iso/config.h
deleted file mode 100644
index 28086d6195..0000000000
--- a/keyboards/capsunlocked/cu80/v2/iso/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2021 CapsUnlocked
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 88
-# define RGB_MATRIX_KEYPRESSES
-#endif
diff --git a/keyboards/capsunlocked/cu80/v2/iso/iso.c b/keyboards/capsunlocked/cu80/v2/iso/iso.c
index cdc588160e..0e8e26e5dd 100644
--- a/keyboards/capsunlocked/cu80/v2/iso/iso.c
+++ b/keyboards/capsunlocked/cu80/v2/iso/iso.c
@@ -8,8 +8,8 @@ led_config_t g_led_config = {
{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16},
{33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49},
- {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50},
- {63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76},
+ {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, NO_LED, NO_LED, NO_LED, NO_LED},
+ {63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76, NO_LED},
{87, 86, 85, NO_LED, NO_LED, 84, NO_LED, NO_LED, NO_LED, 83, 82, 81, 80, 79, NO_LED, 78, 77}
}, {
{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 26}, {212, 26}, {198, 26}, {184, 26}, {169, 26}, {155, 26}, {141, 26}, {127, 26}, {113, 26}, {99, 26}, {85, 26}, {71, 26}, {56, 26}, {42, 26}, {28, 26}, {14, 26}, {0, 26}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26}, {155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {14, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64}
diff --git a/keyboards/checkerboards/quark_lp/config.h b/keyboards/checkerboards/quark_lp/config.h
index ca124775d7..21d76ea1ac 100644
--- a/keyboards/checkerboards/quark_lp/config.h
+++ b/keyboards/checkerboards/quark_lp/config.h
@@ -21,31 +21,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 51
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 125 // limits maximum brightness of LEDs to 125 out of 255. Higher may cause the controller to crash.
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#endif
diff --git a/keyboards/checkerboards/quark_lp/info.json b/keyboards/checkerboards/quark_lp/info.json
index 9712b63a38..006e454886 100644
--- a/keyboards/checkerboards/quark_lp/info.json
+++ b/keyboards/checkerboards/quark_lp/info.json
@@ -12,10 +12,31 @@
"pin": "C2"
},
"rgb_matrix": {
+ "animations":{
+ "alphas_mods": 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_left_right": true,
+ "rainbow_moving_chevron": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "hue_wave": true,
+ "pixel_flow": true
+ },
"driver": "ws2812",
+ "max_brightness": 125,
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B6", "B5", "B4", "B3", "B0", "D6", "D5", "D4", "D3", "D2", "D1", "D0"],
diff --git a/keyboards/cherrybstudio/cb87rgb/config.h b/keyboards/cherrybstudio/cb87rgb/config.h
deleted file mode 100644
index a4643fae38..0000000000
--- a/keyboards/cherrybstudio/cb87rgb/config.h
+++ /dev/null
@@ -1,70 +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
-
-#define RGB_MATRIX_LED_COUNT 92
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16
-#define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
diff --git a/keyboards/cherrybstudio/cb87rgb/info.json b/keyboards/cherrybstudio/cb87rgb/info.json
index eefa7e73f0..e5d5299336 100644
--- a/keyboards/cherrybstudio/cb87rgb/info.json
+++ b/keyboards/cherrybstudio/cb87rgb/info.json
@@ -12,7 +12,54 @@
"pin": "E6"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D5", "D4", "D6", "D7", "B4", "B5", "F5", "C6", "C7", "F7"],
diff --git a/keyboards/chosfox/cf81/cf81.c b/keyboards/chosfox/cf81/cf81.c
index ad7ec9bc55..b864a56bc6 100644
--- a/keyboards/chosfox/cf81/cf81.c
+++ b/keyboards/chosfox/cf81/cf81.c
@@ -18,7 +18,7 @@
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/chosfox/cf81/config.h b/keyboards/chosfox/cf81/config.h
index ae0d87d935..71e783f2bc 100644
--- a/keyboards/chosfox/cf81/config.h
+++ b/keyboards/chosfox/cf81/config.h
@@ -36,12 +36,4 @@
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define DRIVER_1_LED_TOTAL 63
-#define DRIVER_2_LED_TOTAL 20
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + 22)
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/chosfox/cf81/info.json b/keyboards/chosfox/cf81/info.json
index 5dff610071..de125801b7 100644
--- a/keyboards/chosfox/cf81/info.json
+++ b/keyboards/chosfox/cf81/info.json
@@ -174,7 +174,9 @@
{ "flags": 2, "x":224, "y":51},
{ "flags": 2, "x":224, "y":57},
{ "flags": 2, "x":224, "y":64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/chromatonemini/config.h b/keyboards/chromatonemini/config.h
index 6643e610c0..18ae28c211 100644
--- a/keyboards/chromatonemini/config.h
+++ b/keyboards/chromatonemini/config.h
@@ -19,15 +19,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGB_MATRIX_ENABLE
-/* ws2812 RGB MATRIX */
-# define RGB_MATRIX_LED_COUNT 116
- // reacts to keypresses
-# define RGB_MATRIX_KEYPRESSES
-
// for all fingers used at once.
# define LED_HITS_TO_REMEMBER 10
-// the above brighness setting has no effect on rgb_matrix_set_color().
+// the max brightness setting has no effect on rgb_matrix_set_color().
// Use darker colors instead.
/* RGB darker COLORS */
# define RGB_DARKWHITE 0x33, 0x33, 0x33
@@ -49,9 +44,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_DARKMAGENTA 0x33, 0x0, 0x33
# define RGB_DARKPINK 0x33, 0x19, 0x26
-// https://docs.qmk.fm/#/feature_rgb_matrix
-// Enable suspend mode.
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
#endif // RGB_MATRIX_ENABLE
/* Audio */
diff --git a/keyboards/chromatonemini/info.json b/keyboards/chromatonemini/info.json
index fb4f0c737f..e830bb5a37 100644
--- a/keyboards/chromatonemini/info.json
+++ b/keyboards/chromatonemini/info.json
@@ -146,7 +146,6 @@
"val_steps": 8,
"center_point": [124, 32],
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
@@ -187,7 +186,8 @@
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
- }
+ },
+ "sleep": true
},
"diode_direction": "COL2ROW",
"matrix_pins": {
diff --git a/keyboards/churrosoft/deck8/rgb/config.h b/keyboards/churrosoft/deck8/rgb/config.h
deleted file mode 100644
index 2454c42fba..0000000000
--- a/keyboards/churrosoft/deck8/rgb/config.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright 2023 Churrosoft
-*
-* 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 RGB_MATRIX_LED_COUNT 8
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_HUE 152
-#define RGB_MATRIX_DEFAULT_SAT 232
-#define RGB_MATRIX_DEFAULT_VAL 180
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-
-#define ENABLE_RGB_MATRIX_SOLID_COLOR
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/churrosoft/deck8/rgb/info.json b/keyboards/churrosoft/deck8/rgb/info.json
index 546c17ca13..b5b3b21b5a 100644
--- a/keyboards/churrosoft/deck8/rgb/info.json
+++ b/keyboards/churrosoft/deck8/rgb/info.json
@@ -11,6 +11,57 @@
"rgb_matrix": true
},
"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
+ },
+ "default": {
+ "animation": "solid_color",
+ "hue": 152,
+ "sat": 232,
+ "val": 180
+ },
"driver": "ws2812",
"max_brightness": 200,
"layout": [
@@ -22,6 +73,7 @@
{"flags": 4, "matrix": [1, 1], "x": 90, "y": 42},
{"flags": 4, "matrix": [1, 2], "x": 135, "y": 42},
{"flags": 4, "matrix": [1, 3], "x": 180, "y": 42}
- ]
+ ],
+ "sleep": true
}
} \ No newline at end of file
diff --git a/keyboards/clickety_split/leeloo/keymaps/default/config.h b/keyboards/clickety_split/leeloo/keymaps/default/config.h
index e41b3d34aa..2fa2ed15b6 100644
--- a/keyboards/clickety_split/leeloo/keymaps/default/config.h
+++ b/keyboards/clickety_split/leeloo/keymaps/default/config.h
@@ -23,7 +23,7 @@
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 115 // limits maximum brightness of LEDs to 150 out of 255.
diff --git a/keyboards/clickety_split/leeloo/rev2/config.h b/keyboards/clickety_split/leeloo/rev2/config.h
deleted file mode 100644
index 2aa1acd972..0000000000
--- a/keyboards/clickety_split/leeloo/rev2/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2023 Clickety Split Ltd.
- *
- * 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 RGB_MATRIX_LED_COUNT 74
-# define RGB_MATRIX_SPLIT {37, 37}
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define SPLIT_TRANSPORT_MIRROR
diff --git a/keyboards/clickety_split/leeloo/rev2/info.json b/keyboards/clickety_split/leeloo/rev2/info.json
index 6db77714a4..cab643aad8 100644
--- a/keyboards/clickety_split/leeloo/rev2/info.json
+++ b/keyboards/clickety_split/leeloo/rev2/info.json
@@ -99,6 +99,8 @@
{"flags": 4, "matrix": [6, 0], "x": 224, "y": 16}, // R LB72 | SW36
{"flags": 4, "matrix": [7, 0], "x": 224, "y": 32}, // R LB73 | SW42
{"flags": 4, "matrix": [8, 0], "x": 224, "y": 48} // R LB74 | SW48
- ]
+ ],
+ "split_count": [37, 37],
+ "sleep": true
}
- }
+}
diff --git a/keyboards/clickety_split/leeloo/rev3/config.h b/keyboards/clickety_split/leeloo/rev3/config.h
deleted file mode 100644
index ac93150221..0000000000
--- a/keyboards/clickety_split/leeloo/rev3/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2023 Clickety Split Ltd.
- *
- * 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 RGB_MATRIX_LED_COUNT 58
-# define RGB_MATRIX_SPLIT {29, 29}
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define SPLIT_TRANSPORT_MIRROR
diff --git a/keyboards/clickety_split/leeloo/rev3/info.json b/keyboards/clickety_split/leeloo/rev3/info.json
index 2c92f5226e..d738fffe9e 100644
--- a/keyboards/clickety_split/leeloo/rev3/info.json
+++ b/keyboards/clickety_split/leeloo/rev3/info.json
@@ -83,6 +83,8 @@
{"flags": 4, "matrix": [6, 0], "x": 224, "y": 16}, // R LB56 | SW36
{"flags": 4, "matrix": [7, 0], "x": 224, "y": 32}, // R LB57 | SW42
{"flags": 4, "matrix": [8, 0], "x": 224, "y": 48} // R LB58 | SW48
- ]
+ ],
+ "split_count": [29, 29],
+ "sleep": true
}
- }
+}
diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h
index 922426e87b..07957498d1 100644
--- a/keyboards/clueboard/66_hotswap/gen1/config.h
+++ b/keyboards/clueboard/66_hotswap/gen1/config.h
@@ -37,34 +37,6 @@
#define I2C1_SCL_PIN B8
#define I2C1_SDA_PIN B9
-#define LED_MATRIX_LED_COUNT 71
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-#define ENABLE_LED_MATRIX_ALPHAS_MODS
-#define ENABLE_LED_MATRIX_BREATHING
-#define ENABLE_LED_MATRIX_BAND
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL
-#define ENABLE_LED_MATRIX_BAND_SPIRAL
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN
-#define ENABLE_LED_MATRIX_DUAL_BEACON
-#if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_LED_MATRIX_SPLASH
-# define ENABLE_LED_MATRIX_MULTISPLASH
-#endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_WAVE_UP_DOWN
-
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
#define AUDIO_PIN_ALT_AS_NEGATIVE
diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c
index 7af0b964da..e13a05de05 100644
--- a/keyboards/clueboard/66_hotswap/gen1/gen1.c
+++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef LED_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
diff --git a/keyboards/clueboard/66_hotswap/gen1/info.json b/keyboards/clueboard/66_hotswap/gen1/info.json
index 81a23f7d87..17e47e66fe 100644
--- a/keyboards/clueboard/66_hotswap/gen1/info.json
+++ b/keyboards/clueboard/66_hotswap/gen1/info.json
@@ -17,6 +17,28 @@
"nkro": true
},
"led_matrix": {
+ "animations":{
+ "alphas_mods": true,
+ "breathing": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": 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,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
"driver": "is31fl3731"
},
"matrix_pins": {
diff --git a/keyboards/controllerworks/city42/config.h b/keyboards/controllerworks/city42/config.h
index 4e161532f2..6c42809eaf 100644
--- a/keyboards/controllerworks/city42/config.h
+++ b/keyboards/controllerworks/city42/config.h
@@ -17,9 +17,6 @@
#pragma once
-#define WS2812_PIO_USE_PIO1
-#define RGB_MATRIX_LED_COUNT 42
-
#define SPI_SCK_PIN GP18
#define SPI_MOSI_PIN GP19
#define SPI_MISO_PIN GP16
@@ -29,4 +26,4 @@
#define CIRQUE_PINNACLE_ATTENUATION EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_1X
#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_RELATIVE_MODE
#define CIRQUE_PINNACLE_TAP_ENABLE
-#define CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE \ No newline at end of file
+#define CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE
diff --git a/keyboards/controllerworks/city42/info.json b/keyboards/controllerworks/city42/info.json
index 2976021b11..bff73f7e6f 100644
--- a/keyboards/controllerworks/city42/info.json
+++ b/keyboards/controllerworks/city42/info.json
@@ -23,7 +23,6 @@
"processor": "RP2040",
"rgb_matrix": {
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
diff --git a/keyboards/controllerworks/mini36/config.h b/keyboards/controllerworks/mini36/config.h
index 4a0c48b1b0..5c22bb2559 100644
--- a/keyboards/controllerworks/mini36/config.h
+++ b/keyboards/controllerworks/mini36/config.h
@@ -18,9 +18,6 @@
#pragma once
#define WS2812_PIO_USE_PIO1
-#define RGB_MATRIX_LED_COUNT 48
-#define RGB_MATRIX_SPLIT \
- { 24, 24 }
#define I2C_DRIVER I2CD0
#define I2C1_SCL_PIN GP25
diff --git a/keyboards/controllerworks/mini36/info.json b/keyboards/controllerworks/mini36/info.json
index 3a49b210ac..a3b5365109 100644
--- a/keyboards/controllerworks/mini36/info.json
+++ b/keyboards/controllerworks/mini36/info.json
@@ -111,7 +111,8 @@
{"flags": 4, "matrix": [6, 4], "x": 217, "y": 41},
{"flags": 4, "matrix": [5, 4], "x": 217, "y": 24},
{"flags": 4, "matrix": [4, 4], "x": 217, "y": 7}
- ]
+ ],
+ "split_count": [24, 24]
},
"community_layouts": ["split_3x5_3"],
"layouts": {
diff --git a/keyboards/controllerworks/mini36/keymaps/default/config.h b/keyboards/controllerworks/mini36/keymaps/default/config.h
index 77da61828c..aeca5716c0 100644
--- a/keyboards/controllerworks/mini36/keymaps/default/config.h
+++ b/keyboards/controllerworks/mini36/keymaps/default/config.h
@@ -21,7 +21,7 @@
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/controllerworks/mini36/keymaps/via/config.h b/keyboards/controllerworks/mini36/keymaps/via/config.h
index 77da61828c..aeca5716c0 100644
--- a/keyboards/controllerworks/mini36/keymaps/via/config.h
+++ b/keyboards/controllerworks/mini36/keymaps/via/config.h
@@ -21,7 +21,7 @@
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/controllerworks/mini42/config.h b/keyboards/controllerworks/mini42/config.h
index 20b6bbac8d..3e5f7fd357 100644
--- a/keyboards/controllerworks/mini42/config.h
+++ b/keyboards/controllerworks/mini42/config.h
@@ -18,7 +18,6 @@
#pragma once
#define WS2812_PIO_USE_PIO1
-#define RGB_MATRIX_LED_COUNT 54
#undef I2C_DRIVER
#define I2C_DRIVER I2CD0
diff --git a/keyboards/controllerworks/mini42/keymaps/default/config.h b/keyboards/controllerworks/mini42/keymaps/default/config.h
index 77da61828c..aeca5716c0 100644
--- a/keyboards/controllerworks/mini42/keymaps/default/config.h
+++ b/keyboards/controllerworks/mini42/keymaps/default/config.h
@@ -21,7 +21,7 @@
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/controllerworks/mini42/keymaps/via/config.h b/keyboards/controllerworks/mini42/keymaps/via/config.h
index e11d5aa37f..5e70c09343 100644
--- a/keyboards/controllerworks/mini42/keymaps/via/config.h
+++ b/keyboards/controllerworks/mini42/keymaps/via/config.h
@@ -22,7 +22,7 @@
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/converter/hp_46010a/rules.mk b/keyboards/converter/hp_46010a/rules.mk
index d4e702622a..104381f12f 100644
--- a/keyboards/converter/hp_46010a/rules.mk
+++ b/keyboards/converter/hp_46010a/rules.mk
@@ -12,7 +12,6 @@ AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = no
WAIT_FOR_USB = yes
-LAYOUTS_HAS_RGB = no
CUSTOM_MATRIX = yes
SRC = matrix.c
diff --git a/keyboards/converter/ibm_terminal/matrix.c b/keyboards/converter/ibm_terminal/matrix.c
index de346a0f70..d245ff61b2 100644
--- a/keyboards/converter/ibm_terminal/matrix.c
+++ b/keyboards/converter/ibm_terminal/matrix.c
@@ -87,23 +87,23 @@ uint8_t matrix_scan(void)
uint8_t code;
if ((code = ps2_host_recv())) {
- debug("r"); debug_hex(code); debug(" ");
+ dprintf("r%02X ", code);
}
switch (state) {
case RESET:
- debug("wFF ");
+ dprint("wFF ");
if (ps2_host_send(0xFF) == 0xFA) {
- debug("[ack]\nRESET_RESPONSE: ");
+ dprint("[ack]\nRESET_RESPONSE: ");
state = RESET_RESPONSE;
}
break;
case RESET_RESPONSE:
if (code == 0xAA) {
- debug("[ok]\nKBD_ID: ");
+ dprint("[ok]\nKBD_ID: ");
state = KBD_ID0;
} else if (code) {
- debug("err\nRESET: ");
+ dprint("err\nRESET: ");
state = RESET;
}
break;
@@ -115,14 +115,14 @@ uint8_t matrix_scan(void)
break;
case KBD_ID1:
if (code) {
- debug("\nCONFIG: ");
+ dprint("\nCONFIG: ");
state = CONFIG;
}
break;
case CONFIG:
- debug("wF8 ");
+ dprint("wF8 ");
if (ps2_host_send(0xF8) == 0xFA) {
- debug("[ack]\nREADY\n");
+ dprint("[ack]\nREADY\n");
state = READY;
}
break;
@@ -132,16 +132,16 @@ uint8_t matrix_scan(void)
break;
case 0xF0:
state = F0_BREAK;
- debug(" ");
+ dprint(" ");
break;
default: // normal key make
if (code < 0x88) {
matrix_make(code);
} else {
- debug("unexpected scan code at READY: "); debug_hex(code); debug("\n");
+ dprintf("unexpected scan code at READY: %02X\n", code);
}
state = READY;
- debug("\n");
+ dprint("\n");
}
break;
case F0_BREAK: // Break code
@@ -152,10 +152,10 @@ uint8_t matrix_scan(void)
if (code < 0x88) {
matrix_break(code);
} else {
- debug("unexpected scan code at F0: "); debug_hex(code); debug("\n");
+ dprintf("unexpected scan code at F0: %02X\n", code);
}
state = READY;
- debug("\n");
+ dprint("\n");
}
break;
}
diff --git a/keyboards/converter/m0110_usb/m0110.c b/keyboards/converter/m0110_usb/m0110.c
index f3097fb465..308eb936e3 100644
--- a/keyboards/converter/m0110_usb/m0110.c
+++ b/keyboards/converter/m0110_usb/m0110.c
@@ -312,8 +312,7 @@ static inline uint8_t instant(void) {
m0110_send(M0110_INSTANT);
uint8_t data = m0110_recv();
if (data != M0110_NULL) {
- debug_hex(data);
- debug(" ");
+ dprintf("%02X ", data);
}
return data;
}
diff --git a/keyboards/converter/palm_usb/matrix.c b/keyboards/converter/palm_usb/matrix.c
index 016b562254..8ae89deb6a 100644
--- a/keyboards/converter/palm_usb/matrix.c
+++ b/keyboards/converter/palm_usb/matrix.c
@@ -168,7 +168,7 @@ uint8_t get_serial_byte(void) {
while(1) {
code = uart_read();
if (code) {
- debug_hex(code); debug(" ");
+ dprintf("%02X ", code);
return code;
}
}
@@ -316,8 +316,7 @@ uint8_t matrix_scan(void)
last_activity = timer_read();
disconnect_counter=0; // if we are getting serial data, we're connected.
- debug_hex(code); debug(" ");
-
+ dprintf("%02X ", code);
switch (code) {
case 0xFD: // unexpected reset byte 2
diff --git a/keyboards/converter/sun_usb/matrix.c b/keyboards/converter/sun_usb/matrix.c
index bf1d5f807f..6d52d5cd6c 100644
--- a/keyboards/converter/sun_usb/matrix.c
+++ b/keyboards/converter/sun_usb/matrix.c
@@ -111,7 +111,7 @@ uint8_t matrix_scan(void)
code = uart_read();
if (!code) return 0;
- debug_hex(code); debug(" ");
+ dprintf("%02X ", code);
switch (code) {
case 0xFF: // reset success: FF 04
diff --git a/keyboards/crkbd/keymaps/colemak_luna/config.h b/keyboards/crkbd/keymaps/colemak_luna/config.h
index 1975c91366..546e01bdba 100644
--- a/keyboards/crkbd/keymaps/colemak_luna/config.h
+++ b/keyboards/crkbd/keymaps/colemak_luna/config.h
@@ -45,7 +45,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
//# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md
index 75267463b2..4297ee56d9 100644
--- a/keyboards/crkbd/readme.md
+++ b/keyboards/crkbd/readme.md
@@ -43,7 +43,7 @@ And in your `config.h` file, add the following:
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/cxt_studio/config.h b/keyboards/cxt_studio/config.h
index 5c60daad9d..e56e07a254 100644
--- a/keyboards/cxt_studio/config.h
+++ b/keyboards/cxt_studio/config.h
@@ -3,31 +3,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 12
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 9
/*
diff --git a/keyboards/cxt_studio/info.json b/keyboards/cxt_studio/info.json
index 6166ea2296..7ee7b52d50 100644
--- a/keyboards/cxt_studio/info.json
+++ b/keyboards/cxt_studio/info.json
@@ -31,21 +31,40 @@
},
"processor": "atmega32u4",
"rgb_matrix": {
- "driver": "ws2812",
- "layout": [
- {"flags": 4, "matrix": [0, 3], "x": 3, "y": 0},
- {"flags": 4, "matrix": [0, 2], "x": 2, "y": 0},
- {"flags": 4, "matrix": [0, 1], "x": 1, "y": 0},
- {"flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
- {"flags": 4, "matrix": [1, 0], "x": 0, "y": 1},
- {"flags": 4, "matrix": [1, 1], "x": 1, "y": 1},
- {"flags": 4, "matrix": [1, 2], "x": 2, "y": 1},
- {"flags": 4, "matrix": [1, 3], "x": 3, "y": 1},
- {"flags": 4, "matrix": [2, 3], "x": 3, "y": 2},
- {"flags": 4, "matrix": [2, 2], "x": 2, "y": 2},
- {"flags": 4, "matrix": [2, 1], "x": 1, "y": 2},
- {"flags": 4, "matrix": [2, 0], "x": 0, "y": 2}
- ]
+ "animations": {
+ "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
+ },
+ "default": {
+ "animation": "typing_heatmap"
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"flags": 4, "matrix": [0, 3], "x": 3, "y": 0},
+ {"flags": 4, "matrix": [0, 2], "x": 2, "y": 0},
+ {"flags": 4, "matrix": [0, 1], "x": 1, "y": 0},
+ {"flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [1, 0], "x": 0, "y": 1},
+ {"flags": 4, "matrix": [1, 1], "x": 1, "y": 1},
+ {"flags": 4, "matrix": [1, 2], "x": 2, "y": 1},
+ {"flags": 4, "matrix": [1, 3], "x": 3, "y": 1},
+ {"flags": 4, "matrix": [2, 3], "x": 3, "y": 2},
+ {"flags": 4, "matrix": [2, 2], "x": 2, "y": 2},
+ {"flags": 4, "matrix": [2, 1], "x": 1, "y": 2},
+ {"flags": 4, "matrix": [2, 0], "x": 0, "y": 2}
+ ]
},
"url": "",
"usb": {
diff --git a/keyboards/darkproject/kd83a_bfg_edition/config.h b/keyboards/darkproject/kd83a_bfg_edition/config.h
index 9cf993b861..4aab5a8bb7 100644
--- a/keyboards/darkproject/kd83a_bfg_edition/config.h
+++ b/keyboards/darkproject/kd83a_bfg_edition/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
@@ -33,12 +31,7 @@
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
-#define DRIVER_1_CS A15
-#define DRIVER_2_CS B15
-#define DRIVER_1_EN C13
-#define DRIVER_2_EN C13
-
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 19
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define AW20216S_CS_PIN_1 A15
+#define AW20216S_CS_PIN_2 B15
+#define AW20216S_EN_PIN_1 C13
+#define AW20216S_EN_PIN_2 C13
diff --git a/keyboards/darkproject/kd83a_bfg_edition/info.json b/keyboards/darkproject/kd83a_bfg_edition/info.json
index 5795c11cca..3e69d1e0eb 100644
--- a/keyboards/darkproject/kd83a_bfg_edition/info.json
+++ b/keyboards/darkproject/kd83a_bfg_edition/info.json
@@ -80,7 +80,7 @@
"solid_multisplash": true
},
"center_point": [76, 25],
- "driver": "aw20216",
+ "driver": "aw20216s",
"layout": [
{ "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 },
@@ -167,7 +167,8 @@
{ "flags": 4, "matrix": [0, 5], "x": 150, "y": 50 },
{ "flags": 4, "matrix": [11, 0], "x": 0, "y": 1 },
{ "flags": 4, "matrix": [11, 1], "x": 0, "y": 2 }
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c b/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c
index e78de78bf8..550520e790 100644
--- a/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c
+++ b/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/darkproject/kd87a_bfg_edition/config.h b/keyboards/darkproject/kd87a_bfg_edition/config.h
index 4ac83ab9f6..1cae8b3360 100644
--- a/keyboards/darkproject/kd87a_bfg_edition/config.h
+++ b/keyboards/darkproject/kd87a_bfg_edition/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
@@ -32,11 +30,7 @@
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
-#define DRIVER_1_CS A15
-#define DRIVER_2_CS B15
-#define DRIVER_1_EN C13
-#define DRIVER_2_EN C13
-
-#define DRIVER_1_LED_TOTAL 68
-#define DRIVER_2_LED_TOTAL 54
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define AW20216S_CS_PIN_1 A15
+#define AW20216S_CS_PIN_2 B15
+#define AW20216S_EN_PIN_1 C13
+#define AW20216S_EN_PIN_2 C13
diff --git a/keyboards/darkproject/kd87a_bfg_edition/info.json b/keyboards/darkproject/kd87a_bfg_edition/info.json
index 94717c6baa..76cd497b0f 100644
--- a/keyboards/darkproject/kd87a_bfg_edition/info.json
+++ b/keyboards/darkproject/kd87a_bfg_edition/info.json
@@ -79,7 +79,7 @@
"solid_multisplash": true
},
"center_point": [87, 35],
- "driver": "aw20216",
+ "driver": "aw20216s",
"layout": [
{ "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 },
@@ -173,7 +173,8 @@
{ "flags": 4, "matrix": [0, 3], "x": 155, "y": 55 },
{ "flags": 4, "matrix": [7, 3], "x": 165, "y": 55 },
{ "flags": 4, "matrix": [0, 5], "x": 175, "y": 55 }
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c
index 0ce0799e14..22d10488d2 100644
--- a/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c
+++ b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/darmoshark/k3/info.json b/keyboards/darmoshark/k3/info.json
index bca494f35c..ff5047b93a 100644
--- a/keyboards/darmoshark/k3/info.json
+++ b/keyboards/darmoshark/k3/info.json
@@ -48,7 +48,6 @@
"center_point": [24, 32],
"max_brightness": 140,
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
diff --git a/keyboards/dasky/reverb/info.json b/keyboards/dasky/reverb/info.json
index b161ba8099..e7e203ebf6 100644
--- a/keyboards/dasky/reverb/info.json
+++ b/keyboards/dasky/reverb/info.json
@@ -23,7 +23,6 @@
"rgb_matrix": {
"driver": "ws2812",
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
diff --git a/keyboards/dc01/left/matrix.c b/keyboards/dc01/left/matrix.c
index d384c6a4bc..fd21d4333b 100644
--- a/keyboards/dc01/left/matrix.c
+++ b/keyboards/dc01/left/matrix.c
@@ -387,37 +387,13 @@ static void unselect_cols(void)
// Complete rows from other modules over i2c
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) {
- i2c_status_t status = i2c_start(address, 5);
- if (status < 0) {
- goto error;
- }
-
- status = i2c_write(0x01, 50);
- if (status < 0) {
- goto error;
- }
-
- status = i2c_start(address | I2C_READ, 50);
+ uint8_t data[MATRIX_ROWS + 1];
+ i2c_status_t status = i2c_readReg(address, 0x01, data, (MATRIX_ROWS + 1), 5);
- status = i2c_read_ack(50);
- if (status != 0x55) { //synchronization byte
- goto error;
+ for (uint8_t i = 0; i < (MATRIX_ROWS) && status >= 0; i++) { //assemble slave matrix in main matrix
+ matrix[i] &= mask; //mask bits to keep
+ matrix[i] |= ((uint32_t)data[i+1] << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end
}
- for (uint8_t i = 0; i < MATRIX_ROWS-1 && status >= 0; i++) { //assemble slave matrix in main matrix
- matrix[i] &= mask; //mask bits to keep
- status = i2c_read_ack(50);
- matrix[i] |= ((uint32_t)status << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end
- }
- //last read request must be followed by a NACK
- if (status >= 0) {
- matrix[MATRIX_ROWS - 1] &= mask; //mask bits to keep
- status = i2c_read_nack(50);
- matrix[MATRIX_ROWS - 1] |= ((uint32_t)status << (MATRIX_COLS_SCANNED + col_offset)); //add new bits at the end
- }
-
-error:
- i2c_stop();
-
- return (status < 0) ? status : I2C_STATUS_SUCCESS;
+ return status;
}
diff --git a/keyboards/deemen17/de60fs/config.h b/keyboards/deemen17/de60fs/config.h
index d6b5efcc2f..e21d4ae373 100644
--- a/keyboards/deemen17/de60fs/config.h
+++ b/keyboards/deemen17/de60fs/config.h
@@ -19,4 +19,4 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
-#define RP2040_FLASH_GENERIC_03H \ No newline at end of file
+#define RP2040_FLASH_GENERIC_03H
diff --git a/keyboards/dekunukem/duckypad/config.h b/keyboards/dekunukem/duckypad/config.h
index cc4c962462..88f915d468 100644
--- a/keyboards/dekunukem/duckypad/config.h
+++ b/keyboards/dekunukem/duckypad/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 15
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define RGB_MATRIX_DEFAULT_HUE 221
-#endif
-
#define I2C1_SCL_PIN B8
#define I2C1_SDA_PIN B9
diff --git a/keyboards/dekunukem/duckypad/info.json b/keyboards/dekunukem/duckypad/info.json
index 9ca8e7bc93..f186cbd3cd 100644
--- a/keyboards/dekunukem/duckypad/info.json
+++ b/keyboards/dekunukem/duckypad/info.json
@@ -17,6 +17,10 @@
"pin": "A10"
},
"rgb_matrix": {
+ "default": {
+ "animation": "solid_reactive_simple",
+ "hue": 221
+ },
"driver": "ws2812",
"layout": [
{"matrix": [0, 2], "x": 224, "y": 0, "flags": 4},
@@ -67,7 +71,6 @@
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
- "solid_color": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
diff --git a/keyboards/deng/djam/config.h b/keyboards/deng/djam/config.h
deleted file mode 100644
index 39ea6d6e90..0000000000
--- a/keyboards/deng/djam/config.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2022 Leo Deng (@myst729)
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 31
-#define RGB_MATRIX_KEYPRESSES
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/deng/djam/info.json b/keyboards/deng/djam/info.json
index c7fe59ff0a..47d9559d30 100644
--- a/keyboards/deng/djam/info.json
+++ b/keyboards/deng/djam/info.json
@@ -9,6 +9,13 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
+ "animations": {
+ "breathing": true,
+ "cycle_all": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_multisplash": true
+ },
"driver": "ws2812"
},
"matrix_pins": {
diff --git a/keyboards/deng/thirty/config.h b/keyboards/deng/thirty/config.h
index 9fcb90742f..1ad5f9c15d 100644
--- a/keyboards/deng/thirty/config.h
+++ b/keyboards/deng/thirty/config.h
@@ -17,60 +17,3 @@
#define BACKLIGHT_PWM_DRIVER PWMD2
#define BACKLIGHT_PWM_CHANNEL 4
-
-/* RGB Matrix */
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 30
-#define RGB_MATRIX_KEYPRESSES
-// #define RGB_MATRIX_KEYRELEASES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-// Enable Effects
-// == Regular Effects ==
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// == Framebuffer Effects ==
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// == Reactive Effects ==
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/deng/thirty/info.json b/keyboards/deng/thirty/info.json
index b93881c086..8e594cccb9 100644
--- a/keyboards/deng/thirty/info.json
+++ b/keyboards/deng/thirty/info.json
@@ -9,7 +9,56 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_beacon": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "ws2812",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B13", "B14", "B3", "A4", "A6"],
diff --git a/keyboards/dm9records/ergoinu/config.h b/keyboards/dm9records/ergoinu/config.h
index d1c1201a54..b6a3484a26 100644
--- a/keyboards/dm9records/ergoinu/config.h
+++ b/keyboards/dm9records/ergoinu/config.h
@@ -25,7 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define EE_HANDS
#ifndef IOS_DEVICE_ENABLE
- #if RGBLED_NUM <= 7
+ #if RGBLIGHT_LED_COUNT <= 7
#define RGBLIGHT_LIMIT_VAL 255
#define RGBLIGHT_VAL_STEP 17
#endif
diff --git a/keyboards/dm9records/plaid/rules.mk b/keyboards/dm9records/plaid/rules.mk
index c8391483dd..760f9b9650 100644
--- a/keyboards/dm9records/plaid/rules.mk
+++ b/keyboards/dm9records/plaid/rules.mk
@@ -11,8 +11,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
AUDIO_SUPPORTED = no
diff --git a/keyboards/dm9records/tartan/rules.mk b/keyboards/dm9records/tartan/rules.mk
index 66ded37adf..722ea17059 100644
--- a/keyboards/dm9records/tartan/rules.mk
+++ b/keyboards/dm9records/tartan/rules.mk
@@ -11,8 +11,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
AUDIO_SUPPORTED = no
diff --git a/keyboards/doio/kb12/config.h b/keyboards/doio/kb12/config.h
deleted file mode 100644
index d853409b85..0000000000
--- a/keyboards/doio/kb12/config.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2022 DOIO
- * Copyright 2022 DOIO2022 <https://github.com/DOIO2022>
- *
- * 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
-
-/* RGB Matrix config */
-#define RGB_MATRIX_LED_COUNT 12
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-/* RGB Matrix effect */
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/doio/kb12/info.json b/keyboards/doio/kb12/info.json
index fc75fd8c0d..c87d5f9544 100644
--- a/keyboards/doio/kb12/info.json
+++ b/keyboards/doio/kb12/info.json
@@ -9,7 +9,54 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_up_down"
+ },
+ "driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 75, "y": 0, "flags": 4},
@@ -24,7 +71,8 @@
{"matrix": [2, 2], "x": 150, "y": 64, "flags": 4},
{"matrix": [2, 3], "x": 224, "y": 64, "flags": 4}
],
- "max_brightness": 200
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B14", "B13", "B12", "B0", "A7"],
diff --git a/keyboards/doio/kb16/rev1/config.h b/keyboards/doio/kb16/rev1/config.h
index 6d635d7557..24766ac76f 100644
--- a/keyboards/doio/kb16/rev1/config.h
+++ b/keyboards/doio/kb16/rev1/config.h
@@ -19,42 +19,3 @@
/* Use the custom font */
#define OLED_FONT_H "./lib/glcdfont.c"
-
-#ifdef RGB_MATRIX_ENABLE
- /* RGB Matrix config */
- #define RGB_MATRIX_LED_COUNT 16
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN
- #define RGB_MATRIX_KEYPRESSES
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/doio/kb16/rev1/info.json b/keyboards/doio/kb16/rev1/info.json
index bcf2c2eb0e..74a5b5388b 100644
--- a/keyboards/doio/kb16/rev1/info.json
+++ b/keyboards/doio/kb16/rev1/info.json
@@ -10,7 +10,41 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "band_pinwheel_sat": true,
+ "band_pinwheel_val": true,
+ "cycle_all": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "dual_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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multicross": true,
+ "solid_reactive_multinexus": true,
+ "multisplash": true,
+ "solid_multisplash": true
+ },
+ "default": {
+ "animation": "cycle_up_down"
+ },
+ "driver": "ws2812",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["F5", "F4", "F1", "F0", "B7"],
diff --git a/keyboards/doio/kb16/rev2/config.h b/keyboards/doio/kb16/rev2/config.h
index fc58b8518b..93cd1ab3a8 100644
--- a/keyboards/doio/kb16/rev2/config.h
+++ b/keyboards/doio/kb16/rev2/config.h
@@ -26,42 +26,3 @@
/* Use the custom font */
#define OLED_FONT_H "./lib/glcdfont.c"
#endif
-
-#ifdef RGB_MATRIX_ENABLE
- /* RGB Matrix config */
- #define RGB_MATRIX_LED_COUNT 16
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN
- #define RGB_MATRIX_KEYPRESSES
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/doio/kb16/rev2/info.json b/keyboards/doio/kb16/rev2/info.json
index c3cf6b9a12..294575263d 100644
--- a/keyboards/doio/kb16/rev2/info.json
+++ b/keyboards/doio/kb16/rev2/info.json
@@ -10,7 +10,41 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "band_pinwheel_sat": true,
+ "band_pinwheel_val": true,
+ "cycle_all": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "dual_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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multicross": true,
+ "solid_reactive_multinexus": true,
+ "multisplash": true,
+ "solid_multisplash": true
+ },
+ "default": {
+ "animation": "cycle_up_down"
+ },
+ "driver": "ws2812",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B14", "B13", "B12", "B0", "A7"],
diff --git a/keyboards/doio/kb30/config.h b/keyboards/doio/kb30/config.h
index 586a61c7a0..7050e67b7e 100644
--- a/keyboards/doio/kb30/config.h
+++ b/keyboards/doio/kb30/config.h
@@ -22,8 +22,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-// #define QMK_KEYS_PER_SCAN 12
-
/* OLED */
#ifdef OLED_ENABLE
# define OLED_BRIGHTNESS 5
@@ -34,59 +32,7 @@
# define I2C_DRIVER I2CD2
#endif
-#ifdef RGB_MATRIX_ENABLE
- /* RGB Matrix config */
- #define RGB_MATRIX_LED_COUNT 36
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-
-
-/* RGB Matrix effect */
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define ENABLE_RGB_MATRIX_CYCLE_ALL
-// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
+#define RGB_MATRIX_LED_COUNT 36
/*
* Feature disable options
diff --git a/keyboards/doio/kb30/info.json b/keyboards/doio/kb30/info.json
index cd3c772994..60e02a58ba 100644
--- a/keyboards/doio/kb30/info.json
+++ b/keyboards/doio/kb30/info.json
@@ -9,7 +9,44 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_beacon": true,
+ "rainbow_beacon": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": 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
+ },
+ "default": {
+ "animation": "cycle_up_down"
+ },
+ "driver": "ws2812",
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B14", "B13", "B12", "B0", "A7", "A9", "A8"],
diff --git a/keyboards/doio/kb38/config.h b/keyboards/doio/kb38/config.h
deleted file mode 100644
index 106ad4d651..0000000000
--- a/keyboards/doio/kb38/config.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2022 Katrina (@Daggette10)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 44
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-
-/*
- * 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/doio/kb38/info.json b/keyboards/doio/kb38/info.json
index 95d3be13d3..9a67e3ed5c 100644
--- a/keyboards/doio/kb38/info.json
+++ b/keyboards/doio/kb38/info.json
@@ -36,6 +36,14 @@
"pin": "F6"
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_all": true,
+ "rainbow_moving_chevron": true
+ },
"driver": "ws2812",
"layout": [
{"flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
@@ -88,7 +96,8 @@
{"flags": 2, "x": 0, "y": 0},
{"flags": 2, "x": 74.6, "y": 0},
{"flags": 2, "x": 224, "y": 0}
- ]
+ ],
+ "max_brightness": 200,
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/doro67/rgb/config.h b/keyboards/doro67/rgb/config.h
index e18a231380..b5a6d1893c 100644
--- a/keyboards/doro67/rgb/config.h
+++ b/keyboards/doro67/rgb/config.h
@@ -17,59 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 67
-
-#define RGB_MATRIX_KEYPRESSES
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/doro67/rgb/info.json b/keyboards/doro67/rgb/info.json
index ad7661830a..3c2461a90b 100644
--- a/keyboards/doro67/rgb/info.json
+++ b/keyboards/doro67/rgb/info.json
@@ -9,6 +9,51 @@
"device_version": "0.0.1"
},
"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"
},
"matrix_pins": {
diff --git a/keyboards/dotmod/dymium65/config.h b/keyboards/dotmod/dymium65/config.h
index fa5999ca48..ca6e56156d 100644
--- a/keyboards/dotmod/dymium65/config.h
+++ b/keyboards/dotmod/dymium65/config.h
@@ -21,12 +21,3 @@
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 66
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_AFTER_TIMEOUT 0
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/dotmod/dymium65/info.json b/keyboards/dotmod/dymium65/info.json
index 650260483c..6095f4c3f1 100644
--- a/keyboards/dotmod/dymium65/info.json
+++ b/keyboards/dotmod/dymium65/info.json
@@ -59,7 +59,9 @@
"solid_reactive_cross": true,
"solid_reactive_nexus": true,
"splash": true
- }
+ },
+ "max_brightness": 200,
+ "react_on_keyup": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/dp3000/config.h b/keyboards/dp3000/config.h
deleted file mode 100644
index 26e9f037f5..0000000000
--- a/keyboards/dp3000/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2023 deddia permana (@depermana12)
- *
- * 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 RGB_MATRIX_LED_COUNT 8
-#define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/dp3000/rev1/info.json b/keyboards/dp3000/rev1/info.json
index 7ea2d101c4..63d023de5c 100644
--- a/keyboards/dp3000/rev1/info.json
+++ b/keyboards/dp3000/rev1/info.json
@@ -29,7 +29,6 @@
"hue_wave": true,
"rainbow_moving_chevron": true,
"raindrops": true,
- "solid_color": true,
"solid_reactive": true,
"solid_reactive_multinexus": true,
"solid_reactive_simple": true,
@@ -51,7 +50,9 @@
"max_brightness": 180,
"sat_steps": 8,
"speed_steps": 10,
- "val_steps": 8
+ "val_steps": 8,
+ "react_on_keyup": true,
+ "sleep": true
},
"ws2812": {
"pin": "B5"
diff --git a/keyboards/dp3000/rev2/config.h b/keyboards/dp3000/rev2/config.h
new file mode 100644
index 0000000000..237f9897ba
--- /dev/null
+++ b/keyboards/dp3000/rev2/config.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2023 deddia permana (@depermana12)
+ *
+ * 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 RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
diff --git a/keyboards/dp60/config.h b/keyboards/dp60/config.h
index 3c65d94736..c2aa315291 100644
--- a/keyboards/dp60/config.h
+++ b/keyboards/dp60/config.h
@@ -35,54 +35,5 @@
//rgb matrix setting
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-#define DRIVER_1_LED_TOTAL 36
-#define DRIVER_2_LED_TOTAL 36
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+#define RGB_MATRIX_LED_COUNT 72
diff --git a/keyboards/dp60/dp60.c b/keyboards/dp60/dp60.c
index 588acd591d..5f23b35542 100644
--- a/keyboards/dp60/dp60.c
+++ b/keyboards/dp60/dp60.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/dp60/info.json b/keyboards/dp60/info.json
index 10af7cb6ca..ec36a725c3 100644
--- a/keyboards/dp60/info.json
+++ b/keyboards/dp60/info.json
@@ -29,6 +29,37 @@
"pin": "D7"
},
"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
+ },
"driver": "is31fl3731"
},
"processor": "atmega32u4",
diff --git a/keyboards/drop/alt/v2/v2.c b/keyboards/drop/alt/v2/v2.c
index fcdad7f2df..d3bb78fd12 100644
--- a/keyboards/drop/alt/v2/v2.c
+++ b/keyboards/drop/alt/v2/v2.c
@@ -3,7 +3,7 @@
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 1, B_2, A_2, C_2 },
{ 1, E_3, D_3, F_3 },
{ 1, E_4, D_4, F_4 },
diff --git a/keyboards/drop/cstm65/cstm65.c b/keyboards/drop/cstm65/cstm65.c
index ccb86f1d3e..1c8e6bb0bb 100644
--- a/keyboards/drop/cstm65/cstm65.c
+++ b/keyboards/drop/cstm65/cstm65.c
@@ -3,7 +3,7 @@
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, B_1, A_1, C_1 },
{ 0, B_2, A_2, C_2 },
{ 0, B_3, A_3, C_3 },
diff --git a/keyboards/drop/cstm80/cstm80.c b/keyboards/drop/cstm80/cstm80.c
index 75e7049c20..e99c7801e5 100644
--- a/keyboards/drop/cstm80/cstm80.c
+++ b/keyboards/drop/cstm80/cstm80.c
@@ -3,7 +3,7 @@
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, E_1, D_1, F_1 },
{ 0, E_2, D_2, F_2 },
{ 0, E_3, D_3, F_3 },
diff --git a/keyboards/drop/ctrl/v2/v2.c b/keyboards/drop/ctrl/v2/v2.c
index 6b565efbe1..0c1d8210c6 100644
--- a/keyboards/drop/ctrl/v2/v2.c
+++ b/keyboards/drop/ctrl/v2/v2.c
@@ -3,7 +3,7 @@
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 1, B_2, A_2, C_2 },
{ 1, E_3, D_3, F_3 },
{ 1, E_4, D_4, F_4 },
diff --git a/keyboards/drop/sense75/sense75.c b/keyboards/drop/sense75/sense75.c
index 057e310748..bbe5a3aa47 100644
--- a/keyboards/drop/sense75/sense75.c
+++ b/keyboards/drop/sense75/sense75.c
@@ -3,7 +3,7 @@
#ifdef RGB_MATRIX_ENABLE
# include "rgb_matrix.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
// top underglow sd2-sd17
{ 0, B_2, A_2, C_2 },
{ 0, B_3, A_3, C_3 },
diff --git a/keyboards/drop/shift/v2/v2.c b/keyboards/drop/shift/v2/v2.c
index 8565a0cb26..cbfbeda429 100644
--- a/keyboards/drop/shift/v2/v2.c
+++ b/keyboards/drop/shift/v2/v2.c
@@ -4,7 +4,7 @@
# include "host.h"
# include "rgb_matrix.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, K_1, J_1, L_1 },// LED1
{ 0, K_2, J_2, L_2 },
{ 0, K_3, J_3, L_3 },
diff --git a/keyboards/dtisaac/dosa40rgb/config.h b/keyboards/dtisaac/dosa40rgb/config.h
deleted file mode 100644
index 0ad383a688..0000000000
--- a/keyboards/dtisaac/dosa40rgb/config.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-Copyright 2021 DTIsaac
-
-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
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 42
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/dtisaac/dosa40rgb/info.json b/keyboards/dtisaac/dosa40rgb/info.json
index e90d21725a..557b5c3abc 100644
--- a/keyboards/dtisaac/dosa40rgb/info.json
+++ b/keyboards/dtisaac/dosa40rgb/info.json
@@ -15,7 +15,56 @@
"pin": "D0"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "ws2812",
+ "max_brightness": 150,
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["D1", "D6", "D3", "D2", "B6", "C6", "C7", "F7", "F6", "F5", "F4"],
diff --git a/keyboards/duck/jetfire/indicator_leds.h b/keyboards/duck/jetfire/indicator_leds.h
index d94709d1cb..36dda632fb 100644
--- a/keyboards/duck/jetfire/indicator_leds.h
+++ b/keyboards/duck/jetfire/indicator_leds.h
@@ -6,6 +6,6 @@ void backlight_init_ports(void);
void backlight_set_state(bool cfg[7]);
void backlight_update_state(void);
void backlight_toggle_rgb(bool enabled);
-void backlight_set_rgb(uint8_t cfg[RGBLED_NUM][3]);
+void backlight_set_rgb(uint8_t cfg[RGBLIGHT_LED_COUNT][3]);
void backlight_set(uint8_t level);
void send_color(uint8_t r, uint8_t g, uint8_t b, enum Device device);
diff --git a/keyboards/duck/jetfire/jetfire.c b/keyboards/duck/jetfire/jetfire.c
index 23e6e9095a..45a46766fd 100644
--- a/keyboards/duck/jetfire/jetfire.c
+++ b/keyboards/duck/jetfire/jetfire.c
@@ -44,10 +44,10 @@ uint8_t backlight_state_led = 1<<STATE_LED_LAYER_0;
void backlight_toggle_rgb(bool enabled)
{
- uint8_t rgb[RGBLED_NUM][3] = { 0 };
+ uint8_t rgb[RGBLIGHT_LED_COUNT][3] = { 0 };
if(enabled) {
- for(uint8_t i = 0; i < RGBLED_NUM; ++i) {
+ for(uint8_t i = 0; i < RGBLIGHT_LED_COUNT; ++i) {
rgb[i][0] = backlight_rgb_r;
rgb[i][1] = backlight_rgb_g;
rgb[i][2] = backlight_rgb_b;
@@ -56,10 +56,10 @@ void backlight_toggle_rgb(bool enabled)
backlight_set_rgb(rgb);
}
-void backlight_set_rgb(uint8_t cfg[RGBLED_NUM][3])
+void backlight_set_rgb(uint8_t cfg[RGBLIGHT_LED_COUNT][3])
{
cli();
- for(uint8_t i = 0; i < RGBLED_NUM; ++i) {
+ for(uint8_t i = 0; i < RGBLIGHT_LED_COUNT; ++i) {
send_color(cfg[i][0], cfg[i][1], cfg[i][2], Device_PCBRGB);
}
sei();
diff --git a/keyboards/dumbpad/v1x_oled/v1x_oled.c b/keyboards/dumbpad/v1x_oled/v1x_oled.c
index ef91d4d416..2abf45b184 100644
--- a/keyboards/dumbpad/v1x_oled/v1x_oled.c
+++ b/keyboards/dumbpad/v1x_oled/v1x_oled.c
@@ -19,7 +19,10 @@
char wpm_str[10];
#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
// Right encoder
if (index == 0) {
if (clockwise) {
@@ -42,16 +45,16 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#ifdef OLED_ENABLE
// WPM-responsive animation stuff here
# define IDLE_FRAMES 5
-# define IDLE_SPEED 20 // below this wpm value your animation will idle
+# define IDLE_SPEED 20 // below this wpm value your animation will idle
// #define PREP_FRAMES 1 // uncomment if >1
# define TAP_FRAMES 2
-# define TAP_SPEED 40 // above this wpm value typing animation to trigger
+# define TAP_SPEED 40 // above this wpm value typing animation to trigger
-# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
-# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
@@ -111,7 +114,7 @@ static void render_anim(void) {
}
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
// oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
- oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
+ oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
}
if (get_current_wpm() >= TAP_SPEED) {
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
@@ -119,7 +122,7 @@ static void render_anim(void) {
}
}
if (get_current_wpm() != 000) {
- oled_on(); // not essential but turns on animation OLED with any alpha keypress
+ oled_on(); // not essential but turns on animation OLED with any alpha keypress
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
anim_timer = timer_read32();
animation_phase();
@@ -138,18 +141,21 @@ static void render_anim(void) {
}
// Used to draw on to the oled screen
-bool oled_task_user(void) {
- render_anim(); // renders pixelart
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ render_anim(); // renders pixelart
- oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (5 rows on 128x32 screen, anything more will overflow back to the top)
+ oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (5 rows on 128x32 screen, anything more will overflow back to the top)
oled_write_P(PSTR("WPM: "), false);
oled_write(get_u8_str(get_current_wpm(), '0'), false);
- oled_write(wpm_str, false); // writes wpm on top left corner of string
+ oled_write(wpm_str, false); // writes wpm on top left corner of string
- led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on
+ led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on
oled_set_cursor(0, 1);
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
- return false;
+ return true;
}
#endif
diff --git a/keyboards/dumbpad/v3x/config.h b/keyboards/dumbpad/v3x/config.h
index 7667bb39d0..21776afe96 100644
--- a/keyboards/dumbpad/v3x/config.h
+++ b/keyboards/dumbpad/v3x/config.h
@@ -20,45 +20,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LED_00 B1
#define LED_01 B3
#define LED_02 B6
-
-#define RGB_MATRIX_LED_COUNT 16
-
-// Cleanup RGB
-#ifdef RGB_MATRIX_ENABLE
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
-#define RGB_MATRIX_KEYPRESSES
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
diff --git a/keyboards/dumbpad/v3x/info.json b/keyboards/dumbpad/v3x/info.json
index 24c16ac0af..4dc17272a9 100644
--- a/keyboards/dumbpad/v3x/info.json
+++ b/keyboards/dumbpad/v3x/info.json
@@ -6,8 +6,38 @@
"device_version": "0.1.0"
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "band_spiral_val": true,
+ "cycle_left_right": true,
+ "cycle_pinwheel": true,
+ "raindrops": true,
+ "jellybean_raindrops": 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",
- "timeout": 300000
+ "timeout": 300000,
+ "sleep": true
},
"matrix_pins": {
"cols": ["C6", "D7", "E6", "B4", "B5"],
diff --git a/keyboards/durgod/dgk6x/config.h b/keyboards/durgod/dgk6x/config.h
index 7c85f977ba..fabf6bc923 100644
--- a/keyboards/durgod/dgk6x/config.h
+++ b/keyboards/durgod/dgk6x/config.h
@@ -33,12 +33,9 @@
#define LED_WIN_LOCK_PIN C5
#define LED_MR_LOCK_PIN LED_SCROLL_LOCK_PIN
-#ifdef RGB_MATRIX_ENABLE
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
/* I2C Alternate function settings */
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
@@ -49,60 +46,3 @@
#define I2C1_TIMINGR_SDADEL 0x0U
#define I2C1_TIMINGR_SCLH 0x0cU
#define I2C1_TIMINGR_SCLL 0x22U
-
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define ENABLE_RGB_MATRIX_HUE_BREATHING
-// # define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// # define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif /* RGB_MATRIX_ENABLE */
diff --git a/keyboards/durgod/dgk6x/galaxy/config.h b/keyboards/durgod/dgk6x/galaxy/config.h
index f68a595cae..87c7cf5d93 100644
--- a/keyboards/durgod/dgk6x/galaxy/config.h
+++ b/keyboards/durgod/dgk6x/galaxy/config.h
@@ -16,9 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define DRIVER_1_LED_TOTAL 58
-#define DRIVER_2_LED_TOTAL 26
-#endif
-
#define CAPS_LED 46
diff --git a/keyboards/durgod/dgk6x/galaxy/galaxy.c b/keyboards/durgod/dgk6x/galaxy/galaxy.c
index aa903c3a0a..cd1f10c4f9 100644
--- a/keyboards/durgod/dgk6x/galaxy/galaxy.c
+++ b/keyboards/durgod/dgk6x/galaxy/galaxy.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/durgod/dgk6x/hades_ansi/config.h b/keyboards/durgod/dgk6x/hades_ansi/config.h
index 47f6da5988..b61e32a2ff 100644
--- a/keyboards/durgod/dgk6x/hades_ansi/config.h
+++ b/keyboards/durgod/dgk6x/hades_ansi/config.h
@@ -16,9 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define DRIVER_1_LED_TOTAL 58
-#define DRIVER_2_LED_TOTAL 10
-#endif
-
#define CAPS_LED 30
diff --git a/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c b/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c
index 2d1907f4db..225a7c13dd 100644
--- a/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c
+++ b/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/durgod/dgk6x/hades_iso/hades_iso.c b/keyboards/durgod/dgk6x/hades_iso/hades_iso.c
index 42f43645f5..6dd732c454 100644
--- a/keyboards/durgod/dgk6x/hades_iso/hades_iso.c
+++ b/keyboards/durgod/dgk6x/hades_iso/hades_iso.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/durgod/dgk6x/info.json b/keyboards/durgod/dgk6x/info.json
index a52d0a9b8f..b8d38e2d9f 100644
--- a/keyboards/durgod/dgk6x/info.json
+++ b/keyboards/durgod/dgk6x/info.json
@@ -5,7 +5,52 @@
"on_state": 0
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "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,
+ "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": "is31fl3733",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"processor": "STM32F072", // F070
"bootloader": "stm32-dfu",
diff --git a/keyboards/durgod/dgk6x/venus/config.h b/keyboards/durgod/dgk6x/venus/config.h
index ab3f57914e..a03084f2e6 100644
--- a/keyboards/durgod/dgk6x/venus/config.h
+++ b/keyboards/durgod/dgk6x/venus/config.h
@@ -16,9 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define DRIVER_1_LED_TOTAL 53
-#define DRIVER_2_LED_TOTAL 8
-#endif
-
#define CAPS_LED 28
diff --git a/keyboards/durgod/dgk6x/venus/venus.c b/keyboards/durgod/dgk6x/venus/venus.c
index d48e95fb21..9de5f2e63d 100644
--- a/keyboards/durgod/dgk6x/venus/venus.c
+++ b/keyboards/durgod/dgk6x/venus/venus.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/dztech/dz60rgb/dz60rgb.c b/keyboards/dztech/dz60rgb/dz60rgb.c
index 826e3502eb..593b2d96ff 100644
--- a/keyboards/dztech/dz60rgb/dz60rgb.c
+++ b/keyboards/dztech/dz60rgb/dz60rgb.c
@@ -1,7 +1,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
{ 0, K_12, J_12, L_12 },
diff --git a/keyboards/dztech/dz60rgb/v1/config.h b/keyboards/dztech/dz60rgb/v1/config.h
index af72678922..130f99d7b7 100644
--- a/keyboards/dztech/dz60rgb/v1/config.h
+++ b/keyboards/dztech/dz60rgb/v1/config.h
@@ -1,60 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 63
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb/v1/info.json b/keyboards/dztech/dz60rgb/v1/info.json
index 0033c3acc7..8a9801c4f3 100644
--- a/keyboards/dztech/dz60rgb/v1/info.json
+++ b/keyboards/dztech/dz60rgb/v1/info.json
@@ -4,7 +4,55 @@
"device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3733",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A6", "A7", "B0", "B13", "B15", "A8", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14"],
diff --git a/keyboards/dztech/dz60rgb/v2/config.h b/keyboards/dztech/dz60rgb/v2/config.h
index 2470e7b3f9..130f99d7b7 100644
--- a/keyboards/dztech/dz60rgb/v2/config.h
+++ b/keyboards/dztech/dz60rgb/v2/config.h
@@ -1,58 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 63
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb/v2/info.json b/keyboards/dztech/dz60rgb/v2/info.json
index 4801792d98..c3e1837dbd 100644
--- a/keyboards/dztech/dz60rgb/v2/info.json
+++ b/keyboards/dztech/dz60rgb/v2/info.json
@@ -4,7 +4,38 @@
"device_version": "2.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz60rgb/v2_1/config.h b/keyboards/dztech/dz60rgb/v2_1/config.h
index 05cfa7d4e1..5d2ea692ed 100644
--- a/keyboards/dztech/dz60rgb/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb/v2_1/config.h
@@ -16,59 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 63
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb/v2_1/info.json b/keyboards/dztech/dz60rgb/v2_1/info.json
index 9028f69d4f..1d97037c31 100644
--- a/keyboards/dztech/dz60rgb/v2_1/info.json
+++ b/keyboards/dztech/dz60rgb/v2_1/info.json
@@ -4,7 +4,37 @@
"device_version": "2.1.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations":{
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c
index 5c06922028..a4cfd2551e 100644
--- a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c
+++ b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c
@@ -1,7 +1,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
{ 0, K_12, J_12, L_12 },
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/config.h b/keyboards/dztech/dz60rgb_ansi/v1/config.h
index 674871ec49..130f99d7b7 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v1/config.h
@@ -1,60 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 61
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/info.json b/keyboards/dztech/dz60rgb_ansi/v1/info.json
index 9c8b271cc9..d09c967d00 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/info.json
+++ b/keyboards/dztech/dz60rgb_ansi/v1/info.json
@@ -4,7 +4,55 @@
"device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3733",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A6", "A7", "B0", "B13", "B15", "A8", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14"],
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/config.h b/keyboards/dztech/dz60rgb_ansi/v2/config.h
index 0b458818bc..130f99d7b7 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2/config.h
@@ -1,58 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 61
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/info.json b/keyboards/dztech/dz60rgb_ansi/v2/info.json
index cc239f74b3..5769daefef 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/info.json
+++ b/keyboards/dztech/dz60rgb_ansi/v2/info.json
@@ -4,7 +4,40 @@
"device_version": "2.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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_splash": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
index 75ccef8193..7cc462cbae 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
@@ -16,59 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-// # define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 61
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/info.json b/keyboards/dztech/dz60rgb_ansi/v2_1/info.json
index edd27d4577..649ea2e261 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2_1/info.json
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/info.json
@@ -4,7 +4,37 @@
"device_version": "2.1.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c
index d6506389a6..4326b6f9af 100644
--- a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c
+++ b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c
@@ -1,7 +1,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, H_15, G_15, I_15 },
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/config.h b/keyboards/dztech/dz60rgb_wkl/v1/config.h
index ac79efd26c..130f99d7b7 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v1/config.h
@@ -1,60 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 62
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/info.json b/keyboards/dztech/dz60rgb_wkl/v1/info.json
index 0a61ae0d83..320d412aae 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/info.json
+++ b/keyboards/dztech/dz60rgb_wkl/v1/info.json
@@ -4,7 +4,55 @@
"device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3733",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A6", "A7", "B0", "B13", "B15", "A8", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14"],
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h
index a341a18e0d..130f99d7b7 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h
@@ -1,55 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 62
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/info.json b/keyboards/dztech/dz60rgb_wkl/v2/info.json
index adc6fb3b4c..f7d6acff0c 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/info.json
+++ b/keyboards/dztech/dz60rgb_wkl/v2/info.json
@@ -4,7 +4,36 @@
"device_version": "2.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "typing_heatmap": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_splash": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
index 13169e21f5..c83555d730 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
@@ -16,59 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 62
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/info.json b/keyboards/dztech/dz60rgb_wkl/v2_1/info.json
index cea77d59cf..5a3cc63602 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/info.json
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/info.json
@@ -4,7 +4,37 @@
"device_version": "2.1.0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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_fractal": true,
+ "typing_heatmap": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_splash": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz64rgb/config.h b/keyboards/dztech/dz64rgb/config.h
index edfc7b7171..970fce9d72 100644
--- a/keyboards/dztech/dz64rgb/config.h
+++ b/keyboards/dztech/dz64rgb/config.h
@@ -16,39 +16,8 @@
#pragma once
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
+
#define USB_SUSPEND_WAKEUP_DELAY 5000
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-#define RGB_MATRIX_LED_COUNT 64
-#endif
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/dztech/dz64rgb/dz64rgb.c b/keyboards/dztech/dz64rgb/dz64rgb.c
index 561a9727e5..09a535ab47 100644
--- a/keyboards/dztech/dz64rgb/dz64rgb.c
+++ b/keyboards/dztech/dz64rgb/dz64rgb.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, K_14, J_14, L_14 },
{ 0, K_13, J_13, L_13 },
{ 0, K_12, J_12, L_12 },
diff --git a/keyboards/dztech/dz64rgb/info.json b/keyboards/dztech/dz64rgb/info.json
index ca2dd46bd2..b568170e14 100644
--- a/keyboards/dztech/dz64rgb/info.json
+++ b/keyboards/dztech/dz64rgb/info.json
@@ -9,7 +9,39 @@
"device_version": "0.0.2"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F7", "F6", "F0", "B0", "B1", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "B7"],
diff --git a/keyboards/dztech/dz65rgb/v1/config.h b/keyboards/dztech/dz65rgb/v1/config.h
index b9203346dd..9cf952815d 100644
--- a/keyboards/dztech/dz65rgb/v1/config.h
+++ b/keyboards/dztech/dz65rgb/v1/config.h
@@ -15,64 +15,5 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-# define DRIVER_1_LED_TOTAL 35
-# define DRIVER_2_LED_TOTAL 33
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
diff --git a/keyboards/dztech/dz65rgb/v1/info.json b/keyboards/dztech/dz65rgb/v1/info.json
index 6b418b8cd6..98c69134eb 100644
--- a/keyboards/dztech/dz65rgb/v1/info.json
+++ b/keyboards/dztech/dz65rgb/v1/info.json
@@ -4,7 +4,45 @@
"device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3731",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A6", "A7", "B0", "B13", "B15", "A8", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15"],
diff --git a/keyboards/dztech/dz65rgb/v1/v1.c b/keyboards/dztech/dz65rgb/v1/v1.c
index a0a355e120..6e8cf96e4c 100644
--- a/keyboards/dztech/dz65rgb/v1/v1.c
+++ b/keyboards/dztech/dz65rgb/v1/v1.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{ 0, C8_8, C7_8, C6_8 },
{ 0, C9_8, C7_7, C6_7 },
{ 0, C9_7, C8_7, C6_6 },
diff --git a/keyboards/dztech/dz65rgb/v2/config.h b/keyboards/dztech/dz65rgb/v2/config.h
index 600687c245..911d21179d 100644
--- a/keyboards/dztech/dz65rgb/v2/config.h
+++ b/keyboards/dztech/dz65rgb/v2/config.h
@@ -15,64 +15,5 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-# define DRIVER_1_LED_TOTAL 35
-# define DRIVER_2_LED_TOTAL 33
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
diff --git a/keyboards/dztech/dz65rgb/v2/info.json b/keyboards/dztech/dz65rgb/v2/info.json
index e52584f724..16919905d8 100644
--- a/keyboards/dztech/dz65rgb/v2/info.json
+++ b/keyboards/dztech/dz65rgb/v2/info.json
@@ -4,7 +4,45 @@
"device_version": "2.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3731",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F7", "F6", "F5", "C7", "B0", "B1", "B2", "B3", "B4", "D7", "D6", "D4", "D5", "D3", "D2"],
diff --git a/keyboards/dztech/dz65rgb/v2/v2.c b/keyboards/dztech/dz65rgb/v2/v2.c
index 7754bc4ee5..a9f7fc104f 100644
--- a/keyboards/dztech/dz65rgb/v2/v2.c
+++ b/keyboards/dztech/dz65rgb/v2/v2.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{ 0, C8_8, C7_8, C6_8 },
{ 0, C9_8, C7_7, C6_7 },
{ 0, C9_7, C8_7, C6_6 },
diff --git a/keyboards/dztech/dz65rgb/v3/config.h b/keyboards/dztech/dz65rgb/v3/config.h
index 1398a378f8..0c4d1c9d27 100755
--- a/keyboards/dztech/dz65rgb/v3/config.h
+++ b/keyboards/dztech/dz65rgb/v3/config.h
@@ -16,63 +16,8 @@
#pragma once
+#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
+
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define USB_SUSPEND_WAKEUP_DELAY 5000
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-# define RGB_MATRIX_LED_COUNT 68
-# define DRIVER_INDICATOR_LED_TOTAL 0
#endif
diff --git a/keyboards/dztech/dz65rgb/v3/info.json b/keyboards/dztech/dz65rgb/v3/info.json
index ccc24b724e..ea7390ee9e 100644
--- a/keyboards/dztech/dz65rgb/v3/info.json
+++ b/keyboards/dztech/dz65rgb/v3/info.json
@@ -4,7 +4,58 @@
"device_version": "3.0.0"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F7", "F6", "F5", "C7", "B0", "B1", "B2", "B3", "B4", "D7", "D6", "D4", "D5", "D3", "D2"],
diff --git a/keyboards/dztech/dz65rgb/v3/v3.c b/keyboards/dztech/dz65rgb/v3/v3.c
index 0fb8ba49de..2055e6e3c2 100755
--- a/keyboards/dztech/dz65rgb/v3/v3.c
+++ b/keyboards/dztech/dz65rgb/v3/v3.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS21_SW1, CS20_SW1, CS19_SW1},
{0, CS21_SW2, CS20_SW2, CS19_SW2},
{0, CS21_SW3, CS20_SW3, CS19_SW3},
diff --git a/keyboards/dztech/tofu/ii/v1/config.h b/keyboards/dztech/tofu/ii/v1/config.h
index 36741e1168..45576fcdac 100644
--- a/keyboards/dztech/tofu/ii/v1/config.h
+++ b/keyboards/dztech/tofu/ii/v1/config.h
@@ -22,66 +22,9 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
+#define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC
+
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define USB_SUSPEND_WAKEUP_DELAY 5000
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
-# define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC
-# define DRIVER_1_LED_TOTAL 46
-# define DRIVER_2_LED_TOTAL 20
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#endif
diff --git a/keyboards/dztech/tofu/ii/v1/info.json b/keyboards/dztech/tofu/ii/v1/info.json
index 2eac06f6fd..60ccc5ec9b 100644
--- a/keyboards/dztech/tofu/ii/v1/info.json
+++ b/keyboards/dztech/tofu/ii/v1/info.json
@@ -16,6 +16,54 @@
},
"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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "is31fl3737",
"layout": [
{"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
@@ -84,7 +132,11 @@
{"flags": 1, "matrix": [4, 12], "x": 195, "y": 64},
{"flags": 1, "matrix": [4, 13], "x": 210, "y": 64},
{"flags": 1, "matrix": [4, 14], "x": 224, "y": 64}
- ]
+ ],
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "max_brightness": 180,
+ "sleep": true
},
"usb": {
"device_version": "1.0.0",
diff --git a/keyboards/dztech/tofu/ii/v1/v1.c b/keyboards/dztech/tofu/ii/v1/v1.c
index 8baf0235bd..dd18f86bf8 100644
--- a/keyboards/dztech/tofu/ii/v1/v1.c
+++ b/keyboards/dztech/tofu/ii/v1/v1.c
@@ -17,7 +17,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
{ 1, K_12, J_12, L_12 },
{ 1, K_11, J_11, L_11 },
{ 1, K_10, J_10, L_10 },
diff --git a/keyboards/dztech/tofu/jr/v1/config.h b/keyboards/dztech/tofu/jr/v1/config.h
index 74e5ed0848..bc559ee6f3 100644
--- a/keyboards/dztech/tofu/jr/v1/config.h
+++ b/keyboards/dztech/tofu/jr/v1/config.h
@@ -15,6 +15,7 @@
*/
#pragma once
+
#define I2C1_SDA_PIN GP2
#define I2C1_SCL_PIN GP3
#define I2C_DRIVER I2CD1
@@ -22,66 +23,9 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
+#define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC
+
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define USB_SUSPEND_WAKEUP_DELAY 5000
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-# define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
-# define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC
-# define DRIVER_1_LED_TOTAL 48
-# define DRIVER_2_LED_TOTAL 20
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#endif
diff --git a/keyboards/dztech/tofu/jr/v1/info.json b/keyboards/dztech/tofu/jr/v1/info.json
index 1460350d73..12930f65d0 100644
--- a/keyboards/dztech/tofu/jr/v1/info.json
+++ b/keyboards/dztech/tofu/jr/v1/info.json
@@ -16,6 +16,54 @@
"rows": ["GP29", "GP28", "GP27", "GP26", "GP22"]
},
"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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "is31fl3737",
"layout": [
{"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
@@ -86,7 +134,11 @@
{"flags": 1, "matrix": [4, 12], "x": 195, "y": 64},
{"flags": 1, "matrix": [4, 13], "x": 210, "y": 64},
{"flags": 1, "matrix": [4, 14], "x": 224, "y": 64}
- ]
+ ],
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "max_brightness": 180,
+ "sleep": true
},
"usb": {
"device_version": "1.0.0",
diff --git a/keyboards/dztech/tofu/jr/v1/v1.c b/keyboards/dztech/tofu/jr/v1/v1.c
index 474134cb5e..46b16317ac 100644
--- a/keyboards/dztech/tofu/jr/v1/v1.c
+++ b/keyboards/dztech/tofu/jr/v1/v1.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
{ 1, K_12, J_12, L_12 },
{ 1, K_11, J_11, L_11 },
{ 1, K_10, J_10, L_10 },
diff --git a/keyboards/eek/config.h b/keyboards/eek/config.h
index 66b91b7c4e..95a2527d40 100644
--- a/keyboards/eek/config.h
+++ b/keyboards/eek/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
- #ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 36
- #define RGB_MATRIX_LED_FLUSH_LIMIT 16
- #define RGB_MATRIX_DEFAULT_VAL 150
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/eek/info.json b/keyboards/eek/info.json
index 27441a293e..4d179a805b 100644
--- a/keyboards/eek/info.json
+++ b/keyboards/eek/info.json
@@ -9,7 +9,12 @@
"device_version": "0.0.4"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "default": {
+ "val": 150
+ },
+ "driver": "ws2812",
+ "led_flush_limit": 16,
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["D4", "C6", "B6", "B2", "B3", "B1", "F7", "F6", "F5", "F4"],
diff --git a/keyboards/eggsworks/egg58/config.h b/keyboards/eggsworks/egg58/config.h
deleted file mode 100644
index 50d95fae1e..0000000000
--- a/keyboards/eggsworks/egg58/config.h
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright 2022-2023 Travis Mick (@tmick0)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 58
diff --git a/keyboards/ein_60/config.h b/keyboards/ein_60/config.h
index 94592a01eb..ccb31b8612 100644
--- a/keyboards/ein_60/config.h
+++ b/keyboards/ein_60/config.h
@@ -29,13 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define AUDIO_DAC_SAMPLE_MAX 4095U
#endif
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 38
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_MATRIX_DEFAULT_VAL 150
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/ein_60/info.json b/keyboards/ein_60/info.json
index bc208afcec..14b5578f25 100644
--- a/keyboards/ein_60/info.json
+++ b/keyboards/ein_60/info.json
@@ -9,7 +9,12 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "default": {
+ "val": 150
+ },
+ "driver": "ws2812",
+ "led_flush_limit": 16,
+ "max_brightness": 200
},
"rgblight": {
"hue_steps": 4,
diff --git a/keyboards/elephant42/config.h b/keyboards/elephant42/config.h
index b62d75af3c..8468b8057c 100644
--- a/keyboards/elephant42/config.h
+++ b/keyboards/elephant42/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 54
-# define RGB_MATRIX_SPLIT { 27, 27 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
-#endif
-
#ifndef OLED_FONT_H
# define OLED_FONT_H "keyboards/elephant42/lib/glcdfont.c"
#endif
diff --git a/keyboards/elephant42/info.json b/keyboards/elephant42/info.json
index 742640619e..1bc39ced98 100644
--- a/keyboards/elephant42/info.json
+++ b/keyboards/elephant42/info.json
@@ -12,7 +12,9 @@
"driver": "ws2812",
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 8
+ "speed_steps": 8,
+ "max_brightness": 170,
+ "split_count": [27, 27]
},
"rgblight": {
"saturation_steps": 8,
@@ -39,7 +41,12 @@
},
"diode_direction": "COL2ROW",
"split": {
- "soft_serial_pin": "D2"
+ "soft_serial_pin": "D2",
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
},
"ws2812": {
"pin": "D3"
diff --git a/keyboards/enter67/readme.md b/keyboards/enter67/readme.md
deleted file mode 100644
index 8a4890ff1d..0000000000
--- a/keyboards/enter67/readme.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# ENTER67 - PCB
-
-![enter67](https://imgur.com/igF8Lurh.jpg)
-
-67 layout PCB, with option for stepped Caps Lock
-
-* Keyboard Maintainer: https://github.com/LXF-YZP
-* Hardware Supported: enter67 PCB
-
-Make example for this keyboard (after setting up your build environment):
-
- make enter67:default
-
-Flashing example for this keyboard:
-
- make enter67: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/enter80/readme.md b/keyboards/enter80/readme.md
deleted file mode 100644
index c02001a43d..0000000000
--- a/keyboards/enter80/readme.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# ENTER80 - PCB
-
-![enter80](https://i.imgur.com/rH9m5Ysh.jpg)
-
-80 layout PCB, With caps lock light
-
-* Keyboard Maintainer: https://github.com/LXF-YZP
-* Hardware Supported: enter80 PCB
-
-Make example for this keyboard (after setting up your build environment):
-
- make enter80:default
-
-Flashing example for this keyboard:
-
- make enter80: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
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/sirind/klein_sd/config.h b/keyboards/era/sirind/klein_sd/config.h
index ae1d4a9e1d..54731b7aa9 100644
--- a/keyboards/era/sirind/klein_sd/config.h
+++ b/keyboards/era/sirind/klein_sd/config.h
@@ -19,7 +19,3 @@
/* 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_DISABLE_WHEN_USB_SUSPENDED \ No newline at end of file
diff --git a/keyboards/era/sirind/klein_sd/info.json b/keyboards/era/sirind/klein_sd/info.json
index 53f89f2cb7..62b8f78865 100644
--- a/keyboards/era/sirind/klein_sd/info.json
+++ b/keyboards/era/sirind/klein_sd/info.json
@@ -74,6 +74,9 @@
"splash": true,
"typing_heatmap": true
},
+ "default": {
+ "val": 60
+ },
"driver": "ws2812",
"layout": [
{"matrix": [0, 7], "x": 97, "y": 10, "flags": 4},
@@ -143,7 +146,8 @@
{"matrix": [4, 13], "x": 192, "y": 55, "flags": 1},
{"matrix": [4, 14], "x": 205, "y": 55, "flags": 1},
{"matrix": [4, 15], "x": 224, "y": 55, "flags": 1}
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
index af1e14c49f..8209c21dba 100644
--- a/keyboards/ergodox_ez/config.h
+++ b/keyboards/ergodox_ez/config.h
@@ -93,62 +93,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// RGB backlight
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-#define DRIVER_1_LED_TOTAL 24
-#define DRIVER_2_LED_TOTAL 24
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-#define RGB_MATRIX_LED_PROCESS_LIMIT 5
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
// #define RGBLIGHT_COLOR_LAYER_0 0x00, 0x00, 0xFF
/* #define RGBLIGHT_COLOR_LAYER_1 0x00, 0x00, 0xFF */
diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
index 455d294ef5..3d6272ae66 100644
--- a/keyboards/ergodox_ez/ergodox_ez.c
+++ b/keyboards/ergodox_ez/ergodox_ez.c
@@ -155,31 +155,16 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- i2c_stop();
-
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
-
-out:
- i2c_stop();
+ uint8_t data[] = {0b00000000, 0b00111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, ERGODOX_EZ_I2C_TIMEOUT);
+
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, 2, ERGODOX_EZ_I2C_TIMEOUT);
+ }
#ifdef LEFT_LEDS
if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update();
@@ -203,17 +188,11 @@ uint8_t ergodox_left_leds_update(void) {
// - unused : hi-Z : 1
// - input : hi-Z : 1
// - driving : hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(OLATA, ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111 & ~(ergodox_left_led_3 << LEFT_LED_3_SHIFT), ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111 & ~(ergodox_left_led_2 << LEFT_LED_2_SHIFT) & ~(ergodox_left_led_1 << LEFT_LED_1_SHIFT), ERGODOX_EZ_I2C_TIMEOUT);
- if (mcp23018_status) goto out;
-
-out:
- i2c_stop();
+ uint8_t data[2];
+ data[0] = 0b11111111 & ~(ergodox_left_led_3 << LEFT_LED_3_SHIFT);
+ data[1] = 0b11111111 & ~(ergodox_left_led_2 << LEFT_LED_2_SHIFT) & ~(ergodox_left_led_1 << LEFT_LED_1_SHIFT);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, OLATA, data, 2, ERGODOX_EZ_I2C_TIMEOUT);
+
return mcp23018_status;
}
#endif
@@ -243,7 +222,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
#ifdef RGB_MATRIX_ENABLE
// clang-format off
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* driver
* | R location
* | | G location
diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h
index befc114617..df2dbed715 100644
--- a/keyboards/ergodox_ez/ergodox_ez.h
+++ b/keyboards/ergodox_ez/ergodox_ez.h
@@ -26,9 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "i2c_master.h"
// I2C aliases and register addresses (see "mcp23018.md")
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0b0100000<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/ergodox_ez/info.json b/keyboards/ergodox_ez/info.json
index 1b2942cd42..f2495a409c 100644
--- a/keyboards/ergodox_ez/info.json
+++ b/keyboards/ergodox_ez/info.json
@@ -30,7 +30,41 @@
"pin": "D7"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "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
+ },
+ "driver": "is31fl3731",
+ "led_flush_limit": 26,
+ "led_process_limit": 5,
+ "sleep": true
},
"processor": "atmega32u4",
"bootloader": "halfkay",
diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
index 05d30392ff..b9617654e8 100644
--- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
+++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
@@ -13,7 +13,7 @@
#define DEBOUNCE 15
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#undef FORCE_NKRO
#define FORCE_NKRO
diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/led_i2c.c
index 23ef91b74f..80dabf4815 100644
--- a/keyboards/ergodox_ez/led_i2c.c
+++ b/keyboards/ergodox_ez/led_i2c.c
@@ -21,35 +21,50 @@ 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) {
- i2c_init();
- i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT);
+void setleds_custom(rgb_led_t *led, uint16_t led_num) {
+ uint16_t length = 0;
int i = 0;
+ int j = 0;
+# ifdef RGBW
+ int bytes_per_led = 4;
+# else
+ int bytes_per_led = 3;
+# endif
# if defined(ERGODOX_LED_30)
// prevent right-half code from trying to bitbang all 30
// so with 30 LEDs, we count from 29 to 15 here, and the
// other half does 0 to 14.
- uint8_t half_led_num = RGBLED_NUM / 2;
+ uint8_t half_led_num = RGBLIGHT_LED_COUNT / 2;
+ length = half_led_num * bytes_per_led;
+ uint8_t data[length];
for (i = half_led_num + half_led_num - 1; i >= half_led_num; --i)
# elif defined(ERGODOX_LED_15_MIRROR)
+ length = led_num * bytes_per_led;
+ uint8_t data[length];
for (i = 0; i < led_num; ++i)
# else // ERGDOX_LED_15 non-mirrored
+ length = led_num * bytes_per_led;
+ uint8_t data[length];
for (i = led_num - 1; i >= 0; --i)
# endif
{
- uint8_t *data = (uint8_t *)(led + i);
- i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
- i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
- i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
+ uint8_t *data_byte = (uint8_t *)(led + i);
+ data[j++] = data_byte[0];
+ data[j++] = data_byte[1];
+ data[j++] = data_byte[2];
#ifdef RGBW
- i2c_write(*data++, ERGODOX_EZ_I2C_TIMEOUT);
+ data[j++] = data_byte[3];
#endif
}
- i2c_stop();
+ i2c_transmit(0x84, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT);
ws2812_setleds(led, led_num);
}
+const rgblight_driver_t rgblight_driver = {
+ .setleds = setleds_custom,
+};
#endif // RGBLIGHT_ENABLE
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index e84a5e2bd3..28bee05779 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -146,13 +146,8 @@ static matrix_row_t read_cols(uint8_t row) {
uint8_t data = 0;
// reading GPIOB (column port) since in mcp23018's sequential mode
// it is addressed directly after writing to GPIOA in select_row()
- mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
- data = ~((uint8_t)mcp23018_status);
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
- return data;
+ mcp23018_status = i2c_receive(I2C_ADDR, &data, 1, ERGODOX_EZ_I2C_TIMEOUT);
+ return ~data;
}
} else {
/* read from teensy
@@ -196,11 +191,9 @@ static void select_row(uint8_t row) {
if (!mcp23018_status) {
// set active row low : 0
// set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0xFF & ~(1 << row), ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data;
+ data = 0xFF & ~(1 << row);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, ERGODOX_EZ_I2C_TIMEOUT);
}
} else {
// select on teensy
diff --git a/keyboards/ergodox_ez/post_config.h b/keyboards/ergodox_ez/post_config.h
index 0d4fe5c683..eb22439ae4 100644
--- a/keyboards/ergodox_ez/post_config.h
+++ b/keyboards/ergodox_ez/post_config.h
@@ -33,8 +33,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef ERGODOX_LED_30
// If using 30 LEDs, then define that many
-# define RGBLED_NUM 30 // Number of LEDs
+# define RGBLIGHT_LED_COUNT 30 // Number of LEDs
#else
// If not, then only define 15
-# define RGBLED_NUM 15 // Number of LEDs
+# define RGBLIGHT_LED_COUNT 15 // Number of LEDs
#endif
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/ergodox_stm32/ergodox_stm32.c b/keyboards/ergodox_stm32/ergodox_stm32.c
index 2a919506dc..99d51866f7 100644
--- a/keyboards/ergodox_stm32/ergodox_stm32.c
+++ b/keyboards/ergodox_stm32/ergodox_stm32.c
@@ -59,16 +59,16 @@ uint8_t init_mcp23017(void) {
uint8_t data[2];
data[0] = 0x0;
data[1] = 0b00111111;
- mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_IODIRA, data, 2, 50000);
+ mcp23017_status = i2c_write_register(I2C_ADDR, I2C_IODIRA, data, 2, 50000);
if (mcp23017_status) goto out;
data[0] = 0xFFU;
- mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPIOA, data, 1, 5000);
+ mcp23017_status = i2c_write_register(I2C_ADDR, I2C_GPIOA, data, 1, 5000);
if (mcp23017_status) goto out;
- mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPPUB, data+1, 1, 2);
+ mcp23017_status = i2c_write_register(I2C_ADDR, I2C_GPPUB, data+1, 1, 2);
if (mcp23017_status) goto out;
out:
return mcp23017_status;
- // i2c_readReg(I2C_ADDR, );
+ // i2c_read_register(I2C_ADDR, );
}
diff --git a/keyboards/ergodox_stm32/matrix.c b/keyboards/ergodox_stm32/matrix.c
index 3eb35cd7bb..6acd2dda22 100644
--- a/keyboards/ergodox_stm32/matrix.c
+++ b/keyboards/ergodox_stm32/matrix.c
@@ -134,7 +134,7 @@ static matrix_row_t read_cols(uint8_t row) {
uint8_t data = 0xFF;
if (!mcp23017_status) {
uint8_t regAddr = I2C_GPIOB;
- mcp23017_status = i2c_readReg(I2C_ADDR, regAddr, &data, 1, 10);
+ mcp23017_status = i2c_read_register(I2C_ADDR, regAddr, &data, 1, 10);
}
if (mcp23017_status) {
return 0;
@@ -174,7 +174,7 @@ static void select_row(uint8_t row) {
if (row < MATRIX_ROWS_PER_SIDE) {
if (!mcp23017_status) {
uint8_t data = (0xFF & ~(1 << row));
- mcp23017_status = i2c_writeReg(I2C_ADDR, I2C_GPIOA, &data, 1, 10);
+ mcp23017_status = i2c_write_register(I2C_ADDR, I2C_GPIOA, &data, 1, 10);
}
} else {
GPIOB->BRR = 0x1 << (row+1);
diff --git a/keyboards/ergotravel/keymaps/default/config.h b/keyboards/ergotravel/keymaps/default/config.h
index d047f718d6..746e60da5a 100644
--- a/keyboards/ergotravel/keymaps/default/config.h
+++ b/keyboards/ergotravel/keymaps/default/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -34,7 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
+#define RGBLIGHT_LED_COUNT 14
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/ergotravel/keymaps/via/config.h b/keyboards/ergotravel/keymaps/via/config.h
index 409e3efde4..d42b738adc 100644
--- a/keyboards/ergotravel/keymaps/via/config.h
+++ b/keyboards/ergotravel/keymaps/via/config.h
@@ -23,8 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-// #undef RGBLED_NUM
-// #define RGBLED_NUM 14
+// #undef RGBLIGHT_LED_COUNT
+// #define RGBLIGHT_LED_COUNT 14
// #define RGBLIGHT_HUE_STEP 8
// #define RGBLIGHT_SAT_STEP 8
// #define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/evyd13/atom47/rev5/config.h b/keyboards/evyd13/atom47/rev5/config.h
index 53bbf4f51b..83d433f08d 100644
--- a/keyboards/evyd13/atom47/rev5/config.h
+++ b/keyboards/evyd13/atom47/rev5/config.h
@@ -39,53 +39,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-#define RGB_MATRIX_LED_COUNT 64
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/evyd13/atom47/rev5/info.json b/keyboards/evyd13/atom47/rev5/info.json
index bb068b1536..e82a7797de 100644
--- a/keyboards/evyd13/atom47/rev5/info.json
+++ b/keyboards/evyd13/atom47/rev5/info.json
@@ -9,6 +9,37 @@
"device_version": "0.0.1"
},
"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
+ },
"driver": "is31fl3733"
},
"matrix_pins": {
@@ -18,7 +49,7 @@
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "qmk-dfu",
- "layout_aliases": {
+ "layout_aliases": {
"LAYOUT_all": "LAYOUT_split_space"
},
"layouts": {
diff --git a/keyboards/evyd13/atom47/rev5/rev5.c b/keyboards/evyd13/atom47/rev5/rev5.c
index 7bf2a961ff..6dad846614 100644
--- a/keyboards/evyd13/atom47/rev5/rev5.c
+++ b/keyboards/evyd13/atom47/rev5/rev5.c
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/evyd13/eon40/rules.mk b/keyboards/evyd13/eon40/rules.mk
index 4223fc83cc..ece680a57a 100644
--- a/keyboards/evyd13/eon40/rules.mk
+++ b/keyboards/evyd13/eon40/rules.mk
@@ -12,8 +12,6 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
AUDIO_SUPPORTED = no
diff --git a/keyboards/evyd13/eon95/config.h b/keyboards/evyd13/eon95/config.h
index dcf77ef1ac..230ff5e311 100644
--- a/keyboards/evyd13/eon95/config.h
+++ b/keyboards/evyd13/eon95/config.h
@@ -36,5 +36,3 @@
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/evyd13/eon95/info.json b/keyboards/evyd13/eon95/info.json
index 8e2b0a5034..c928894dba 100644
--- a/keyboards/evyd13/eon95/info.json
+++ b/keyboards/evyd13/eon95/info.json
@@ -13,6 +13,9 @@
"rows": ["D1", "D0", "D3", "D2", "D6", "D4", "D7", "B4", "B5", "B6", "C6", "C7"]
},
"diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "D5",
"num_lock": "B7",
diff --git a/keyboards/evyd13/quackfire/config.h b/keyboards/evyd13/quackfire/config.h
index 78bb3b6f80..f64827d05f 100644
--- a/keyboards/evyd13/quackfire/config.h
+++ b/keyboards/evyd13/quackfire/config.h
@@ -37,5 +37,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/evyd13/quackfire/info.json b/keyboards/evyd13/quackfire/info.json
index 4f2e248aa5..493559b38e 100644
--- a/keyboards/evyd13/quackfire/info.json
+++ b/keyboards/evyd13/quackfire/info.json
@@ -13,6 +13,9 @@
"rows": ["D3", "F5", "F4", "F0", "B7", "B2", "E6", "B0"]
},
"diode_direction": "ROW2COL",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "F7",
"scroll_lock": "F6",
diff --git a/keyboards/evyd13/wasdat/config.h b/keyboards/evyd13/wasdat/config.h
index 78e619874c..8f4df3adf5 100644
--- a/keyboards/evyd13/wasdat/config.h
+++ b/keyboards/evyd13/wasdat/config.h
@@ -52,5 +52,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/evyd13/wasdat/info.json b/keyboards/evyd13/wasdat/info.json
index f044efff66..109e033532 100644
--- a/keyboards/evyd13/wasdat/info.json
+++ b/keyboards/evyd13/wasdat/info.json
@@ -13,6 +13,9 @@
"bootmagic": {
"matrix": [0, 5]
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"qmk_lufa_bootloader": {
"esc_output": "D6",
"esc_input": "D7",
diff --git a/keyboards/evyd13/wasdat_code/config.h b/keyboards/evyd13/wasdat_code/config.h
index 085965b814..769751b19d 100644
--- a/keyboards/evyd13/wasdat_code/config.h
+++ b/keyboards/evyd13/wasdat_code/config.h
@@ -58,5 +58,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/evyd13/wasdat_code/info.json b/keyboards/evyd13/wasdat_code/info.json
index 3841f56cbd..9fb14283ae 100644
--- a/keyboards/evyd13/wasdat_code/info.json
+++ b/keyboards/evyd13/wasdat_code/info.json
@@ -13,6 +13,9 @@
"levels": 5,
"breathing": true
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"qmk_lufa_bootloader": {
"esc_input": "F0",
"esc_output": "E6",
diff --git a/keyboards/exclusive/e6_rgb/config.h b/keyboards/exclusive/e6_rgb/config.h
index 62eb2320f7..009c99e2ff 100644
--- a/keyboards/exclusive/e6_rgb/config.h
+++ b/keyboards/exclusive/e6_rgb/config.h
@@ -5,5 +5,3 @@
#pragma once
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-
-#define RGB_MATRIX_LED_COUNT 63
diff --git a/keyboards/exclusive/e6_rgb/e6_rgb.c b/keyboards/exclusive/e6_rgb/e6_rgb.c
index f34f40cc1f..24676e8910 100644
--- a/keyboards/exclusive/e6_rgb/e6_rgb.c
+++ b/keyboards/exclusive/e6_rgb/e6_rgb.c
@@ -7,7 +7,7 @@ void matrix_init_kb(void) {
matrix_init_user();
}
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/fallacy/indicators.c b/keyboards/fallacy/indicators.c
index b95786db41..41d27b0972 100755
--- a/keyboards/fallacy/indicators.c
+++ b/keyboards/fallacy/indicators.c
@@ -15,7 +15,7 @@
*/
#include "indicators.h"
-#include "drivers/led/issi/is31fl3731-simple.h"
+#include "drivers/led/issi/is31fl3731-mono.h"
#include "i2c_master.h"
/* Set up IS31FL3731 for use in powering indicator LEDs. Absolutely overkill for this job but it was already in the design.
diff --git a/keyboards/fallacy/rules.mk b/keyboards/fallacy/rules.mk
index 7fa230bae2..ee1a36c910 100755
--- a/keyboards/fallacy/rules.mk
+++ b/keyboards/fallacy/rules.mk
@@ -13,5 +13,5 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC += indicators.c \
- drivers/led/issi/is31fl3731-simple.c
+ drivers/led/issi/is31fl3731-mono.c
I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/fancytech/fancyalice66/config.h b/keyboards/fancytech/fancyalice66/config.h
deleted file mode 100644
index 9f56bd3a20..0000000000
--- a/keyboards/fancytech/fancyalice66/config.h
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2022 chent7 (@chent7)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 82
-
- /* RGB Matrix effect */
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#endif \ No newline at end of file
diff --git a/keyboards/fc660c/ad5258.c b/keyboards/fc660c/ad5258.c
index f7ff2f3dc1..9d33c10ce4 100644
--- a/keyboards/fc660c/ad5258.c
+++ b/keyboards/fc660c/ad5258.c
@@ -35,18 +35,18 @@ void ad5258_init(void) {
uint8_t ad5258_read_rdac(void) {
// read RDAC register
uint8_t ret = 0;
- i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &ret, 1, 100);
+ i2c_read_register(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &ret, 1, 100);
return ret;
}
uint8_t ad5258_read_eeprom(void) {
uint8_t ret = 0;
- i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_EEPROM, &ret, 1, 100);
+ i2c_read_register(AD5258_I2C_ADDRESS, AD5258_INST_EEPROM, &ret, 1, 100);
return ret;
}
void ad5258_write_rdac(uint8_t rdac) {
// write RDAC register:
uint8_t data = rdac & 0x3F;
- i2c_writeReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &data, 1, 100);
+ i2c_write_register(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &data, 1, 100);
}
diff --git a/keyboards/fc660c/keymaps/default_rgb/config.h b/keyboards/fc660c/keymaps/default_rgb/config.h
index 23745f3190..1953964f88 100644
--- a/keyboards/fc660c/keymaps/default_rgb/config.h
+++ b/keyboards/fc660c/keymaps/default_rgb/config.h
@@ -21,7 +21,7 @@
/*RGB*/
/*Repurpose Insert LED */
#define WS2812_DI_PIN B5
- #define RGBLED_NUM 16
+ #define RGBLIGHT_LED_COUNT 16
#define RGBLIGHT_DEFAULT_HUE 127
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
diff --git a/keyboards/fc660c/keymaps/via_rgb/config.h b/keyboards/fc660c/keymaps/via_rgb/config.h
index 23745f3190..1953964f88 100644
--- a/keyboards/fc660c/keymaps/via_rgb/config.h
+++ b/keyboards/fc660c/keymaps/via_rgb/config.h
@@ -21,7 +21,7 @@
/*RGB*/
/*Repurpose Insert LED */
#define WS2812_DI_PIN B5
- #define RGBLED_NUM 16
+ #define RGBLIGHT_LED_COUNT 16
#define RGBLIGHT_DEFAULT_HUE 127
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
diff --git a/keyboards/fc980c/ad5258.c b/keyboards/fc980c/ad5258.c
index f7ff2f3dc1..9d33c10ce4 100644
--- a/keyboards/fc980c/ad5258.c
+++ b/keyboards/fc980c/ad5258.c
@@ -35,18 +35,18 @@ void ad5258_init(void) {
uint8_t ad5258_read_rdac(void) {
// read RDAC register
uint8_t ret = 0;
- i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &ret, 1, 100);
+ i2c_read_register(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &ret, 1, 100);
return ret;
}
uint8_t ad5258_read_eeprom(void) {
uint8_t ret = 0;
- i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_EEPROM, &ret, 1, 100);
+ i2c_read_register(AD5258_I2C_ADDRESS, AD5258_INST_EEPROM, &ret, 1, 100);
return ret;
}
void ad5258_write_rdac(uint8_t rdac) {
// write RDAC register:
uint8_t data = rdac & 0x3F;
- i2c_writeReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &data, 1, 100);
+ i2c_write_register(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &data, 1, 100);
}
diff --git a/keyboards/fc980c/config.h b/keyboards/fc980c/config.h
index 776b8ef35f..4937e9e801 100644
--- a/keyboards/fc980c/config.h
+++ b/keyboards/fc980c/config.h
@@ -17,10 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-/* Maximum dynamic keymap layers (constrained by EEPROM space) */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
diff --git a/keyboards/fc980c/info.json b/keyboards/fc980c/info.json
index 27a10b6f51..5060885c69 100644
--- a/keyboards/fc980c/info.json
+++ b/keyboards/fc980c/info.json
@@ -8,6 +8,9 @@
"pid": "0x980C",
"device_version": "1.0.0"
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "B5",
"num_lock": "B4",
diff --git a/keyboards/feker/ik75/config.h b/keyboards/feker/ik75/config.h
index b49621bda0..1a9c401fb2 100644
--- a/keyboards/feker/ik75/config.h
+++ b/keyboards/feker/ik75/config.h
@@ -17,62 +17,5 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
- /* RGB Matrix config */
- #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_VCC_VCC
- #define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND
- #define DRIVER_1_LED_TOTAL 63
- #define DRIVER_2_LED_TOTAL 64
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_VCC_VCC
+#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/feker/ik75/ik75.c b/keyboards/feker/ik75/ik75.c
index 826afab01b..e6424491bd 100644
--- a/keyboards/feker/ik75/ik75.c
+++ b/keyboards/feker/ik75/ik75.c
@@ -18,7 +18,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | G location
diff --git a/keyboards/feker/ik75/info.json b/keyboards/feker/ik75/info.json
index 0da1ff08ea..4b7e491519 100644
--- a/keyboards/feker/ik75/info.json
+++ b/keyboards/feker/ik75/info.json
@@ -9,7 +9,53 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "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": "is31fl3733",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["E6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "E2"],
diff --git a/keyboards/ferris/0_2/bling/bling.c b/keyboards/ferris/0_2/bling/bling.c
index 07f58149cc..69fbe411eb 100644
--- a/keyboards/ferris/0_2/bling/bling.c
+++ b/keyboards/ferris/0_2/bling/bling.c
@@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
| | 4 | | || | | 4 | |
| 6 | | | 2 || 2 | | | 5 |
*/
-const is31fl3731_led_t g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/ferris/0_2/bling/config.h b/keyboards/ferris/0_2/bling/config.h
index 64e7a6de2d..2325463e1f 100644
--- a/keyboards/ferris/0_2/bling/config.h
+++ b/keyboards/ferris/0_2/bling/config.h
@@ -20,55 +20,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* LED Drivers */
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL
-#define DRIVER_1_LED_TOTAL 7
-#define DRIVER_2_LED_TOTAL 7
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define RGB_MATRIX_LED_COUNT 14
diff --git a/keyboards/ferris/0_2/bling/info.json b/keyboards/ferris/0_2/bling/info.json
index 1e9703f599..06a826450b 100644
--- a/keyboards/ferris/0_2/bling/info.json
+++ b/keyboards/ferris/0_2/bling/info.json
@@ -4,6 +4,51 @@
"pid": "0x0002"
},
"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": "is31fl3731"
}
}
diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c
index af4b045eb8..cf26385f4c 100644
--- a/keyboards/ferris/0_2/matrix.c
+++ b/keyboards/ferris/0_2/matrix.c
@@ -42,9 +42,7 @@ extern i2c_status_t mcp23017_status;
// All address pins of the mcp23017 are connected to the ground on the ferris
// | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
// | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
-#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
+#define I2C_ADDR (0b0100000 << 1)
// Register addresses
// See https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/Adafruit_MCP23017.h
@@ -77,9 +75,9 @@ uint8_t init_mcp23017(void) {
// - driving : output : 0
// This means: we will read all the bits on GPIOA
// This means: we will write to the pins 0-4 on GPIOB (in select_rows)
- uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000};
+ uint8_t buf[] = {0b11111111, 0b11110000};
print("before transmit\n");
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT);
+ mcp23017_status = i2c_writeReg(I2C_ADDR, IODIRA, buf, sizeof(buf), MCP23017_I2C_TIMEOUT)
uprintf("after transmit %i\n", mcp23017_status);
if (!mcp23017_status) {
// set pull-up
@@ -88,8 +86,7 @@ uint8_t init_mcp23017(void) {
// - driving : off : 0
// This means: we will read all the bits on GPIOA
// This means: we will write to the pins 0-4 on GPIOB (in select_rows)
- uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), MCP23017_I2C_TIMEOUT);
+ mcp23017_status = i2c_writeReg(I2C_ADDR, GPPUA, buf, sizeof(buf), MCP23017_I2C_TIMEOUT)
uprintf("after transmit2 %i\n", mcp23017_status);
}
return mcp23017_status;
@@ -189,18 +186,13 @@ static matrix_row_t read_cols(uint8_t row) {
if (mcp23017_status) { // if there was an error
return 0;
} else {
- uint8_t buf[] = {MCP23017_GPIOA};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), MCP23017_I2C_TIMEOUT);
// We read all the pins on GPIOA.
// The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero.
// The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys.
// Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones.
uint8_t data[] = {0};
- if (!mcp23017_status) {
- mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), MCP23017_I2C_TIMEOUT);
- data[0] = ~(data[0]);
- }
- return data[0];
+ mcp23017_status = i2c_readReg(I2C_ADDR, MCP23017_GPIOA, data, sizeof(data), MCP23017_I2C_TIMEOUT);
+ return ~data[0];
}
}
}
@@ -244,8 +236,8 @@ static void select_row(uint8_t row) {
} else {
// Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one.
// Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus.
- uint8_t buf[] = {MCP23017_GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ uint8_t buf[] = {0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))};
+ mcp23017_status = i2c_writeReg(I2C_ADDR, MCP23017_GPIOB, buf, sizeof(buf), MCP23017_I2C_TIMEOUT);
}
}
}
diff --git a/keyboards/flashquark/horizon_z/config.h b/keyboards/flashquark/horizon_z/config.h
index ddeafe578d..360a170626 100755
--- a/keyboards/flashquark/horizon_z/config.h
+++ b/keyboards/flashquark/horizon_z/config.h
@@ -14,64 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#pragma once
-
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 62
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/flashquark/horizon_z/horizon_z.c b/keyboards/flashquark/horizon_z/horizon_z.c
index a9faa5a943..5ab6e22434 100755
--- a/keyboards/flashquark/horizon_z/horizon_z.c
+++ b/keyboards/flashquark/horizon_z/horizon_z.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{0, B_1, A_1, C_1},
{0, B_2, A_2, C_2},
{0, B_3, A_3, C_3},
diff --git a/keyboards/flashquark/horizon_z/info.json b/keyboards/flashquark/horizon_z/info.json
index 9127042f71..0fe14e7c60 100755
--- a/keyboards/flashquark/horizon_z/info.json
+++ b/keyboards/flashquark/horizon_z/info.json
@@ -20,6 +20,36 @@
},
"processor": "atmega32u4",
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
"driver": "is31fl3733",
"layout": [
{ "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
@@ -83,7 +113,8 @@
{ "flags": 1, "matrix": [4, 10], "x": 182, "y": 64 },
{ "flags": 1, "matrix": [4, 12], "x": 202, "y": 64 },
{ "flags": 1, "matrix": [4, 13], "x": 222, "y": 64 }
- ]
+ ],
+ "sleep": true
},
"url": "https://flashquark.com/product/flashquark-horizon-z-qmk-edition-custom-kit/",
"usb": {
diff --git a/keyboards/flygone60/rev3/readme.md b/keyboards/flygone60/rev3/readme.md
deleted file mode 100644
index d5e8cbcc25..0000000000
--- a/keyboards/flygone60/rev3/readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# flygone60
-
-![Flygone60](https://i.imgur.com/x63gMG2h.jpeg)
-
-A 60% that takes arrow keys seriously!
-
-* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
-* Hardware Supported: Flygone60
-* Hardware Availability: [Kit](https://www.etsy.com/listing/1025415290/flygone60-keyboard-kit?ga_order=most_relevant&ga_search_type=all&ga_view_type=gallery&ga_search_query=flygone60&ref=sr_gallery-1-13&organic_search_click=1&frs=1)
-
-Make example for this keyboard (after setting up your build environment):
-
- make flygone60/rev3:default
-
-Flashing example for this keyboard:
-
- make flygone60/rev3: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).
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/foxlab/key65/universal/readme.md b/keyboards/foxlab/key65/universal/readme.md
index 967b9565f2..36f63b1aba 100644
--- a/keyboards/foxlab/key65/universal/readme.md
+++ b/keyboards/foxlab/key65/universal/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## RGB LED support
-The universal PCB supports RGB LEDs as an LED strip, but is not supplied with one. To use RGB LEDs, you should configure the RGBLED_NUM to match the number of LEDs on your strip.
+The universal PCB supports RGB LEDs as an LED strip, but is not supplied with one. To use RGB LEDs, you should configure the RGBLIGHT_LED_COUNT to match the number of LEDs on your strip.
diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk
index 6beb282431..ee623488da 100755
--- a/keyboards/fractal/rules.mk
+++ b/keyboards/fractal/rules.mk
@@ -10,8 +10,6 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
AUDIO_SUPPORTED = no
diff --git a/keyboards/frobiac/blackbowl/matrix.c b/keyboards/frobiac/blackbowl/matrix.c
index 727e26ddc1..2a2c2618ab 100644
--- a/keyboards/frobiac/blackbowl/matrix.c
+++ b/keyboards/frobiac/blackbowl/matrix.c
@@ -45,10 +45,10 @@ void matrix_init_custom(void) {
uint8_t pullup[2] = {0, expander_input_mask};
for (uint8_t i = 0; i < 2; ++i) {
- expander_status = i2c_writeReg(i2c_addr[i], IODIRA, direction, 2, I2C_TIMEOUT);
+ expander_status = i2c_write_register(i2c_addr[i], IODIRA, direction, 2, I2C_TIMEOUT);
if (expander_status) return;
- expander_status = i2c_writeReg(i2c_addr[i], GPPUA, pullup, 2, I2C_TIMEOUT);
+ expander_status = i2c_write_register(i2c_addr[i], GPPUA, pullup, 2, I2C_TIMEOUT);
}
}
@@ -79,7 +79,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
// On both expanders: select col and read rows
for (size_t i = 0; i < 2; ++i) {
if (!expander_status) {
- expander_status = i2c_writeReg(i2c_addr[i], EXPANDER_COL_REGISTER, &port, 1, I2C_TIMEOUT);
+ expander_status = i2c_write_register(i2c_addr[i], EXPANDER_COL_REGISTER, &port, 1, I2C_TIMEOUT);
}
wait_us(30);
@@ -87,7 +87,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
return false;
}
- expander_status = i2c_readReg(i2c_addr[i], EXPANDER_ROW_REGISTER, &column_state[i], 1, I2C_TIMEOUT);
+ expander_status = i2c_read_register(i2c_addr[i], EXPANDER_ROW_REGISTER, &column_state[i], 1, I2C_TIMEOUT);
column_state[i] = (~column_state[i]) & ((1 << MATRIX_ROWS_PER_SIDE) - 1);
}
diff --git a/keyboards/frooastboard/walnut/config.h b/keyboards/frooastboard/walnut/config.h
index 710cd19342..c9ee79eecb 100644
--- a/keyboards/frooastboard/walnut/config.h
+++ b/keyboards/frooastboard/walnut/config.h
@@ -3,42 +3,5 @@
#pragma once
-#define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_26K7_HZ
-#define RGB_MATRIX_LED_COUNT 48
#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 191
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16
-#define RGB_MATRIX_DEFAULT_SPD 191
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_26K7_HZ
diff --git a/keyboards/frooastboard/walnut/info.json b/keyboards/frooastboard/walnut/info.json
index fc8ca2130f..4864e12fbc 100644
--- a/keyboards/frooastboard/walnut/info.json
+++ b/keyboards/frooastboard/walnut/info.json
@@ -15,7 +15,42 @@
"nkro": true
},
"rgb_matrix": {
- "driver": "is31fl3737"
+ "animations": {
+ "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
+ },
+ "default": {
+ "animation": "rainbow_moving_chevron",
+ "speed": 191
+ },
+ "driver": "is31fl3737",
+ "max_brightness": 191,
+ "sleep": true
},
"build": {
"lto": true
diff --git a/keyboards/frooastboard/walnut/walnut.c b/keyboards/frooastboard/walnut/walnut.c
index 48d1677f7a..e3205e07f3 100644
--- a/keyboards/frooastboard/walnut/walnut.c
+++ b/keyboards/frooastboard/walnut/walnut.c
@@ -5,7 +5,7 @@
#if defined(RGB_MATRIX_ENABLE)
-const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/fs_streampad/config.h b/keyboards/fs_streampad/config.h
new file mode 100644
index 0000000000..567c985a63
--- /dev/null
+++ b/keyboards/fs_streampad/config.h
@@ -0,0 +1,7 @@
+// Copyright 2023 Matthijs Muller
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
diff --git a/keyboards/fs_streampad/info.json b/keyboards/fs_streampad/info.json
new file mode 100644
index 0000000000..5adefff443
--- /dev/null
+++ b/keyboards/fs_streampad/info.json
@@ -0,0 +1,95 @@
+{
+ "manufacturer": "Forward Slash",
+ "keyboard_name": "FS streampad",
+ "maintainer": "Matthijs Muller",
+ "url": "https://github.com/smollchungus",
+ "usb": {
+ "vid": "0x5363",
+ "pid": "0x3333",
+ "device_version": "0.0.1"
+ },
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "rows": ["GP10", "GP9", "GP23"],
+ "cols": ["GP25", "GP26", "GP24"]
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0 },
+ { "matrix": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 }
+ ]
+ }
+ },
+ "ws2812": {
+ "pin": "GP8",
+ "driver": "vendor"
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": true
+ },
+ "default": {
+ "animation": "cycle_left_right"
+ },
+ "sleep": true,
+ "layout": [
+ {"matrix": [0, 0], "flags": 4, "x": 0, "y": 0 },
+ {"matrix": [0, 1], "flags": 4, "x": 112, "y": 0 },
+ {"matrix": [0, 2], "flags": 4, "x": 224, "y": 0 },
+ {"matrix": [1, 2], "flags": 4, "x": 224, "y": 32},
+ {"matrix": [1, 1], "flags": 4, "x": 112, "y": 32},
+ {"matrix": [1, 0], "flags": 4, "x": 0, "y": 32},
+ {"matrix": [2, 0], "flags": 4, "x": 0, "y": 64},
+ {"matrix": [2, 1], "flags": 4, "x": 112, "y": 64},
+ {"matrix": [2, 2], "flags": 4, "x": 224, "y": 64}
+ ]
+ }
+}
diff --git a/keyboards/fs_streampad/keymaps/default/keymap.c b/keyboards/fs_streampad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..15997a0839
--- /dev/null
+++ b/keyboards/fs_streampad/keymaps/default/keymap.c
@@ -0,0 +1,19 @@
+// Copyright 2023 Matthijs Muller
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, MO(1)
+ ),
+
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_RMOD,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fs_streampad/keymaps/via/keymap.c b/keyboards/fs_streampad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..15997a0839
--- /dev/null
+++ b/keyboards/fs_streampad/keymaps/via/keymap.c
@@ -0,0 +1,19 @@
+// Copyright 2023 Matthijs Muller
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, MO(1)
+ ),
+
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_RMOD,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/enter80/keymaps/via/rules.mk b/keyboards/fs_streampad/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/enter80/keymaps/via/rules.mk
+++ b/keyboards/fs_streampad/keymaps/via/rules.mk
diff --git a/keyboards/fs_streampad/readme.md b/keyboards/fs_streampad/readme.md
new file mode 100644
index 0000000000..24a80e7611
--- /dev/null
+++ b/keyboards/fs_streampad/readme.md
@@ -0,0 +1,24 @@
+# FS streampad
+
+A 3x3 hotswap macropad.
+
+* Keyboard Maintainer: [Matthijs Muller](https://github.com/Smollchungus)
+* Hardware Supported: FS streampad
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fs_streampad:default
+
+Flashing example for this keyboard:
+
+ make fs_streampad: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/macro3/rules.mk b/keyboards/fs_streampad/rules.mk
index 6e7633bfe0..6e7633bfe0 100644
--- a/keyboards/macro3/rules.mk
+++ b/keyboards/fs_streampad/rules.mk
diff --git a/keyboards/gboards/ergotaco/ergotaco.c b/keyboards/gboards/ergotaco/ergotaco.c
index daeba1e0a6..694e07f031 100644
--- a/keyboards/gboards/ergotaco/ergotaco.c
+++ b/keyboards/gboards/ergotaco/ergotaco.c
@@ -49,23 +49,17 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- i2c_stop();
-
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
-
-out:
- i2c_stop();
+ uint8_t data[] = {0b00000000, 0b00111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT);
+
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT);
+ }
+
// SREG=sreg_prev;
//uprintf("Init %x\n", mcp23018_status);
return mcp23018_status;
diff --git a/keyboards/gboards/ergotaco/ergotaco.h b/keyboards/gboards/ergotaco/ergotaco.h
index e23fc264f4..6ab47ced74 100644
--- a/keyboards/gboards/ergotaco/ergotaco.h
+++ b/keyboards/gboards/ergotaco/ergotaco.h
@@ -11,10 +11,7 @@ extern i2c_status_t mcp23018_status;
#define ERGODOX_EZ_I2C_TIMEOUT 1000
// I2C aliases and register addresses (see "mcp23018.md")
-//#define I2C_ADDR 0b0100000
-#define I2C_ADDR 0x20
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0x20<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/gboards/ergotaco/matrix.c b/keyboards/gboards/ergotaco/matrix.c
index 63d4c4f5f3..3c49f2802e 100644
--- a/keyboards/gboards/ergotaco/matrix.c
+++ b/keyboards/gboards/ergotaco/matrix.c
@@ -234,15 +234,8 @@ static matrix_row_t read_cols(uint8_t row)
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
- data = (~((uint8_t)mcp23018_status) >> 2) & 0x01 ;
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
-
+ mcp23018_status = i2c_readReg(I2C_ADDR, GPIOB, &data, 1, ERGODOX_EZ_I2C_TIMEOUT);
+ data = (~((uint8_t)data) >> 2) & 0x01 ;
#ifdef DEBUG_MATRIX
if (data != 0x00) xprintf("I2C: %d\n", data);
#endif
@@ -274,11 +267,8 @@ static void select_row(uint8_t row)
if (mcp23018_status) { // do nothing on error
// Read using bitmask
} else { // set active row low : 0 // set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(~(1<<row), ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data = ~(1<<row);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, ERGODOX_EZ_I2C_TIMEOUT);
}
} else {
// Output low(DDR:1, PORT:0) to select
diff --git a/keyboards/gboards/georgi/georgi.c b/keyboards/gboards/georgi/georgi.c
index dd95b593f1..745e8ab35d 100644
--- a/keyboards/gboards/georgi/georgi.c
+++ b/keyboards/gboards/georgi/georgi.c
@@ -45,23 +45,17 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b10000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- i2c_stop();
-
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b10000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ uint8_t data[] = {0b10000000, 0b11111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, 2, ERGODOX_EZ_I2C_TIMEOUT);
+
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, 2, ERGODOX_EZ_I2C_TIMEOUT);
+ }
-out:
- i2c_stop();
// SREG=sreg_prev;
//uprintf("Init %x\n", mcp23018_status);
return mcp23018_status;
diff --git a/keyboards/gboards/georgi/georgi.h b/keyboards/gboards/georgi/georgi.h
index e23fc264f4..6ab47ced74 100644
--- a/keyboards/gboards/georgi/georgi.h
+++ b/keyboards/gboards/georgi/georgi.h
@@ -11,10 +11,7 @@ extern i2c_status_t mcp23018_status;
#define ERGODOX_EZ_I2C_TIMEOUT 1000
// I2C aliases and register addresses (see "mcp23018.md")
-//#define I2C_ADDR 0b0100000
-#define I2C_ADDR 0x20
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0x20<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/gboards/georgi/matrix.c b/keyboards/gboards/georgi/matrix.c
index b66b1a194c..d1151ae80e 100644
--- a/keyboards/gboards/georgi/matrix.c
+++ b/keyboards/gboards/georgi/matrix.c
@@ -254,14 +254,7 @@ static matrix_row_t read_cols(uint8_t row)
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
- data = ~((uint8_t)mcp23018_status);
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
+ mcp23018_status = i2c_readReg(I2C_ADDR, GPIOB, &data, 1, ERGODOX_EZ_I2C_TIMEOUT);
#ifdef DEBUG_MATRIX
if (data != 0x00) xprintf("I2C: %d\n", data);
@@ -304,11 +297,9 @@ static void select_row(uint8_t row)
// select on mcp23018
if (mcp23018_status) { // do nothing on error
} else { // set active row low : 0 // set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0xFF & ~(1<<row), ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data = 0xFF & ~(1<<row);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, ERGODOX_EZ_I2C_TIMEOUT);
+
}
} else {
// Output low(DDR:1, PORT:0) to select
diff --git a/keyboards/gboards/gergo/gergo.c b/keyboards/gboards/gergo/gergo.c
index da2a3007a8..41d383d408 100644
--- a/keyboards/gboards/gergo/gergo.c
+++ b/keyboards/gboards/gergo/gergo.c
@@ -43,23 +43,17 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b10000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
- i2c_stop();
+ uint8_t data[] = {0b10000000, 0b11111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), I2C_TIMEOUT);
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b10000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), I2C_TIMEOUT);
+ }
-out:
- i2c_stop();
// SREG=sreg_prev;
//uprintf("Init %x\n", mcp23018_status);
return mcp23018_status;
diff --git a/keyboards/gboards/gergo/gergo.h b/keyboards/gboards/gergo/gergo.h
index ea6368e2f1..f6dc1498f0 100644
--- a/keyboards/gboards/gergo/gergo.h
+++ b/keyboards/gboards/gergo/gergo.h
@@ -11,10 +11,7 @@ extern i2c_status_t mcp23018_status;
#define I2C_TIMEOUT 1000
// I2C aliases and register addresses (see "mcp23018.md")
-//#define I2C_ADDR 0b0100000
-#define I2C_ADDR 0x20
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0x20<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
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/matrix.c b/keyboards/gboards/gergo/matrix.c
index 8a6b38bf73..b4885361fb 100644
--- a/keyboards/gboards/gergo/matrix.c
+++ b/keyboards/gboards/gergo/matrix.c
@@ -297,19 +297,12 @@ static matrix_row_t read_cols(uint8_t row) {
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
- data = ~((uint8_t)mcp23018_status);
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
+ mcp23018_status = i2c_readReg(I2C_ADDR, GPIOB, &data, 1, I2C_TIMEOUT);
#ifdef DEBUG_MATRIX
- if (data != 0x00) xprintf("I2C: %d\n", data);
+ if (~data != 0x00) xprintf("I2C: %d\n", ~data);
#endif
- return data;
+ return ~data;
}
} else {
/* read from teensy
@@ -350,11 +343,8 @@ static void select_row(uint8_t row)
// select on mcp23018
if (mcp23018_status) { // do nothing on error
} else { // set active row low : 0 // set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0xFF & ~(1<<row), I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data = 0xFF & ~(1<<row);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT);
}
} else {
// Output low(DDR:1, PORT:0) to select
diff --git a/keyboards/gboards/gergoplex/gergoplex.c b/keyboards/gboards/gergoplex/gergoplex.c
index 1e44583895..b621201c16 100644
--- a/keyboards/gboards/gergoplex/gergoplex.c
+++ b/keyboards/gboards/gergoplex/gergoplex.c
@@ -39,30 +39,16 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11000001, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- i2c_stop();
-
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11000001, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
+ uint8_t data[] = {0b11000001, 0b11111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), I2C_TIMEOUT);
+
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), I2C_TIMEOUT);
+ }
-out:
- i2c_stop();
return mcp23018_status;
}
diff --git a/keyboards/gboards/gergoplex/gergoplex.h b/keyboards/gboards/gergoplex/gergoplex.h
index 549228104a..217cb8dff1 100644
--- a/keyboards/gboards/gergoplex/gergoplex.h
+++ b/keyboards/gboards/gergoplex/gergoplex.h
@@ -25,9 +25,7 @@ extern i2c_status_t mcp23018_status;
#define XXX KC_NO
// I2C aliases and register addresses (see "mcp23018.md")
-#define I2C_ADDR 0x20 // 0b0100000
-#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
-#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
+#define I2C_ADDR (0x20 << 1) // 0b0100000
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/gboards/gergoplex/matrix.c b/keyboards/gboards/gergoplex/matrix.c
index c9f5528b74..9437b24377 100644
--- a/keyboards/gboards/gergoplex/matrix.c
+++ b/keyboards/gboards/gergoplex/matrix.c
@@ -177,20 +177,12 @@ static matrix_row_t read_cols(uint8_t row) {
if (mcp23018_status) { // if there was an error
return 0;
} else {
- uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_read_nack(I2C_TIMEOUT);
- if (mcp23018_status < 0) goto out;
- data = ~((uint8_t)mcp23018_status);
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
-
+ uint8_t data = 0;
+ mcp23018_status = i2c_receive(I2C_ADDR, &data, 1, I2C_TIMEOUT);
#ifdef DEBUG_MATRIX
- if (data != 0x00) xprintf("I2C: %d\n", data);
+ if (~data != 0x00) xprintf("I2C: %d\n", ~data);
#endif
- return data;
+ return ~data;
}
} else {
return ~((((PINF & COL4) >> 1) | ((PINF & (COL1 | COL2 | COL3)) >> 3)) & 0xF);
@@ -213,14 +205,10 @@ static void select_row(uint8_t row) {
// select on mcp23018
if (mcp23018_status) { // do nothing on error
} else { // set active row low : 0 // set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0xFF & ~(1 << (row + 1)), I2C_TIMEOUT);
- if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data;
+ data = 0xFF & ~(1 << (row + 1));
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT);
+
}
} else {
setPinOutput(row_pins[row - MATRIX_ROWS_PER_SIDE]);
diff --git a/keyboards/geekboards/macropad_v2/config.h b/keyboards/geekboards/macropad_v2/config.h
index 47f9064e45..6aed50ec2f 100644
--- a/keyboards/geekboards/macropad_v2/config.h
+++ b/keyboards/geekboards/macropad_v2/config.h
@@ -16,72 +16,10 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 42
-
-// PWM RGB Underglow Defines
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
#define WS2812_DMA_CHANNEL 3
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define ENABLE_RGB_MATRIX_RAINDROPS
-// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN
-# define RGB_MATRIX_DEFAULT_SAT 255
-# define RGB_MATRIX_DEFAULT_VAL 192
-# define RGB_MATRIX_DEFAULT_SPD 30
-#endif //RGB_MATRIX_ENABLE
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define WAIT_FOR_USB
diff --git a/keyboards/geekboards/macropad_v2/info.json b/keyboards/geekboards/macropad_v2/info.json
index 95b1ca94d7..cb8c3b81be 100644
--- a/keyboards/geekboards/macropad_v2/info.json
+++ b/keyboards/geekboards/macropad_v2/info.json
@@ -16,7 +16,42 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "dual_beacon": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "typing_heatmap": true,
+ "digital_rain": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_multinexus": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true,
+ "solid_multisplash": true
+ },
+ "default": {
+ "animation": "cycle_up_down",
+ "sat": 255,
+ "speed": 30,
+ "val": 192
+ },
+ "driver": "ws2812",
+ "sleep": true
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
diff --git a/keyboards/geekboards/tester/config.h b/keyboards/geekboards/tester/config.h
index c71ee9f351..1c78a34e60 100644
--- a/keyboards/geekboards/tester/config.h
+++ b/keyboards/geekboards/tester/config.h
@@ -1,63 +1,6 @@
#pragma once
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+
#define LOCKING_SUPPORT_ENABL
#define LOCKING_RESYNC_ENABLE
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL
-# define DRIVER_1_LED_TOTAL 8
-# define DRIVER_2_LED_TOTAL 0
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#endif
diff --git a/keyboards/geekboards/tester/info.json b/keyboards/geekboards/tester/info.json
index 363ab895a5..03fb682751 100644
--- a/keyboards/geekboards/tester/info.json
+++ b/keyboards/geekboards/tester/info.json
@@ -9,6 +9,47 @@
"device_version": "0.0.1"
},
"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
+ },
"driver": "is31fl3731"
},
"matrix_pins": {
diff --git a/keyboards/geekboards/tester/tester.c b/keyboards/geekboards/tester/tester.c
index 187d887d58..11d2eb4db2 100644
--- a/keyboards/geekboards/tester/tester.c
+++ b/keyboards/geekboards/tester/tester.c
@@ -1,6 +1,6 @@
#include "quantum.h"
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/geonworks/ee_at/ee_at.c b/keyboards/geonworks/ee_at/ee_at.c
new file mode 100644
index 0000000000..b2e6320851
--- /dev/null
+++ b/keyboards/geonworks/ee_at/ee_at.c
@@ -0,0 +1,30 @@
+/* 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 "quantum.h"
+
+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);
+}
+
+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/hub16/keymaps/via/rules.mk b/keyboards/geonworks/ee_at/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hub16/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/geonworks/w1_at/info.json b/keyboards/geonworks/w1_at/info.json
new file mode 100644
index 0000000000..8b7991c03d
--- /dev/null
+++ b/keyboards/geonworks/w1_at/info.json
@@ -0,0 +1,507 @@
+{
+ "manufacturer": "Yiancar-Designs",
+ "keyboard_name": "W1-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": "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},
+ {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
+ {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
+ {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
+ {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
+ {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
+ {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
+ {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
+ {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
+ {"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},
+ {"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},
+ {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
+ {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
+ {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
+ {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
+ {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
+ {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
+ {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
+ {"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": "\\", "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},
+ {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
+ {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
+ {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
+ {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
+ {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
+ {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
+ {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
+ {"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},
+ {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
+ {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
+ {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
+ {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
+ {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
+ {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
+ {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
+ {"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": 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},
+ {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
+ ]
+ },
+ "LAYOUT_ansi_wkl": {
+ "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},
+ {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
+ {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
+ {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
+ {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
+ {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
+ {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
+ {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
+ {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
+ {"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},
+ {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
+ {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
+ {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
+ {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
+ {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
+ {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
+ {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
+ {"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": "\\", "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},
+ {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
+ {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
+ {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
+ {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
+ {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
+ {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
+ {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
+ {"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},
+ {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
+ {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
+ {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
+ {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
+ {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
+ {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
+ {"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},
+ {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
+ ]
+ },
+ "LAYOUT_ansi_wkl_split_bs_rshift": {
+ "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},
+ {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
+ {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
+ {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
+ {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
+ {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
+ {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
+ {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
+ {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
+ {"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},
+ {"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},
+ {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
+ {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
+ {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
+ {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
+ {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
+ {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
+ {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
+ {"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": "\\", "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},
+ {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
+ {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
+ {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
+ {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
+ {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
+ {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
+ {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
+ {"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},
+ {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
+ {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
+ {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
+ {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
+ {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
+ {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
+ {"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": 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},
+ {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
+ ]
+ },
+ "LAYOUT_iso_wkl": {
+ "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},
+ {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
+ {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
+ {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
+ {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
+ {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
+ {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
+ {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
+ {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
+ {"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},
+ {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
+ {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
+ {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
+ {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
+ {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
+ {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
+ {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
+ {"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},
+ {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
+ {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
+ {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
+ {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
+ {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
+ {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
+ {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
+ {"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
+ {"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},
+ {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
+ {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
+ {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
+ {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
+ {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
+ {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
+ {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
+ {"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},
+ {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
+ ]
+ },
+ "LAYOUT_iso_wkl_split_bs_rshift": {
+ "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},
+ {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
+ {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
+ {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
+ {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
+ {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
+ {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
+ {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
+ {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
+ {"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},
+ {"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},
+ {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
+ {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
+ {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
+ {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
+ {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
+ {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
+ {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
+ {"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},
+ {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
+ {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
+ {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
+ {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
+ {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
+ {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
+ {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
+ {"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
+ {"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},
+ {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
+ {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
+ {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
+ {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
+ {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
+ {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
+ {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
+ {"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": 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},
+ {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/geonworks/w1_at/keymaps/default/keymap.c b/keyboards/geonworks/w1_at/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f69fa8a426
--- /dev/null
+++ b/keyboards/geonworks/w1_at/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ KC_P00 = SAFE_RANGE
+};
+
+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_PMNS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3, KC_PMNS,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_P0, KC_P00, KC_PDOT, KC_PENT),
+
+[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_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)
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch(keycode) {
+ case KC_P00:
+ tap_code(KC_P0);
+ tap_code(KC_P0);
+ return false;
+ }
+ }
+ return true;
+}
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/hub20/keymaps/via/rules.mk b/keyboards/geonworks/w1_at/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/hub20/keymaps/via/rules.mk
+++ b/keyboards/geonworks/w1_at/keymaps/via/rules.mk
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/enter67/keymaps/via/rules.mk b/keyboards/geonworks/w1_at/keymaps/zq/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/enter67/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/geonworks/w1_at/readme.md b/keyboards/geonworks/w1_at/readme.md
new file mode 100644
index 0000000000..16296ef6d6
--- /dev/null
+++ b/keyboards/geonworks/w1_at/readme.md
@@ -0,0 +1,32 @@
+# W1-AT
+
+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 keyboard with STM32F072CB
+* Hardware Availability: https://geon.works/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ 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).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- 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/geonworks/w1_at/w1_at.c b/keyboards/geonworks/w1_at/w1_at.c
new file mode 100644
index 0000000000..9858561bc5
--- /dev/null
+++ b/keyboards/geonworks/w1_at/w1_at.c
@@ -0,0 +1,30 @@
+/* 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/>.
+ */
+#include "quantum.h"
+
+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);
+}
+
+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/giabalanai/config.h b/keyboards/giabalanai/config.h
index e4946a3bb3..bd501c1f76 100644
--- a/keyboards/giabalanai/config.h
+++ b/keyboards/giabalanai/config.h
@@ -33,19 +33,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// for "Generic" Promicro to be detected correctly as lefthand side (slave)
#define SPLIT_USB_DETECT
-# define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS
#ifdef RGB_MATRIX_ENABLE
/* ws2812 RGB MATRIX */
-# define RGB_MATRIX_LED_COUNT 123
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-
// for all fingers used at once.
# define LED_HITS_TO_REMEMBER 10
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
-
-// the above brighness setting has no effect on rgb_matrix_set_color().
+// the max brightness setting has no effect on rgb_matrix_set_color().
// Use darker colors instead.
/* RGB darker COLORS */
# define RGB_DARKWHITE 0x66, 0x66, 0x66
@@ -66,50 +61,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_DARKPURPLE 0x30, 0x0, 0x66
# define RGB_DARKMAGENTA 0x66, 0x0, 0x66
# define RGB_DARKPINK 0x66, 0x33, 0x4C
-
-// https://docs.qmk.fm/#/feature_rgb_matrix
-// Enable suspend mode.
-// # define RGB_DISABLE_WHEN_USB_SUSPENDED true
-
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-// #define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define ENABLE_RGB_MATRIX_CYCLE_ALL
-// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #define ENABLE_RGB_MATRIX_DUAL_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif // RGB_MATRIX_ENABLE
/*
diff --git a/keyboards/giabalanai/info.json b/keyboards/giabalanai/info.json
index 592d7a6966..b10cbe943e 100644
--- a/keyboards/giabalanai/info.json
+++ b/keyboards/giabalanai/info.json
@@ -9,7 +9,15 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations" :{
+ "gradient_up_down": true,
+ "rainbow_moving_chevron": true,
+ "hue_breathing": true,
+ "solid_reactive": true,
+ "multisplash": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 50
},
"rgblight": {
"led_count": 123,
diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
index dd10d213a0..01ad55eec0 100644
--- a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
@@ -22,8 +22,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# undef MATRIX_COL_PINS_RIGHT
# ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLED_NUM 120
+# undef RGBLIGHT_LED_COUNT
+# define RGBLIGHT_LED_COUNT 120
# undef RGBLIGHT_LED_MAP
# define RGBLIGHT_LED_MAP { \
108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
index 01905b8dfe..decc2e2dc1 100644
--- a/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
@@ -7,8 +7,8 @@
# undef MATRIX_COL_PINS_RIGHT
# ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLED_NUM 120
+# undef RGBLIGHT_LED_COUNT
+# define RGBLIGHT_LED_COUNT 120
# undef RGBLIGHT_LED_MAP
# define RGBLIGHT_LED_MAP { \
108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
diff --git a/keyboards/gizmo_engineering/gk6/config.h b/keyboards/gizmo_engineering/gk6/config.h
index 5204496e66..f5ba3570fb 100755
--- a/keyboards/gizmo_engineering/gk6/config.h
+++ b/keyboards/gizmo_engineering/gk6/config.h
@@ -21,30 +21,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-#define DRIVER_1_LED_TOTAL 32
-#define DRIVER_2_LED_TOTAL 32
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-
diff --git a/keyboards/gizmo_engineering/gk6/gk6.c b/keyboards/gizmo_engineering/gk6/gk6.c
index 18883727b8..fe85ecc235 100755
--- a/keyboards/gizmo_engineering/gk6/gk6.c
+++ b/keyboards/gizmo_engineering/gk6/gk6.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C1_8, C2_8, C3_8}, //0 led1
{0, C1_7, C2_7, C3_7}, //1 led2
{0, C1_6, C2_6, C3_6}, //2 led3
diff --git a/keyboards/gizmo_engineering/gk6/info.json b/keyboards/gizmo_engineering/gk6/info.json
index c958147971..8a50b365f5 100644
--- a/keyboards/gizmo_engineering/gk6/info.json
+++ b/keyboards/gizmo_engineering/gk6/info.json
@@ -9,7 +9,23 @@
"device_version": "30.3.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "cycle_up_down": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": true,
+ "band_spiral_val": true,
+ "hue_breathing": true,
+ "typing_heatmap": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multicross": true
+ },
+ "driver": "is31fl3731",
+ "react_on_keyup": true,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B5", "C6", "C7", "F7", "F6", "D5", "D3", "D2", "F1", "F4", "B7", "F5"],
diff --git a/keyboards/gkeyboard/gpad8_2r/config.h b/keyboards/gkeyboard/gpad8_2r/config.h
index 88debbe193..82f451e006 100644
--- a/keyboards/gkeyboard/gpad8_2r/config.h
+++ b/keyboards/gkeyboard/gpad8_2r/config.h
@@ -3,59 +3,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 16
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/gkeyboard/gpad8_2r/info.json b/keyboards/gkeyboard/gpad8_2r/info.json
index 9aa63091c9..52e733f961 100644
--- a/keyboards/gkeyboard/gpad8_2r/info.json
+++ b/keyboards/gkeyboard/gpad8_2r/info.json
@@ -36,6 +36,51 @@
]
},
"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": [
{"flags": 4, "matrix": [1, 0], "x": 28, "y": 12},
@@ -54,7 +99,8 @@
{"flags": 2, "x": 84, "y": 60},
{"flags": 2, "x": 140, "y": 60},
{"flags": 2, "x": 196, "y": 60}
- ]
+ ],
+ "sleep": true
},
"ws2812": {
"pin": "GP19",
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
index 0f71fedd0e..2289031f11 100644
--- a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
@@ -21,8 +21,8 @@
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 180
-#ifdef RGBLED_NUM
- #undef RGBLED_NUM
+#ifdef RGBLIGHT_LED_COUNT
+ #undef RGBLIGHT_LED_COUNT
#endif
#define RGB_MATRIX_LED_COUNT 73
@@ -31,7 +31,7 @@
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
index 774006d529..7c43f8d5ec 100644
--- a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
+++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to AW20216S manual for these locations
* driver
* | R location
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/info.json b/keyboards/gmmk/gmmk2/p65/ansi/info.json
index cd9296b81a..2d2230a3b9 100644
--- a/keyboards/gmmk/gmmk2/p65/ansi/info.json
+++ b/keyboards/gmmk/gmmk2/p65/ansi/info.json
@@ -11,9 +11,6 @@
"qmk": {
"tap_keycode_delay": 10
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8"]
diff --git a/keyboards/gmmk/gmmk2/p65/config.h b/keyboards/gmmk/gmmk2/p65/config.h
index ce9ff69433..aad6eb8bb6 100644
--- a/keyboards/gmmk/gmmk2/p65/config.h
+++ b/keyboards/gmmk/gmmk2/p65/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* SPI Config for LED Driver */
#define SPI_DRIVER SPIDM2
#define SPI_SCK_PIN B13
@@ -33,58 +31,3 @@
#define AW20216S_CS_PIN_2 B9
#define AW20216S_EN_PIN_1 C13
#define AW20216S_EN_PIN_2 C13
-
-#define DRIVER_1_LED_TOTAL 54
-#define DRIVER_2_LED_TOTAL 34
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define RGB_MATRIX_KEYPRESSES
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/gmmk/gmmk2/p65/info.json b/keyboards/gmmk/gmmk2/p65/info.json
new file mode 100644
index 0000000000..9108057519
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/info.json
@@ -0,0 +1,51 @@
+{
+ "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": "aw20216s",
+ "sleep": true
+ }
+} \ No newline at end of file
diff --git a/keyboards/gmmk/gmmk2/p65/iso/info.json b/keyboards/gmmk/gmmk2/p65/iso/info.json
index c286cb7ba0..aa31b50f61 100644
--- a/keyboards/gmmk/gmmk2/p65/iso/info.json
+++ b/keyboards/gmmk/gmmk2/p65/iso/info.json
@@ -11,9 +11,6 @@
"qmk": {
"tap_keycode_delay": 10
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8"]
diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.c b/keyboards/gmmk/gmmk2/p65/iso/iso.c
index 80c0dc2e0d..9a591cd4ef 100644
--- a/keyboards/gmmk/gmmk2/p65/iso/iso.c
+++ b/keyboards/gmmk/gmmk2/p65/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to AW20216S manual for these locations
* driver
* | R location
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/ansi.c b/keyboards/gmmk/gmmk2/p96/ansi/ansi.c
index bc05ab6301..83dcad728a 100644
--- a/keyboards/gmmk/gmmk2/p96/ansi/ansi.c
+++ b/keyboards/gmmk/gmmk2/p96/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to AW20216S manual for these locations
* driver
* | R location
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/info.json b/keyboards/gmmk/gmmk2/p96/ansi/info.json
index e4eaddbfe8..d7e0e38ceb 100644
--- a/keyboards/gmmk/gmmk2/p96/ansi/info.json
+++ b/keyboards/gmmk/gmmk2/p96/ansi/info.json
@@ -11,9 +11,6 @@
"qmk": {
"tap_keycode_delay": 10
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13"]
diff --git a/keyboards/gmmk/gmmk2/p96/config.h b/keyboards/gmmk/gmmk2/p96/config.h
index fb21c571f5..5eb63c4dad 100644
--- a/keyboards/gmmk/gmmk2/p96/config.h
+++ b/keyboards/gmmk/gmmk2/p96/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
@@ -36,56 +34,3 @@
#define AW20216S_CS_PIN_2 B15
#define AW20216S_EN_PIN_1 C13
#define AW20216S_EN_PIN_2 C13
-
-#define DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 54
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/gmmk/gmmk2/p96/info.json b/keyboards/gmmk/gmmk2/p96/info.json
new file mode 100644
index 0000000000..9108057519
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/info.json
@@ -0,0 +1,51 @@
+{
+ "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": "aw20216s",
+ "sleep": true
+ }
+} \ No newline at end of file
diff --git a/keyboards/gmmk/gmmk2/p96/iso/info.json b/keyboards/gmmk/gmmk2/p96/iso/info.json
index d9f53b76f1..c5079a22dd 100644
--- a/keyboards/gmmk/gmmk2/p96/iso/info.json
+++ b/keyboards/gmmk/gmmk2/p96/iso/info.json
@@ -11,9 +11,6 @@
"qmk": {
"tap_keycode_delay": 10
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13"]
diff --git a/keyboards/gmmk/gmmk2/p96/iso/iso.c b/keyboards/gmmk/gmmk2/p96/iso/iso.c
index f6b3528cb4..d412215fc4 100644
--- a/keyboards/gmmk/gmmk2/p96/iso/iso.c
+++ b/keyboards/gmmk/gmmk2/p96/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to AW20216S manual for these locations
* driver
* | R location
diff --git a/keyboards/gmmk/numpad/config.h b/keyboards/gmmk/numpad/config.h
index 3627ab503c..602201f58a 100644
--- a/keyboards/gmmk/numpad/config.h
+++ b/keyboards/gmmk/numpad/config.h
@@ -32,50 +32,4 @@
#define AW20216S_EN_PIN_1 A15
#define AW20216S_PW_EN_PIN_1 B13
-#define RGB_MATRIX_LED_COUNT 31
-
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B6
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH \ No newline at end of file
diff --git a/keyboards/gmmk/numpad/info.json b/keyboards/gmmk/numpad/info.json
index 83f7d840dc..63ae544ad3 100644
--- a/keyboards/gmmk/numpad/info.json
+++ b/keyboards/gmmk/numpad/info.json
@@ -21,6 +21,51 @@
]
},
"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": "aw20216s"
},
"processor": "WB32F3G71",
diff --git a/keyboards/gmmk/numpad/numpad.c b/keyboards/gmmk/numpad/numpad.c
index 5cdb34c7bd..557137e8f1 100644
--- a/keyboards/gmmk/numpad/numpad.c
+++ b/keyboards/gmmk/numpad/numpad.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to AW20216S manual for these locations
* driver
* | R location
diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h
index 995dd95ec8..14076a2295 100644
--- a/keyboards/gmmk/pro/config.h
+++ b/keyboards/gmmk/pro/config.h
@@ -30,54 +30,3 @@
#define AW20216S_CS_PIN_2 B14
#define AW20216S_EN_PIN_1 C13
#define AW20216S_EN_PIN_2 C13
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/gmmk/pro/info.json b/keyboards/gmmk/pro/info.json
new file mode 100644
index 0000000000..9108057519
--- /dev/null
+++ b/keyboards/gmmk/pro/info.json
@@ -0,0 +1,51 @@
+{
+ "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": "aw20216s",
+ "sleep": true
+ }
+} \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/ansi/ansi.c b/keyboards/gmmk/pro/rev1/ansi/ansi.c
index a06594cb88..ff6382625a 100644
--- a/keyboards/gmmk/pro/rev1/ansi/ansi.c
+++ b/keyboards/gmmk/pro/rev1/ansi/ansi.c
@@ -136,7 +136,7 @@ led_config_t g_led_config = {{
4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
}};
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
diff --git a/keyboards/gmmk/pro/rev1/ansi/config.h b/keyboards/gmmk/pro/rev1/ansi/config.h
deleted file mode 100644
index 9f21a6bf71..0000000000
--- a/keyboards/gmmk/pro/rev1/ansi/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 Gigahawk
- *
- * 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 DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 32
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/gmmk/pro/rev1/ansi/info.json b/keyboards/gmmk/pro/rev1/ansi/info.json
index fc2197a0d7..533a379656 100644
--- a/keyboards/gmmk/pro/rev1/ansi/info.json
+++ b/keyboards/gmmk/pro/rev1/ansi/info.json
@@ -8,9 +8,6 @@
"pid": "0x5044",
"device_version": "0.0.1"
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"]
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/config.h
index 18271fb4d2..80b75eed52 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/config.h
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
#endif
// A debounce of 8 represents a minimum key press time of just under 1 refresh at 120Hz
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/config.h
index dc3dfefab0..af4e385727 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/config.h
@@ -18,7 +18,7 @@
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
#define RGBLIGHT_DEFAULT_SAT 0
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/config.h
index 845262b7e8..e5c100f82c 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/config.h
@@ -18,5 +18,5 @@
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms)
- #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_SLEEP
#endif
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/config.h
index 74c018f7f1..94248fdf38 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/config.h
@@ -16,4 +16,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED \ No newline at end of file
+#define RGB_MATRIX_SLEEP \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/config.h
index f37ff59c44..16918492fb 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/config.h
@@ -23,7 +23,7 @@
// #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state
- #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_SLEEP
// Effects
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/config.h
index ece08ecfee..e8f906c1c1 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/config.h
@@ -17,7 +17,7 @@
#define COMBO_TERM 100
#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_TIMEOUT 90000
#define MACRO_TIMER 5
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/config.h
index 8d8c35af49..0f4687fb71 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/config.h
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
#endif
#define FORCE_NKRO
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/config.h
index 91d731faca..585032c245 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/config.h
@@ -25,7 +25,7 @@
// #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state
- #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
#define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/trwnh/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/trwnh/config.h
index 1cc3cdf228..7a35f5e0c6 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/trwnh/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/trwnh/config.h
@@ -3,7 +3,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
- #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
#define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes
diff --git a/keyboards/gmmk/pro/rev1/iso/config.h b/keyboards/gmmk/pro/rev1/iso/config.h
deleted file mode 100644
index 8ed1802803..0000000000
--- a/keyboards/gmmk/pro/rev1/iso/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 Jasper Chan
- *
- * 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 DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 33
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/gmmk/pro/rev1/iso/info.json b/keyboards/gmmk/pro/rev1/iso/info.json
index 492a5cf486..90f66171aa 100644
--- a/keyboards/gmmk/pro/rev1/iso/info.json
+++ b/keyboards/gmmk/pro/rev1/iso/info.json
@@ -8,9 +8,6 @@
"pid": "0x5044",
"device_version": "0.0.1"
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"]
diff --git a/keyboards/gmmk/pro/rev1/iso/iso.c b/keyboards/gmmk/pro/rev1/iso/iso.c
index 9744447587..68165dd27f 100644
--- a/keyboards/gmmk/pro/rev1/iso/iso.c
+++ b/keyboards/gmmk/pro/rev1/iso/iso.c
@@ -137,7 +137,7 @@ led_config_t g_led_config = {{
2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
}};
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
diff --git a/keyboards/gmmk/pro/rev2/ansi/ansi.c b/keyboards/gmmk/pro/rev2/ansi/ansi.c
index 322e94c938..c592e3cdae 100644
--- a/keyboards/gmmk/pro/rev2/ansi/ansi.c
+++ b/keyboards/gmmk/pro/rev2/ansi/ansi.c
@@ -136,7 +136,7 @@ led_config_t g_led_config = {{
4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
}};
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
diff --git a/keyboards/gmmk/pro/rev2/ansi/config.h b/keyboards/gmmk/pro/rev2/ansi/config.h
deleted file mode 100644
index cc489b9c63..0000000000
--- a/keyboards/gmmk/pro/rev2/ansi/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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
-
-
-#define DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 32
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/gmmk/pro/rev2/ansi/info.json b/keyboards/gmmk/pro/rev2/ansi/info.json
index cd1fd31bf0..5615044316 100644
--- a/keyboards/gmmk/pro/rev2/ansi/info.json
+++ b/keyboards/gmmk/pro/rev2/ansi/info.json
@@ -8,9 +8,6 @@
"pid": "0x5044",
"device_version": "0.0.2"
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"]
diff --git a/keyboards/gmmk/pro/rev2/iso/config.h b/keyboards/gmmk/pro/rev2/iso/config.h
deleted file mode 100644
index 9a115d9194..0000000000
--- a/keyboards/gmmk/pro/rev2/iso/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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
-
-
-#define DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 33
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/gmmk/pro/rev2/iso/info.json b/keyboards/gmmk/pro/rev2/iso/info.json
index 6233356616..3b7c0ca544 100644
--- a/keyboards/gmmk/pro/rev2/iso/info.json
+++ b/keyboards/gmmk/pro/rev2/iso/info.json
@@ -8,9 +8,6 @@
"pid": "0x5044",
"device_version": "0.0.2"
},
- "rgb_matrix": {
- "driver": "aw20216s"
- },
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"]
diff --git a/keyboards/gmmk/pro/rev2/iso/iso.c b/keyboards/gmmk/pro/rev2/iso/iso.c
index 3a5b21c014..969ce8bf2e 100644
--- a/keyboards/gmmk/pro/rev2/iso/iso.c
+++ b/keyboards/gmmk/pro/rev2/iso/iso.c
@@ -137,7 +137,7 @@ led_config_t g_led_config = {{
2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
}};
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
diff --git a/keyboards/gopolar/gg86/config.h b/keyboards/gopolar/gg86/config.h
index 633ca727de..13791b5073 100644
--- a/keyboards/gopolar/gg86/config.h
+++ b/keyboards/gopolar/gg86/config.h
@@ -18,52 +18,3 @@
/* Use the custom font */
#define OLED_FONT_H "lib/glcdfont.c"
-
-#ifdef RGB_MATRIX_ENABLE
- /* RGB Matrix config */
- #define RGB_MATRIX_LED_COUNT 100
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
- #define RGB_MATRIX_KEYPRESSES
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/gopolar/gg86/info.json b/keyboards/gopolar/gg86/info.json
index 470709ca75..13669a8542 100644
--- a/keyboards/gopolar/gg86/info.json
+++ b/keyboards/gopolar/gg86/info.json
@@ -13,7 +13,49 @@
"pin": "E2"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "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",
+ "max_brightness": 150
},
"matrix_pins": {
"cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "C7", "E6", "D2", "D3"],
diff --git a/keyboards/hadron/ver3/config.h b/keyboards/hadron/ver3/config.h
index c9fc1028f8..4fc8d1feaf 100644
--- a/keyboards/hadron/ver3/config.h
+++ b/keyboards/hadron/ver3/config.h
@@ -107,8 +107,4 @@
#define DRV2605L_ZC_DET_TIME 0
#define DRV2605L_AUTO_CAL_TIME 3
-#define RGB_MATRIX_LED_COUNT 10
-
-// #define RGB_MATRIX_KEYPRESSES
-
#define SOLENOID_PIN A14
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/config.h b/keyboards/handwired/6macro/config.h
deleted file mode 100644
index 248e43f88e..0000000000
--- a/keyboards/handwired/6macro/config.h
+++ /dev/null
@@ -1,20 +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
-
-#define RGB_MATRIX_LED_COUNT 10
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/alcor_dactyl/config.h b/keyboards/handwired/alcor_dactyl/config.h
index cf2dd7aa8c..42c45acdbf 100644
--- a/keyboards/handwired/alcor_dactyl/config.h
+++ b/keyboards/handwired/alcor_dactyl/config.h
@@ -22,9 +22,9 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP10
#define SERIAL_USART_RX_PIN GP9
-#define RGB_MATRIX_LED_COUNT 2
-#define RGB_MATRIX_SPLIT { 1, 1 }
+
#define EE_HANDS
diff --git a/keyboards/handwired/alcor_dactyl/info.json b/keyboards/handwired/alcor_dactyl/info.json
index 405436b6f5..65f1f804aa 100644
--- a/keyboards/handwired/alcor_dactyl/info.json
+++ b/keyboards/handwired/alcor_dactyl/info.json
@@ -31,7 +31,8 @@
"layout": [
{"x": 0, "y": 0.375},
{"x": 16.5, "y": 0.38}
- ]
+ ],
+ "split_count": [1, 1]
},
"ws2812": {
"pin": "GP16",
diff --git a/keyboards/handwired/chiron/keymaps/default/config.h b/keyboards/handwired/chiron/keymaps/default/config.h
index c373743a39..5d8a8a083d 100644
--- a/keyboards/handwired/chiron/keymaps/default/config.h
+++ b/keyboards/handwired/chiron/keymaps/default/config.h
@@ -30,8 +30,8 @@
#define MOUSEKEY_WHEEL_MAX_SPEED 8
#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
-#undef RGBLED_NUM
-#define RGBLED_NUM 2
+#undef RGBLIGHT_LED_COUNT
+#define RGBLIGHT_LED_COUNT 2
#define RGBLED_SPLIT {1, 1}
// Don't turn off lights when the host goes to sleep.
diff --git a/keyboards/handwired/colorlice/config.h b/keyboards/handwired/colorlice/config.h
index 5c52df9ffa..a85f398cae 100644
--- a/keyboards/handwired/colorlice/config.h
+++ b/keyboards/handwired/colorlice/config.h
@@ -21,60 +21,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-/* RGB LEDs */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_MATRIX_LED_COUNT 70
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/handwired/colorlice/info.json b/keyboards/handwired/colorlice/info.json
index 0f8383a2aa..d81cd849ad 100644
--- a/keyboards/handwired/colorlice/info.json
+++ b/keyboards/handwired/colorlice/info.json
@@ -12,7 +12,55 @@
"pin": "B1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "B6", "B5", "B4", "D7", "D6", "D4", "E6", "B0", "B3"],
diff --git a/keyboards/handwired/d48/ds1307.c b/keyboards/handwired/d48/ds1307.c
index f6b57d50d2..5f4931bbf8 100644
--- a/keyboards/handwired/d48/ds1307.c
+++ b/keyboards/handwired/d48/ds1307.c
@@ -8,13 +8,12 @@ void ds1307_set_time(uint8_t h, uint8_t m, uint8_t s) {
((h % 10) | ((h / 10) << 4)) & 0x3F,
0, 0, 0, 0, 0
}; // 24-hour mode
- i2c_writeReg(DS1307_ADDR, 0, data, 8, 100);
+ i2c_write_register(DS1307_ADDR, 0, data, 8, 100);
}
void ds1307_get_time(uint8_t *h, uint8_t *m, uint8_t *s) {
uint8_t data[3];
- i2c_readReg(DS1307_ADDR, 0, data, 3, 100);
- i2c_stop();
+ i2c_read_register(DS1307_ADDR, 0, data, 3, 100);
*s = (data[0] & 0b1111) + ((data[0] & 0b1110000) >> 4) * 10;
*m = (data[1] & 0b1111) + ((data[1] & 0b1110000) >> 4) * 10;
*h = (data[2] & 0b1111) + ((data[2] & 0b0110000) >> 4) * 10;
diff --git a/keyboards/handwired/dactyl/matrix.c b/keyboards/handwired/dactyl/matrix.c
index d87fe4cbd1..140f4236c1 100644
--- a/keyboards/handwired/dactyl/matrix.c
+++ b/keyboards/handwired/dactyl/matrix.c
@@ -216,10 +216,10 @@ void init_expander(void) {
#endif
- expander_status = i2c_writeReg(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT);
+ expander_status = i2c_write_register(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT);
if (expander_status) return;
- expander_status = i2c_writeReg(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT);
+ expander_status = i2c_write_register(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT);
}
uint8_t matrix_scan(void)
@@ -333,7 +333,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
// Read columns from expander, unless it's in an error state
if (! expander_status) {
uint8_t state = 0;
- expander_status = i2c_readReg(I2C_ADDR, EXPANDER_COL_REGISTER, &state, 1, I2C_TIMEOUT);
+ expander_status = i2c_read_register(I2C_ADDR, EXPANDER_COL_REGISTER, &state, 1, I2C_TIMEOUT);
if (! expander_status) {
current_matrix[current_row] |= (~state) & expander_input_pin_mask;
}
@@ -359,7 +359,7 @@ static void select_row(uint8_t row) {
// set active row low : 0
// set other rows hi-Z : 1
uint8_t port = 0xFF & ~(1<<row);
- expander_status = i2c_writeReg(I2C_ADDR, EXPANDER_ROW_REGISTER, &port, 1, I2C_TIMEOUT);
+ expander_status = i2c_write_register(I2C_ADDR, EXPANDER_ROW_REGISTER, &port, 1, I2C_TIMEOUT);
}
// select on teensy
@@ -415,7 +415,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
return false;
}
- expander_status = i2c_readReg(I2C_ADDR, EXPANDER_ROW_REGISTER, &column_state, 1, I2C_TIMEOUT);
+ expander_status = i2c_read_register(I2C_ADDR, EXPANDER_ROW_REGISTER, &column_state, 1, I2C_TIMEOUT);
column_state = ~column_state;
} else {
@@ -460,7 +460,7 @@ static void select_col(uint8_t col)
// set active col low : 0
// set other cols hi-Z : 1
uint8_t port = 0xFF & ~(1<<col);
- expander_status = i2c_writeReg(I2C_ADDR, EXPANDER_COL_REGISTER, &port, 1, I2C_TIMEOUT);
+ expander_status = i2c_write_register(I2C_ADDR, EXPANDER_COL_REGISTER, &port, 1, I2C_TIMEOUT);
}
} else {
// select on teensy
diff --git a/keyboards/handwired/dactyl_minidox/config.h b/keyboards/handwired/dactyl_minidox/config.h
index d84e9b6440..21ef0b32c2 100644
--- a/keyboards/handwired/dactyl_minidox/config.h
+++ b/keyboards/handwired/dactyl_minidox/config.h
@@ -16,11 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-// WS2812 RGB LED strip input and number of LEDs
-#define RGB_MATRIX_LED_COUNT 36
-#define RGB_MATRIX_SPLIT { 18, 18 }
-#define RGB_MATRIX_CENTER { 133, 54 }
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#undef LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/handwired/dactyl_minidox/info.json b/keyboards/handwired/dactyl_minidox/info.json
index a94f517b52..36f71ea525 100644
--- a/keyboards/handwired/dactyl_minidox/info.json
+++ b/keyboards/handwired/dactyl_minidox/info.json
@@ -20,7 +20,9 @@
"pin": "D3"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "center_point": [133, 54],
+ "driver": "ws2812",
+ "split_count": [18, 18]
},
"matrix_pins": {
"cols": ["C6", "D7", "E6", "B4", "B5"],
diff --git a/keyboards/handwired/dactyl_minidox/keymaps/dlford/config.h b/keyboards/handwired/dactyl_minidox/keymaps/dlford/config.h
index 783a2c46b1..a37a54c8fc 100644
--- a/keyboards/handwired/dactyl_minidox/keymaps/dlford/config.h
+++ b/keyboards/handwired/dactyl_minidox/keymaps/dlford/config.h
@@ -43,7 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGB_MATRIX_ENABLE
// # define RGB_MATRIX_TIMEOUT 300000 // number of milliseconds to wait until disabling effects
-// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// # define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
diff --git a/keyboards/handwired/dygma/raise/config.h b/keyboards/handwired/dygma/raise/config.h
index f32a9ea4f0..af073f4988 100644
--- a/keyboards/handwired/dygma/raise/config.h
+++ b/keyboards/handwired/dygma/raise/config.h
@@ -20,35 +20,3 @@
// rows are doubled for split
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
-
-#define RGB_MATRIX_LED_COUNT 132
-
-#ifdef RGB_MATRIX_ENABLE
-// At the default flush limit of 16ms (~62.5 fps), the matrix scan rate is approximately
-// ~140 scans per second under full load (when changes are being made to the LED state).
-// Such a low scan rate will have impact the keyboard's accuracy for faster typists.
-//
-// With RGB completely disabled, the matrix scan rate is ~660 scans per second, and typing
-// accuracy feels on par with the Dygma Raise Neuron.
-//
-// At 100ms (10 fps), the matrix scan rate is ~355 scans per second under full load, and typing
-// accuracy is reasonably good.
-#define RGB_MATRIX_LED_FLUSH_LIMIT 100
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#endif
diff --git a/keyboards/handwired/dygma/raise/info.json b/keyboards/handwired/dygma/raise/info.json
index 5c287bcc7e..b9bcd2e639 100644
--- a/keyboards/handwired/dygma/raise/info.json
+++ b/keyboards/handwired/dygma/raise/info.json
@@ -9,7 +9,20 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "custom"
+ "animations": {
+ "typing_heatmap": 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
+ },
+ "driver": "custom",
+ "led_flush_limit": 100,
+ "sleep": true
},
"processor": "STM32F411",
"bootloader": "stm32-dfu",
diff --git a/keyboards/handwired/frenchdev/frenchdev.c b/keyboards/handwired/frenchdev/frenchdev.c
index 6eed4de5ff..65f1ccce4b 100644
--- a/keyboards/handwired/frenchdev/frenchdev.c
+++ b/keyboards/handwired/frenchdev/frenchdev.c
@@ -83,23 +83,16 @@ uint8_t init_mcp23018(void) {
// - unused : input : 1
// - input : input : 1
// - driving : output : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
- i2c_stop();
-
- // set pull-up
- // - unused : on : 1
- // - input : on : 1
- // - driving : off : 0
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00000000, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(0b00111111, I2C_TIMEOUT); if (mcp23018_status) goto out;
-
-out:
- i2c_stop();
+ uint8_t data[] = {0b00000000, 0b00111111};
+ mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), I2C_TIMEOUT);
+
+ if (!mcp23018_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), I2C_TIMEOUT);
+ }
// SREG=sreg_prev;
diff --git a/keyboards/handwired/frenchdev/frenchdev.h b/keyboards/handwired/frenchdev/frenchdev.h
index 6bea49d87b..0f1ac7dcaa 100644
--- a/keyboards/handwired/frenchdev/frenchdev.h
+++ b/keyboards/handwired/frenchdev/frenchdev.h
@@ -7,9 +7,7 @@
#include <util/delay.h>
// I2C aliases and register addresses (see "mcp23018.md" on tmk repository)
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0b0100000<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/handwired/frenchdev/matrix.c b/keyboards/handwired/frenchdev/matrix.c
index 3e859d47ef..af7c8b5444 100644
--- a/keyboards/handwired/frenchdev/matrix.c
+++ b/keyboards/handwired/frenchdev/matrix.c
@@ -151,7 +151,7 @@ uint8_t matrix_scan(void)
if (matrix_debouncing[i] != cols) {
matrix_debouncing[i] = cols;
if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
+ dprintf("bounce!: %02X\n", debouncing);
}
debouncing = DEBOUNCE;
}
@@ -224,15 +224,9 @@ static matrix_row_t read_cols(uint8_t row)
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOB, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (mcp23018_status) goto out;
- data = i2c_read_nack(I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
- data = ~((uint8_t)mcp23018_status);
- mcp23018_status = I2C_STATUS_SUCCESS;
- out:
- i2c_stop();
- return data;
+ mcp23018_status = i2c_readReg(I2C_ADDR, GPIOB, &data, 1, I2C_TIMEOUT);
+
+ return ~data;
}
} else {
// read from teensy
@@ -263,11 +257,10 @@ static void unselect_rows(void)
// do nothing
} else {
// set all rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write( 0xFF & ~(0<<8), I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data;
+ data = 0xFF & ~(0<<8);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT);
+
}
// unselect on teensy
@@ -289,11 +282,8 @@ static void select_row(uint8_t row)
} else {
// set active row low : 0
// set other rows hi-Z : 1
- mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); if (mcp23018_status) goto out;
- mcp23018_status = i2c_write( 0xFF & ~(1<<row) & ~(0<<8), I2C_TIMEOUT); if (mcp23018_status) goto out;
- out:
- i2c_stop();
+ uint8_t data = 0xFF & ~(1<<row) & ~(0<<8);
+ mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT);
}
} else {
// select on teensy
diff --git a/keyboards/handwired/freoduo/keymaps/default/keymap.c b/keyboards/handwired/freoduo/keymaps/default/keymap.c
index bd01de7585..791e6af318 100644
--- a/keyboards/handwired/freoduo/keymaps/default/keymap.c
+++ b/keyboards/handwired/freoduo/keymaps/default/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 7, 0},
{7, 24, HSV_RED},
- {24, RGBLED_NUM, 0}
+ {24, RGBLIGHT_LED_COUNT, 0}
);
// Light all LEDs in green when keyboard layer 1 is active
const rgblight_segment_t PROGMEM layer_lower[] = RGBLIGHT_LAYER_SEGMENTS(
diff --git a/keyboards/handwired/hnah108/config.h b/keyboards/handwired/hnah108/config.h
index bfa158713d..9f9d81bea9 100644
--- a/keyboards/handwired/hnah108/config.h
+++ b/keyboards/handwired/hnah108/config.h
@@ -17,56 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define RGB_MATRIX_LED_COUNT 30
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/handwired/hnah108/info.json b/keyboards/handwired/hnah108/info.json
index a399ffedf5..63017532e3 100644
--- a/keyboards/handwired/hnah108/info.json
+++ b/keyboards/handwired/hnah108/info.json
@@ -9,6 +9,51 @@
"device_version": "0.0.2"
},
"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"
},
"matrix_pins": {
diff --git a/keyboards/handwired/hnah40rgb/config.h b/keyboards/handwired/hnah40rgb/config.h
deleted file mode 100644
index 7b61de013b..0000000000
--- a/keyboards/handwired/hnah40rgb/config.h
+++ /dev/null
@@ -1,77 +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
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 50
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/handwired/hnah40rgb/info.json b/keyboards/handwired/hnah40rgb/info.json
index fce74cefef..51a934564c 100644
--- a/keyboards/handwired/hnah40rgb/info.json
+++ b/keyboards/handwired/hnah40rgb/info.json
@@ -12,7 +12,58 @@
"pin": "E2"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "ws2812",
+ "led_flush_limit": 16,
+ "max_brightness": 200,
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["D5", "D6", "D3", "D2", "B6", "C6", "C7", "F7", "F6", "F5", "F4"],
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/macro3/info.json b/keyboards/handwired/macro3/info.json
index fa6cd1c471..fa6cd1c471 100644
--- a/keyboards/macro3/info.json
+++ b/keyboards/handwired/macro3/info.json
diff --git a/keyboards/macro3/keymaps/default/keymap.c b/keyboards/handwired/macro3/keymaps/default/keymap.c
index a7b5cf9db4..a7b5cf9db4 100644
--- a/keyboards/macro3/keymaps/default/keymap.c
+++ b/keyboards/handwired/macro3/keymaps/default/keymap.c
diff --git a/keyboards/macro3/keymaps/default/rules.mk b/keyboards/handwired/macro3/keymaps/default/rules.mk
index ee32568148..ee32568148 100644
--- a/keyboards/macro3/keymaps/default/rules.mk
+++ b/keyboards/handwired/macro3/keymaps/default/rules.mk
diff --git a/keyboards/macro3/macro3.c b/keyboards/handwired/macro3/macro3.c
index 54fce243ab..54fce243ab 100644
--- a/keyboards/macro3/macro3.c
+++ b/keyboards/handwired/macro3/macro3.c
diff --git a/keyboards/handwired/macro3/readme.md b/keyboards/handwired/macro3/readme.md
new file mode 100644
index 0000000000..185496ac8b
--- /dev/null
+++ b/keyboards/handwired/macro3/readme.md
@@ -0,0 +1,26 @@
+# Macro3
+
+![Macro3](https://github.com/filterpaper/filterpaper.github.io/raw/main/images/macro3.png)
+
+Macro3 is a low-profile macro pad with dual encoder support designed by [@davidphilipbarr](https://github.com/davidphilipbarr).
+
+## Keyboard Info
+
+* Keyboard Maintainer: [filterpaper](https://github.com/filterpaper)
+* Hardware Supported: Macro3
+* Hardware Availability: [Open-source](https://github.com/davidphilipbarr/Macropads/tree/main/macro3)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/macro3: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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top right key and plug in the controller.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
+* **Physical reset pins**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material.
+
diff --git a/keyboards/handwired/macro3/rules.mk b/keyboards/handwired/macro3/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/handwired/macro3/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
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/onekey/keymaps/apa102/config.h b/keyboards/handwired/onekey/keymaps/apa102/config.h
index 756ebb3593..bb618d77fb 100644
--- a/keyboards/handwired/onekey/keymaps/apa102/config.h
+++ b/keyboards/handwired/onekey/keymaps/apa102/config.h
@@ -1,6 +1,6 @@
#pragma once
-#define RGBLED_NUM 40
+#define RGBLIGHT_LED_COUNT 40
#define APA102_DEFAULT_BRIGHTNESS 5
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/handwired/onekey/keymaps/dip_switch_map/config.h b/keyboards/handwired/onekey/keymaps/dip_switch_map/config.h
new file mode 100644
index 0000000000..7e5b6c0b91
--- /dev/null
+++ b/keyboards/handwired/onekey/keymaps/dip_switch_map/config.h
@@ -0,0 +1,6 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+// TODO: Remove reuse of pin
+#define DIP_SWITCH_PINS { WS2812_DI_PIN }
diff --git a/keyboards/handwired/onekey/keymaps/dip_switch_map/keymap.c b/keyboards/handwired/onekey/keymaps/dip_switch_map/keymap.c
new file mode 100644
index 0000000000..35bb16d458
--- /dev/null
+++ b/keyboards/handwired/onekey/keymaps/dip_switch_map/keymap.c
@@ -0,0 +1,14 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_1x1(KC_A),
+ [1] = LAYOUT_ortho_1x1(KC_B),
+};
+
+#if defined(DIP_SWITCH_MAP_ENABLE)
+const uint16_t PROGMEM dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES] = {
+ DIP_SWITCH_OFF_ON(DF(0), DF(1))
+};
+#endif
diff --git a/keyboards/handwired/onekey/keymaps/dip_switch_map/rules.mk b/keyboards/handwired/onekey/keymaps/dip_switch_map/rules.mk
new file mode 100644
index 0000000000..b2429854f1
--- /dev/null
+++ b/keyboards/handwired/onekey/keymaps/dip_switch_map/rules.mk
@@ -0,0 +1,2 @@
+DIP_SWITCH_ENABLE = yes
+DIP_SWITCH_MAP_ENABLE = yes
diff --git a/keyboards/handwired/onekey/keymaps/i2c_scanner/keymap.c b/keyboards/handwired/onekey/keymaps/i2c_scanner/keymap.c
index ea8443709d..1d1a7c2b00 100644
--- a/keyboards/handwired/onekey/keymaps/i2c_scanner/keymap.c
+++ b/keyboards/handwired/onekey/keymaps/i2c_scanner/keymap.c
@@ -8,16 +8,6 @@
// TODO: remove patch
#ifdef PROTOCOL_CHIBIOS
# pragma message("ChibiOS is currently 'best effort' and might not report accurate results")
-
-i2c_status_t i2c_start_bodge(uint8_t address, uint16_t timeout) {
- i2c_start(address);
-
- // except on ChibiOS where the only way is do do "something"
- uint8_t data = 0;
- return i2c_readReg(address, 0, &data, sizeof(data), TIMEOUT);
-}
-
-# define i2c_start i2c_start_bodge
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -31,10 +21,9 @@ void do_scan(void) {
for (uint8_t address = 1; address < 127; address++) {
// The i2c_scanner uses the return value of
- // i2c_start to see if a device did acknowledge to the address.
- i2c_status_t error = i2c_start(address << 1, TIMEOUT);
+ // i2c_ping_address to see if a device did acknowledge to the address.
+ i2c_status_t error = i2c_ping_address(address << 1, TIMEOUT);
if (error == I2C_STATUS_SUCCESS) {
- i2c_stop();
dprintf(" I2C device found at address 0x%02X\n", address);
nDevices++;
} else {
diff --git a/keyboards/handwired/orbweaver/config.h b/keyboards/handwired/orbweaver/config.h
index 6a6670a6f6..95a46677c9 100644
--- a/keyboards/handwired/orbweaver/config.h
+++ b/keyboards/handwired/orbweaver/config.h
@@ -18,6 +18,4 @@
#pragma once
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define RGB_MATRIX_LED_COUNT 20
#define I2C1_CLOCK_SPEED 100000
-#define RGB_MATRIX_CENTER { 40, 30 }
diff --git a/keyboards/handwired/orbweaver/info.json b/keyboards/handwired/orbweaver/info.json
index 489a7e2888..14c8718256 100644
--- a/keyboards/handwired/orbweaver/info.json
+++ b/keyboards/handwired/orbweaver/info.json
@@ -13,6 +13,7 @@
"nkro": true
},
"rgb_matrix": {
+ "center_point": [40, 30],
"driver": "is31fl3731"
},
"matrix_pins": {
diff --git a/keyboards/handwired/orbweaver/orbweaver.c b/keyboards/handwired/orbweaver/orbweaver.c
index 63778ea52b..f89d1ca363 100644
--- a/keyboards/handwired/orbweaver/orbweaver.c
+++ b/keyboards/handwired/orbweaver/orbweaver.c
@@ -22,7 +22,7 @@
#include "rgb_matrix.h"
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -60,7 +60,7 @@ led_config_t g_led_config = {
{ 11, 12, 13, 14, 15 },
{ 16, 17, 18, 19, 19 },
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
- { NO_LED, NO_LED }
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
},
// LED index to physical location
diff --git a/keyboards/handwired/p65rgb/config.h b/keyboards/handwired/p65rgb/config.h
index 326789b998..9a446a904b 100644
--- a/keyboards/handwired/p65rgb/config.h
+++ b/keyboards/handwired/p65rgb/config.h
@@ -17,60 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
#define RGB_MATRIX_LED_COUNT 83
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/handwired/p65rgb/info.json b/keyboards/handwired/p65rgb/info.json
index 2fa35c2cbf..3d8e02cf40 100644
--- a/keyboards/handwired/p65rgb/info.json
+++ b/keyboards/handwired/p65rgb/info.json
@@ -12,7 +12,55 @@
"pin": "B4"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"rgblight": {
"max_brightness": 180
diff --git a/keyboards/handwired/pterodactyl/matrix.c b/keyboards/handwired/pterodactyl/matrix.c
index bc98bdd634..0dff65eda6 100644
--- a/keyboards/handwired/pterodactyl/matrix.c
+++ b/keyboards/handwired/pterodactyl/matrix.c
@@ -29,9 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define I2C_TIMEOUT 100
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0b0100000<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
@@ -159,9 +157,6 @@ void init_expander(void) {
#endif
}
- expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(IODIRA, I2C_TIMEOUT); if (expander_status) goto out;
-
/*
Pin direction and pull-up depends on both the diode direction
and on whether the column register is GPIOA or GPIOB
@@ -176,50 +171,27 @@ void init_expander(void) {
#if (EXPANDER_COL_REGISTER == GPIOA)
# if (DIODE_DIRECTION == COL2ROW)
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
+ uint8_t data[] = { expander_input_pin_mask, 0};
# elif (DIODE_DIRECTION == ROW2COL)
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
+ uint8_t data[] = { 0, expander_input_pin_mask};
# endif
#elif (EXPANDER_COL_REGISTER == GPIOB)
# if (DIODE_DIRECTION == COL2ROW)
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
+ uint8_t data[] = { 0, expander_input_pin_mask};
# elif (DIODE_DIRECTION == ROW2COL)
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
-# endif
-#endif
-
- i2c_stop();
-
- // set pull-up
- // - unused : off : 0
- // - input : on : 1
- // - driving : off : 0
- expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(GPPUA, I2C_TIMEOUT); if (expander_status) goto out;
-#if (EXPANDER_COL_REGISTER == GPIOA)
-# if (DIODE_DIRECTION == COL2ROW)
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
-# elif (DIODE_DIRECTION == ROW2COL)
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
-# endif
-#elif (EXPANDER_COL_REGISTER == GPIOB)
-# if (DIODE_DIRECTION == COL2ROW)
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
-# elif (DIODE_DIRECTION == ROW2COL)
- expander_status = i2c_write(expander_input_pin_mask, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(0, I2C_TIMEOUT); if (expander_status) goto out;
+ uint8_t data[] = { expander_input_pin_mask, 0};
# endif
#endif
+ expander_status = i2c_writeReg(I2C_ADDR, IODIRA, data, sizeof(data), I2C_TIMEOUT);
+
+ if (!expander_status) {
+ // set pull-up
+ // - unused : off : 0
+ // - input : on : 1
+ // - driving : off : 0
+ expander_status = i2c_writeReg(I2C_ADDR, GPPUA, data, sizeof(data), I2C_TIMEOUT);
+ }
-out:
- i2c_stop();
}
uint8_t matrix_scan(void)
@@ -332,14 +304,9 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
// Read columns from expander, unless it's in an error state
if (! expander_status) {
- expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(EXPANDER_COL_REGISTER, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (expander_status) goto out;
-
- current_matrix[current_row] |= (~i2c_read_nack(I2C_TIMEOUT)) & expander_input_pin_mask;
-
- out:
- i2c_stop();
+ uint8_t data;
+ i2c_readReg(I2C_ADDR, EXPANDER_COL_REGISTER, &data, 1, I2C_TIMEOUT);
+ current_matrix[current_row] |= (~data) & expander_input_pin_mask;
}
// Read columns from onboard pins
@@ -361,11 +328,8 @@ static void select_row(uint8_t row) {
if (! expander_status) {
// set active row low : 0
// set other rows hi-Z : 1
- expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(EXPANDER_ROW_REGISTER, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(0xFF & ~(1<<row), I2C_TIMEOUT); if (expander_status) goto out;
- out:
- i2c_stop();
+ uint8_t data = 0xFF & ~(1<<row);
+ i2c_writeReg(I2C_ADDR, EXPANDER_ROW_REGISTER, &data, 1, I2C_TIMEOUT);
}
// select on teensy
@@ -421,14 +385,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
return false;
}
- expander_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_write(EXPANDER_ROW_REGISTER, I2C_TIMEOUT); if (expander_status) goto out;
- expander_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); if (expander_status) goto out;
- column_state = i2c_read_nack(I2C_TIMEOUT);
-
- out:
- i2c_stop();
-
+ i2c_writeReg(I2C_ADDR, EXPANDER_ROW_REGISTER, &column_state, 1, I2C_TIMEOUT);
column_state = ~column_state;
} else {
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
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/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h
index a779dcccab..b1137a0122 100644
--- a/keyboards/handwired/steamvan/rev1/config.h
+++ b/keyboards/handwired/steamvan/rev1/config.h
@@ -24,5 +24,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define WS2812_SPI_DRIVER SPID1
#define WS2812_SPI_MOSI_PAL_MODE 5
-
-#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/config.h
index a1cbfedc0c..9d283866b4 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/config.h
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/config.h
@@ -18,15 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-// WS2812 RGB LED strip input and number of LEDs
-#define RGB_MATRIX_LED_COUNT 62
-#define RGB_MATRIX_SPLIT { 32, 30 }
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-// #define RGB_MATRIX_KEYRELEASES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 80
-
#define SPLIT_TRANSPORT_MIRROR
#define SPLIT_HAND_PIN A6
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/info.json b/keyboards/handwired/tractyl_manuform/4x6_right/info.json
index 9e172c8089..321202383f 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/info.json
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/info.json
@@ -7,7 +7,10 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 80,
+ "sleep": true,
+ "split_count": [32, 30]
},
"matrix_pins": {
"cols": ["C0", "C1", "C2", "C3", "C4", "C5"],
diff --git a/keyboards/handwired/ziyoulang_k3_mod/config.h b/keyboards/handwired/ziyoulang_k3_mod/config.h
new file mode 100644
index 0000000000..304ca5eb28
--- /dev/null
+++ b/keyboards/handwired/ziyoulang_k3_mod/config.h
@@ -0,0 +1,8 @@
+// Copyright 2023 Coom (@coomstoolbox)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define I2C1_SCL_PIN B10
+#define I2C1_SDA_PIN B11
+#define I2C_DRIVER I2CD2
diff --git a/keyboards/handwired/ziyoulang_k3_mod/halconf.h b/keyboards/handwired/ziyoulang_k3_mod/halconf.h
new file mode 100644
index 0000000000..44602147bb
--- /dev/null
+++ b/keyboards/handwired/ziyoulang_k3_mod/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2021 QMK
+ *
+ * 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_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/ziyoulang_k3_mod/info.json b/keyboards/handwired/ziyoulang_k3_mod/info.json
index 127cc51299..5d4ca7a254 100644
--- a/keyboards/handwired/ziyoulang_k3_mod/info.json
+++ b/keyboards/handwired/ziyoulang_k3_mod/info.json
@@ -2,7 +2,7 @@
"keyboard_name": "ziyoulang k3 mod",
"development_board": "bluepill",
"usb": {
- "device_version": "1.0.0",
+ "device_version": "1.2.0",
"pid": "0xE002",
"vid": "0x5006"
},
@@ -11,10 +11,14 @@
"command": false,
"console": false,
"extrakey": true,
- "mousekey": true,
- "nkro": false
+ "mousekey": false,
+ "nkro": false,
+ "oled": true
},
- "diode_direction": "COL2ROW",
+ "build": {
+ "lto": true
+ },
+ "diode_direction": "ROW2COL",
"dynamic_keymap": {
"layer_count": 3
},
@@ -78,7 +82,7 @@
{"label":"P", "x":10.5, "y":2.25, "matrix": [2, 10]},
{"label":"{", "x":11.5, "y":2.25, "matrix": [2, 11]},
{"label":"}", "x":12.5, "y":2.25, "matrix": [2, 12]},
- {"label":"|", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]},
+ {"label":"|", "x":13.5, "y":2.25, "w":1.5, "matrix": [3, 13]},
{"label":"7", "x":15.5, "y":2.25, "matrix": [2, 17]},
{"label":"8", "x":16.5, "y":2.25, "matrix": [2, 18]},
{"label":"9", "x":17.5, "y":2.25, "matrix": [2, 19]},
@@ -96,7 +100,7 @@
{"label":"L", "x":9.75, "y":3.25, "matrix": [3, 10]},
{"label":":", "x":10.75, "y":3.25, "matrix": [3, 11]},
{"label":"\"", "x":11.75, "y":3.25, "matrix": [3, 12]},
- {"label":"Enter", "x":12.75, "y":3.25, "w":2.25, "matrix": [3, 13]},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25, "matrix": [2, 13]},
{"label":"4", "x":15.5, "y":3.25, "matrix": [3, 17]},
{"label":"5", "x":16.5, "y":3.25, "matrix": [3, 18]},
{"label":"6", "x":17.5, "y":3.25, "matrix": [3, 19]},
@@ -139,4 +143,4 @@
"manufacturer": "Coom",
"maintainer": "coomstoolbox",
"url": ""
-} \ No newline at end of file
+}
diff --git a/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk b/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk
index ea877d6786..1e5b99807c 100644
--- a/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk
+++ b/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk
@@ -1,3 +1 @@
VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
-LTO_ENABLE = yes
diff --git a/keyboards/handwired/ziyoulang_k3_mod/mcuconf.h b/keyboards/handwired/ziyoulang_k3_mod/mcuconf.h
new file mode 100644
index 0000000000..8f1da10fe2
--- /dev/null
+++ b/keyboards/handwired/ziyoulang_k3_mod/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 QMK
+ *
+ * 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 3 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 <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C2
+#define STM32_I2C_USE_I2C2 TRUE
diff --git a/keyboards/handwired/ziyoulang_k3_mod/readme.md b/keyboards/handwired/ziyoulang_k3_mod/readme.md
index 7e247fde19..553f735d4c 100644
--- a/keyboards/handwired/ziyoulang_k3_mod/readme.md
+++ b/keyboards/handwired/ziyoulang_k3_mod/readme.md
@@ -23,7 +23,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
[KiCAD wiring diagram](https://github.com/coomstoolbox/ZK3-BP-MOD-wiring-diagram)
-![explanation](https://i.imgur.com/yvhvhoBh.png)
+![explanation](https://i.imgur.com/thGIdOth.png)
## Bootloader
diff --git a/keyboards/handwired/ziyoulang_k3_mod/ziyoulang_k3_mod.c b/keyboards/handwired/ziyoulang_k3_mod/ziyoulang_k3_mod.c
new file mode 100644
index 0000000000..cadae4aa28
--- /dev/null
+++ b/keyboards/handwired/ziyoulang_k3_mod/ziyoulang_k3_mod.c
@@ -0,0 +1,117 @@
+// Copyright 2023 Coom (@coomstoolbox)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include <stdio.h>
+
+void keyboard_post_init_kb(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+#endif
+ keyboard_post_init_user();
+}
+
+static uint16_t last_keycode = KC_NO;
+static keypos_t last_key = {0, 0};
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ // コンソールãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¦ã„ã‚‹å ´åˆã€ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ä¸Šã®ä½ç½®ã¨ã‚­ãƒ¼æŠ¼ä¸‹çŠ¶æ…‹ã‚’出力ã—ã¾ã™
+#ifdef CONSOLE_ENABLE
+ uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+#endif
+ if (record->event.pressed) {
+ if (last_keycode != keycode) {
+ last_keycode = keycode;
+ last_key = record->event.key;
+ }
+ }
+ return true;
+}
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
+ };
+ oled_write_P(qmk_logo, false);
+#ifdef CONSOLE_ENABLE
+ uprintf("Ziyoulang K3 Mod\n");
+ oled_set_cursor(3, 0);
+ oled_write_P(PSTR("Ziyoulang K3 Mod"), false);
+#endif
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ int uptime_seconds = (int)(timer_read32() / 1000);
+ if (uptime_seconds < 5) {
+ render_logo();
+ return false;
+ }
+
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state | default_layer_state)) {
+ case 0:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("2\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("3\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ if (led_state.num_lock) {
+ oled_write_P(PSTR("NUM"), true);
+ oled_write_P(PSTR(" "), false);
+ } else {
+ oled_write_P(PSTR(" "), false);
+ }
+ if (led_state.caps_lock) {
+ oled_write_P(PSTR("CAP"), true);
+ oled_write_P(PSTR(" "), false);
+ } else {
+ oled_write_P(PSTR(" "), false);
+ }
+ if (led_state.scroll_lock) {
+ oled_write_P(PSTR("SCR"), true);
+ oled_write_ln_P(PSTR(" "), false);
+ } else {
+ oled_write_ln_P(PSTR(" "), false);
+ }
+
+ // Last Key pressed info
+ oled_write_P(PSTR("kc : "), false);
+ if (last_keycode > 21000) {
+ oled_write_ln_P(PSTR(" Fn"), false);
+ } else {
+ oled_write_ln_P(get_u16_str(last_keycode, ' '), false);
+ }
+ oled_write_P(PSTR("col: "), false);
+ oled_write_P(get_u8_str(last_key.col, ' '), false);
+ oled_write_P(PSTR(",row: "), false);
+ oled_write_P(get_u8_str(last_key.row, ' '), false);
+
+ return false;
+}
+#endif
diff --git a/keyboards/heliotrope/config.h b/keyboards/heliotrope/config.h
deleted file mode 100644
index 15d1d77276..0000000000
--- a/keyboards/heliotrope/config.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright 2022 MATTMCCA (@MATTMCCA)
- *
- * 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
-
-
-#ifdef RGB_MATRIX_ENABLE
-
- #define RGB_MATRIX_LED_COUNT 61 // The number of LEDs connected
-
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
- #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* RGB_MATRIX_FRAMEBUFFER_EFFECTS) */
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- /* RGB_MATRIX_KEYPRESSES) | defined(RGB_MATRIX_KEYRELEASES) */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
-
diff --git a/keyboards/heliotrope/info.json b/keyboards/heliotrope/info.json
index 3b382c7bc9..e173c785e0 100644
--- a/keyboards/heliotrope/info.json
+++ b/keyboards/heliotrope/info.json
@@ -28,6 +28,48 @@
"pin": "A4"
},
"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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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": [
{"flags": 4, "matrix": [0, 0], "x": 7, "y": 5},
@@ -91,7 +133,8 @@
{"flags": 4, "matrix": [4, 10], "x": 177, "y": 54},
{"flags": 4, "matrix": [4, 11], "x": 196, "y": 54},
{"flags": 4, "matrix": [4, 13], "x": 215, "y": 54}
- ]
+ ],
+ "react_on_keyup": true
},
"layouts": {
"LAYOUT_60_ansi": {
diff --git a/keyboards/helix/pico/config.h b/keyboards/helix/pico/config.h
index f5eb4c13e1..e1cd9c2e90 100644
--- a/keyboards/helix/pico/config.h
+++ b/keyboards/helix/pico/config.h
@@ -50,20 +50,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Helix keyboard RGB LED support
// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
#ifdef RGBLED_BACK
- #define RGBLED_NUM 25
+ #define RGBLIGHT_LED_COUNT 25
#else
- #define RGBLED_NUM 6
+ #define RGBLIGHT_LED_COUNT 6
#endif
#ifndef IOS_DEVICE_ENABLE
- #if RGBLED_NUM <= 6
+ #if RGBLIGHT_LED_COUNT <= 6
#define RGBLIGHT_LIMIT_VAL 255
#else
#define RGBLIGHT_LIMIT_VAL 130
#endif
#define RGBLIGHT_VAL_STEP 17
#else
- #if RGBLED_NUM <= 6
+ #if RGBLIGHT_LED_COUNT <= 6
#define RGBLIGHT_LIMIT_VAL 90
#else
#define RGBLIGHT_LIMIT_VAL 45
diff --git a/keyboards/helix/rev2/config.h b/keyboards/helix/rev2/config.h
index 7ab494522a..8af2a44ecc 100644
--- a/keyboards/helix/rev2/config.h
+++ b/keyboards/helix/rev2/config.h
@@ -31,20 +31,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Helix keyboard RGB LED support
// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
#ifdef RGBLED_BACK
- #define RGBLED_NUM 32
+ #define RGBLIGHT_LED_COUNT 32
#else
- #define RGBLED_NUM 6
+ #define RGBLIGHT_LED_COUNT 6
#endif
#ifndef IOS_DEVICE_ENABLE
- #if RGBLED_NUM <= 6
+ #if RGBLIGHT_LED_COUNT <= 6
#define RGBLIGHT_LIMIT_VAL 255
#else
#define RGBLIGHT_LIMIT_VAL 120
#endif
#define RGBLIGHT_VAL_STEP 17
#else
- #if RGBLED_NUM <= 6
+ #if RGBLIGHT_LED_COUNT <= 6
#define RGBLIGHT_LIMIT_VAL 90
#else
#define RGBLIGHT_LIMIT_VAL 35
diff --git a/keyboards/helix/rev3_4rows/config.h b/keyboards/helix/rev3_4rows/config.h
index 000f99834a..cc1a925295 100644
--- a/keyboards/helix/rev3_4rows/config.h
+++ b/keyboards/helix/rev3_4rows/config.h
@@ -39,18 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Split hand configration */
#define SPLIT_HAND_MATRIX_GRID D7,B2
-#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 50
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-#endif
/* Custom font */
#define OLED_FONT_H "keyboards/helix/common/glcdfont.c"
diff --git a/keyboards/helix/rev3_4rows/info.json b/keyboards/helix/rev3_4rows/info.json
index 79d4847c7b..a1752d0123 100644
--- a/keyboards/helix/rev3_4rows/info.json
+++ b/keyboards/helix/rev3_4rows/info.json
@@ -12,7 +12,10 @@
"driver": "ws2812",
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "max_brightness": 150,
+ "split_count": [25, 25],
+ "sleep": true
},
"dip_switch": {
"matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ]
diff --git a/keyboards/helix/rev3_5rows/config.h b/keyboards/helix/rev3_5rows/config.h
index 44bbc5f194..733f8b5a55 100644
--- a/keyboards/helix/rev3_5rows/config.h
+++ b/keyboards/helix/rev3_5rows/config.h
@@ -39,18 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Split hand configration */
#define SPLIT_HAND_MATRIX_GRID D7,B2
-#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 64
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-#endif
/* Custom font */
#define OLED_FONT_H "keyboards/helix/common/glcdfont.c"
diff --git a/keyboards/helix/rev3_5rows/info.json b/keyboards/helix/rev3_5rows/info.json
index 5eb5aee93f..ce1a8364f3 100644
--- a/keyboards/helix/rev3_5rows/info.json
+++ b/keyboards/helix/rev3_5rows/info.json
@@ -12,7 +12,7 @@
"driver": "ws2812",
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
"layout": [
{"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
@@ -80,7 +80,8 @@
{"matrix": [9, 0], "x": 224, "y": 64, "flags": 4}
],
"max_brightness": 128,
- "split_count": [32, 32]
+ "split_count": [32, 32],
+ "sleep": true
},
"dip_switch": {
"matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ]
diff --git a/keyboards/hfdkb/ac001/config.h b/keyboards/hfdkb/ac001/config.h
index 7d38c7392c..e069609fad 100644
--- a/keyboards/hfdkb/ac001/config.h
+++ b/keyboards/hfdkb/ac001/config.h
@@ -16,9 +16,6 @@
#pragma once
-/* ws2812 RGB LED */
-#define RGB_MATRIX_LED_COUNT 5
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
@@ -33,60 +30,4 @@
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-//#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-//#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-//#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-//#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-//#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-//#define ENABLE_RGB_MATRIX_DUAL_BEACON
-//#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-//#define ENABLE_RGB_MATRIX_RAINDROPS
-// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-//#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-//#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-//#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-//#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-//#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-//#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define USB_SUSPEND_WAKEUP_DELAY 1500 //Wakeup host USB
-
diff --git a/keyboards/hfdkb/ac001/info.json b/keyboards/hfdkb/ac001/info.json
index 3f896d5988..4c45251504 100644
--- a/keyboards/hfdkb/ac001/info.json
+++ b/keyboards/hfdkb/ac001/info.json
@@ -10,7 +10,16 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "rainbow_moving_chevron": true,
+ "multisplash": true
+ },
+ "driver": "ws2812",
+ "react_on_keyup": true,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A5", "A6", "A7", "C4", "C5"],
diff --git a/keyboards/hillside/46/0_1/config.h b/keyboards/hillside/46/0_1/config.h
index 20c4deca40..136be2f581 100644
--- a/keyboards/hillside/46/0_1/config.h
+++ b/keyboards/hillside/46/0_1/config.h
@@ -6,6 +6,7 @@
/* Split */
#define SPLIT_HAND_MATRIX_GRID B5, F6
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
#define MATRIX_MASKED
/* Haptic hardware */
diff --git a/keyboards/hillside/52/0_1/config.h b/keyboards/hillside/52/0_1/config.h
index 20c4deca40..136be2f581 100644
--- a/keyboards/hillside/52/0_1/config.h
+++ b/keyboards/hillside/52/0_1/config.h
@@ -6,6 +6,7 @@
/* Split */
#define SPLIT_HAND_MATRIX_GRID B5, F6
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
#define MATRIX_MASKED
/* Haptic hardware */
diff --git a/keyboards/hineybush/hbcp/hbcp.c b/keyboards/hineybush/hbcp/hbcp.c
index df17650f27..754b63b200 100644
--- a/keyboards/hineybush/hbcp/hbcp.c
+++ b/keyboards/hineybush/hbcp/hbcp.c
@@ -70,7 +70,7 @@ bool led_update_kb(led_t led_state) {
__attribute__ ((weak))
void keyboard_post_init_user(void) {
- rgblight_set_effect_range(3, RGBLED_NUM-3);
+ rgblight_set_effect_range(3, RGBLIGHT_LED_COUNT-3);
led_t led_state = {
.caps_lock = true,
.num_lock = true,
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
deleted file mode 100644
index 04f132f4a4..0000000000
--- a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 86
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json b/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
index 7f8a448d07..6146bd517a 100644
--- a/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
@@ -10,7 +10,53 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B1", "B0", "B5", "B6", "C6", "C7", "E2", "D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4"],
diff --git a/keyboards/horrortroll/handwired_k552/config.h b/keyboards/horrortroll/handwired_k552/config.h
index f957465cd0..bc7924165d 100644
--- a/keyboards/horrortroll/handwired_k552/config.h
+++ b/keyboards/horrortroll/handwired_k552/config.h
@@ -40,27 +40,4 @@
#define OLED_FONT_H "lib/glcdfont.c"
#endif
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 24
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#endif
+#define RGB_MATRIX_LED_COUNT 24
diff --git a/keyboards/horrortroll/handwired_k552/info.json b/keyboards/horrortroll/handwired_k552/info.json
index b064df38c2..6eb5cbd80e 100644
--- a/keyboards/horrortroll/handwired_k552/info.json
+++ b/keyboards/horrortroll/handwired_k552/info.json
@@ -13,7 +13,28 @@
"pin": "C14"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "dual_beacon": true,
+ "rainbow_beacon": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_rain": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B15", "C6", "C7", "A3", "A1", "C3", "C1", "B14", "B13", "A9", "B3", "B4", "A0", "C11", "C4", "C0", "C2"],
diff --git a/keyboards/horrortroll/lemon40/lemon40.c b/keyboards/horrortroll/lemon40/lemon40.c
index 75321f41b3..ad42e93e67 100644
--- a/keyboards/horrortroll/lemon40/lemon40.c
+++ b/keyboards/horrortroll/lemon40/lemon40.c
@@ -20,18 +20,21 @@
#include "lib/bongocat.h"
#ifdef OLED_ENABLE
- bool oled_task_kb(void) {
- led_t led_usb_state = host_keyboard_led_state();
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ led_t led_usb_state = host_keyboard_led_state();
- render_bongocat();
- oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top)
- oled_write_P(PSTR("WPM:"), false);
- oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string
- oled_set_cursor(17, 2);
- oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
- oled_set_cursor(17, 3);
- oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
+ render_bongocat();
+ oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top)
+ oled_write_P(PSTR("WPM:"), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string
+ oled_set_cursor(17, 2);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_set_cursor(17, 3);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
- return true;
- }
+ return true;
+}
#endif
diff --git a/keyboards/horrortroll/nyx/rev1/config.h b/keyboards/horrortroll/nyx/rev1/config.h
deleted file mode 100644
index 9126bfe085..0000000000
--- a/keyboards/horrortroll/nyx/rev1/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2023 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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
-
-/* RGB Matrix config */
-#define RGB_MATRIX_LED_COUNT 67
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/hotdox/left.c b/keyboards/hotdox/left.c
index 970d36f1b5..f963ecdae7 100644
--- a/keyboards/hotdox/left.c
+++ b/keyboards/hotdox/left.c
@@ -5,8 +5,8 @@
bool i2c_initialized = false;
void left_config(void);
-uint8_t left_write(uint8_t reg, uint8_t data);
-uint8_t left_read(uint8_t reg, uint8_t *data);
+i2c_status_t left_write(uint8_t reg, uint8_t data);
+i2c_status_t left_read(uint8_t reg, uint8_t *data);
uint8_t init_mcp23017(void)
{
@@ -35,12 +35,11 @@ void left_init(void)
void left_scan(void)
{
- uint8_t ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT);
+
+ i2c_status_t ret = i2c_ping_address(I2C_ADDR, HOTDOX_I2C_TIMEOUT);
- if (ret == 0)
+ if (ret == I2C_STATUS_SUCCESS)
{
- i2c_stop();
-
if (!i2c_initialized)
{
i2c_initialized = true;
@@ -91,40 +90,29 @@ void left_config(void)
left_write(MCP23017_B0_GPIOB, 0xC0);
}
-uint8_t left_write(uint8_t reg, uint8_t data)
+i2c_status_t left_write(uint8_t reg, uint8_t data)
{
if (!i2c_initialized)
{
return 0;
}
- uint8_t ret;
+ i2c_status_t ret;
- ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
- ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
- ret = i2c_write(data, HOTDOX_I2C_TIMEOUT);
+ ret = i2c_writeReg(I2C_ADDR, reg, &data, sizeof(data), HOTDOX_I2C_TIMEOUT);
-out:
- i2c_stop();
return ret;
}
-uint8_t left_read(uint8_t reg, uint8_t *data)
+i2c_status_t left_read(uint8_t reg, uint8_t *data)
{
if (!i2c_initialized)
{
return 0;
}
- uint8_t ret = 0;
-
- ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
- ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
- ret = i2c_start(I2C_ADDR_READ, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
-
- *data = i2c_read_nack(HOTDOX_I2C_TIMEOUT);
+ i2c_status_t ret = 0;
+ ret = i2c_readReg(I2C_ADDR, reg, data, 1, HOTDOX_I2C_TIMEOUT);
-out:
- i2c_stop();
return ret;
}
diff --git a/keyboards/hotdox/left.h b/keyboards/hotdox/left.h
index 3d8b5a6ead..32faadba21 100644
--- a/keyboards/hotdox/left.h
+++ b/keyboards/hotdox/left.h
@@ -10,10 +10,7 @@
#define MCP23017_A1 0
#define MCP23017_A2 0
-#define I2C_ADDR (0x20)
-#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
-#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
-
+#define I2C_ADDR ((0x20) << 1)
#define MCP23017_B0_IODIRA 0x00
#define MCP23017_B0_IODIRB 0x01
@@ -40,8 +37,6 @@
#define HOTDOX_I2C_TIMEOUT 100
-typedef int16_t i2c_status_t;
-
void left_init(void);
void left_scan(void);
diff --git a/keyboards/hotdox76v2/config.h b/keyboards/hotdox76v2/config.h
index 3d80775073..f3b95890b2 100644
--- a/keyboards/hotdox76v2/config.h
+++ b/keyboards/hotdox76v2/config.h
@@ -20,19 +20,4 @@
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-#define RGB_MATRIX_SPLIT \
- { 43, 43 }
-
-#define RGB_MATRIX_LED_COUNT 86
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_CENTER \
- { 112, 32 }
-
#define SPLIT_TRANSACTION_IDS_KB KEYBOARD_CURRENT_ALPA_SYNC
-
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
diff --git a/keyboards/hotdox76v2/info.json b/keyboards/hotdox76v2/info.json
index a42bdb3a79..2270d33273 100644
--- a/keyboards/hotdox76v2/info.json
+++ b/keyboards/hotdox76v2/info.json
@@ -19,7 +19,17 @@
"lto": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "cycle_left_right": true,
+ "cycle_out_in_dual": true
+ },
+ "center_point": [112, 32],
+ "driver": "ws2812",
+ "max_brightness": 150,
+ "sleep": true,
+ "split_count": [43, 43]
},
"matrix_pins": {
"cols": ["F7", "F6", "F5", "F4", "F1", "F0", "E6"],
diff --git a/keyboards/hs60/v1/config.h b/keyboards/hs60/v1/config.h
index c864464390..95730e10e4 100644
--- a/keyboards/hs60/v1/config.h
+++ b/keyboards/hs60/v1/config.h
@@ -33,72 +33,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* disable print */
//#define NO_PRINT
-/* Backlight options */
-
-//This is experimental do not enable yet
-//#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
-
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 215
-
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL
-#define DRIVER_1_LED_TOTAL 30
-
#ifdef HS60_ANSI
-#define DRIVER_2_LED_TOTAL 31
+#define RGB_MATRIX_LED_COUNT 61
#else
-#define DRIVER_2_LED_TOTAL 32
+#define RGB_MATRIX_LED_COUNT 62
#endif
-
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/hs60/v1/info.json b/keyboards/hs60/v1/info.json
index c87ca19e3b..f9d77c3513 100644
--- a/keyboards/hs60/v1/info.json
+++ b/keyboards/hs60/v1/info.json
@@ -9,7 +9,53 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "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": "is31fl3731",
+ "max_brightness": 215
},
"matrix_pins": {
"cols": ["F1", "F4", "F5", "E6", "F0", "B7", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5"],
diff --git a/keyboards/hs60/v1/v1.c b/keyboards/hs60/v1/v1.c
index 50f6215a02..f68bcbdf9e 100644
--- a/keyboards/hs60/v1/v1.c
+++ b/keyboards/hs60/v1/v1.c
@@ -91,7 +91,7 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
#ifdef HS60_ANSI
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -199,7 +199,7 @@ led_config_t g_led_config = { {
#else
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/hub16/readme.md b/keyboards/hub16/readme.md
deleted file mode 100755
index f2bcf4b0a7..0000000000
--- a/keyboards/hub16/readme.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hub16
-
-Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders.
-
-For more information regarding the keyboard, please visit the [Hub16 Website](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16).
-
-* Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson)
-* Hardware Supported: Hub16 PCB (atmega32u4)
-* Hardware Availability: [Josh Johnson](https://www.joshajohnson.com/hub16-keyboard/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make hub16:default
-
-Flashing example for this keyboard:
-
- make hub16:default:flash
-
-To reset the board into bootloader mode, do one of the following:
-
-* Press the reset switch between the center two USB-C ports while the board is plugged in
-* Hold the top left key while connecting the USB cable (also erases persistent settings)
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/hub20/config.h b/keyboards/hub20/config.h
deleted file mode 100644
index a72b1389ad..0000000000
--- a/keyboards/hub20/config.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-Copyright 2020 joshajohnson
-Copyright 2021 peepeetee
-
-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 RGB_MATRIX_LED_COUNT 27
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #define ENABLE_RGB_MATRIX_DUAL_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-/* 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
diff --git a/keyboards/hub20/info.json b/keyboards/hub20/info.json
deleted file mode 100644
index 92aa3605a9..0000000000
--- a/keyboards/hub20/info.json
+++ /dev/null
@@ -1,128 +0,0 @@
-{
- "keyboard_name": "Hub20",
- "manufacturer": "Josh Johnson",
- "url": "https://github.com/joshajohnson/hub20",
- "maintainer": "joshajohnson",
- "usb": {
- "vid": "0x6A6A",
- "pid": "0x4414",
- "device_version": "0.0.1"
- },
- "rgb_matrix": {
- "driver": "ws2812"
- },
- "matrix_pins": {
- "cols": ["A6", "A7", "B7", "B6"],
- "rows": ["A13", "B14", "A10", "A0", "A2", "A1"]
- },
- "diode_direction": "COL2ROW",
- "encoder": {
- "rotary": [
- {"pin_a": "B12", "pin_b": "B13"},
- {"pin_a": "A8", "pin_b": "A9"}
- ]
- },
- "qmk": {
- "tap_keycode_delay": 10
- },
- "rgblight": {
- "led_count": 27
- },
- "ws2812": {
- "pin": "B15"
- },
- "processor": "STM32F072",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_all": {
- "layout": [
- {"matrix": [0, 1], "x": 0.5, "y": 0},
-
- {"matrix": [0, 2], "x": 2.5, "y": 0},
-
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1, "y": 1},
- {"matrix": [1, 2], "x": 2, "y": 1},
- {"matrix": [1, 3], "x": 3, "y": 1},
-
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1, "y": 2},
- {"matrix": [2, 2], "x": 2, "y": 2},
- {"matrix": [2, 3], "x": 3, "y": 2},
-
- {"matrix": [3, 0], "x": 0, "y": 3},
- {"matrix": [3, 1], "x": 1, "y": 3},
- {"matrix": [3, 2], "x": 2, "y": 3},
- {"matrix": [3, 3], "x": 3, "y": 3},
-
- {"matrix": [4, 0], "x": 0, "y": 4},
- {"matrix": [4, 1], "x": 1, "y": 4},
- {"matrix": [4, 2], "x": 2, "y": 4},
- {"matrix": [4, 3], "x": 3, "y": 4},
-
- {"matrix": [5, 0], "x": 0, "y": 5},
- {"matrix": [5, 1], "x": 1, "y": 5},
- {"matrix": [5, 2], "x": 2, "y": 5},
- {"matrix": [5, 3], "x": 3, "y": 5}
- ]
- },
- "LAYOUT_left_handed": {
- "layout": [
- {"matrix": [0, 1], "x": 0.5, "y": 0},
-
- {"matrix": [0, 2], "x": 2.5, "y": 0},
-
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1, "y": 1},
- {"matrix": [1, 2], "x": 2, "y": 1},
- {"matrix": [1, 3], "x": 3, "y": 1},
-
- {"matrix": [2, 1], "x": 1, "y": 2},
- {"matrix": [2, 2], "x": 2, "y": 2},
- {"matrix": [2, 3], "x": 3, "y": 2},
-
- {"matrix": [2, 0], "x": 0, "y": 2, "h": 2},
- {"matrix": [3, 1], "x": 1, "y": 3},
- {"matrix": [3, 2], "x": 2, "y": 3},
- {"matrix": [3, 3], "x": 3, "y": 3},
-
- {"matrix": [4, 1], "x": 0, "y": 4, "h": 2},
- {"matrix": [4, 2], "x": 1, "y": 4},
- {"matrix": [4, 3], "x": 2, "y": 4},
- {"matrix": [4, 0], "x": 3, "y": 4},
-
- {"matrix": [5, 1], "x": 1, "y": 5},
- {"matrix": [5, 2], "x": 2, "y": 5, "w": 2}
- ]
- },
- "LAYOUT_right_handed": {
- "layout": [
- {"matrix": [0, 1], "x": 0.5, "y": 0},
-
- {"matrix": [0, 2], "x": 2.5, "y": 0},
-
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1, "y": 1},
- {"matrix": [1, 2], "x": 2, "y": 1},
- {"matrix": [1, 3], "x": 3, "y": 1},
-
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1, "y": 2},
- {"matrix": [2, 2], "x": 2, "y": 2},
-
- {"matrix": [3, 0], "x": 0, "y": 3},
- {"matrix": [3, 1], "x": 1, "y": 3},
- {"matrix": [3, 2], "x": 2, "y": 3},
- {"matrix": [2, 3], "x": 3, "y": 2, "h": 2},
-
- {"matrix": [4, 0], "x": 0, "y": 4},
- {"matrix": [4, 1], "x": 1, "y": 4},
- {"matrix": [4, 2], "x": 2, "y": 4},
-
- {"matrix": [5, 0], "x": 0, "y": 5, "w": 2},
- {"matrix": [5, 2], "x": 2, "y": 5},
- {"matrix": [4, 3], "x": 3, "y": 4, "h": 2}
- ]
- }
- }
-}
diff --git a/keyboards/hub20/readme.md b/keyboards/hub20/readme.md
deleted file mode 100755
index 1abfa0dea8..0000000000
--- a/keyboards/hub20/readme.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hub20
-
-Hub20 is a 20 key macro pad with an inbuilt USB 2.0 hub and dual rotary encoders. It can be configured to be a left / right hand numberpad, along with a 4x5 1u layout.
-
-For more information regarding the keyboard, please visit the [Hub20 Website](https://www.joshajohnson.com/hub20) or [GitHub Repo](https://github.com/joshajohnson/Hub20).
-
-* Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson)
-* Hardware Supported: Hub20 PCB (STM32F072)
-* Hardware Availability: [Josh Johnson](https://www.joshajohnson.com/hub20)
-
-Make example for this keyboard (after setting up your build environment):
-
- make hub20:default
-
-Flashing example for this keyboard:
-
- make hub20:default:flash
-
-To reset the board into bootloader mode, do one of the following:
-
-* Press the reset switch between the center two USB-C ports while the board is plugged in
-* Hold the top left key while connecting the USB cable (also erases persistent settings)
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ibm/model_m/mschwingen/matrix.c b/keyboards/ibm/model_m/mschwingen/matrix.c
index 9997b65975..361803edec 100644
--- a/keyboards/ibm/model_m/mschwingen/matrix.c
+++ b/keyboards/ibm/model_m/mschwingen/matrix.c
@@ -60,8 +60,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
row_data = spi_read() << 8;
row_data |= spi_read();
- debug_hex8(~row_data);
- dprint(" ");
+ dprintf("%02X ", ~row_data);
// For each row...
for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c
index 8e3810cd23..03dfcdc2f2 100644
--- a/keyboards/ibm/model_m/mschwingen/mschwingen.c
+++ b/keyboards/ibm/model_m/mschwingen/mschwingen.c
@@ -36,10 +36,10 @@ static bool blink_state = false;
static uint8_t isRecording = 0;
#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812
-# if RGBLED_NUM < 3
+# if RGBLIGHT_LED_COUNT < 3
# error we need at least 3 RGB LEDs!
# endif
-static rgb_led_t led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
+static rgb_led_t led[RGBLIGHT_LED_COUNT] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
# define BRIGHT 32
# define DIM 6
@@ -84,13 +84,13 @@ void sleep_led_enable(void) {
led[0] = black;
led[1] = black;
led[2] = black;
- ws2812_setleds(led, RGBLED_NUM);
+ ws2812_setleds(led, RGBLIGHT_LED_COUNT);
#endif
}
void keyboard_pre_init_kb(void) {
#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812
- ws2812_setleds(led, RGBLED_NUM);
+ ws2812_setleds(led, RGBLIGHT_LED_COUNT);
#else
/* Set status LEDs pins to output and Low (on) */
setPinOutput(MODELM_LED_CAPSLOCK);
@@ -146,7 +146,7 @@ static void led_update_rgb(void) {
break;
}
if (!suspend_active) {
- ws2812_setleds(led, RGBLED_NUM);
+ ws2812_setleds(led, RGBLIGHT_LED_COUNT);
}
}
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/idobao/id42/config.h b/keyboards/idobao/id42/config.h
deleted file mode 100755
index bac9dbf1bd..0000000000
--- a/keyboards/idobao/id42/config.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/* LED Matrix & Animations */
-#ifdef RGB_MATRIX_ENABLE
-
- #define RGB_MATRIX_LED_COUNT 42
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
-
- #define RGB_MATRIX_KEYPRESSES // enable key press effects
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* #if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES) */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
- /* #endif // RGB_MATRIX_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
-#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/idobao/id42/info.json b/keyboards/idobao/id42/info.json
index b874f51806..b0702aaa94 100644
--- a/keyboards/idobao/id42/info.json
+++ b/keyboards/idobao/id42/info.json
@@ -18,7 +18,49 @@
"pin": "B3"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B4", "D7", "D6", "D4", "B5", "C7", "F0", "F7", "F6", "F1", "F4", "F5"],
diff --git a/keyboards/idobao/id61/config.h b/keyboards/idobao/id61/config.h
index 5513787c4e..3766a8ef1d 100644
--- a/keyboards/idobao/id61/config.h
+++ b/keyboards/idobao/id61/config.h
@@ -3,70 +3,12 @@
#pragma once
-
-/* ----------------
- * RGB Matrix stuff
- * ---------------- */
-
-// RGB Matrix config
#if defined(RGB_MATRIX_ENABLE)
-
#ifndef ID61_DISABLE_UNDERGLOW
#define RGB_MATRIX_LED_COUNT 71
#else
#define RGB_MATRIX_LED_COUNT 61 // = 71 - 10
#endif
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to {x} out of 255. If not defined maximum brightness is set to 255
-
- #define RGB_MATRIX_KEYPRESSES
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* RGB_MATRIX_FRAMEBUFFER_EFFECTS) */
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- /* RGB_MATRIX_KEYPRESSES) | defined(RGB_MATRIX_KEYRELEASES) */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
#endif // RGB_MATRIX_ENABLE
/* -----------------------
diff --git a/keyboards/idobao/id61/info.json b/keyboards/idobao/id61/info.json
index cf7892ec9f..255e88fc05 100644
--- a/keyboards/idobao/id61/info.json
+++ b/keyboards/idobao/id61/info.json
@@ -18,7 +18,49 @@
"pin": "F0"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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",
+ "max_brightness": 170,
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F6", "F5", "F4", "F1", "B7", "D5", "D1", "D2", "D3", "D4", "D0", "D6", "D7"],
diff --git a/keyboards/idobao/id63/config.h b/keyboards/idobao/id63/config.h
index 214fb6ba6d..5a7df9028e 100644
--- a/keyboards/idobao/id63/config.h
+++ b/keyboards/idobao/id63/config.h
@@ -3,83 +3,12 @@
#pragma once
-
-/* NB: Most configuration information resides in `info.json` */
-
-/* ----------------
- * RGB Matrix stuff
- * ---------------- */
-
-// RGB Matrix config
#if defined(RGB_MATRIX_ENABLE)
-
- /* Denwir case is solid back. Please disable underglow at compile with compile command line:
- *
- * `make idobao/id63:default UNDERGLOW=off`
- *
- * */
#ifndef ID63_DISABLE_UNDERGLOW
#define RGB_MATRIX_LED_COUNT 75
#else
#define RGB_MATRIX_LED_COUNT (75 - 12)
#endif
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
-
- #define RGB_MATRIX_KEYPRESSES
- // do not enable RGB_MATRIX_FRAMEBUFFER_EFFECTS as these effects don't work will with this LED placement
-
- // changes to this list will break the sequence set in the VIA `json` file.
- /* Standard animation set */
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
- // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // ** do not enable
- // #define ENABLE_RGB_MATRIX_PIXEL_FLOW // ** do not enable
- // #define ENABLE_RGB_MATRIX_PIXEL_RAIN // ** do not enable
-
- /* RGB_MATRIX_FRAMEBUFFER_EFFECTS */
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP // ** do not enable
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN // ** do not enable
-
- /* RGB_MATRIX_KEYPRESSES */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
#endif // RGB_MATRIX_ENABLE
/* -----------------------
diff --git a/keyboards/idobao/id63/info.json b/keyboards/idobao/id63/info.json
index 32651f918f..02c4d41bf4 100644
--- a/keyboards/idobao/id63/info.json
+++ b/keyboards/idobao/id63/info.json
@@ -18,7 +18,49 @@
"pin": "B7"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F6", "F5", "F4", "F1", "B3", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7"],
diff --git a/keyboards/idobao/id67/config.h b/keyboards/idobao/id67/config.h
index 7834bd33bb..8f454d1ff4 100644
--- a/keyboards/idobao/id67/config.h
+++ b/keyboards/idobao/id67/config.h
@@ -5,64 +5,12 @@
#pragma once
-// RGB Matrix config
#if defined(RGB_MATRIX_ENABLE)
#ifndef ID67_DISABLE_UNDERGLOW
#define RGB_MATRIX_LED_COUNT 77
#else
#define RGB_MATRIX_LED_COUNT (77 - 10)
#endif
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
-
- #define RGB_MATRIX_KEYPRESSES
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* RGB_MATRIX_FRAMEBUFFER_EFFECTS -- don't enable */
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- /* RGB_MATRIX_KEYPRESSES || RGB_MATRIX_KEYRELEASES */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
#endif // RGB_MATRIX_ENABLE
/* -----------------------
diff --git a/keyboards/idobao/id67/info.json b/keyboards/idobao/id67/info.json
index eff8333a80..5618311141 100644
--- a/keyboards/idobao/id67/info.json
+++ b/keyboards/idobao/id67/info.json
@@ -18,7 +18,49 @@
"pin": "F0"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["C7", "F6", "F5", "F4", "F1", "B7", "D5", "D1", "D2", "D3", "D4", "D0", "D6", "D7", "B4"],
diff --git a/keyboards/idobao/id75/keymaps/paryz/config.h b/keyboards/idobao/id75/keymaps/paryz/config.h
index 625ce7a257..38c82875fa 100644
--- a/keyboards/idobao/id75/keymaps/paryz/config.h
+++ b/keyboards/idobao/id75/keymaps/paryz/config.h
@@ -16,5 +16,5 @@
#pragma once
#define RGBLIGHT_SLEEP
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
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/idobao/id75/v2/config.h b/keyboards/idobao/id75/v2/config.h
index 54d74c8da5..51d84749a5 100644
--- a/keyboards/idobao/id75/v2/config.h
+++ b/keyboards/idobao/id75/v2/config.h
@@ -16,48 +16,6 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 85 /* 10 Bottom 75 top*/
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_KEYPRESSES
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/idobao/id75/v2/info.json b/keyboards/idobao/id75/v2/info.json
index 4cb46c2564..f24145b918 100644
--- a/keyboards/idobao/id75/v2/info.json
+++ b/keyboards/idobao/id75/v2/info.json
@@ -12,6 +12,39 @@
"pin": "F0"
},
"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,
+ "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"
},
"matrix_pins": {
diff --git a/keyboards/idobao/id80/v3/ansi/config.h b/keyboards/idobao/id80/v3/ansi/config.h
deleted file mode 100644
index afe880fa8a..0000000000
--- a/keyboards/idobao/id80/v3/ansi/config.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2022 Vino Rodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/* ----------------
- * RGB Matrix stuff
- * ---------------- */
-
-// RGB Matrix config
-#if defined(RGB_MATRIX_ENABLE)
-
- #define RGB_MATRIX_LED_COUNT 94
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
-
- #define RGB_MATRIX_KEYPRESSES
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* don't need `#if`, animation modes themselves check defines
- * #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) */
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- /* #endif // RGB_MATRIX_FRAMEBUFFER_EFFECTS */
-
- /* don't need `#if`, animation modes themselves check defines
- * #if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES) */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
- /* #endif // RGB_MATRIX_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
-#endif // RGB_MATRIX_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/idobao/id80/v3/ansi/info.json b/keyboards/idobao/id80/v3/ansi/info.json
index cf21d3abb1..5cca0260ea 100644
--- a/keyboards/idobao/id80/v3/ansi/info.json
+++ b/keyboards/idobao/id80/v3/ansi/info.json
@@ -15,7 +15,49 @@
"rgblight": false
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B7", "B3", "B2", "B1", "B0", "E6", "F1", "F4", "F5", "F6", "F7"],
diff --git a/keyboards/idobao/id87/v2/config.h b/keyboards/idobao/id87/v2/config.h
deleted file mode 100644
index 17b63471fa..0000000000
--- a/keyboards/idobao/id87/v2/config.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2022 vinorodrigues (@vinorodrigues)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-
-/* ----------------
- * RGB Matrix stuff
- * ---------------- */
-
-// RGB Matrix config
-#if defined(RGB_MATRIX_ENABLE)
-
- #define RGB_MATRIX_LED_COUNT 103
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
-
- #define RGB_MATRIX_KEYPRESSES
-
- #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
- #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
- #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
- #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
- #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
- #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
- #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-
- /* RGB_MATRIX_FRAMEBUFFER_EFFECTS -- do not enable */
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- /* RGB_MATRIX_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-#endif // RGB_MATRIX_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/idobao/id87/v2/info.json b/keyboards/idobao/id87/v2/info.json
index 783cd04a03..cb94ee763e 100644
--- a/keyboards/idobao/id87/v2/info.json
+++ b/keyboards/idobao/id87/v2/info.json
@@ -18,7 +18,49 @@
"pin": "E2"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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,
+ "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",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4"],
diff --git a/keyboards/idobao/montex/v1rgb/config.h b/keyboards/idobao/montex/v1rgb/config.h
deleted file mode 100755
index 789479de05..0000000000
--- a/keyboards/idobao/montex/v1rgb/config.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2022 peepeetee (@peepeetee)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#if defined(RGB_MATRIX_ENABLE)
-
- // The number of LEDs connected
- #define RGB_MATRIX_LED_COUNT 31
-
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value
-
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- /* *** Items disabled are visually unappealing in a 5x6 key matrix *** */
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- // #define ENABLE_RGB_MATRIX_BAND_SAT
- // #define ENABLE_RGB_MATRIX_BAND_VAL
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- // #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- // #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- // #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- // #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/idobao/montex/v1rgb/info.json b/keyboards/idobao/montex/v1rgb/info.json
index 31c06d0809..08c62297ac 100755
--- a/keyboards/idobao/montex/v1rgb/info.json
+++ b/keyboards/idobao/montex/v1rgb/info.json
@@ -7,7 +7,33 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_beacon": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_rain": true,
+ "pixel_flow": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_multiwide": true,
+ "splash": true,
+ "solid_splash": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 170
},
"matrix_pins": {
"cols": ["D5", "D3", "D2", "D1", "D0"],
diff --git a/keyboards/idobao/montex/v2/config.h b/keyboards/idobao/montex/v2/config.h
index a7cd0d6114..548f3f62e7 100755
--- a/keyboards/idobao/montex/v2/config.h
+++ b/keyboards/idobao/montex/v2/config.h
@@ -9,65 +9,6 @@
#else
#define RGB_MATRIX_LED_COUNT 27 // -4 disabled underglow LEDs
#endif
-
- // #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // don't use, too few key to make it look good
- #define RGB_MATRIX_KEYPRESSES
-
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value
-
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- /* *** Items disabled are visually unappealing in a 5x6 key matrix *** */
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- // #define ENABLE_RGB_MATRIX_BAND_SAT
- // #define ENABLE_RGB_MATRIX_BAND_VAL
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- // #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- // #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- /* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */
- // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- /* enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined */
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- // define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- // #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- // #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif // RGB_MATRIX_ENABLE
/* -----------------------
diff --git a/keyboards/idobao/montex/v2/info.json b/keyboards/idobao/montex/v2/info.json
index 74a69d60fe..774cde114f 100755
--- a/keyboards/idobao/montex/v2/info.json
+++ b/keyboards/idobao/montex/v2/info.json
@@ -18,7 +18,34 @@
"pin": "B1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_beacon": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_rain": true,
+ "pixel_flow": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_multiwide": true,
+ "splash": true,
+ "solid_splash": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D5", "D3", "D2", "D1", "D0"],
diff --git a/keyboards/idyllic/tinny50_rgb/config.h b/keyboards/idyllic/tinny50_rgb/config.h
deleted file mode 100644
index 0cb5eac432..0000000000
--- a/keyboards/idyllic/tinny50_rgb/config.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright 2022 Zykrah
-
-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
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS * 7/8
-
-/* The number of LEDs connected */
-#define RGB_MATRIX_LED_COUNT 30
-
-/* Enable RGB MATRIX effects */
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#endif
diff --git a/keyboards/idyllic/tinny50_rgb/info.json b/keyboards/idyllic/tinny50_rgb/info.json
index 7e68b960f5..5407bd9c26 100644
--- a/keyboards/idyllic/tinny50_rgb/info.json
+++ b/keyboards/idyllic/tinny50_rgb/info.json
@@ -30,6 +30,40 @@
"cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP20", "GP19", "GP1", "GP6", "GP5"]
},
"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
+ },
+ "default": {
+ "val": 223
+ },
"driver": "ws2812"
},
"ws2812": {
diff --git a/keyboards/ilumkb/simpler61/config.h b/keyboards/ilumkb/simpler61/config.h
index 7978b495de..6bff92d3ea 100644
--- a/keyboards/ilumkb/simpler61/config.h
+++ b/keyboards/ilumkb/simpler61/config.h
@@ -16,60 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-#define DRIVER_1_LED_TOTAL 61
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-#define DRIVER_INDICATOR_LED_TOTAL 0
-
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/ilumkb/simpler61/info.json b/keyboards/ilumkb/simpler61/info.json
index 80a738f4cf..9f8f5f014a 100644
--- a/keyboards/ilumkb/simpler61/info.json
+++ b/keyboards/ilumkb/simpler61/info.json
@@ -9,7 +9,44 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "B7", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7"],
diff --git a/keyboards/ilumkb/simpler61/simpler61.c b/keyboards/ilumkb/simpler61/simpler61.c
index f29f05defe..cb35e55428 100644
--- a/keyboards/ilumkb/simpler61/simpler61.c
+++ b/keyboards/ilumkb/simpler61/simpler61.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS3_SW1, CS2_SW1, CS1_SW1},
{0, CS3_SW2, CS2_SW2, CS1_SW2},
{0, CS3_SW3, CS2_SW3, CS1_SW3},
diff --git a/keyboards/ilumkb/simpler64/config.h b/keyboards/ilumkb/simpler64/config.h
index 09dc7dc80f..6bff92d3ea 100644
--- a/keyboards/ilumkb/simpler64/config.h
+++ b/keyboards/ilumkb/simpler64/config.h
@@ -16,61 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-#define DRIVER_1_LED_TOTAL 64
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-#define DRIVER_INDICATOR_LED_TOTAL 0
-
-
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/ilumkb/simpler64/info.json b/keyboards/ilumkb/simpler64/info.json
index a793907148..af617da861 100644
--- a/keyboards/ilumkb/simpler64/info.json
+++ b/keyboards/ilumkb/simpler64/info.json
@@ -9,7 +9,44 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "B7", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7"],
diff --git a/keyboards/ilumkb/simpler64/simpler64.c b/keyboards/ilumkb/simpler64/simpler64.c
index a562fa5c8b..173423cf7e 100644
--- a/keyboards/ilumkb/simpler64/simpler64.c
+++ b/keyboards/ilumkb/simpler64/simpler64.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS3_SW1, CS2_SW1, CS1_SW1},
{0, CS3_SW2, CS2_SW2, CS1_SW2},
{0, CS3_SW3, CS2_SW3, CS1_SW3},
diff --git a/keyboards/inett_studio/sqx/hotswap/config.h b/keyboards/inett_studio/sqx/hotswap/config.h
index a53a2132fa..0759616004 100644
--- a/keyboards/inett_studio/sqx/hotswap/config.h
+++ b/keyboards/inett_studio/sqx/hotswap/config.h
@@ -29,63 +29,9 @@
/* disable print */
//#define NO_PRINT
-//rgb matrix setting
-#define DRIVER_1_LED_TOTAL 33
-#define DRIVER_2_LED_TOTAL 31
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#if defined(RGB_MATRIX_ENABLE) && defined(RGBLIGHT_ENABLE)
#define RGB_MATRIX_DISABLE_KEYCODES
#endif
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/inett_studio/sqx/hotswap/hotswap.c b/keyboards/inett_studio/sqx/hotswap/hotswap.c
index 4d77a4829e..079889e727 100644
--- a/keyboards/inett_studio/sqx/hotswap/hotswap.c
+++ b/keyboards/inett_studio/sqx/hotswap/hotswap.c
@@ -20,7 +20,7 @@
#include "hotswap.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/inett_studio/sqx/hotswap/info.json b/keyboards/inett_studio/sqx/hotswap/info.json
index 90fe00d167..f1526594f9 100644
--- a/keyboards/inett_studio/sqx/hotswap/info.json
+++ b/keyboards/inett_studio/sqx/hotswap/info.json
@@ -12,7 +12,36 @@
"pin": "D7"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_pinwheel_sat": true,
+ "band_spiral_sat": 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
+ },
+ "driver": "is31fl3731",
+ "max_brightness": 170
},
"rgblight": {
"saturation_steps": 8,
diff --git a/keyboards/inett_studio/sqx/universal/config.h b/keyboards/inett_studio/sqx/universal/config.h
index dd123bd7a9..737addf725 100644
--- a/keyboards/inett_studio/sqx/universal/config.h
+++ b/keyboards/inett_studio/sqx/universal/config.h
@@ -29,63 +29,9 @@
/* disable print */
//#define NO_PRINT
-//rgb matrix setting
-#define DRIVER_1_LED_TOTAL 36
-#define DRIVER_2_LED_TOTAL 36
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#if defined(RGB_MATRIX_ENABLE) && defined(RGBLIGHT_ENABLE)
# define RGB_MATRIX_DISABLE_KEYCODES
#endif
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/inett_studio/sqx/universal/info.json b/keyboards/inett_studio/sqx/universal/info.json
index 15744fbbbc..d84ad5fc63 100644
--- a/keyboards/inett_studio/sqx/universal/info.json
+++ b/keyboards/inett_studio/sqx/universal/info.json
@@ -12,7 +12,36 @@
"pin": "D7"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_pinwheel_sat": true,
+ "band_spiral_sat": 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
+ },
+ "driver": "is31fl3731",
+ "max_brightness": 170
},
"rgblight": {
"saturation_steps": 8,
diff --git a/keyboards/inett_studio/sqx/universal/universal.c b/keyboards/inett_studio/sqx/universal/universal.c
index 3ba42e9995..519df57505 100644
--- a/keyboards/inett_studio/sqx/universal/universal.c
+++ b/keyboards/inett_studio/sqx/universal/universal.c
@@ -20,7 +20,7 @@
#include "universal.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/ingrained/matrix.c b/keyboards/ingrained/matrix.c
index 154a275d7a..3ba9d8dcf3 100644
--- a/keyboards/ingrained/matrix.c
+++ b/keyboards/ingrained/matrix.c
@@ -41,9 +41,7 @@ extern i2c_status_t mcp23017_status;
// All address pins of the mcp23017 are connected to the ground on the ferris
// | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
// | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
-#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
+#define I2C_ADDR (0b0100000<<1)
// Register addresses
// See https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/Adafruit_MCP23017.h
@@ -77,7 +75,7 @@ uint8_t init_mcp23017(void) {
// This means: we will read all the bits on GPIOA
// This means: we will write to the pins 0-4 on GPIOB (in select_rows)
uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ mcp23017_status = i2c_transmit(I2C_ADDR, buf, sizeof(buf), I2C_TIMEOUT);
if (!mcp23017_status) {
// set pull-up
// - unused : on : 1
@@ -86,7 +84,7 @@ uint8_t init_mcp23017(void) {
// This means: we will read all the bits on GPIOA
// This means: we will write to the pins 0-4 on GPIOB (in select_rows)
uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), I2C_TIMEOUT);
+ mcp23017_status = i2c_transmit(I2C_ADDR, pullup_buf, sizeof(pullup_buf), I2C_TIMEOUT);
}
return mcp23017_status;
}
@@ -205,14 +203,14 @@ static matrix_row_t read_cols(uint8_t row) {
return 0;
} else {
uint8_t buf[] = {GPIOA};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ mcp23017_status = i2c_transmit(I2C_ADDR, buf, sizeof(buf), I2C_TIMEOUT);
// We read all the pins on GPIOA.
// The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero.
// The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys.
// Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones.
uint8_t data[] = {0};
if (!mcp23017_status) {
- mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), I2C_TIMEOUT);
+ mcp23017_status = i2c_receive(I2C_ADDR, data, sizeof(data), I2C_TIMEOUT);
data[0] = ~(data[0]);
}
return data[0];
@@ -249,7 +247,7 @@ static void select_row(uint8_t row) {
// Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one.
// Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus.
uint8_t buf[] = {GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))};
- mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ mcp23017_status = i2c_transmit(I2C_ADDR, buf, sizeof(buf), I2C_TIMEOUT);
}
}
}
diff --git a/keyboards/inland/kb83/config.h b/keyboards/inland/kb83/config.h
index be26cf869c..c003d218c2 100644
--- a/keyboards/inland/kb83/config.h
+++ b/keyboards/inland/kb83/config.h
@@ -40,36 +40,3 @@
#define I2C1_SCL_PAL_MODE 4
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-
-#define DRIVER_1_LED_TOTAL 61
-#define DRIVER_2_LED_TOTAL 21
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + 10)
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 /* The maximum brightness level */
diff --git a/keyboards/inland/kb83/info.json b/keyboards/inland/kb83/info.json
index d8e029c5fa..b4396fb630 100644
--- a/keyboards/inland/kb83/info.json
+++ b/keyboards/inland/kb83/info.json
@@ -9,7 +9,28 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "snled27351"
+ "animations": {
+ "breathing": 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,
+ "raindrops": true,
+ "typing_heatmap": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "multisplash": true
+ },
+ "driver": "snled27351",
+ "max_brightness": 200,
+ "react_on_keyup": true,
+ "sleep": true
},
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
diff --git a/keyboards/inland/kb83/kb83.c b/keyboards/inland/kb83/kb83.c
index 49604b93be..427a9a5e2d 100644
--- a/keyboards/inland/kb83/kb83.c
+++ b/keyboards/inland/kb83/kb83.c
@@ -18,7 +18,7 @@
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/inland/mk47/config.h b/keyboards/inland/mk47/config.h
index e5026bd0e7..13ebb83ba6 100644
--- a/keyboards/inland/mk47/config.h
+++ b/keyboards/inland/mk47/config.h
@@ -30,10 +30,3 @@
/* WB32 MCU has no default definition */
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000
-
-#define RGB_MATRIX_LED_COUNT 47
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-
diff --git a/keyboards/inland/mk47/info.json b/keyboards/inland/mk47/info.json
index e647723ed8..b6404f58b2 100644
--- a/keyboards/inland/mk47/info.json
+++ b/keyboards/inland/mk47/info.json
@@ -105,7 +105,8 @@
{ "flags": 4, "matrix": [3, 9], "x": 183, "y": 64},
{ "flags": 4, "matrix": [3, 10], "x": 204, "y": 64},
{ "flags": 4, "matrix": [3, 11], "x": 224, "y": 64}
- ]
+ ],
+ "sleep": true
},
"layout_aliases": {
"LAYOUT": "LAYOUT_planck_mit"
diff --git a/keyboards/inland/mk47/mk47.c b/keyboards/inland/mk47/mk47.c
index 5a34527c6c..959330e6f8 100644
--- a/keyboards/inland/mk47/mk47.c
+++ b/keyboards/inland/mk47/mk47.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/inland/v83p/config.h b/keyboards/inland/v83p/config.h
index c39cb6421f..a636a7891e 100644
--- a/keyboards/inland/v83p/config.h
+++ b/keyboards/inland/v83p/config.h
@@ -13,9 +13,6 @@
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000
-#define RGB_MATRIX_LED_COUNT 92
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
@@ -24,7 +21,3 @@
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/inland/v83p/info.json b/keyboards/inland/v83p/info.json
index 69df93e6d0..139cfb693b 100644
--- a/keyboards/inland/v83p/info.json
+++ b/keyboards/inland/v83p/info.json
@@ -46,7 +46,6 @@
"driver": "snled27351",
"max_brightness": 180,
"animations": {
- "solid_color": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
@@ -164,7 +163,9 @@
{ "flags": 2, "x": 224, "y": 32},
{ "flags": 2, "x": 224, "y": 48},
{ "flags": 2, "x": 224, "y": 64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT_ansi": {
diff --git a/keyboards/inland/v83p/v83p.c b/keyboards/inland/v83p/v83p.c
index 3cb9c06cb0..d044003615 100644
--- a/keyboards/inland/v83p/v83p.c
+++ b/keyboards/inland/v83p/v83p.c
@@ -5,7 +5,7 @@
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/input_club/ergodox_infinity/config.h b/keyboards/input_club/ergodox_infinity/config.h
index 3757ca3d60..b8ab5604d4 100644
--- a/keyboards/input_club/ergodox_infinity/config.h
+++ b/keyboards/input_club/ergodox_infinity/config.h
@@ -44,35 +44,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* LED matrix driver */
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define LED_MATRIX_LED_COUNT 76
-#define LED_MATRIX_SPLIT { 38, 38 }
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-#define ENABLE_LED_MATRIX_ALPHAS_MODS
-#define ENABLE_LED_MATRIX_BREATHING
-#define ENABLE_LED_MATRIX_BAND
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL
-#define ENABLE_LED_MATRIX_BAND_SPIRAL
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN
-#define ENABLE_LED_MATRIX_DUAL_BEACON
-#if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_LED_MATRIX_SPLASH
-# define ENABLE_LED_MATRIX_MULTISPLASH
-#endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_WAVE_UP_DOWN
/* i2c (for LED matrix) */
#define I2C1_CLOCK_SPEED 400000
diff --git a/keyboards/input_club/ergodox_infinity/ergodox_infinity.c b/keyboards/input_club/ergodox_infinity/ergodox_infinity.c
index 8f245d9fa3..80d3681437 100644
--- a/keyboards/input_club/ergodox_infinity/ergodox_infinity.c
+++ b/keyboards/input_club/ergodox_infinity/ergodox_infinity.c
@@ -171,7 +171,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
#endif
#ifdef LED_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
// The numbers in the comments are the led numbers DXX on the PCB
/* Refer to IS31 manual for these locations
* driver
diff --git a/keyboards/input_club/ergodox_infinity/info.json b/keyboards/input_club/ergodox_infinity/info.json
index d69aeb5d0c..d2d1e73943 100644
--- a/keyboards/input_club/ergodox_infinity/info.json
+++ b/keyboards/input_club/ergodox_infinity/info.json
@@ -7,7 +7,31 @@
"device_version": "0.0.1"
},
"led_matrix": {
- "driver": "is31fl3731"
+ "animations":{
+ "alphas_mods": true,
+ "breathing": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": 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,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "driver": "is31fl3731",
+ "sleep": true,
+ "split_count": [38, 38]
},
"matrix_pins": {
"cols": ["D1", "D4", "D5", "D6", "D7"],
diff --git a/keyboards/input_club/infinity60/led/config.h b/keyboards/input_club/infinity60/led/config.h
index 293b192d60..b6f28a017e 100644
--- a/keyboards/input_club/infinity60/led/config.h
+++ b/keyboards/input_club/infinity60/led/config.h
@@ -3,8 +3,6 @@
#pragma once
-#define LED_MATRIX_LED_COUNT 63
-
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define I2C1_CLOCK_SPEED 400000
diff --git a/keyboards/input_club/infinity60/led/led.c b/keyboards/input_club/infinity60/led/led.c
index a6a63e202d..e54f30d7b4 100644
--- a/keyboards/input_club/infinity60/led/led.c
+++ b/keyboards/input_club/infinity60/led/led.c
@@ -4,7 +4,7 @@
#include "quantum.h"
#ifdef LED_MATRIX_ENABLE
-const is31fl3731_led_t g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
diff --git a/keyboards/input_club/k_type/config.h b/keyboards/input_club/k_type/config.h
index c188038a82..182f0a61d7 100644
--- a/keyboards/input_club/k_type/config.h
+++ b/keyboards/input_club/k_type/config.h
@@ -33,80 +33,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-#ifdef RGB_MATRIX_ENABLE
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-
// i2c_master defines
-# define I2C_COUNT 2
-# define I2C1_CLOCK_SPEED 400000
-
-# define I2C1_SCL_PIN B0 // A2 on pinout = B0
-# define I2C1_SDA_PIN B1 // 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_SCL_PIN C10 // A2 on pinout = C10
-# define I2C2_SDA_PIN C11 // A2 on pinout = C11
-# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND
-# define IS31FL3733_DRIVER_COUNT 2
-# define IS31FL3733_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-# define DRIVER_1_LED_TOTAL 64
-# define DRIVER_2_LED_TOTAL 55
-# define RGB_MATRIX_LED_COUNT IS31FL3733_LED_COUNT
-#endif
+#define I2C_COUNT 2
+#define I2C1_CLOCK_SPEED 400000
+
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // 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_SCL_PIN C10 // A2 on pinout = C10
+#define I2C2_SDA_PIN C11 // A2 on pinout = C11
+#define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
+#define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
+
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
+#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/input_club/k_type/i2c_master.c b/keyboards/input_club/k_type/i2c_master.c
index af34d55ef6..e25ae2ef6f 100644
--- a/keyboards/input_club/k_type/i2c_master.c
+++ b/keyboards/input_club/k_type/i2c_master.c
@@ -114,7 +114,7 @@ i2c_status_t i2c_receive(uint8_t index, uint8_t address, uint8_t* data, uint16_t
return chibios_to_qmk(&status);
}
-i2c_status_t i2c_writeReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
+i2c_status_t i2c_write_register(uint8_t index, uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
if(index >= I2C_COUNT) {
return I2C_STATUS_ERROR;
}
@@ -131,7 +131,7 @@ i2c_status_t i2c_writeReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, const
return chibios_to_qmk(&status);
}
-i2c_status_t i2c_readReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
+i2c_status_t i2c_read_register(uint8_t index, uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
if(index >= I2C_COUNT) {
return I2C_STATUS_ERROR;
}
diff --git a/keyboards/input_club/k_type/i2c_master.h b/keyboards/input_club/k_type/i2c_master.h
index db4f12e43c..aa6ffe48b2 100644
--- a/keyboards/input_club/k_type/i2c_master.h
+++ b/keyboards/input_club/k_type/i2c_master.h
@@ -123,6 +123,6 @@ void i2c_init(I2CDriver *driver, ioline_t scl_pin, ioline_t sda_pin);
i2c_status_t i2c_start(uint8_t index, uint8_t address);
i2c_status_t i2c_transmit(uint8_t index, uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
i2c_status_t i2c_receive(uint8_t index, uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_writeReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_readReg(uint8_t index, uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_write_register(uint8_t index, uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_read_register(uint8_t index, uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
void i2c_stop(uint8_t index);
diff --git a/keyboards/input_club/k_type/info.json b/keyboards/input_club/k_type/info.json
index 7279c8a933..17076a82d8 100644
--- a/keyboards/input_club/k_type/info.json
+++ b/keyboards/input_club/k_type/info.json
@@ -9,6 +9,51 @@
"device_version": "0.0.1"
},
"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": "custom"
},
"matrix_pins": {
diff --git a/keyboards/input_club/k_type/is31fl3733-dual.c b/keyboards/input_club/k_type/is31fl3733-dual.c
index e471cf0b71..dce371d444 100644
--- a/keyboards/input_club/k_type/is31fl3733-dual.c
+++ b/keyboards/input_club/k_type/is31fl3733-dual.c
@@ -60,11 +60,8 @@
# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE
#endif
-// Transfer buffer for TWITransmitData()
-uint8_t g_twi_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
@@ -75,58 +72,40 @@ bool g_pwm_buffer_update_required[IS31FL3733_DRIVER_COUNT] = {false};
uint8_t g_led_control_registers[IS31FL3733_DRIVER_COUNT][IS31FL3733_LED_CONTROL_REGISTER_COUNT] = {0};
bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] = {false};
-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;
-
+void is31fl3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t 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) {
- return false;
- }
+ if (i2c_write_register(index, addr << 1, reg, &data, 1, IS31FL3733_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(index, addr << 1, reg, &data, 1, IS31FL3733_I2C_TIMEOUT);
#endif
- return true;
}
-bool is31fl3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer) {
- // Assumes PG1 is already selected.
- // If any of the transactions fails function returns false.
+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);
+}
+
+void is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t index) {
+ // Assumes page 1 is already selected.
// Transmit PWM registers in 12 transfers of 16 bytes.
- // g_twi_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;
- // 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];
- }
-
+ for (uint8_t i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i += 16) {
#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) {
- return false;
- }
+ for (uint8_t j = 0; j < IS31FL3733_I2C_PERSISTENCE; j++) {
+ if (i2c_write_register(index, addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3733_I2C_TIMEOUT) == I2C_STATUS_SUCCESS) break;
}
#else
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) {
- return false;
- }
+ i2c_write_register(index, addr << 1, i, g_pwm_buffer[index] + i, 16, IS31FL3733_I2C_TIMEOUT);
#endif
}
- return true;
}
void is31fl3733_init_drivers(void) {
i2c_init(&I2CD1, I2C1_SCL_PIN, I2C1_SDA_PIN);
+
is31fl3733_init(0, IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1);
# ifdef USE_I2C2
i2c_init(&I2CD2, I2C2_SCL_PIN, I2C2_SDA_PIN);
@@ -150,32 +129,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)
@@ -191,12 +161,14 @@ void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync) {
void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
is31fl3733_led_t led;
+
if (index >= 0 && index < IS31FL3733_LED_COUNT) {
memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led));
if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) {
return;
}
+
g_pwm_buffer[led.driver][led.r] = red;
g_pwm_buffer[led.driver][led.g] = green;
g_pwm_buffer[led.driver][led.b] = blue;
@@ -242,29 +214,24 @@ 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);
-
- // If any of the transactions fail we risk writing dirty PG0,
- // 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;
- }
+ is31fl3733_select_page(index, addr, IS31FL3733_COMMAND_PWM);
+
+ is31fl3733_write_pwm_buffer(addr, index);
+
+ g_pwm_buffer_update_required[index] = false;
}
- g_pwm_buffer_update_required[index] = false;
}
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]);
}
+
+ g_led_control_registers_update_required[index] = false;
}
- g_led_control_registers_update_required[index] = false;
}
void is31fl3733_flush(void) {
diff --git a/keyboards/input_club/k_type/is31fl3733-dual.h b/keyboards/input_club/k_type/is31fl3733-dual.h
index 2f7d58f7e7..1237fc77d1 100644
--- a/keyboards/input_club/k_type/is31fl3733-dual.h
+++ b/keyboards/input_club/k_type/is31fl3733-dual.h
@@ -21,6 +21,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "progmem.h"
+#include "util.h"
#define IS31FL3733_REG_INTERRUPT_MASK 0xF0
#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1
@@ -58,19 +59,33 @@
#define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E
#define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F
+#if !defined(IS31FL3733_LED_COUNT)
+# define IS31FL3733_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
+#if defined(IS31FL3733_I2C_ADDRESS_4)
+# define IS31FL3733_DRIVER_COUNT 4
+#elif defined(IS31FL3733_I2C_ADDRESS_3)
+# define IS31FL3733_DRIVER_COUNT 3
+#elif defined(IS31FL3733_I2C_ADDRESS_2)
+# define IS31FL3733_DRIVER_COUNT 2
+#elif defined(IS31FL3733_I2C_ADDRESS_1)
+# define IS31FL3733_DRIVER_COUNT 1
+#endif
+
typedef struct is31fl3733_led_t {
uint8_t driver : 2;
uint8_t r;
uint8_t g;
uint8_t b;
-} __attribute__((packed)) is31fl3733_led_t;
+} PACKED is31fl3733_led_t;
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);
-bool is31fl3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer);
+void 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);
void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void is31fl3733_set_color_all(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/input_club/whitefox/config.h b/keyboards/input_club/whitefox/config.h
index 2d6affe84a..0a2a060e9b 100644
--- a/keyboards/input_club/whitefox/config.h
+++ b/keyboards/input_club/whitefox/config.h
@@ -22,8 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* LED matrix driver */
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define LED_MATRIX_LED_COUNT 71
-#define LED_DISABLE_WHEN_USB_SUSPENDED
/* i2c (for LED matrix) */
#define I2C1_CLOCK_SPEED 400000
diff --git a/keyboards/input_club/whitefox/info.json b/keyboards/input_club/whitefox/info.json
index cb578e99b4..0428907fb8 100644
--- a/keyboards/input_club/whitefox/info.json
+++ b/keyboards/input_club/whitefox/info.json
@@ -8,7 +8,30 @@
"device_version": "0.0.1"
},
"led_matrix": {
- "driver": "is31fl3731"
+ "animations":{
+ "alphas_mods": true,
+ "breathing": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": 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,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "driver": "is31fl3731",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B2", "B3", "B18", "B19", "C0", "C8", "C9", "C10", "C11"],
diff --git a/keyboards/input_club/whitefox/whitefox.c b/keyboards/input_club/whitefox/whitefox.c
index 63c6a49240..07741365c3 100644
--- a/keyboards/input_club/whitefox/whitefox.c
+++ b/keyboards/input_club/whitefox/whitefox.c
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
#ifdef LED_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
// The numbers in the comments are the led numbers DXX on the PCB
/* Refer to IS31 manual for these locations
* driver
diff --git a/keyboards/jacky_studio/piggy60/rev2/config.h b/keyboards/jacky_studio/piggy60/rev2/config.h
index fa884d5f18..2747834991 100644
--- a/keyboards/jacky_studio/piggy60/rev2/config.h
+++ b/keyboards/jacky_studio/piggy60/rev2/config.h
@@ -16,12 +16,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 14
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
#define WS2812_PWM_DRIVER PWMD4
#define WS2812_PWM_CHANNEL 4
#define WS2812_PWM_PAL_MODE 2
diff --git a/keyboards/jacky_studio/piggy60/rev2/info.json b/keyboards/jacky_studio/piggy60/rev2/info.json
index 6d5db8874f..2a3c7e3313 100644
--- a/keyboards/jacky_studio/piggy60/rev2/info.json
+++ b/keyboards/jacky_studio/piggy60/rev2/info.json
@@ -72,7 +72,8 @@
{"flags": 2, "x": 45, "y": 0},
{"flags": 2, "x": 0, "y": 0},
{"flags": 2, "x": 32, "y": 32}
- ]
+ ],
+ "sleep": true
},
"usb": {
"device_version": "2.0.0",
diff --git a/keyboards/jadookb/jkb65/config.h b/keyboards/jadookb/jkb65/config.h
index 8e0534fa2c..4d138814be 100644
--- a/keyboards/jadookb/jkb65/config.h
+++ b/keyboards/jadookb/jkb65/config.h
@@ -18,61 +18,5 @@
#define RGB_MATRIX_LED_COUNT 67
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/jadookb/jkb65/info.json b/keyboards/jadookb/jkb65/info.json
index e097b47ce5..1f5d79032e 100644
--- a/keyboards/jadookb/jkb65/info.json
+++ b/keyboards/jadookb/jkb65/info.json
@@ -10,7 +10,58 @@
"pin": "F0"
},
"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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "ws2812",
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true,
"timeout": 90000
},
"processor": "atmega32u4",
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/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/jels/jels60/v2/config.h b/keyboards/jels/jels60/v2/config.h
index 02d9619a30..c9c1ba2c0e 100644
--- a/keyboards/jels/jels60/v2/config.h
+++ b/keyboards/jels/jels60/v2/config.h
@@ -16,7 +16,6 @@
#pragma once
-#define WS2812_PIO_USE_PIO1
#define RGBLIGHT_DEFAULT_VAL 0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
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/jian/nsrev2/config.h b/keyboards/jian/nsrev2/config.h
index 5025847259..7df400367f 100644
--- a/keyboards/jian/nsrev2/config.h
+++ b/keyboards/jian/nsrev2/config.h
@@ -22,14 +22,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_TIMER
#ifndef IOS_DEVICE_ENABLE
-#if RGBLED_NUM <= 6
+#if RGBLIGHT_LED_COUNT <= 6
#define RGBLIGHT_LIMIT_VAL 255
#else
#define RGBLIGHT_LIMIT_VAL 130
#endif
#define RGBLIGHT_VAL_STEP 8
#else
-#if RGBLED_NUM <= 6
+#if RGBLIGHT_LED_COUNT <= 6
#define RGBLIGHT_LIMIT_VAL 90
#else
#define RGBLIGHT_LIMIT_VAL 45
diff --git a/keyboards/jian/rev1/post_config.h b/keyboards/jian/rev1/post_config.h
index fade065e19..935d0d1f01 100644
--- a/keyboards/jian/rev1/post_config.h
+++ b/keyboards/jian/rev1/post_config.h
@@ -1,14 +1,14 @@
#pragma once
#ifndef IOS_DEVICE_ENABLE
-# if RGBLED_NUM <= 6
+# if RGBLIGHT_LED_COUNT <= 6
# define RGBLIGHT_LIMIT_VAL 255
# else
# define RGBLIGHT_LIMIT_VAL 130
# endif
# define RGBLIGHT_VAL_STEP 8
#else
-# if RGBLED_NUM <= 6
+# if RGBLIGHT_LED_COUNT <= 6
# define RGBLIGHT_LIMIT_VAL 90
# else
# define RGBLIGHT_LIMIT_VAL 45
diff --git a/keyboards/jian/rev2/post_config.h b/keyboards/jian/rev2/post_config.h
index fade065e19..935d0d1f01 100644
--- a/keyboards/jian/rev2/post_config.h
+++ b/keyboards/jian/rev2/post_config.h
@@ -1,14 +1,14 @@
#pragma once
#ifndef IOS_DEVICE_ENABLE
-# if RGBLED_NUM <= 6
+# if RGBLIGHT_LED_COUNT <= 6
# define RGBLIGHT_LIMIT_VAL 255
# else
# define RGBLIGHT_LIMIT_VAL 130
# endif
# define RGBLIGHT_VAL_STEP 8
#else
-# if RGBLED_NUM <= 6
+# if RGBLIGHT_LED_COUNT <= 6
# define RGBLIGHT_LIMIT_VAL 90
# else
# define RGBLIGHT_LIMIT_VAL 45
diff --git a/keyboards/jkeys_design/gentleman65/config.h b/keyboards/jkeys_design/gentleman65/config.h
deleted file mode 100644
index 70ddb0cf5a..0000000000
--- a/keyboards/jkeys_design/gentleman65/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 Omar Afzal
-
-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 RGB_MATRIX_LED_COUNT 14
diff --git a/keyboards/jkeys_design/gentleman65/info.json b/keyboards/jkeys_design/gentleman65/info.json
index bd929c6faa..734916fb40 100644
--- a/keyboards/jkeys_design/gentleman65/info.json
+++ b/keyboards/jkeys_design/gentleman65/info.json
@@ -26,9 +26,6 @@
"ws2812": {
"pin": "F4"
},
- "rgb_matrix": {
- "driver": "ws2812"
- },
"matrix_pins": {
"cols": ["D4", "D6", "D7", "B4", "B5", "B6", "C6", "D5", "C7", "F0", "B2", "B1", "B3", "B0", "B7", "D0"],
"rows": ["D3", "D2", "D1", "F7", "F1"]
diff --git a/keyboards/jkeys_design/gentleman65_se_s/config.h b/keyboards/jkeys_design/gentleman65_se_s/config.h
deleted file mode 100644
index 70ddb0cf5a..0000000000
--- a/keyboards/jkeys_design/gentleman65_se_s/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 Omar Afzal
-
-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 RGB_MATRIX_LED_COUNT 14
diff --git a/keyboards/jkeys_design/gentleman65_se_s/info.json b/keyboards/jkeys_design/gentleman65_se_s/info.json
index 76d6b445dc..b19e5ef9a3 100644
--- a/keyboards/jkeys_design/gentleman65_se_s/info.json
+++ b/keyboards/jkeys_design/gentleman65_se_s/info.json
@@ -26,9 +26,6 @@
"ws2812": {
"pin": "F7"
},
- "rgb_matrix": {
- "driver": "ws2812"
- },
"matrix_pins": {
"cols": ["D5", "D3", "D2", "D1", "D0", "B7", "B2", "B3", "D4", "D6", "D7", "C7", "C6", "B6", "B5", "B4"],
"rows": ["F0", "F1", "F4", "F5", "F6"]
diff --git a/keyboards/jorne/post_config.h b/keyboards/jorne/post_config.h
index 8da923087e..4a4c71517a 100644
--- a/keyboards/jorne/post_config.h
+++ b/keyboards/jorne/post_config.h
@@ -21,9 +21,3 @@
# define RGBLIGHT_LIMIT_VAL 120
# endif
#endif
-
-#ifdef RGB_MATRIX_ENABLE
-# ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-# endif
-#endif
diff --git a/keyboards/hub16/config.h b/keyboards/joshajohnson/hub16/config.h
index 68576635a8..68576635a8 100755
--- a/keyboards/hub16/config.h
+++ b/keyboards/joshajohnson/hub16/config.h
diff --git a/keyboards/hub16/info.json b/keyboards/joshajohnson/hub16/info.json
index 920b42feec..920b42feec 100644
--- a/keyboards/hub16/info.json
+++ b/keyboards/joshajohnson/hub16/info.json
diff --git a/keyboards/hub16/keymaps/default/keymap.c b/keyboards/joshajohnson/hub16/keymaps/default/keymap.c
index efe10d3743..efe10d3743 100755
--- a/keyboards/hub16/keymaps/default/keymap.c
+++ b/keyboards/joshajohnson/hub16/keymaps/default/keymap.c
diff --git a/keyboards/hub16/keymaps/peepeetee/config.h b/keyboards/joshajohnson/hub16/keymaps/peepeetee/config.h
index 62b0df937b..62b0df937b 100644
--- a/keyboards/hub16/keymaps/peepeetee/config.h
+++ b/keyboards/joshajohnson/hub16/keymaps/peepeetee/config.h
diff --git a/keyboards/hub16/keymaps/peepeetee/keymap.c b/keyboards/joshajohnson/hub16/keymaps/peepeetee/keymap.c
index dac88c8482..dac88c8482 100644
--- a/keyboards/hub16/keymaps/peepeetee/keymap.c
+++ b/keyboards/joshajohnson/hub16/keymaps/peepeetee/keymap.c
diff --git a/keyboards/hub16/keymaps/peepeetee/rules.mk b/keyboards/joshajohnson/hub16/keymaps/peepeetee/rules.mk
index f6737b8e4a..f6737b8e4a 100644
--- a/keyboards/hub16/keymaps/peepeetee/rules.mk
+++ b/keyboards/joshajohnson/hub16/keymaps/peepeetee/rules.mk
diff --git a/keyboards/hub16/keymaps/via/keymap.c b/keyboards/joshajohnson/hub16/keymaps/via/keymap.c
index 1f5a4d4b12..1f5a4d4b12 100755
--- a/keyboards/hub16/keymaps/via/keymap.c
+++ b/keyboards/joshajohnson/hub16/keymaps/via/keymap.c
diff --git a/keyboards/kudox/columner/keymaps/via/rules.mk b/keyboards/joshajohnson/hub16/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/kudox/columner/keymaps/via/rules.mk
+++ b/keyboards/joshajohnson/hub16/keymaps/via/rules.mk
diff --git a/keyboards/hub16/matrix.c b/keyboards/joshajohnson/hub16/matrix.c
index 4f32070e66..4f32070e66 100644
--- a/keyboards/hub16/matrix.c
+++ b/keyboards/joshajohnson/hub16/matrix.c
diff --git a/keyboards/joshajohnson/hub16/readme.md b/keyboards/joshajohnson/hub16/readme.md
new file mode 100755
index 0000000000..9735079e24
--- /dev/null
+++ b/keyboards/joshajohnson/hub16/readme.md
@@ -0,0 +1,24 @@
+# Hub16
+
+Hub16 is a 16 Key Macro Pad with an inbuilt USB 2.0 hub and dual rotary encoders.
+
+For more information regarding the keyboard, please visit the [Hub16 Website](https://www.joshajohnson.com/hub16-keyboard/) or [GitHub Repo](https://github.com/joshajohnson/Hub16).
+
+* Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson)
+* Hardware Supported: Hub16 PCB (atmega32u4)
+* Hardware Availability: [Josh Johnson](https://www.joshajohnson.com/hub16-keyboard/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make joshajohnson/hub16:default
+
+Flashing example for this keyboard:
+
+ make joshajohnson/hub16:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Press the reset switch between the center two USB-C ports while the board is plugged in
+* Hold the top left key while connecting the USB cable (also erases persistent settings)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/hub16/rules.mk b/keyboards/joshajohnson/hub16/rules.mk
index 51fa8f6ee6..51fa8f6ee6 100755
--- a/keyboards/hub16/rules.mk
+++ b/keyboards/joshajohnson/hub16/rules.mk
diff --git a/keyboards/hub20/chconf.h b/keyboards/joshajohnson/hub20/chconf.h
index 3ac1345068..3ac1345068 100644
--- a/keyboards/hub20/chconf.h
+++ b/keyboards/joshajohnson/hub20/chconf.h
diff --git a/keyboards/joshajohnson/hub20/config.h b/keyboards/joshajohnson/hub20/config.h
new file mode 100644
index 0000000000..29471149d1
--- /dev/null
+++ b/keyboards/joshajohnson/hub20/config.h
@@ -0,0 +1,24 @@
+/*
+Copyright 2020 joshajohnson
+Copyright 2021 peepeetee
+
+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
diff --git a/keyboards/hub20/halconf.h b/keyboards/joshajohnson/hub20/halconf.h
index 80669d6dc6..80669d6dc6 100644
--- a/keyboards/hub20/halconf.h
+++ b/keyboards/joshajohnson/hub20/halconf.h
diff --git a/keyboards/hub20/hub20.c b/keyboards/joshajohnson/hub20/hub20.c
index 8b1c58e1f7..8b1c58e1f7 100644
--- a/keyboards/hub20/hub20.c
+++ b/keyboards/joshajohnson/hub20/hub20.c
diff --git a/keyboards/joshajohnson/hub20/info.json b/keyboards/joshajohnson/hub20/info.json
new file mode 100644
index 0000000000..b1b25dc1d4
--- /dev/null
+++ b/keyboards/joshajohnson/hub20/info.json
@@ -0,0 +1,147 @@
+{
+ "keyboard_name": "Hub20",
+ "manufacturer": "Josh Johnson",
+ "url": "https://github.com/joshajohnson/hub20",
+ "maintainer": "joshajohnson",
+ "usb": {
+ "vid": "0x6A6A",
+ "pid": "0x4414",
+ "device_version": "0.0.1"
+ },
+ "rgb_matrix": {
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_left_right": true,
+ "cycle_up_down": 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
+ },
+ "driver": "ws2812"
+ },
+ "matrix_pins": {
+ "cols": ["A6", "A7", "B7", "B6"],
+ "rows": ["A13", "B14", "A10", "A0", "A2", "A1"]
+ },
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "B12", "pin_b": "B13"},
+ {"pin_a": "A8", "pin_b": "A9"}
+ ]
+ },
+ "qmk": {
+ "tap_keycode_delay": 10
+ },
+ "rgblight": {
+ "led_count": 27
+ },
+ "ws2812": {
+ "pin": "B15"
+ },
+ "processor": "STM32F072",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"matrix": [0, 1], "x": 0.5, "y": 0},
+
+ {"matrix": [0, 2], "x": 2.5, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2, "y": 4},
+ {"matrix": [4, 3], "x": 3, "y": 4},
+
+ {"matrix": [5, 0], "x": 0, "y": 5},
+ {"matrix": [5, 1], "x": 1, "y": 5},
+ {"matrix": [5, 2], "x": 2, "y": 5},
+ {"matrix": [5, 3], "x": 3, "y": 5}
+ ]
+ },
+ "LAYOUT_left_handed": {
+ "layout": [
+ {"matrix": [0, 1], "x": 0.5, "y": 0},
+
+ {"matrix": [0, 2], "x": 2.5, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "h": 2},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+
+ {"matrix": [4, 1], "x": 0, "y": 4, "h": 2},
+ {"matrix": [4, 2], "x": 1, "y": 4},
+ {"matrix": [4, 3], "x": 2, "y": 4},
+ {"matrix": [4, 0], "x": 3, "y": 4},
+
+ {"matrix": [5, 1], "x": 1, "y": 5},
+ {"matrix": [5, 2], "x": 2, "y": 5, "w": 2}
+ ]
+ },
+ "LAYOUT_right_handed": {
+ "layout": [
+ {"matrix": [0, 1], "x": 0.5, "y": 0},
+
+ {"matrix": [0, 2], "x": 2.5, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [2, 3], "x": 3, "y": 2, "h": 2},
+
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2, "y": 4},
+
+ {"matrix": [5, 0], "x": 0, "y": 5, "w": 2},
+ {"matrix": [5, 2], "x": 2, "y": 5},
+ {"matrix": [4, 3], "x": 3, "y": 4, "h": 2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/hub20/keymaps/default/keymap.c b/keyboards/joshajohnson/hub20/keymaps/default/keymap.c
index e943780258..e943780258 100644
--- a/keyboards/hub20/keymaps/default/keymap.c
+++ b/keyboards/joshajohnson/hub20/keymaps/default/keymap.c
diff --git a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c b/keyboards/joshajohnson/hub20/keymaps/left_hand_numpad/keymap.c
index fe848d7c33..fe848d7c33 100644
--- a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c
+++ b/keyboards/joshajohnson/hub20/keymaps/left_hand_numpad/keymap.c
diff --git a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c b/keyboards/joshajohnson/hub20/keymaps/right_hand_numpad/keymap.c
index 71168069fb..71168069fb 100644
--- a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c
+++ b/keyboards/joshajohnson/hub20/keymaps/right_hand_numpad/keymap.c
diff --git a/keyboards/hub20/keymaps/via/keymap.c b/keyboards/joshajohnson/hub20/keymaps/via/keymap.c
index b8d7e6fdc8..b8d7e6fdc8 100644
--- a/keyboards/hub20/keymaps/via/keymap.c
+++ b/keyboards/joshajohnson/hub20/keymaps/via/keymap.c
diff --git a/keyboards/kudox/rev3/keymaps/via/rules.mk b/keyboards/joshajohnson/hub20/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/kudox/rev3/keymaps/via/rules.mk
+++ b/keyboards/joshajohnson/hub20/keymaps/via/rules.mk
diff --git a/keyboards/hub20/mcuconf.h b/keyboards/joshajohnson/hub20/mcuconf.h
index f783c39b1d..f783c39b1d 100644
--- a/keyboards/hub20/mcuconf.h
+++ b/keyboards/joshajohnson/hub20/mcuconf.h
diff --git a/keyboards/joshajohnson/hub20/readme.md b/keyboards/joshajohnson/hub20/readme.md
new file mode 100755
index 0000000000..a3b5aba641
--- /dev/null
+++ b/keyboards/joshajohnson/hub20/readme.md
@@ -0,0 +1,24 @@
+# Hub20
+
+Hub20 is a 20 key macro pad with an inbuilt USB 2.0 hub and dual rotary encoders. It can be configured to be a left / right hand numberpad, along with a 4x5 1u layout.
+
+For more information regarding the keyboard, please visit the [Hub20 Website](https://www.joshajohnson.com/hub20) or [GitHub Repo](https://github.com/joshajohnson/Hub20).
+
+* Keyboard Maintainer: [Josh Johnson](https://github.com/joshajohnson)
+* Hardware Supported: Hub20 PCB (STM32F072)
+* Hardware Availability: [Josh Johnson](https://www.joshajohnson.com/hub20)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make joshajohnson/hub20:default
+
+Flashing example for this keyboard:
+
+ make joshajohnson/hub20:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Press the reset switch between the center two USB-C ports while the board is plugged in
+* Hold the top left key while connecting the USB cable (also erases persistent settings)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/hub20/rules.mk b/keyboards/joshajohnson/hub20/rules.mk
index f559246b9e..f559246b9e 100644
--- a/keyboards/hub20/rules.mk
+++ b/keyboards/joshajohnson/hub20/rules.mk
diff --git a/keyboards/jukaie/jk01/config.h b/keyboards/jukaie/jk01/config.h
index 62c709a917..6dcf2d5240 100644
--- a/keyboards/jukaie/jk01/config.h
+++ b/keyboards/jukaie/jk01/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
@@ -32,11 +30,7 @@
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
-#define DRIVER_1_CS A15
-#define DRIVER_2_CS B15
-#define DRIVER_1_EN C13
-#define DRIVER_2_EN C13
-
-#define DRIVER_1_LED_TOTAL 66
-#define DRIVER_2_LED_TOTAL 19
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define AW20216S_CS_PIN_1 A15
+#define AW20216S_CS_PIN_2 B15
+#define AW20216S_EN_PIN_1 C13
+#define AW20216S_EN_PIN_2 C13
diff --git a/keyboards/jukaie/jk01/info.json b/keyboards/jukaie/jk01/info.json
index c53a59a5a3..c713fe2749 100644
--- a/keyboards/jukaie/jk01/info.json
+++ b/keyboards/jukaie/jk01/info.json
@@ -87,7 +87,7 @@
"solid_multisplash": true
},
"center_point": [76, 25],
- "driver": "aw20216",
+ "driver": "aw20216s",
"layout": [
{ "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 },
@@ -174,7 +174,8 @@
{ "flags": 4, "matrix": [0, 5], "x": 150, "y": 50 },
{ "flags": 4, "matrix": [11, 0], "x": 0, "y": 1 },
{ "flags": 4, "matrix": [11, 1], "x": 0, "y": 2 }
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/jukaie/jk01/jk01.c b/keyboards/jukaie/jk01/jk01.c
index 8f69419476..96db3b804e 100644
--- a/keyboards/jukaie/jk01/jk01.c
+++ b/keyboards/jukaie/jk01/jk01.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/junco/info.json b/keyboards/junco/info.json
index 4c9b3ae6ba..6956ab4834 100644
--- a/keyboards/junco/info.json
+++ b/keyboards/junco/info.json
@@ -18,7 +18,8 @@
"driver": "vendor"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "split_count": [37, 37]
},
"encoder": {
"rotary": [
diff --git a/keyboards/junco/keymaps/default/config.h b/keyboards/junco/keymaps/default/config.h
index 43c47b9122..8a1acc5fd3 100644
--- a/keyboards/junco/keymaps/default/config.h
+++ b/keyboards/junco/keymaps/default/config.h
@@ -23,7 +23,7 @@
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON
// Turns off RGB effects when there is no longer a USB connection
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
// Key press reactive animations
# define SPLIT_TRANSPORT_MIRROR // Necessary setting for key press animations
diff --git a/keyboards/junco/keymaps/deluxe/config.h b/keyboards/junco/keymaps/deluxe/config.h
index bec55fbd4c..db185a4849 100644
--- a/keyboards/junco/keymaps/deluxe/config.h
+++ b/keyboards/junco/keymaps/deluxe/config.h
@@ -39,7 +39,7 @@
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON
// Turns off RGB effects when there is no longer a USB connection
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
// Throttling of RGB to increase keyboard responsiveness, set to 1.5x the default limits
# define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 6 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
diff --git a/keyboards/junco/keymaps/via/config.h b/keyboards/junco/keymaps/via/config.h
index c4ce821594..897313cd66 100644
--- a/keyboards/junco/keymaps/via/config.h
+++ b/keyboards/junco/keymaps/via/config.h
@@ -26,7 +26,7 @@
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON
// Turns off RGB effects when there is no longer a USB connection
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
// Allow keypress reactive animations
# define SPLIT_TRANSPORT_MIRROR // Necessary setting for key press animations on a split
diff --git a/keyboards/junco/rev1/config.h b/keyboards/junco/rev1/config.h
index 713d651d47..17d9e33be0 100644
--- a/keyboards/junco/rev1/config.h
+++ b/keyboards/junco/rev1/config.h
@@ -8,12 +8,3 @@
#define SERIAL_USART_FULL_DUPLEX // Use full duplex communication (TRRS)
#define SERIAL_USART_TX_PIN GP0 // USART TX pin
#define SERIAL_USART_RX_PIN GP1 // USART RX pin
-
-/* RGB Stuff */
-#ifdef RGB_MATRIX_ENABLE
-
-# define RGB_MATRIX_LED_COUNT 74
-# define RGB_MATRIX_SPLIT \
- { 37, 37 } // 37 LEDs on each side
-
-#endif
diff --git a/keyboards/kabedon/kabedon98e/config.h b/keyboards/kabedon/kabedon98e/config.h
index 64013a3a7f..514a1121b3 100644
--- a/keyboards/kabedon/kabedon98e/config.h
+++ b/keyboards/kabedon/kabedon98e/config.h
@@ -24,5 +24,3 @@
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/kabedon/kabedon98e/info.json b/keyboards/kabedon/kabedon98e/info.json
index 42f0796a53..6f99aa6c30 100644
--- a/keyboards/kabedon/kabedon98e/info.json
+++ b/keyboards/kabedon/kabedon98e/info.json
@@ -33,6 +33,9 @@
"rows": ["A4", "B10", "B2", "B1", "B0", "B15", "B13", "B14", "B12", "A10", "A9", "A8"]
},
"diode_direction": "ROW2COL",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"encoder": {
"rotary": [
{"pin_a": "B3", "pin_b": "B5"},
diff --git a/keyboards/kagizaraya/chidori/board.c b/keyboards/kagizaraya/chidori/board.c
index e00156eb90..34e57a8874 100644
--- a/keyboards/kagizaraya/chidori/board.c
+++ b/keyboards/kagizaraya/chidori/board.c
@@ -69,8 +69,8 @@ static void board_set_slave_led(board_info_t* board, uint8_t led_index, bool sta
board->led_status[led_index] = status;
uint8_t iodir = board_merge_led_config(board, 0xff);
uint8_t data = board_merge_led_status(board, 0x00);
- i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
- i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&data, sizeof(data), BOARD_I2C_TIMEOUT);
+ i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
+ i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&data, sizeof(data), BOARD_I2C_TIMEOUT);
}
static uint8_t board_merge_led_config(board_info_t* board, uint8_t iodir) {
@@ -86,30 +86,30 @@ static bool board_slave_config(board_info_t* board) {
i2c_status_t res = 0;
// Set to input
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRA, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRA, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
// RESTRICTION: LEDs only on PORT B.
set = board_merge_led_config(board, set);
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
set = 0xff;
// Pull up for input - enable
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPPUA, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPPUA, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPPUB, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPPUB, (const uint8_t*)&set, sizeof(set), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
// Disable interrupt
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPINTENA, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPINTENA, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPINTENB, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPINTENB, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
// Polarity - same logic
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IPOLA, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IPOLA, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
- res = i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IPOLB, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
+ res = i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IPOLB, (const uint8_t*)&clear, sizeof(clear), BOARD_I2C_TIMEOUT);
if (res < 0) return false;
return true;
@@ -124,10 +124,9 @@ static void board_slave_init(void) {
if (board_is_master(board)) {
continue;
}
- if (i2c_start(EXPANDER_ADDR(board->i2c_address), BOARD_I2C_TIMEOUT) != I2C_STATUS_SUCCESS) {
+ if (i2c_ping_address(EXPANDER_ADDR(board->i2c_address), BOARD_I2C_TIMEOUT) != I2C_STATUS_SUCCESS) {
continue;
}
- i2c_stop();
if (board_slave_config(board)) {
board->initialized = true;
}
@@ -203,7 +202,7 @@ static uint8_t board_read_slave_cols(board_info_t* board) {
return 0xff;
}
uint8_t data = 0xff;
- i2c_status_t res = i2c_readReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPIOA, &data, sizeof(data), BOARD_I2C_TIMEOUT);
+ i2c_status_t res = i2c_read_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_GPIOA, &data, sizeof(data), BOARD_I2C_TIMEOUT);
return (res < 0) ? 0xff : data;
}
@@ -214,8 +213,8 @@ static void board_select_slave_row(board_info_t* board, uint8_t board_row) {
uint8_t pin = board->row_pins[board_row];
uint8_t iodir = board_merge_led_config(board, PIN2MASK(pin));
uint8_t status = board_merge_led_status(board, PIN2MASK(pin));
- i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
- i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&status, sizeof(status), BOARD_I2C_TIMEOUT);
+ i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
+ i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&status, sizeof(status), BOARD_I2C_TIMEOUT);
}
static void board_unselect_slave_rows(board_info_t* board) {
@@ -224,8 +223,8 @@ static void board_unselect_slave_rows(board_info_t* board) {
}
uint8_t iodir = board_merge_led_config(board, 0xff);
uint8_t data = board_merge_led_status(board, 0x00);
- i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
- i2c_writeReg(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&data, sizeof(data), BOARD_I2C_TIMEOUT);
+ i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_IODIRB, (const uint8_t*)&iodir, sizeof(iodir), BOARD_I2C_TIMEOUT);
+ i2c_write_register(EXPANDER_ADDR(board->i2c_address), EXPANDER_OLATB, (const uint8_t*)&data, sizeof(data), BOARD_I2C_TIMEOUT);
}
static void board_unselect_slave_row(board_info_t* board, uint8_t board_row) { board_unselect_slave_rows(board); }
diff --git a/keyboards/miniaxe/config.h b/keyboards/kagizaraya/miniaxe/config.h
index 716fdf387a..716fdf387a 100644
--- a/keyboards/miniaxe/config.h
+++ b/keyboards/kagizaraya/miniaxe/config.h
diff --git a/keyboards/miniaxe/info.json b/keyboards/kagizaraya/miniaxe/info.json
index 9b7f3104a0..9b7f3104a0 100644
--- a/keyboards/miniaxe/info.json
+++ b/keyboards/kagizaraya/miniaxe/info.json
diff --git a/keyboards/miniaxe/keymaps/default/keymap.c b/keyboards/kagizaraya/miniaxe/keymaps/default/keymap.c
index 81f8004e69..81f8004e69 100644
--- a/keyboards/miniaxe/keymaps/default/keymap.c
+++ b/keyboards/kagizaraya/miniaxe/keymaps/default/keymap.c
diff --git a/keyboards/miniaxe/keymaps/underglow/keymap.c b/keyboards/kagizaraya/miniaxe/keymaps/underglow/keymap.c
index 8b4417f62d..8b4417f62d 100644
--- a/keyboards/miniaxe/keymaps/underglow/keymap.c
+++ b/keyboards/kagizaraya/miniaxe/keymaps/underglow/keymap.c
diff --git a/keyboards/kudox_game/rev2/rules.mk b/keyboards/kagizaraya/miniaxe/keymaps/underglow/rules.mk
index 1e3cebb145..1e3cebb145 100644
--- a/keyboards/kudox_game/rev2/rules.mk
+++ b/keyboards/kagizaraya/miniaxe/keymaps/underglow/rules.mk
diff --git a/keyboards/kagizaraya/miniaxe/readme.md b/keyboards/kagizaraya/miniaxe/readme.md
new file mode 100644
index 0000000000..bf2a4b0e98
--- /dev/null
+++ b/keyboards/kagizaraya/miniaxe/readme.md
@@ -0,0 +1,16 @@
+MiniAxe
+===
+
+![MiniAxe](https://i.imgur.com/1ApzrCz.jpg)
+
+Yet another split ortholinear keyboard with 3x5+3 keys.
+
+Keyboard Maintainer: [ka2hiro](https://github.com/ka2hiro) [@ka2hiro](https://twitter.com/ka2hiro)
+Hardware Supported: MiniAxe PCB, ATMEGA32U4
+Hardware Availability: [@ka2hiro](https://twitter.com/ka2hiro)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kagizaraya/miniaxe:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/miniaxe/rules.mk b/keyboards/kagizaraya/miniaxe/rules.mk
index ee687e87af..ee687e87af 100644
--- a/keyboards/miniaxe/rules.mk
+++ b/keyboards/kagizaraya/miniaxe/rules.mk
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/kapcave/arya/config.h b/keyboards/kapcave/arya/config.h
index 9422076315..6cd3657227 100644
--- a/keyboards/kapcave/arya/config.h
+++ b/keyboards/kapcave/arya/config.h
@@ -22,8 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/kapcave/gskt00/keymaps/default-poly/config.h b/keyboards/kapcave/gskt00/keymaps/default-poly/config.h
index 64135cabcd..40a7c6ec47 100644
--- a/keyboards/kapcave/gskt00/keymaps/default-poly/config.h
+++ b/keyboards/kapcave/gskt00/keymaps/default-poly/config.h
@@ -30,7 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
+#define RGBLIGHT_LED_COUNT 14
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 12
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/karn/info.json b/keyboards/karn/info.json
index c15801da35..b088f61425 100644
--- a/keyboards/karn/info.json
+++ b/keyboards/karn/info.json
@@ -23,52 +23,54 @@
"split": {
"enabled": true
},
- "community_layouts": ["split_3x6_3"],
"layouts": {
- "LAYOUT_split_3x6_3": {
+ "LAYOUT": {
"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": [4, 0], "x": 8, "y": 0},
- {"matrix": [4, 1], "x": 9, "y": 0},
- {"matrix": [4, 2], "x": 10, "y": 0},
- {"matrix": [4, 3], "x": 11, "y": 0},
- {"matrix": [4, 4], "x": 12, "y": 0},
- {"matrix": [4, 5], "x": 13, "y": 0},
- {"matrix": [1, 0], "x": 0, "y": 1},
+
+ {"matrix": [4, 0], "x": 9, "y": 0},
+ {"matrix": [4, 1], "x": 10, "y": 0},
+ {"matrix": [4, 2], "x": 11, "y": 0},
+ {"matrix": [4, 3], "x": 12, "y": 0},
+ {"matrix": [4, 4], "x": 13, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 0.75, "h": 1.5},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1},
{"matrix": [1, 5], "x": 5, "y": 1},
- {"matrix": [5, 0], "x": 8, "y": 1},
- {"matrix": [5, 1], "x": 9, "y": 1},
- {"matrix": [5, 2], "x": 10, "y": 1},
- {"matrix": [5, 3], "x": 11, "y": 1},
- {"matrix": [5, 4], "x": 12, "y": 1},
- {"matrix": [5, 5], "x": 13, "y": 1},
- {"matrix": [2, 0], "x": 0, "y": 2},
+
+ {"matrix": [5, 0], "x": 9, "y": 1},
+ {"matrix": [5, 1], "x": 10, "y": 1},
+ {"matrix": [5, 2], "x": 11, "y": 1},
+ {"matrix": [5, 3], "x": 12, "y": 1},
+ {"matrix": [5, 4], "x": 13, "y": 1},
+ {"matrix": [5, 5], "x": 14, "y": 0.75, "h": 1.5},
+
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2},
{"matrix": [2, 5], "x": 5, "y": 2},
- {"matrix": [6, 0], "x": 8, "y": 2},
- {"matrix": [6, 1], "x": 9, "y": 2},
- {"matrix": [6, 2], "x": 10, "y": 2},
- {"matrix": [6, 3], "x": 11, "y": 2},
- {"matrix": [6, 4], "x": 12, "y": 2},
- {"matrix": [6, 5], "x": 13, "y": 2},
- {"matrix": [3, 0], "x": 3.5, "y": 3.25},
- {"matrix": [3, 1], "x": 4.5, "y": 3.5},
- {"matrix": [3, 2], "x": 5.5, "y": 3.75},
- {"matrix": [7, 0], "x": 7.5, "y": 3.75},
- {"matrix": [7, 1], "x": 8.5, "y": 3.5},
- {"matrix": [7, 2], "x": 9.5, "y": 3.25}
+
+ {"matrix": [6, 0], "x": 9, "y": 2},
+ {"matrix": [6, 1], "x": 10, "y": 2},
+ {"matrix": [6, 2], "x": 11, "y": 2},
+ {"matrix": [6, 3], "x": 12, "y": 2},
+ {"matrix": [6, 4], "x": 13, "y": 2},
+
+ {"matrix": [3, 0], "x": 4, "y": 3, "h": 1.5},
+ {"matrix": [3, 1], "x": 5, "y": 3.25, "h": 1.5},
+ {"matrix": [3, 2], "x": 6, "y": 3.5, "h": 1.5},
+
+ {"matrix": [7, 0], "x": 8, "y": 3.5, "h": 1.5},
+ {"matrix": [7, 1], "x": 9, "y": 3.25, "h": 1.5},
+ {"matrix": [7, 2], "x": 10, "y": 3, "h": 1.5}
]
}
}
diff --git a/keyboards/karn/keymaps/colemak/keymap.c b/keyboards/karn/keymaps/colemak/keymap.c
index 585798e8a1..13f23170e1 100644
--- a/keyboards/karn/keymaps/colemak/keymap.c
+++ b/keyboards/karn/keymaps/colemak/keymap.c
@@ -31,34 +31,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// default (colemak)
- [0] = LAYOUT_split_3x6_3(
- KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_NO,
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
HYPR_T(KC_TAB),KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, HYPR_T(KC_ENT),
- KC_NO, SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_K, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO,
+ SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_K, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),
MO(1), SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2)
),
// symbols
- [1] = LAYOUT_split_3x6_3(
- _______, KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ [1] = LAYOUT(
+ KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_DEL, _______, _______
),
// nav
- [2] = LAYOUT_split_3x6_3(
- _______, _______, KC_Q, _______, _______, KC_VOLU, _______, _______, _______, KC_SCLN, _______, _______,
+ [2] = LAYOUT(
+ _______, KC_Q, _______, _______, KC_VOLU, _______, _______, _______, KC_SCLN, _______,
_______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, _______,
- _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
// numbers
- [3] = LAYOUT_split_3x6_3(
- _______, TD(TD_F1_F11), TD(TD_F2_F12), KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ [3] = LAYOUT(
+ TD(TD_F1_F11), TD(TD_F2_F12), KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/karn/keymaps/default/keymap.c b/keyboards/karn/keymaps/default/keymap.c
index 5f679552d9..b39fe99d5d 100644
--- a/keyboards/karn/keymaps/default/keymap.c
+++ b/keyboards/karn/keymaps/default/keymap.c
@@ -7,34 +7,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// default (qwerty)
- [0] = LAYOUT_split_3x6_3(
- KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
- HYPR_T(KC_TAB),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, HYPR_T(KC_ENT),
- KC_NO, SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_N, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO,
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ HYPR_T(KC_TAB),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, HYPR_T(KC_ENT),
+ SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_N, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),
MO(1), SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2)
),
// symbols
- [1] = LAYOUT_split_3x6_3(
- _______, KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ [1] = LAYOUT(
+ KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_DEL, _______, _______
),
// nav
- [2] = LAYOUT_split_3x6_3(
- _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______,
+ [2] = LAYOUT(
+ _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______,
_______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, _______,
- _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
// numbers
- [3] = LAYOUT_split_3x6_3(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ [3] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kb_elmo/aek2_usb/config.h b/keyboards/kb_elmo/aek2_usb/config.h
index 92630de5b4..085db9791c 100644
--- a/keyboards/kb_elmo/aek2_usb/config.h
+++ b/keyboards/kb_elmo/aek2_usb/config.h
@@ -22,6 +22,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/* reduce EEPROM usage */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
#define LAYER_STATE_8BIT
diff --git a/keyboards/kb_elmo/aek2_usb/info.json b/keyboards/kb_elmo/aek2_usb/info.json
index 693f452f20..8a091a494c 100644
--- a/keyboards/kb_elmo/aek2_usb/info.json
+++ b/keyboards/kb_elmo/aek2_usb/info.json
@@ -13,6 +13,9 @@
"rows": ["D5", "C1", "C4", "D0", "C3", "C2", "B3", "B4"]
},
"diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "B1",
"num_lock": "B2",
diff --git a/keyboards/kbdcraft/adam64/adam64.c b/keyboards/kbdcraft/adam64/adam64.c
index b0712aec39..3f1565c2f3 100644
--- a/keyboards/kbdcraft/adam64/adam64.c
+++ b/keyboards/kbdcraft/adam64/adam64.c
@@ -19,7 +19,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/kbdcraft/adam64/config.h b/keyboards/kbdcraft/adam64/config.h
index 511eb7f8ab..b5652d9079 100644
--- a/keyboards/kbdcraft/adam64/config.h
+++ b/keyboards/kbdcraft/adam64/config.h
@@ -27,7 +27,7 @@
#define RGB_MATRIX_LED_COUNT 64
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES \ No newline at end of file
diff --git a/keyboards/kbdfans/baguette66/rgb/config.h b/keyboards/kbdfans/baguette66/rgb/config.h
index c989f1b121..2a65b1872d 100644
--- a/keyboards/kbdfans/baguette66/rgb/config.h
+++ b/keyboards/kbdfans/baguette66/rgb/config.h
@@ -47,7 +47,7 @@
#define ENABLE_RGB_MATRIX_PIXEL_FLOW
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspendedz
+#define RGB_MATRIX_SLEEP // turn off effects when suspendedz
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
diff --git a/keyboards/kbdfans/bella/rgb/config.h b/keyboards/kbdfans/bella/rgb/config.h
index 754f4e1eb8..6e726eaae0 100644
--- a/keyboards/kbdfans/bella/rgb/config.h
+++ b/keyboards/kbdfans/bella/rgb/config.h
@@ -16,7 +16,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
@@ -75,4 +75,3 @@
#define RGB_MATRIX_LED_COUNT 108
#define DRIVER_INDICATOR_LED_TOTAL 0
#endif
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/kbdfans/bella/rgb/rgb.c b/keyboards/kbdfans/bella/rgb/rgb.c
index 8bdc1d8fdf..c666f9198f 100644
--- a/keyboards/kbdfans/bella/rgb/rgb.c
+++ b/keyboards/kbdfans/bella/rgb/rgb.c
@@ -15,7 +15,7 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB6 */
{0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB32 */
{0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB45 */
diff --git a/keyboards/kbdfans/bella/rgb_iso/config.h b/keyboards/kbdfans/bella/rgb_iso/config.h
index 48284a5160..b53c1f9187 100644
--- a/keyboards/kbdfans/bella/rgb_iso/config.h
+++ b/keyboards/kbdfans/bella/rgb_iso/config.h
@@ -16,7 +16,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
@@ -75,4 +75,3 @@
#define RGB_MATRIX_LED_COUNT 109
#define DRIVER_INDICATOR_LED_TOTAL 0
#endif
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c b/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c
index e36b811bbc..b4fc00765f 100644
--- a/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c
+++ b/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c
@@ -15,7 +15,7 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB6 */
{0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB32 */
{0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB45 */
diff --git a/keyboards/kbdfans/boop65/rgb/config.h b/keyboards/kbdfans/boop65/rgb/config.h
index e37e2d1763..10b0ee7fab 100644
--- a/keyboards/kbdfans/boop65/rgb/config.h
+++ b/keyboards/kbdfans/boop65/rgb/config.h
@@ -19,7 +19,7 @@
#define USB_SUSPEND_WAKEUP_DELAY 5000
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
diff --git a/keyboards/kbdfans/boop65/rgb/rgb.c b/keyboards/kbdfans/boop65/rgb/rgb.c
index f2b5858966..b8145382c7 100644
--- a/keyboards/kbdfans/boop65/rgb/rgb.c
+++ b/keyboards/kbdfans/boop65/rgb/rgb.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS21_SW1, CS20_SW1, CS19_SW1},
{0, CS21_SW2, CS20_SW2, CS19_SW2},
{0, CS21_SW3, CS20_SW3, CS19_SW3},
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
index dcc998f035..a1ba1fd43e 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
@@ -23,7 +23,7 @@
#define FORCE_NKRO
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# undef RGB_MATRIX_TIMEOUT
# define RGB_MATRIX_TIMEOUT 900000
#endif
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
index 51b88510e5..5550fa67c8 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
@@ -2,7 +2,7 @@
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c b/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c
index c70622dd56..210be85d3f 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C8_8, C7_8, C6_8}, // LA17
{0, C9_8, C7_7, C6_7}, // LA16
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
index bba655107d..d1f371f077 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
@@ -3,7 +3,7 @@
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
// RGB Matrix Animation modes. Explicitly enabled
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c b/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c
index 7de8060d7a..50958017a2 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C8_8, C7_8, C6_8}, // LA17
{0, C9_8, C7_7, C6_7}, // LA16
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
index 8dd12678ee..528a721c0c 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
@@ -17,7 +17,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define USB_SUSPEND_WAKEUP_DELAY 5000
#define RGB_MATRIX_KEYPRESSES
// RGB Matrix Animation modes. Explicitly enabled
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c
index 7347a365bc..5910d0cf7b 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS21_SW1, CS20_SW1, CS19_SW1},
{0, CS21_SW2, CS20_SW2, CS19_SW2},
{0, CS21_SW3, CS20_SW3, CS19_SW3},
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
index 10f0bc0ec2..7799b7b2fa 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
@@ -22,7 +22,7 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
index 10f0bc0ec2..7799b7b2fa 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
@@ -22,7 +22,7 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
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/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/kbd75rgb/config.h b/keyboards/kbdfans/kbd75rgb/config.h
index a8b20051ec..1fdc1349ed 100644
--- a/keyboards/kbdfans/kbd75rgb/config.h
+++ b/keyboards/kbdfans/kbd75rgb/config.h
@@ -47,7 +47,7 @@
#define ENABLE_RGB_MATRIX_PIXEL_FLOW
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspendedz
+#define RGB_MATRIX_SLEEP // turn off effects when suspendedz
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
diff --git a/keyboards/kbdfans/kbdmini/config.h b/keyboards/kbdfans/kbdmini/config.h
index be985880d0..dfa3052ba7 100644
--- a/keyboards/kbdfans/kbdmini/config.h
+++ b/keyboards/kbdfans/kbdmini/config.h
@@ -1,7 +1,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// RGB Matrix Animation modes. Explicitly enabled
diff --git a/keyboards/kbdfans/kbdmini/kbdmini.c b/keyboards/kbdfans/kbdmini/kbdmini.c
index d46283b973..31b2e1a256 100644
--- a/keyboards/kbdfans/kbdmini/kbdmini.c
+++ b/keyboards/kbdfans/kbdmini/kbdmini.c
@@ -1,6 +1,6 @@
#include "quantum.h"
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, B_9, A_9, C_9 }, //LA33
{ 0, B_10, A_10, C_10 }, //LA37
{ 0, B_11, A_11, C_11 }, //LA41
diff --git a/keyboards/kbdfans/kbdpad/mk3/config.h b/keyboards/kbdfans/kbdpad/mk3/config.h
index 16eb12d1f5..453e6f8be3 100644
--- a/keyboards/kbdfans/kbdpad/mk3/config.h
+++ b/keyboards/kbdfans/kbdpad/mk3/config.h
@@ -17,7 +17,7 @@
#pragma once
#define RGB_MATRIX_LED_COUNT 21
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_LED_FLUSH_LIMIT 16
#define RGB_MATRIX_KEYPRESSES
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
diff --git a/keyboards/kbdfans/maja/config.h b/keyboards/kbdfans/maja/config.h
index e07c5adf93..2275a3144f 100755
--- a/keyboards/kbdfans/maja/config.h
+++ b/keyboards/kbdfans/maja/config.h
@@ -2,7 +2,7 @@
#define RGB_MATRIX_LED_PROCESS_LIMIT 4
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
diff --git a/keyboards/kbdfans/maja/maja.c b/keyboards/kbdfans/maja/maja.c
index d30d327113..cc073930bc 100755
--- a/keyboards/kbdfans/maja/maja.c
+++ b/keyboards/kbdfans/maja/maja.c
@@ -1,6 +1,6 @@
#include "quantum.h"
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C2_1, C3_1, C4_1}, // LA0
{0, C1_1, C3_2, C4_2}, // LA1
{0, C1_2, C2_2, C4_3}, // LA2
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/kbdfans/niu_mini/keymaps/tucznak/config.h b/keyboards/kbdfans/niu_mini/keymaps/tucznak/config.h
deleted file mode 100644
index 437907759d..0000000000
--- a/keyboards/kbdfans/niu_mini/keymaps/tucznak/config.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#undef MANUFACTURER
-#undef PRODUCT
-
-#define MANUFACTURER "Potato Inc."
-#define PRODUCT "Qt3.14"
-
-/* turn off RGB when computer sleeps */
-#define RGBLIGHT_SLEEP
-
-/* send tap key if no layer key was used even after tap delay */
-#define TAPPING_TERM 50
-#define RETRO_TAPPING \ No newline at end of file
diff --git a/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c
deleted file mode 100644
index e4f2eb44cf..0000000000
--- a/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include QMK_KEYBOARD_H
-
-enum layers {
- _BASE,
- _LOWER,
- _RAISE,
- _NUM,
- _FN
-};
-
-enum keycodes {
- QWERTY = SAFE_RANGE,
- DYNAMIC_MACRO_RANGE,
-};
-
-#include "dynamic_macro.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Base layer (0)
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |Esc/Fn| A | S | D | F | G | H | J | K | L | ; | Del |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Ctrl | GUI | Alt | \| |Lower |Sp/Num|Space |Raise |AltGr | Left | Down |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_BASE] = LAYOUT_ortho_4x12(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
- LT(_FN, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_DEL,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_NUBS, MO(_LOWER), LT(_NUM, KC_SPC), KC_SPC, MO(_RAISE), KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-
- /* Lower layer (1)
- * Function keys, navigation
- * ,-----------------------------------------------------------------------------------.
- * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | | | | | | | | | | Ins |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | |CapsLk| |PrtSc |ScrLk |Pause | | | | | PgUp | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | Menu | Home | PgDn | End |
- * `-----------------------------------------------------------------------------------'
- */
- [_LOWER] = LAYOUT_ortho_4x12(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
- _______, KC_CAPS, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, KC_PGUP, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, KC_APP, KC_HOME, KC_PGDN, KC_END
- ),
-
- /* Raise layer (2)
- * National characters, special characters
- * ,-----------------------------------------------------------------------------------.
- * | +1 | Ä›2 | Å¡3 | Ä4 | Å™5 | ž6 | ý7 | á8 | í9 | é0 | ´ | ˇ |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | ;° | | | | | | ( | ) | § | ! | ú | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | % | = | ¨ | ' | - | _ |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
- [_RAISE] = LAYOUT_ortho_4x12(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, LSFT(KC_EQL),
- KC_GRV, _______, _______, _______, _______, _______, LSFT(KC_RBRC), KC_RBRC, KC_QUOT, LSFT(KC_QUOT), KC_LBRC, LSFT(KC_LBRC),
- _______, _______, _______, _______, _______, _______, LSFT(KC_MINS), KC_MINS, KC_BSLS, LSFT(KC_BSLS), KC_SLSH, LSFT(KC_SLSH),
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
- /* Numbers layer - numpad (3)
- * ,-----------------------------------------------------------------------------------.
- * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | | | | | | 4 | 5 | 6 | / | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | |NumLk | | | | | | 1 | 2 | 3 | * | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | . | 0 | + | - | |
- * `-----------------------------------------------------------------------------------'
- */
- [_NUM] = LAYOUT_ortho_4x12(
- _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, _______,
- _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PSLS, _______,
- _______, KC_NUM, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PAST, _______,
- _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_KP_0, KC_PPLS, KC_PMNS, _______
- ),
-
- /* Function layer (4)
- * Backlighting, keyboard controls, etc.
- * m_ - music, r_ - RGB + backlight, f_ - macro
- * ,-----------------------------------------------------------------------------------.
- * | | r_BL | |Sleep | | | |f_Rec1|f_Pla1|f_Stop| |m_Vol+|
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | |r_VLK |r_Mod+|r_Hue+|r_Sat+|r_Bri+| |f_Rec2|f_Pla2| | |m_Vol-|
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | |r_TOG |r_Mod-|r_Hue-|r_Sat-|r_Bri-| | | | |m_Stop|m_Mute|
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Reset| | | | |C+A+D |C+A+I | | |m_Prev|m_Paus|m_Next|
- * `-----------------------------------------------------------------------------------'
- */
- [_FN] = LAYOUT_ortho_4x12(
- _______, BL_STEP, _______, KC_SLEP, _______, _______, _______, DM_REC1, DM_PLY1, DM_RSTP, _______, KC_VOLU,
- _______, VK_TOGG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, DM_REC2, DM_PLY2, _______, _______, KC_VOLD,
- _______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, KC_MSTP, KC_MUTE,
- QK_BOOT, _______, _______, _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
- )
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_dynamic_macro(keycode, record)) {
- return false;
- }
- return true;
-}
diff --git a/keyboards/kbdfans/niu_mini/keymaps/tucznak/readme.md b/keyboards/kbdfans/niu_mini/keymaps/tucznak/readme.md
deleted file mode 100644
index 95180bc392..0000000000
--- a/keyboards/kbdfans/niu_mini/keymaps/tucznak/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# TuCZnak's modified layout
-
-This layout is optimized for Czech national QWERTZ keymap.
-It includes separated layers for numbers, national characters,
-special characters and configuration.
diff --git a/keyboards/kbdfans/niu_mini/keymaps/tucznak/rules.mk b/keyboards/kbdfans/niu_mini/keymaps/tucznak/rules.mk
deleted file mode 100644
index 422c96962d..0000000000
--- a/keyboards/kbdfans/niu_mini/keymaps/tucznak/rules.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = no # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-# Userspace defines
-VELOCIKEY_ENABLE = yes
-LAYOUTS_HAS_RGB = no \ No newline at end of file
diff --git a/keyboards/kbdfans/niu_mini/rules.mk b/keyboards/kbdfans/niu_mini/rules.mk
index d8d8866c48..dfaed88540 100644
--- a/keyboards/kbdfans/niu_mini/rules.mk
+++ b/keyboards/kbdfans/niu_mini/rules.mk
@@ -11,8 +11,6 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no
diff --git a/keyboards/kbdfans/odin/rgb/config.h b/keyboards/kbdfans/odin/rgb/config.h
index 9cc883891a..9a3013e1c3 100644
--- a/keyboards/kbdfans/odin/rgb/config.h
+++ b/keyboards/kbdfans/odin/rgb/config.h
@@ -19,7 +19,7 @@
#define RGB_MATRIX_LED_COUNT 104
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
diff --git a/keyboards/kmac/config.h b/keyboards/kbdmania/kmac/config.h
index dd12560fb6..dd12560fb6 100644
--- a/keyboards/kmac/config.h
+++ b/keyboards/kbdmania/kmac/config.h
diff --git a/keyboards/kmac/info.json b/keyboards/kbdmania/kmac/info.json
index 0ec6f0b2a9..0ec6f0b2a9 100644
--- a/keyboards/kmac/info.json
+++ b/keyboards/kbdmania/kmac/info.json
diff --git a/keyboards/kmac/keymaps/default/keymap.c b/keyboards/kbdmania/kmac/keymaps/default/keymap.c
index f3e4385052..f3e4385052 100644
--- a/keyboards/kmac/keymaps/default/keymap.c
+++ b/keyboards/kbdmania/kmac/keymaps/default/keymap.c
diff --git a/keyboards/kmac/keymaps/default/readme.md b/keyboards/kbdmania/kmac/keymaps/default/readme.md
index a608403753..a608403753 100644
--- a/keyboards/kmac/keymaps/default/readme.md
+++ b/keyboards/kbdmania/kmac/keymaps/default/readme.md
diff --git a/keyboards/kmac/keymaps/default_tkl_ansi/keymap.c b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi/keymap.c
index f3e4385052..f3e4385052 100644
--- a/keyboards/kmac/keymaps/default_tkl_ansi/keymap.c
+++ b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi/keymap.c
diff --git a/keyboards/kmac/keymaps/default_tkl_ansi/readme.md b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi/readme.md
index a608403753..a608403753 100644
--- a/keyboards/kmac/keymaps/default_tkl_ansi/readme.md
+++ b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi/readme.md
diff --git a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi_wkl/keymap.c
index 8c018383b1..8c018383b1 100644
--- a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c
+++ b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi_wkl/keymap.c
diff --git a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/readme.md b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi_wkl/readme.md
index a66ed10902..a66ed10902 100644
--- a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/readme.md
+++ b/keyboards/kbdmania/kmac/keymaps/default_tkl_ansi_wkl/readme.md
diff --git a/keyboards/kmac/keymaps/via/keymap.c b/keyboards/kbdmania/kmac/keymaps/via/keymap.c
index 507840e462..507840e462 100644
--- a/keyboards/kmac/keymaps/via/keymap.c
+++ b/keyboards/kbdmania/kmac/keymaps/via/keymap.c
diff --git a/keyboards/kira80/keymaps/via/rules.mk b/keyboards/kbdmania/kmac/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/kira80/keymaps/via/rules.mk
+++ b/keyboards/kbdmania/kmac/keymaps/via/rules.mk
diff --git a/keyboards/kmac/kmac.c b/keyboards/kbdmania/kmac/kmac.c
index 29f7091084..29f7091084 100644
--- a/keyboards/kmac/kmac.c
+++ b/keyboards/kbdmania/kmac/kmac.c
diff --git a/keyboards/kmac/matrix.c b/keyboards/kbdmania/kmac/matrix.c
index 6569867032..6569867032 100644
--- a/keyboards/kmac/matrix.c
+++ b/keyboards/kbdmania/kmac/matrix.c
diff --git a/keyboards/kbdmania/kmac/readme.md b/keyboards/kbdmania/kmac/readme.md
new file mode 100644
index 0000000000..c9f7746292
--- /dev/null
+++ b/keyboards/kbdmania/kmac/readme.md
@@ -0,0 +1,21 @@
+# KMAC
+
+A Korean custom keyboard designed by Byungho Kim and the KBDMania community.
+
+Keyboard Maintainer: [Mathias Andersson](https://github.com/wraul)
+Hardware Supported: KMAC & KMAC 2
+Hardware Availability: [KBDMania](http://www.kbdmania.net/xe/news/5232321)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdmania/kmac: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).
+
+## Bootloader
+
+The PCB is hardwired to run the bootloader if the key at the `Caps Lock` position is held down when connecting the keyboard.
+
+## PCB versions
+
+The KMAC are available with two different PCB layouts, a winkey version and a winkeyless version. A default keymap are provided for each versions of the PCB.
diff --git a/keyboards/kmac/rules.mk b/keyboards/kbdmania/kmac/rules.mk
index d9aa87a7dc..d9aa87a7dc 100644
--- a/keyboards/kmac/rules.mk
+++ b/keyboards/kbdmania/kmac/rules.mk
diff --git a/keyboards/kmac_pad/config.h b/keyboards/kbdmania/kmac_pad/config.h
index ee27565dce..ee27565dce 100644
--- a/keyboards/kmac_pad/config.h
+++ b/keyboards/kbdmania/kmac_pad/config.h
diff --git a/keyboards/kmac_pad/info.json b/keyboards/kbdmania/kmac_pad/info.json
index f41da8a452..f41da8a452 100644
--- a/keyboards/kmac_pad/info.json
+++ b/keyboards/kbdmania/kmac_pad/info.json
diff --git a/keyboards/kmac_pad/keymaps/default/keymap.c b/keyboards/kbdmania/kmac_pad/keymaps/default/keymap.c
index e6afa53346..e6afa53346 100644
--- a/keyboards/kmac_pad/keymaps/default/keymap.c
+++ b/keyboards/kbdmania/kmac_pad/keymaps/default/keymap.c
diff --git a/keyboards/kmac_pad/keymaps/default/readme.md b/keyboards/kbdmania/kmac_pad/keymaps/default/readme.md
index 3b9b739a2a..3b9b739a2a 100644
--- a/keyboards/kmac_pad/keymaps/default/readme.md
+++ b/keyboards/kbdmania/kmac_pad/keymaps/default/readme.md
diff --git a/keyboards/kmac_pad/kmac_pad.c b/keyboards/kbdmania/kmac_pad/kmac_pad.c
index 3de2cb711e..3de2cb711e 100644
--- a/keyboards/kmac_pad/kmac_pad.c
+++ b/keyboards/kbdmania/kmac_pad/kmac_pad.c
diff --git a/keyboards/kmac_pad/matrix.c b/keyboards/kbdmania/kmac_pad/matrix.c
index 476e40f514..476e40f514 100644
--- a/keyboards/kmac_pad/matrix.c
+++ b/keyboards/kbdmania/kmac_pad/matrix.c
diff --git a/keyboards/kbdmania/kmac_pad/readme.md b/keyboards/kbdmania/kmac_pad/readme.md
new file mode 100644
index 0000000000..59cc307073
--- /dev/null
+++ b/keyboards/kbdmania/kmac_pad/readme.md
@@ -0,0 +1,56 @@
+# KMAC PAD
+
+![kmac_pad](https://i.imgur.com/4P1ybgNl.jpg)
+
+KMAC PAD is a num pad keyboard.
+It can be used independently, but can also be used by connecting with KMAC keyboard case.
+
+* Keyboard Maintainer: [talsu](https://github.com/talsu)
+* Hardware Supported: KMAC PAD
+* Hardware Availability: [KBDMania](http://www.kbdmania.net/xe/news/5232321)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdmania/kmac_pad:default
+
+Flashing example for this keyboard:
+
+ make kbdmania/kmac_pad: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
+
+The PCB is hardwired to run the bootloader if the key at the `FN` position (the only key in first row) is held down when connecting the keyboard.
+
+## PCB
+
+![Imgur](https://i.imgur.com/ML66cvfl.jpg)
+![Imgur](https://i.imgur.com/Kr2Wdtkl.jpg)
+
+### Switch Pins
+
+The FN key in the `Row 0` is directly connected to the E2 pin.
+The rest of the rows below that use MATRIX. (`Row 1 ~ Row 5`)
+| Row | Pin |
+|:-----:| ---------------------- |
+| 0 | x (Not in Matrix) |
+| 1 | D0 |
+| 2 | D1 |
+| 3 | D2 |
+| 4 | D3 |
+| 5 | D5 |
+
+| Column | Pin |
+|:------:| --------------------- |
+| 0 | C7 |
+| 1 | C6 |
+| 2 | B6 |
+| 3 | B5 |
+
+### Backlight Pins
+
+There are 2 pins for backlight.
+
+The LED of the FN key uses pin `B3`.
+All other keys are connected to the `B1` pin.
diff --git a/keyboards/kmac_pad/rules.mk b/keyboards/kbdmania/kmac_pad/rules.mk
index 1c42620aca..1c42620aca 100644
--- a/keyboards/kmac_pad/rules.mk
+++ b/keyboards/kbdmania/kmac_pad/rules.mk
diff --git a/keyboards/kc60/mod_rgb_underglow.md b/keyboards/kc60/mod_rgb_underglow.md
index 6aab1e1d2e..22ade4fa1b 100644
--- a/keyboards/kc60/mod_rgb_underglow.md
+++ b/keyboards/kc60/mod_rgb_underglow.md
@@ -9,8 +9,8 @@ By default, the source is set up for 16 LEDs on the F5 breakout pin. See [includ
```c
#pragma once
-#undef RGBLED_NUM
-#define RGBLED_NUM <number of leds>
+#undef RGBLIGHT_LED_COUNT
+#define RGBLIGHT_LED_COUNT <number of leds>
```
To enable RGB Underglow, simply add a `rules.mk` file containing `RGBLIGHT_ENABLE = yes` alongside your `keymap.c` file, and compile as normal:
diff --git a/keyboards/keebio/bamfk4/config.h b/keyboards/keebio/bamfk4/config.h
index eddc52e8aa..b31e7bf920 100644
--- a/keyboards/keebio/bamfk4/config.h
+++ b/keyboards/keebio/bamfk4/config.h
@@ -46,7 +46,7 @@
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
# define RGB_MATRIX_LED_COUNT 32
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define RGB_MATRIX_KEYPRESSES
//# endif
diff --git a/keyboards/keebio/cepstrum/rev1/config.h b/keyboards/keebio/cepstrum/rev1/config.h
index 72f182b156..e0ef9ce2ed 100644
--- a/keyboards/keebio/cepstrum/rev1/config.h
+++ b/keyboards/keebio/cepstrum/rev1/config.h
@@ -56,7 +56,7 @@
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_LED_COUNT 96
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define SPLIT_TRANSPORT_MIRROR
diff --git a/keyboards/keebio/chocopad/rev2/config.h b/keyboards/keebio/chocopad/rev2/config.h
index 366d639bf0..178ece8ba3 100644
--- a/keyboards/keebio/chocopad/rev2/config.h
+++ b/keyboards/keebio/chocopad/rev2/config.h
@@ -8,6 +8,6 @@
// RGB Matrix
#define RGB_MATRIX_LED_COUNT 20
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keebio/convolution/rev1/config.h b/keyboards/keebio/convolution/rev1/config.h
index b46ba583d7..a758121351 100644
--- a/keyboards/keebio/convolution/rev1/config.h
+++ b/keyboards/keebio/convolution/rev1/config.h
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// RGB Matrix
#define RGB_MATRIX_LED_COUNT 16
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
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/iris/rev6/config.h b/keyboards/keebio/iris/rev6/config.h
index 80e85052de..305ffdedaf 100644
--- a/keyboards/keebio/iris/rev6/config.h
+++ b/keyboards/keebio/iris/rev6/config.h
@@ -63,6 +63,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
# define RGB_MATRIX_LED_COUNT 68
# define RGB_MATRIX_SPLIT { 34, 34 }
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define RGB_MATRIX_KEYPRESSES
# endif
diff --git a/keyboards/keebio/iris/rev7/config.h b/keyboards/keebio/iris/rev7/config.h
index 37769d67e7..4e19525de8 100644
--- a/keyboards/keebio/iris/rev7/config.h
+++ b/keyboards/keebio/iris/rev7/config.h
@@ -63,6 +63,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
# define RGB_MATRIX_LED_COUNT 68
# define RGB_MATRIX_SPLIT { 34, 34 }
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define RGB_MATRIX_KEYPRESSES
//# endif
diff --git a/keyboards/keebio/iris/rev8/config.h b/keyboards/keebio/iris/rev8/config.h
index 96eb75c97a..e1a3a155f0 100644
--- a/keyboards/keebio/iris/rev8/config.h
+++ b/keyboards/keebio/iris/rev8/config.h
@@ -17,6 +17,6 @@
// RGB Matrix
#define RGB_MATRIX_LED_COUNT 68
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keebio/nyquist/rev4/config.h b/keyboards/keebio/nyquist/rev4/config.h
index 501e4edaf7..e4adb125d6 100644
--- a/keyboards/keebio/nyquist/rev4/config.h
+++ b/keyboards/keebio/nyquist/rev4/config.h
@@ -17,6 +17,6 @@
// RGB Matrix
#define RGB_MATRIX_LED_COUNT 72
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keebio/nyquistpad/config.h b/keyboards/keebio/nyquistpad/config.h
index 82a64e39bf..adc0f37de1 100644
--- a/keyboards/keebio/nyquistpad/config.h
+++ b/keyboards/keebio/nyquistpad/config.h
@@ -8,6 +8,6 @@
// RGB Matrix
#define RGB_MATRIX_LED_COUNT 36
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
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/keebio/sinc/rev1/config.h b/keyboards/keebio/sinc/rev1/config.h
index 2d2c772422..e8024190b4 100644
--- a/keyboards/keebio/sinc/rev1/config.h
+++ b/keyboards/keebio/sinc/rev1/config.h
@@ -27,4 +27,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/keebio/sinc/rev1/info.json b/keyboards/keebio/sinc/rev1/info.json
index 0829cae6e7..b7774fa0ed 100644
--- a/keyboards/keebio/sinc/rev1/info.json
+++ b/keyboards/keebio/sinc/rev1/info.json
@@ -7,6 +7,9 @@
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"features": {
"rgblight": true,
"backlight": true
diff --git a/keyboards/keebio/sinc/rev2/config.h b/keyboards/keebio/sinc/rev2/config.h
index 2d2c772422..e8024190b4 100644
--- a/keyboards/keebio/sinc/rev2/config.h
+++ b/keyboards/keebio/sinc/rev2/config.h
@@ -27,4 +27,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/keebio/sinc/rev2/info.json b/keyboards/keebio/sinc/rev2/info.json
index 5b74d17b1a..ff5ef2667a 100644
--- a/keyboards/keebio/sinc/rev2/info.json
+++ b/keyboards/keebio/sinc/rev2/info.json
@@ -7,6 +7,9 @@
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"features": {
"rgblight": true,
"backlight": true
diff --git a/keyboards/keebio/sinc/rev3/config.h b/keyboards/keebio/sinc/rev3/config.h
index 66cfe454c4..9bb698182d 100644
--- a/keyboards/keebio/sinc/rev3/config.h
+++ b/keyboards/keebio/sinc/rev3/config.h
@@ -68,7 +68,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_LED_COUNT 113
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define SPLIT_TRANSPORT_MIRROR
diff --git a/keyboards/keebio/sinc/rev4/config.h b/keyboards/keebio/sinc/rev4/config.h
index bed0f11243..d9ae6313a6 100644
--- a/keyboards/keebio/sinc/rev4/config.h
+++ b/keyboards/keebio/sinc/rev4/config.h
@@ -65,7 +65,7 @@
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_LED_COUNT 117
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define SPLIT_TRANSPORT_MIRROR
diff --git a/keyboards/keebio/viterbi/keymaps/default/config.h b/keyboards/keebio/viterbi/keymaps/default/config.h
index 38c399ff2c..acc5970dcb 100644
--- a/keyboards/keebio/viterbi/keymaps/default/config.h
+++ b/keyboards/keebio/viterbi/keymaps/default/config.h
@@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -35,7 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 12
+#define RGBLIGHT_LED_COUNT 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/keybee/keybee65/config.h b/keyboards/keybee/keybee65/config.h
index 5c89632272..4c619c5a6a 100644
--- a/keyboards/keybee/keybee65/config.h
+++ b/keyboards/keybee/keybee65/config.h
@@ -21,4 +21,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_LED_COUNT 68
#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
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/kimiko/keymaps/oriaj3/config.h b/keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h
index 2fd384b986..decbd67681 100644
--- a/keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h
+++ b/keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h
@@ -42,7 +42,7 @@
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
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/keychron/c1_pro/ansi/rgb/config.h b/keyboards/keychron/c1_pro/ansi/rgb/config.h
index a88319a63d..537f73b3d6 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/config.h
+++ b/keyboards/keychron/c1_pro/ansi/rgb/config.h
@@ -34,7 +34,7 @@
{ 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* Enable caps_lock, win os and mac os indicator */
#define CAPS_MAC_WIN_LED_INDEX 63
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/rgb.c b/keyboards/keychron/c1_pro/ansi/rgb/rgb.c
index c04e82a44e..38d4a96d3e 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/rgb.c
+++ b/keyboards/keychron/c1_pro/ansi/rgb/rgb.c
@@ -18,7 +18,7 @@
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/c1_pro/ansi/white/config.h b/keyboards/keychron/c1_pro/ansi/white/config.h
index a8a836c5dd..2db91f7053 100644
--- a/keyboards/keychron/c1_pro/ansi/white/config.h
+++ b/keyboards/keychron/c1_pro/ansi/white/config.h
@@ -21,26 +21,11 @@
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
-
-/* LED Matrix Configuration */
-#define LED_MATRIX_LED_COUNT 90
-
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
-/* Set led driver current */
#define SNLED27351_CURRENT_TUNE \
{ 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-/* turn off effects when suspended */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
/* Enbale caps_lcok, win os and mac os indicator */
#define CAPS_LOCK_LED_INDEX 63
#define MAC_LOCK_LED_INDEX 64
#define WIN_LOCK_LED_INDEX 65
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
diff --git a/keyboards/keychron/c1_pro/ansi/white/info.json b/keyboards/keychron/c1_pro/ansi/white/info.json
index 4a6c6e2b8d..c64183a739 100644
--- a/keyboards/keychron/c1_pro/ansi/white/info.json
+++ b/keyboards/keychron/c1_pro/ansi/white/info.json
@@ -107,8 +107,6 @@
"led_matrix": {
"driver": "snled27351",
"animations": {
- "none": true,
- "solid": true,
"breathing": true,
"band_pinwheel": true,
"band_spiral": true,
@@ -221,6 +219,8 @@
{"matrix":[5, 14], "flags":1, "x":198, "y":64},
{"matrix":[5, 15], "flags":1, "x":211, "y":64},
{"matrix":[3, 15], "flags":1, "x":224, "y":64}
- ]
+ ],
+ "sleep": true,
+ "react_on_keyup": true
}
}
diff --git a/keyboards/keychron/c1_pro/ansi/white/white.c b/keyboards/keychron/c1_pro/ansi/white/white.c
index 15f291e80c..d7b75e0dd6 100644
--- a/keyboards/keychron/c1_pro/ansi/white/white.c
+++ b/keyboards/keychron/c1_pro/ansi/white/white.c
@@ -18,7 +18,7 @@
// clang-format off
#ifdef LED_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/config.h b/keyboards/keychron/c2_pro/ansi/rgb/config.h
index 47b47b920d..61e0b15edc 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/config.h
+++ b/keyboards/keychron/c2_pro/ansi/rgb/config.h
@@ -36,7 +36,7 @@
#define WIN_LED_INDEX 19
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/rgb.c b/keyboards/keychron/c2_pro/ansi/rgb/rgb.c
index d42c2de39e..6fce51417c 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/rgb.c
+++ b/keyboards/keychron/c2_pro/ansi/rgb/rgb.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/c2_pro/ansi/white/config.h b/keyboards/keychron/c2_pro/ansi/white/config.h
index 26c812ffef..60d004d38e 100644
--- a/keyboards/keychron/c2_pro/ansi/white/config.h
+++ b/keyboards/keychron/c2_pro/ansi/white/config.h
@@ -18,26 +18,11 @@
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
-
-/* Set LED driver current */
#define SNLED27351_CURRENT_TUNE \
{ 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0 }
-/* LED Matrix Configuration */
-#define LED_MATRIX_LED_COUNT 108
-
/* Enable indicator LED*/
#define NUM_LED_INDEX 16
#define CAPS_LED_INDEX 17
#define MAC_LED_INDEX 18
#define WIN_LED_INDEX 19
-
-/* turn off effects when suspended */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
diff --git a/keyboards/keychron/c2_pro/ansi/white/info.json b/keyboards/keychron/c2_pro/ansi/white/info.json
index 4d9b1e12b8..4c103e966d 100644
--- a/keyboards/keychron/c2_pro/ansi/white/info.json
+++ b/keyboards/keychron/c2_pro/ansi/white/info.json
@@ -124,8 +124,6 @@
"led_matrix": {
"driver": "snled27351",
"animations": {
- "none": true,
- "solid": true,
"breathing": true,
"band_pinwheel": true,
"band_spiral": true,
@@ -256,6 +254,8 @@
{"matrix":[5, 16], "flags":1, "x":180, "y":64},
{"matrix":[5, 17], "flags":4, "x":198, "y":64},
{"matrix":[5, 19], "flags":4, "x":214, "y":64}
- ]
+ ],
+ "sleep": true,
+ "react_on_keyup": true
}
}
diff --git a/keyboards/keychron/c2_pro/ansi/white/white.c b/keyboards/keychron/c2_pro/ansi/white/white.c
index 9c75e73c6d..4bad7187cc 100644
--- a/keyboards/keychron/c2_pro/ansi/white/white.c
+++ b/keyboards/keychron/c2_pro/ansi/white/white.c
@@ -18,7 +18,7 @@
// clang-format off
#ifdef LED_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
diff --git a/keyboards/keychron/q0/base/base.c b/keyboards/keychron/q0/base/base.c
index 05803234c0..b977471730 100644
--- a/keyboards/keychron/q0/base/base.c
+++ b/keyboards/keychron/q0/base/base.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q0/config.h b/keyboards/keychron/q0/config.h
index 24b629a520..a75d26b478 100644
--- a/keyboards/keychron/q0/config.h
+++ b/keyboards/keychron/q0/config.h
@@ -19,7 +19,7 @@
#define SNLED27351_CURRENT_TUNE { 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70 }
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS \ No newline at end of file
diff --git a/keyboards/keychron/q0/plus/plus.c b/keyboards/keychron/q0/plus/plus.c
index 0466e1a584..4af7a4572f 100644
--- a/keyboards/keychron/q0/plus/plus.c
+++ b/keyboards/keychron/q0/plus/plus.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
index a9df1609e0..06947e9d18 100644
--- a/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q10/config.h b/keyboards/keychron/q10/config.h
index eb3a56e9ad..e999515abc 100644
--- a/keyboards/keychron/q10/config.h
+++ b/keyboards/keychron/q10/config.h
@@ -51,7 +51,7 @@
#define MATRIX_MASKED
/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/q10/iso_encoder/iso_encoder.c b/keyboards/keychron/q10/iso_encoder/iso_encoder.c
index fbe4bca637..2aebd936ec 100644
--- a/keyboards/keychron/q10/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q10/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
index f7acae7add..24b9836b2e 100755
--- a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q11/config.h b/keyboards/keychron/q11/config.h
index 0d6b9c9c48..949e5cf1da 100755
--- a/keyboards/keychron/q11/config.h
+++ b/keyboards/keychron/q11/config.h
@@ -22,7 +22,6 @@
/* handedness */
#define SPLIT_HAND_MATRIX_GRID A2, A15
-#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `q11.c`
@@ -50,10 +49,14 @@
#define ENCODER_DEFAULT_POS 0x3
/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
+
+// Needed as the master side could enter slave state during poweron
+// of host, due to missing VUSB detection.
+#define SPLIT_WATCHDOG_ENABLE
diff --git a/keyboards/keychron/q11/iso_encoder/iso_encoder.c b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
index a2db569710..feedfd17c3 100755
--- a/keyboards/keychron/q11/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
index 350da52661..e2acddd894 100644
--- a/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q12/config.h b/keyboards/keychron/q12/config.h
index cc24578c16..2f6a277439 100644
--- a/keyboards/keychron/q12/config.h
+++ b/keyboards/keychron/q12/config.h
@@ -50,7 +50,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
// #define WEAR_LEVELING_LOGICAL_SIZE 2048 // default
diff --git a/keyboards/keychron/q12/iso_encoder/iso_encoder.c b/keyboards/keychron/q12/iso_encoder/iso_encoder.c
index 37d9db10b4..f05a35dad8 100644
--- a/keyboards/keychron/q12/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q12/iso_encoder/iso_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v1/ansi/ansi.c b/keyboards/keychron/q1v1/ansi/ansi.c
index 5f74267bf4..bc352a1964 100644
--- a/keyboards/keychron/q1v1/ansi/ansi.c
+++ b/keyboards/keychron/q1v1/ansi/ansi.c
@@ -26,7 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v1/ansi/keymaps/gtg465x/config.h b/keyboards/keychron/q1v1/ansi/keymaps/gtg465x/config.h
index 5ac05d04c1..4bab25c923 100644
--- a/keyboards/keychron/q1v1/ansi/keymaps/gtg465x/config.h
+++ b/keyboards/keychron/q1v1/ansi/keymaps/gtg465x/config.h
@@ -18,7 +18,7 @@
/* RGB Matrix Configuration */
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
# define FN_LAYER_TRANSPARENT_KEYS_OFF
diff --git a/keyboards/keychron/q1v1/ansi/keymaps/mkillewald/config.h b/keyboards/keychron/q1v1/ansi/keymaps/mkillewald/config.h
index bc9fe405c3..acd208b8c6 100644
--- a/keyboards/keychron/q1v1/ansi/keymaps/mkillewald/config.h
+++ b/keyboards/keychron/q1v1/ansi/keymaps/mkillewald/config.h
@@ -17,7 +17,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define FN_LAYER_COLOR RGB_ORANGE
#endif \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/ansi/keymaps/teimor/config.h b/keyboards/keychron/q1v1/ansi/keymaps/teimor/config.h
index 4378af4f58..cd49d7b3d8 100644
--- a/keyboards/keychron/q1v1/ansi/keymaps/teimor/config.h
+++ b/keyboards/keychron/q1v1/ansi/keymaps/teimor/config.h
@@ -21,7 +21,7 @@
/* RGB Matrix Configuration */
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define MAC_LAYER_DEFAULT_COLOR RGB_CYAN
# define WIN_LAYER_DEFAULT_COLOR RGB_GREEN
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
diff --git a/keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c
index c4fc884bc2..387f3e0b32 100644
--- a/keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c
@@ -26,7 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v1/config.h b/keyboards/keychron/q1v1/config.h
index 68b431f7b3..aa6658e1ba 100644
--- a/keyboards/keychron/q1v1/config.h
+++ b/keyboards/keychron/q1v1/config.h
@@ -30,7 +30,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/iso/iso.c b/keyboards/keychron/q1v1/iso/iso.c
index 874f5c8539..ad3152adcd 100644
--- a/keyboards/keychron/q1v1/iso/iso.c
+++ b/keyboards/keychron/q1v1/iso/iso.c
@@ -26,7 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h
index 55dbb74d4a..854c1d18ee 100644
--- a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
/* from rev_0100/keymaps/gtg465x */
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
# define FN_LAYER_TRANSPARENT_KEYS_OFF
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h
index bc9fe405c3..acd208b8c6 100644
--- a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h
@@ -17,7 +17,7 @@
#pragma once
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define FN_LAYER_COLOR RGB_ORANGE
#endif \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/iso_encoder/iso_encoder.c b/keyboards/keychron/q1v1/iso_encoder/iso_encoder.c
index 4a7496ed29..19122aa18d 100644
--- a/keyboards/keychron/q1v1/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q1v1/iso_encoder/iso_encoder.c
@@ -27,7 +27,7 @@ const matrix_row_t matrix_mask[] = {
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v2/ansi/ansi.c b/keyboards/keychron/q1v2/ansi/ansi.c
index 3b80c9d5c4..a25b597b03 100644
--- a/keyboards/keychron/q1v2/ansi/ansi.c
+++ b/keyboards/keychron/q1v2/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
index 3b80c9d5c4..a25b597b03 100644
--- a/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v2/config.h b/keyboards/keychron/q1v2/config.h
index 5e2a7eaa54..67c7cae5bb 100644
--- a/keyboards/keychron/q1v2/config.h
+++ b/keyboards/keychron/q1v2/config.h
@@ -37,7 +37,7 @@
#define MATRIX_MASKED
/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/q1v2/iso/iso.c b/keyboards/keychron/q1v2/iso/iso.c
index d879e55083..53cdea506f 100644
--- a/keyboards/keychron/q1v2/iso/iso.c
+++ b/keyboards/keychron/q1v2/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c b/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
index d879e55083..53cdea506f 100644
--- a/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v2/jis/jis.c b/keyboards/keychron/q1v2/jis/jis.c
index e8c0112649..d43d64dd82 100644
--- a/keyboards/keychron/q1v2/jis/jis.c
+++ b/keyboards/keychron/q1v2/jis/jis.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c b/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
index e8c0112649..d43d64dd82 100644
--- a/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q2/ansi/ansi.c b/keyboards/keychron/q2/ansi/ansi.c
index d0ff0a1869..64abe016a6 100644
--- a/keyboards/keychron/q2/ansi/ansi.c
+++ b/keyboards/keychron/q2/ansi/ansi.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h b/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h
index a8ad37d003..a357fbb164 100644
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h
+++ b/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h
@@ -18,7 +18,7 @@
/* RGB Matrix Configuration */
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
# define FN_LAYER_TRANSPARENT_KEYS_OFF
diff --git a/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
index d0ff0a1869..64abe016a6 100644
--- a/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q2/config.h b/keyboards/keychron/q2/config.h
index 831612326b..d0beff49f0 100644
--- a/keyboards/keychron/q2/config.h
+++ b/keyboards/keychron/q2/config.h
@@ -31,7 +31,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* Encoder Configuration*/
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/q2/iso/iso.c b/keyboards/keychron/q2/iso/iso.c
index a54c90bc4b..7da02c4a79 100644
--- a/keyboards/keychron/q2/iso/iso.c
+++ b/keyboards/keychron/q2/iso/iso.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q2/iso_encoder/iso_encoder.c b/keyboards/keychron/q2/iso_encoder/iso_encoder.c
index a54c90bc4b..7da02c4a79 100644
--- a/keyboards/keychron/q2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q2/iso_encoder/iso_encoder.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q2/jis/jis.c b/keyboards/keychron/q2/jis/jis.c
index d877e225d9..b8d36be505 100644
--- a/keyboards/keychron/q2/jis/jis.c
+++ b/keyboards/keychron/q2/jis/jis.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q2/jis_encoder/jis_encoder.c b/keyboards/keychron/q2/jis_encoder/jis_encoder.c
index d877e225d9..b8d36be505 100644
--- a/keyboards/keychron/q2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q2/jis_encoder/jis_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q3/ansi/ansi.c b/keyboards/keychron/q3/ansi/ansi.c
index 8327ee430b..a2793b040c 100644
--- a/keyboards/keychron/q3/ansi/ansi.c
+++ b/keyboards/keychron/q3/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
index a386e87a01..3b88a83d38 100644
--- a/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q3/config.h b/keyboards/keychron/q3/config.h
index f93da42353..6af0afd18f 100644
--- a/keyboards/keychron/q3/config.h
+++ b/keyboards/keychron/q3/config.h
@@ -39,7 +39,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/q3/iso/iso.c b/keyboards/keychron/q3/iso/iso.c
index 725af67006..37f418e66b 100644
--- a/keyboards/keychron/q3/iso/iso.c
+++ b/keyboards/keychron/q3/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q3/iso_encoder/iso_encoder.c b/keyboards/keychron/q3/iso_encoder/iso_encoder.c
index 725af67006..37f418e66b 100644
--- a/keyboards/keychron/q3/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q3/iso_encoder/iso_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q3/jis/jis.c b/keyboards/keychron/q3/jis/jis.c
index 4b19eca52f..0fc70b1af3 100644
--- a/keyboards/keychron/q3/jis/jis.c
+++ b/keyboards/keychron/q3/jis/jis.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q3/jis_encoder/jis_encoder.c b/keyboards/keychron/q3/jis_encoder/jis_encoder.c
index 8770f9d33c..df4a6a467b 100644
--- a/keyboards/keychron/q3/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q3/jis_encoder/jis_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q4/ansi/v1/v1.c b/keyboards/keychron/q4/ansi/v1/v1.c
index 6c1fecefec..f9e2946bb3 100644
--- a/keyboards/keychron/q4/ansi/v1/v1.c
+++ b/keyboards/keychron/q4/ansi/v1/v1.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q4/ansi/v2/v2.c b/keyboards/keychron/q4/ansi/v2/v2.c
index 468a87af41..f7564c02a1 100644
--- a/keyboards/keychron/q4/ansi/v2/v2.c
+++ b/keyboards/keychron/q4/ansi/v2/v2.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q4/config.h b/keyboards/keychron/q4/config.h
index 62f8294966..97f480ea31 100644
--- a/keyboards/keychron/q4/config.h
+++ b/keyboards/keychron/q4/config.h
@@ -23,7 +23,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define SNLED27351_CURRENT_TUNE \
{ 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
diff --git a/keyboards/keychron/q4/iso/iso.c b/keyboards/keychron/q4/iso/iso.c
index a808c3ad74..c30f06c6bd 100644
--- a/keyboards/keychron/q4/iso/iso.c
+++ b/keyboards/keychron/q4/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q5/ansi/ansi.c b/keyboards/keychron/q5/ansi/ansi.c
index 8c80245fbc..26cebc996e 100644
--- a/keyboards/keychron/q5/ansi/ansi.c
+++ b/keyboards/keychron/q5/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
index d5f67f1297..90a9310c64 100644
--- a/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q5/config.h b/keyboards/keychron/q5/config.h
index 0640331997..d9f5cfa76b 100644
--- a/keyboards/keychron/q5/config.h
+++ b/keyboards/keychron/q5/config.h
@@ -43,7 +43,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/q5/iso/iso.c b/keyboards/keychron/q5/iso/iso.c
index 8a7cb863ec..48fdcb7363 100644
--- a/keyboards/keychron/q5/iso/iso.c
+++ b/keyboards/keychron/q5/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q5/iso_encoder/iso_encoder.c b/keyboards/keychron/q5/iso_encoder/iso_encoder.c
index 009e8043db..65b5c40c5a 100644
--- a/keyboards/keychron/q5/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q5/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/ansi/ansi.c b/keyboards/keychron/q6/ansi/ansi.c
index 80eaad02b3..b9f249e281 100644
--- a/keyboards/keychron/q6/ansi/ansi.c
+++ b/keyboards/keychron/q6/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
index 9c88533620..4064329099 100644
--- a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/config.h b/keyboards/keychron/q6/config.h
index 2edceb09d7..ff8cd1142b 100644
--- a/keyboards/keychron/q6/config.h
+++ b/keyboards/keychron/q6/config.h
@@ -37,7 +37,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/q6/iso/iso.c b/keyboards/keychron/q6/iso/iso.c
index d2aa010c05..8cdee4cf3b 100644
--- a/keyboards/keychron/q6/iso/iso.c
+++ b/keyboards/keychron/q6/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q6/iso_encoder/iso_encoder.c b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
index 66e066b839..5ff71379c9 100644
--- a/keyboards/keychron/q6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q60/ansi/ansi.c b/keyboards/keychron/q60/ansi/ansi.c
index ac72737146..f02d45b42a 100644
--- a/keyboards/keychron/q60/ansi/ansi.c
+++ b/keyboards/keychron/q60/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q60/config.h b/keyboards/keychron/q60/config.h
index 6b6c3c5f48..3a6c3ea8ee 100644
--- a/keyboards/keychron/q60/config.h
+++ b/keyboards/keychron/q60/config.h
@@ -36,7 +36,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
diff --git a/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
index 8e9b37b806..3ed44a7387 100644
--- a/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q65/config.h b/keyboards/keychron/q65/config.h
index 84c4e9fc17..99eb4572cf 100644
--- a/keyboards/keychron/q65/config.h
+++ b/keyboards/keychron/q65/config.h
@@ -47,7 +47,7 @@
#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/ansi/ansi.c b/keyboards/keychron/q7/ansi/ansi.c
index 190c110a77..dfb8cd1295 100644
--- a/keyboards/keychron/q7/ansi/ansi.c
+++ b/keyboards/keychron/q7/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q7/config.h b/keyboards/keychron/q7/config.h
index 4794c80011..c71d386b1d 100644
--- a/keyboards/keychron/q7/config.h
+++ b/keyboards/keychron/q7/config.h
@@ -38,7 +38,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/iso/iso.c b/keyboards/keychron/q7/iso/iso.c
index 13354b9f0b..7564099156 100644
--- a/keyboards/keychron/q7/iso/iso.c
+++ b/keyboards/keychron/q7/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q8/ansi/ansi.c b/keyboards/keychron/q8/ansi/ansi.c
index 3bb10b383d..fbb6813448 100644
--- a/keyboards/keychron/q8/ansi/ansi.c
+++ b/keyboards/keychron/q8/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
@@ -103,33 +103,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1}
};
-#define __ NO_LED
-
-led_config_t g_led_config = {
- {
- // Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, __, 36, 37, 38, 39, 40, 41, 42, 43 },
- { 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
- { 58, 59, 60, 61, __, __, 62, 63, 64, 65, __, __, 66, 67, 68 },
- },
- {
- // LED Index to Physical Position
- {7,1}, {20,1}, {33,0}, {48,3}, {61,6}, {74,8 }, {87,11}, {106,11}, {119,8}, {132,6}, {145,3}, {160,0}, {173,1}, {193,1}, {220,0},
- {7,14}, {24,14}, {39,14}, {52,17}, {65,20}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {170,14}, {183,14}, {200,14}, {222,16},
- {6,27}, {24,27}, {39,28}, {52,30}, {65,33}, {78,36}, {109,37}, {122,34}, {135,32}, {148,29}, {162,27}, {176,27}, {197,27}, {224,29},
- {7,40}, {28,40}, {43,42}, {56,44}, {69,47}, {82,50}, {102,52}, {115,49}, {128,46}, {141,44}, {154,41}, {169,40}, {187,40}, {209,43},
- {0,53}, {17,53}, {42,55}, {65,60}, {86,64}, {107,64}, {131,59}, {156,54}, {196,56}, {209,56}, {222,56},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/ansi/config.h b/keyboards/keychron/q8/ansi/config.h
index cd2d037bb3..9cd663a216 100644
--- a/keyboards/keychron/q8/ansi/config.h
+++ b/keyboards/keychron/q8/ansi/config.h
@@ -16,10 +16,5 @@
#pragma once
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 35
-#define DRIVER_2_LED_TOTAL 34
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q8/ansi/info.json b/keyboards/keychron/q8/ansi/info.json
index f733004270..2580b4163e 100644
--- a/keyboards/keychron/q8/ansi/info.json
+++ b/keyboards/keychron/q8/ansi/info.json
@@ -1,23 +1,85 @@
{
- "keyboard_name": "Keychron Q8",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0180",
- "device_version": "1.0.0"
- },
"rgb_matrix": {
- "driver": "snled27351"
+ "layout": [
+ {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+ {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+ {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+ {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+ {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+ {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+ {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+ {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+ {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+ {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+ {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+ {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+ {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+
+ {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+ {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+ {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+ {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+ {"matrix": [1, 4], "x": 65, "y": 20, "flags": 4},
+ {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+ {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+ {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+ {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+ {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+ {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+ {"matrix": [1, 11], "x": 170, "y": 14, "flags": 4},
+ {"matrix": [1, 12], "x": 183, "y": 14, "flags": 4},
+ {"matrix": [1, 13], "x": 200, "y": 14, "flags": 4},
+ {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+
+ {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+ {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+ {"matrix": [2, 2], "x": 39, "y": 28, "flags": 4},
+ {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+ {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+ {"matrix": [2, 5], "x": 78, "y": 36, "flags": 4},
+ {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+ {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+ {"matrix": [2, 9], "x": 135, "y": 32, "flags": 4},
+ {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+ {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+ {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+ {"matrix": [2, 13], "x": 197, "y": 27, "flags": 1},
+ {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+
+ {"matrix": [3, 0], "x": 7, "y": 40, "flags": 1},
+ {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+ {"matrix": [3, 3], "x": 43, "y": 42, "flags": 4},
+ {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+ {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+ {"matrix": [3, 6], "x": 82, "y": 50, "flags": 4},
+ {"matrix": [3, 7], "x": 102, "y": 52, "flags": 4},
+ {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+ {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+ {"matrix": [3, 10], "x": 141, "y": 44, "flags": 4},
+ {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+ {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+ {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+ {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+
+ {"matrix": [4, 0], "x": 0, "y": 53, "flags": 1},
+ {"matrix": [4, 1], "x": 17, "y": 53, "flags": 1},
+ {"matrix": [4, 2], "x": 42, "y": 55, "flags": 1},
+ {"matrix": [4, 3], "x": 65, "y": 60, "flags": 4},
+ {"matrix": [4, 6], "x": 86, "y": 64, "flags": 1},
+ {"matrix": [4, 7], "x": 107, "y": 64, "flags": 1},
+ {"matrix": [4, 8], "x": 131, "y": 59, "flags": 4},
+ {"matrix": [4, 9], "x": 156, "y": 54, "flags": 1},
+ {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+ {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+ {"matrix": [4, 14], "x": 222, "y": 56, "flags": 1}
+ ]
},
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0180"
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
@@ -97,4 +159,4 @@
]
}
}
-}
+} \ No newline at end of file
diff --git a/keyboards/keychron/q8/ansi/rules.mk b/keyboards/keychron/q8/ansi/rules.mk
index cf31e094cb..7ff128fa69 100644
--- a/keyboards/keychron/q8/ansi/rules.mk
+++ b/keyboards/keychron/q8/ansi/rules.mk
@@ -1,14 +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 = yes # Enable USB N-key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
+# This file intentionally left blank \ No newline at end of file
diff --git a/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
index 3bb10b383d..fbb6813448 100644
--- a/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
@@ -103,33 +103,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1}
};
-#define __ NO_LED
-
-led_config_t g_led_config = {
- {
- // Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, __, 36, 37, 38, 39, 40, 41, 42, 43 },
- { 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
- { 58, 59, 60, 61, __, __, 62, 63, 64, 65, __, __, 66, 67, 68 },
- },
- {
- // LED Index to Physical Position
- {7,1}, {20,1}, {33,0}, {48,3}, {61,6}, {74,8 }, {87,11}, {106,11}, {119,8}, {132,6}, {145,3}, {160,0}, {173,1}, {193,1}, {220,0},
- {7,14}, {24,14}, {39,14}, {52,17}, {65,20}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {170,14}, {183,14}, {200,14}, {222,16},
- {6,27}, {24,27}, {39,28}, {52,30}, {65,33}, {78,36}, {109,37}, {122,34}, {135,32}, {148,29}, {162,27}, {176,27}, {197,27}, {224,29},
- {7,40}, {28,40}, {43,42}, {56,44}, {69,47}, {82,50}, {102,52}, {115,49}, {128,46}, {141,44}, {154,41}, {169,40}, {187,40}, {209,43},
- {0,53}, {17,53}, {42,55}, {65,60}, {86,64}, {107,64}, {131,59}, {156,54}, {196,56}, {209,56}, {222,56},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/ansi_encoder/config.h b/keyboards/keychron/q8/ansi_encoder/config.h
index 63d16c21af..9cd663a216 100644
--- a/keyboards/keychron/q8/ansi_encoder/config.h
+++ b/keyboards/keychron/q8/ansi_encoder/config.h
@@ -16,13 +16,5 @@
#pragma once
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 35
-#define DRIVER_2_LED_TOTAL 34
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q8/ansi_encoder/info.json b/keyboards/keychron/q8/ansi_encoder/info.json
index ccf9453d53..b3f82637db 100644
--- a/keyboards/keychron/q8/ansi_encoder/info.json
+++ b/keyboards/keychron/q8/ansi_encoder/info.json
@@ -1,28 +1,91 @@
{
- "keyboard_name": "Keychron Q8",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0181",
- "device_version": "1.0.0"
- },
- "rgb_matrix": {
- "driver": "snled27351"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
+ "enabled": true,
"rotary": [
{"pin_a": "B5", "pin_b": "A10"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "rgb_matrix": {
+ "layout": [
+ {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+ {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+ {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+ {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+ {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+ {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+ {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+ {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+ {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+ {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+ {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+ {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+ {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+
+ {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+ {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+ {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+ {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+ {"matrix": [1, 4], "x": 65, "y": 20, "flags": 4},
+ {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+ {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+ {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+ {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+ {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+ {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+ {"matrix": [1, 11], "x": 170, "y": 14, "flags": 4},
+ {"matrix": [1, 12], "x": 183, "y": 14, "flags": 4},
+ {"matrix": [1, 13], "x": 200, "y": 14, "flags": 4},
+ {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+
+ {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+ {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+ {"matrix": [2, 2], "x": 39, "y": 28, "flags": 4},
+ {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+ {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+ {"matrix": [2, 5], "x": 78, "y": 36, "flags": 4},
+ {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+ {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+ {"matrix": [2, 9], "x": 135, "y": 32, "flags": 4},
+ {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+ {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+ {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+ {"matrix": [2, 13], "x": 197, "y": 27, "flags": 1},
+ {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+
+ {"matrix": [3, 0], "x": 7, "y": 40, "flags": 1},
+ {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+ {"matrix": [3, 3], "x": 43, "y": 42, "flags": 4},
+ {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+ {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+ {"matrix": [3, 6], "x": 82, "y": 50, "flags": 4},
+ {"matrix": [3, 7], "x": 102, "y": 52, "flags": 4},
+ {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+ {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+ {"matrix": [3, 10], "x": 141, "y": 44, "flags": 4},
+ {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+ {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+ {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+ {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+
+ {"matrix": [4, 0], "x": 0, "y": 53, "flags": 1},
+ {"matrix": [4, 1], "x": 17, "y": 53, "flags": 1},
+ {"matrix": [4, 2], "x": 42, "y": 55, "flags": 1},
+ {"matrix": [4, 3], "x": 65, "y": 60, "flags": 4},
+ {"matrix": [4, 6], "x": 86, "y": 64, "flags": 1},
+ {"matrix": [4, 7], "x": 107, "y": 64, "flags": 1},
+ {"matrix": [4, 8], "x": 131, "y": 59, "flags": 4},
+ {"matrix": [4, 9], "x": 156, "y": 54, "flags": 1},
+ {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+ {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+ {"matrix": [4, 14], "x": 222, "y": 56, "flags": 1}
+ ]
+ },
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0181"
+ },
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
@@ -87,7 +150,6 @@
{"matrix": [3, 12], "x": 14.25, "y": 3.25},
{"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
{"matrix": [3, 14], "x": 17.25, "y": 3.5},
-
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
{"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
@@ -102,4 +164,4 @@
]
}
}
-}
+} \ No newline at end of file
diff --git a/keyboards/keychron/q8/ansi_encoder/rules.mk b/keyboards/keychron/q8/ansi_encoder/rules.mk
index 5d77f09971..6e7633bfe0 100644
--- a/keyboards/keychron/q8/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q8/ansi_encoder/rules.mk
@@ -1,15 +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 = yes # Enable USB 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 # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
+# This file intentionally left blank
diff --git a/keyboards/keychron/q8/config.h b/keyboards/keychron/q8/config.h
index 7ecbf40b23..163d3775d9 100644
--- a/keyboards/keychron/q8/config.h
+++ b/keyboards/keychron/q8/config.h
@@ -40,62 +40,8 @@
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
-/* Turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Turn off effects when suspended */
+#define RGB_MATRIX_SLEEP \ No newline at end of file
diff --git a/keyboards/keychron/q8/info.json b/keyboards/keychron/q8/info.json
new file mode 100644
index 0000000000..7f98bf537c
--- /dev/null
+++ b/keyboards/keychron/q8/info.json
@@ -0,0 +1,60 @@
+{
+ "manufacturer": "Keychron",
+ "keyboard_name": "Keychron Q8",
+ "maintainer": "lalalademaxiya1",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "ROW2COL",
+ "dynamic_keymap": {
+ "layer_count": 5
+ },
+ "eeprom": {
+ "wear_levling": {
+ "backing_size": 4096
+ }
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
+ "rows": ["B4", "B3", "A15", "A14", "A13"]
+ },
+ "processor": "STM32L432",
+ "rgb_matrix": {
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_simple": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "driver": "snled27351"
+ },
+ "url": "https://github.com/Keychron",
+ "usb": {
+ "vid": "0x3434"
+ }
+} \ No newline at end of file
diff --git a/keyboards/keychron/q8/iso/config.h b/keyboards/keychron/q8/iso/config.h
index 99ba64d713..7a10ce6d65 100644
--- a/keyboards/keychron/q8/iso/config.h
+++ b/keyboards/keychron/q8/iso/config.h
@@ -16,10 +16,5 @@
#pragma once
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 35
-#define DRIVER_2_LED_TOTAL 35
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 29
diff --git a/keyboards/keychron/q8/iso/info.json b/keyboards/keychron/q8/iso/info.json
index 28d586984e..fe87955c39 100644
--- a/keyboards/keychron/q8/iso/info.json
+++ b/keyboards/keychron/q8/iso/info.json
@@ -1,23 +1,86 @@
{
- "keyboard_name": "Keychron Q8",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0182",
- "device_version": "1.0.0"
- },
"rgb_matrix": {
- "driver": "snled27351"
+ "layout": [
+ {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+ {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+ {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+ {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+ {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+ {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+ {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+ {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+ {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+ {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+ {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+ {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+ {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+
+ {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+ {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+ {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+ {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+ {"matrix": [1, 4], "x": 65, "y": 19, "flags": 4},
+ {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+ {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+ {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+ {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+ {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+ {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+ {"matrix": [1, 11], "x": 172, "y": 14, "flags": 4},
+ {"matrix": [1, 12], "x": 186, "y": 14, "flags": 4},
+ {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+
+ {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+ {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+ {"matrix": [2, 2], "x": 39, "y": 27, "flags": 4},
+ {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+ {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+ {"matrix": [2, 5], "x": 78, "y": 35, "flags": 4},
+ {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+ {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+ {"matrix": [2, 9], "x": 135, "y": 31, "flags": 4},
+ {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+ {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+ {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+ {"matrix": [2, 13], "x": 189, "y": 27, "flags": 4},
+ {"matrix": [1, 13], "x": 207, "y": 22, "flags": 1},
+ {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+
+ {"matrix": [3, 0], "x": 0, "y": 40, "flags": 1},
+ {"matrix": [3, 1], "x": 15, "y": 40, "flags": 4},
+ {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+ {"matrix": [3, 3], "x": 43, "y": 41, "flags": 4},
+ {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+ {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+ {"matrix": [3, 6], "x": 82, "y": 49, "flags": 4},
+ {"matrix": [3, 7], "x": 102, "y": 51, "flags": 4},
+ {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+ {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+ {"matrix": [3, 10], "x": 141, "y": 43, "flags": 4},
+ {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+ {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+ {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+ {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+
+ {"matrix": [4, 0], "x": 0, "y": 52, "flags": 1},
+ {"matrix": [4, 1], "x": 17, "y": 52, "flags": 1},
+ {"matrix": [4, 2], "x": 42, "y": 54, "flags": 1},
+ {"matrix": [4, 3], "x": 65, "y": 59, "flags": 1},
+ {"matrix": [4, 6], "x": 86, "y": 63, "flags": 1},
+ {"matrix": [4, 7], "x": 104, "y": 64, "flags": 1},
+ {"matrix": [4, 8], "x": 129, "y": 59, "flags": 1},
+ {"matrix": [4, 9], "x": 153, "y": 54, "flags": 1},
+ {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+ {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+ {"matrix": [4, 14], "x": 222, "y": 59, "flags": 1}
+ ]
},
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0182"
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_70": {
"layout": [
@@ -83,7 +146,6 @@
{"matrix": [3, 12], "x": 14.25, "y": 3.25},
{"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
{"matrix": [3, 14], "x": 17.25, "y": 3.5},
-
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
{"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
@@ -98,4 +160,4 @@
]
}
}
-}
+} \ No newline at end of file
diff --git a/keyboards/keychron/q8/iso/iso.c b/keyboards/keychron/q8/iso/iso.c
index dbcefd76c0..aab7ab357b 100644
--- a/keyboards/keychron/q8/iso/iso.c
+++ b/keyboards/keychron/q8/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
@@ -103,33 +103,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1}
};
-#define __ NO_LED
-
-led_config_t g_led_config = {
- {
- // Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 42, 28 },
- { 29, 30, 31, 32, 33, 34, __, 35, 36, 37, 38, 39, 40, 41, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 },
- { 59, 60, 61, 62, __, __, 63, 64, 65, 66, __, __, 67, 68, 69 },
- },
- {
- // LED Index to Physical Position
- {7,1}, {20,1}, {33,0}, {48,3}, {61,6}, {74,8}, {87,11}, {106,11}, {119,8}, {132,6}, {145,3}, {160,0}, {173,1}, {193,1}, {220,0},
- {7,14}, {24,14}, {39,14}, {52,17}, {65,19}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {172,14}, {186,14}, {222,16},
- {6,27}, {24,27}, {39,27}, {52,30}, {65,33}, {78,35}, {109,37}, {122,34}, {135,31}, {148,29}, {162,27}, {176,27}, {189,27}, {207,22}, {224,29},
- {0,40}, {15,40}, {28,40}, {43,41}, {56,44}, {69,47}, {82,49}, {102,51}, {115,49}, {128,46}, {141,43}, {154,41}, {169,40}, {187,40}, {209,43},
- {0,52}, {17,52}, {42,54}, {65,59}, {86,63}, {104,64}, {129,59}, {153,54}, {196,56}, {209,56}, {222,59},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- }
-};
-
#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/iso/rules.mk b/keyboards/keychron/q8/iso/rules.mk
index cf31e094cb..7ff128fa69 100644
--- a/keyboards/keychron/q8/iso/rules.mk
+++ b/keyboards/keychron/q8/iso/rules.mk
@@ -1,14 +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 = yes # Enable USB N-key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
+# This file intentionally left blank \ No newline at end of file
diff --git a/keyboards/keychron/q8/iso_encoder/config.h b/keyboards/keychron/q8/iso_encoder/config.h
index cdda41df5d..7a10ce6d65 100644
--- a/keyboards/keychron/q8/iso_encoder/config.h
+++ b/keyboards/keychron/q8/iso_encoder/config.h
@@ -16,13 +16,5 @@
#pragma once
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 35
-#define DRIVER_2_LED_TOTAL 35
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 29
diff --git a/keyboards/keychron/q8/iso_encoder/info.json b/keyboards/keychron/q8/iso_encoder/info.json
index 0d96f3f193..46a93ec63b 100644
--- a/keyboards/keychron/q8/iso_encoder/info.json
+++ b/keyboards/keychron/q8/iso_encoder/info.json
@@ -1,28 +1,92 @@
{
- "keyboard_name": "Keychron Q8",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0183",
- "device_version": "1.0.0"
- },
- "rgb_matrix": {
- "driver": "snled27351"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
+ "enabled": true,
"rotary": [
{"pin_a": "B5", "pin_b": "A10"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "rgb_matrix": {
+ "layout": [
+ {"matrix": [0, 0], "x": 7, "y": 1, "flags": 1},
+ {"matrix": [0, 1], "x": 20, "y": 1, "flags": 4},
+ {"matrix": [0, 2], "x": 33, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 3, "flags": 4},
+ {"matrix": [0, 4], "x": 61, "y": 6, "flags": 4},
+ {"matrix": [0, 5], "x": 74, "y": 8, "flags": 4},
+ {"matrix": [0, 6], "x": 87, "y": 11, "flags": 4},
+ {"matrix": [0, 7], "x": 106, "y": 11, "flags": 4},
+ {"matrix": [0, 8], "x": 119, "y": 8, "flags": 4},
+ {"matrix": [0, 9], "x": 132, "y": 6, "flags": 4},
+ {"matrix": [0, 10], "x": 145, "y": 3, "flags": 4},
+ {"matrix": [0, 11], "x": 160, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 173, "y": 1, "flags": 4},
+ {"matrix": [0, 13], "x": 193, "y": 1, "flags": 1},
+ {"matrix": [0, 14], "x": 220, "y": 0, "flags": 1},
+
+ {"matrix": [1, 0], "x": 7, "y": 14, "flags": 1},
+ {"matrix": [1, 1], "x": 24, "y": 14, "flags": 4},
+ {"matrix": [1, 2], "x": 39, "y": 14, "flags": 4},
+ {"matrix": [1, 3], "x": 52, "y": 17, "flags": 4},
+ {"matrix": [1, 4], "x": 65, "y": 19, "flags": 4},
+ {"matrix": [1, 5], "x": 78, "y": 22, "flags": 4},
+ {"matrix": [1, 6], "x": 103, "y": 25, "flags": 4},
+ {"matrix": [1, 7], "x": 116, "y": 22, "flags": 4},
+ {"matrix": [1, 8], "x": 129, "y": 20, "flags": 4},
+ {"matrix": [1, 9], "x": 142, "y": 17, "flags": 4},
+ {"matrix": [1, 10], "x": 155, "y": 14, "flags": 4},
+ {"matrix": [1, 11], "x": 172, "y": 14, "flags": 4},
+ {"matrix": [1, 12], "x": 186, "y": 14, "flags": 4},
+ {"matrix": [1, 14], "x": 222, "y": 16, "flags": 1},
+
+ {"matrix": [2, 0], "x": 6, "y": 27, "flags": 8},
+ {"matrix": [2, 1], "x": 24, "y": 27, "flags": 4},
+ {"matrix": [2, 2], "x": 39, "y": 27, "flags": 4},
+ {"matrix": [2, 3], "x": 52, "y": 30, "flags": 4},
+ {"matrix": [2, 4], "x": 65, "y": 33, "flags": 4},
+ {"matrix": [2, 5], "x": 78, "y": 35, "flags": 4},
+ {"matrix": [2, 7], "x": 109, "y": 37, "flags": 4},
+ {"matrix": [2, 8], "x": 122, "y": 34, "flags": 4},
+ {"matrix": [2, 9], "x": 135, "y": 31, "flags": 4},
+ {"matrix": [2, 10], "x": 148, "y": 29, "flags": 4},
+ {"matrix": [2, 11], "x": 162, "y": 27, "flags": 4},
+ {"matrix": [2, 12], "x": 176, "y": 27, "flags": 4},
+ {"matrix": [2, 13], "x": 189, "y": 27, "flags": 4},
+ {"matrix": [1, 13], "x": 207, "y": 22, "flags": 1},
+ {"matrix": [2, 14], "x": 224, "y": 29, "flags": 1},
+
+ {"matrix": [3, 0], "x": 0, "y": 40, "flags": 1},
+ {"matrix": [3, 1], "x": 15, "y": 40, "flags": 4},
+ {"matrix": [3, 2], "x": 28, "y": 40, "flags": 4},
+ {"matrix": [3, 3], "x": 43, "y": 41, "flags": 4},
+ {"matrix": [3, 4], "x": 56, "y": 44, "flags": 4},
+ {"matrix": [3, 5], "x": 69, "y": 47, "flags": 4},
+ {"matrix": [3, 6], "x": 82, "y": 49, "flags": 4},
+ {"matrix": [3, 7], "x": 102, "y": 51, "flags": 4},
+ {"matrix": [3, 8], "x": 115, "y": 49, "flags": 4},
+ {"matrix": [3, 9], "x": 128, "y": 46, "flags": 4},
+ {"matrix": [3, 10], "x": 141, "y": 43, "flags": 4},
+ {"matrix": [3, 11], "x": 154, "y": 41, "flags": 4},
+ {"matrix": [3, 12], "x": 169, "y": 40, "flags": 4},
+ {"matrix": [3, 13], "x": 187, "y": 40, "flags": 1},
+ {"matrix": [3, 14], "x": 209, "y": 43, "flags": 1},
+
+ {"matrix": [4, 0], "x": 0, "y": 52, "flags": 1},
+ {"matrix": [4, 1], "x": 17, "y": 52, "flags": 1},
+ {"matrix": [4, 2], "x": 42, "y": 54, "flags": 1},
+ {"matrix": [4, 3], "x": 65, "y": 59, "flags": 1},
+ {"matrix": [4, 6], "x": 86, "y": 63, "flags": 1},
+ {"matrix": [4, 7], "x": 104, "y": 64, "flags": 1},
+ {"matrix": [4, 8], "x": 129, "y": 59, "flags": 1},
+ {"matrix": [4, 9], "x": 153, "y": 54, "flags": 1},
+ {"matrix": [4, 12], "x": 196, "y": 56, "flags": 1},
+ {"matrix": [4, 13], "x": 209, "y": 56, "flags": 1},
+ {"matrix": [4, 14], "x": 222, "y": 59, "flags": 1}
+ ]
+ },
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0183"
+ },
"layouts": {
"LAYOUT_iso_70": {
"layout": [
@@ -103,4 +167,4 @@
]
}
}
-}
+} \ No newline at end of file
diff --git a/keyboards/keychron/q8/iso_encoder/iso_encoder.c b/keyboards/keychron/q8/iso_encoder/iso_encoder.c
index dbcefd76c0..aab7ab357b 100644
--- a/keyboards/keychron/q8/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q8/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
@@ -103,33 +103,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1}
};
-#define __ NO_LED
-
-led_config_t g_led_config = {
- {
- // Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 42, 28 },
- { 29, 30, 31, 32, 33, 34, __, 35, 36, 37, 38, 39, 40, 41, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 },
- { 59, 60, 61, 62, __, __, 63, 64, 65, 66, __, __, 67, 68, 69 },
- },
- {
- // LED Index to Physical Position
- {7,1}, {20,1}, {33,0}, {48,3}, {61,6}, {74,8}, {87,11}, {106,11}, {119,8}, {132,6}, {145,3}, {160,0}, {173,1}, {193,1}, {220,0},
- {7,14}, {24,14}, {39,14}, {52,17}, {65,19}, {78,22}, {103,25}, {116,22}, {129,20}, {142,17}, {155,14}, {172,14}, {186,14}, {222,16},
- {6,27}, {24,27}, {39,27}, {52,30}, {65,33}, {78,35}, {109,37}, {122,34}, {135,31}, {148,29}, {162,27}, {176,27}, {189,27}, {207,22}, {224,29},
- {0,40}, {15,40}, {28,40}, {43,41}, {56,44}, {69,47}, {82,49}, {102,51}, {115,49}, {128,46}, {141,43}, {154,41}, {169,40}, {187,40}, {209,43},
- {0,52}, {17,52}, {42,54}, {65,59}, {86,63}, {104,64}, {129,59}, {153,54}, {196,56}, {209,56}, {222,59},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- }
-};
-
#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/iso_encoder/rules.mk b/keyboards/keychron/q8/iso_encoder/rules.mk
index 5d77f09971..6e7633bfe0 100644
--- a/keyboards/keychron/q8/iso_encoder/rules.mk
+++ b/keyboards/keychron/q8/iso_encoder/rules.mk
@@ -1,15 +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 = yes # Enable USB 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 # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
+# This file intentionally left blank
diff --git a/keyboards/keychron/q8/readme.md b/keyboards/keychron/q8/readme.md
index da200e2c18..eaa286899a 100644
--- a/keyboards/keychron/q8/readme.md
+++ b/keyboards/keychron/q8/readme.md
@@ -1,19 +1,27 @@
# Keychron Q8
+![Keychron Q8](https://i.imgur.com/FQnOwRrh.jpg)
+
A customizable 65% Alice layout keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q8
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q8 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q8-alice-layout-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/q8/ansi:default
+ make keychron/q8/ansi_encoder:default
+ make keychron/q8/iso:default
+ make keychron/q8/iso_encoder:default
-Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+Flashing example for this keyboard:
make keychron/q8/ansi:default:flash
+ make keychron/q8/ansi_encoder:default:flash
+ make keychron/q8/iso:default:flash
+ make keychron/q8/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
-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).
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file
diff --git a/keyboards/keychron/q9/ansi/ansi.c b/keyboards/keychron/q9/ansi/ansi.c
index 9178c8dcc7..90dcc2d0a5 100644
--- a/keyboards/keychron/q9/ansi/ansi.c
+++ b/keyboards/keychron/q9/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
index 58d66e0473..84d4c4be9d 100644
--- a/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q9/config.h b/keyboards/keychron/q9/config.h
index 4226980d3e..609e5c4079 100644
--- a/keyboards/keychron/q9/config.h
+++ b/keyboards/keychron/q9/config.h
@@ -36,7 +36,7 @@
{ 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70 }
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso/iso.c b/keyboards/keychron/q9/iso/iso.c
index 1917b61f37..2f8d78feb2 100644
--- a/keyboards/keychron/q9/iso/iso.c
+++ b/keyboards/keychron/q9/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q9/iso_encoder/iso_encoder.c b/keyboards/keychron/q9/iso_encoder/iso_encoder.c
index 3a161fe9d7..4706ab3f39 100644
--- a/keyboards/keychron/q9/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q9/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
index d264334fa0..ffc213b75b 100755
--- a/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/q9_plus/config.h b/keyboards/keychron/q9_plus/config.h
index c9ef05b613..cbd3c8b11b 100755
--- a/keyboards/keychron/q9_plus/config.h
+++ b/keyboards/keychron/q9_plus/config.h
@@ -37,7 +37,7 @@
{ 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70 }
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/s1/ansi/rgb/config.h b/keyboards/keychron/s1/ansi/rgb/config.h
index 647a877a4c..b4c9370bd0 100644
--- a/keyboards/keychron/s1/ansi/rgb/config.h
+++ b/keyboards/keychron/s1/ansi/rgb/config.h
@@ -28,7 +28,7 @@
{ 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48 }
/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 46
diff --git a/keyboards/keychron/s1/ansi/rgb/rgb.c b/keyboards/keychron/s1/ansi/rgb/rgb.c
index ca39b0c796..e81e7db402 100644
--- a/keyboards/keychron/s1/ansi/rgb/rgb.c
+++ b/keyboards/keychron/s1/ansi/rgb/rgb.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/s1/ansi/white/config.h b/keyboards/keychron/s1/ansi/white/config.h
index fbe02caeb1..9aedc6b47f 100644
--- a/keyboards/keychron/s1/ansi/white/config.h
+++ b/keyboards/keychron/s1/ansi/white/config.h
@@ -18,48 +18,10 @@
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
-#define DRIVER_1_LED_TOTAL 84
-#define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL
#define SNLED27351_CURRENT_TUNE \
{ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } // 250mA
// { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 } // 127mA
-/* Disable LED lighting when PC is in suspend */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 46
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-#define ENABLE_LED_MATRIX_NONE
-#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
-// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
-#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
-// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
-#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
-
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
-// #endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
-#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
-// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/s1/ansi/white/info.json b/keyboards/keychron/s1/ansi/white/info.json
index bcd64eea59..0e20c9ebe6 100644
--- a/keyboards/keychron/s1/ansi/white/info.json
+++ b/keyboards/keychron/s1/ansi/white/info.json
@@ -9,7 +9,31 @@
"device_version": "1.0.0"
},
"led_matrix": {
- "driver": "snled27351"
+ "animations":{
+ "alphas_mods": true,
+ "breathing": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": 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,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "driver": "snled27351",
+ "sleep": true,
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
diff --git a/keyboards/keychron/s1/ansi/white/white.c b/keyboards/keychron/s1/ansi/white/white.c
index b3a49ae9eb..d6a5eaf232 100644
--- a/keyboards/keychron/s1/ansi/white/white.c
+++ b/keyboards/keychron/s1/ansi/white/white.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
diff --git a/keyboards/keychron/v1/ansi/ansi.c b/keyboards/keychron/v1/ansi/ansi.c
index ed8a6ed1af..2db3ab782d 100644
--- a/keyboards/keychron/v1/ansi/ansi.c
+++ b/keyboards/keychron/v1/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
index ed8a6ed1af..2db3ab782d 100644
--- a/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v1/config.h b/keyboards/keychron/v1/config.h
index e5b6805859..84334306dd 100644
--- a/keyboards/keychron/v1/config.h
+++ b/keyboards/keychron/v1/config.h
@@ -45,7 +45,7 @@
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/v1/iso/iso.c b/keyboards/keychron/v1/iso/iso.c
index 00909c85e3..dff029055b 100644
--- a/keyboards/keychron/v1/iso/iso.c
+++ b/keyboards/keychron/v1/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v1/iso_encoder/iso_encoder.c b/keyboards/keychron/v1/iso_encoder/iso_encoder.c
index 00909c85e3..dff029055b 100644
--- a/keyboards/keychron/v1/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v1/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v1/jis/jis.c b/keyboards/keychron/v1/jis/jis.c
index 6bc647656d..029c58fd70 100644
--- a/keyboards/keychron/v1/jis/jis.c
+++ b/keyboards/keychron/v1/jis/jis.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v1/jis_encoder/jis_encoder.c b/keyboards/keychron/v1/jis_encoder/jis_encoder.c
index 6bc647656d..029c58fd70 100644
--- a/keyboards/keychron/v1/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v1/jis_encoder/jis_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
index 8b787aad18..10cf2a85fd 100644
--- a/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v10/config.h b/keyboards/keychron/v10/config.h
index d643049c03..01d3b3e042 100644
--- a/keyboards/keychron/v10/config.h
+++ b/keyboards/keychron/v10/config.h
@@ -51,7 +51,7 @@
#define MATRIX_MASKED
/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/v10/iso_encoder/iso_encoder.c b/keyboards/keychron/v10/iso_encoder/iso_encoder.c
index f7e0a10470..b4bfb69206 100644
--- a/keyboards/keychron/v10/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v10/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v2/ansi/ansi.c b/keyboards/keychron/v2/ansi/ansi.c
index d98a96fdf9..7e3214f175 100644
--- a/keyboards/keychron/v2/ansi/ansi.c
+++ b/keyboards/keychron/v2/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
index 64153d4251..df33725b5e 100644
--- a/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v2/config.h b/keyboards/keychron/v2/config.h
index 7efbf8c549..f42e87368b 100644
--- a/keyboards/keychron/v2/config.h
+++ b/keyboards/keychron/v2/config.h
@@ -39,7 +39,7 @@
#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso/iso.c b/keyboards/keychron/v2/iso/iso.c
index 37cac7337d..ba9d47a2f1 100644
--- a/keyboards/keychron/v2/iso/iso.c
+++ b/keyboards/keychron/v2/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v2/iso_encoder/iso_encoder.c b/keyboards/keychron/v2/iso_encoder/iso_encoder.c
index 37cac7337d..ba9d47a2f1 100644
--- a/keyboards/keychron/v2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v2/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v2/jis/jis.c b/keyboards/keychron/v2/jis/jis.c
index 42285e56ca..0d638b5753 100644
--- a/keyboards/keychron/v2/jis/jis.c
+++ b/keyboards/keychron/v2/jis/jis.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v2/jis_encoder/jis_encoder.c b/keyboards/keychron/v2/jis_encoder/jis_encoder.c
index 5ccbb807cb..10a3ca25a7 100644
--- a/keyboards/keychron/v2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v2/jis_encoder/jis_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v3/ansi/ansi.c b/keyboards/keychron/v3/ansi/ansi.c
index 16d6b77131..6205b0b01b 100644
--- a/keyboards/keychron/v3/ansi/ansi.c
+++ b/keyboards/keychron/v3/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
index 39fa354539..27f1f1f830 100644
--- a/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v3/config.h b/keyboards/keychron/v3/config.h
index d3e02d8f81..9532062aaa 100644
--- a/keyboards/keychron/v3/config.h
+++ b/keyboards/keychron/v3/config.h
@@ -39,7 +39,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/v3/iso/iso.c b/keyboards/keychron/v3/iso/iso.c
index 24b406467a..be0934b4a0 100644
--- a/keyboards/keychron/v3/iso/iso.c
+++ b/keyboards/keychron/v3/iso/iso.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v3/iso_encoder/iso_encoder.c b/keyboards/keychron/v3/iso_encoder/iso_encoder.c
index 53fe99aac0..0456fb99f9 100644
--- a/keyboards/keychron/v3/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v3/iso_encoder/iso_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v3/jis/jis.c b/keyboards/keychron/v3/jis/jis.c
index 70dbf812fa..be93dbc641 100644
--- a/keyboards/keychron/v3/jis/jis.c
+++ b/keyboards/keychron/v3/jis/jis.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v3/jis_encoder/jis_encoder.c b/keyboards/keychron/v3/jis_encoder/jis_encoder.c
index cf1065eed9..9eea7b3994 100644
--- a/keyboards/keychron/v3/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v3/jis_encoder/jis_encoder.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v4/ansi/ansi.c b/keyboards/keychron/v4/ansi/ansi.c
index 6326405380..24afdb65b7 100644
--- a/keyboards/keychron/v4/ansi/ansi.c
+++ b/keyboards/keychron/v4/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v4/config.h b/keyboards/keychron/v4/config.h
index 8325317c27..27147555ea 100644
--- a/keyboards/keychron/v4/config.h
+++ b/keyboards/keychron/v4/config.h
@@ -36,7 +36,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/iso/iso.c b/keyboards/keychron/v4/iso/iso.c
index 9116135a4a..0b59f04d52 100644
--- a/keyboards/keychron/v4/iso/iso.c
+++ b/keyboards/keychron/v4/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v5/ansi/ansi.c b/keyboards/keychron/v5/ansi/ansi.c
index 073fb0cde0..3f85b6b210 100644
--- a/keyboards/keychron/v5/ansi/ansi.c
+++ b/keyboards/keychron/v5/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
index 62ebc3f7b3..06c7ae6d92 100644
--- a/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v5/config.h b/keyboards/keychron/v5/config.h
index 8c4128a43e..128c0aa9f1 100644
--- a/keyboards/keychron/v5/config.h
+++ b/keyboards/keychron/v5/config.h
@@ -46,7 +46,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/v5/iso/iso.c b/keyboards/keychron/v5/iso/iso.c
index 1552de7d47..7b2739d53e 100644
--- a/keyboards/keychron/v5/iso/iso.c
+++ b/keyboards/keychron/v5/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v5/iso_encoder/iso_encoder.c b/keyboards/keychron/v5/iso_encoder/iso_encoder.c
index 95eb62ae1f..9a13422d2c 100644
--- a/keyboards/keychron/v5/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v5/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v6/ansi/ansi.c b/keyboards/keychron/v6/ansi/ansi.c
index a3f1032a1e..be5bad84ff 100644
--- a/keyboards/keychron/v6/ansi/ansi.c
+++ b/keyboards/keychron/v6/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
index 02e0de0b3d..b83a5b0fb0 100644
--- a/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v6/config.h b/keyboards/keychron/v6/config.h
index eb2296a172..129f3925bb 100644
--- a/keyboards/keychron/v6/config.h
+++ b/keyboards/keychron/v6/config.h
@@ -41,7 +41,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/keychron/v6/iso/iso.c b/keyboards/keychron/v6/iso/iso.c
index 7804ca3600..1138cb07d7 100644
--- a/keyboards/keychron/v6/iso/iso.c
+++ b/keyboards/keychron/v6/iso/iso.c
@@ -20,7 +20,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v6/iso_encoder/iso_encoder.c b/keyboards/keychron/v6/iso_encoder/iso_encoder.c
index bd9189f8b5..47f609d817 100644
--- a/keyboards/keychron/v6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v6/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v7/ansi/ansi.c b/keyboards/keychron/v7/ansi/ansi.c
index 07a98622a4..132f568519 100644
--- a/keyboards/keychron/v7/ansi/ansi.c
+++ b/keyboards/keychron/v7/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v7/config.h b/keyboards/keychron/v7/config.h
index cff96774e3..500e4df30d 100644
--- a/keyboards/keychron/v7/config.h
+++ b/keyboards/keychron/v7/config.h
@@ -37,7 +37,7 @@
#define MATRIX_MASKED
/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/iso/iso.c b/keyboards/keychron/v7/iso/iso.c
index a35dcb2092..7aaeafe65e 100644
--- a/keyboards/keychron/v7/iso/iso.c
+++ b/keyboards/keychron/v7/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v8/ansi/ansi.c b/keyboards/keychron/v8/ansi/ansi.c
index bda7ba1d74..e5840fe966 100644
--- a/keyboards/keychron/v8/ansi/ansi.c
+++ b/keyboards/keychron/v8/ansi/ansi.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
index bda7ba1d74..e5840fe966 100644
--- a/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v8/config.h b/keyboards/keychron/v8/config.h
index 3a860e8eb6..c9db5c0755 100644
--- a/keyboards/keychron/v8/config.h
+++ b/keyboards/keychron/v8/config.h
@@ -40,7 +40,7 @@
#define MATRIX_MASKED
/* Turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso/iso.c b/keyboards/keychron/v8/iso/iso.c
index 88040c3ab8..07b350209d 100644
--- a/keyboards/keychron/v8/iso/iso.c
+++ b/keyboards/keychron/v8/iso/iso.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/keychron/v8/iso_encoder/iso_encoder.c b/keyboards/keychron/v8/iso_encoder/iso_encoder.c
index 88040c3ab8..07b350209d 100644
--- a/keyboards/keychron/v8/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v8/iso_encoder/iso_encoder.c
@@ -20,7 +20,7 @@
// clang-format off
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
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/enter67/info.json b/keyboards/kezewa/enter67/info.json
index df1d7f6b5b..df1d7f6b5b 100644
--- a/keyboards/enter67/info.json
+++ b/keyboards/kezewa/enter67/info.json
diff --git a/keyboards/enter67/keymaps/default/keymap.c b/keyboards/kezewa/enter67/keymaps/default/keymap.c
index 1f3d16c095..1f3d16c095 100644
--- a/keyboards/enter67/keymaps/default/keymap.c
+++ b/keyboards/kezewa/enter67/keymaps/default/keymap.c
diff --git a/keyboards/enter67/keymaps/via/keymap.c b/keyboards/kezewa/enter67/keymaps/via/keymap.c
index 1f3d16c095..1f3d16c095 100644
--- a/keyboards/enter67/keymaps/via/keymap.c
+++ b/keyboards/kezewa/enter67/keymaps/via/keymap.c
diff --git a/keyboards/era/klein/keymaps/via/rules.mk b/keyboards/kezewa/enter67/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/era/klein/keymaps/via/rules.mk
+++ b/keyboards/kezewa/enter67/keymaps/via/rules.mk
diff --git a/keyboards/kezewa/enter67/readme.md b/keyboards/kezewa/enter67/readme.md
new file mode 100644
index 0000000000..beb5074f9d
--- /dev/null
+++ b/keyboards/kezewa/enter67/readme.md
@@ -0,0 +1,27 @@
+# ENTER67 - PCB
+
+![enter67](https://imgur.com/igF8Lurh.jpg)
+
+67 layout PCB, with option for stepped Caps Lock
+
+* Keyboard Maintainer: https://github.com/LXF-YZP
+* Hardware Supported: enter67 PCB
+* Hardware Availability: [Kezewa](https://kezewa.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kezewa/enter67:default
+
+Flashing example for this keyboard:
+
+ make kezewa/enter67: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/enter67/rules.mk b/keyboards/kezewa/enter67/rules.mk
index 7ff128fa69..7ff128fa69 100644
--- a/keyboards/enter67/rules.mk
+++ b/keyboards/kezewa/enter67/rules.mk
diff --git a/keyboards/enter80/info.json b/keyboards/kezewa/enter80/info.json
index a4fe83b3ac..a4fe83b3ac 100644
--- a/keyboards/enter80/info.json
+++ b/keyboards/kezewa/enter80/info.json
diff --git a/keyboards/enter80/keymaps/default/keymap.c b/keyboards/kezewa/enter80/keymaps/default/keymap.c
index e3bc2d6526..e3bc2d6526 100644
--- a/keyboards/enter80/keymaps/default/keymap.c
+++ b/keyboards/kezewa/enter80/keymaps/default/keymap.c
diff --git a/keyboards/enter80/keymaps/via/keymap.c b/keyboards/kezewa/enter80/keymaps/via/keymap.c
index e3bc2d6526..e3bc2d6526 100644
--- a/keyboards/enter80/keymaps/via/keymap.c
+++ b/keyboards/kezewa/enter80/keymaps/via/keymap.c
diff --git a/keyboards/kudox_game/keymaps/via/rules.mk b/keyboards/kezewa/enter80/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/kudox_game/keymaps/via/rules.mk
+++ b/keyboards/kezewa/enter80/keymaps/via/rules.mk
diff --git a/keyboards/enter80/matrix_diagram.md b/keyboards/kezewa/enter80/matrix_diagram.md
index 716538a4f5..716538a4f5 100644
--- a/keyboards/enter80/matrix_diagram.md
+++ b/keyboards/kezewa/enter80/matrix_diagram.md
diff --git a/keyboards/kezewa/enter80/readme.md b/keyboards/kezewa/enter80/readme.md
new file mode 100644
index 0000000000..eaecf514cb
--- /dev/null
+++ b/keyboards/kezewa/enter80/readme.md
@@ -0,0 +1,27 @@
+# ENTER80 - PCB
+
+![enter80](https://i.imgur.com/rH9m5Ysh.jpg)
+
+80 layout PCB, With caps lock light
+
+* Keyboard Maintainer: https://github.com/LXF-YZP
+* Hardware Supported: enter80 PCB
+* Hardware Availability: [Kezewa](https://kezewa.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make enter80:default
+
+Flashing example for this keyboard:
+
+ make enter80: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/enter80/rules.mk b/keyboards/kezewa/enter80/rules.mk
index 7ff128fa69..7ff128fa69 100644
--- a/keyboards/enter80/rules.mk
+++ b/keyboards/kezewa/enter80/rules.mk
diff --git a/keyboards/kikoslab/kl90/config.h b/keyboards/kikoslab/kl90/config.h
new file mode 100644
index 0000000000..c77c6e6276
--- /dev/null
+++ b/keyboards/kikoslab/kl90/config.h
@@ -0,0 +1,19 @@
+/*
+Copyright 2021 IntusFacultas <pdelmorallopez@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
+
+#define ENCODER_MAP_KEY_DELAY 2
diff --git a/keyboards/kikoslab/kl90/keymaps/via/keymap.c b/keyboards/kikoslab/kl90/keymaps/via/keymap.c
index 4dbffe8f77..7534fa2761 100644
--- a/keyboards/kikoslab/kl90/keymaps/via/keymap.c
+++ b/keyboards/kikoslab/kl90/keymaps/via/keymap.c
@@ -16,10 +16,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
+enum Layers {
+ _BASE,
+ _LOWER,
+ _RAISE,
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_all(
+[_BASE] = LAYOUT_all(
KC_DEL , KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_MPLY,
KC_F13 , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS ,
KC_F14 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL ,
@@ -27,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F16 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_BSLS, KC_UP , KC_PGDN,
KC_F17 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[1] = LAYOUT_all(
+[_LOWER] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -35,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-[2] = LAYOUT_all(
+[_RAISE] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,22 +49,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) { /* First encoder */
- if (clockwise) {
- tap_code(KC_WH_D);
- } else {
- tap_code(KC_WH_U);
- }
- } else if (index == 1) { /* Second encoder */
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- return true;
-}
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+};
+#endif
#ifdef OLED_ENABLE
diff --git a/keyboards/kikoslab/kl90/keymaps/via/rules.mk b/keyboards/kikoslab/kl90/keymaps/via/rules.mk
index d03b5f1ca7..16d6a247ec 100644
--- a/keyboards/kikoslab/kl90/keymaps/via/rules.mk
+++ b/keyboards/kikoslab/kl90/keymaps/via/rules.mk
@@ -1,2 +1,3 @@
VIA_ENABLE = yes
-WPM_ENABLE = yes \ No newline at end of file
+WPM_ENABLE = yes
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kinesis/alvicstep/matrix.c b/keyboards/kinesis/alvicstep/matrix.c
index 07df19e966..e1e637725b 100644
--- a/keyboards/kinesis/alvicstep/matrix.c
+++ b/keyboards/kinesis/alvicstep/matrix.c
@@ -116,7 +116,7 @@ uint8_t matrix_scan(void)
if (matrix_debouncing[i] != row) {
matrix_debouncing[i] = row;
if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
+ dprintf("bounce!: %02X\n", debouncing);
}
debouncing = DEBOUNCE;
}
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/kingly_keys/ropro/rules.mk b/keyboards/kingly_keys/ropro/rules.mk
index 81181d5245..2fde11543f 100644
--- a/keyboards/kingly_keys/ropro/rules.mk
+++ b/keyboards/kingly_keys/ropro/rules.mk
@@ -11,4 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
RGBLIGHT_ENABLE = yes
-LAYOUTS_HAS_RGB = yes
diff --git a/keyboards/kingly_keys/soap/rules.mk b/keyboards/kingly_keys/soap/rules.mk
index 81181d5245..2fde11543f 100644
--- a/keyboards/kingly_keys/soap/rules.mk
+++ b/keyboards/kingly_keys/soap/rules.mk
@@ -11,4 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
RGBLIGHT_ENABLE = yes
-LAYOUTS_HAS_RGB = yes
diff --git a/keyboards/kira75/config.h b/keyboards/kira/kira75/config.h
index d876570c80..d876570c80 100644
--- a/keyboards/kira75/config.h
+++ b/keyboards/kira/kira75/config.h
diff --git a/keyboards/kira75/info.json b/keyboards/kira/kira75/info.json
index 0a923fa44e..0a923fa44e 100644
--- a/keyboards/kira75/info.json
+++ b/keyboards/kira/kira75/info.json
diff --git a/keyboards/kira75/keymaps/default/keymap.c b/keyboards/kira/kira75/keymaps/default/keymap.c
index e0f5cbe0b7..e0f5cbe0b7 100644
--- a/keyboards/kira75/keymaps/default/keymap.c
+++ b/keyboards/kira/kira75/keymaps/default/keymap.c
diff --git a/keyboards/kira75/keymaps/default/readme.md b/keyboards/kira/kira75/keymaps/default/readme.md
index fcf6f71110..fcf6f71110 100644
--- a/keyboards/kira75/keymaps/default/readme.md
+++ b/keyboards/kira/kira75/keymaps/default/readme.md
diff --git a/keyboards/kira75/kira75.h b/keyboards/kira/kira75/kira75.h
index 8001d69e40..8001d69e40 100644
--- a/keyboards/kira75/kira75.h
+++ b/keyboards/kira/kira75/kira75.h
diff --git a/keyboards/kira/kira75/readme.md b/keyboards/kira/kira75/readme.md
new file mode 100644
index 0000000000..a30b60d179
--- /dev/null
+++ b/keyboards/kira/kira75/readme.md
@@ -0,0 +1,15 @@
+# Kira 75
+
+![kira75](imgur.com image replace me!)
+
+75% keyboard designed by thesiscamper
+
+Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+Hardware Supported: Kira 75
+Hardware Availability: Group Buy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kira/kira75:default
+
+See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
diff --git a/keyboards/kira75/rules.mk b/keyboards/kira/kira75/rules.mk
index 609fcf84a8..609fcf84a8 100644
--- a/keyboards/kira75/rules.mk
+++ b/keyboards/kira/kira75/rules.mk
diff --git a/keyboards/kira80/info.json b/keyboards/kira/kira80/info.json
index 0ec9e0b258..0ec9e0b258 100644
--- a/keyboards/kira80/info.json
+++ b/keyboards/kira/kira80/info.json
diff --git a/keyboards/kira80/keymaps/ansi/keymap.c b/keyboards/kira/kira80/keymaps/ansi/keymap.c
index cadda95908..cadda95908 100644
--- a/keyboards/kira80/keymaps/ansi/keymap.c
+++ b/keyboards/kira/kira80/keymaps/ansi/keymap.c
diff --git a/keyboards/kira80/keymaps/ansi/readme.md b/keyboards/kira/kira80/keymaps/ansi/readme.md
index 183eeaf748..183eeaf748 100644
--- a/keyboards/kira80/keymaps/ansi/readme.md
+++ b/keyboards/kira/kira80/keymaps/ansi/readme.md
diff --git a/keyboards/kira80/keymaps/ansi_wkl/keymap.c b/keyboards/kira/kira80/keymaps/ansi_wkl/keymap.c
index d3b1130a11..d3b1130a11 100644
--- a/keyboards/kira80/keymaps/ansi_wkl/keymap.c
+++ b/keyboards/kira/kira80/keymaps/ansi_wkl/keymap.c
diff --git a/keyboards/kira80/keymaps/ansi_wkl/readme.md b/keyboards/kira/kira80/keymaps/ansi_wkl/readme.md
index 6e87b5dca3..6e87b5dca3 100644
--- a/keyboards/kira80/keymaps/ansi_wkl/readme.md
+++ b/keyboards/kira/kira80/keymaps/ansi_wkl/readme.md
diff --git a/keyboards/kira80/keymaps/default/keymap.c b/keyboards/kira/kira80/keymaps/default/keymap.c
index c433b4351c..c433b4351c 100644
--- a/keyboards/kira80/keymaps/default/keymap.c
+++ b/keyboards/kira/kira80/keymaps/default/keymap.c
diff --git a/keyboards/kira80/keymaps/default/readme.md b/keyboards/kira/kira80/keymaps/default/readme.md
index 1441cdf666..1441cdf666 100644
--- a/keyboards/kira80/keymaps/default/readme.md
+++ b/keyboards/kira/kira80/keymaps/default/readme.md
diff --git a/keyboards/kira80/keymaps/iso/keymap.c b/keyboards/kira/kira80/keymaps/iso/keymap.c
index a6502d5ffa..a6502d5ffa 100644
--- a/keyboards/kira80/keymaps/iso/keymap.c
+++ b/keyboards/kira/kira80/keymaps/iso/keymap.c
diff --git a/keyboards/kira80/keymaps/iso/readme.md b/keyboards/kira/kira80/keymaps/iso/readme.md
index 538d1f5945..538d1f5945 100644
--- a/keyboards/kira80/keymaps/iso/readme.md
+++ b/keyboards/kira/kira80/keymaps/iso/readme.md
diff --git a/keyboards/kira80/keymaps/via/keymap.c b/keyboards/kira/kira80/keymaps/via/keymap.c
index ab04b07a0a..ab04b07a0a 100644
--- a/keyboards/kira80/keymaps/via/keymap.c
+++ b/keyboards/kira/kira80/keymaps/via/keymap.c
diff --git a/keyboards/kira80/keymaps/via/readme.md b/keyboards/kira/kira80/keymaps/via/readme.md
index a72e88c8ba..a72e88c8ba 100644
--- a/keyboards/kira80/keymaps/via/readme.md
+++ b/keyboards/kira/kira80/keymaps/via/readme.md
diff --git a/keyboards/kmac/keymaps/via/rules.mk b/keyboards/kira/kira80/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/kmac/keymaps/via/rules.mk
+++ b/keyboards/kira/kira80/keymaps/via/rules.mk
diff --git a/keyboards/kira/kira80/readme.md b/keyboards/kira/kira80/readme.md
new file mode 100644
index 0000000000..c9816a1246
--- /dev/null
+++ b/keyboards/kira/kira80/readme.md
@@ -0,0 +1,50 @@
+# Kira 80/TKL
+
+![kira80](https://i.imgur.com/QnGKnaml.jpg)
+![kira80pcb](https://i.imgur.com/wrEZhg5l.jpg)
+
+Custom TKL keyboard designed and made by Thesiscamper and EVE
+
+* Keyboard Maintainer: [elmo-space](https://github.com/elmo-space)
+* Hardware Supported: Kira 80 PCB made by EVE
+* Hardware Availability: limited [Group Buy](https://geekhack.org/index.php?topic=96381.0) finished
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kira/kira80:default
+
+Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+
+ make kira/kira80:default:flash
+
+**Reset Key:** Hold down the key located at `K102`, commonly programmed as 'Pause' while plugging in the keyboard.
+
+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).
+
+## Hardware Information
+
+Controller: ATmega32A
+
+### Pinout:
+
+|Pin |Use | |Pin |Use |
+|----|---------|-|----|---------------|
+|`A1`|Column 0 | |`B1`|Row 0 |
+|`A2`|Column 1 | |`B2`|Row 1 |
+|`A3`|Column 2 | |`B3`|Row 2 |
+|`A4`|Column 3 | |`B5`|Row 3 |
+|`A5`|Column 4 | |`B6`|Row 4 |
+|`A6`|Column 5 | |`B7`|Row 5 |
+|`A7`|Column 6 | |`B0`|Row 6 |
+|`C7`|Column 7 | | | |
+|`C6`|Column 8 | |`D1`|Caps Lock LED |
+|`C5`|Column 9 | |`D6`|Scroll Lock LED|
+|`C4`|Column 10| |`D4`|Backlight |
+|`C3`|Column 11| | | |
+|`A0`|Column 12| |`D2`|USB D+ |
+|`C2`|Column 13| |`D3`|USB D- |
+|`D7`|Column 14| | | |
+
+### Layout matrix:
+
+![matrix](https://i.imgur.com/FqjTNQS.png)
diff --git a/keyboards/kira80/rules.mk b/keyboards/kira/kira80/rules.mk
index f761646203..f761646203 100644
--- a/keyboards/kira80/rules.mk
+++ b/keyboards/kira/kira80/rules.mk
diff --git a/keyboards/kira75/readme.md b/keyboards/kira75/readme.md
deleted file mode 100644
index 5ab0b3f2cc..0000000000
--- a/keyboards/kira75/readme.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Kira 75
-
-![kira75](imgur.com image replace me!)
-
-75% keyboard designed by thesiscamper
-
-Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
-Hardware Supported: Kira 75
-Hardware Availability: Group Buy
-
-Make example for this keyboard (after setting up your build environment):
-
- make kira75:default
-
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
diff --git a/keyboards/kira80/readme.md b/keyboards/kira80/readme.md
deleted file mode 100644
index 535e191bf4..0000000000
--- a/keyboards/kira80/readme.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Kira 80/TKL
-
-![kira80](https://i.imgur.com/QnGKnaml.jpg)
-![kira80pcb](https://i.imgur.com/wrEZhg5l.jpg)
-
-Custom TKL keyboard designed and made by Thesiscamper and EVE
-
-* Keyboard Maintainer: [elmo-space](https://github.com/elmo-space)
-* Hardware Supported: Kira 80 PCB made by EVE
-* Hardware Availability: limited [Group Buy](https://geekhack.org/index.php?topic=96381.0) finished
-
-Make example for this keyboard (after setting up your build environment):
-
- make kira80:default
-
-Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
-
- make kira80:default:flash
-
-**Reset Key:** Hold down the key located at `K102`, commonly programmed as 'Pause' while plugging in the keyboard.
-
-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).
-
-## Hardware Information
-
-Controller: ATmega32A
-
-### Pinout:
-
-|Pin |Use | |Pin |Use |
-|----|---------|-|----|---------------|
-|`A1`|Column 0 | |`B1`|Row 0 |
-|`A2`|Column 1 | |`B2`|Row 1 |
-|`A3`|Column 2 | |`B3`|Row 2 |
-|`A4`|Column 3 | |`B5`|Row 3 |
-|`A5`|Column 4 | |`B6`|Row 4 |
-|`A6`|Column 5 | |`B7`|Row 5 |
-|`A7`|Column 6 | |`B0`|Row 6 |
-|`C7`|Column 7 | | | |
-|`C6`|Column 8 | |`D1`|Caps Lock LED |
-|`C5`|Column 9 | |`D6`|Scroll Lock LED|
-|`C4`|Column 10| |`D4`|Backlight |
-|`C3`|Column 11| | | |
-|`A0`|Column 12| |`D2`|USB D+ |
-|`C2`|Column 13| |`D3`|USB D- |
-|`D7`|Column 14| | | |
-
-### Layout matrix:
-
-![matrix](https://i.imgur.com/FqjTNQS.png)
diff --git a/keyboards/kmac/readme.md b/keyboards/kmac/readme.md
deleted file mode 100644
index 47dbaa847f..0000000000
--- a/keyboards/kmac/readme.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# KMAC
-
-A Korean custom keyboard designed by Byungho Kim and the KBDMania community.
-
-Keyboard Maintainer: [Mathias Andersson](https://github.com/wraul)
-Hardware Supported: KMAC & KMAC 2
-Hardware Availability: http://www.kbdmania.net/xe/news/5232321
-
-Make example for this keyboard (after setting up your build environment):
-
- make kmac: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).
-
-## Bootloader
-
-The PCB is hardwired to run the bootloader if the key at the `Caps Lock` position is held down when connecting the keyboard.
-
-## PCB versions
-
-The KMAC are available with two different PCB layouts, a winkey version and a winkeyless version. A default keymap are provided for each versions of the PCB.
diff --git a/keyboards/kmac_pad/readme.md b/keyboards/kmac_pad/readme.md
deleted file mode 100644
index 7605501f3a..0000000000
--- a/keyboards/kmac_pad/readme.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# KMAC PAD
-
-![kmac_pad](https://i.imgur.com/4P1ybgNl.jpg)
-
-KMAC PAD is a num pad keyboard.
-It can be used independently, but can also be used by connecting with KMAC keyboard case.
-
-* Keyboard Maintainer: [talsu](https://github.com/talsu)
-* Hardware Supported: KMAC PAD
-* Hardware Availability: http://www.kbdmania.net/xe/news/5232321
-
-Make example for this keyboard (after setting up your build environment):
-
- make kmac_pad:default
-
-Flashing example for this keyboard:
-
- make kmac_pad: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
-
-The PCB is hardwired to run the bootloader if the key at the `FN` position (the only key in first row) is held down when connecting the keyboard.
-
-## PCB
-
-![Imgur](https://i.imgur.com/ML66cvfl.jpg)
-![Imgur](https://i.imgur.com/Kr2Wdtkl.jpg)
-
-### Switch Pins
-
-The FN key in the `Row 0` is directly connected to the E2 pin.
-The rest of the rows below that use MATRIX. (`Row 1 ~ Row 5`)
-| Row | Pin |
-|:-----:| ---------------------- |
-| 0 | x (Not in Matrix) |
-| 1 | D0 |
-| 2 | D1 |
-| 3 | D2 |
-| 4 | D3 |
-| 5 | D5 |
-
-| Column | Pin |
-|:------:| --------------------- |
-| 0 | C7 |
-| 1 | C6 |
-| 2 | B6 |
-| 3 | B5 |
-
-### Backlight Pins
-
-There are 2 pins for backlight.
-
-The LED of the FN key uses pin `B3`.
-All other keys are connected to the `B1` pin.
diff --git a/keyboards/kprepublic/bm40hsrgb/rev1/config.h b/keyboards/kprepublic/bm40hsrgb/rev1/config.h
index ac0261a608..29e7af3a64 100755
--- a/keyboards/kprepublic/bm40hsrgb/rev1/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/rev1/config.h
@@ -24,7 +24,7 @@
#define RGB_MATRIX_LED_COUNT 53
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
diff --git a/keyboards/kprepublic/bm40hsrgb/rev1/rules.mk b/keyboards/kprepublic/bm40hsrgb/rev1/rules.mk
index 7e0de4a3e8..b0daa10a9c 100755
--- a/keyboards/kprepublic/bm40hsrgb/rev1/rules.mk
+++ b/keyboards/kprepublic/bm40hsrgb/rev1/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
-
-LAYOUTS_HAS_RGB = yes
diff --git a/keyboards/kprepublic/bm40hsrgb/rev2/config.h b/keyboards/kprepublic/bm40hsrgb/rev2/config.h
index 1cd3f7a6d3..edc61c36e8 100755
--- a/keyboards/kprepublic/bm40hsrgb/rev2/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/rev2/config.h
@@ -18,4 +18,4 @@
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define RGB_MATRIX_LED_COUNT 47
#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
diff --git a/keyboards/kprepublic/bm40hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm40hsrgb/rev2/rev2.c
index 4bf9168935..8dd4cc2af1 100755
--- a/keyboards/kprepublic/bm40hsrgb/rev2/rev2.c
+++ b/keyboards/kprepublic/bm40hsrgb/rev2/rev2.c
@@ -17,7 +17,7 @@
#if defined(RGB_MATRIX_ENABLE)
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, B_1, A_1, C_1 },
{ 0, B_2, A_2, C_2 },
{ 0, B_3, A_3, C_3 },
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/config.h b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
index e4089e9fd5..96cb1de5a2 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
@@ -17,7 +17,7 @@
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h
index eb1b76382b..3cd50bfea3 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h
@@ -17,7 +17,7 @@
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
-# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
# define DRIVER_1_LED_TOTAL 63
# define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_ec/rev2/rev2.c
index fc40e0fa9a..982bf39c52 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/rev2.c
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/rev2.c
@@ -15,7 +15,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, B_1, A_1, C_1 },
{ 0, B_2, A_2, C_2 },
{ 0, B_3, A_3, C_3 },
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
index 00d55f8ee0..0a3e628c1c 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
@@ -19,7 +19,7 @@
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
-# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
index 2cfe18e08e..9cb9edba8e 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
@@ -24,7 +24,7 @@
# include "ws2812.h"
-const PROGMEM is31fl3733_led_t g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, B_1, A_1, C_1 },
{ 0, B_2, A_2, C_2 },
{ 0, B_3, A_3, C_3 },
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
index a877e182a6..fdeb9b61e9 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
@@ -17,7 +17,7 @@
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
-# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
index 13eefdef65..854b36d862 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
@@ -60,7 +60,7 @@
// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue
// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation
// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness)
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/kprepublic/bm68hsrgb/rev2/config.h b/keyboards/kprepublic/bm68hsrgb/rev2/config.h
index 078085779b..20fa1a8314 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev2/config.h
+++ b/keyboards/kprepublic/bm68hsrgb/rev2/config.h
@@ -26,7 +26,7 @@
#ifdef RGB_MATRIX_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value
diff --git a/keyboards/kprepublic/bm68hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm68hsrgb/rev2/rev2.c
index 057b4669f5..357ce13e96 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev2/rev2.c
+++ b/keyboards/kprepublic/bm68hsrgb/rev2/rev2.c
@@ -17,7 +17,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS6_SW1, CS5_SW1, CS4_SW1},
{0, CS6_SW2, CS5_SW2, CS4_SW2},
{0, CS6_SW3, CS5_SW3, CS4_SW3},
diff --git a/keyboards/kprepublic/bm80hsrgb/config.h b/keyboards/kprepublic/bm80hsrgb/config.h
index e0a7f47a4d..9d4ca3770e 100644
--- a/keyboards/kprepublic/bm80hsrgb/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/config.h
@@ -74,7 +74,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// # define RGB_MATRIX_SLEEP // turn off effects when suspended
// does not work for some reason, might revisit
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
index 06a7409110..bf64e8be78 100644
--- a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
@@ -42,7 +42,7 @@
// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_ALPHAS_MODS // Sets the default mode, if none has been set
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/kprepublic/bm80v2/bm80v2.c b/keyboards/kprepublic/bm80v2/bm80v2.c
index 13d67cdd56..3e3de08288 100644
--- a/keyboards/kprepublic/bm80v2/bm80v2.c
+++ b/keyboards/kprepublic/bm80v2/bm80v2.c
@@ -16,7 +16,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS6_SW1, CS5_SW1, CS4_SW1},
{0, CS6_SW3, CS5_SW3, CS4_SW3},
{0, CS6_SW4, CS5_SW4, CS4_SW4},
diff --git a/keyboards/kprepublic/bm80v2/config.h b/keyboards/kprepublic/bm80v2/config.h
index 91ad6350e0..3cf86e36e3 100644
--- a/keyboards/kprepublic/bm80v2/config.h
+++ b/keyboards/kprepublic/bm80v2/config.h
@@ -14,7 +14,7 @@
*/
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define RGB_MATRIX_KEYPRESSES
// RGB Matrix Animation modes. Explicitly enabled
diff --git a/keyboards/kprepublic/bm80v2/keymaps/saph1s/config.h b/keyboards/kprepublic/bm80v2/keymaps/saph1s/config.h
index 4726396806..7989b68f7d 100644
--- a/keyboards/kprepublic/bm80v2/keymaps/saph1s/config.h
+++ b/keyboards/kprepublic/bm80v2/keymaps/saph1s/config.h
@@ -19,5 +19,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGB_MATRIX_ENABLE
#undef RGB_MATRIX_DEFAULT_MODE
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_SLEEP
#endif
diff --git a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c
index 3b8daf5fee..1d6e3df547 100644
--- a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c
+++ b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c
@@ -16,7 +16,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS6_SW1, CS5_SW1, CS4_SW1},
{0, CS6_SW3, CS5_SW3, CS4_SW3},
{0, CS6_SW4, CS5_SW4, CS4_SW4},
diff --git a/keyboards/kprepublic/bm80v2_iso/config.h b/keyboards/kprepublic/bm80v2_iso/config.h
index a086185993..a8fdc5e18d 100644
--- a/keyboards/kprepublic/bm80v2_iso/config.h
+++ b/keyboards/kprepublic/bm80v2_iso/config.h
@@ -15,7 +15,7 @@
#pragma once
/* disable these deprecated features by default */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define RGB_MATRIX_KEYPRESSES
// RGB Matrix Animation modes. Explicitly enabled
diff --git a/keyboards/kprepublic/cstc40/config.h b/keyboards/kprepublic/cstc40/config.h
index 75ddd104ae..c26f20c74d 100644
--- a/keyboards/kprepublic/cstc40/config.h
+++ b/keyboards/kprepublic/cstc40/config.h
@@ -5,7 +5,7 @@
#define I2C1_SDA_PIN B9
#define I2C1_SCL_PIN B8
-#define DRIVER_ADDR_1 0b1010000
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define RGB_MATRIX_LED_COUNT 47
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
@@ -55,4 +55,4 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
diff --git a/keyboards/kprepublic/cstc40/daughterboard/daughterboard.c b/keyboards/kprepublic/cstc40/daughterboard/daughterboard.c
index 39d3d7ff52..1df130fe53 100644
--- a/keyboards/kprepublic/cstc40/daughterboard/daughterboard.c
+++ b/keyboards/kprepublic/cstc40/daughterboard/daughterboard.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, L_1, K_1, J_1 },
{ 0, L_2, K_2, J_2 },
{ 0, L_3, K_3, J_3 },
diff --git a/keyboards/kprepublic/cstc40/single_pcb/single_pcb.c b/keyboards/kprepublic/cstc40/single_pcb/single_pcb.c
index 39d3d7ff52..1df130fe53 100644
--- a/keyboards/kprepublic/cstc40/single_pcb/single_pcb.c
+++ b/keyboards/kprepublic/cstc40/single_pcb/single_pcb.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, L_1, K_1, J_1 },
{ 0, L_2, K_2, J_2 },
{ 0, L_3, K_3, J_3 },
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/columner/keymaps/default/keymap.c b/keyboards/kudox/columner/keymaps/default/keymap.c
deleted file mode 100644
index 7bbdd02c76..0000000000
--- a/keyboards/kudox/columner/keymaps/default/keymap.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NUMB 2
-
-// Shortcut to make keymap more readable
-#define KC_ALES LALT_T(KC_ESC)
-
-#define KC_LGENT MT(KC_LGUI, KC_ENT)
-#define KC_RGENT MT(KC_RGUI, KC_ENT)
-
-#define KC_L1NUM LT(_NUMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_LBRC , KC_RBRC ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_QUOT ,KC_GRV ,KC_DEL ,KC_L2SYM,KC_LGENT,KC_SPC , KC_SPC ,KC_RGENT,KC_L1NUM,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F11 , KC_F12 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_DQUO ,KC_QUOT ,KC_TILD ,KC_ASTR ,KC_PLUS ,_______ , _______ ,_______ ,_______ ,_______ ,KC_TILD ,KC_GRV ,KC_INT3 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , _______ ,_______ ,_______ ,KC_DQUO ,KC_QUOT ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_NUMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,KC_INT3 ,KC_0 ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
diff --git a/keyboards/kudox/columner/keymaps/via/keymap.c b/keyboards/kudox/columner/keymaps/via/keymap.c
deleted file mode 100644
index 1906df1084..0000000000
--- a/keyboards/kudox/columner/keymaps/via/keymap.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include QMK_KEYBOARD_H
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-enum layer_number {
- _BASE,
- _FN1,
- _FN2,
- _FN3,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_BASE] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_LBRC , KC_RBRC ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_LALT ,KC_QUOT ,KC_GRV ,KC_DEL ,MO(_FN1),KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO(_FN2),KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_FN1] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F11 , KC_F12 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_DEL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , KC_LCBR ,KC_RCBR ,KC_TRNS ,KC_TRNS ,KC_CIRC ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_FN2] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_TRNS ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO(_BASE),XXXXXXX,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_FN3] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_INT3 ,KC_0 ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
-
-#ifdef RGBLIGHT_ENABLE
-void eeconfig_init_user(void) {
- rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
-};
-#endif
diff --git a/keyboards/kudox/columner/readme.md b/keyboards/kudox/columner/readme.md
deleted file mode 100644
index 0c62174bcf..0000000000
--- a/keyboards/kudox/columner/readme.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# The Kudox Keyboard Columner
-
-<p align="center">
-<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png" alt="Kudox logo" width="600"/>
-</p>
-
-<p align="center">
-<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-columner.jpg" alt="Kudox Columner" width="600"/>
-</p>
-
-- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
-- Hardware Supported: Kudox Columner PCB rev1.0 w/ Pro Micro
-
-Make example for this keyboard (after setting up your build environment):
-
-```sh
-make kudox/columner:default
-```
-
-
-Example of flashing this keyboard:
-
-```sh
-make kudox/columner: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).
-
-
-## Layout
-
-![layout](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-columner-layout-rev1.png)
diff --git a/keyboards/kudox/readme.md b/keyboards/kudox/readme.md
deleted file mode 100644
index 107b99b100..0000000000
--- a/keyboards/kudox/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# The Kudox keyboard
-
-<p align="center">
-<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png" alt="Kudox logo" width="600"/>
-</p>
-
-<p align="center">
-<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-rev3-image1.jpg" alt="Kudox rev3.0" width="600"/>
-</p>
-
-- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
-- Hardware Supported: Kudox PCB rev1.0 rev2.0 rev3.0 w/ Pro Micro
-
-Make example for this keyboard (after setting up your build environment):
-
-```sh
-make kudox/rev3:default
-```
-
-
-Example of flashing this keyboard:
-
-```sh
-make kudox/rev3: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).
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/default/keymap.c b/keyboards/kudox/rev1/keymaps/default/keymap.c
deleted file mode 100644
index 1a3bfa4fff..0000000000
--- a/keyboards/kudox/rev1/keymaps/default/keymap.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALES LALT_T(KC_ESC)
-
-#define KC_RGENT MT(KC_RGUI, KC_ENT)
-
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1SYM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENT ,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_INT3 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
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/jis/keymap.c b/keyboards/kudox/rev1/keymaps/jis/keymap.c
deleted file mode 100644
index a58c5cbd65..0000000000
--- a/keyboards/kudox/rev1/keymaps/jis/keymap.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include QMK_KEYBOARD_H
-#include"keymap_japanese.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALES LALT_T(KC_ESC)
-
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_COLN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_SLSH ,KC_N ,KC_M ,KC_MINS ,KC_UP ,SYM_L ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_LGUI ,KC_LALT ,KC_ENT ,KC_LNG2 ,KC_SPC ,KC_SPC , KC_COMM ,KC_DOT ,KC_L1SYM,KC_LEFT ,KC_DOWN ,KC_RGHT ,JP_BSLS
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , XXXXXXX ,JP_CIRC ,JP_YEN ,JP_TILD ,JP_PIPE ,KC_DEL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ , KC_LT ,KC_GT ,JP_LBRC ,JP_RBRC ,JP_LCBR ,JP_RCBR ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_F11 ,KC_F12 ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,JP_PLUS ,JP_ASTR ,KC_SCLN ,JP_COLN ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______ ,KC_VOLU ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_MUTE ,KC_VOLD ,_______,_______
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
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/rev1/keymaps/x1/keymap.c b/keyboards/kudox/rev1/keymaps/x1/keymap.c
deleted file mode 100644
index 982f98b295..0000000000
--- a/keyboards/kudox/rev1/keymaps/x1/keymap.c
+++ /dev/null
@@ -1,73 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NUMB 2
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define NUM_L MO(_NUMB)
-
-#define KC_ALES LALT_T(KC_ESC)
-
-#define KC_RGENT MT(KC_RGUI, KC_ENT)
-#define KC_LGUI2 RALT_T(KC_LNG2)
-
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-#define KC_L1NUM LT(_NUMB, KC_LNG1)
-#define KC_ENNUM LT(_NUMB, KC_ENT)
-
-#define KC_FSYM LT(_SYMB, KC_F)
-#define KC_JNUM LT(_NUMB, KC_J)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_FSYM ,KC_G , KC_H ,KC_JNUM ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1NUM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENNUM,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_INT3 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_NUMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,KC_EQL , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,KC_INT3 ,KC_0 ,_______ ,_______ ,_______ ,_______ , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
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/default/keymap.c b/keyboards/kudox/rev2/keymaps/default/keymap.c
deleted file mode 100644
index d078683d9c..0000000000
--- a/keyboards/kudox/rev2/keymaps/default/keymap.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALES LALT_T(KC_ESC)
-
-#define KC_RGENT MT(KC_RGUI, KC_ENT)
-
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_GRV , 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_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1SYM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENT ,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,_______ , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_INT3 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
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/rev2/keymaps/jis/keymap.c b/keyboards/kudox/rev2/keymaps/jis/keymap.c
deleted file mode 100644
index b588fea6ad..0000000000
--- a/keyboards/kudox/rev2/keymaps/jis/keymap.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include QMK_KEYBOARD_H
-#include"keymap_japanese.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALES LALT_T(KC_ESC)
-
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC , 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_LNG2, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_COLN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_UP ,KC_N ,KC_M ,KC_SLSH ,JP_UNDS ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_LGUI ,KC_LALT ,KC_DEL ,KC_L2SYM,KC_SPC ,KC_ENT , KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_COMM ,KC_DOT ,KC_L1SYM,JP_BSLS
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- 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 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,JP_LPRN ,JP_RPRN ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , JP_HASH ,JP_DLR ,JP_PERC ,JP_PLUS ,KC_MINS ,JP_CIRC ,JP_YEN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,JP_LBRC ,JP_RBRC ,XXXXXXX ,XXXXXXX ,XXXXXXX , JP_AMPR ,KC_SLSH ,JP_ASTR ,KC_SCLN ,JP_COLN ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,JP_LCBR ,JP_RCBR ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_VOLU ,XXXXXXX ,XXXXXXX ,KC_LT ,KC_GT ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,KC_LT ,KC_GT ,KC_LNG2 ,_______ ,_______ , KC_MUTE ,KC_VOLD ,KC_LNG1 ,_______ ,_______ ,_______ ,KC_DEL
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
diff --git a/keyboards/kudox/rev3/keymaps/default/keymap.c b/keyboards/kudox/rev3/keymaps/default/keymap.c
deleted file mode 100644
index 45e40630c6..0000000000
--- a/keyboards/kudox/rev3/keymaps/default/keymap.c
+++ /dev/null
@@ -1,70 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _LIGHT 2
-
-// Shortcut to make keymap more readable
-#define SYM_L2 LT(_SYMB, KC_LNG2)
-#define TO_LIGH TO(_LIGHT)
-#define TO_QWER TO(_QWERTY)
-
-#define KC_ALES LALT_T(KC_ESC)
-#define KC_ALEN LALT_T(KC_ENT)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- 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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_LBRC ,KC_RBRC ,SYM_L2 ,KC_ALEN ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO_LIGH ,KC_LNG1 ,KC_LEFT, KC_DOWN ,KC_RIGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_LCBR ,KC_RCBR ,_______ ,_______ ,KC_CIRC ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LABK ,KC_UNDS ,KC_RABK
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_LIGHT] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO_QWER ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
-
-
-#ifdef RGBLIGHT_ENABLE
-void eeconfig_init_user(void) {
- rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
-};
-#endif
diff --git a/keyboards/kudox/rev3/keymaps/jis/keymap.c b/keyboards/kudox/rev3/keymaps/jis/keymap.c
deleted file mode 100644
index 72f4c04c30..0000000000
--- a/keyboards/kudox/rev3/keymaps/jis/keymap.c
+++ /dev/null
@@ -1,70 +0,0 @@
-#include QMK_KEYBOARD_H
-#include"keymap_japanese.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _LIGHT 2
-
-// Shortcut to make keymap more readable
-#define SYM_L2 LT(_SYMB, KC_LNG2)
-#define TO_LIGH TO(_LIGHT)
-#define TO_QWER TO(_QWERTY)
-
-#define KC_ALES LALT_T(KC_ESC)
-#define KC_ALEN LALT_T(KC_ENT)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- JP_ZKHK ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_7 ,KC_8 ,KC_9 ,KC_0 ,JP_MINS ,JP_CIRC ,KC_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_SLSH ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,JP_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,JP_COMM ,JP_DOT ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,JP_YEN ,JP_COLN ,SYM_L2 ,KC_ALEN ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO_LIGH ,KC_LNG1 ,KC_LEFT, KC_DOWN ,KC_RIGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,JP_DQUO ,JP_QUOT ,KC_GRV ,JP_ASTR ,JP_PLUS ,JP_EQL , JP_LPRN ,JP_RPRN ,JP_PIPE ,JP_ASTR ,JP_TILD ,JP_CIRC ,JP_PIPE ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,JP_AT ,JP_COLN ,KC_GRV ,JP_SLSH ,JP_MINS , JP_LBRC ,JP_RBRC ,JP_DOT ,JP_SLSH ,JP_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , JP_LCBR ,JP_RCBR ,_______ ,_______ ,JP_CIRC ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,JP_LABK ,JP_UNDS ,JP_RABK
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_LIGHT] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW ,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN ,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO_QWER ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
-
-#ifdef RGBLIGHT_ENABLE
-void eeconfig_init_user(void) {
- rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
-};
-#endif
diff --git a/keyboards/kudox/rev3/keymaps/via/keymap.c b/keyboards/kudox/rev3/keymaps/via/keymap.c
deleted file mode 100644
index 9dfbe81701..0000000000
--- a/keyboards/kudox/rev3/keymaps/via/keymap.c
+++ /dev/null
@@ -1,77 +0,0 @@
-#include QMK_KEYBOARD_H
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-enum layer_number {
- _BASE,
- _FN1,
- _FN2,
- _FN3,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_BASE] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- 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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_LALT ,KC_LBRC ,KC_RBRC ,MO(_FN1),KC_ENT ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO(_FN2),KC_LNG1 ,KC_LEFT, KC_DOWN ,KC_RIGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_FN1] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_LCBR ,KC_RCBR ,KC_TRNS ,KC_TRNS ,KC_CIRC ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LABK ,KC_UNDS ,KC_RABK
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_FN2] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_TRNS ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO(_BASE),XXXXXXX,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_FN3] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-};
-
-
-#ifdef RGBLIGHT_ENABLE
-void eeconfig_init_user(void) {
- rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
-};
-#endif
diff --git a/keyboards/kudox/rules.mk b/keyboards/kudox/rules.mk
deleted file mode 100644
index 8654d9b520..0000000000
--- a/keyboards/kudox/rules.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-SPLIT_KEYBOARD = yes
-
-DEFAULT_FOLDER = kudox/rev3
diff --git a/keyboards/kudox_full/readme.md b/keyboards/kudox_full/readme.md
deleted file mode 100644
index 494d7508c8..0000000000
--- a/keyboards/kudox_full/readme.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# The Kudox Full keyboard
-
-![Kudox logo](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png)
-
-![Kudox Full image2](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-full-image2.jpg) | ![Kudox Full image1](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-full-image1.jpg)
-:----:|:-----:
- front | angle
-
-- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
-- Hardware Supported: Kudox Full PCB rev1.0 w/ Pro Micro
-- Assembly guide: [Kudox Full/README](https://github.com/kumaokobo/kudox-keyboard/blob/master/kudox-full/README.md)
-
-## Bootloader
-
-Enter the bootloader in 3 ways:
-
-* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
-
-## Building Firmware
-
-Make example for this keyboard (after setting up your build environment):
-
- make kudox_full/rev1:default
-
-
-Flashing example for this keyboard:
-
- make kudox_full/rev1: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).
diff --git a/keyboards/kudox_full/rules.mk b/keyboards/kudox_full/rules.mk
deleted file mode 100644
index cbdafb7a5c..0000000000
--- a/keyboards/kudox_full/rules.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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 = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-UNICODE_ENABLE = yes # Unicode
-LTO_ENABLE = yes
-
-SPLIT_KEYBOARD = yes
-
-DEFAULT_FOLDER = kudox_full/rev1
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/kudox_game/keymaps/default/keymap.c b/keyboards/kudox_game/keymaps/default/keymap.c
deleted file mode 100644
index aecf8976c2..0000000000
--- a/keyboards/kudox_game/keymaps/default/keymap.c
+++ /dev/null
@@ -1,71 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _LIGHT 2
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define KC_ALEN LALT_T(KC_ENT)
-#define ES_LIGH LT(_LIGHT, KC_ESC)
-
-#define CT_COPY LCTL(KC_C)
-#define CT_PASTE LCTL(KC_V)
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────â”
- ES_LIGH ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
- //└────────┼────────┼────────┼────────┼────────┼────────┤
- KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
- //┌────────┼────────┼────────┼────────┼────────┼────────┼────────â”
- CT_COPY ,CT_PASTE,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────â”
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
- //├────────┼────────┘ └────────┴────────┼────────┼────────â”
- KC_LCTL ,SYM_L ,KC_SPC
- //└────────┘ └────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,
- //└────────┼────────┼────────┼────────┼────────┼────────┤
- KC_GRV ,KC_UP ,KC_PIPE ,KC_LCBR ,KC_RCBR ,
- //┌────────┼────────┼────────┼────────┼────────┼────────┼────────â”
- _______ ,_______ ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_LBRC ,KC_RBRC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────â”
- _______ ,KC_BSPC ,KC_DEL ,KC_LPRN ,KC_RPRN ,
- //├────────┼────────┘ └────────┴────────┼────────┼────────â”
- _______ ,_______ ,_______
- //└────────┘ └────────┴────────┘
- ),
-
- [_LIGHT] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,
- //└────────┼────────┼────────┼────────┼────────┼────────┤
- RGB_M_P ,RGB_M_SW,RGB_M_X ,RGB_M_B ,RGB_VAD ,
- //┌────────┼────────┼────────┼────────┼────────┼────────┼────────â”
- _______ ,_______ ,RGB_M_SN,RGB_M_G ,RGB_M_R ,RGB_M_K ,RGB_M_T ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────â”
- _______ ,RGB_M_T ,XXXXXXX ,RGB_VAI ,RGB_VAD ,
- //├────────┼────────┘ └────────┴────────┼────────┼────────â”
- _______ ,RGB_MOD ,RGB_TOG
- //└────────┘ └────────┴────────┘
- )
-
-};
-
-// Runs just one time when the keyboard initializes.
-#ifdef RGBLIGHT_ENABLE
-void eeconfig_init_user(void) {
- rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
-};
-#endif
diff --git a/keyboards/kudox_game/keymaps/via/keymap.c b/keyboards/kudox_game/keymaps/via/keymap.c
deleted file mode 100644
index 0a18483d90..0000000000
--- a/keyboards/kudox_game/keymaps/via/keymap.c
+++ /dev/null
@@ -1,78 +0,0 @@
-#include QMK_KEYBOARD_H
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-enum layer_number {
- _BASE,
- _FN1,
- _FN2,
- _FN3,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_BASE] = LAYOUT(
- //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
- KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
- //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
- KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
- //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
- LCTL(KC_C),LCTL(KC_V),KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
- //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
- //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
- KC_LCTL ,TO(_FN1) ,KC_SPC
- //└──────────┘ └──────────┴──────────┘
- ),
-
- [_FN1] = LAYOUT(
- //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
- KC_TRNS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,
- //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
- KC_GRV ,KC_UP ,KC_PIPE ,KC_LCBR ,KC_RCBR ,
- //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
- KC_TRNS ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_LBRC ,KC_RBRC ,
- //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
- KC_TRNS ,KC_BSPC ,KC_DEL ,KC_LPRN ,KC_RPRN ,
- //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
- TO(_FN2) ,TO(_BASE) ,KC_TRNS
- //└──────────┘ └──────────┴──────────┘
- ),
-
- [_FN2] = LAYOUT(
- //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
- KC_TRNS ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,
- //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
- RGB_M_P ,RGB_M_SW ,RGB_M_X ,RGB_M_B ,RGB_VAD ,
- //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
- KC_TRNS ,KC_TRNS ,RGB_M_SN ,RGB_M_G ,RGB_M_R ,RGB_M_K ,RGB_M_T ,
- //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
- KC_TRNS ,RGB_M_T ,KC_DEL ,RGB_VAI ,RGB_VAD ,
- //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
- TO(_FN1) ,RGB_MOD ,RGB_TOG
- //└──────────┘ └──────────┴──────────┘
- ),
-
-
- [_FN3] = LAYOUT(
- //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
- KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
- //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
- KC_TRNS ,KC_TRNS ,KC_TRNS
- //└──────────┘ └──────────┴──────────┘
- )
-};
-
-
-#ifdef RGBLIGHT_ENABLE
-void eeconfig_init_user(void) {
- rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
-};
-#endif
diff --git a/keyboards/kudox_game/readme.md b/keyboards/kudox_game/readme.md
deleted file mode 100644
index 31565a5996..0000000000
--- a/keyboards/kudox_game/readme.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# The Kudox Game keyboard
-
-<p align="center">
-<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png" alt="Kudox logo" width="600"/>
-</p>
-
-<p align="center">
-<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-game-pcb.jpg" alt="Kudox Game PCB rev1.0" width="600"/>
-</p>
-
-- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
-- Hardware Supported: Kudox Game PCB rev1.0 rev2.0 w/ Pro Micro
-
-Make example for this keyboard (after setting up your build environment):
-
-```sh
-make kudox_game/rev2:default
-```
-
-Example of flashing this keyboard:
-
-```sh
-make kudox_game/rev2:default:avrdude
-```
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kudox_game/rules.mk b/keyboards/kudox_game/rules.mk
deleted file mode 100644
index 762675efe1..0000000000
--- a/keyboards/kudox_game/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-DEFAULT_FOLDER = kudox_game/rev2
diff --git a/keyboards/kudox/columner/config.h b/keyboards/kumaokobo/kudox/columner/config.h
index 04bc8cb2d2..04bc8cb2d2 100644
--- a/keyboards/kudox/columner/config.h
+++ b/keyboards/kumaokobo/kudox/columner/config.h
diff --git a/keyboards/kudox/columner/info.json b/keyboards/kumaokobo/kudox/columner/info.json
index 5f7d444411..5f7d444411 100644
--- a/keyboards/kudox/columner/info.json
+++ b/keyboards/kumaokobo/kudox/columner/info.json
diff --git a/keyboards/kumaokobo/kudox/columner/keymaps/default/keymap.c b/keyboards/kumaokobo/kudox/columner/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4798f862df
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/columner/keymaps/default/keymap.c
@@ -0,0 +1,66 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+#define _NUMB 2
+
+// Shortcut to make keymap more readable
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_LGENT MT(KC_LGUI, KC_ENT)
+#define KC_RGENT MT(KC_RGUI, KC_ENT)
+
+#define KC_L1NUM LT(_NUMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_LBRC , KC_RBRC ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_QUOT ,KC_GRV ,KC_DEL ,KC_L2SYM,KC_LGENT,KC_SPC , KC_SPC ,KC_RGENT,KC_L1NUM,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F11 , KC_F12 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_TILD ,KC_ASTR ,KC_PLUS ,_______ , _______ ,_______ ,_______ ,_______ ,KC_TILD ,KC_GRV ,KC_INT3 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , _______ ,_______ ,_______ ,KC_DQUO ,KC_QUOT ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_NUMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,KC_INT3 ,KC_0 ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kudox/columner/keymaps/default/readme.md b/keyboards/kumaokobo/kudox/columner/keymaps/default/readme.md
index 13d9e8bee1..13d9e8bee1 100644
--- a/keyboards/kudox/columner/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/kudox/columner/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/kudox/columner/keymaps/via/keymap.c b/keyboards/kumaokobo/kudox/columner/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8450881cc4
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/columner/keymaps/via/keymap.c
@@ -0,0 +1,79 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_LBRC , KC_RBRC ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_LALT ,KC_QUOT ,KC_GRV ,KC_DEL ,MO(_FN1),KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO(_FN2),KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F11 , KC_F12 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , KC_LCBR ,KC_RCBR ,KC_TRNS ,KC_TRNS ,KC_CIRC ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_TRNS ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO(_BASE),XXXXXXX,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_INT3 ,KC_0 ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
+
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_user(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox/columner/keymaps/via/readme.md b/keyboards/kumaokobo/kudox/columner/keymaps/via/readme.md
index 152df04959..152df04959 100644
--- a/keyboards/kudox/columner/keymaps/via/readme.md
+++ b/keyboards/kumaokobo/kudox/columner/keymaps/via/readme.md
diff --git a/keyboards/laser_ninja/pumpkin_pad/keymaps/via/rules.mk b/keyboards/kumaokobo/kudox/columner/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/laser_ninja/pumpkin_pad/keymaps/via/rules.mk
+++ b/keyboards/kumaokobo/kudox/columner/keymaps/via/rules.mk
diff --git a/keyboards/kumaokobo/kudox/columner/readme.md b/keyboards/kumaokobo/kudox/columner/readme.md
new file mode 100644
index 0000000000..90a65670b4
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/columner/readme.md
@@ -0,0 +1,32 @@
+# The Kudox Keyboard Columner
+
+<p align="center">
+<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png" alt="Kudox logo" width="600"/>
+</p>
+
+<p align="center">
+<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-columner.jpg" alt="Kudox Columner" width="600"/>
+</p>
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox Columner PCB rev1.0 w/ Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make kumaokobo/kudox/columner:default
+```
+
+
+Example of flashing this keyboard:
+
+```sh
+make kumaokobo/kudox/columner: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).
+
+
+## Layout
+
+![layout](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-columner-layout-rev1.png)
diff --git a/keyboards/era/klein/rules.mk b/keyboards/kumaokobo/kudox/columner/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/era/klein/rules.mk
+++ b/keyboards/kumaokobo/kudox/columner/rules.mk
diff --git a/keyboards/kudox/config.h b/keyboards/kumaokobo/kudox/config.h
index ba80a92797..ba80a92797 100644
--- a/keyboards/kudox/config.h
+++ b/keyboards/kumaokobo/kudox/config.h
diff --git a/keyboards/kumaokobo/kudox/readme.md b/keyboards/kumaokobo/kudox/readme.md
new file mode 100644
index 0000000000..01b90d53be
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/readme.md
@@ -0,0 +1,27 @@
+# The Kudox keyboard
+
+<p align="center">
+<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png" alt="Kudox logo" width="600"/>
+</p>
+
+<p align="center">
+<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-rev3-image1.jpg" alt="Kudox rev3.0" width="600"/>
+</p>
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox PCB rev1.0 rev2.0 rev3.0 w/ Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make kumaokobo/kudox/rev3:default
+```
+
+
+Example of flashing this keyboard:
+
+```sh
+make kumaokobo/kudox/rev3: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).
diff --git a/keyboards/kudox/rev1/config.h b/keyboards/kumaokobo/kudox/rev1/config.h
index 666cb49b2e..666cb49b2e 100644
--- a/keyboards/kudox/rev1/config.h
+++ b/keyboards/kumaokobo/kudox/rev1/config.h
diff --git a/keyboards/kudox/rev1/info.json b/keyboards/kumaokobo/kudox/rev1/info.json
index 52579e1c43..52579e1c43 100644
--- a/keyboards/kudox/rev1/info.json
+++ b/keyboards/kumaokobo/kudox/rev1/info.json
diff --git a/keyboards/kumaokobo/kudox/rev1/keymaps/default/keymap.c b/keyboards/kumaokobo/kudox/rev1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b3d183e72b
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev1/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_RGENT MT(KC_RGUI, KC_ENT)
+
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1SYM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENT ,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_INT3 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kudox/rev1/keymaps/default/readme.md b/keyboards/kumaokobo/kudox/rev1/keymaps/default/readme.md
index 98d8b2a054..98d8b2a054 100644
--- a/keyboards/kudox/rev1/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/kudox/rev1/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/kudox/rev1/keymaps/jis/keymap.c b/keyboards/kumaokobo/kudox/rev1/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..26bc89abbd
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev1/keymaps/jis/keymap.c
@@ -0,0 +1,51 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+#include"keymap_japanese.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_COLN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_SLSH ,KC_N ,KC_M ,KC_MINS ,KC_UP ,SYM_L ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_LGUI ,KC_LALT ,KC_ENT ,KC_LNG2 ,KC_SPC ,KC_SPC , KC_COMM ,KC_DOT ,KC_L1SYM,KC_LEFT ,KC_DOWN ,KC_RGHT ,JP_BSLS
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , XXXXXXX ,JP_CIRC ,JP_YEN ,JP_TILD ,JP_PIPE ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ , KC_LT ,KC_GT ,JP_LBRC ,JP_RBRC ,JP_LCBR ,JP_RCBR ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_F11 ,KC_F12 ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,JP_PLUS ,JP_ASTR ,KC_SCLN ,JP_COLN ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______ ,KC_VOLU ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_MUTE ,KC_VOLD ,_______,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kudox/rev1/keymaps/jis/readme.md b/keyboards/kumaokobo/kudox/rev1/keymaps/jis/readme.md
index 0f3fae39f7..0f3fae39f7 100644
--- a/keyboards/kudox/rev1/keymaps/jis/readme.md
+++ b/keyboards/kumaokobo/kudox/rev1/keymaps/jis/readme.md
diff --git a/keyboards/kumaokobo/kudox/rev1/keymaps/x1/keymap.c b/keyboards/kumaokobo/kudox/rev1/keymaps/x1/keymap.c
new file mode 100644
index 0000000000..aef3892f58
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev1/keymaps/x1/keymap.c
@@ -0,0 +1,76 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+#define _NUMB 2
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define NUM_L MO(_NUMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_RGENT MT(KC_RGUI, KC_ENT)
+#define KC_LGUI2 RALT_T(KC_LNG2)
+
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+#define KC_L1NUM LT(_NUMB, KC_LNG1)
+#define KC_ENNUM LT(_NUMB, KC_ENT)
+
+#define KC_FSYM LT(_SYMB, KC_F)
+#define KC_JNUM LT(_NUMB, KC_J)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_FSYM ,KC_G , KC_H ,KC_JNUM ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1NUM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENNUM,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_INT3 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_NUMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_7 ,KC_8 ,KC_9 ,KC_ASTR ,KC_PLUS ,KC_EQL , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_4 ,KC_5 ,KC_6 ,KC_0 ,KC_MINS , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_1 ,KC_2 ,KC_3 ,KC_DOT ,KC_SLSH , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,KC_INT3 ,KC_0 ,_______ ,_______ ,_______ ,_______ , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/kudox/rev1/keymaps/x1/readme.md b/keyboards/kumaokobo/kudox/rev1/keymaps/x1/readme.md
index 1085735afc..1085735afc 100644
--- a/keyboards/kudox/rev1/keymaps/x1/readme.md
+++ b/keyboards/kumaokobo/kudox/rev1/keymaps/x1/readme.md
diff --git a/keyboards/kudox/columner/rules.mk b/keyboards/kumaokobo/kudox/rev1/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/kudox/columner/rules.mk
+++ b/keyboards/kumaokobo/kudox/rev1/rules.mk
diff --git a/keyboards/kudox/rev2/config.h b/keyboards/kumaokobo/kudox/rev2/config.h
index 666cb49b2e..666cb49b2e 100644
--- a/keyboards/kudox/rev2/config.h
+++ b/keyboards/kumaokobo/kudox/rev2/config.h
diff --git a/keyboards/kudox/rev2/info.json b/keyboards/kumaokobo/kudox/rev2/info.json
index 98cb6bb431..98cb6bb431 100644
--- a/keyboards/kudox/rev2/info.json
+++ b/keyboards/kumaokobo/kudox/rev2/info.json
diff --git a/keyboards/kumaokobo/kudox/rev2/keymaps/default/keymap.c b/keyboards/kumaokobo/kudox/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..29ddd15fa1
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev2/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_RGENT MT(KC_RGUI, KC_ENT)
+
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_GRV , 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_L2SYM, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_L1SYM,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_QUOT ,KC_MINS ,KC_EQL ,KC_ENT ,KC_LGUI ,KC_SPC , KC_RGENT,KC_DEL ,SYM_L ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,_______ , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_INT3 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_DOT ,KC_SLSH ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_CIRC ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kudox/rev2/keymaps/default/readme.md b/keyboards/kumaokobo/kudox/rev2/keymaps/default/readme.md
index 9bc4ca5051..9bc4ca5051 100644
--- a/keyboards/kudox/rev2/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/kudox/rev2/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/kudox/rev2/keymaps/jis/keymap.c b/keyboards/kumaokobo/kudox/rev2/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..c581ddb8f1
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev2/keymaps/jis/keymap.c
@@ -0,0 +1,51 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+#include"keymap_japanese.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+
+#define KC_ALES LALT_T(KC_ESC)
+
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC , 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_LNG2, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_COLN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_UP ,KC_N ,KC_M ,KC_SLSH ,JP_UNDS ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_LGUI ,KC_LALT ,KC_DEL ,KC_L2SYM,KC_SPC ,KC_ENT , KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_COMM ,KC_DOT ,KC_L1SYM,JP_BSLS
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ 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 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_LPRN ,JP_RPRN ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , JP_HASH ,JP_DLR ,JP_PERC ,JP_PLUS ,KC_MINS ,JP_CIRC ,JP_YEN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_LBRC ,JP_RBRC ,XXXXXXX ,XXXXXXX ,XXXXXXX , JP_AMPR ,KC_SLSH ,JP_ASTR ,KC_SCLN ,JP_COLN ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_LCBR ,JP_RCBR ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_VOLU ,XXXXXXX ,XXXXXXX ,KC_LT ,KC_GT ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,KC_LT ,KC_GT ,KC_LNG2 ,_______ ,_______ , KC_MUTE ,KC_VOLD ,KC_LNG1 ,_______ ,_______ ,_______ ,KC_DEL
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kudox/rev2/keymaps/jis/readme.md b/keyboards/kumaokobo/kudox/rev2/keymaps/jis/readme.md
index ddf27339d1..ddf27339d1 100644
--- a/keyboards/kudox/rev2/keymaps/jis/readme.md
+++ b/keyboards/kumaokobo/kudox/rev2/keymaps/jis/readme.md
diff --git a/keyboards/kudox/rev1/rules.mk b/keyboards/kumaokobo/kudox/rev2/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/kudox/rev1/rules.mk
+++ b/keyboards/kumaokobo/kudox/rev2/rules.mk
diff --git a/keyboards/kudox/rev3/config.h b/keyboards/kumaokobo/kudox/rev3/config.h
index 04bc8cb2d2..04bc8cb2d2 100644
--- a/keyboards/kudox/rev3/config.h
+++ b/keyboards/kumaokobo/kudox/rev3/config.h
diff --git a/keyboards/kudox/rev3/info.json b/keyboards/kumaokobo/kudox/rev3/info.json
index 35144cc25a..35144cc25a 100644
--- a/keyboards/kudox/rev3/info.json
+++ b/keyboards/kumaokobo/kudox/rev3/info.json
diff --git a/keyboards/kumaokobo/kudox/rev3/keymaps/default/keymap.c b/keyboards/kumaokobo/kudox/rev3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bf89d895f5
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/default/keymap.c
@@ -0,0 +1,73 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+#define _LIGHT 2
+
+// Shortcut to make keymap more readable
+#define SYM_L2 LT(_SYMB, KC_LNG2)
+#define TO_LIGH TO(_LIGHT)
+#define TO_QWER TO(_QWERTY)
+
+#define KC_ALES LALT_T(KC_ESC)
+#define KC_ALEN LALT_T(KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ 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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_LBRC ,KC_RBRC ,SYM_L2 ,KC_ALEN ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO_LIGH ,KC_LNG1 ,KC_LEFT, KC_DOWN ,KC_RIGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_LCBR ,KC_RCBR ,_______ ,_______ ,KC_CIRC ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LABK ,KC_UNDS ,KC_RABK
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_LIGHT] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO_QWER ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
+
+
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_user(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox/rev3/keymaps/default/readme.md b/keyboards/kumaokobo/kudox/rev3/keymaps/default/readme.md
index aead0ad1f1..aead0ad1f1 100644
--- a/keyboards/kudox/rev3/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/kudox/rev3/keymaps/jis/keymap.c b/keyboards/kumaokobo/kudox/rev3/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..f53d40063b
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/jis/keymap.c
@@ -0,0 +1,73 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+#include"keymap_japanese.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+#define _LIGHT 2
+
+// Shortcut to make keymap more readable
+#define SYM_L2 LT(_SYMB, KC_LNG2)
+#define TO_LIGH TO(_LIGHT)
+#define TO_QWER TO(_QWERTY)
+
+#define KC_ALES LALT_T(KC_ESC)
+#define KC_ALEN LALT_T(KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ JP_ZKHK ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_7 ,KC_8 ,KC_9 ,KC_0 ,JP_MINS ,JP_CIRC ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_SLSH ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,JP_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,JP_COMM ,JP_DOT ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,JP_YEN ,JP_COLN ,SYM_L2 ,KC_ALEN ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO_LIGH ,KC_LNG1 ,KC_LEFT, KC_DOWN ,KC_RIGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_DQUO ,JP_QUOT ,KC_GRV ,JP_ASTR ,JP_PLUS ,JP_EQL , JP_LPRN ,JP_RPRN ,JP_PIPE ,JP_ASTR ,JP_TILD ,JP_CIRC ,JP_PIPE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_AT ,JP_COLN ,KC_GRV ,JP_SLSH ,JP_MINS , JP_LBRC ,JP_RBRC ,JP_DOT ,JP_SLSH ,JP_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , JP_LCBR ,JP_RCBR ,_______ ,_______ ,JP_CIRC ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,JP_LABK ,JP_UNDS ,JP_RABK
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_LIGHT] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW ,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN ,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO_QWER ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
+
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_user(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox/rev3/keymaps/jis/readme.md b/keyboards/kumaokobo/kudox/rev3/keymaps/jis/readme.md
index 90e7902153..90e7902153 100644
--- a/keyboards/kudox/rev3/keymaps/jis/readme.md
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/jis/readme.md
diff --git a/keyboards/kumaokobo/kudox/rev3/keymaps/via/keymap.c b/keyboards/kumaokobo/kudox/rev3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2609e87723
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/via/keymap.c
@@ -0,0 +1,80 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ 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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_SLSH ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_LALT ,KC_LBRC ,KC_RBRC ,MO(_FN1),KC_ENT ,KC_LGUI ,KC_SPC , KC_SPC ,KC_RGUI ,TO(_FN2),KC_LNG1 ,KC_LEFT, KC_DOWN ,KC_RIGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_DQUO ,KC_QUOT ,KC_GRV ,KC_ASTR ,KC_PLUS ,KC_EQL , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_PIPE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_AT ,KC_COLN ,KC_GRV ,KC_SLSH ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_MINS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_LCBR ,KC_RCBR ,KC_TRNS ,KC_TRNS ,KC_CIRC ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LABK ,KC_UNDS ,KC_RABK
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_TRNS ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,RGB_M_P ,RGB_M_SW ,RGB_M_X,XXXXXXX ,XXXXXXX ,XXXXXXX , RGB_M_P ,RGB_M_SW,RGB_M_X ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,RGB_M_B ,RGB_M_SN ,RGB_M_G,XXXXXXX ,XXXXXXX , RGB_M_B ,RGB_M_SN,RGB_M_G ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX , RGB_M_R ,RGB_M_K ,RGB_M_T ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,TO(_BASE),XXXXXXX,XXXXXXX ,XXXXXXX ,XXXXXXX
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_FN3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ └────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS , KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+};
+
+
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_user(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox/rev3/keymaps/via/readme.md b/keyboards/kumaokobo/kudox/rev3/keymaps/via/readme.md
index cc95d79eac..cc95d79eac 100644
--- a/keyboards/kudox/rev3/keymaps/via/readme.md
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/via/readme.md
diff --git a/keyboards/lefty/keymaps/via/rules.mk b/keyboards/kumaokobo/kudox/rev3/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/lefty/keymaps/via/rules.mk
+++ b/keyboards/kumaokobo/kudox/rev3/keymaps/via/rules.mk
diff --git a/keyboards/kudox/rev2/rules.mk b/keyboards/kumaokobo/kudox/rev3/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/kudox/rev2/rules.mk
+++ b/keyboards/kumaokobo/kudox/rev3/rules.mk
diff --git a/keyboards/kumaokobo/kudox/rules.mk b/keyboards/kumaokobo/kudox/rules.mk
new file mode 100644
index 0000000000..261c8e2a2b
--- /dev/null
+++ b/keyboards/kumaokobo/kudox/rules.mk
@@ -0,0 +1,16 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = kumaokobo/kudox/rev3
diff --git a/keyboards/kudox_full/config.h b/keyboards/kumaokobo/kudox_full/config.h
index 9512ffea8a..9512ffea8a 100644
--- a/keyboards/kudox_full/config.h
+++ b/keyboards/kumaokobo/kudox_full/config.h
diff --git a/keyboards/kudox_full/keymaps/default/keymap.c b/keyboards/kumaokobo/kudox_full/keymaps/default/keymap.c
index c4fe5ff988..c4fe5ff988 100644
--- a/keyboards/kudox_full/keymaps/default/keymap.c
+++ b/keyboards/kumaokobo/kudox_full/keymaps/default/keymap.c
diff --git a/keyboards/kudox_full/keymaps/jis/keymap.c b/keyboards/kumaokobo/kudox_full/keymaps/jis/keymap.c
index aa55fa50a4..aa55fa50a4 100644
--- a/keyboards/kudox_full/keymaps/jis/keymap.c
+++ b/keyboards/kumaokobo/kudox_full/keymaps/jis/keymap.c
diff --git a/keyboards/kudox_full/keymaps/via/keymap.c b/keyboards/kumaokobo/kudox_full/keymaps/via/keymap.c
index cab5519d5b..cab5519d5b 100644
--- a/keyboards/kudox_full/keymaps/via/keymap.c
+++ b/keyboards/kumaokobo/kudox_full/keymaps/via/keymap.c
diff --git a/keyboards/kudox_full/keymaps/via/rules.mk b/keyboards/kumaokobo/kudox_full/keymaps/via/rules.mk
index 21b1b8d0ce..21b1b8d0ce 100644
--- a/keyboards/kudox_full/keymaps/via/rules.mk
+++ b/keyboards/kumaokobo/kudox_full/keymaps/via/rules.mk
diff --git a/keyboards/kudox_full/kudox_full.c b/keyboards/kumaokobo/kudox_full/kudox_full.c
index d69f679822..d69f679822 100644
--- a/keyboards/kudox_full/kudox_full.c
+++ b/keyboards/kumaokobo/kudox_full/kudox_full.c
diff --git a/keyboards/kudox_full/post_config.h b/keyboards/kumaokobo/kudox_full/post_config.h
index eb26f369c3..eb26f369c3 100644
--- a/keyboards/kudox_full/post_config.h
+++ b/keyboards/kumaokobo/kudox_full/post_config.h
diff --git a/keyboards/kumaokobo/kudox_full/readme.md b/keyboards/kumaokobo/kudox_full/readme.md
new file mode 100644
index 0000000000..c5af5d652d
--- /dev/null
+++ b/keyboards/kumaokobo/kudox_full/readme.md
@@ -0,0 +1,32 @@
+# The Kudox Full keyboard
+
+![Kudox logo](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png)
+
+![Kudox Full image2](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-full-image2.jpg) | ![Kudox Full image1](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-full-image1.jpg)
+:----:|:-----:
+ front | angle
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox Full PCB rev1.0 w/ Pro Micro
+- Assembly guide: [Kudox Full/README](https://github.com/kumaokobo/kudox-keyboard/blob/master/kudox-full/README.md)
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
+
+## Building Firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kumaokobo/kudox_full/rev1:default
+
+
+Flashing example for this keyboard:
+
+ make kumaokobo/kudox_full/rev1: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).
diff --git a/keyboards/kudox_full/rev1/config.h b/keyboards/kumaokobo/kudox_full/rev1/config.h
index f1dcbbcf3d..f1dcbbcf3d 100644
--- a/keyboards/kudox_full/rev1/config.h
+++ b/keyboards/kumaokobo/kudox_full/rev1/config.h
diff --git a/keyboards/kudox_full/rev1/info.json b/keyboards/kumaokobo/kudox_full/rev1/info.json
index 673fda9acf..673fda9acf 100644
--- a/keyboards/kudox_full/rev1/info.json
+++ b/keyboards/kumaokobo/kudox_full/rev1/info.json
diff --git a/keyboards/kudox_full/rev1/rules.mk b/keyboards/kumaokobo/kudox_full/rev1/rules.mk
index dd68e9d3b0..dd68e9d3b0 100644
--- a/keyboards/kudox_full/rev1/rules.mk
+++ b/keyboards/kumaokobo/kudox_full/rev1/rules.mk
diff --git a/keyboards/kumaokobo/kudox_full/rules.mk b/keyboards/kumaokobo/kudox_full/rules.mk
new file mode 100644
index 0000000000..06453b2337
--- /dev/null
+++ b/keyboards/kumaokobo/kudox_full/rules.mk
@@ -0,0 +1,18 @@
+# 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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+UNICODE_ENABLE = yes # Unicode
+LTO_ENABLE = yes
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = kumaokobo/kudox_full/rev1
diff --git a/keyboards/kudox_game/config.h b/keyboards/kumaokobo/kudox_game/config.h
index f998de9534..f998de9534 100644
--- a/keyboards/kudox_game/config.h
+++ b/keyboards/kumaokobo/kudox_game/config.h
diff --git a/keyboards/kudox_game/info.json b/keyboards/kumaokobo/kudox_game/info.json
index 6968b5e427..6968b5e427 100644
--- a/keyboards/kudox_game/info.json
+++ b/keyboards/kumaokobo/kudox_game/info.json
diff --git a/keyboards/kumaokobo/kudox_game/keymaps/default/keymap.c b/keyboards/kumaokobo/kudox_game/keymaps/default/keymap.c
new file mode 100644
index 0000000000..99e664138f
--- /dev/null
+++ b/keyboards/kumaokobo/kudox_game/keymaps/default/keymap.c
@@ -0,0 +1,74 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+#define _LIGHT 2
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define KC_ALEN LALT_T(KC_ENT)
+#define ES_LIGH LT(_LIGHT, KC_ESC)
+
+#define CT_COPY LCTL(KC_C)
+#define CT_PASTE LCTL(KC_V)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────â”
+ ES_LIGH ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
+ //└────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
+ //┌────────┼────────┼────────┼────────┼────────┼────────┼────────â”
+ CT_COPY ,CT_PASTE,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────â”
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
+ //├────────┼────────┘ └────────┴────────┼────────┼────────â”
+ KC_LCTL ,SYM_L ,KC_SPC
+ //└────────┘ └────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,
+ //└────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_GRV ,KC_UP ,KC_PIPE ,KC_LCBR ,KC_RCBR ,
+ //┌────────┼────────┼────────┼────────┼────────┼────────┼────────â”
+ _______ ,_______ ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_LBRC ,KC_RBRC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────â”
+ _______ ,KC_BSPC ,KC_DEL ,KC_LPRN ,KC_RPRN ,
+ //├────────┼────────┘ └────────┴────────┼────────┼────────â”
+ _______ ,_______ ,_______
+ //└────────┘ └────────┴────────┘
+ ),
+
+ [_LIGHT] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,
+ //└────────┼────────┼────────┼────────┼────────┼────────┤
+ RGB_M_P ,RGB_M_SW,RGB_M_X ,RGB_M_B ,RGB_VAD ,
+ //┌────────┼────────┼────────┼────────┼────────┼────────┼────────â”
+ _______ ,_______ ,RGB_M_SN,RGB_M_G ,RGB_M_R ,RGB_M_K ,RGB_M_T ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────â”
+ _______ ,RGB_M_T ,XXXXXXX ,RGB_VAI ,RGB_VAD ,
+ //├────────┼────────┘ └────────┴────────┼────────┼────────â”
+ _______ ,RGB_MOD ,RGB_TOG
+ //└────────┘ └────────┴────────┘
+ )
+
+};
+
+// Runs just one time when the keyboard initializes.
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_user(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox_game/keymaps/default/readme.md b/keyboards/kumaokobo/kudox_game/keymaps/default/readme.md
index 0fbdb86a94..0fbdb86a94 100644
--- a/keyboards/kudox_game/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/kudox_game/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/kudox_game/keymaps/via/keymap.c b/keyboards/kumaokobo/kudox_game/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b0722bf470
--- /dev/null
+++ b/keyboards/kumaokobo/kudox_game/keymaps/via/keymap.c
@@ -0,0 +1,81 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
+ //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
+ KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
+ //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
+ LCTL(KC_C),LCTL(KC_V),KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
+ //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
+ //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
+ KC_LCTL ,TO(_FN1) ,KC_SPC
+ //└──────────┘ └──────────┴──────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
+ KC_TRNS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,
+ //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
+ KC_GRV ,KC_UP ,KC_PIPE ,KC_LCBR ,KC_RCBR ,
+ //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
+ KC_TRNS ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_LBRC ,KC_RBRC ,
+ //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
+ KC_TRNS ,KC_BSPC ,KC_DEL ,KC_LPRN ,KC_RPRN ,
+ //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
+ TO(_FN2) ,TO(_BASE) ,KC_TRNS
+ //└──────────┘ └──────────┴──────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
+ KC_TRNS ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,
+ //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
+ RGB_M_P ,RGB_M_SW ,RGB_M_X ,RGB_M_B ,RGB_VAD ,
+ //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
+ KC_TRNS ,KC_TRNS ,RGB_M_SN ,RGB_M_G ,RGB_M_R ,RGB_M_K ,RGB_M_T ,
+ //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
+ KC_TRNS ,RGB_M_T ,KC_DEL ,RGB_VAI ,RGB_VAD ,
+ //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
+ TO(_FN1) ,RGB_MOD ,RGB_TOG
+ //└──────────┘ └──────────┴──────────┘
+ ),
+
+
+ [_FN3] = LAYOUT(
+ //┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────â”
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //└──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────â”
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├──────────┼──────────┼──────────┴──────────┼──────────┼──────────┼──────────┤
+ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,
+ //├──────────┼──────────┘ └──────────┴──────────┼──────────┼──────────â”
+ KC_TRNS ,KC_TRNS ,KC_TRNS
+ //└──────────┘ └──────────┴──────────┘
+ )
+};
+
+
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_user(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
diff --git a/keyboards/kudox_game/keymaps/via/readme.md b/keyboards/kumaokobo/kudox_game/keymaps/via/readme.md
index 203474736c..203474736c 100644
--- a/keyboards/kudox_game/keymaps/via/readme.md
+++ b/keyboards/kumaokobo/kudox_game/keymaps/via/readme.md
diff --git a/keyboards/mnk1800s/keymaps/via/rules.mk b/keyboards/kumaokobo/kudox_game/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100755..100644
--- a/keyboards/mnk1800s/keymaps/via/rules.mk
+++ b/keyboards/kumaokobo/kudox_game/keymaps/via/rules.mk
diff --git a/keyboards/kumaokobo/kudox_game/readme.md b/keyboards/kumaokobo/kudox_game/readme.md
new file mode 100644
index 0000000000..6e06be159c
--- /dev/null
+++ b/keyboards/kumaokobo/kudox_game/readme.md
@@ -0,0 +1,26 @@
+# The Kudox Game keyboard
+
+<p align="center">
+<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png" alt="Kudox logo" width="600"/>
+</p>
+
+<p align="center">
+<img src="https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-game-pcb.jpg" alt="Kudox Game PCB rev1.0" width="600"/>
+</p>
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox Game PCB rev1.0 rev2.0 w/ Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make kumaokobo/kudox_game/rev2:default
+```
+
+Example of flashing this keyboard:
+
+```sh
+make kumaokobo/kudox_game/rev2:default:avrdude
+```
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kudox_game/rev1/config.h b/keyboards/kumaokobo/kudox_game/rev1/config.h
index b0b9607f4b..b0b9607f4b 100644
--- a/keyboards/kudox_game/rev1/config.h
+++ b/keyboards/kumaokobo/kudox_game/rev1/config.h
diff --git a/keyboards/kudox_game/rev1/info.json b/keyboards/kumaokobo/kudox_game/rev1/info.json
index e5c39fce31..e5c39fce31 100644
--- a/keyboards/kudox_game/rev1/info.json
+++ b/keyboards/kumaokobo/kudox_game/rev1/info.json
diff --git a/keyboards/kudox/rev3/rules.mk b/keyboards/kumaokobo/kudox_game/rev1/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/kudox/rev3/rules.mk
+++ b/keyboards/kumaokobo/kudox_game/rev1/rules.mk
diff --git a/keyboards/kudox_game/rev2/config.h b/keyboards/kumaokobo/kudox_game/rev2/config.h
index 37fde91599..37fde91599 100644
--- a/keyboards/kudox_game/rev2/config.h
+++ b/keyboards/kumaokobo/kudox_game/rev2/config.h
diff --git a/keyboards/kudox_game/rev2/info.json b/keyboards/kumaokobo/kudox_game/rev2/info.json
index e811c70d5b..e811c70d5b 100644
--- a/keyboards/kudox_game/rev2/info.json
+++ b/keyboards/kumaokobo/kudox_game/rev2/info.json
diff --git a/keyboards/miniaxe/keymaps/underglow/rules.mk b/keyboards/kumaokobo/kudox_game/rev2/rules.mk
index 1e3cebb145..1e3cebb145 100644
--- a/keyboards/miniaxe/keymaps/underglow/rules.mk
+++ b/keyboards/kumaokobo/kudox_game/rev2/rules.mk
diff --git a/keyboards/kumaokobo/kudox_game/rules.mk b/keyboards/kumaokobo/kudox_game/rules.mk
new file mode 100644
index 0000000000..569f262b38
--- /dev/null
+++ b/keyboards/kumaokobo/kudox_game/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+
+DEFAULT_FOLDER = kumaokobo/kudox_game/rev2
diff --git a/keyboards/pico/65keys/config.h b/keyboards/kumaokobo/pico/65keys/config.h
index 04bc8cb2d2..04bc8cb2d2 100644
--- a/keyboards/pico/65keys/config.h
+++ b/keyboards/kumaokobo/pico/65keys/config.h
diff --git a/keyboards/pico/65keys/info.json b/keyboards/kumaokobo/pico/65keys/info.json
index 260b2db1e9..260b2db1e9 100644
--- a/keyboards/pico/65keys/info.json
+++ b/keyboards/kumaokobo/pico/65keys/info.json
diff --git a/keyboards/kumaokobo/pico/65keys/keymaps/default/keymap.c b/keyboards/kumaokobo/pico/65keys/keymaps/default/keymap.c
new file mode 100644
index 0000000000..15e0ff3168
--- /dev/null
+++ b/keyboards/kumaokobo/pico/65keys/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define KC_ALES LALT_T(KC_ESC)
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ 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_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_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_INT3 ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_GRV ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,KC_CIRC ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/pico/65keys/keymaps/default/readme.md b/keyboards/kumaokobo/pico/65keys/keymaps/default/readme.md
index 9f8fa53ebf..9f8fa53ebf 100644
--- a/keyboards/pico/65keys/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/pico/65keys/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/pico/65keys/keymaps/jis/keymap.c b/keyboards/kumaokobo/pico/65keys/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..94767aef90
--- /dev/null
+++ b/keyboards/kumaokobo/pico/65keys/keymaps/jis/keymap.c
@@ -0,0 +1,50 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+#include"keymap_japanese.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define KC_ALES LALT_T(KC_ESC)
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ 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 ,JP_AT ,JP_CIRC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,JP_COLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,JP_YEN ,JP_TILD ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,JP_GRV ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,JP_UNDS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,_______ ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/pico/65keys/keymaps/jis/readme.md b/keyboards/kumaokobo/pico/65keys/keymaps/jis/readme.md
index 49d2aa7b7a..49d2aa7b7a 100644
--- a/keyboards/pico/65keys/keymaps/jis/readme.md
+++ b/keyboards/kumaokobo/pico/65keys/keymaps/jis/readme.md
diff --git a/keyboards/kudox_game/rev1/rules.mk b/keyboards/kumaokobo/pico/65keys/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/kudox_game/rev1/rules.mk
+++ b/keyboards/kumaokobo/pico/65keys/rules.mk
diff --git a/keyboards/pico/70keys/config.h b/keyboards/kumaokobo/pico/70keys/config.h
index 04bc8cb2d2..04bc8cb2d2 100644
--- a/keyboards/pico/70keys/config.h
+++ b/keyboards/kumaokobo/pico/70keys/config.h
diff --git a/keyboards/pico/70keys/info.json b/keyboards/kumaokobo/pico/70keys/info.json
index ed3c8163d1..ed3c8163d1 100644
--- a/keyboards/pico/70keys/info.json
+++ b/keyboards/kumaokobo/pico/70keys/info.json
diff --git a/keyboards/kumaokobo/pico/70keys/keymaps/default/keymap.c b/keyboards/kumaokobo/pico/70keys/keymaps/default/keymap.c
new file mode 100644
index 0000000000..fa14063d4b
--- /dev/null
+++ b/keyboards/kumaokobo/pico/70keys/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define KC_ALES LALT_T(KC_ESC)
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = 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_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,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_LCTL ,KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ KC_LSFT ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_INT3 ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_GRV ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,KC_CIRC ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/pico/70keys/keymaps/default/readme.md b/keyboards/kumaokobo/pico/70keys/keymaps/default/readme.md
index 0b9a978d7d..0b9a978d7d 100644
--- a/keyboards/pico/70keys/keymaps/default/readme.md
+++ b/keyboards/kumaokobo/pico/70keys/keymaps/default/readme.md
diff --git a/keyboards/kumaokobo/pico/70keys/keymaps/jis/keymap.c b/keyboards/kumaokobo/pico/70keys/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..2d9414cced
--- /dev/null
+++ b/keyboards/kumaokobo/pico/70keys/keymaps/jis/keymap.c
@@ -0,0 +1,50 @@
+// Copyright Kumao Kobo <kumaokobo@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+#include"keymap_japanese.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _SYMB 1
+
+// Shortcut to make keymap more readable
+#define SYM_L MO(_SYMB)
+#define KC_ALES LALT_T(KC_ESC)
+#define KC_L1SYM LT(_SYMB, KC_LNG1)
+#define KC_L2SYM LT(_SYMB, KC_LNG2)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_CIRC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,JP_COLN ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ KC_LSFT ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ KC_ALES ,KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [_SYMB] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,JP_YEN ,JP_TILD ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,JP_GRV ,KC_MINS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,JP_UNDS ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,_______ ,KC_GT
+ //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/pico/70keys/keymaps/jis/readme.md b/keyboards/kumaokobo/pico/70keys/keymaps/jis/readme.md
index dda39dfb82..dda39dfb82 100644
--- a/keyboards/pico/70keys/keymaps/jis/readme.md
+++ b/keyboards/kumaokobo/pico/70keys/keymaps/jis/readme.md
diff --git a/keyboards/lefty/rev1/rules.mk b/keyboards/kumaokobo/pico/70keys/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/lefty/rev1/rules.mk
+++ b/keyboards/kumaokobo/pico/70keys/rules.mk
diff --git a/keyboards/pico/config.h b/keyboards/kumaokobo/pico/config.h
index ba80a92797..ba80a92797 100644
--- a/keyboards/pico/config.h
+++ b/keyboards/kumaokobo/pico/config.h
diff --git a/keyboards/kumaokobo/pico/readme.md b/keyboards/kumaokobo/pico/readme.md
new file mode 100644
index 0000000000..b54c42941e
--- /dev/null
+++ b/keyboards/kumaokobo/pico/readme.md
@@ -0,0 +1,24 @@
+# Pico keyboard
+
+A split keyboard kit designed for small hands.
+Pico adopted the footprint for [Kailh Mid-Height](http://www.kailh.com/en/Products/Ks/KHS/) smaller than Cherry MX compatible switches.
+
+* Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+* Hardware Supported: Pico PCB rev1.0 w/ Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kumaokobo/pico/65keys:default
+
+## 65 keys
+<p align="center">
+ <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard.jpg" alt="Pico Keyboard 65 keys" width="600"/>
+</p>
+
+## 70 keys
+<p align="center">
+ <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard2.jpg" alt="Pico Keyboard 70 keys" width="600"/>
+</p>
+
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kumaokobo/pico/rules.mk b/keyboards/kumaokobo/pico/rules.mk
new file mode 100644
index 0000000000..11fe77d618
--- /dev/null
+++ b/keyboards/kumaokobo/pico/rules.mk
@@ -0,0 +1,16 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = kumaokobo/pico/65keys
diff --git a/keyboards/kuro/kuro65/config.h b/keyboards/kuro/kuro65/config.h
index f782e9069b..d84264b39c 100644
--- a/keyboards/kuro/kuro65/config.h
+++ b/keyboards/kuro/kuro65/config.h
@@ -22,7 +22,7 @@
// The number of LEDs connected
# define RGB_MATRIX_LED_COUNT 69
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define USB_SUSPEND_WAKEUP_DELAY 5000
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
diff --git a/keyboards/kwstudio/scorpio/config.h b/keyboards/kwstudio/scorpio/config.h
deleted file mode 100644
index 2f136dd001..0000000000
--- a/keyboards/kwstudio/scorpio/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2023 kwstudio
- *
- * 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 WS2812_PIO_USE_PIO1
-
diff --git a/keyboards/lpad/config.h b/keyboards/laneware/lpad/config.h
index ce4da1d32e..ce4da1d32e 100644
--- a/keyboards/lpad/config.h
+++ b/keyboards/laneware/lpad/config.h
diff --git a/keyboards/lpad/info.json b/keyboards/laneware/lpad/info.json
index 0d8016f842..0d8016f842 100644
--- a/keyboards/lpad/info.json
+++ b/keyboards/laneware/lpad/info.json
diff --git a/keyboards/lpad/keymaps/default/keymap.c b/keyboards/laneware/lpad/keymaps/default/keymap.c
index 63fd98f6eb..63fd98f6eb 100644
--- a/keyboards/lpad/keymaps/default/keymap.c
+++ b/keyboards/laneware/lpad/keymaps/default/keymap.c
diff --git a/keyboards/lpad/keymaps/via/keymap.c b/keyboards/laneware/lpad/keymaps/via/keymap.c
index be180d058e..be180d058e 100644
--- a/keyboards/lpad/keymaps/via/keymap.c
+++ b/keyboards/laneware/lpad/keymaps/via/keymap.c
diff --git a/keyboards/lw75/keymaps/via/rules.mk b/keyboards/laneware/lpad/keymaps/via/rules.mk
index f1adcab005..f1adcab005 100644
--- a/keyboards/lw75/keymaps/via/rules.mk
+++ b/keyboards/laneware/lpad/keymaps/via/rules.mk
diff --git a/keyboards/laneware/lpad/readme.md b/keyboards/laneware/lpad/readme.md
new file mode 100644
index 0000000000..2a2e8b5672
--- /dev/null
+++ b/keyboards/laneware/lpad/readme.md
@@ -0,0 +1,27 @@
+# LPAD
+
+![LPAD](https://i.imgur.com/bQgqZC6h.jpg)
+
+A Macro Keyboard with a RHS rotary encoder, made and sold by Laneware Peripherals.
+
+* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
+* Hardware Supported: LPAD
+* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
+
+Make example for this keyboard (after setting up your build environment):
+
+ make laneware/lpad:default
+
+Flashing example for this keyboard:
+
+ make laneware/lpad: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 2 ways:
+
+* **Bootmagic reset**: Hold down the Top Left Switch and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lpad/rules.mk b/keyboards/laneware/lpad/rules.mk
index 524fa11adc..524fa11adc 100644
--- a/keyboards/lpad/rules.mk
+++ b/keyboards/laneware/lpad/rules.mk
diff --git a/keyboards/lw67/config.h b/keyboards/laneware/lw67/config.h
index c9f23257a3..c9f23257a3 100644
--- a/keyboards/lw67/config.h
+++ b/keyboards/laneware/lw67/config.h
diff --git a/keyboards/lw67/info.json b/keyboards/laneware/lw67/info.json
index e9bba7c858..e9bba7c858 100644
--- a/keyboards/lw67/info.json
+++ b/keyboards/laneware/lw67/info.json
diff --git a/keyboards/lw67/keymaps/ansi_split_backspace/keymap.c b/keyboards/laneware/lw67/keymaps/ansi_split_backspace/keymap.c
index 4d89777d88..4d89777d88 100644
--- a/keyboards/lw67/keymaps/ansi_split_backspace/keymap.c
+++ b/keyboards/laneware/lw67/keymaps/ansi_split_backspace/keymap.c
diff --git a/keyboards/laneware/lw67/keymaps/default/keymap.c b/keyboards/laneware/lw67/keymaps/default/keymap.c
new file mode 100644
index 0000000000..97e947fb01
--- /dev/null
+++ b/keyboards/laneware/lw67/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+// Copyright 2023 Laneware Peripherals
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPLY,
+ 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_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_DEL, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/laneware/lw67/keymaps/iso/keymap.c b/keyboards/laneware/lw67/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..8e26843868
--- /dev/null
+++ b/keyboards/laneware/lw67/keymaps/iso/keymap.c
@@ -0,0 +1,28 @@
+// Copyright 2023 Laneware Peripherals
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_iso(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPLY,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_iso(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_iso(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lw67/keymaps/iso_split_backspace/keymap.c b/keyboards/laneware/lw67/keymaps/iso_split_backspace/keymap.c
index a1349af56b..a1349af56b 100644
--- a/keyboards/lw67/keymaps/iso_split_backspace/keymap.c
+++ b/keyboards/laneware/lw67/keymaps/iso_split_backspace/keymap.c
diff --git a/keyboards/laneware/lw67/keymaps/via/keymap.c b/keyboards/laneware/lw67/keymaps/via/keymap.c
new file mode 100644
index 0000000000..73d2640f17
--- /dev/null
+++ b/keyboards/laneware/lw67/keymaps/via/keymap.c
@@ -0,0 +1,34 @@
+// Copyright 2023 Laneware Peripherals
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_iso_splitbs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_MPLY,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lw67/keymaps/via/rules.mk b/keyboards/laneware/lw67/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/lw67/keymaps/via/rules.mk
+++ b/keyboards/laneware/lw67/keymaps/via/rules.mk
diff --git a/keyboards/laneware/lw67/readme.md b/keyboards/laneware/lw67/readme.md
new file mode 100644
index 0000000000..de59992d43
--- /dev/null
+++ b/keyboards/laneware/lw67/readme.md
@@ -0,0 +1,22 @@
+# LW-67
+
+![LW67](https://i.imgur.com/mcM1TTi.jpg)
+
+A 65% Keyboard with a LHS rotary encoder, made and sold by Laneware Peripherals.
+
+* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
+* Hardware Supported: Macro-1
+* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
+
+Make example for this keyboard (after setting up your build environment):
+
+ make laneware/lw67: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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lw67/rules.mk b/keyboards/laneware/lw67/rules.mk
index 131aa72aeb..131aa72aeb 100644
--- a/keyboards/lw67/rules.mk
+++ b/keyboards/laneware/lw67/rules.mk
diff --git a/keyboards/lw75/config.h b/keyboards/laneware/lw75/config.h
index ce4da1d32e..ce4da1d32e 100644
--- a/keyboards/lw75/config.h
+++ b/keyboards/laneware/lw75/config.h
diff --git a/keyboards/lw75/info.json b/keyboards/laneware/lw75/info.json
index bb9aceb95f..bb9aceb95f 100644
--- a/keyboards/lw75/info.json
+++ b/keyboards/laneware/lw75/info.json
diff --git a/keyboards/lw75/keymaps/ansi_split_backspace/keymap.c b/keyboards/laneware/lw75/keymaps/ansi_split_backspace/keymap.c
index 6f8a8b03ca..6f8a8b03ca 100644
--- a/keyboards/lw75/keymaps/ansi_split_backspace/keymap.c
+++ b/keyboards/laneware/lw75/keymaps/ansi_split_backspace/keymap.c
diff --git a/keyboards/lw75/keymaps/default/keymap.c b/keyboards/laneware/lw75/keymaps/default/keymap.c
index b66e50460d..b66e50460d 100644
--- a/keyboards/lw75/keymaps/default/keymap.c
+++ b/keyboards/laneware/lw75/keymaps/default/keymap.c
diff --git a/keyboards/lw75/keymaps/iso/keymap.c b/keyboards/laneware/lw75/keymaps/iso/keymap.c
index b6cba59175..b6cba59175 100644
--- a/keyboards/lw75/keymaps/iso/keymap.c
+++ b/keyboards/laneware/lw75/keymaps/iso/keymap.c
diff --git a/keyboards/lw75/keymaps/iso_split_backspace/keymap.c b/keyboards/laneware/lw75/keymaps/iso_split_backspace/keymap.c
index d8b3b551ef..d8b3b551ef 100644
--- a/keyboards/lw75/keymaps/iso_split_backspace/keymap.c
+++ b/keyboards/laneware/lw75/keymaps/iso_split_backspace/keymap.c
diff --git a/keyboards/lw75/keymaps/via/keymap.c b/keyboards/laneware/lw75/keymaps/via/keymap.c
index b7e64cbcb7..b7e64cbcb7 100644
--- a/keyboards/lw75/keymaps/via/keymap.c
+++ b/keyboards/laneware/lw75/keymaps/via/keymap.c
diff --git a/keyboards/laneware/lw75/keymaps/via/rules.mk b/keyboards/laneware/lw75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f1adcab005
--- /dev/null
+++ b/keyboards/laneware/lw75/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/laneware/lw75/readme.md b/keyboards/laneware/lw75/readme.md
new file mode 100644
index 0000000000..5b28204ada
--- /dev/null
+++ b/keyboards/laneware/lw75/readme.md
@@ -0,0 +1,25 @@
+# LW-75
+
+![LW75](https://i.imgur.com/JczcWsmh.jpg)
+
+A 75% Keyboard with a LHS rotary encoder, made and sold by Laneware Peripherals.
+
+* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
+* Hardware Supported: LW-75
+* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
+
+Make example for this keyboard (after setting up your build environment):
+
+ make laneware/lw75:default
+
+Flashing example for this keyboard:
+ make laneware/lw75: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 2 ways:
+
+* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lw75/rules.mk b/keyboards/laneware/lw75/rules.mk
index 131aa72aeb..131aa72aeb 100644
--- a/keyboards/lw75/rules.mk
+++ b/keyboards/laneware/lw75/rules.mk
diff --git a/keyboards/macro1/config.h b/keyboards/laneware/macro1/config.h
index 30b3906f0d..30b3906f0d 100644
--- a/keyboards/macro1/config.h
+++ b/keyboards/laneware/macro1/config.h
diff --git a/keyboards/macro1/info.json b/keyboards/laneware/macro1/info.json
index dd22627031..dd22627031 100644
--- a/keyboards/macro1/info.json
+++ b/keyboards/laneware/macro1/info.json
diff --git a/keyboards/laneware/macro1/keymaps/default/keymap.c b/keyboards/laneware/macro1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bee64a99e5
--- /dev/null
+++ b/keyboards/laneware/macro1/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+// Copyright 2023 Laneware Peripherals
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+/*
+ * ┌───┠┌───┬───â”
+ * │K00│ │K02│K03│
+ * └───┘ └───┴───┘
+ * ┌───┬───┬───┬───â”
+ * │K10│K11│K12│K13│
+ * ├───┼───┼───┼───┤
+ * │K20│K21│K22│K23│
+ * ├───┼───┼───┤ │
+ * │K30│K31│K32│ │
+ * ├───┼───┼───┼───┤
+ * │K40│K41│K42│K43│
+ * ├───┴───┼───┤ │
+ * │K50 │K52│ │
+ * └───────┴───┴───┘
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_numpad(
+ KC_MUTE, KC_MPLY, KC_BSPC,
+ KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
+ KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
+ KC_KP_0, KC_KP_DOT)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}
+};
+#endif
+
+
diff --git a/keyboards/macro1/keymaps/macropad/keymap.c b/keyboards/laneware/macro1/keymaps/macropad/keymap.c
index 68566fb53f..68566fb53f 100644
--- a/keyboards/macro1/keymaps/macropad/keymap.c
+++ b/keyboards/laneware/macro1/keymaps/macropad/keymap.c
diff --git a/keyboards/macro1/keymaps/southpaw/keymap.c b/keyboards/laneware/macro1/keymaps/southpaw/keymap.c
index b8c6bfb339..b8c6bfb339 100644
--- a/keyboards/macro1/keymaps/southpaw/keymap.c
+++ b/keyboards/laneware/macro1/keymaps/southpaw/keymap.c
diff --git a/keyboards/laneware/macro1/keymaps/via/keymap.c b/keyboards/laneware/macro1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3e18339208
--- /dev/null
+++ b/keyboards/laneware/macro1/keymaps/via/keymap.c
@@ -0,0 +1,90 @@
+// Copyright 2023 Laneware Peripherals
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+/*
+ * ┌───┠┌───┬───â”
+ * │K00│ │K02│K03│
+ * └───┘ └───┴───┘
+ * ┌───┬───┬───┬───â”
+ * │K10│K11│K12│K13│
+ * ├───┼───┼───┼───┤
+ * │K20│K21│K22│K23│
+ * ├───┼───┼───┤ │
+ * │K30│K31│K32│ │
+ * ├───┼───┼───┼───┤
+ * │K40│K41│K42│K43│
+ * ├───┴───┼───┤ │
+ * │K50 │K52│ │
+ * └───────┴───┴───┘
+ */
+
+ /*
+ * ┌───┠┌───┬───â”
+ * │K00│ │K02│K03│
+ * └───┘ └───┴───┘
+ * ┌───┬───┬───┬───â”
+ * │K10│K11│K12│K13│
+ * ├───┼───┼───┼───┤
+ * │K20│K21│K22│K23│
+ * │ ├───┼───┼───┤
+ * │ │K31│K32│K33│
+ * ├───┼───┼───┼───┤
+ * │K40│K41│K42│K43│
+ * │ ├───┼───┴───┤
+ * │ │K51│K52 │
+ * └───┴───┴───────┘
+ */
+
+/*
+ * ┌───┠┌───┬───â”
+ * │K00│ │K01│K02│
+ * └───┘ └───┴───┘
+ * ┌───┬───┬───┬───â”
+ * │K10│K11│K12│K13│
+ * ├───┼───┼───┼───┤
+ * │K20│K21│K22│K23│
+ * ├───┼───┼───┼───┤
+ * │K30│K31│K32│K33│
+ * ├───┼───┼───┼───┤
+ * │K40│K41│K42│K43│
+ * ├───┼───┼───┼───┤
+ * │K50│K51│K52│K53│
+ * └───┴───┴───┴───┘
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_numpad(
+ KC_MUTE, KC_MPLY, KC_BSPC,
+ KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
+ KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
+ KC_KP_0, KC_KP_DOT),
+
+ [1] = LAYOUT_numpad(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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_numpad(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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_numpad(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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/macro1/keymaps/via/rules.mk b/keyboards/laneware/macro1/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/macro1/keymaps/via/rules.mk
+++ b/keyboards/laneware/macro1/keymaps/via/rules.mk
diff --git a/keyboards/laneware/macro1/readme.md b/keyboards/laneware/macro1/readme.md
new file mode 100644
index 0000000000..c89ceb0d88
--- /dev/null
+++ b/keyboards/laneware/macro1/readme.md
@@ -0,0 +1,22 @@
+# Macro-1
+
+![Macro-1](https://i.imgur.com/pnTgKuTh.jpeg)
+
+A versitile numpad/macropad (14x6) with a rotary encoder, made and sold by Laneware Peripherals.
+
+* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
+* Hardware Supported: Macro-1
+* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
+
+Make example for this keyboard (after setting up your build environment):
+
+ make laneware/macro1: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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/macro1/rules.mk b/keyboards/laneware/macro1/rules.mk
index f0a88209b6..f0a88209b6 100644
--- a/keyboards/macro1/rules.mk
+++ b/keyboards/laneware/macro1/rules.mk
diff --git a/keyboards/raindrop/config.h b/keyboards/laneware/raindrop/config.h
index 1f083ec616..1f083ec616 100644
--- a/keyboards/raindrop/config.h
+++ b/keyboards/laneware/raindrop/config.h
diff --git a/keyboards/raindrop/info.json b/keyboards/laneware/raindrop/info.json
index bc67d437fa..bc67d437fa 100644
--- a/keyboards/raindrop/info.json
+++ b/keyboards/laneware/raindrop/info.json
diff --git a/keyboards/raindrop/keymaps/arrows/keymap.c b/keyboards/laneware/raindrop/keymaps/arrows/keymap.c
index a13614f751..a13614f751 100644
--- a/keyboards/raindrop/keymaps/arrows/keymap.c
+++ b/keyboards/laneware/raindrop/keymaps/arrows/keymap.c
diff --git a/keyboards/raindrop/keymaps/default/keymap.c b/keyboards/laneware/raindrop/keymaps/default/keymap.c
index 8456863bb0..8456863bb0 100644
--- a/keyboards/raindrop/keymaps/default/keymap.c
+++ b/keyboards/laneware/raindrop/keymaps/default/keymap.c
diff --git a/keyboards/raindrop/keymaps/hhkb/keymap.c b/keyboards/laneware/raindrop/keymaps/hhkb/keymap.c
index b08984c9aa..b08984c9aa 100644
--- a/keyboards/raindrop/keymaps/hhkb/keymap.c
+++ b/keyboards/laneware/raindrop/keymaps/hhkb/keymap.c
diff --git a/keyboards/raindrop/matrix_diagram.md b/keyboards/laneware/raindrop/matrix_diagram.md
index 4ba15ecabc..4ba15ecabc 100644
--- a/keyboards/raindrop/matrix_diagram.md
+++ b/keyboards/laneware/raindrop/matrix_diagram.md
diff --git a/keyboards/laneware/raindrop/readme.md b/keyboards/laneware/raindrop/readme.md
new file mode 100644
index 0000000000..f0354d3859
--- /dev/null
+++ b/keyboards/laneware/raindrop/readme.md
@@ -0,0 +1,38 @@
+# Raindrop
+
+![stacked](https://i.imgur.com/R2iPqjIh.png)
+*Casing*
+![PCB Front](https://i.imgur.com/00TpL3nh.png)
+*PCB Front*
+
+60% sized keyboard with a gasket mounted plate and aluminium case, made by Laneware Peripherals.
+
+* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
+* Hardware Supported: Raindrop PCB
+* Hardware Availability: Group Buy
+
+## Layouts
+The Raindrop PCB can be configured in the following key layouts:
+| Key Layout | Keymap | Diagram |
+| :---: | :---: | :---: |
+| Standard 60% | default | ![diagram_ansi](https://i.imgur.com/oibG44o.png) |
+| 2u Left Shift with Arrow Keys | arrows | ![diagram_arrows](https://i.imgur.com/cQ4Kwb5h.png) |
+| HHKB with 6.25 Spacebar | hhkb | ![diagram_hhkb](https://i.imgur.com/WU6gb1Qh.png) |
+
+Make example for this keyboard (after setting up your build environment):
+
+ make laneware/raindrop:default
+
+Flashing example for this keyboard:
+
+ make laneware/raindrop: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/lefty/rev2/rules.mk b/keyboards/laneware/raindrop/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/lefty/rev2/rules.mk
+++ b/keyboards/laneware/raindrop/rules.mk
diff --git a/keyboards/laser_ninja/pumpkin_pad/config.h b/keyboards/laser_ninja/pumpkin_pad/config.h
deleted file mode 100644
index f42e9c1025..0000000000
--- a/keyboards/laser_ninja/pumpkin_pad/config.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright 2022 Joah Nelson (Jels)
- *
- * 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
-
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 28
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#endif
-
-/* 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
diff --git a/keyboards/laser_ninja/pumpkin_pad/info.json b/keyboards/laser_ninja/pumpkin_pad/info.json
deleted file mode 100644
index cb76145388..0000000000
--- a/keyboards/laser_ninja/pumpkin_pad/info.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "keyboard_name": "Pumpkin Pad",
- "manufacturer": "Laser Ninja",
- "url": "",
- "maintainer": "Jels",
- "processor": "STM32F072",
- "bootloader": "stm32-dfu",
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "extrakey": false,
- "mousekey": false,
- "nkro": false,
- "rgb_matrix": true
- },
- "matrix_pins": {
- "direct": [
- ["A9", "B3", "B9", "NO_PIN"],
- ["A8", "B12", "A2", "A1"],
- ["B15", "B14", "B13", "NO_PIN"]
- ]
- },
- "usb": {
- "vid": "0x6C6E",
- "pid": "0x7070",
- "device_version": "0.0.1"
- },
- "ws2812": {
- "pin": "A10"
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"matrix": [0, 0], "x": 0.5, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0},
- {"matrix": [0, 2], "x": 2.5, "y": 0},
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1, "y": 1},
- {"matrix": [1, 2], "x": 2, "y": 1},
- {"matrix": [1, 3], "x": 3, "y": 1},
- {"matrix": [2, 0], "x": 0.5, "y": 2},
- {"matrix": [2, 1], "x": 1.5, "y": 2},
- {"matrix": [2, 2], "x": 2.5, "y": 2}
- ]
- }
- },
- "rgb_matrix": {
- "driver": "ws2812",
- "layout": [
- {"flags": 2, "x": 36, "y": 3},
- {"flags": 2, "x": 86, "y": 2},
- {"flags": 2, "x": 138, "y": 2},
- {"flags": 2, "x": 188, "y": 2},
- {"flags": 2, "x": 215, "y": 16},
- {"flags": 2, "x": 215, "y": 16},
- {"flags": 4, "matrix": [0, 2], "x": 167, "y": 17},
- {"flags": 4, "matrix": [0, 1], "x": 112, "y": 17},
- {"flags": 4, "matrix": [0, 0], "x": 57, "y": 17},
- {"flags": 2, "x": 9, "y": 15},
- {"flags": 2, "x": 9, "y": 15},
- {"flags": 2, "x": 6, "y": 34},
- {"flags": 2, "x": 9, "y": 48},
- {"flags": 2, "x": 9, "y": 48},
- {"flags": 4, "matrix": [1, 0], "x": 29, "y": 38},
- {"flags": 4, "matrix": [1, 1], "x": 84, "y": 38},
- {"flags": 4, "matrix": [1, 2], "x": 140, "y": 38},
- {"flags": 2, "x": 218, "y": 34},
- {"flags": 2, "x": 215, "y": 48},
- {"flags": 2, "x": 215, "y": 48},
- {"flags": 2, "x": 188, "y": 61},
- {"flags": 4, "matrix": [2, 2], "x": 167, "y": 59},
- {"flags": 2, "x": 138, "y": 61},
- {"flags": 4, "matrix": [2, 1], "x": 112, "y": 59},
- {"flags": 2, "x": 86, "y": 61},
- {"flags": 4, "matrix": [2, 0], "x": 57, "y": 59},
- {"flags": 2, "x": 36, "y": 61}
- ]
- }
-}
diff --git a/keyboards/laser_ninja/pumpkin_pad/readme.md b/keyboards/laser_ninja/pumpkin_pad/readme.md
deleted file mode 100644
index 452f4f6723..0000000000
--- a/keyboards/laser_ninja/pumpkin_pad/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Pumpkin Pad
-
-![pumpkin-pad](https://i.imgur.com/jFkl9rwh.jpg)
-
-A 60% PCB
-
-- Keyboard Maintainer: [Jels](https://github.com/Jels02)
-- Hardware Supported: Pumpkin Pad PCB
-- Hardware Availabililty: [Laser_Ninja](https://kennui.com/w/Laser_Ninja)
-
-Make example for this keyboard (after setting up your build environment):
-
- make laser_ninja/pumpkin_pad:default
-
-Flashing example for this keyboard:
-
- make laser_ninja/pumpkin_pad: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).
-
-- **Bootmagic reset**: Hold down the top left key and plug in the keyboard
-- **Physical reset button**: Briefly press the button on the back of the PCB
-- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/laser_ninja/pumpkinpad/config.h b/keyboards/laser_ninja/pumpkinpad/config.h
new file mode 100644
index 0000000000..fbb4aaafce
--- /dev/null
+++ b/keyboards/laser_ninja/pumpkinpad/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 Joah Nelson (Jels)
+ *
+ * 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
diff --git a/keyboards/laser_ninja/pumpkinpad/info.json b/keyboards/laser_ninja/pumpkinpad/info.json
new file mode 100644
index 0000000000..3908e99fc2
--- /dev/null
+++ b/keyboards/laser_ninja/pumpkinpad/info.json
@@ -0,0 +1,112 @@
+{
+ "keyboard_name": "Pumpkinpad",
+ "manufacturer": "Laser Ninja",
+ "url": "",
+ "maintainer": "Jels",
+ "processor": "STM32F072",
+ "bootloader": "stm32-dfu",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": false,
+ "mousekey": false,
+ "nkro": false,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["A9", "B3", "B9", "NO_PIN"],
+ ["A8", "B12", "A2", "A1"],
+ ["B15", "B14", "B13", "NO_PIN"]
+ ]
+ },
+ "usb": {
+ "vid": "0x6C6E",
+ "pid": "0x7070",
+ "device_version": "0.0.1"
+ },
+ "ws2812": {
+ "pin": "A10"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0.5, "y": 0},
+ {"matrix": [0, 1], "x": 1.5, "y": 0},
+ {"matrix": [0, 2], "x": 2.5, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [2, 0], "x": 0.5, "y": 2},
+ {"matrix": [2, 1], "x": 1.5, "y": 2},
+ {"matrix": [2, 2], "x": 2.5, "y": 2}
+ ]
+ }
+ },
+ "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_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": true
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"flags": 2, "x": 36, "y": 3},
+ {"flags": 2, "x": 86, "y": 2},
+ {"flags": 2, "x": 138, "y": 2},
+ {"flags": 2, "x": 188, "y": 2},
+ {"flags": 2, "x": 215, "y": 16},
+ {"flags": 2, "x": 215, "y": 16},
+ {"flags": 4, "matrix": [0, 2], "x": 167, "y": 17},
+ {"flags": 4, "matrix": [0, 1], "x": 112, "y": 17},
+ {"flags": 4, "matrix": [0, 0], "x": 57, "y": 17},
+ {"flags": 2, "x": 9, "y": 15},
+ {"flags": 2, "x": 9, "y": 15},
+ {"flags": 2, "x": 6, "y": 34},
+ {"flags": 2, "x": 9, "y": 48},
+ {"flags": 2, "x": 9, "y": 48},
+ {"flags": 4, "matrix": [1, 0], "x": 29, "y": 38},
+ {"flags": 4, "matrix": [1, 1], "x": 84, "y": 38},
+ {"flags": 4, "matrix": [1, 2], "x": 140, "y": 38},
+ {"flags": 2, "x": 218, "y": 34},
+ {"flags": 2, "x": 215, "y": 48},
+ {"flags": 2, "x": 215, "y": 48},
+ {"flags": 2, "x": 188, "y": 61},
+ {"flags": 4, "matrix": [2, 2], "x": 167, "y": 59},
+ {"flags": 2, "x": 138, "y": 61},
+ {"flags": 4, "matrix": [2, 1], "x": 112, "y": 59},
+ {"flags": 2, "x": 86, "y": 61},
+ {"flags": 4, "matrix": [2, 0], "x": 57, "y": 59},
+ {"flags": 2, "x": 36, "y": 61}
+ ],
+ "max_brightness": 200
+ }
+}
diff --git a/keyboards/laser_ninja/pumpkin_pad/keymaps/default/keymap.c b/keyboards/laser_ninja/pumpkinpad/keymaps/default/keymap.c
index 8b60519b90..8b60519b90 100644
--- a/keyboards/laser_ninja/pumpkin_pad/keymaps/default/keymap.c
+++ b/keyboards/laser_ninja/pumpkinpad/keymaps/default/keymap.c
diff --git a/keyboards/laser_ninja/pumpkin_pad/keymaps/via/keymap.c b/keyboards/laser_ninja/pumpkinpad/keymaps/via/keymap.c
index a63a5a0047..a63a5a0047 100644
--- a/keyboards/laser_ninja/pumpkin_pad/keymaps/via/keymap.c
+++ b/keyboards/laser_ninja/pumpkinpad/keymaps/via/keymap.c
diff --git a/keyboards/mnk50/keymaps/via/rules.mk b/keyboards/laser_ninja/pumpkinpad/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100755..100644
--- a/keyboards/mnk50/keymaps/via/rules.mk
+++ b/keyboards/laser_ninja/pumpkinpad/keymaps/via/rules.mk
diff --git a/keyboards/laser_ninja/pumpkinpad/readme.md b/keyboards/laser_ninja/pumpkinpad/readme.md
new file mode 100644
index 0000000000..a5739029e7
--- /dev/null
+++ b/keyboards/laser_ninja/pumpkinpad/readme.md
@@ -0,0 +1,23 @@
+# Pumpkinpad
+
+![pumpkinpad](https://i.imgur.com/jFkl9rwh.jpg)
+
+A 60% PCB
+
+- Keyboard Maintainer: [Jels](https://github.com/Jels02)
+- Hardware Supported: Pumpkinpad PCB
+- Hardware Availabililty: [Laser_Ninja](https://kennui.com/w/Laser_Ninja)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make laser_ninja/pumpkinpad:default
+
+Flashing example for this keyboard:
+
+ make laser_ninja/pumpkinpad: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).
+
+- **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+- **Physical reset button**: Briefly press the button on the back of the PCB
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/laser_ninja/pumpkin_pad/rules.mk b/keyboards/laser_ninja/pumpkinpad/rules.mk
index 08a1c1568c..08a1c1568c 100644
--- a/keyboards/laser_ninja/pumpkin_pad/rules.mk
+++ b/keyboards/laser_ninja/pumpkinpad/rules.mk
diff --git a/keyboards/late9/readme.md b/keyboards/late9/readme.md
deleted file mode 100644
index 1d85e788fb..0000000000
--- a/keyboards/late9/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# LATE-9
-
-
-The LATE-9 is a multi-tap input keyboard based on mobile phones from the late '90s. LATE-9 is intended as a dev board with 18 buttons and an OLED screen, made by through-hole components only. With this, you can experiment QMK OLED capabilities with very little expense.
-
-![LATE-9](https://i.imgur.com/QXycTC3h.jpg "LATE-9 first proto")
-
-See the project repository for gerbers.
-
-* Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy)
-* Hardware supported: ProMicro, _Elite-C (not tested)_
-* Project repository: [LATE-9 on github](https://github.com/rookiebwoy/late-9)
-
-Make example for this keyboard (after setting up your build environment):
-
- make late9/rev1:default
-
-Flashing example for this keyboard:
-
- make late9/rev1:default:flash
-
-
-When asked by the terminal, short with a metal wire the pins on the backside of the board highlighted as `RST` (one is the `RESET` and the other one is `GROUND`) to enter the bootloader and let the OS detects the device.
-After installing this firmware you can use Bootmagic to enter the bootloader while plugging in your LATE-9. By default it's the button on the upper-left of the keyboard.
-
-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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
-
diff --git a/keyboards/late9/rules.mk b/keyboards/late9/rules.mk
deleted file mode 100755
index 51c1b0d2a6..0000000000
--- a/keyboards/late9/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-DEFAULT_FOLDER = late9/rev1
diff --git a/keyboards/latincompass/latin17rgb/config.h b/keyboards/latincompass/latin17rgb/config.h
index fbeb499c4e..7ee0dba1f5 100644
--- a/keyboards/latincompass/latin17rgb/config.h
+++ b/keyboards/latincompass/latin17rgb/config.h
@@ -16,64 +16,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-
-# define DRIVER_1_LED_TOTAL 25
-# define DRIVER_2_LED_TOTAL 24
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
diff --git a/keyboards/latincompass/latin17rgb/info.json b/keyboards/latincompass/latin17rgb/info.json
index 9b466c216a..a211846f62 100644
--- a/keyboards/latincompass/latin17rgb/info.json
+++ b/keyboards/latincompass/latin17rgb/info.json
@@ -31,7 +31,38 @@
"pin": "B7"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3731",
+ "sleep": true
},
"matrix_pins": {
"cols": ["F7", "F6", "F5", "F4"],
diff --git a/keyboards/latincompass/latin17rgb/latin17rgb.c b/keyboards/latincompass/latin17rgb/latin17rgb.c
index b75a11d965..54705bf4f7 100644
--- a/keyboards/latincompass/latin17rgb/latin17rgb.c
+++ b/keyboards/latincompass/latin17rgb/latin17rgb.c
@@ -17,7 +17,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/latincompass/latin60rgb/config.h b/keyboards/latincompass/latin60rgb/config.h
index a25d3b0696..94ea00468c 100644
--- a/keyboards/latincompass/latin60rgb/config.h
+++ b/keyboards/latincompass/latin60rgb/config.h
@@ -15,58 +15,6 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 60
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
+
+#define RGB_MATRIX_LED_COUNT 60
diff --git a/keyboards/latincompass/latin60rgb/info.json b/keyboards/latincompass/latin60rgb/info.json
index f11f6ac3d5..5fef17fd09 100644
--- a/keyboards/latincompass/latin60rgb/info.json
+++ b/keyboards/latincompass/latin60rgb/info.json
@@ -9,7 +9,38 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["F7", "F6", "F5", "F4", "F1", "F0", "E6", "B0", "B1", "B2", "B3", "D6", "D4", "D3"],
diff --git a/keyboards/latincompass/latin60rgb/latin60rgb.c b/keyboards/latincompass/latin60rgb/latin60rgb.c
index a915bede80..95ddc428da 100644
--- a/keyboards/latincompass/latin60rgb/latin60rgb.c
+++ b/keyboards/latincompass/latin60rgb/latin60rgb.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, K_13, J_13, L_13 },
{ 0, K_12, J_12, L_12 },
{ 0, K_11, J_11, L_11 },
diff --git a/keyboards/latincompass/latin6rgb/config.h b/keyboards/latincompass/latin6rgb/config.h
index 584e39a327..6b15975100 100644
--- a/keyboards/latincompass/latin6rgb/config.h
+++ b/keyboards/latincompass/latin6rgb/config.h
@@ -17,62 +17,6 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define RGB_MATRIX_LED_COUNT 6
-#endif
-
#define B7_AUDIO
diff --git a/keyboards/latincompass/latin6rgb/info.json b/keyboards/latincompass/latin6rgb/info.json
index 0c43da36e4..775b6d259e 100644
--- a/keyboards/latincompass/latin6rgb/info.json
+++ b/keyboards/latincompass/latin6rgb/info.json
@@ -9,7 +9,38 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3731",
+ "sleep": true
},
"matrix_pins": {
"cols": ["F7", "F6", "F5"],
diff --git a/keyboards/latincompass/latin6rgb/latin6rgb.c b/keyboards/latincompass/latin6rgb/latin6rgb.c
index a1eb38b9af..779373ae8f 100644
--- a/keyboards/latincompass/latin6rgb/latin6rgb.c
+++ b/keyboards/latincompass/latin6rgb/latin6rgb.c
@@ -17,7 +17,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/latincompass/latinpad/config.h b/keyboards/latincompass/latinpad/config.h
index 35e52a8fc4..1fb828eb76 100644
--- a/keyboards/latincompass/latinpad/config.h
+++ b/keyboards/latincompass/latinpad/config.h
@@ -16,54 +16,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#pragma once
-#define RGB_MATRIX_LED_COUNT 18
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define OLED_FONT_H "./lib/glcdfont.c"
diff --git a/keyboards/latincompass/latinpad/info.json b/keyboards/latincompass/latinpad/info.json
index 6c54145723..f007efbf88 100644
--- a/keyboards/latincompass/latinpad/info.json
+++ b/keyboards/latincompass/latinpad/info.json
@@ -9,6 +9,37 @@
"device_version": "0.0.1"
},
"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
+ },
"driver": "ws2812"
},
"matrix_pins": {
diff --git a/keyboards/lefty/rules.mk b/keyboards/lefty/rules.mk
deleted file mode 100644
index bbf738e03b..0000000000
--- a/keyboards/lefty/rules.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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
-LTO_ENABLE = yes
-
-OLED_ENABLE = yes
-
-DEFAULT_FOLDER = lefty/rev2
diff --git a/keyboards/lets_split/keymaps/via/config.h b/keyboards/lets_split/keymaps/via/config.h
index a676d6826d..03853dc391 100644
--- a/keyboards/lets_split/keymaps/via/config.h
+++ b/keyboards/lets_split/keymaps/via/config.h
@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -42,6 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 10
+#define RGBLIGHT_LED_COUNT 10
#define NO_MUSIC_MODE
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
index c70c7d8817..924da8d04d 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
@@ -22,6 +22,6 @@
/* Force NKRO on boot up */
#define FORCE_NKRO
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_TIMEOUT 900000
diff --git a/keyboards/lily58/keymaps/default/config.h b/keyboards/lily58/keymaps/default/config.h
index b16e63b6d7..5b45770f38 100644
--- a/keyboards/lily58/keymaps/default/config.h
+++ b/keyboards/lily58/keymaps/default/config.h
@@ -29,7 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 100
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -40,7 +40,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 27
+#define RGBLIGHT_LED_COUNT 27
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
@@ -48,7 +48,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Underglow
/*
-#undef RGBLED_NUM
-#define RGBLED_NUM 14 // Number of LEDs
+#undef RGBLIGHT_LED_COUNT
+#define RGBLIGHT_LED_COUNT 14 // Number of LEDs
#define RGBLIGHT_SLEEP
*/
diff --git a/keyboards/lily58/keymaps/via/config.h b/keyboards/lily58/keymaps/via/config.h
index 331521bcbf..284d3944b9 100644
--- a/keyboards/lily58/keymaps/via/config.h
+++ b/keyboards/lily58/keymaps/via/config.h
@@ -33,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Underglow
/*
-#undef RGBLED_NUM
-#define RGBLED_NUM 14 // Number of LEDs
+#undef RGBLIGHT_LED_COUNT
+#define RGBLIGHT_LED_COUNT 14 // Number of LEDs
#define RGBLIGHT_SLEEP
*/
diff --git a/keyboards/lily58/r2g/config.h b/keyboards/lily58/r2g/config.h
deleted file mode 100644
index 955cf70161..0000000000
--- a/keyboards/lily58/r2g/config.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2017 F_YUUCHI
-Copyright 2023 Elliot Powell
-
-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
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 74
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_KEYRELEASES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-
-#if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#endif
-
-# define SPLIT_TRANSPORT_MIRROR
-#endif
diff --git a/keyboards/lily58/r2g/info.json b/keyboards/lily58/r2g/info.json
index c7fe3e011e..3cad3dc8e8 100644
--- a/keyboards/lily58/r2g/info.json
+++ b/keyboards/lily58/r2g/info.json
@@ -22,7 +22,12 @@
},
"split": {
"enabled": true,
- "soft_serial_pin": "D2"
+ "soft_serial_pin": "D2",
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
},
"ws2812": {
"pin": "D3"
@@ -104,6 +109,17 @@
}
},
"rgb_matrix": {
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "alphas_mods": true,
+ "breathing": true,
+ "hue_wave": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
"driver": "ws2812",
"split_count": [37, 37],
"layout": [
@@ -181,6 +197,9 @@
{"flags": 2, "x": 150, "y": 0}, // R RGB6
{"flags": 2, "x": 140, "y": 0}, // R RGB7
{"flags": 2, "x": 128, "y": 32} // R RGB8
- ]
+ ],
+ "max_brightness": 120,
+ "react_on_keyup": true,
+ "sleep": true
}
}
diff --git a/keyboards/lime/rev1/rev1.c b/keyboards/lime/rev1/rev1.c
index 91d00e0d2f..d08cf39810 100644
--- a/keyboards/lime/rev1/rev1.c
+++ b/keyboards/lime/rev1/rev1.c
@@ -1,38 +1,40 @@
- /* Copyright 2021 HellSingCoder
- *
- * 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 HellSingCoder
+ *
+ * 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 "quantum.h"
/* Encoders */
#ifdef ENCODER_ENABLE
- bool encoder_update_user(uint8_t index, bool clockwise) {
-
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_MNXT);
- } else {
- tap_code(KC_MPRV);
- }
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
return false;
}
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
#endif
diff --git a/keyboards/linworks/fave60a/config.h b/keyboards/linworks/fave60a/config.h
deleted file mode 100644
index fd70ee7c38..0000000000
--- a/keyboards/linworks/fave60a/config.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2023 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/* Define RGB */
-#define RGB_MATRIX_LED_COUNT 91
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
-// different from the physical layout; it also has problems when underglow
-// LEDs are present, or when multiple LEDs are associated with the same key.
-#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// is defined. Both of these effects currently don't work properly when the
-// key matrix does not match the physical layout, so they are disabled.
-#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// Reactive effects; can be enabled only if at least one of
-// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/linworks/fave60a/info.json b/keyboards/linworks/fave60a/info.json
index 97b50f7e82..6d59949b23 100644
--- a/keyboards/linworks/fave60a/info.json
+++ b/keyboards/linworks/fave60a/info.json
@@ -20,6 +20,50 @@
"pin": "A10"
},
"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,
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "ws2812",
"layout": [
{ "flags": 4, "matrix": [4, 13], "x": 208, "y": 64 },
@@ -113,7 +157,9 @@
{ "flags": 2, "x": 0, "y": 51 },
{ "flags": 2, "x": 0, "y": 35 },
{ "flags": 2, "x": 0, "y": 19 }
- ]
+ ],
+ "max_brightness": 120,
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/linworks/fave65h/config.h b/keyboards/linworks/fave65h/config.h
deleted file mode 100644
index 3f549797d8..0000000000
--- a/keyboards/linworks/fave65h/config.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-Copyright 2020 <contact@vwolf.be>
-
-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 RGB */
-#define RGB_MATRIX_LED_COUNT 67
-
-#ifdef RGB_MATRIX_ENABLE
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
-// different from the physical layout; it also has problems when underglow
-// LEDs are present, or when multiple LEDs are associated with the same key.
-#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// is defined. Both of these effects currently don't work properly when the
-// key matrix does not match the physical layout, so they are disabled.
-#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// Reactive effects; can be enabled only if at least one of
-// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
diff --git a/keyboards/linworks/fave65h/info.json b/keyboards/linworks/fave65h/info.json
index 3bcfcb0116..32a3f5252c 100644
--- a/keyboards/linworks/fave65h/info.json
+++ b/keyboards/linworks/fave65h/info.json
@@ -9,7 +9,53 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "sleep": true
},
"matrix_pins": {
"cols": ["E6", "F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"],
diff --git a/keyboards/linworks/fave84h/config.h b/keyboards/linworks/fave84h/config.h
index 5ce329db0a..550b05415c 100644
--- a/keyboards/linworks/fave84h/config.h
+++ b/keyboards/linworks/fave84h/config.h
@@ -16,71 +16,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* Define RGB */
#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 126
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
-// different from the physical layout; it also has problems when underglow
-// LEDs are present, or when multiple LEDs are associated with the same key.
-#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// is defined. Both of these effects currently don't work properly when the
-// key matrix does not match the physical layout, so they are disabled.
-#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// Reactive effects; can be enabled only if at least one of
-// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define EECONFIG_KB_DATA_SIZE 4
#define CAPS_INDICATOR_INDEX 12
diff --git a/keyboards/linworks/fave84h/info.json b/keyboards/linworks/fave84h/info.json
index 01619e7bc6..11ef16f2a3 100644
--- a/keyboards/linworks/fave84h/info.json
+++ b/keyboards/linworks/fave84h/info.json
@@ -23,6 +23,50 @@
"rows": ["B1", "B2", "B3", "D3", "D1", "D0"]
},
"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,
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "ws2812",
"layout": [
{"flags": 1, "matrix": [3, 13], "x": 190, "y": 40},
@@ -151,7 +195,9 @@
{"flags": 2, "x": 242, "y": 18},
{"flags": 2, "x": 242, "y": 31},
{"flags": 2, "x": 242, "y": 43}
- ]
+ ],
+ "max_brightness": 120,
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/linworks/fave87h/config.h b/keyboards/linworks/fave87h/config.h
deleted file mode 100644
index e84a0ec929..0000000000
--- a/keyboards/linworks/fave87h/config.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-Copyright 2020 <contact@vwolf.be>
-
-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 RGB */
-#define RGB_MATRIX_LED_COUNT 87
-
-#ifdef RGB_MATRIX_ENABLE
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
-// different from the physical layout; it also has problems when underglow
-// LEDs are present, or when multiple LEDs are associated with the same key.
-#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// is defined. Both of these effects currently don't work properly when the
-// key matrix does not match the physical layout, so they are disabled.
-#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// Reactive effects; can be enabled only if at least one of
-// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
diff --git a/keyboards/linworks/fave87h/info.json b/keyboards/linworks/fave87h/info.json
index c2008c4bb2..2951b56a43 100644
--- a/keyboards/linworks/fave87h/info.json
+++ b/keyboards/linworks/fave87h/info.json
@@ -12,7 +12,53 @@
"pin": "D2"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "B0", "B7", "E6"],
diff --git a/keyboards/linworks/favepada/config.h b/keyboards/linworks/favepada/config.h
deleted file mode 100644
index bee089bb43..0000000000
--- a/keyboards/linworks/favepada/config.h
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2023 ziptyze (@ziptyze)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/* Define RGB */
-#define RGB_MATRIX_LED_COUNT 37
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
diff --git a/keyboards/linworks/favepada/info.json b/keyboards/linworks/favepada/info.json
index 005d7d06d0..2b5adcf0a6 100644
--- a/keyboards/linworks/favepada/info.json
+++ b/keyboards/linworks/favepada/info.json
@@ -9,7 +9,7 @@
"extrakey": true,
"mousekey": true,
"nkro": true,
- "rgb_matrix": true,
+ "rgb_matrix": true
},
"matrix_pins": {
"cols": ["A14", "A15", "B3", "B4"],
@@ -58,6 +58,9 @@
"solid_splash": true,
"solid_multisplash": true
},
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "ws2812",
"layout": [
{ "flags": 1, "matrix": [5, 2], "x": 149, "y": 59 },
@@ -98,7 +101,8 @@
{ "flags": 4, "x": 224, "y": 31 },
{ "flags": 4, "x": 224, "y": 18 }
],
- "max_brightness": 120
+ "max_brightness": 120,
+ "sleep": true
},
"ws2812": {
"pin": "B1"
diff --git a/keyboards/lpad/readme.md b/keyboards/lpad/readme.md
deleted file mode 100644
index 864f9569fa..0000000000
--- a/keyboards/lpad/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# LPAD
-
-![LPAD](https://i.imgur.com/bQgqZC6h.jpg)
-
-A Macro Keyboard with a RHS rotary encoder, made and sold by Laneware Peripherals.
-
-* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
-* Hardware Supported: LPAD
-* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
-
-Make example for this keyboard (after setting up your build environment):
-
- make lpad:default
-
-Flashing example for this keyboard:
-
- make lpad: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 2 ways:
-
-* **Bootmagic reset**: Hold down the Top Left Switch and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lw67/keymaps/default/keymap.c b/keyboards/lw67/keymaps/default/keymap.c
deleted file mode 100644
index 2ab17a3590..0000000000
--- a/keyboards/lw67/keymaps/default/keymap.c
+++ /dev/null
@@ -1,41 +0,0 @@
- /* Copyright 2021 Laneware Peripherals
- *
- * 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_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPLY,
- 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_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_DEL, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [1] = LAYOUT_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lw67/keymaps/iso/keymap.c b/keyboards/lw67/keymaps/iso/keymap.c
deleted file mode 100644
index 6e05f9b8bd..0000000000
--- a/keyboards/lw67/keymaps/iso/keymap.c
+++ /dev/null
@@ -1,41 +0,0 @@
- /* Copyright 2021 Laneware Peripherals
- *
- * 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_iso(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPLY,
- 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [1] = LAYOUT_iso(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_iso(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lw67/keymaps/via/keymap.c b/keyboards/lw67/keymaps/via/keymap.c
deleted file mode 100644
index a8f4b42084..0000000000
--- a/keyboards/lw67/keymaps/via/keymap.c
+++ /dev/null
@@ -1,47 +0,0 @@
- /* Copyright 2021 Laneware Peripherals
- *
- * 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_iso_splitbs(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_MPLY,
- 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [1] = LAYOUT_iso_splitbs(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_iso_splitbs(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_iso_splitbs(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lw67/readme.md b/keyboards/lw67/readme.md
deleted file mode 100644
index dacd09b5e0..0000000000
--- a/keyboards/lw67/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# LW-67
-
-![LW67](https://i.imgur.com/mcM1TTi.jpg)
-
-A 65% Keyboard with a LHS rotary encoder, made and sold by Laneware Peripherals.
-
-* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
-* Hardware Supported: Macro-1
-* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
-
-Make example for this keyboard (after setting up your build environment):
-
- make lw67: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).
-
-## Bootloader
-
-Enter the bootloader in 3 ways:
-
-* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lw75/readme.md b/keyboards/lw75/readme.md
deleted file mode 100644
index 9f64108fa5..0000000000
--- a/keyboards/lw75/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# LW-75
-
-![LW75](https://i.imgur.com/JczcWsmh.jpg)
-
-A 75% Keyboard with a LHS rotary encoder, made and sold by Laneware Peripherals.
-
-* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
-* Hardware Supported: LW-75
-* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
-
-Make example for this keyboard (after setting up your build environment):
-
- make lw75:default
-
-Flashing example for this keyboard:
- make lw75: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 2 ways:
-
-* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lxxt/config.h b/keyboards/lxxt/config.h
deleted file mode 100644
index 03ef56622c..0000000000
--- a/keyboards/lxxt/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2023 DeskDaily
- *
- * 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 WS2812_PIO_USE_PIO1 \ No newline at end of file
diff --git a/keyboards/macro1/keymaps/default/keymap.c b/keyboards/macro1/keymaps/default/keymap.c
deleted file mode 100644
index 047ea69808..0000000000
--- a/keyboards/macro1/keymaps/default/keymap.c
+++ /dev/null
@@ -1,53 +0,0 @@
- /* Copyright 2021 Laneware Peripherals
- *
- * 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
-
-/*
- * ┌───┠┌───┬───â”
- * │K00│ │K02│K03│
- * └───┘ └───┴───┘
- * ┌───┬───┬───┬───â”
- * │K10│K11│K12│K13│
- * ├───┼───┼───┼───┤
- * │K20│K21│K22│K23│
- * ├───┼───┼───┤ │
- * │K30│K31│K32│ │
- * ├───┼───┼───┼───┤
- * │K40│K41│K42│K43│
- * ├───┴───┼───┤ │
- * │K50 │K52│ │
- * └───────┴───┴───┘
- */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_numpad(
- KC_MUTE, KC_MPLY, KC_BSPC,
- KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
- KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
- KC_KP_4, KC_KP_5, KC_KP_6,
- KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
- KC_KP_0, KC_KP_DOT)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}
-};
-#endif
-
-
diff --git a/keyboards/macro1/keymaps/via/keymap.c b/keyboards/macro1/keymaps/via/keymap.c
deleted file mode 100644
index f3e53a78e9..0000000000
--- a/keyboards/macro1/keymaps/via/keymap.c
+++ /dev/null
@@ -1,103 +0,0 @@
- /* Copyright 2021 Laneware Peripherals
- *
- * 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
-
-/*
- * ┌───┠┌───┬───â”
- * │K00│ │K02│K03│
- * └───┘ └───┴───┘
- * ┌───┬───┬───┬───â”
- * │K10│K11│K12│K13│
- * ├───┼───┼───┼───┤
- * │K20│K21│K22│K23│
- * ├───┼───┼───┤ │
- * │K30│K31│K32│ │
- * ├───┼───┼───┼───┤
- * │K40│K41│K42│K43│
- * ├───┴───┼───┤ │
- * │K50 │K52│ │
- * └───────┴───┴───┘
- */
-
- /*
- * ┌───┠┌───┬───â”
- * │K00│ │K02│K03│
- * └───┘ └───┴───┘
- * ┌───┬───┬───┬───â”
- * │K10│K11│K12│K13│
- * ├───┼───┼───┼───┤
- * │K20│K21│K22│K23│
- * │ ├───┼───┼───┤
- * │ │K31│K32│K33│
- * ├───┼───┼───┼───┤
- * │K40│K41│K42│K43│
- * │ ├───┼───┴───┤
- * │ │K51│K52 │
- * └───┴───┴───────┘
- */
-
-/*
- * ┌───┠┌───┬───â”
- * │K00│ │K01│K02│
- * └───┘ └───┴───┘
- * ┌───┬───┬───┬───â”
- * │K10│K11│K12│K13│
- * ├───┼───┼───┼───┤
- * │K20│K21│K22│K23│
- * ├───┼───┼───┼───┤
- * │K30│K31│K32│K33│
- * ├───┼───┼───┼───┤
- * │K40│K41│K42│K43│
- * ├───┼───┼───┼───┤
- * │K50│K51│K52│K53│
- * └───┴───┴───┴───┘
- */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_numpad(
- KC_MUTE, KC_MPLY, KC_BSPC,
- KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
- KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
- KC_KP_4, KC_KP_5, KC_KP_6,
- KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
- KC_KP_0, KC_KP_DOT),
-
- [1] = LAYOUT_numpad(
- KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, 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_numpad(
- KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, 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_numpad(
- KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, 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/macro1/readme.md b/keyboards/macro1/readme.md
deleted file mode 100644
index 578a34e1c7..0000000000
--- a/keyboards/macro1/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Macro-1
-
-![Macro-1](https://i.imgur.com/pnTgKuTh.jpeg)
-
-A versitile numpad/macropad (14x6) with a rotary encoder, made and sold by Laneware Peripherals.
-
-* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
-* Hardware Supported: Macro-1
-* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
-
-Make example for this keyboard (after setting up your build environment):
-
- make macro1: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).
-
-## Bootloader
-
-Enter the bootloader in 3 ways:
-
-* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/macro3/readme.md b/keyboards/macro3/readme.md
deleted file mode 100644
index 40cf927392..0000000000
--- a/keyboards/macro3/readme.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Macro3
-
-![Macro3](https://github.com/filterpaper/filterpaper.github.io/raw/main/images/macro3.png)
-
-Macro3 is a low-profile macro pad with dual encoder support designed by [@davidphilipbarr](https://github.com/davidphilipbarr).
-
-## Keyboard Info
-
-* Keyboard Maintainer: [filterpaper](https://github.com/filterpaper), [davidphilipbarr](https://github.com/davidphilipbarr)
-* Hardware Supported: [Macro3](https://github.com/davidphilipbarr/Macropads/tree/main/macro3)
-* Hardware Availability: order PCBs with gerber file from the repository
-
-Make example for this keyboard (after setting up your build environment):
-
- make macro3: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).
-
-## Bootloader
-
-Enter the bootloader in 3 ways:
-
-* **Bootmagic reset**: Hold down the top right key and plug in the controller.
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
-* **Physical reset pins**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material.
-
diff --git a/keyboards/magic_force/mf17/config.h b/keyboards/magic_force/mf17/config.h
deleted file mode 100644
index 6e9f18cd5d..0000000000
--- a/keyboards/magic_force/mf17/config.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2023 devzhaoyou (@gevzhaoyou)
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 17
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED //
-
diff --git a/keyboards/magic_force/mf17/info.json b/keyboards/magic_force/mf17/info.json
index 397a5c879a..2619c5f8b4 100644
--- a/keyboards/magic_force/mf17/info.json
+++ b/keyboards/magic_force/mf17/info.json
@@ -91,7 +91,9 @@
{"flags": 1, "matrix": [4, 0], "x": 32, "y": 64},
{"flags": 1, "matrix": [4, 1], "x": 150, "y": 64},
{"flags": 1, "matrix": [4, 2], "x": 224, "y": 64}
- ]
+ ],
+ "max_brightness": 180,
+ "sleep": true
},
"indicators": {
"caps_lock": "B15",
diff --git a/keyboards/magic_force/mf34/config.h b/keyboards/magic_force/mf34/config.h
index ce02ad5d68..1cb16c5f86 100644
--- a/keyboards/magic_force/mf34/config.h
+++ b/keyboards/magic_force/mf34/config.h
@@ -19,59 +19,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 34
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_KEYPRESSES
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
-
-// rgb EFFCET --end
diff --git a/keyboards/magic_force/mf34/info.json b/keyboards/magic_force/mf34/info.json
index 86b08087cb..027904e729 100644
--- a/keyboards/magic_force/mf34/info.json
+++ b/keyboards/magic_force/mf34/info.json
@@ -16,7 +16,53 @@
"pin": "C15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["A2", "A1", "B14", "B4", "B5", "B6", "B7"],
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/jnao/rules.mk b/keyboards/maple_computing/jnao/rules.mk
index 4c9e4991bf..a18e35e796 100644
--- a/keyboards/maple_computing/jnao/rules.mk
+++ b/keyboards/maple_computing/jnao/rules.mk
@@ -11,8 +11,6 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
AUDIO_SUPPORTED = no
diff --git a/keyboards/maple_computing/launchpad/keymaps/default_rgb/config.h b/keyboards/maple_computing/launchpad/keymaps/default_rgb/config.h
index 3d47ae41e7..c50e010375 100644
--- a/keyboards/maple_computing/launchpad/keymaps/default_rgb/config.h
+++ b/keyboards/maple_computing/launchpad/keymaps/default_rgb/config.h
@@ -12,7 +12,7 @@
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 2 // Number of LEDs
+#define RGBLIGHT_LED_COUNT 2 // Number of LEDs
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
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/marksard/rhymestone/rev1/config.h b/keyboards/marksard/rhymestone/rev1/config.h
deleted file mode 100644
index bd9aeeecdb..0000000000
--- a/keyboards/marksard/rhymestone/rev1/config.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright 2020 marksard
-
-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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 40
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
- // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- // #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
- // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-
-// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #undef ENABLE_RGB_MATRIX_BREATHING
-// #undef ENABLE_RGB_MATRIX_BAND_SAT
-// #undef ENABLE_RGB_MATRIX_BAND_VAL
-// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #undef ENABLE_RGB_MATRIX_CYCLE_ALL
-// #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #undef ENABLE_RGB_MATRIX_DUAL_BEACON
-// #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #undef ENABLE_RGB_MATRIX_RAINDROPS
-// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-
-// #undef ENABLE_RGB_MATRIX_SPLASH
-// #undef ENABLE_RGB_MATRIX_MULTISPLASH
-// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
-#endif
diff --git a/keyboards/marksard/rhymestone/rev1/info.json b/keyboards/marksard/rhymestone/rev1/info.json
index be8a846cfc..bc474f0881 100644
--- a/keyboards/marksard/rhymestone/rev1/info.json
+++ b/keyboards/marksard/rhymestone/rev1/info.json
@@ -12,7 +12,9 @@
"driver": "ws2812",
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "max_brightness": 150,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D4", "C6", "D7", "E6", "B4"],
diff --git a/keyboards/marksard/treadstone48/rev1/config.h b/keyboards/marksard/treadstone48/rev1/config.h
index 3f43b16d2b..66007ee2ef 100644
--- a/keyboards/marksard/treadstone48/rev1/config.h
+++ b/keyboards/marksard/treadstone48/rev1/config.h
@@ -18,10 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#ifndef RS_EXTRA_LED
- #define RGBLED_NUM 12
+ #define RGBLIGHT_LED_COUNT 12
#define RGBLED_SPLIT {12, 0}
#else
- #define RGBLED_NUM 32
+ #define RGBLIGHT_LED_COUNT 32
#define RGBLED_SPLIT {12, 20}
#endif
diff --git a/keyboards/massdrop/alt/keymaps/pregame/config.h b/keyboards/massdrop/alt/keymaps/pregame/config.h
index 27bf1a8332..e2234da2ec 100644
--- a/keyboards/massdrop/alt/keymaps/pregame/config.h
+++ b/keyboards/massdrop/alt/keymaps/pregame/config.h
@@ -85,7 +85,7 @@
// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue
// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation
// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness)
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGBLIGHT_EFFECT_ALTERNATING // Enable alternating animation mode.
diff --git a/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h b/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h
index f2a7e50386..64f73b800f 100644
--- a/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h
+++ b/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h
@@ -24,4 +24,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_LED_PROCESS_LIMIT 15
#define RGB_MATRIX_LED_FLUSH_LIMIT 10
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/config.h b/keyboards/massdrop/ctrl/keymaps/endgame/config.h
index 34aa3cd666..1bf82d3730 100644
--- a/keyboards/massdrop/ctrl/keymaps/endgame/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/endgame/config.h
@@ -45,7 +45,7 @@
// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue
// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation
// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness)
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h b/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h
index 9b9d199f08..497ae1d11f 100644
--- a/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h
@@ -32,7 +32,7 @@
// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue
// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation
// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness)
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
index 0c08219181..52a90d332a 100644
--- a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
@@ -61,7 +61,7 @@
// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue
// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation
// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness)
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// #define RGB_MATRIX_SLEEP // turn off effects when suspended
// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
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/aw9523b.c b/keyboards/matrix/abelx/aw9523b.c
index 8c6e8eaccf..860a71740d 100644
--- a/keyboards/matrix/abelx/aw9523b.c
+++ b/keyboards/matrix/abelx/aw9523b.c
@@ -51,15 +51,15 @@ void aw9523b_init(uint8_t addr)
i2c_init();
// reset chip
uint8_t data = 0;
- i2c_writeReg(addr, AW9523B_RESET, &data, 1, TIMEOUT);
+ i2c_write_register(addr, AW9523B_RESET, &data, 1, TIMEOUT);
wait_ms(1);
// set max led current
data = 0x03; // 37mA/4
- i2c_writeReg(addr, AW9523B_CTL, &data, 1, TIMEOUT);
+ i2c_write_register(addr, AW9523B_CTL, &data, 1, TIMEOUT);
// set port to led mode
data = 0;
- i2c_writeReg(addr, AW9523B_P0_LED, &data, 1, TIMEOUT);
- i2c_writeReg(addr, AW9523B_P1_LED, &data, 1, TIMEOUT);
+ i2c_write_register(addr, AW9523B_P0_LED, &data, 1, TIMEOUT);
+ i2c_write_register(addr, AW9523B_P1_LED, &data, 1, TIMEOUT);
// clear pwm buff
for (uint8_t i = 0; i < 16; i++) {
aw9523b_pwm_buf[i] = 0;
@@ -91,9 +91,9 @@ void aw9523b_update_pwm_buffers(uint8_t addr)
if (aw9523b_pwm_dirty) {
for (uint8_t i = 0; i < AW9523B_RGB_NUM; i++){
aw9523b_led led = g_aw9523b_leds[i];
- i2c_writeReg(addr, led.r, &aw9523b_pwm_buf[PWM2BUF(led.r)], 1, TIMEOUT);
- i2c_writeReg(addr, led.g, &aw9523b_pwm_buf[PWM2BUF(led.g)], 1, TIMEOUT);
- i2c_writeReg(addr, led.b, &aw9523b_pwm_buf[PWM2BUF(led.b)], 1, TIMEOUT);
+ i2c_write_register(addr, led.r, &aw9523b_pwm_buf[PWM2BUF(led.r)], 1, TIMEOUT);
+ i2c_write_register(addr, led.g, &aw9523b_pwm_buf[PWM2BUF(led.g)], 1, TIMEOUT);
+ i2c_write_register(addr, led.b, &aw9523b_pwm_buf[PWM2BUF(led.b)], 1, TIMEOUT);
}
aw9523b_pwm_dirty = false;
}
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/abelx/tca6424.c b/keyboards/matrix/abelx/tca6424.c
index 44dc7909d8..c632157256 100644
--- a/keyboards/matrix/abelx/tca6424.c
+++ b/keyboards/matrix/abelx/tca6424.c
@@ -47,13 +47,13 @@ void tca6424_init(void)
static void write_port(uint8_t p, uint8_t d)
{
- i2c_writeReg(TCA6424_ADDR, p, &d, 1, TIMEOUT);
+ i2c_write_register(TCA6424_ADDR, p, &d, 1, TIMEOUT);
}
static uint8_t read_port(uint8_t port)
{
uint8_t data = 0;
- i2c_readReg(TCA6424_ADDR, port, &data, 1, TIMEOUT);
+ i2c_read_register(TCA6424_ADDR, port, &data, 1, TIMEOUT);
return data;
}
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/m20add/tca6424.c b/keyboards/matrix/m20add/tca6424.c
index 38cea9f15f..c6ffa4c2fe 100644
--- a/keyboards/matrix/m20add/tca6424.c
+++ b/keyboards/matrix/m20add/tca6424.c
@@ -45,13 +45,13 @@ void tca6424_init(void)
static void write_port(uint8_t p, uint8_t d)
{
- i2c_writeReg(TCA6424_ADDR, p, &d, 1, TIMEOUT);
+ i2c_write_register(TCA6424_ADDR, p, &d, 1, TIMEOUT);
}
static uint8_t read_port(uint8_t port)
{
uint8_t data = 0;
- i2c_readReg(TCA6424_ADDR, port, &data, 1, TIMEOUT);
+ i2c_read_register(TCA6424_ADDR, port, &data, 1, TIMEOUT);
return data;
}
diff --git a/keyboards/matrix/noah/config.h b/keyboards/matrix/noah/config.h
index a4d4c5a36a..74beabaa7a 100644
--- a/keyboards/matrix/noah/config.h
+++ b/keyboards/matrix/noah/config.h
@@ -21,54 +21,4 @@
// rgb matrix setting
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-#define DRIVER_1_LED_TOTAL 36
-#define DRIVER_2_LED_TOTAL 36
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define RGB_MATRIX_LED_COUNT 72
diff --git a/keyboards/matrix/noah/info.json b/keyboards/matrix/noah/info.json
index 507c36120e..bc546cffc9 100644
--- a/keyboards/matrix/noah/info.json
+++ b/keyboards/matrix/noah/info.json
@@ -28,6 +28,51 @@
"pin": "B1"
},
"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": "is31fl3731"
},
"community_layouts": ["65_iso_blocker"],
diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c
index 8246da809c..b5c52f9952 100644
--- a/keyboards/matrix/noah/noah.c
+++ b/keyboards/matrix/noah/noah.c
@@ -17,53 +17,50 @@ extern rgblight_config_t rgblight_config;
// led 0 for caps lock, led 1 for scroll lock, led 3 for num lock
// led 4 for layer 1, led 5 for layer 2, led 6 for layer 3, led 7 for layer 4
-#if RGBLED_NUM < 7
-#error "MUST set the RGBLED_NUM bigger than 7"
+#if RGBLIGHT_LED_COUNT < 7
+#error "MUST set the RGBLIGHT_LED_COUNT bigger than 7"
#endif
-rgb_led_t noah_leds[RGBLED_NUM];
+rgb_led_t noah_leds[RGBLIGHT_LED_COUNT];
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;
+ for (uint8_t i = 0; i < RGBLIGHT_LED_COUNT; i++) {
+ 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);
+ ws2812_setleds(noah_leds, RGBLIGHT_LED_COUNT);
}
-#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] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev1/config.h b/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
deleted file mode 100644
index 909bc7f83a..0000000000
--- a/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 91
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev1/info.json b/keyboards/mechlovin/adelais/rgb_led/rev1/info.json
index bdf9e7fdf5..af68bb8457 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev1/info.json
+++ b/keyboards/mechlovin/adelais/rgb_led/rev1/info.json
@@ -4,7 +4,58 @@
"pid": "0xAEC1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "ws2812",
+ "max_brightness": 220,
+ "react_on_keyup": true,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B8", "B4", "B5", "B3", "C14", "A15"],
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
index 6bdd06aba8..d63b339468 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
@@ -1,65 +1,6 @@
#pragma once
-//rgb matrix setting
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-#define DRIVER_1_LED_TOTAL 32
-#define DRIVER_2_LED_TOTAL 36
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define RGB_MATRIX_DISABLE_KEYCODES
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/info.json b/keyboards/mechlovin/adelais/rgb_led/rev2/info.json
index 60fff3c7a7..fb88cb359d 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev2/info.json
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/info.json
@@ -4,7 +4,57 @@
"pid": "0xAEC2"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "is31fl3731",
+ "react_on_keyup": true,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B8", "B4", "B5", "B3", "C14", "A7"],
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c
index 9e5fe11895..d49d16e85a 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C2_1, C3_1, C4_1}, //D102-A0-0
{0, C5_1, C6_1, C7_1}, //D108-A1-1
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
index ba93133857..84075534e7 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
@@ -20,67 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define WS2812_SPI_DRIVER SPID1 // default: SPID1
#define WS2812_SPI_MOSI_PAL_MODE 5 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
-#ifdef RGB_MATRIX_ENABLE
-//rgb matrix setting
-#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_SDA
-#define RGB_MATRIX_LED_COUNT 66
-
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#define RGB_MATRIX_DISABLE_KEYCODES
-
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
-#endif
+#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_SDA
+
+#define RGB_MATRIX_DISABLE_KEYCODES
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/info.json b/keyboards/mechlovin/adelais/rgb_led/rev3/info.json
index 6064967f7f..62acf349c0 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/info.json
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/info.json
@@ -4,7 +4,56 @@
"pid": "0xAEC3"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "is31fl3741",
+ "react_on_keyup": true,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B10", "B11", "B2", "B1", "B0", "A6", "A5", "A10", "A9", "A15", "B3", "B4", "B5", "B8", "B9"],
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
index b13f223a1c..5eebd7ec8a 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS3_SW5, CS2_SW5, CS1_SW5}, /* D9-K31-00 */
{0, CS6_SW5, CS5_SW5, CS4_SW5}, /* D46-K00-01 */
{0, CS6_SW9, CS5_SW9, CS4_SW9}, /* D59-K01-02 */
diff --git a/keyboards/mechlovin/delphine/rgb_led/config.h b/keyboards/mechlovin/delphine/rgb_led/config.h
index 60dc290bfb..3fd2a2a490 100644
--- a/keyboards/mechlovin/delphine/rgb_led/config.h
+++ b/keyboards/mechlovin/delphine/rgb_led/config.h
@@ -1,59 +1,3 @@
#pragma once
-//rgb matrix setting
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_SDA
-#define RGB_MATRIX_LED_COUNT 25
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/mechlovin/delphine/rgb_led/info.json b/keyboards/mechlovin/delphine/rgb_led/info.json
index 59127ea64f..6a0b8df2cf 100644
--- a/keyboards/mechlovin/delphine/rgb_led/info.json
+++ b/keyboards/mechlovin/delphine/rgb_led/info.json
@@ -25,6 +25,55 @@
"pin": "E2"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "is31fl3731",
+ "react_on_keyup": true
}
}
diff --git a/keyboards/mechlovin/delphine/rgb_led/rgb_led.c b/keyboards/mechlovin/delphine/rgb_led/rgb_led.c
index a55143f2e1..feda05a071 100644
--- a/keyboards/mechlovin/delphine/rgb_led/rgb_led.c
+++ b/keyboards/mechlovin/delphine/rgb_led/rgb_led.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
// left CA
{0, C5_2, C6_2, C7_2}, //D2-0
{0, C1_1, C3_2, C4_2}, //D20-1
diff --git a/keyboards/mechlovin/hannah60rgb/rev1/config.h b/keyboards/mechlovin/hannah60rgb/rev1/config.h
deleted file mode 100644
index 08006aa996..0000000000
--- a/keyboards/mechlovin/hannah60rgb/rev1/config.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 72
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/mechlovin/hannah60rgb/rev1/info.json b/keyboards/mechlovin/hannah60rgb/rev1/info.json
index 3eeba2ab7e..6a3510c7df 100644
--- a/keyboards/mechlovin/hannah60rgb/rev1/info.json
+++ b/keyboards/mechlovin/hannah60rgb/rev1/info.json
@@ -12,7 +12,56 @@
"pin": "A15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "ws2812",
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "B0", "A7", "A6", "A0", "C15", "B4", "B5", "B3", "C13", "C14"],
diff --git a/keyboards/mechlovin/hannah60rgb/rev2/config.h b/keyboards/mechlovin/hannah60rgb/rev2/config.h
index 4a4f4c7556..ddcde6b290 100644
--- a/keyboards/mechlovin/hannah60rgb/rev2/config.h
+++ b/keyboards/mechlovin/hannah60rgb/rev2/config.h
@@ -1,66 +1,7 @@
#pragma once
-//rgb matrix setting
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-#define DRIVER_1_LED_TOTAL 44
-#define DRIVER_2_LED_TOTAL 34
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
# define RGB_MATRIX_DISABLE_KEYCODES
diff --git a/keyboards/mechlovin/hannah60rgb/rev2/info.json b/keyboards/mechlovin/hannah60rgb/rev2/info.json
index 84524c2331..e6be250311 100644
--- a/keyboards/mechlovin/hannah60rgb/rev2/info.json
+++ b/keyboards/mechlovin/hannah60rgb/rev2/info.json
@@ -29,7 +29,56 @@
"pin": "A15"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "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
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
+ "driver": "is31fl3731",
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "B0", "A7", "A6", "A0", "C15", "B4", "B5", "B3", "C13", "C14"],
diff --git a/keyboards/mechlovin/hannah60rgb/rev2/rev2.c b/keyboards/mechlovin/hannah60rgb/rev2/rev2.c
index 2e3c8d0090..c6943cc357 100644
--- a/keyboards/mechlovin/hannah60rgb/rev2/rev2.c
+++ b/keyboards/mechlovin/hannah60rgb/rev2/rev2.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/config.h b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
index 6e73aba5d9..29520b6a8f 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/config.h
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
@@ -16,63 +16,4 @@
#pragma once
-//rgb matrix setting
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#undef ENABLE_RGB_MATRIX_SPLASH
-#undef ENABLE_RGB_MATRIX_MULTISPLASH
-#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_SDA
-#define RGB_MATRIX_LED_COUNT 91
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/info.json b/keyboards/mechlovin/infinity87/rgb_rev1/info.json
index 347ea1b311..27a7b441e3 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/info.json
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/info.json
@@ -9,7 +9,56 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B12", "B13", "B14", "B15", "A8", "A9", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A2", "A1", "A0"],
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c
index 5649f80712..cd8f2e2ca0 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS34_SW1, CS35_SW1, CS36_SW1}, //D92-K00-0
{0, CS37_SW1, CS38_SW1, CS39_SW1}, //D94-K01-1
{0, CS31_SW1, CS32_SW1, CS33_SW1}, //D96-K02-2
diff --git a/keyboards/mechlovin/infinity875/config.h b/keyboards/mechlovin/infinity875/config.h
index eee31e69ef..8e7f778004 100644
--- a/keyboards/mechlovin/infinity875/config.h
+++ b/keyboards/mechlovin/infinity875/config.h
@@ -37,10 +37,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 42
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#endif
diff --git a/keyboards/mechlovin/infinity875/info.json b/keyboards/mechlovin/infinity875/info.json
index bb249cf39b..cb8154a713 100644
--- a/keyboards/mechlovin/infinity875/info.json
+++ b/keyboards/mechlovin/infinity875/info.json
@@ -9,7 +9,9 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 200,
+ "sleep": true
},
"indicators": {
"caps_lock": "D6",
diff --git a/keyboards/mechlovin/olly/jf/config.h b/keyboards/mechlovin/olly/jf/config.h
deleted file mode 100644
index 35480dc83c..0000000000
--- a/keyboards/mechlovin/olly/jf/config.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2021 mechlovin
-
-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
-
-
-/* key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 19
-
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
- */
-#define MATRIX_ROW_PINS { D5, D6, A5, A4, A3, A6}
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/olly/jf/info.json b/keyboards/mechlovin/olly/jf/info.json
index cb0ab92fb4..b67551a111 100644
--- a/keyboards/mechlovin/olly/jf/info.json
+++ b/keyboards/mechlovin/olly/jf/info.json
@@ -1,686 +1,37 @@
{
- "keyboard_name": "Olly JF",
"manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
"usb": {
- "vid": "0x4D4C",
- "pid": "0xD180",
- "device_version": "0.0.1"
+ "vid": "0x4D4C"
},
- "backlight": {
- "pin": "D4",
- "breathing": true
- },
- "indicators": {
- "caps_lock": "B0",
- "num_lock": "B1",
- "scroll_lock": "B2"
+ "features": {
+ "nkro": false,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "rgblight": true
},
+ "diode_direction": "ROW2COL",
"rgblight": {
"led_count": 27,
"sleep": true,
"animations": {
+ "alternating": true,
"breathing": true,
+ "christmas": true,
+ "knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
+ "rgb_test": true,
"snake": true,
- "knight": true,
- "christmas": true,
"static_gradient": true,
- "rgb_test": true,
- "alternating": true,
"twinkle": true
}
},
- "ws2812": {
- "pin": "B3"
- },
"bootmagic": {
"matrix": [1, 14]
- },
- "processor": "atmega32a",
- "bootloader": "usbasploader",
- "layouts": {
- "LAYOUT_all": {
- "layout": [
- {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
-
- {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
- {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
- {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
- {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
-
- {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
- {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
- {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
- {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
-
- {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
- {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
- {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
- {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
-
- {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
- {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
- {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
- {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
-
- {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
- {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
- {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
- {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
- {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
- {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
- {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
- {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
- {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
- {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
- {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
- {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
- {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
- {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
- {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
-
- {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
- {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
- {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
-
- {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
-
- {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
- {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
- {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
-
- {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"label": "Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25},
- {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
-
- {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
- {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
- {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
-
- {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
- {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
- {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
- {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
- {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
-
- {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
-
- {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
- {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
- {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
-
- {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
- {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
- {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
- {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
- {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
-
- {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
- {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
- {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
-
- {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
- {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
- {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
- ]
- },
- "LAYOUT_ansi": {
- "layout": [
- {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
-
- {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
- {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
- {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
- {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
-
- {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
- {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
- {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
- {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
-
- {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
- {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
- {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
- {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
-
- {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
- {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
- {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
- {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
-
- {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
- {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
- {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
- {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
- {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
- {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
- {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
- {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
- {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
- {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
- {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
- {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
- {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
- {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
-
- {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
- {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
- {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
-
- {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
-
- {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
- {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
- {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
-
- {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
-
- {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
- {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
- {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
-
- {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
- {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
- {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
- {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
- {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
-
- {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
-
- {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
- {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
- {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
-
- {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
- {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
- {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
- {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
- {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
-
- {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
- {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
- {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
-
- {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
- {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
- {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
- ]
- },
- "LAYOUT_ansi_split_bs_rshift": {
- "layout": [
- {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
-
- {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
- {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
- {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
- {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
-
- {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
- {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
- {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
- {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
-
- {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
- {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
- {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
- {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
-
- {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
- {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
- {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
- {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
-
- {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
- {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
- {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
- {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
- {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
- {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
- {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
- {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
- {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
- {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
- {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
- {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
- {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
- {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
- {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
-
- {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
- {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
- {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
-
- {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
-
- {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
- {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
- {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
-
- {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
-
- {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
- {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
- {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
-
- {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
- {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
- {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
- {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
- {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
- {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
-
- {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
-
- {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
- {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
- {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
-
- {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
- {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
- {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
- {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
- {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
-
- {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
- {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
- {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
-
- {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
- {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
- {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
- ]
- },
- "LAYOUT_iso": {
- "layout": [
- {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
-
- {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
- {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
- {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
- {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
-
- {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
- {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
- {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
- {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
-
- {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
- {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
- {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
- {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
-
- {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
- {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
- {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
- {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
-
- {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
- {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
- {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
- {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
- {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
- {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
- {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
- {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
- {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
- {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
- {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
- {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
- {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
- {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
-
- {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
- {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
- {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
-
- {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
-
- {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
- {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
- {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
-
- {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
- {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
-
- {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
- {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
- {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
-
- {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
- {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
- {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
- {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
-
- {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
-
- {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
- {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
- {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
-
- {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
- {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
- {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
- {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
- {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
-
- {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
- {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
- {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
-
- {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
- {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
- {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
- ]
- },
- "LAYOUT_iso_split_bs_rshift": {
- "layout": [
- {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
-
- {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
- {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
- {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
- {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
-
- {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
- {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
- {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
- {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
-
- {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
- {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
- {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
- {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
-
- {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
- {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
- {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
- {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
-
- {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
- {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
- {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
- {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
- {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
- {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
- {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
- {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
- {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
- {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
- {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
- {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
- {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
- {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
- {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
-
- {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
- {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
- {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
-
- {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
-
- {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
- {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
- {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
-
- {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
- {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
-
- {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
- {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
- {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
-
- {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
- {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
- {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
- {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
- {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
-
- {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
-
- {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
- {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
- {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
-
- {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
- {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
- {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
- {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
- {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
-
- {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
- {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
- {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
-
- {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
- {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
- {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
- ]
- }
}
}
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/readme.md b/keyboards/mechlovin/olly/jf/keymaps/via/readme.md
deleted file mode 100644
index 0453b5aef0..0000000000
--- a/keyboards/mechlovin/olly/jf/keymaps/via/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The VIA keymap for Olly JF \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/matrix_diagram.md b/keyboards/mechlovin/olly/jf/matrix_diagram.md
deleted file mode 100644
index 6cc49f8b93..0000000000
--- a/keyboards/mechlovin/olly/jf/matrix_diagram.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Matrix Diagram for Mechlovin.Studio Olly JF
-
-```
-┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───â”┌───â”┌───┬───┬───┬───â”
-│00 │ │01 │02 │03 │04 │ │05 │06 │07 │08 │ │09 │0A │0B │0C ││0E ││0F │0G │0H │0I │
-└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┘└───┴───┴───┴───┘
-┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───â”┌───┬───┬───┬───┠┌───────â”
-│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │0D ││1E ││1F │1G │1H │1I │ │1D │ 2u Backspace
-├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤├───┼───┼───┼───┤ └─┬─────┤ ┌───â”
-│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D ││2E ││2F │2G │2H │2I │ │ │ │ │
-├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘├───┼───┼───┼───┤ ┌──┴â”3D │ │3I │ 2u Numpad Plus
-│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3F │3G │3H │3I │ │3C │ │ │ │
-├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ├───┼───┼───┼───┤ └───┴────┘ ├───┤
-│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │┌───â”│4F │4G │4H │4I │ ISO Enter │ │
-├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬────┼───┘│4E │└───┼───┼───┼───┤ │5I │ 2u Numpad Enter
-│50 │51 │53 │56 │5A │5B │5C │┌───┼───┼───â”│5G │5H │5I │ │ │
-└─────┴───┴─────┴────────────────────────┴────┴────┴────┘│5D │5E │5F │└───┴───┴───┘ └───┘
- └───┴───┴───┘
-┌────────┠┌──────────┠┌───────â”
-│40 │ 2.25u LShift 2.75u RShift │4C │ │5G │ 2u Numpad Zero
-└────────┘ └──────────┘ └───────┘
-┌────┬────┬────┬────────────────────────┬─────┬─────┬───â”
-│50 │51 │53 │56 │5A │5B │5C │
-└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
-┌────┬────┬────┬────────────────────────┬─────┬───┬─────â”
-│50 │51 │53 │56 │5A │5B │5C │
-└────┴────┴────┴────────────────────────┴─────┴───┴─────┘
-┌────┬────┬────┬────────────────────────┬─────┬────┬────â”
-│50 │51 │53 │56 │5A │5B │5C │
-└────┴────┴────┴────────────────────────┴─────┴────┴────┘
-┌────┬────┬────┬────────────────────────┬─────┬─────┬───â”
-│50 │51 │53 │56 │5A │5B │5C │
-└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
-┌─────┬───┬─────┬──────────────────────────┬─────┬──────â”
-│50 │51 │53 │56 │5B │5C │ RWKL
-└─────┴───┴─────┴──────────────────────────┴─────┴──────┘
-```
diff --git a/keyboards/mechlovin/olly/jf/readme.md b/keyboards/mechlovin/olly/jf/readme.md
index fe9cf38cad..c40a8dfd5e 100644
--- a/keyboards/mechlovin/olly/jf/readme.md
+++ b/keyboards/mechlovin/olly/jf/readme.md
@@ -18,7 +18,11 @@ Flashing example for this keyboard:
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 Key:** 3 ways to put the Olly JF into bootloader:
-By keycode: Press the key mapped to `QK_BOOT` if it is available.
-By Bootloader: hold ESC key while plugging in (jump to bootloader)
-By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file
+## Bootloader
+
+Enter the bootloader in 4 ways:
+
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
+* **Bootloader reset**: hold ESC (0,0) key while plugging in (jump to bootloader)
+* **Bootmagic reset**: hold Insert (1,14) key while pluging in (jump to bootloader and reset EEPROM)
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/rev1/info.json b/keyboards/mechlovin/olly/jf/rev1/info.json
new file mode 100644
index 0000000000..0b6aec094f
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/info.json
@@ -0,0 +1,675 @@
+{
+ "keyboard_name": "Olly JF Rev1",
+ "usb": {
+ "pid": "0xD180",
+ "device_version": "0.0.1"
+ },
+ "features": {
+ "backlight": true
+ },
+ "matrix_pins": {
+ "cols": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null],
+ "rows": ["D5", "D6", "A5", "A4", "A3", "A6"],
+ "custom_lite": true
+ },
+ "matrix_size": {
+ "cols": 19,
+ "rows": 6
+ },
+ "backlight": {
+ "pin": "D4",
+ "breathing": true
+ },
+ "indicators": {
+ "caps_lock": "B0",
+ "num_lock": "B1",
+ "scroll_lock": "B2"
+ },
+ "ws2812": {
+ "pin": "B3"
+ },
+ "processor": "atmega32a",
+ "bootloader": "usbasploader",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
+
+ {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
+ {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
+ {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
+ {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
+ {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
+ {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
+ {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
+ {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
+ {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
+ {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
+
+ {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
+ {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
+ {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
+ {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
+ {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
+
+ {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
+ {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
+ {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
+
+ {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
+ {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
+ {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
+ {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
+ {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
+ {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
+ {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
+ {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+ {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
+ {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
+ {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
+
+ {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
+ {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
+ {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
+ {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
+ {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
+
+ {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
+ {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
+ {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_ansi_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
+
+ {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
+ {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
+ {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
+ {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
+ {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
+ {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
+ {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
+ {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+
+ {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
+ {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
+ {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
+
+ {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
+ {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
+ {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
+ {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
+ {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
+
+ {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
+ {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
+ {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
+
+ {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
+ {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
+ {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
+ {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
+ {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
+ {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
+ {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
+ {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
+ {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
+ {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
+
+ {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
+ {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
+ {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
+ {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
+ {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
+
+ {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
+ {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
+ {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_iso_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 12, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 13, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 14, "y": 0},
+
+ {"label": "F13", "matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"label": "Insert", "matrix": [0, 15], "x": 16.5, "y": 0},
+ {"label": "Home", "matrix": [0, 16], "x": 17.5, "y": 0},
+ {"label": "Page Up", "matrix": [0, 17], "x": 18.5, "y": 0},
+ {"label": "Print Screen", "matrix": [0, 18], "x": 19.5, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Delete", "matrix": [0, 13], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"label": "Num Lock", "matrix": [1, 15], "x": 16.5, "y": 1.25},
+ {"label": "/", "matrix": [1, 16], "x": 17.5, "y": 1.25},
+ {"label": "*", "matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"label": "Pause", "matrix": [1, 18], "x": 19.5, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"label": "7", "matrix": [2, 15], "x": 16.5, "y": 2.25},
+ {"label": "8", "matrix": [2, 16], "x": 17.5, "y": 2.25},
+ {"label": "9", "matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"label": "-", "matrix": [2, 18], "x": 19.5, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "4", "matrix": [3, 15], "x": 16.5, "y": 3.25},
+ {"label": "5", "matrix": [3, 16], "x": 17.5, "y": 3.25},
+ {"label": "6", "matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"label": "+", "matrix": [3, 18], "x": 19.5, "y": 3.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 14], "x": 15.25, "y": 4.5},
+
+ {"label": "1", "matrix": [4, 15], "x": 16.5, "y": 4.25},
+ {"label": "2", "matrix": [4, 16], "x": 17.5, "y": 4.25},
+ {"label": "3", "matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"label": "Enter", "matrix": [4, 18], "x": 19.5, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 12.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 13], "x": 14.25, "y": 5.5},
+ {"label": "\u2193", "matrix": [5, 14], "x": 15.25, "y": 5.5},
+ {"label": "\u2192", "matrix": [5, 15], "x": 16.25, "y": 5.5},
+
+ {"label": "0", "matrix": [5, 16], "x": 17.5, "y": 5.25},
+ {"label": ".", "matrix": [5, 17], "x": 18.5, "y": 5.25},
+ {"label": "Enter", "matrix": [5, 18], "x": 19.5, "y": 5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/keymap.c
index 6209811cf2..6209811cf2 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default/readme.md b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/readme.md
index 0dad971bdc..0dad971bdc 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default/readme.md
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default/readme.md
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_ansi/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi/keymap.c
index f646d8aa81..f646d8aa81 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_ansi/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_ansi_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi_split_bs_rshift/keymap.c
index 3807ab0f14..3807ab0f14 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_ansi_split_bs_rshift/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_ansi_split_bs_rshift/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_iso/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso/keymap.c
index c97f1dbd80..c97f1dbd80 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_iso/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/default_iso_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso_split_bs_rshift/keymap.c
index f72820394b..f72820394b 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/default_iso_split_bs_rshift/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/default_iso_split_bs_rshift/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/config.h b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/config.h
index 01d7e4bc38..01d7e4bc38 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/via/config.h
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/config.h
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/keymap.c
index 15f626d7ab..15f626d7ab 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/keymap.c
diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk
+++ b/keyboards/mechlovin/olly/jf/rev1/keymaps/via/rules.mk
diff --git a/keyboards/mechlovin/olly/jf/matrix.c b/keyboards/mechlovin/olly/jf/rev1/matrix.c
index c01879c9a5..c01879c9a5 100644
--- a/keyboards/mechlovin/olly/jf/matrix.c
+++ b/keyboards/mechlovin/olly/jf/rev1/matrix.c
diff --git a/keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md b/keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md
new file mode 100644
index 0000000000..63e5476501
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/matrix_diagram.md
@@ -0,0 +1,37 @@
+# Matrix Diagram for Mechlovin.Studio Olly JF Rev. 1
+
+```
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───â”┌───â”┌───┬───┬───┬───â”
+│00 │ │01 │02 │03 │04 │ │05 │06 │07 │08 │ │09 │0A │0B │0C ││0E ││0F │0G │0H │0I │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┘└───┴───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───â”┌───┬───┬───┬───┠┌───────â”
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │0D ││1E ││1F │1G │1H │1I │ │1D │ 2u Backspace
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤├───┼───┼───┼───┤ └─┬─────┤ ┌───â”
+│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D ││2E ││2F │2G │2H │2I │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘├───┼───┼───┼───┤ ┌──┴â”3D │ │3I │ 2u Numpad Plus
+│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3F │3G │3H │3I │ │3C │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ├───┼───┼───┼───┤ └───┴────┘ ├───┤
+│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │┌───â”│4F │4G │4H │4I │ ISO Enter │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬────┼───┘│4E │└───┼───┼───┼───┤ │5I │ 2u Numpad Enter
+│50 │51 │53 │56 │5A │5B │5C │┌───┼───┼───â”│5G │5H │5I │ │ │
+└─────┴───┴─────┴────────────────────────┴────┴────┴────┘│5D │5E │5F │└───┴───┴───┘ └───┘
+ └───┴───┴───┘
+┌────────┠┌──────────┠┌───────â”
+│40 │ 2.25u LShift 2.75u RShift │4C │ │5G │ 2u Numpad Zero
+└────────┘ └──────────┘ └───────┘
+┌────┬────┬────┬────────────────────────┬─────┬─────┬───â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
+┌────┬────┬────┬────────────────────────┬─────┬───┬─────â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴───┴─────┘
+┌────┬────┬────┬────────────────────────┬─────┬────┬────â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴────┴────┘
+┌────┬────┬────┬────────────────────────┬─────┬─────┬───â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
+┌─────┬───┬─────┬──────────────────────────┬─────┬──────â”
+│50 │51 │53 │56 │5B │5C │ RWKL
+└─────┴───┴─────┴──────────────────────────┴─────┴──────┘
+```
diff --git a/keyboards/mechlovin/olly/jf/rev1/readme.md b/keyboards/mechlovin/olly/jf/rev1/readme.md
new file mode 100644
index 0000000000..f6c114fee6
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/readme.md
@@ -0,0 +1,27 @@
+# Mechlovin Olly JF Rev. 1
+
+![jf](https://i.imgur.com/IrfTGE7h.png)
+
+Olly JF PCB, compatible Duck Jetfire keyboard.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://mechlovin.studio/)
+* Hardware Supported: Jetfire Korean Kustom
+* Hardware Availability: [Mechlovin' Studio](https://mechlovin.studio/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/olly/jf/rev1:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/olly/jf/rev1: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:
+
+By keycode: Press the key mapped to `QK_BOOT` if it is available.
+By Bootloader: hold ESC key while plugging in (jump to bootloader)
+By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/jf.c b/keyboards/mechlovin/olly/jf/rev1/rev1.c
index 3d18d7bb5a..3d18d7bb5a 100644
--- a/keyboards/mechlovin/olly/jf/jf.c
+++ b/keyboards/mechlovin/olly/jf/rev1/rev1.c
diff --git a/keyboards/mechlovin/olly/jf/rev1/rules.mk b/keyboards/mechlovin/olly/jf/rev1/rules.mk
new file mode 100644
index 0000000000..4442aba67d
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev1/rules.mk
@@ -0,0 +1,4 @@
+# Processor frequency
+F_CPU = 16000000
+
+SRC += matrix.c
diff --git a/keyboards/mechlovin/olly/jf/rev2/config.h b/keyboards/mechlovin/olly/jf/rev2/config.h
new file mode 100644
index 0000000000..e1389b1e9a
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/config.h
@@ -0,0 +1,31 @@
+/*
+Copyright 2023 Mechlovin'
+
+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 IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_SDA
+
+#define I2C_DRIVER I2CD2
+#define I2C1_SCL_PIN B10
+#define I2C1_SDA_PIN B11
+#define LED_MATRIX_LED_COUNT 114
+
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define WEAR_LEVELING_BACKING_SIZE 4096
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/mechlovin/olly/jf/rev2/halconf.h b/keyboards/mechlovin/olly/jf/rev2/halconf.h
new file mode 100644
index 0000000000..090c0b3d3b
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/halconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2023 QMK
+ *
+ * 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_I2C TRUE
+
+#define HAL_USE_SPI TRUE
+
+
+#include_next <halconf.h>
+
diff --git a/keyboards/mechlovin/olly/jf/rev2/info.json b/keyboards/mechlovin/olly/jf/rev2/info.json
new file mode 100644
index 0000000000..da86fbb075
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/info.json
@@ -0,0 +1,702 @@
+{
+ "keyboard_name": "Olly JF Rev2",
+ "bootloader": "stm32duino",
+ "features": {
+ "command": true,
+ "console": true,
+ "led_matrix": true,
+ "nkro": true
+ },
+ "led_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "breathing": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_up_down": true,
+ "dual_beacon": true,
+ "solid_multisplash": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_multicross": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "driver": "is31fl3731",
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+ {"matrix": [0, 2], "x": 24, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 37, "y": 0, "flags": 4},
+ {"matrix": [0, 4], "x": 49, "y": 0, "flags": 4},
+ {"matrix": [0, 5], "x": 62, "y": 0, "flags": 4},
+ {"matrix": [0, 6], "x": 74, "y": 0, "flags": 4},
+ {"matrix": [0, 7], "x": 87, "y": 0, "flags": 4},
+ {"matrix": [0, 8], "x": 99, "y": 0, "flags": 4},
+ {"matrix": [0, 9], "x": 122, "y": 0, "flags": 4},
+ {"matrix": [0, 10], "x": 124, "y": 0, "flags": 4},
+ {"matrix": [0, 11], "x": 137, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 140, "y": 0, "flags": 4},
+ {"matrix": [0, 13], "x": 162, "y": 0, "flags": 4},
+ {"matrix": [0, 14], "x": 174, "y": 0, "flags": 4},
+ {"matrix": [0, 15], "x": 186, "y": 0, "flags": 4},
+ {"matrix": [0, 16], "x": 199, "y": 0, "flags": 4},
+ {"matrix": [0, 17], "x": 211, "y": 0, "flags": 4},
+ {"matrix": [0, 18], "x": 224, "y": 0, "flags": 4},
+ {"matrix": [1, 0], "x": 0, "y": 13, "flags": 4},
+ {"matrix": [1, 1], "x": 12, "y": 13, "flags": 4},
+ {"matrix": [1, 2], "x": 24, "y": 13, "flags": 4},
+ {"matrix": [1, 3], "x": 37, "y": 13, "flags": 4},
+ {"matrix": [1, 4], "x": 49, "y": 13, "flags": 4},
+ {"matrix": [1, 5], "x": 62, "y": 13, "flags": 4},
+ {"matrix": [1, 6], "x": 74, "y": 13, "flags": 4},
+ {"matrix": [1, 7], "x": 87, "y": 13, "flags": 4},
+ {"matrix": [1, 8], "x": 99, "y": 13, "flags": 4},
+ {"matrix": [1, 9], "x": 122, "y": 13, "flags": 4},
+ {"matrix": [1, 10], "x": 124, "y": 13, "flags": 4},
+ {"matrix": [1, 11], "x": 137, "y": 13, "flags": 4},
+ {"matrix": [1, 12], "x": 140, "y": 13, "flags": 4},
+ {"matrix": [1, 13], "x": 162, "y": 13, "flags": 4},
+ {"matrix": [1, 14], "x": 174, "y": 13, "flags": 4},
+ {"matrix": [1, 15], "x": 186, "y": 13, "flags": 4},
+ {"matrix": [1, 16], "x": 199, "y": 13, "flags": 4},
+ {"matrix": [1, 17], "x": 211, "y": 13, "flags": 4},
+ {"matrix": [1, 18], "x": 224, "y": 13, "flags": 4},
+ {"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
+ {"matrix": [2, 1], "x": 12, "y": 25, "flags": 4},
+ {"matrix": [2, 2], "x": 24, "y": 25, "flags": 4},
+ {"matrix": [2, 3], "x": 37, "y": 25, "flags": 4},
+ {"matrix": [2, 4], "x": 49, "y": 25, "flags": 4},
+ {"matrix": [2, 5], "x": 62, "y": 25, "flags": 4},
+ {"matrix": [2, 6], "x": 74, "y": 25, "flags": 4},
+ {"matrix": [2, 7], "x": 87, "y": 25, "flags": 4},
+ {"matrix": [2, 8], "x": 99, "y": 25, "flags": 4},
+ {"matrix": [2, 9], "x": 122, "y": 25, "flags": 4},
+ {"matrix": [2, 10], "x": 124, "y": 25, "flags": 4},
+ {"matrix": [2, 11], "x": 137, "y": 25, "flags": 4},
+ {"matrix": [2, 12], "x": 140, "y": 25, "flags": 4},
+ {"matrix": [2, 13], "x": 162, "y": 25, "flags": 4},
+ {"matrix": [2, 14], "x": 174, "y": 25, "flags": 4},
+ {"matrix": [2, 15], "x": 186, "y": 25, "flags": 4},
+ {"matrix": [2, 16], "x": 199, "y": 25, "flags": 4},
+ {"matrix": [2, 17], "x": 211, "y": 25, "flags": 4},
+ {"matrix": [2, 18], "x": 224, "y": 25, "flags": 4},
+ {"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
+ {"matrix": [3, 1], "x": 12, "y": 38, "flags": 4},
+ {"matrix": [3, 2], "x": 24, "y": 38, "flags": 4},
+ {"matrix": [3, 3], "x": 37, "y": 38, "flags": 4},
+ {"matrix": [3, 4], "x": 49, "y": 38, "flags": 4},
+ {"matrix": [3, 5], "x": 62, "y": 38, "flags": 4},
+ {"matrix": [3, 6], "x": 74, "y": 38, "flags": 4},
+ {"matrix": [3, 7], "x": 87, "y": 38, "flags": 4},
+ {"matrix": [3, 8], "x": 99, "y": 38, "flags": 4},
+ {"matrix": [3, 9], "x": 122, "y": 38, "flags": 4},
+ {"matrix": [3, 10], "x": 124, "y": 38, "flags": 4},
+ {"matrix": [3, 11], "x": 137, "y": 38, "flags": 4},
+ {"matrix": [3, 12], "x": 140, "y": 38, "flags": 4},
+ {"matrix": [3, 13], "x": 162, "y": 38, "flags": 4},
+ {"matrix": [3, 15], "x": 186, "y": 38, "flags": 4},
+ {"matrix": [3, 16], "x": 199, "y": 38, "flags": 4},
+ {"matrix": [3, 17], "x": 211, "y": 38, "flags": 4},
+ {"matrix": [3, 18], "x": 224, "y": 38, "flags": 4},
+ {"matrix": [4, 0], "x": 0, "y": 51, "flags": 4},
+ {"matrix": [4, 1], "x": 12, "y": 51, "flags": 4},
+ {"matrix": [4, 2], "x": 24, "y": 51, "flags": 4},
+ {"matrix": [4, 3], "x": 37, "y": 51, "flags": 4},
+ {"matrix": [4, 4], "x": 49, "y": 51, "flags": 4},
+ {"matrix": [4, 5], "x": 62, "y": 51, "flags": 4},
+ {"matrix": [4, 6], "x": 74, "y": 51, "flags": 4},
+ {"matrix": [4, 7], "x": 87, "y": 51, "flags": 4},
+ {"matrix": [4, 8], "x": 99, "y": 51, "flags": 4},
+ {"matrix": [4, 9], "x": 122, "y": 51, "flags": 4},
+ {"matrix": [4, 10], "x": 124, "y": 51, "flags": 4},
+ {"matrix": [4, 11], "x": 137, "y": 51, "flags": 4},
+ {"matrix": [4, 12], "x": 140, "y": 51, "flags": 4},
+ {"matrix": [4, 13], "x": 162, "y": 51, "flags": 4},
+ {"matrix": [4, 14], "x": 174, "y": 51, "flags": 4},
+ {"matrix": [4, 15], "x": 186, "y": 51, "flags": 4},
+ {"matrix": [4, 16], "x": 199, "y": 51, "flags": 4},
+ {"matrix": [4, 17], "x": 211, "y": 51, "flags": 4},
+ {"matrix": [4, 18], "x": 224, "y": 51, "flags": 4},
+ {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4},
+ {"matrix": [5, 1], "x": 12, "y": 64, "flags": 4},
+ {"matrix": [5, 3], "x": 37, "y": 64, "flags": 4},
+ {"matrix": [5, 6], "x": 74, "y": 64, "flags": 4},
+ {"matrix": [5, 10], "x": 124, "y": 64, "flags": 4},
+ {"matrix": [5, 11], "x": 137, "y": 64, "flags": 4},
+ {"matrix": [5, 12], "x": 140, "y": 64, "flags": 4},
+ {"matrix": [5, 13], "x": 162, "y": 64, "flags": 4},
+ {"matrix": [5, 14], "x": 174, "y": 64, "flags": 4},
+ {"matrix": [5, 15], "x": 186, "y": 64, "flags": 4},
+ {"matrix": [5, 16], "x": 199, "y": 64, "flags": 4},
+ {"matrix": [5, 17], "x": 211, "y": 64, "flags": 4},
+ {"matrix": [5, 18], "x": 224, "y": 64, "flags": 4}
+ ]
+ },
+ "matrix_pins": {
+ "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "A8", "A15", "B3", "B4", "C15", "C14", "C13", "B9", "B8", "B7", "B6"],
+ "rows": ["B0", "B1", "B2", "B15", "B14", "B13"]
+ },
+ "processor": "STM32F103",
+ "usb": {
+ "device_version": "0.0.2",
+ "pid": "0xD182"
+ },
+ "ws2812": {
+ "driver": "spi",
+ "pin": "B5"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.5, "y": 0},
+ {"matrix": [0, 3], "x": 2.5, "y": 0},
+ {"matrix": [0, 4], "x": 3.5, "y": 0},
+ {"matrix": [0, 5], "x": 4.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.5, "y": 0},
+ {"matrix": [0, 11], "x": 11.5, "y": 0},
+ {"matrix": [0, 12], "x": 12.5, "y": 0},
+ {"matrix": [0, 13], "x": 13.5, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.5, "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": [1, 0], "x": 0, "y": 1.5},
+ {"matrix": [1, 1], "x": 1, "y": 1.5},
+ {"matrix": [1, 2], "x": 2, "y": 1.5},
+ {"matrix": [1, 3], "x": 3, "y": 1.5},
+ {"matrix": [1, 4], "x": 4, "y": 1.5},
+ {"matrix": [1, 5], "x": 5, "y": 1.5},
+ {"matrix": [1, 6], "x": 6, "y": 1.5},
+ {"matrix": [1, 7], "x": 7, "y": 1.5},
+ {"matrix": [1, 8], "x": 8, "y": 1.5},
+ {"matrix": [1, 9], "x": 9, "y": 1.5},
+ {"matrix": [1, 10], "x": 10, "y": 1.5},
+ {"matrix": [1, 11], "x": 11, "y": 1.5},
+ {"matrix": [1, 12], "x": 12, "y": 1.5},
+ {"matrix": [1, 13], "x": 13, "y": 1.5},
+ {"matrix": [2, 13], "x": 14, "y": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.5},
+ {"matrix": [1, 15], "x": 16.5, "y": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1.5},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.5},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.5},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.5},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.5},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.5},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.5},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.5},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.5},
+ {"matrix": [3, 12], "x": 13.5, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.5},
+ {"matrix": [2, 15], "x": 16.5, "y": 2.5},
+ {"matrix": [2, 16], "x": 17.5, "y": 2.5},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.5},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.5},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.5},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.5},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.5},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.5},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.5},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
+ {"matrix": [3, 15], "x": 16.5, "y": 3.5},
+ {"matrix": [3, 16], "x": 17.5, "y": 3.5},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.5},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.5},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.5},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.5},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.5},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.5},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
+ {"matrix": [4, 13], "x": 14, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.75},
+ {"matrix": [4, 15], "x": 16.5, "y": 4.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4.5},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.5},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 1], "x": 1.5, "y": 5.5},
+ {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 13], "x": 14.25, "y": 5.75},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.75},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.75},
+ {"matrix": [5, 16], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 18], "x": 19.5, "y": 5.5}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.5, "y": 0},
+ {"matrix": [0, 3], "x": 2.5, "y": 0},
+ {"matrix": [0, 4], "x": 3.5, "y": 0},
+ {"matrix": [0, 5], "x": 4.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.5, "y": 0},
+ {"matrix": [0, 11], "x": 11.5, "y": 0},
+ {"matrix": [0, 12], "x": 12.5, "y": 0},
+ {"matrix": [0, 13], "x": 13.5, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.5, "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": [1, 0], "x": 0, "y": 1.5},
+ {"matrix": [1, 1], "x": 1, "y": 1.5},
+ {"matrix": [1, 2], "x": 2, "y": 1.5},
+ {"matrix": [1, 3], "x": 3, "y": 1.5},
+ {"matrix": [1, 4], "x": 4, "y": 1.5},
+ {"matrix": [1, 5], "x": 5, "y": 1.5},
+ {"matrix": [1, 6], "x": 6, "y": 1.5},
+ {"matrix": [1, 7], "x": 7, "y": 1.5},
+ {"matrix": [1, 8], "x": 8, "y": 1.5},
+ {"matrix": [1, 9], "x": 9, "y": 1.5},
+ {"matrix": [1, 10], "x": 10, "y": 1.5},
+ {"matrix": [1, 11], "x": 11, "y": 1.5},
+ {"matrix": [1, 12], "x": 12, "y": 1.5},
+ {"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.5},
+ {"matrix": [1, 15], "x": 16.5, "y": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1.5},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.5},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.5},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.5},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.5},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.5},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.5},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.5},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.5},
+ {"matrix": [3, 12], "x": 13.5, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.5},
+ {"matrix": [2, 15], "x": 16.5, "y": 2.5},
+ {"matrix": [2, 16], "x": 17.5, "y": 2.5},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.5},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.5},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.5},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.5},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.5},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.5},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.5},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
+ {"matrix": [3, 15], "x": 16.5, "y": 3.5},
+ {"matrix": [3, 16], "x": 17.5, "y": 3.5},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.5},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.5},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.5},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.5},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.5},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.5},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.75},
+ {"matrix": [4, 15], "x": 16.5, "y": 4.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4.5},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.5},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 1], "x": 1.5, "y": 5.5},
+ {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 13], "x": 14.25, "y": 5.75},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.75},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.75},
+ {"matrix": [5, 16], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 18], "x": 19.5, "y": 5.5}
+ ]
+ },
+ "LAYOUT_ansi_split_bs_rshift": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.5, "y": 0},
+ {"matrix": [0, 3], "x": 2.5, "y": 0},
+ {"matrix": [0, 4], "x": 3.5, "y": 0},
+ {"matrix": [0, 5], "x": 4.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.5, "y": 0},
+ {"matrix": [0, 11], "x": 11.5, "y": 0},
+ {"matrix": [0, 12], "x": 12.5, "y": 0},
+ {"matrix": [0, 13], "x": 13.5, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.5, "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": [1, 0], "x": 0, "y": 1.5},
+ {"matrix": [1, 1], "x": 1, "y": 1.5},
+ {"matrix": [1, 2], "x": 2, "y": 1.5},
+ {"matrix": [1, 3], "x": 3, "y": 1.5},
+ {"matrix": [1, 4], "x": 4, "y": 1.5},
+ {"matrix": [1, 5], "x": 5, "y": 1.5},
+ {"matrix": [1, 6], "x": 6, "y": 1.5},
+ {"matrix": [1, 7], "x": 7, "y": 1.5},
+ {"matrix": [1, 8], "x": 8, "y": 1.5},
+ {"matrix": [1, 9], "x": 9, "y": 1.5},
+ {"matrix": [1, 10], "x": 10, "y": 1.5},
+ {"matrix": [1, 11], "x": 11, "y": 1.5},
+ {"matrix": [1, 12], "x": 12, "y": 1.5},
+ {"matrix": [1, 13], "x": 13, "y": 1.5},
+ {"matrix": [2, 13], "x": 14, "y": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.5},
+ {"matrix": [1, 15], "x": 16.5, "y": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1.5},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.5},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.5},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.5},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.5},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.5},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.5},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.5},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.5},
+ {"matrix": [3, 12], "x": 13.5, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.5},
+ {"matrix": [2, 15], "x": 16.5, "y": 2.5},
+ {"matrix": [2, 16], "x": 17.5, "y": 2.5},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.5},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.5},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.5},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.5},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.5},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.5},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.5},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
+ {"matrix": [3, 15], "x": 16.5, "y": 3.5},
+ {"matrix": [3, 16], "x": 17.5, "y": 3.5},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.5},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.5},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.5},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.5},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.5},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.5},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
+ {"matrix": [4, 13], "x": 14, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.75},
+ {"matrix": [4, 15], "x": 16.5, "y": 4.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4.5},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.5},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 1], "x": 1.5, "y": 5.5},
+ {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 13], "x": 14.25, "y": 5.75},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.75},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.75},
+ {"matrix": [5, 16], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 18], "x": 19.5, "y": 5.5}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.5, "y": 0},
+ {"matrix": [0, 3], "x": 2.5, "y": 0},
+ {"matrix": [0, 4], "x": 3.5, "y": 0},
+ {"matrix": [0, 5], "x": 4.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.5, "y": 0},
+ {"matrix": [0, 11], "x": 11.5, "y": 0},
+ {"matrix": [0, 12], "x": 12.5, "y": 0},
+ {"matrix": [0, 13], "x": 13.5, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.5, "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": [1, 0], "x": 0, "y": 1.5},
+ {"matrix": [1, 1], "x": 1, "y": 1.5},
+ {"matrix": [1, 2], "x": 2, "y": 1.5},
+ {"matrix": [1, 3], "x": 3, "y": 1.5},
+ {"matrix": [1, 4], "x": 4, "y": 1.5},
+ {"matrix": [1, 5], "x": 5, "y": 1.5},
+ {"matrix": [1, 6], "x": 6, "y": 1.5},
+ {"matrix": [1, 7], "x": 7, "y": 1.5},
+ {"matrix": [1, 8], "x": 8, "y": 1.5},
+ {"matrix": [1, 9], "x": 9, "y": 1.5},
+ {"matrix": [1, 10], "x": 10, "y": 1.5},
+ {"matrix": [1, 11], "x": 11, "y": 1.5},
+ {"matrix": [1, 12], "x": 12, "y": 1.5},
+ {"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.5},
+ {"matrix": [1, 15], "x": 16.5, "y": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1.5},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.5},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.5},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.5},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.5},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.5},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.5},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.5},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.5},
+ {"matrix": [3, 13], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.5},
+ {"matrix": [2, 15], "x": 16.5, "y": 2.5},
+ {"matrix": [2, 16], "x": 17.5, "y": 2.5},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.5},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.5},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.5},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.5},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.5},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.5},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.5},
+ {"matrix": [3, 12], "x": 12.75, "y": 3.5},
+ {"matrix": [3, 15], "x": 16.5, "y": 3.5},
+ {"matrix": [3, 16], "x": 17.5, "y": 3.5},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.5},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.5},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.5},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.5},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.5},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.5},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 2.75},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.75},
+ {"matrix": [4, 15], "x": 16.5, "y": 4.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4.5},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.5},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 1], "x": 1.5, "y": 5.5},
+ {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 13], "x": 14.25, "y": 5.75},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.75},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.75},
+ {"matrix": [5, 16], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 18], "x": 19.5, "y": 5.5}
+ ]
+ },
+ "LAYOUT_iso_split_bs_rshift": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.5, "y": 0},
+ {"matrix": [0, 3], "x": 2.5, "y": 0},
+ {"matrix": [0, 4], "x": 3.5, "y": 0},
+ {"matrix": [0, 5], "x": 4.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.5, "y": 0},
+ {"matrix": [0, 11], "x": 11.5, "y": 0},
+ {"matrix": [0, 12], "x": 12.5, "y": 0},
+ {"matrix": [0, 13], "x": 13.5, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.5, "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": [1, 0], "x": 0, "y": 1.5},
+ {"matrix": [1, 1], "x": 1, "y": 1.5},
+ {"matrix": [1, 2], "x": 2, "y": 1.5},
+ {"matrix": [1, 3], "x": 3, "y": 1.5},
+ {"matrix": [1, 4], "x": 4, "y": 1.5},
+ {"matrix": [1, 5], "x": 5, "y": 1.5},
+ {"matrix": [1, 6], "x": 6, "y": 1.5},
+ {"matrix": [1, 7], "x": 7, "y": 1.5},
+ {"matrix": [1, 8], "x": 8, "y": 1.5},
+ {"matrix": [1, 9], "x": 9, "y": 1.5},
+ {"matrix": [1, 10], "x": 10, "y": 1.5},
+ {"matrix": [1, 11], "x": 11, "y": 1.5},
+ {"matrix": [1, 12], "x": 12, "y": 1.5},
+ {"matrix": [1, 13], "x": 13, "y": 1.5},
+ {"matrix": [2, 13], "x": 14, "y": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.5},
+ {"matrix": [1, 15], "x": 16.5, "y": 1.5},
+ {"matrix": [1, 16], "x": 17.5, "y": 1.5},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.5},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.5},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.5},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.5},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.5},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.5},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.5},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.5},
+ {"matrix": [3, 13], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.5},
+ {"matrix": [2, 15], "x": 16.5, "y": 2.5},
+ {"matrix": [2, 16], "x": 17.5, "y": 2.5},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.5},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.5},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.5},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.5},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.5},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.5},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.5},
+ {"matrix": [3, 12], "x": 12.75, "y": 3.5},
+ {"matrix": [3, 15], "x": 16.5, "y": 3.5},
+ {"matrix": [3, 16], "x": 17.5, "y": 3.5},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.5},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.5},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.5},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.5},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.5},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.5},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.5},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
+ {"matrix": [4, 13], "x": 14, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.75},
+ {"matrix": [4, 15], "x": 16.5, "y": 4.5},
+ {"matrix": [4, 16], "x": 17.5, "y": 4.5},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.5},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 1], "x": 1.5, "y": 5.5},
+ {"matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [5, 6], "x": 4, "y": 5.5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 13], "x": 14.25, "y": 5.75},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.75},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.75},
+ {"matrix": [5, 16], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 18], "x": 19.5, "y": 5.5}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e2a5ef0d0d
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2023 Mechlovin'
+ *
+ * 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(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ 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_PPLS,
+ 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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c
new file mode 100644
index 0000000000..2cc1518fee
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2023 Mechlovin'
+ *
+ * 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_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ 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_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..b28913c49b
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_ansi_split_bs_rshift/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2023 Mechlovin'
+ *
+ * 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_ansi_split_bs_rshift(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ 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_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..9a59431a64
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2023 Mechlovin'
+ *
+ * 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_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
+ 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_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..196b855ceb
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/default_iso_split_bs_rshift/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2023 Mechlovin'
+ *
+ * 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_iso_split_bs_rshift(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
+ 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_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..477d7bac2a
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2023 Mechlovin'
+ *
+ * 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(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NUM, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ 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_PPLS,
+ KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md b/keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md
new file mode 100644
index 0000000000..776bba84f8
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/matrix_diagram.md
@@ -0,0 +1,37 @@
+# Matrix Diagram for Mechlovin.Studio Olly JF Rev. 2
+
+```
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───â”┌───â”┌───┬───┬───┬───â”
+│00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D ││0E ││0F │0G │0H │0I │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┘└───┴───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───â”┌───┬───┬───┬───┠┌───────â”
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │2D ││1E ││1F │1G │1H │1I │ │1D │ 2u Backspace
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤├───┼───┼───┼───┤ └─┬─────┤ ┌───â”
+│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │3C ││2E ││2F │2G │2H │2I │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘├───┼───┼───┼───┤ ┌──┴â”3D │ │3I │ 2u Numpad Plus
+│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3F │3G │3H │3I │ │3C │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ├───┼───┼───┼───┤ └───┴────┘ ├───┤
+│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │┌───â”│4F │4G │4H │4I │ ISO Enter │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬────┼───┘│4E │└───┼───┼───┼───┤ │5I │ 2u Numpad Enter
+│50 │51 │53 │56 │5A │5B │5C │┌───┼───┼───â”│5G │5H │5I │ │ │
+└─────┴───┴─────┴────────────────────────┴────┴────┴────┘│5D │5E │5F │└───┴───┴───┘ └───┘
+ └───┴───┴───┘
+┌────────┠┌──────────┠┌───────â”
+│40 │ 2.25u LShift 2.75u RShift │4C │ │5G │ 2u Numpad Zero
+└────────┘ └──────────┘ └───────┘
+┌────┬────┬────┬────────────────────────┬─────┬─────┬───â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
+┌────┬────┬────┬────────────────────────┬─────┬───┬─────â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴───┴─────┘
+┌────┬────┬────┬────────────────────────┬─────┬────┬────â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴────┴────┘
+┌────┬────┬────┬────────────────────────┬─────┬─────┬───â”
+│50 │51 │53 │56 │5A │5B │5C │
+└────┴────┴────┴────────────────────────┴─────┴─────┴───┘
+┌─────┬───┬─────┬──────────────────────────┬─────┬──────â”
+│50 │51 │53 │56 │5B │5C │ RWKL
+└─────┴───┴─────┴──────────────────────────┴─────┴──────┘
+```
diff --git a/keyboards/mechlovin/olly/jf/rev2/mcuconf.h b/keyboards/mechlovin/olly/jf/rev2/mcuconf.h
new file mode 100644
index 0000000000..b987f486b9
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2023 QMK
+ *
+ * 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 STM32_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
+
+#undef STM32_I2C_USE_I2C2
+#define STM32_I2C_USE_I2C2 TRUE
diff --git a/keyboards/mechlovin/olly/jf/rev2/readme.md b/keyboards/mechlovin/olly/jf/rev2/readme.md
new file mode 100644
index 0000000000..b165c35778
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/readme.md
@@ -0,0 +1,27 @@
+# Mechlovin Olly jf/rev2
+
+![jf/rev2](https://i.imgur.com/IrfTGE7h.png)
+
+Olly jf/rev2 PCB, compatible Duck Jetfire keyboard.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://mechlovin.studio/)
+* Hardware Supported: Jetfire Korean Kustom
+* Hardware Availability: [Mechlovin' Studio](https://mechlovin.studio/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/olly/jf/rev2:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/olly/jf/rev2: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:
+
+By keycode: Press the key mapped to `QK_BOOT` if it is available.
+By Bootloader: hold ESC key while plugging in (jump to bootloader)
+By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/rev2/rev2.c b/keyboards/mechlovin/olly/jf/rev2/rev2.c
new file mode 100644
index 0000000000..04cf3b836d
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/rev2.c
@@ -0,0 +1,92 @@
+/* Copyright 2023 Mechlovin'
+ * 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 "quantum.h"
+
+void board_init(void) {
+ AFIO->MAPR |= AFIO_MAPR_SPI1_REMAP;
+}
+
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ { 0, C1_8 }, { 0, C3_8 }, { 0, C4_8 }, { 0, C5_8 }, { 0, C6_8 }, { 0, C7_8 }, { 0, C8_8 }, { 0, C9_8 }, { 0, C1_9 }, { 0, C2_9 }, { 0, C3_9 }, { 0, C4_9 }, { 0, C5_9 }, { 0, C6_9 }, { 0, C7_9 }, { 0, C8_9 }, { 0, C9_9 }, { 0, C1_16 },
+ { 0, C1_7 }, { 0, C2_7 }, { 0, C3_7 }, { 0, C4_7 }, { 0, C5_7 }, { 0, C6_7 }, { 0, C7_7 }, { 0, C8_7 }, { 0, C9_7 }, { 0, C1_10 }, { 0, C2_10 }, { 0, C3_10 }, { 0, C4_10 }, { 0, C5_10 }, { 0, C6_10 }, { 0, C7_10 }, { 0, C8_10 }, { 0, C9_10 }, { 0, C2_16 },
+ { 0, C1_6 }, { 0, C2_6 }, { 0, C3_6 }, { 0, C4_6 }, { 0, C5_6 }, { 0, C6_6 }, { 0, C7_6 }, { 0, C8_6 }, { 0, C9_6 }, { 0, C1_11 }, { 0, C2_11 }, { 0, C3_11 }, { 0, C4_11 }, { 0, C5_11 }, { 0, C6_11 }, { 0, C7_11 }, { 0, C8_11 }, { 0, C9_11 }, { 0, C3_16 },
+ { 0, C1_5 }, { 0, C2_5 }, { 0, C3_5 }, { 0, C4_5 }, { 0, C5_5 }, { 0, C6_5 }, { 0, C7_5 }, { 0, C8_5 }, { 0, C9_5 }, { 0, C1_12 }, { 0, C2_12 }, { 0, C3_12 }, { 0, C4_12 }, { 0, C5_12 }, { 0, C7_12 }, { 0, C8_12 }, { 0, C9_12 }, { 0, C4_16 },
+ { 0, C1_4 }, { 0, C2_4 }, { 0, C3_4 }, { 0, C4_4 }, { 0, C5_4 }, { 0, C6_4 }, { 0, C7_4 }, { 0, C8_4 }, { 0, C9_4 }, { 0, C1_13 }, { 0, C2_13 }, { 0, C3_13 }, { 0, C4_13 }, { 0, C5_13 }, { 0, C6_13 }, { 0, C7_13 }, { 0, C8_13 }, { 0, C9_13 }, { 0, C5_16 },
+ { 0, C1_3 }, { 0, C2_3 }, { 0, C4_3 }, { 0, C7_3 }, { 0, C2_14 }, { 0, C3_14 }, { 0, C4_14 }, { 0, C5_14 }, { 0, C6_14 }, { 0, C7_14 }, { 0, C8_15 }, { 0, C9_15 }, { 0, C7_16 },
+ { 0, C2_1 }, { 0, C1_1 }, { 0, C9_1 }, // Lock LED Indicator
+ { 0, C7_15 }, { 0, C6_15 }, { 0, C9_16 }, { 0, C8_16 }, { 0, C1_15 }, // Layer LED Indicator
+};
+
+
+
+bool led_matrix_indicators_kb(void) {
+ if (!led_matrix_indicators_user()) { return false; }
+ if (host_keyboard_led_state().caps_lock) {
+ led_matrix_set_value(106, 0xFF);
+ led_matrix_set_value(56, 0xFF);
+ } else {
+ led_matrix_set_value(106, 0x00);
+ }
+ if (host_keyboard_led_state().num_lock) {
+ led_matrix_set_value(107, 0xFF);
+ led_matrix_set_value(33, 0xFF);
+ } else {
+ led_matrix_set_value(107, 0x00);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ led_matrix_set_value(108, 0xFF);
+ } else {
+ led_matrix_set_value(108, 0x00);
+ }
+ // if on layer 0, turn on L1 LED, otherwise off.
+ if (layer_state_is(0)) {
+ led_matrix_set_value(109, 0xFF);
+ } else {
+ led_matrix_set_value(109, 0x00);
+ }
+ // if on layer 1, turn on L2 LED, otherwise off.
+ if (layer_state_is(1)) {
+ led_matrix_set_value(110, 0xFF);
+ } else {
+ led_matrix_set_value(110, 0x00);
+ }
+
+ // if on layer 2, turn on L3 LED, otherwise off.
+ if (layer_state_is(2)) {
+ led_matrix_set_value(111, 0xFF);
+ } else {
+ led_matrix_set_value(111, 0x00);
+ }
+
+ // if on layer 3, turn on L4 LED, otherwise off.
+ if (layer_state_is(3)) {
+ led_matrix_set_value(112, 0xFF);
+ } else {
+ led_matrix_set_value(112, 0x00);
+ }
+ // if on layer 4, turn on L5 LED, otherwise off.
+ if (layer_state_is(4)) {
+ led_matrix_set_value(113, 0xFF);
+ } else {
+ led_matrix_set_value(114, 0x00);
+ }
+
+ return true;
+}
diff --git a/keyboards/mechlovin/olly/jf/rev2/rules.mk b/keyboards/mechlovin/olly/jf/rev2/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/mechlovin/olly/jf/rev2/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/mechlovin/olly/jf/rules.mk b/keyboards/mechlovin/olly/jf/rules.mk
index 1d15495eef..fa0eceeb8a 100644
--- a/keyboards/mechlovin/olly/jf/rules.mk
+++ b/keyboards/mechlovin/olly/jf/rules.mk
@@ -1,18 +1 @@
-# Processor frequency
-F_CPU = 16000000
-
-# 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 = yes # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-CUSTOM_MATRIX = lite
-
-SRC += matrix.c
+DEFAULT_FOLDER = mechlovin/olly/jf/rev1
diff --git a/keyboards/mechlovin/olly/octagon/config.h b/keyboards/mechlovin/olly/octagon/config.h
index 88918506eb..6f9d5f9a02 100644
--- a/keyboards/mechlovin/olly/octagon/config.h
+++ b/keyboards/mechlovin/olly/octagon/config.h
@@ -17,37 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef LED_MATRIX_ENABLE
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_SDA
+
+#define LED_MATRIX_LED_COUNT 94
+
#define I2C_DRIVER I2CD2
#define I2C1_SCL_PIN B10
#define I2C1_SDA_PIN B11
-#define LED_MATRIX_LED_COUNT 94
-#define LED_MATRIX_KEYPRESSES // reacts to keypresses
-#define LED_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define LED_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
-#define ENABLE_LED_MATRIX_ALPHAS_MODS
-#define ENABLE_LED_MATRIX_BREATHING
-#define ENABLE_LED_MATRIX_BAND
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL
-#define ENABLE_LED_MATRIX_BAND_SPIRAL
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN
-#define ENABLE_LED_MATRIX_DUAL_BEACON
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_WAVE_UP_DOWN
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_LED_MATRIX_SOLID_SPLASH
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH
-
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
-
-#endif
diff --git a/keyboards/mechlovin/olly/octagon/info.json b/keyboards/mechlovin/olly/octagon/info.json
index 3621f491d8..3ef290d351 100644
--- a/keyboards/mechlovin/olly/octagon/info.json
+++ b/keyboards/mechlovin/olly/octagon/info.json
@@ -29,7 +29,30 @@
"pin": "A7"
},
"led_matrix": {
- "driver": "is31fl3731"
+ "animations":{
+ "alphas_mods": true,
+ "breathing": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": 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,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "driver": "is31fl3731",
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B2", "B1", "A15", "B3", "B9", "B8", "B7", "B6", "B5", "B4"],
diff --git a/keyboards/mechlovin/olly/octagon/octagon.c b/keyboards/mechlovin/olly/octagon/octagon.c
index b5eb828bc8..185ee32a3e 100644
--- a/keyboards/mechlovin/olly/octagon/octagon.c
+++ b/keyboards/mechlovin/olly/octagon/octagon.c
@@ -16,7 +16,7 @@
#include "quantum.h"
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
diff --git a/keyboards/mechlovin/zed65/mono_led/config.h b/keyboards/mechlovin/zed65/mono_led/config.h
index 811841d7fe..e31259438a 100644
--- a/keyboards/mechlovin/zed65/mono_led/config.h
+++ b/keyboards/mechlovin/zed65/mono_led/config.h
@@ -17,38 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef LED_MATRIX_ENABLE
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_SDA
+
#define I2C_DRIVER I2CD2
#define I2C1_SCL_PIN B10
#define I2C1_SDA_PIN B11
-#define LED_MATRIX_LED_COUNT 70
-#define LED_MATRIX_KEYPRESSES // reacts to keypresses
-#define LED_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define LED_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
-#define ENABLE_LED_MATRIX_ALPHAS_MODS
-#define ENABLE_LED_MATRIX_BREATHING
-#define ENABLE_LED_MATRIX_BAND
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL
-#define ENABLE_LED_MATRIX_BAND_SPIRAL
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN
-#define ENABLE_LED_MATRIX_DUAL_BEACON
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
-#define ENABLE_LED_MATRIX_WAVE_UP_DOWN
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_LED_MATRIX_SOLID_SPLASH
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH
-
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
-
-#define VIA_QMK_LED_MATRIX_ENABLE
-#endif
diff --git a/keyboards/mechlovin/zed65/mono_led/info.json b/keyboards/mechlovin/zed65/mono_led/info.json
index 228d2c50d5..aa46b1bd8b 100644
--- a/keyboards/mechlovin/zed65/mono_led/info.json
+++ b/keyboards/mechlovin/zed65/mono_led/info.json
@@ -30,7 +30,30 @@
"pin": "A7"
},
"led_matrix": {
- "driver": "is31fl3731"
+ "animations":{
+ "alphas_mods": true,
+ "breathing": true,
+ "band": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": 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,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "driver": "is31fl3731",
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B2", "B1", "A15", "B3", "B9", "B8", "B7", "B6", "B5", "B4"],
diff --git a/keyboards/mechlovin/zed65/mono_led/mono_led.c b/keyboards/mechlovin/zed65/mono_led/mono_led.c
index f66c4b1359..d8570fa0a6 100644
--- a/keyboards/mechlovin/zed65/mono_led/mono_led.c
+++ b/keyboards/mechlovin/zed65/mono_led/mono_led.c
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
diff --git a/keyboards/mechlovin/zed65/no_backlight/cor65/info.json b/keyboards/mechlovin/zed65/no_backlight/cor65/info.json
index b7d873dcb0..4b3ed831c5 100644
--- a/keyboards/mechlovin/zed65/no_backlight/cor65/info.json
+++ b/keyboards/mechlovin/zed65/no_backlight/cor65/info.json
@@ -1,24 +1,24 @@
{
- "keyboard_name": "Cor65",
"manufacturer": "Mechlovin Studio",
- "url": "",
+ "keyboard_name": "Cor65",
"maintainer": "Mechlovin' Studio",
- "usb": {
- "vid": "0x4D4C",
- "pid": "0x6504",
- "device_version": "0.0.1"
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "B9",
+ "on_state": 0
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "B0", "A6", "A5", "A4", "A3", "A2", "C13", "B7", "B6", "B5", "B4", "B3"],
"rows": ["B12", "B13", "B14", "B15", "A1"]
},
- "diode_direction": "COL2ROW",
- "indicators": {
- "caps_lock": "B9",
- "on_state": 0
+ "url": "",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x6504",
+ "vid": "0x4D4C"
},
"layouts": {
- "LAYOUT_all": {
+ "LAYOUT_65_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
@@ -34,10 +34,8 @@
{"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": [2, 13], "x": 15.25, "y": 0},
+ {"matrix": [0, 14], "x": 14.25, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 16.75, "y": 0},
-
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
@@ -54,7 +52,6 @@
{"matrix": [1, 13], "x": 13.75, "y": 1},
{"matrix": [1, 14], "x": 14.75, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 16.75, "y": 1},
-
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
@@ -70,7 +67,6 @@
{"matrix": [2, 12], "x": 13, "y": 2},
{"matrix": [2, 14], "x": 14, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 16.75, "y": 2},
-
{"matrix": [3, 0], "x": 0, "y": 3},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 3], "x": 3.5, "y": 3},
@@ -84,10 +80,8 @@
{"matrix": [3, 11], "x": 11.5, "y": 3},
{"matrix": [3, 12], "x": 12.5, "y": 3},
{"matrix": [3, 13], "x": 13.5, "y": 3, "w": 1.75},
- {"matrix": [3, 14], "x": 16.75, "y": 3},
-
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
-
+ {"matrix": [3, 15], "x": 16.75, "y": 3},
+ {"matrix": [3, 14], "x": 15.5, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
@@ -95,13 +89,12 @@
{"matrix": [4, 7], "x": 5, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25},
-
{"matrix": [4, 13], "x": 14.5, "y": 4.25},
{"matrix": [4, 14], "x": 15.5, "y": 4.25},
{"matrix": [4, 15], "x": 16.5, "y": 4.25}
]
},
- "LAYOUT_65_ansi": {
+ "LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
@@ -117,9 +110,9 @@
{"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, "w": 2},
+ {"matrix": [0, 14], "x": 14.25, "y": 0},
+ {"matrix": [2, 13], "x": 15.25, "y": 0},
{"matrix": [0, 15], "x": 16.75, "y": 0},
-
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
@@ -136,7 +129,6 @@
{"matrix": [1, 13], "x": 13.75, "y": 1},
{"matrix": [1, 14], "x": 14.75, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 16.75, "y": 1},
-
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
@@ -152,7 +144,6 @@
{"matrix": [2, 12], "x": 13, "y": 2},
{"matrix": [2, 14], "x": 14, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 16.75, "y": 2},
-
{"matrix": [3, 0], "x": 0, "y": 3},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 3], "x": 3.5, "y": 3},
@@ -166,10 +157,8 @@
{"matrix": [3, 11], "x": 11.5, "y": 3},
{"matrix": [3, 12], "x": 12.5, "y": 3},
{"matrix": [3, 13], "x": 13.5, "y": 3, "w": 1.75},
- {"matrix": [3, 14], "x": 16.75, "y": 3},
-
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
-
+ {"matrix": [3, 15], "x": 16.75, "y": 3},
+ {"matrix": [3, 14], "x": 15.5, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
@@ -177,7 +166,6 @@
{"matrix": [4, 7], "x": 5, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25},
-
{"matrix": [4, 13], "x": 14.5, "y": 4.25},
{"matrix": [4, 14], "x": 15.5, "y": 4.25},
{"matrix": [4, 15], "x": 16.5, "y": 4.25}
@@ -201,7 +189,6 @@
{"matrix": [0, 13], "x": 13.25, "y": 0},
{"matrix": [0, 14], "x": 14.25, "y": 0, "w": 2},
{"matrix": [0, 15], "x": 16.75, "y": 0},
-
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.5},
{"matrix": [1, 2], "x": 2.75, "y": 1},
@@ -218,7 +205,6 @@
{"matrix": [1, 13], "x": 13.75, "y": 1},
{"matrix": [1, 14], "x": 14.75, "y": 1, "w": 1.5},
{"matrix": [1, 15], "x": 16.75, "y": 1},
-
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1.25, "y": 2, "w": 1.75},
{"matrix": [2, 2], "x": 3, "y": 2},
@@ -234,7 +220,6 @@
{"matrix": [2, 12], "x": 13, "y": 2},
{"matrix": [2, 14], "x": 14, "y": 2, "w": 2.25},
{"matrix": [2, 15], "x": 16.75, "y": 2},
-
{"matrix": [3, 0], "x": 0, "y": 3},
{"matrix": [3, 1], "x": 1.25, "y": 3, "w": 2.25},
{"matrix": [3, 3], "x": 3.5, "y": 3},
@@ -248,20 +233,17 @@
{"matrix": [3, 11], "x": 11.5, "y": 3},
{"matrix": [3, 12], "x": 12.5, "y": 3},
{"matrix": [3, 13], "x": 13.5, "y": 3, "w": 1.75},
- {"matrix": [3, 14], "x": 16.75, "y": 3},
-
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
-
+ {"matrix": [3, 15], "x": 16.75, "y": 3},
+ {"matrix": [3, 14], "x": 15.5, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
{"matrix": [4, 3], "x": 3.75, "y": 4, "w": 1.5},
{"matrix": [4, 7], "x": 5.25, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.5},
-
{"matrix": [4, 13], "x": 14.5, "y": 4.25},
{"matrix": [4, 14], "x": 15.5, "y": 4.25},
{"matrix": [4, 15], "x": 16.5, "y": 4.25}
]
}
}
-}
+} \ No newline at end of file
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/melgeek/mach80/config.h b/keyboards/melgeek/mach80/config.h
index cc4d7bc6bf..9c0ab6c13f 100755
--- a/keyboards/melgeek/mach80/config.h
+++ b/keyboards/melgeek/mach80/config.h
@@ -16,58 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define DISABLE_RGB_MATRIX_SPLASH
-#define DISABLE_RGB_MATRIX_MULTISPLASH
-#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/melgeek/mach80/info.json b/keyboards/melgeek/mach80/info.json
index e084dda413..ade831fc36 100755
--- a/keyboards/melgeek/mach80/info.json
+++ b/keyboards/melgeek/mach80/info.json
@@ -11,6 +11,60 @@
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"debounce": 3,
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "center_point": [108, 30],
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
+ },
"community_layouts": ["tkl_ansi"],
"layouts": {
"LAYOUT_tkl_ansi": {
diff --git a/keyboards/melgeek/mach80/rev1/config.h b/keyboards/melgeek/mach80/rev1/config.h
index 072419e163..960bf58c52 100755
--- a/keyboards/melgeek/mach80/rev1/config.h
+++ b/keyboards/melgeek/mach80/rev1/config.h
@@ -16,9 +16,4 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 97
#define DRIVER_INDICATOR_LED_TOTAL 3
-
-
-#define RGB_MATRIX_CENTER { 108, 30 }
-
diff --git a/keyboards/melgeek/mach80/rev1/info.json b/keyboards/melgeek/mach80/rev1/info.json
index 1d7d87b76f..af9f7c2669 100644
--- a/keyboards/melgeek/mach80/rev1/info.json
+++ b/keyboards/melgeek/mach80/rev1/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "D2", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "D3"],
"rows": ["F0", "F1", "F4", "F5", "F6", "E6"]
diff --git a/keyboards/melgeek/mach80/rev1/rev1.c b/keyboards/melgeek/mach80/rev1/rev1.c
index 9e5c2d8b81..97744bd824 100755
--- a/keyboards/melgeek/mach80/rev1/rev1.c
+++ b/keyboards/melgeek/mach80/rev1/rev1.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mach80/rev2/config.h b/keyboards/melgeek/mach80/rev2/config.h
index 10d3bde47a..960bf58c52 100755
--- a/keyboards/melgeek/mach80/rev2/config.h
+++ b/keyboards/melgeek/mach80/rev2/config.h
@@ -16,9 +16,4 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 94
#define DRIVER_INDICATOR_LED_TOTAL 3
-
-
-#define RGB_MATRIX_CENTER { 108, 30 }
-
diff --git a/keyboards/melgeek/mach80/rev2/info.json b/keyboards/melgeek/mach80/rev2/info.json
index 1d7d87b76f..af9f7c2669 100644
--- a/keyboards/melgeek/mach80/rev2/info.json
+++ b/keyboards/melgeek/mach80/rev2/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "D2", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "D3"],
"rows": ["F0", "F1", "F4", "F5", "F6", "E6"]
diff --git a/keyboards/melgeek/mach80/rev2/rev2.c b/keyboards/melgeek/mach80/rev2/rev2.c
index e9fdc2517f..5fcc84e947 100755
--- a/keyboards/melgeek/mach80/rev2/rev2.c
+++ b/keyboards/melgeek/mach80/rev2/rev2.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mj61/config.h b/keyboards/melgeek/mj61/config.h
index 704699ece9..9c0ab6c13f 100644
--- a/keyboards/melgeek/mj61/config.h
+++ b/keyboards/melgeek/mj61/config.h
@@ -16,58 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
diff --git a/keyboards/melgeek/mj61/info.json b/keyboards/melgeek/mj61/info.json
index 3e62cbf28a..d34dc59364 100644
--- a/keyboards/melgeek/mj61/info.json
+++ b/keyboards/melgeek/mj61/info.json
@@ -12,6 +12,57 @@
"bootloader": "stm32-dfu",
"board": "QMK_PROTON_C",
"debounce": 3,
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
+ },
"community_layouts": ["60_ansi"],
"layouts": {
"LAYOUT_60_ansi": {
diff --git a/keyboards/melgeek/mj61/rev1/config.h b/keyboards/melgeek/mj61/rev1/config.h
deleted file mode 100644
index ea29d94b9b..0000000000
--- a/keyboards/melgeek/mj61/rev1/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 63
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj61/rev1/info.json b/keyboards/melgeek/mj61/rev1/info.json
index 705023fb8e..67a4a004d6 100644
--- a/keyboards/melgeek/mj61/rev1/info.json
+++ b/keyboards/melgeek/mj61/rev1/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "A10", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj61/rev1/rev1.c b/keyboards/melgeek/mj61/rev1/rev1.c
index 76fcb64c37..473ef5dc86 100644
--- a/keyboards/melgeek/mj61/rev1/rev1.c
+++ b/keyboards/melgeek/mj61/rev1/rev1.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB1 */
{0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB2 */
{0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mj61/rev2/config.h b/keyboards/melgeek/mj61/rev2/config.h
deleted file mode 100644
index 0cd072eb4b..0000000000
--- a/keyboards/melgeek/mj61/rev2/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 71
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj61/rev2/info.json b/keyboards/melgeek/mj61/rev2/info.json
index 62b2c58f15..62c5827117 100644
--- a/keyboards/melgeek/mj61/rev2/info.json
+++ b/keyboards/melgeek/mj61/rev2/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "B13", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj61/rev2/rev2.c b/keyboards/melgeek/mj61/rev2/rev2.c
index 9d13d52ebc..a699cf45c0 100644
--- a/keyboards/melgeek/mj61/rev2/rev2.c
+++ b/keyboards/melgeek/mj61/rev2/rev2.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */
diff --git a/keyboards/melgeek/mj63/config.h b/keyboards/melgeek/mj63/config.h
index 704699ece9..9c0ab6c13f 100644
--- a/keyboards/melgeek/mj63/config.h
+++ b/keyboards/melgeek/mj63/config.h
@@ -16,58 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
diff --git a/keyboards/melgeek/mj63/info.json b/keyboards/melgeek/mj63/info.json
index ecd3b0fff6..c81bf9f867 100644
--- a/keyboards/melgeek/mj63/info.json
+++ b/keyboards/melgeek/mj63/info.json
@@ -12,6 +12,57 @@
"bootloader": "stm32-dfu",
"board": "QMK_PROTON_C",
"debounce": 3,
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
+ },
"community_layouts": ["60_ansi_arrow"],
"layouts": {
"LAYOUT_60_ansi_arrow": {
diff --git a/keyboards/melgeek/mj63/rev1/config.h b/keyboards/melgeek/mj63/rev1/config.h
deleted file mode 100644
index 8abf7f5595..0000000000
--- a/keyboards/melgeek/mj63/rev1/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 65
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj63/rev1/info.json b/keyboards/melgeek/mj63/rev1/info.json
index 705023fb8e..67a4a004d6 100644
--- a/keyboards/melgeek/mj63/rev1/info.json
+++ b/keyboards/melgeek/mj63/rev1/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "A10", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj63/rev1/rev1.c b/keyboards/melgeek/mj63/rev1/rev1.c
index 69e7ab5da6..b286ec7ca6 100644
--- a/keyboards/melgeek/mj63/rev1/rev1.c
+++ b/keyboards/melgeek/mj63/rev1/rev1.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mj63/rev2/config.h b/keyboards/melgeek/mj63/rev2/config.h
deleted file mode 100644
index 0cd072eb4b..0000000000
--- a/keyboards/melgeek/mj63/rev2/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 71
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj63/rev2/info.json b/keyboards/melgeek/mj63/rev2/info.json
index 62b2c58f15..62c5827117 100644
--- a/keyboards/melgeek/mj63/rev2/info.json
+++ b/keyboards/melgeek/mj63/rev2/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "B13", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj63/rev2/rev2.c b/keyboards/melgeek/mj63/rev2/rev2.c
index 5ab9cdb65a..5a04475bae 100644
--- a/keyboards/melgeek/mj63/rev2/rev2.c
+++ b/keyboards/melgeek/mj63/rev2/rev2.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */
diff --git a/keyboards/melgeek/mj64/config.h b/keyboards/melgeek/mj64/config.h
index 704699ece9..9c0ab6c13f 100644
--- a/keyboards/melgeek/mj64/config.h
+++ b/keyboards/melgeek/mj64/config.h
@@ -16,58 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
diff --git a/keyboards/melgeek/mj64/info.json b/keyboards/melgeek/mj64/info.json
index cbc73a262a..731996ef84 100644
--- a/keyboards/melgeek/mj64/info.json
+++ b/keyboards/melgeek/mj64/info.json
@@ -12,6 +12,57 @@
"bootloader": "stm32-dfu",
"board": "QMK_PROTON_C",
"debounce": 3,
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
+ },
"community_layouts": ["64_ansi"],
"layouts": {
"LAYOUT_64_ansi": {
diff --git a/keyboards/melgeek/mj64/rev1/config.h b/keyboards/melgeek/mj64/rev1/config.h
deleted file mode 100644
index ab8fcd6e09..0000000000
--- a/keyboards/melgeek/mj64/rev1/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 66
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/rev1/info.json b/keyboards/melgeek/mj64/rev1/info.json
index 705023fb8e..67a4a004d6 100644
--- a/keyboards/melgeek/mj64/rev1/info.json
+++ b/keyboards/melgeek/mj64/rev1/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "A10", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj64/rev1/rev1.c b/keyboards/melgeek/mj64/rev1/rev1.c
index fff946b20a..a608f83afe 100644
--- a/keyboards/melgeek/mj64/rev1/rev1.c
+++ b/keyboards/melgeek/mj64/rev1/rev1.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mj64/rev2/config.h b/keyboards/melgeek/mj64/rev2/config.h
deleted file mode 100644
index ab8fcd6e09..0000000000
--- a/keyboards/melgeek/mj64/rev2/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 66
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/rev2/info.json b/keyboards/melgeek/mj64/rev2/info.json
index 705023fb8e..67a4a004d6 100644
--- a/keyboards/melgeek/mj64/rev2/info.json
+++ b/keyboards/melgeek/mj64/rev2/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "A10", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj64/rev2/rev2.c b/keyboards/melgeek/mj64/rev2/rev2.c
index 35da35b2e4..67c17855fd 100644
--- a/keyboards/melgeek/mj64/rev2/rev2.c
+++ b/keyboards/melgeek/mj64/rev2/rev2.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mj64/rev3/config.h b/keyboards/melgeek/mj64/rev3/config.h
deleted file mode 100644
index a5a1fbf3e0..0000000000
--- a/keyboards/melgeek/mj64/rev3/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 72
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/rev3/info.json b/keyboards/melgeek/mj64/rev3/info.json
index 62b2c58f15..62c5827117 100644
--- a/keyboards/melgeek/mj64/rev3/info.json
+++ b/keyboards/melgeek/mj64/rev3/info.json
@@ -1,7 +1,4 @@
{
- "rgb_matrix": {
- "driver": "is31fl3741"
- },
"matrix_pins": {
"cols": ["B15", "A8", "B13", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
"rows": ["B12", "B11", "B10", "B1", "A3"]
diff --git a/keyboards/melgeek/mj64/rev3/rev3.c b/keyboards/melgeek/mj64/rev3/rev3.c
index 942bda1487..77f86bb015 100644
--- a/keyboards/melgeek/mj64/rev3/rev3.c
+++ b/keyboards/melgeek/mj64/rev3/rev3.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */
diff --git a/keyboards/melgeek/mj65/config.h b/keyboards/melgeek/mj65/config.h
index 704699ece9..9c0ab6c13f 100644
--- a/keyboards/melgeek/mj65/config.h
+++ b/keyboards/melgeek/mj65/config.h
@@ -16,58 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
diff --git a/keyboards/melgeek/mj65/info.json b/keyboards/melgeek/mj65/info.json
index 061b4bc83e..773c9a3198 100644
--- a/keyboards/melgeek/mj65/info.json
+++ b/keyboards/melgeek/mj65/info.json
@@ -9,7 +9,55 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B15", "A8", "B13", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1", "B14"],
diff --git a/keyboards/melgeek/mj65/rev3/config.h b/keyboards/melgeek/mj65/rev3/config.h
deleted file mode 100644
index 7fc5f0afd1..0000000000
--- a/keyboards/melgeek/mj65/rev3/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 76
-#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj65/rev3/rev3.c b/keyboards/melgeek/mj65/rev3/rev3.c
index 6d851aa847..1ebf87e099 100644
--- a/keyboards/melgeek/mj65/rev3/rev3.c
+++ b/keyboards/melgeek/mj65/rev3/rev3.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mojo68/config.h b/keyboards/melgeek/mojo68/config.h
index e661efb2a9..9c0ab6c13f 100755
--- a/keyboards/melgeek/mojo68/config.h
+++ b/keyboards/melgeek/mojo68/config.h
@@ -16,57 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
diff --git a/keyboards/melgeek/mojo68/info.json b/keyboards/melgeek/mojo68/info.json
index 7e160d0c59..8938bd8a13 100755
--- a/keyboards/melgeek/mojo68/info.json
+++ b/keyboards/melgeek/mojo68/info.json
@@ -9,7 +9,52 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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,
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "D2", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7"],
diff --git a/keyboards/melgeek/mojo68/rev1/config.h b/keyboards/melgeek/mojo68/rev1/config.h
index 2a93a475cf..960bf58c52 100755
--- a/keyboards/melgeek/mojo68/rev1/config.h
+++ b/keyboards/melgeek/mojo68/rev1/config.h
@@ -16,5 +16,4 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 68
#define DRIVER_INDICATOR_LED_TOTAL 3
diff --git a/keyboards/melgeek/mojo68/rev1/rev1.c b/keyboards/melgeek/mojo68/rev1/rev1.c
index cd6d4ec413..ea10051431 100755
--- a/keyboards/melgeek/mojo68/rev1/rev1.c
+++ b/keyboards/melgeek/mojo68/rev1/rev1.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/mojo75/config.h b/keyboards/melgeek/mojo75/config.h
index a4e89e5a90..9c0ab6c13f 100644
--- a/keyboards/melgeek/mojo75/config.h
+++ b/keyboards/melgeek/mojo75/config.h
@@ -16,59 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
diff --git a/keyboards/melgeek/mojo75/info.json b/keyboards/melgeek/mojo75/info.json
index c22c5710a5..e934cb9f4b 100644
--- a/keyboards/melgeek/mojo75/info.json
+++ b/keyboards/melgeek/mojo75/info.json
@@ -9,7 +9,55 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B12", "B13", "B14", "B15", "A8", "A15", "B3", "B4", "B5", "B8", "B9", "C13", "C14", "C15", "A0", "A1"],
diff --git a/keyboards/melgeek/mojo75/rev1/config.h b/keyboards/melgeek/mojo75/rev1/config.h
deleted file mode 100644
index 44435f2220..0000000000
--- a/keyboards/melgeek/mojo75/rev1/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 92
-#define DRIVER_INDICATOR_LED_TOTAL 0
-
diff --git a/keyboards/melgeek/mojo75/rev1/rev1.c b/keyboards/melgeek/mojo75/rev1/rev1.c
index e64c163c78..f043108380 100644
--- a/keyboards/melgeek/mojo75/rev1/rev1.c
+++ b/keyboards/melgeek/mojo75/rev1/rev1.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB1 */
{0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB2 */
{0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/tegic/config.h b/keyboards/melgeek/tegic/config.h
index 723706d610..9c0ab6c13f 100755
--- a/keyboards/melgeek/tegic/config.h
+++ b/keyboards/melgeek/tegic/config.h
@@ -16,55 +16,4 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/melgeek/tegic/info.json b/keyboards/melgeek/tegic/info.json
index c54f53ca61..755ae3db3e 100644
--- a/keyboards/melgeek/tegic/info.json
+++ b/keyboards/melgeek/tegic/info.json
@@ -9,7 +9,58 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "center_point": [84, 24],
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "D2", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7"],
diff --git a/keyboards/melgeek/tegic/rev1/config.h b/keyboards/melgeek/tegic/rev1/config.h
deleted file mode 100755
index bba7c01f5f..0000000000
--- a/keyboards/melgeek/tegic/rev1/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2020 MelGeek <melgeek001365@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
-
-#define RGB_MATRIX_LED_COUNT 91
-//#define DRIVER_INDICATOR_LED_TOTAL 3
-
-
-#define RGB_MATRIX_CENTER { 84, 24 }
-
diff --git a/keyboards/melgeek/tegic/rev1/rev1.c b/keyboards/melgeek/tegic/rev1/rev1.c
index 6dc2e8d180..2b36ec7609 100755
--- a/keyboards/melgeek/tegic/rev1/rev1.c
+++ b/keyboards/melgeek/tegic/rev1/rev1.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
{0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
{0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
diff --git a/keyboards/melgeek/z70ultra/config.h b/keyboards/melgeek/z70ultra/config.h
index d78cbab672..5d5ce04668 100644
--- a/keyboards/melgeek/z70ultra/config.h
+++ b/keyboards/melgeek/z70ultra/config.h
@@ -16,60 +16,6 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-#define RGB_MATRIX_LED_COUNT 69
+
#define DRIVER_INDICATOR_LED_TOTAL 6
diff --git a/keyboards/melgeek/z70ultra/info.json b/keyboards/melgeek/z70ultra/info.json
index ae555e046b..471929f9db 100644
--- a/keyboards/melgeek/z70ultra/info.json
+++ b/keyboards/melgeek/z70ultra/info.json
@@ -9,7 +9,55 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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,
+ "solid_splash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B1", "A10", "B5", "B4", "B3", "A15", "A2", "A1", "A0", "C15", "C14", "C13"],
diff --git a/keyboards/melgeek/z70ultra/z70ultra.c b/keyboards/melgeek/z70ultra/z70ultra.c
index f978edea92..eaf03fd344 100644
--- a/keyboards/melgeek/z70ultra/z70ultra.c
+++ b/keyboards/melgeek/z70ultra/z70ultra.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS28_SW1, CS30_SW1, CS29_SW1}, /* RGB10 */
{0, CS28_SW2, CS30_SW2, CS29_SW2}, /* RGB11 */
{0, CS28_SW3, CS30_SW3, CS29_SW3}, /* RGB12 */
diff --git a/keyboards/merge/um70/config.h b/keyboards/merge/um70/config.h
index 04569dc989..2d9f73d61a 100644
--- a/keyboards/merge/um70/config.h
+++ b/keyboards/merge/um70/config.h
@@ -20,11 +20,6 @@
#define MASTER_LEFT
#define SPLIT_MODS_ENABLE
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 83
-# define RGB_MATRIX_SPLIT { 39, 44 }
-#endif
-
#define B6_AUDIO
#ifdef AUDIO_ENABLE
diff --git a/keyboards/merge/um70/info.json b/keyboards/merge/um70/info.json
index 95f3bb1cea..9c120b9224 100644
--- a/keyboards/merge/um70/info.json
+++ b/keyboards/merge/um70/info.json
@@ -24,6 +24,10 @@
"ws2812": {
"pin": "D3"
},
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "split_count": [39, 44]
+ },
"rgblight": {
"led_count": 83,
"max_brightness": 150,
diff --git a/keyboards/merge/um80/config.h b/keyboards/merge/um80/config.h
index 70a5d7ba59..d23f9163a7 100644
--- a/keyboards/merge/um80/config.h
+++ b/keyboards/merge/um80/config.h
@@ -20,11 +20,6 @@
#define MASTER_LEFT
#define SPLIT_MODS_ENABLE
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 100
-# define RGB_MATRIX_SPLIT { 48, 52 }
-#endif
-
#define AUDIO_PIN B6
#ifdef AUDIO_ENABLE
diff --git a/keyboards/miiiw/blackio83/config.h b/keyboards/miiiw/blackio83/config.h
index 73c98722e9..055e8e3579 100644
--- a/keyboards/miiiw/blackio83/config.h
+++ b/keyboards/miiiw/blackio83/config.h
@@ -18,39 +18,3 @@
// EEPROM i2c chip
#define EEPROM_I2C_24LC256
-
-/* Disable the animations you don't want/need. You will need to disable a good number of these *
- * because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
diff --git a/keyboards/miiiw/blackio83/info.json b/keyboards/miiiw/blackio83/info.json
index 107e288099..ef0e15efb9 100644
--- a/keyboards/miiiw/blackio83/info.json
+++ b/keyboards/miiiw/blackio83/info.json
@@ -31,6 +31,40 @@
},
"processor": "STM32F072",
"rgb_matrix": {
+ "animations": {
+ "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
+ },
+ "center_point": [62, 42],
+ "default": {
+ "animation": "solid_color"
+ },
"driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
diff --git a/keyboards/miiiw/blackio83/rev_0100/config.h b/keyboards/miiiw/blackio83/rev_0100/config.h
index e68a9d0b16..b1eec364ed 100644
--- a/keyboards/miiiw/blackio83/rev_0100/config.h
+++ b/keyboards/miiiw/blackio83/rev_0100/config.h
@@ -36,9 +36,6 @@
/* RGB Matrix config */
#define RGB_EN_PIN A8
-#define RGBLED_NUM 83
-#define RGB_MATRIX_LED_COUNT 83
-#define RGB_MATRIX_CENTER { 62, 42 }
// PWM RGB Underglow Defines
#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB
diff --git a/keyboards/miiiw/blackio83/rev_0100/rev_0100.c b/keyboards/miiiw/blackio83/rev_0100/rev_0100.c
deleted file mode 100644
index b28ac84acb..0000000000
--- a/keyboards/miiiw/blackio83/rev_0100/rev_0100.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2023 ArthurCyy <https://github.com/ArthurCyy>
- *
- * 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 "blackio83.h"
diff --git a/keyboards/miller/gm862/config.h b/keyboards/miller/gm862/config.h
index 2bda7f75bb..130f99d7b7 100644
--- a/keyboards/miller/gm862/config.h
+++ b/keyboards/miller/gm862/config.h
@@ -1,58 +1,3 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-# define RGB_MATRIX_LED_COUNT 62
-#endif
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/miller/gm862/gm862.c b/keyboards/miller/gm862/gm862.c
index b677ae3be4..3dcbe122fb 100644
--- a/keyboards/miller/gm862/gm862.c
+++ b/keyboards/miller/gm862/gm862.c
@@ -1,7 +1,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{0, B_1, A_1, C_1},
{0, B_2, A_2, C_2},
{0, B_3, A_3, C_3},
diff --git a/keyboards/miller/gm862/info.json b/keyboards/miller/gm862/info.json
index 952bb34397..1249b0a5ab 100644
--- a/keyboards/miller/gm862/info.json
+++ b/keyboards/miller/gm862/info.json
@@ -9,7 +9,38 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3733",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B5", "B6", "C6", "C7", "F7", "F6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5"],
diff --git a/keyboards/miniaxe/readme.md b/keyboards/miniaxe/readme.md
deleted file mode 100644
index 57ed01a917..0000000000
--- a/keyboards/miniaxe/readme.md
+++ /dev/null
@@ -1,16 +0,0 @@
-MiniAxe
-===
-
-![MiniAxe](https://i.imgur.com/1ApzrCz.jpg)
-
-Yet another split ortholinear keyboard with 3x5+3 keys.
-
-Keyboard Maintainer: [ka2hiro](https://github.com/ka2hiro) [@ka2hiro](https://twitter.com/ka2hiro)
-Hardware Supported: MiniAxe PCB, ATMEGA32U4
-Hardware Availability: [@ka2hiro](https://twitter.com/ka2hiro)
-
-Make example for this keyboard (after setting up your build environment):
-
- make miniaxe:default:dfu
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mino/readme.md b/keyboards/mino/readme.md
deleted file mode 100644
index e13718b86c..0000000000
--- a/keyboards/mino/readme.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# mino
-
-![Mino](https://i.imgur.com/f5kHu8Qh.jpg)
-
-A 47 key board with a retro twist.
-
-* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
-* Hardware Supported: Mino PCB
-* Hardware Availability: Groupbuy
-
-## Bootloader
-
-Enter the bootloader in 3 ways:
-
-* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. For the default keymap it is the middle spacebar on the second layer.
-
-Make example for this keyboard (after setting up your build environment):
-
- make mino/hotswap:default
-
-Flashing example for this keyboard:
-
- make mino/hotswap: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).
diff --git a/keyboards/mino_plus/mino_plus.c b/keyboards/mino_plus/mino_plus.c
deleted file mode 100644
index cd651b6d17..0000000000
--- a/keyboards/mino_plus/mino_plus.c
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright 2023 ShandonCodes (@ShandonCodes)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "quantum.h"
-
-#ifdef OLED_ENABLE
-#define FRAMES 5
-#define ANIMATION_SIZE 512
-#define TAP_SPEED 30
-
-uint8_t current_frame = 0;
-uint32_t anim_timer = 0;
-uint32_t anim_sleep = 0;
-uint32_t ANIM_FRAME_DURATION = 1000;
-
-static void render_animation(void) {
- static const char PROGMEM animation_frames[FRAMES][ANIMATION_SIZE] = {
- // 'Base', 32x128px
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0,
- 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
- 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
- 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
- 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
- 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
- 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
- 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
- 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
- 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
- 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
- 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
- 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
- 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
- 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
-
- // 'Frame_1', 32x128px
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x4c, 0x4c, 0xfc, 0xfc, 0x4c,
- 0x4c, 0xfc, 0xc0, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x04,
- 0x04, 0x07, 0x07, 0x04, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0,
- 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
- 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
- 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
- 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
- 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
- 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
- 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
- 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
- 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
- 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
- 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
- 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
- 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
- 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
-
- // 'Frame_2', 32x128px
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0xc0, 0x40,
- 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x3f, 0x7f, 0x44,
- 0x44, 0x7f, 0x7c, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0,
- 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
- 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
- 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
- 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
- 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
- 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
- 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
- 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
- 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
- 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
- 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
- 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
- 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
- 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
-
- // 'Frame_3', 32x128px
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0xfc, 0xfc, 0x44,
- 0x44, 0xfc, 0xc0, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x43, 0x47, 0xc4,
- 0x44, 0x47, 0x47, 0xc4, 0x44, 0x47, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
- 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
- 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
- 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
- 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
- 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
- 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
- 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
- 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
- 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
- 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
- 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
- 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
- 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
-
- // 'Frame_4', 32x128px
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0xc0, 0x40,
- 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc4, 0x44, 0x7f, 0x7f, 0xe6,
- 0x66, 0x7f, 0x7e, 0xe4, 0x64, 0x7c, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
- 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
- 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
- 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
- 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
- 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
- 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
- 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
- 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
- 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
- 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
- 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
- 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
- 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
- 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
- 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f}
- };
-
- void animate_phase(void) {
- current_frame = (current_frame + 1) % FRAMES;
- oled_write_raw_P(animation_frames[current_frame], ANIMATION_SIZE);
- }
-
- if (get_current_wpm() != 000) {
- oled_on(); // not essential but turns on animation OLED with any alpha keypress
- if (get_current_wpm() > TAP_SPEED){
- ANIM_FRAME_DURATION = 100;
- } else {
- ANIM_FRAME_DURATION = 1000;
- }
- if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- anim_timer = timer_read32();
- animate_phase();
- }
- anim_sleep = timer_read32();
- } else {
- if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
- oled_off();
- } else {
- if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- anim_timer = timer_read32();
- animate_phase();
- }
- }
- }
-}
-
-static void render_status(void) {
- // Host Keyboard Layer Status
- oled_write_ln_P(PSTR("Layer"), false);
- switch (get_highest_layer(layer_state)) {
- case 0:
- oled_write_ln_P(PSTR("Base"), false);
- break;
- case 1:
- oled_write_ln_P(PSTR("1"), false);
- break;
- case 2:
- oled_write_ln_P(PSTR("2"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undefined"), false);
- }
-}
-
-oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
- return OLED_ROTATION_270;
-}
-
-bool oled_task_kb(void) {
- render_animation();
- render_status();
-
- oled_write_ln_P(PSTR("WPM:"), false);
- oled_write_ln(get_u8_str(get_current_wpm(), '0'), false);
-
- return false;
-}
-#endif \ No newline at end of file
diff --git a/keyboards/mino_plus/readme.md b/keyboards/mino_plus/readme.md
deleted file mode 100644
index 0a85b6dc58..0000000000
--- a/keyboards/mino_plus/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# mino_plus
-
-![mino_plus](https://i.imgur.com/vZJ6kaNh.jpg)
-
-A 65% keyboard, inspried by tetrominos.
-
-* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
-* Hardware Supported: Mino Plus PCB
-* Hardware Availability: https://store.shandon.codes/mino-plus/
-
-Make example for this keyboard (after setting up your build environment):
-
- make mino_plus/soldered:default
- make mino_plus/hotswap:default
-
-Flashing example for this keyboard:
-
- make mino_plus/soldered:default:flash
- make mino_plus/hotswap: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB
-* **Keycode in layout**: Press the key mapped to `FN` + `R` if it is available.
diff --git a/keyboards/mixi/keymaps/default/keymap.c b/keyboards/mixi/keymaps/default/keymap.c
index d14a692a89..29f19349cc 100644
--- a/keyboards/mixi/keymaps/default/keymap.c
+++ b/keyboards/mixi/keymaps/default/keymap.c
@@ -59,13 +59,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
const rgblight_segment_t PROGMEM _base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, RGBLED_NUM, HSV_BLUE}
+ {0, RGBLIGHT_LED_COUNT, HSV_BLUE}
);
const rgblight_segment_t PROGMEM _middle_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, RGBLED_NUM, HSV_GREEN}
+ {0, RGBLIGHT_LED_COUNT, HSV_GREEN}
);
const rgblight_segment_t PROGMEM _top_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, RGBLED_NUM, HSV_RED}
+ {0, RGBLIGHT_LED_COUNT, HSV_RED}
);
const rgblight_segment_t* const PROGMEM _rgb_layers[] =
diff --git a/keyboards/mixi/keymaps/via/keymap.c b/keyboards/mixi/keymaps/via/keymap.c
index ef5aace888..adcf448503 100644
--- a/keyboards/mixi/keymaps/via/keymap.c
+++ b/keyboards/mixi/keymaps/via/keymap.c
@@ -76,13 +76,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
const rgblight_segment_t PROGMEM _base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, RGBLED_NUM, HSV_BLUE}
+ {0, RGBLIGHT_LED_COUNT, HSV_BLUE}
);
const rgblight_segment_t PROGMEM _middle_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, RGBLED_NUM, HSV_GREEN}
+ {0, RGBLIGHT_LED_COUNT, HSV_GREEN}
);
const rgblight_segment_t PROGMEM _top_layer[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, RGBLED_NUM, HSV_RED}
+ {0, RGBLIGHT_LED_COUNT, HSV_RED}
);
const rgblight_segment_t* const PROGMEM _rgb_layers[] =
diff --git a/keyboards/ml/gas75/config.h b/keyboards/ml/gas75/config.h
deleted file mode 100644
index f4a2ec49cd..0000000000
--- a/keyboards/ml/gas75/config.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright 2022 ML
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 3
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_KEYPRESSES
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/ml/gas75/info.json b/keyboards/ml/gas75/info.json
index 9831c7beb6..492573c9be 100644
--- a/keyboards/ml/gas75/info.json
+++ b/keyboards/ml/gas75/info.json
@@ -10,7 +10,51 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["D1", "D2", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "E6", "B0", "B1", "B2", "B3"],
diff --git a/keyboards/mlego/m48/keymaps/default/keymap.c b/keyboards/mlego/m48/keymaps/default/keymap.c
index d07f193526..71409bf939 100644
--- a/keyboards/mlego/m48/keymaps/default/keymap.c
+++ b/keyboards/mlego/m48/keymaps/default/keymap.c
@@ -26,10 +26,10 @@ enum layer_names {
#ifdef RGBLIGHT_ENABLE
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_GREEN});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
#endif
diff --git a/keyboards/mlego/m48/keymaps/via/keymap.c b/keyboards/mlego/m48/keymaps/via/keymap.c
index 91649631dc..d180c3e8ac 100644
--- a/keyboards/mlego/m48/keymaps/via/keymap.c
+++ b/keyboards/mlego/m48/keymaps/via/keymap.c
@@ -26,10 +26,10 @@ enum layer_names {
#ifdef RGBLIGHT_ENABLE
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_GREEN});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
#endif
diff --git a/keyboards/mlego/m60/keymaps/default/keymap.c b/keyboards/mlego/m60/keymaps/default/keymap.c
index dbfcad3152..d997bd2dc0 100644
--- a/keyboards/mlego/m60/keymaps/default/keymap.c
+++ b/keyboards/mlego/m60/keymaps/default/keymap.c
@@ -26,10 +26,10 @@ enum layer_names {
#ifdef RGBLIGHT_ENABLE
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_GREEN});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
#endif
diff --git a/keyboards/mlego/m60/keymaps/via/keymap.c b/keyboards/mlego/m60/keymaps/via/keymap.c
index 8d0cddae80..fc3ab612d0 100644
--- a/keyboards/mlego/m60/keymaps/via/keymap.c
+++ b/keyboards/mlego/m60/keymaps/via/keymap.c
@@ -26,10 +26,10 @@ enum layer_names {
#ifdef RGBLIGHT_ENABLE
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_GREEN});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
#endif
diff --git a/keyboards/mlego/m60_split/keymaps/default/keymap.c b/keyboards/mlego/m60_split/keymaps/default/keymap.c
index 2f51794c1c..506aa45f30 100644
--- a/keyboards/mlego/m60_split/keymaps/default/keymap.c
+++ b/keyboards/mlego/m60_split/keymaps/default/keymap.c
@@ -29,10 +29,10 @@ enum layer_names {
#ifdef RGBLIGHT_ENABLE
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_GREEN});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
#endif
diff --git a/keyboards/mlego/m60_split/keymaps/via/keymap.c b/keyboards/mlego/m60_split/keymaps/via/keymap.c
index 756639bfd9..29270b0425 100644
--- a/keyboards/mlego/m60_split/keymaps/via/keymap.c
+++ b/keyboards/mlego/m60_split/keymaps/via/keymap.c
@@ -29,10 +29,10 @@ enum layer_names {
#ifdef RGBLIGHT_ENABLE
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_GREEN});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
#endif
diff --git a/keyboards/mlego/m65/m65.c b/keyboards/mlego/m65/m65.c
index 12ea866f1e..506ac2e30d 100644
--- a/keyboards/mlego/m65/m65.c
+++ b/keyboards/mlego/m65/m65.c
@@ -9,10 +9,10 @@ static bool toggle_rse = false;
#if defined(RGBLIGHT_ENABLE)
-const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_OFF});
-const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_AZURE});
-const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CORAL});
-const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_OFF});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_AZURE});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_CORAL});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLIGHT_LED_COUNT, HSV_RED});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
diff --git a/keyboards/mnk1800s/readme.md b/keyboards/mnk1800s/readme.md
deleted file mode 100755
index eb4e1b0ef5..0000000000
--- a/keyboards/mnk1800s/readme.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# MNK1800s
-
-This is a southpaw 65% keyboard. 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 Availability: https://www.monokei.co
-
-## Instructions
-
-### Build
-
-Make example for this keyboard (after setting up your build environment):
-
- make mnk1800s: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 mnk1800s:<keymap>:flash`)
diff --git a/keyboards/mnk50/readme.md b/keyboards/mnk50/readme.md
deleted file mode 100755
index f8484e9d36..0000000000
--- a/keyboards/mnk50/readme.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# MNK40
-
-This is a 40% keyboard. It supports VIA.
-
-* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
-* Hardware Supported: A 40% keyboard with STM32F072CB
-* Hardware Availability: https://www.monokei.co
-
-## Instructions
-
-### Build
-
-Make example for this keyboard (after setting up your build environment):
-
- make mnk50: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 mnk50:<keymap>:flash`)
diff --git a/keyboards/mnk75/readme.md b/keyboards/mnk75/readme.md
deleted file mode 100755
index 631ca246e7..0000000000
--- a/keyboards/mnk75/readme.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# MNK75
-
-This is a 75% layout PCB. It supports VIA.
-
-* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
-* Hardware Supported: A 75% keyboard with STM32F072CB
-* Hardware Availability: https://monokei.co/
-
-## Instructions
-
-### Build
-
-Make example for this keyboard (after setting up your build environment):
-
- make mnk75: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 mnk75:<keymap>:flash`)
diff --git a/keyboards/momokai/aurora/config.h b/keyboards/momokai/aurora/config.h
deleted file mode 100644
index 8fd619bdbf..0000000000
--- a/keyboards/momokai/aurora/config.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2023 peepeetee (@peepeetee)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-
-
-#define RGB_MATRIX_LED_COUNT 6
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- // #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- // #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- // #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- // #define ENABLE_RGB_MATRIX_DUAL_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- // #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- // #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- // #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/momokai/aurora/info.json b/keyboards/momokai/aurora/info.json
index 1a04cadff2..888398aa36 100644
--- a/keyboards/momokai/aurora/info.json
+++ b/keyboards/momokai/aurora/info.json
@@ -43,6 +43,34 @@
"pin": "C7"
},
"rgb_matrix": {
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "band_pinwheel_sat": true,
+ "band_pinwheel_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_spiral": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_wave": true,
+ "pixel_rain": true,
+ "pixel_flow": true,
+ "typing_heatmap": true,
+ "digital_rain": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "splash": true,
+ "solid_splash": true
+ },
"driver": "ws2812",
"layout": [
{ "flags": 4, "matrix": [2, 0], "x": 51, "y": 51 },
@@ -51,7 +79,9 @@
{ "flags": 4, "matrix": [2, 1], "x": 102, "y": 51 },
{ "flags": 4, "matrix": [2, 2], "x": 154, "y": 51 },
{ "flags": 4, "matrix": [1, 2], "x": 154, "y": 38 }
- ]
+ ],
+ "max_brightness": 200,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/momokai/tap_duo/config.h b/keyboards/momokai/tap_duo/config.h
index 153f611690..1e3d24282d 100644
--- a/keyboards/momokai/tap_duo/config.h
+++ b/keyboards/momokai/tap_duo/config.h
@@ -27,64 +27,3 @@
#define MOUSEKEY_WHEEL_INTERVAL 80
#define MOUSEKEY_WHEEL_MAX_SPEED 8
#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
-
-
-//TODO: implement RGB Matrix
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 4
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- // #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- // #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- // #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- // #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- // #define ENABLE_RGB_MATRIX_HUE_BREATHING
- // #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- // #define ENABLE_RGB_MATRIX_HUE_WAVE
- // #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- // #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- // #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- // #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/momokai/tap_duo/info.json b/keyboards/momokai/tap_duo/info.json
index 262576b31a..9a0a9a2e1d 100644
--- a/keyboards/momokai/tap_duo/info.json
+++ b/keyboards/momokai/tap_duo/info.json
@@ -12,7 +12,34 @@
"pin": "F0"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_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_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_beacon": true,
+ "raindrops": true,
+ "pixel_fractal": true,
+ "typing_heatmap": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_multinexus": true,
+ "splash": true,
+ "solid_splash": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["E6", "B2", "D1", "D2", "D3"],
@@ -36,5 +63,4 @@
]
}
}
- ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}
diff --git a/keyboards/momokai/tap_trio/config.h b/keyboards/momokai/tap_trio/config.h
deleted file mode 100644
index a4a21d3f24..0000000000
--- a/keyboards/momokai/tap_trio/config.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright 2022 Momokai
- *
- * 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
-
-//TODO: implement RGB Matrix
-// #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL
-
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 5
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- #define ENABLE_RGB_MATRIX_SOLID_COLOR
- // #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- // #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- // #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- // #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- // #define ENABLE_RGB_MATRIX_HUE_BREATHING
- // #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- // #define ENABLE_RGB_MATRIX_HUE_WAVE
- // #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- // #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/momokai/tap_trio/info.json b/keyboards/momokai/tap_trio/info.json
index afc5aa2015..f995501969 100644
--- a/keyboards/momokai/tap_trio/info.json
+++ b/keyboards/momokai/tap_trio/info.json
@@ -12,7 +12,34 @@
"pin": "F0"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_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,
+ "dual_beacon": true,
+ "rainbow_beacon": true,
+ "raindrops": true,
+ "pixel_fractal": true,
+ "typing_heatmap": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true,
+ "solid_multisplash": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["E6", "B2", "B7", "D1", "D2", "D3"],
@@ -34,5 +61,4 @@
]
}
}
- ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}
diff --git a/keyboards/mnk1800s/config.h b/keyboards/monokei/mnk1800s/config.h
index 79fdc4275f..79fdc4275f 100755
--- a/keyboards/mnk1800s/config.h
+++ b/keyboards/monokei/mnk1800s/config.h
diff --git a/keyboards/mnk1800s/info.json b/keyboards/monokei/mnk1800s/info.json
index 9cf4f0f122..9cf4f0f122 100755
--- a/keyboards/mnk1800s/info.json
+++ b/keyboards/monokei/mnk1800s/info.json
diff --git a/keyboards/mnk1800s/keymaps/default/keymap.c b/keyboards/monokei/mnk1800s/keymaps/default/keymap.c
index 34b8428ba2..34b8428ba2 100644
--- a/keyboards/mnk1800s/keymaps/default/keymap.c
+++ b/keyboards/monokei/mnk1800s/keymaps/default/keymap.c
diff --git a/keyboards/mnk1800s/keymaps/default/readme.md b/keyboards/monokei/mnk1800s/keymaps/default/readme.md
index 8d0f371ca3..8d0f371ca3 100755
--- a/keyboards/mnk1800s/keymaps/default/readme.md
+++ b/keyboards/monokei/mnk1800s/keymaps/default/readme.md
diff --git a/keyboards/mnk1800s/keymaps/default_2u_bs/keymap.c b/keyboards/monokei/mnk1800s/keymaps/default_2u_bs/keymap.c
index 5e5466470f..5e5466470f 100644
--- a/keyboards/mnk1800s/keymaps/default_2u_bs/keymap.c
+++ b/keyboards/monokei/mnk1800s/keymaps/default_2u_bs/keymap.c
diff --git a/keyboards/mnk1800s/keymaps/via/keymap.c b/keyboards/monokei/mnk1800s/keymaps/via/keymap.c
index 3c1e7ce276..3c1e7ce276 100644
--- a/keyboards/mnk1800s/keymaps/via/keymap.c
+++ b/keyboards/monokei/mnk1800s/keymaps/via/keymap.c
diff --git a/keyboards/mnk1800s/keymaps/via/readme.md b/keyboards/monokei/mnk1800s/keymaps/via/readme.md
index f4f03694cb..f4f03694cb 100755
--- a/keyboards/mnk1800s/keymaps/via/readme.md
+++ b/keyboards/monokei/mnk1800s/keymaps/via/readme.md
diff --git a/keyboards/mnk75/keymaps/via/rules.mk b/keyboards/monokei/mnk1800s/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100755
--- a/keyboards/mnk75/keymaps/via/rules.mk
+++ b/keyboards/monokei/mnk1800s/keymaps/via/rules.mk
diff --git a/keyboards/mnk1800s/matrix_diagram.md b/keyboards/monokei/mnk1800s/matrix_diagram.md
index ba2e2d751e..ba2e2d751e 100644
--- a/keyboards/mnk1800s/matrix_diagram.md
+++ b/keyboards/monokei/mnk1800s/matrix_diagram.md
diff --git a/keyboards/monokei/mnk1800s/readme.md b/keyboards/monokei/mnk1800s/readme.md
new file mode 100755
index 0000000000..610baba72b
--- /dev/null
+++ b/keyboards/monokei/mnk1800s/readme.md
@@ -0,0 +1,32 @@
+# MNK1800s
+
+This is a southpaw 65% keyboard. 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 Availability: https://www.monokei.co
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make monokei/mnk1800s: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 monokei/mnk1800s:<keymap>:flash`)
diff --git a/keyboards/mnk1800s/rules.mk b/keyboards/monokei/mnk1800s/rules.mk
index 7c0709f41e..7c0709f41e 100644
--- a/keyboards/mnk1800s/rules.mk
+++ b/keyboards/monokei/mnk1800s/rules.mk
diff --git a/keyboards/mnk50/config.h b/keyboards/monokei/mnk50/config.h
index 79fdc4275f..79fdc4275f 100755
--- a/keyboards/mnk50/config.h
+++ b/keyboards/monokei/mnk50/config.h
diff --git a/keyboards/mnk50/info.json b/keyboards/monokei/mnk50/info.json
index 3d4c98edc7..3d4c98edc7 100755
--- a/keyboards/mnk50/info.json
+++ b/keyboards/monokei/mnk50/info.json
diff --git a/keyboards/mnk50/keymaps/default/keymap.c b/keyboards/monokei/mnk50/keymaps/default/keymap.c
index 4baabc8694..4baabc8694 100644
--- a/keyboards/mnk50/keymaps/default/keymap.c
+++ b/keyboards/monokei/mnk50/keymaps/default/keymap.c
diff --git a/keyboards/mnk50/keymaps/default/readme.md b/keyboards/monokei/mnk50/keymaps/default/readme.md
index b78cf94011..b78cf94011 100755
--- a/keyboards/mnk50/keymaps/default/readme.md
+++ b/keyboards/monokei/mnk50/keymaps/default/readme.md
diff --git a/keyboards/mnk50/keymaps/via/keymap.c b/keyboards/monokei/mnk50/keymaps/via/keymap.c
index 2e26561c2e..2e26561c2e 100644
--- a/keyboards/mnk50/keymaps/via/keymap.c
+++ b/keyboards/monokei/mnk50/keymaps/via/keymap.c
diff --git a/keyboards/mnk50/keymaps/via/readme.md b/keyboards/monokei/mnk50/keymaps/via/readme.md
index 9c61657a72..9c61657a72 100755
--- a/keyboards/mnk50/keymaps/via/readme.md
+++ b/keyboards/monokei/mnk50/keymaps/via/readme.md
diff --git a/keyboards/moonlander/keymaps/via/rules.mk b/keyboards/monokei/mnk50/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644..100755
--- a/keyboards/moonlander/keymaps/via/rules.mk
+++ b/keyboards/monokei/mnk50/keymaps/via/rules.mk
diff --git a/keyboards/monokei/mnk50/readme.md b/keyboards/monokei/mnk50/readme.md
new file mode 100755
index 0000000000..ebbe44378b
--- /dev/null
+++ b/keyboards/monokei/mnk50/readme.md
@@ -0,0 +1,32 @@
+# MNK40
+
+This is a 40% keyboard. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A 40% keyboard with STM32F072CB
+* Hardware Availability: https://www.monokei.co
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make monokei/mnk50: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 monokei/mnk50:<keymap>:flash`)
diff --git a/keyboards/mnk50/rules.mk b/keyboards/monokei/mnk50/rules.mk
index 7c0709f41e..7c0709f41e 100644
--- a/keyboards/mnk50/rules.mk
+++ b/keyboards/monokei/mnk50/rules.mk
diff --git a/keyboards/mnk75/config.h b/keyboards/monokei/mnk75/config.h
index 79fdc4275f..79fdc4275f 100755
--- a/keyboards/mnk75/config.h
+++ b/keyboards/monokei/mnk75/config.h
diff --git a/keyboards/mnk75/info.json b/keyboards/monokei/mnk75/info.json
index 421e830a1b..421e830a1b 100755
--- a/keyboards/mnk75/info.json
+++ b/keyboards/monokei/mnk75/info.json
diff --git a/keyboards/mnk75/keymaps/default/keymap.c b/keyboards/monokei/mnk75/keymaps/default/keymap.c
index acabed3ae8..acabed3ae8 100644
--- a/keyboards/mnk75/keymaps/default/keymap.c
+++ b/keyboards/monokei/mnk75/keymaps/default/keymap.c
diff --git a/keyboards/mnk75/keymaps/default/readme.md b/keyboards/monokei/mnk75/keymaps/default/readme.md
index 934ada1fef..934ada1fef 100755
--- a/keyboards/mnk75/keymaps/default/readme.md
+++ b/keyboards/monokei/mnk75/keymaps/default/readme.md
diff --git a/keyboards/mnk75/keymaps/via/keymap.c b/keyboards/monokei/mnk75/keymaps/via/keymap.c
index 5ef3086971..5ef3086971 100644
--- a/keyboards/mnk75/keymaps/via/keymap.c
+++ b/keyboards/monokei/mnk75/keymaps/via/keymap.c
diff --git a/keyboards/mnk75/keymaps/via/readme.md b/keyboards/monokei/mnk75/keymaps/via/readme.md
index 3cac4633fe..3cac4633fe 100755
--- a/keyboards/mnk75/keymaps/via/readme.md
+++ b/keyboards/monokei/mnk75/keymaps/via/readme.md
diff --git a/keyboards/pw88/keymaps/via/rules.mk b/keyboards/monokei/mnk75/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644..100755
--- a/keyboards/pw88/keymaps/via/rules.mk
+++ b/keyboards/monokei/mnk75/keymaps/via/rules.mk
diff --git a/keyboards/mnk75/matrix_diagram.md b/keyboards/monokei/mnk75/matrix_diagram.md
index 3d06d921cf..3d06d921cf 100644
--- a/keyboards/mnk75/matrix_diagram.md
+++ b/keyboards/monokei/mnk75/matrix_diagram.md
diff --git a/keyboards/monokei/mnk75/readme.md b/keyboards/monokei/mnk75/readme.md
new file mode 100755
index 0000000000..4e34f5257f
--- /dev/null
+++ b/keyboards/monokei/mnk75/readme.md
@@ -0,0 +1,32 @@
+# MNK75
+
+This is a 75% layout PCB. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A 75% keyboard with STM32F072CB
+* Hardware Availability: https://monokei.co/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make monokei/mnk75: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 monokei/mnk75:<keymap>:flash`)
diff --git a/keyboards/mnk75/rules.mk b/keyboards/monokei/mnk75/rules.mk
index 50f3a3d151..50f3a3d151 100644
--- a/keyboards/mnk75/rules.mk
+++ b/keyboards/monokei/mnk75/rules.mk
diff --git a/keyboards/monsgeek/m1/config.h b/keyboards/monsgeek/m1/config.h
index 3963f1fbae..4aa6012330 100644
--- a/keyboards/monsgeek/m1/config.h
+++ b/keyboards/monsgeek/m1/config.h
@@ -35,15 +35,8 @@
/* I2C Config for LED Driver */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
+
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define DRIVER_1_LED_TOTAL 63
-#define DRIVER_2_LED_TOTAL 21
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + 22)
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/monsgeek/m1/info.json b/keyboards/monsgeek/m1/info.json
index 23d3d714c6..5d5d030214 100644
--- a/keyboards/monsgeek/m1/info.json
+++ b/keyboards/monsgeek/m1/info.json
@@ -178,7 +178,9 @@
{ "flags": 2, "x":224, "y":51},
{ "flags": 2, "x":224, "y":57},
{ "flags": 2, "x":224, "y":64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT_all": {
diff --git a/keyboards/monsgeek/m1/m1.c b/keyboards/monsgeek/m1/m1.c
index b85adbc0bf..a0375b2c0f 100644
--- a/keyboards/monsgeek/m1/m1.c
+++ b/keyboards/monsgeek/m1/m1.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/monsgeek/m3/config.h b/keyboards/monsgeek/m3/config.h
index 02c0fc6abc..ba77115d40 100644
--- a/keyboards/monsgeek/m3/config.h
+++ b/keyboards/monsgeek/m3/config.h
@@ -37,12 +37,8 @@
/* I2C Config for LED Driver */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
+
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define RGB_MATRIX_LED_COUNT 87
-
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/monsgeek/m3/info.json b/keyboards/monsgeek/m3/info.json
index df99a6a22c..09ce11c447 100644
--- a/keyboards/monsgeek/m3/info.json
+++ b/keyboards/monsgeek/m3/info.json
@@ -152,7 +152,8 @@
{ "flags": 4, "matrix": [5, 14], "x":196, "y": 64},
{ "flags": 4, "matrix": [5, 15], "x":210, "y": 64},
{ "flags": 4, "matrix": [5, 16], "x":224, "y": 64}
- ]
+ ],
+ "sleep": true
},
"community_layouts": ["tkl_ansi"],
"layouts": {
diff --git a/keyboards/monsgeek/m3/m3.c b/keyboards/monsgeek/m3/m3.c
index b7e197e6ac..2bdba9fa31 100644
--- a/keyboards/monsgeek/m3/m3.c
+++ b/keyboards/monsgeek/m3/m3.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/monsgeek/m5/config.h b/keyboards/monsgeek/m5/config.h
index 20c69b34f1..d18d1fdacd 100644
--- a/keyboards/monsgeek/m5/config.h
+++ b/keyboards/monsgeek/m5/config.h
@@ -36,14 +36,9 @@
/* I2C Config for LED Driver */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
+
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
#define I2C1_SCL_PAL_MODE 4
-#define RGB_MATRIX_LED_COUNT 108
-
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/monsgeek/m5/info.json b/keyboards/monsgeek/m5/info.json
index e4ecba91ce..77d474d5db 100644
--- a/keyboards/monsgeek/m5/info.json
+++ b/keyboards/monsgeek/m5/info.json
@@ -176,7 +176,9 @@
{ "flags": 4, "matrix": [5, 16], "x": 176, "y": 64 },
{ "flags": 4, "matrix": [5, 18], "x": 199, "y": 64 },
{ "flags": 4, "matrix": [5, 19], "x": 214, "y": 64 }
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/monsgeek/m5/m5.c b/keyboards/monsgeek/m5/m5.c
index 83dd4b6b79..2e244542ef 100644
--- a/keyboards/monsgeek/m5/m5.c
+++ b/keyboards/monsgeek/m5/m5.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/monsgeek/m6/config.h b/keyboards/monsgeek/m6/config.h
index f01b8abb68..3586c2cb46 100644
--- a/keyboards/monsgeek/m6/config.h
+++ b/keyboards/monsgeek/m6/config.h
@@ -33,14 +33,9 @@
/* I2C Config for LED Driver */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
+
#define I2C1_SCL_PAL_MODE 4
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
-#define RGB_MATRIX_LED_COUNT 92
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_TRIGGER_ON_KEYDOWN
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/monsgeek/m6/info.json b/keyboards/monsgeek/m6/info.json
index 3ec89cc497..7931d0d122 100644
--- a/keyboards/monsgeek/m6/info.json
+++ b/keyboards/monsgeek/m6/info.json
@@ -157,7 +157,9 @@
{ "flags": 2, "x":224, "y":51},
{ "flags": 2, "x":224, "y":57},
{ "flags": 2, "x":224, "y":64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true,
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/monsgeek/m6/m6.c b/keyboards/monsgeek/m6/m6.c
index dc20a9916f..3d0a60eb0d 100644
--- a/keyboards/monsgeek/m6/m6.c
+++ b/keyboards/monsgeek/m6/m6.c
@@ -17,7 +17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/monstargear/xo87/rgb/config.h b/keyboards/monstargear/xo87/rgb/config.h
index 770c20f019..e32abb6630 100644
--- a/keyboards/monstargear/xo87/rgb/config.h
+++ b/keyboards/monstargear/xo87/rgb/config.h
@@ -16,60 +16,5 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 110
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 // limits maximum brightness of LEDs to 100 out of 255.
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/monstargear/xo87/rgb/info.json b/keyboards/monstargear/xo87/rgb/info.json
index 96b0319945..c96111b0f2 100644
--- a/keyboards/monstargear/xo87/rgb/info.json
+++ b/keyboards/monstargear/xo87/rgb/info.json
@@ -12,7 +12,54 @@
"pin": "D7"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 100,
+ "sleep": true
},
"rgblight": {
"max_brightness": 100
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/monstargear/xo87/solderable/solderable.h b/keyboards/monstargear/xo87/solderable/solderable.h
index 2758a3a3ff..70e8a6c8d5 100644
--- a/keyboards/monstargear/xo87/solderable/solderable.h
+++ b/keyboards/monstargear/xo87/solderable/solderable.h
@@ -43,11 +43,11 @@ typedef struct{
rgb_;
#define colorAGSize 10
-#define colorBGSize RGBLED_NUM-10
+#define colorBGSize RGBLIGHT_LED_COUNT-10
typedef struct{
rgb_ colorAG[colorAGSize];
- rgb_ colorBG[RGBLED_NUM-10];
+ rgb_ colorBG[RGBLIGHT_LED_COUNT-10];
}
backLedRgbG_;
diff --git a/keyboards/montsinger/rebound/rev1/rules.mk b/keyboards/montsinger/rebound/rev1/rules.mk
index fc1633fe63..309e55c9f4 100644
--- a/keyboards/montsinger/rebound/rev1/rules.mk
+++ b/keyboards/montsinger/rebound/rev1/rules.mk
@@ -10,5 +10,3 @@ 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
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/montsinger/rebound/rev2/rules.mk b/keyboards/montsinger/rebound/rev2/rules.mk
index 02bef78ce3..f957b56f25 100644
--- a/keyboards/montsinger/rebound/rev2/rules.mk
+++ b/keyboards/montsinger/rebound/rev2/rules.mk
@@ -11,5 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/montsinger/rebound/rev3/rules.mk b/keyboards/montsinger/rebound/rev3/rules.mk
index 02bef78ce3..f957b56f25 100644
--- a/keyboards/montsinger/rebound/rev3/rules.mk
+++ b/keyboards/montsinger/rebound/rev3/rules.mk
@@ -11,5 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/montsinger/rebound/rev4/rules.mk b/keyboards/montsinger/rebound/rev4/rules.mk
index f52c1697f7..0fc2e835d7 100644
--- a/keyboards/montsinger/rebound/rev4/rules.mk
+++ b/keyboards/montsinger/rebound/rev4/rules.mk
@@ -12,8 +12,6 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
-LAYOUTS_HAS_RGB = no
-
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = yes
AUDIO_SUPPORTED = no
diff --git a/keyboards/moonlander/config.h b/keyboards/moonlander/config.h
deleted file mode 100644
index 3ceb45f54d..0000000000
--- a/keyboards/moonlander/config.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
- * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
- * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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
-
-
-#define WEBUSB_LANDING_PAGE_URL u8"configure.ergodox-ez.com"
-
-/* key matrix size */
-#define MATRIX_ROWS 12
-#define MATRIX_COLS 7
-
-/* PCB default pin-out */
-// #define MATRIX_ROW_PINS { B10, B11, B12, B13, B14, B15 }
-// #define MATRIX_COL_PINS { A0, A1, A2, A3, A6, A7, B0 }
-
-// #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 }
-// #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 }
-
-// #define MCP23_LED_R GPB7
-// #define MCP23_LED_G GPB6
-// #define MCP23_LED_B GPA7
-
-#define EEPROM_I2C_24LC128
-
-// Not needed, is default address:
-// #define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100000
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-/* 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
-
-#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-
-#define DRIVER_1_LED_TOTAL 36
-#define DRIVER_2_LED_TOTAL 36
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define RGB_MATRIX_CENTER { 120, 36 }
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 175
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-// #define RGB_MATRIX_LED_PROCESS_LIMIT 5
-// #define RGB_MATRIX_LED_FLUSH_LIMIT 26
-
-#define MOUSEKEY_INTERVAL 20
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_TIME_TO_MAX 60
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_WHEEL_DELAY 400
-#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL
-#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
-#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
-
-#define MUSIC_MAP
-
-#define FIRMWARE_VERSION_SIZE 17
-#define DYNAMIC_KEYMAP_EEPROM_ADDR (EECONFIG_SIZE + FIRMWARE_VERSION_SIZE)
-
-#define AUDIO_PIN A5
-#define AUDIO_PIN_ALT A4
-#define AUDIO_PIN_ALT_AS_NEGATIVE
diff --git a/keyboards/moonlander/info.json b/keyboards/moonlander/info.json
deleted file mode 100644
index 1a7982ed57..0000000000
--- a/keyboards/moonlander/info.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "keyboard_name": "Moonlander Mark I",
- "manufacturer": "ZSA Technology Labs",
- "url": "zsa.io/moonlander",
- "maintainer": "ZSA via Drashna",
- "usb": {
- "vid": "0x3297",
- "pid": "0x1969",
- "device_version": "0.0.1"
- },
- "dynamic_keymap": {
- "layer_count": 8
- },
- "eeprom": {
- "driver": "i2c"
- },
- "rgb_matrix": {
- "driver": "is31fl3731"
- },
- "processor": "STM32F303",
- "bootloader": "stm32-dfu",
- "layout_aliases": {
- "LAYOUT_moonlander": "LAYOUT"
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.375},
- {"matrix": [0, 1], "x": 1, "y": 0.375},
- {"matrix": [0, 2], "x": 2, "y": 0.125},
- {"matrix": [0, 3], "x": 3, "y": 0},
- {"matrix": [0, 4], "x": 4, "y": 0.125},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
-
- {"matrix": [6, 0], "x": 10, "y": 0.25},
- {"matrix": [6, 1], "x": 11, "y": 0.25},
- {"matrix": [6, 2], "x": 12, "y": 0.125},
- {"matrix": [6, 3], "x": 13, "y": 0},
- {"matrix": [6, 4], "x": 14, "y": 0.125},
- {"matrix": [6, 5], "x": 15, "y": 0.375},
- {"matrix": [6, 6], "x": 16, "y": 0.375},
-
- {"matrix": [1, 0], "x": 0, "y": 1.375},
- {"matrix": [1, 1], "x": 1, "y": 1.375},
- {"matrix": [1, 2], "x": 2, "y": 1.125},
- {"matrix": [1, 3], "x": 3, "y": 1},
- {"matrix": [1, 4], "x": 4, "y": 1.125},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
-
- {"matrix": [7, 0], "x": 10, "y": 1.25},
- {"matrix": [7, 1], "x": 11, "y": 1.25},
- {"matrix": [7, 2], "x": 12, "y": 1.125},
- {"matrix": [7, 3], "x": 13, "y": 1},
- {"matrix": [7, 4], "x": 14, "y": 1.125},
- {"matrix": [7, 5], "x": 15, "y": 1.375},
- {"matrix": [7, 6], "x": 16, "y": 1.375},
-
- {"matrix": [2, 0], "x": 0, "y": 2.375},
- {"matrix": [2, 1], "x": 1, "y": 2.375},
- {"matrix": [2, 2], "x": 2, "y": 2.125},
- {"matrix": [2, 3], "x": 3, "y": 2},
- {"matrix": [2, 4], "x": 4, "y": 2.125},
- {"matrix": [2, 5], "x": 5, "y": 2.25},
- {"matrix": [2, 6], "x": 6, "y": 2.25},
-
- {"matrix": [8, 0], "x": 10, "y": 2.25},
- {"matrix": [8, 1], "x": 11, "y": 2.25},
- {"matrix": [8, 2], "x": 12, "y": 2.125},
- {"matrix": [8, 3], "x": 13, "y": 2},
- {"matrix": [8, 4], "x": 14, "y": 2.125},
- {"matrix": [8, 5], "x": 15, "y": 2.375},
- {"matrix": [8, 6], "x": 16, "y": 2.375},
-
- {"matrix": [3, 0], "x": 0, "y": 3.375},
- {"matrix": [3, 1], "x": 1, "y": 3.375},
- {"matrix": [3, 2], "x": 2, "y": 3.125},
- {"matrix": [3, 3], "x": 3, "y": 3},
- {"matrix": [3, 4], "x": 4, "y": 3.125},
- {"matrix": [3, 5], "x": 5, "y": 3.25},
-
- {"matrix": [9, 1], "x": 11, "y": 3.25},
- {"matrix": [9, 2], "x": 12, "y": 3.125},
- {"matrix": [9, 3], "x": 13, "y": 3},
- {"matrix": [9, 4], "x": 14, "y": 3.125},
- {"matrix": [9, 5], "x": 15, "y": 3.375},
- {"matrix": [9, 6], "x": 16, "y": 3.375},
-
- {"matrix": [4, 0], "x": 0, "y": 4.375},
- {"matrix": [4, 1], "x": 1, "y": 4.375},
- {"matrix": [4, 2], "x": 2, "y": 4.125},
- {"matrix": [4, 3], "x": 3, "y": 4},
- {"matrix": [4, 4], "x": 4, "y": 4.125},
- {"matrix": [5, 3], "x": 5, "y": 4.5, "w": 2},
-
- {"matrix": [11, 3], "x": 10, "y": 4.5, "w": 2},
- {"matrix": [10, 2], "x": 12, "y": 4.125},
- {"matrix": [10, 3], "x": 13, "y": 4},
- {"matrix": [10, 4], "x": 14, "y": 4.125},
- {"matrix": [10, 5], "x": 15, "y": 4.375},
- {"matrix": [10, 6], "x": 16, "y": 4.375},
-
- {"matrix": [5, 0], "x": 5, "y": 5.5, "h": 1.5},
- {"matrix": [5, 1], "x": 6, "y": 5.5, "h": 1.5},
- {"matrix": [5, 2], "x": 7, "y": 5.5, "h": 1.5},
-
- {"matrix": [11, 4], "x": 9, "y": 5.5, "h": 1.5},
- {"matrix": [11, 5], "x": 10, "y": 5.5, "h": 1.5},
- {"matrix": [11, 6], "x": 11, "y": 5.5, "h": 1.5}
- ]
- }
- }
-}
diff --git a/keyboards/moonlander/keymaps/shahn-neo/config.h b/keyboards/moonlander/keymaps/shahn-neo/config.h
deleted file mode 100644
index 1fbac32517..0000000000
--- a/keyboards/moonlander/keymaps/shahn-neo/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 Sönke Hahn <SoenkeHahn@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
-
-#define ORYX_CONFIGURATOR
diff --git a/keyboards/moonlander/keymaps/shahn-neo/keymap.c b/keyboards/moonlander/keymaps/shahn-neo/keymap.c
deleted file mode 100644
index fc174a62fe..0000000000
--- a/keyboards/moonlander/keymaps/shahn-neo/keymap.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright 2020 Sönke Hahn <SoenkeHahn@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/>.
- */
-
-#include QMK_KEYBOARD_H
-#include "version.h"
-
-enum layers {
- BASE, // default layer
- L_3,
- L_4,
-};
-
-enum custom_keycodes {
- a_umlaut = SAFE_RANGE,
- o_umlaut,
- u_umlaut,
- eszett,
-};
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [BASE] = LAYOUT_moonlander(
- XXXXXXX, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , XXXXXXX, XXXXXXX, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , XXXXXXX,
- KC_TAB , KC_X , KC_V , KC_L , KC_C , KC_W , XXXXXXX, XXXXXXX, KC_K , KC_H , KC_G , KC_F , KC_Q , eszett ,
- XXXXXXX, KC_U , KC_I , KC_A , KC_E , KC_O , XXXXXXX, XXXXXXX, KC_S , KC_N , KC_R , KC_T , KC_D , KC_Y ,
- XXXXXXX, u_umlaut, o_umlaut, a_umlaut, KC_P , KC_Z , KC_B , KC_M , KC_COMM, KC_DOT , KC_J , XXXXXXX,
- XXXXXXX, XXXXXXX , XXXXXXX , KC_LGUI , MO(L_4), XXXXXXX, XXXXXXX, MO(L_4), KC_RGUI, XXXXXXX, XXXXXXX, XXXXXXX,
- KC_LCTL, KC_LSFT, MO(L_3), MO(L_3), KC_RSFT, KC_SPC
- ),
-
- [L_3] = LAYOUT_moonlander(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, KC_UNDS, KC_LBRC, KC_RBRC, KC_CIRC, XXXXXXX, XXXXXXX, KC_EXLM, KC_LABK, KC_RABK, KC_EQL , KC_AMPR, XXXXXXX,
- XXXXXXX, KC_BSLS, KC_SLSH, KC_LCBR, KC_RCBR, KC_ASTR, XXXXXXX, XXXXXXX, KC_QUES, KC_LPRN, KC_RPRN, KC_MINS, KC_COLN, KC_AT ,
- XXXXXXX, KC_HASH, KC_DLR , KC_PIPE, KC_TILD, KC_GRV , KC_PLUS, KC_PERC, KC_DQUO, KC_QUOT, KC_SCLN, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
- ),
-
- [L_4] = LAYOUT_moonlander(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, KC_PGUP, KC_BSPC, KC_UP , KC_DEL , KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, KC_7 , KC_8 , KC_9 , XXXXXXX, XXXXXXX,
- XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END , XXXXXXX, XXXXXXX, XXXXXXX, KC_4 , KC_5 , KC_6 , XXXXXXX, XXXXXXX,
- XXXXXXX, KC_ESC , KC_TAB , XXXXXXX, KC_ENT , XXXXXXX, XXXXXXX, KC_1 , KC_2 , KC_3 , XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_0
- ),
-};
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- ML_LED_1(false);
- ML_LED_2(false);
- ML_LED_3(false);
- ML_LED_4(false);
- ML_LED_5(false);
- ML_LED_6(false);
-
- switch (get_highest_layer(state)) {
- case 1:
- ML_LED_1(1);
- ML_LED_4(1);
- break;
- case 2:
- ML_LED_2(1);
- ML_LED_5(1);
- break;
- case 3:
- ML_LED_3(1);
- break;
- case 4:
- ML_LED_4(1);
- break;
- case 5:
- ML_LED_5(1);
- break;
- case 6:
- ML_LED_6(1);
- break;
- default:
- break;
- }
-
- return state;
-}
-
-// only works after executing
-// $ xmodmap -e "keycode 138 = Multi_key"
-#define compose_key SS_TAP(X_MENU)
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- switch (keycode) {
- case a_umlaut:
- SEND_STRING(compose_key "\"a");
- return false;
- case o_umlaut:
- SEND_STRING(compose_key "\"o");
- return false;
- case u_umlaut:
- SEND_STRING(compose_key "\"u");
- return false;
- case eszett:
- SEND_STRING(compose_key "ss");
- return false;
- }
- }
- return true;
-}
diff --git a/keyboards/moonlander/keymaps/shahn-neo/readme.md b/keyboards/moonlander/keymaps/shahn-neo/readme.md
deleted file mode 100644
index d2c9c88746..0000000000
--- a/keyboards/moonlander/keymaps/shahn-neo/readme.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Sönke Hahn's Neo layout for the Moonlander keyboard
-
-This is my personal keyboard layout based on the Neo keyboard layout:
-https://en.wikipedia.org/wiki/Neo_(keyboard_layout)
-This layout is not meant as a general layout for other people using the
-Neo keyboard layout. It's very specific to my personal needs.
-It still might be useful as inspiration to other people who want to
-create a Neo layout.
-
-Some notes:
-
-- I've put the ctrl key, the shift keys and the modifiers to switch to
- layer 4 in the middle to be operated by the thumbs. I wanted to avoid
- having to use my pinkies on the outer rows of the keyboard.
-- The umlauts (äöü) and the ß only work on linux when configuring the
- compose key properly. See `compose_key` in `./keymap.c`.
diff --git a/keyboards/moonlander/matrix.c b/keyboards/moonlander/matrix.c
deleted file mode 100644
index 36017fcd12..0000000000
--- a/keyboards/moonlander/matrix.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
- * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
- * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
-*/
-
-#include "moonlander.h"
-#include "i2c_master.h"
-
-/*
-#define MATRIX_ROW_PINS { B10, B11, B12, B13, B14, B15 } outputs
-#define MATRIX_COL_PINS { A0, A1, A2, A3, A6, A7, B0 } inputs
- */
-/* matrix state(1:on, 0:off) */
-extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
-extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
-static matrix_row_t raw_matrix_right[MATRIX_COLS];
-
-#define ROWS_PER_HAND (MATRIX_ROWS / 2)
-#ifndef MOONLANDER_I2C_TIMEOUT
-# define MOONLANDER_I2C_TIMEOUT 100
-#endif
-
-extern bool mcp23018_leds[3];
-extern bool is_launching;
-
-bool mcp23018_initd = false;
-static uint8_t mcp23018_reset_loop;
-
-uint8_t mcp23018_tx[3];
-uint8_t mcp23018_rx[1];
-
-void mcp23018_init(void) {
- i2c_init();
-
- // #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 } outputs
- // #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 } inputs
-
- mcp23018_tx[0] = 0x00; // IODIRA
- mcp23018_tx[1] = 0b00000000; // A is output
- mcp23018_tx[2] = 0b00111111; // B is inputs
-
- if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) {
- dprintf("error hori\n");
- } else {
- mcp23018_tx[0] = 0x0C; // GPPUA
- mcp23018_tx[1] = 0b10000000; // A is not pulled-up
- mcp23018_tx[2] = 0b11111111; // B is pulled-up
-
- if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) {
- dprintf("error hori\n");
- } else {
- mcp23018_initd = is_launching = true;
- }
- }
-}
-
-void matrix_init_custom(void) {
- dprintf("matrix init\n");
- // debug_matrix = true;
- // outputs
- setPinOutput(B10);
- setPinOutput(B11);
- setPinOutput(B12);
- setPinOutput(B13);
- setPinOutput(B14);
- setPinOutput(B15);
-
- // inputs
- setPinInputLow(A0);
- setPinInputLow(A1);
- setPinInputLow(A2);
- setPinInputLow(A3);
- setPinInputLow(A6);
- setPinInputLow(A7);
- setPinInputLow(B0);
-
- mcp23018_init();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- bool changed = false;
-
- // Try to re-init right side
- if (!mcp23018_initd) {
- if (++mcp23018_reset_loop == 0) {
- // if (++mcp23018_reset_loop >= 1300) {
- // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
- // this will be approx bit more frequent than once per second
- print("trying to reset mcp23018\n");
- mcp23018_init();
- if (!mcp23018_initd) {
- print("right side not responding\n");
- } else {
- print("right side attached\n");
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init();
-#endif
- }
- }
- }
-
- matrix_row_t data = 0;
- // actual matrix
- for (uint8_t row = 0; row <= ROWS_PER_HAND; row++) {
- // strobe row
- switch (row) {
- case 0: writePinHigh(B10); break;
- case 1: writePinHigh(B11); break;
- case 2: writePinHigh(B12); break;
- case 3: writePinHigh(B13); break;
- case 4: writePinHigh(B14); break;
- case 5: writePinHigh(B15); break;
- case 6: break; // Left hand has 6 rows
- }
-
- // right side
- if (mcp23018_initd) {
- // #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 } outputs
- // #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 } inputs
-
- // select row
- mcp23018_tx[0] = 0x12; // GPIOA
- mcp23018_tx[1] = (0b01111111 & ~(1 << (row))) | ((uint8_t)!mcp23018_leds[2] << 7); // activate row
- mcp23018_tx[2] = ((uint8_t)!mcp23018_leds[1] << 6) | ((uint8_t)!mcp23018_leds[0] << 7); // activate row
-
- if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) {
- dprintf("error hori\n");
- mcp23018_initd = false;
- }
-
- // read col
-
- mcp23018_tx[0] = 0x13; // GPIOB
- if (MSG_OK != i2c_readReg(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx[0], &mcp23018_rx[0], 1, MOONLANDER_I2C_TIMEOUT)) {
- dprintf("error vert\n");
- mcp23018_initd = false;
- }
-
- data = ~(mcp23018_rx[0] & 0b00111111);
- // data = 0x01;
- } else {
- data = 0;
- }
-
- if (raw_matrix_right[row] != data) {
- raw_matrix_right[row] = data;
- changed = true;
- }
-
-
- // left side
- if (row < ROWS_PER_HAND) {
- // i2c comm incur enough wait time
- if (!mcp23018_initd) {
- // need wait to settle pin state
- matrix_io_delay();
- }
- // read col data
- data = (
- (readPin(A0) << 0 ) |
- (readPin(A1) << 1 ) |
- (readPin(A2) << 2 ) |
- (readPin(A3) << 3 ) |
- (readPin(A6) << 4 ) |
- (readPin(A7) << 5 ) |
- (readPin(B0) << 6 )
- );
- // unstrobe row
- switch (row) {
- case 0: writePinLow(B10); break;
- case 1: writePinLow(B11); break;
- case 2: writePinLow(B12); break;
- case 3: writePinLow(B13); break;
- case 4: writePinLow(B14); break;
- case 5: writePinLow(B15); break;
- case 6: break;
- }
-
- if (current_matrix[row] != data) {
- current_matrix[row] = data;
- changed = true;
- }
- }
- }
- for (uint8_t row = 0; row < ROWS_PER_HAND; row++) {
- current_matrix[11 - row] = 0;
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- current_matrix[11 - row] |= ((raw_matrix_right[6 - col] & (1 << row) ? 1 : 0) << col);
- }
- }
- return changed;
-}
-
-// DO NOT REMOVE
-// Needed for proper wake/sleep
-void matrix_power_up(void) {
- bool temp_launching = is_launching;
-
- matrix_init_custom();
-
- is_launching = temp_launching;
- if (!is_launching) {
- ML_LED_1(false);
- ML_LED_2(false);
- ML_LED_3(false);
- ML_LED_4(false);
- ML_LED_5(false);
- ML_LED_6(false);
- }
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- }
-
-}
-
-bool is_transport_connected(void) {
- return mcp23018_initd;
-} \ No newline at end of file
diff --git a/keyboards/moonlander/moonlander.c b/keyboards/moonlander/moonlander.c
deleted file mode 100644
index 5b52ba7031..0000000000
--- a/keyboards/moonlander/moonlander.c
+++ /dev/null
@@ -1,469 +0,0 @@
-/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
- * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
- * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
-*/
-
-#include "moonlander.h"
-
-keyboard_config_t keyboard_config;
-
-bool mcp23018_leds[3] = {0, 0, 0};
-bool is_launching = false;
-
-#ifdef DYNAMIC_MACRO_ENABLE
-static bool is_dynamic_recording = false;
-
-void dynamic_macro_record_start_user(int8_t direction) { is_dynamic_recording = true; }
-
-void dynamic_macro_record_end_user(int8_t direction) {
- is_dynamic_recording = false;
- ML_LED_3(false);
-}
-#endif
-
-void moonlander_led_task(void) {
- if (is_launching) {
- ML_LED_1(false);
- ML_LED_2(false);
- ML_LED_3(false);
- ML_LED_4(false);
- ML_LED_5(false);
- ML_LED_6(false);
-
- ML_LED_1(true);
- wait_ms(250);
- ML_LED_2(true);
- wait_ms(250);
- ML_LED_3(true);
- wait_ms(250);
- ML_LED_4(true);
- wait_ms(250);
- ML_LED_5(true);
- wait_ms(250);
- ML_LED_6(true);
- wait_ms(250);
- ML_LED_1(false);
- wait_ms(250);
- ML_LED_2(false);
- wait_ms(250);
- ML_LED_3(false);
- wait_ms(250);
- ML_LED_4(false);
- wait_ms(250);
- ML_LED_5(false);
- wait_ms(250);
- ML_LED_6(false);
- wait_ms(250);
- is_launching = false;
- layer_state_set_kb(layer_state);
- }
-#ifdef DYNAMIC_MACRO_ENABLE
- else if (is_dynamic_recording) {
- ML_LED_3(true);
- wait_ms(100);
- ML_LED_3(false);
- wait_ms(155);
- }
-#endif
-#if !defined(MOONLANDER_USER_LEDS)
- else {
- layer_state_set_kb(layer_state);
- }
-#endif
-}
-
-static THD_WORKING_AREA(waLEDThread, 128);
-static THD_FUNCTION(LEDThread, arg) {
- (void)arg;
- chRegSetThreadName("LEDThread");
- while (true) {
- moonlander_led_task();
- }
-}
-
-void keyboard_pre_init_kb(void) {
- setPinOutput(B5);
- setPinOutput(B4);
- setPinOutput(B3);
-
- writePinLow(B5);
- writePinLow(B4);
- writePinLow(B3);
-
- chThdCreateStatic(waLEDThread, sizeof(waLEDThread), NORMALPRIO - 16, LEDThread, NULL);
-
- /* the array is initialized to 0, no need to re-set it here */
- // mcp23018_leds[0] = 0; // blue
- // mcp23018_leds[1] = 0; // green
- // mcp23018_leds[2] = 0; // red
-
- keyboard_pre_init_user();
-}
-
-#if !defined(MOONLANDER_USER_LEDS)
-layer_state_t layer_state_set_kb(layer_state_t state) {
- state = layer_state_set_user(state);
- if (is_launching || !keyboard_config.led_level) return state;
- bool LED_1 = false;
- bool LED_2 = false;
- bool LED_3 = false;
- bool LED_4 = false;
- bool LED_5 = false;
-#if !defined(CAPS_LOCK_STATUS)
- bool LED_6 = false;
-#endif
-
- uint8_t layer = get_highest_layer(state);
- switch (layer) {
- case 1:
- LED_1 = true;
- LED_4 = true;
- break;
- case 2:
- LED_2 = true;
- LED_5 = true;
- break;
- case 3:
- LED_3 = true;
-#if !defined(CAPS_LOCK_STATUS)
- LED_6 = true;
-#endif
- break;
- case 4:
- LED_4 = true;
- break;
- case 5:
- LED_5 = true;
- break;
- case 6:
-#if !defined(CAPS_LOCK_STATUS)
- LED_6 = true;
-#endif
- break;
- default:
- break;
- }
-
- ML_LED_1(LED_1);
- ML_LED_2(LED_2);
- ML_LED_3(LED_3);
- ML_LED_4(LED_4);
- ML_LED_5(LED_5);
-#if !defined(CAPS_LOCK_STATUS)
- ML_LED_6(LED_6);
-#endif
-
- return state;
-}
-#endif
-
-#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, C3_2, C1_1, C4_2}, // 1
- {0, C2_2, C1_2, C4_3},
- {0, C2_3, C1_3, C3_3},
- {0, C2_4, C1_4, C3_4},
- {0, C2_5, C1_5, C3_5},
- {0, C2_6, C1_6, C3_6},
- {0, C2_7, C1_7, C3_7},
- {0, C2_8, C1_8, C3_8},
- {0, C3_1, C2_1, C4_1},
-
- {0, C7_8, C6_8, C8_8}, // 10
- {0, C7_7, C6_7, C9_8},
- {0, C8_7, C6_6, C9_7},
- {0, C8_6, C7_6, C9_6},
- {0, C8_5, C7_5, C9_5},
- {0, C8_4, C7_4, C9_4},
- {0, C8_3, C7_3, C9_3},
- {0, C8_2, C7_2, C9_2},
- {0, C8_1, C7_1, C9_1},
-
- {0, C3_10, C1_9, C4_10}, // 19
- {0, C2_10, C1_10, C4_11},
- {0, C2_11, C1_11, C3_11},
- {0, C2_12, C1_12, C3_12},
- {0, C2_13, C1_13, C3_13},
- {0, C2_14, C1_14, C3_14},
- {0, C2_15, C1_15, C3_15},
- {0, C2_16, C1_16, C3_16},
- {0, C3_9, C2_9, C4_9},
-
- {0, C7_16, C6_16, C8_16}, // 28
- {0, C7_15, C6_15, C9_16},
- {0, C8_15, C6_14, C9_15},
- {0, C8_10, C7_10, C9_10},
- {0, C8_9, C7_9, C9_9},
- {0, C8_11, C7_11, C9_11},
- {0, C8_12, C7_12, C9_12},
- {0, C8_13, C7_13, C9_13},
- {0, C8_14, C7_14, C9_14},
-
- {1, C3_2, C1_1, C4_2}, // 1
- {1, C2_2, C1_2, C4_3},
- {1, C2_3, C1_3, C3_3},
- {1, C2_4, C1_4, C3_4},
- {1, C2_5, C1_5, C3_5},
- {1, C2_6, C1_6, C3_6},
- {1, C2_7, C1_7, C3_7},
- {1, C2_8, C1_8, C3_8},
- {1, C3_1, C2_1, C4_1},
-
- {1, C7_8, C6_8, C8_8}, // 10
- {1, C7_7, C6_7, C9_8},
- {1, C8_7, C6_6, C9_7},
- {1, C8_6, C7_6, C9_6},
- {1, C8_5, C7_5, C9_5},
- {1, C8_4, C7_4, C9_4},
- {1, C8_3, C7_3, C9_3},
- {1, C8_2, C7_2, C9_2},
- {1, C8_1, C7_1, C9_1},
-
- {1, C3_10, C1_9, C4_10}, // 19
- {1, C2_10, C1_10, C4_11},
- {1, C2_11, C1_11, C3_11},
- {1, C2_12, C1_12, C3_12},
- {1, C2_13, C1_13, C3_13},
- {1, C2_14, C1_14, C3_14},
- {1, C2_15, C1_15, C3_15},
- {1, C2_16, C1_16, C3_16},
- {1, C3_9, C2_9, C4_9},
-
- {1, C7_16, C6_16, C8_16}, // 28
- {1, C7_15, C6_15, C9_16},
- {1, C8_15, C6_14, C9_15},
- {1, C8_10, C7_10, C9_10},
- {1, C8_9, C7_9, C9_9},
- {1, C8_11, C7_11, C9_11},
- {1, C8_12, C7_12, C9_12},
- {1, C8_13, C7_13, C9_13},
- {1, C8_14, C7_14, C9_14},
-
-};
-
-led_config_t g_led_config = { {
- { 0, 5, 10, 15, 20, 25, 29 },
- { 1, 6, 11, 16, 21, 26, 30 },
- { 2, 7, 12, 17, 22, 27, 31 },
- { 3, 8, 13, 18, 23, 28, NO_LED },
- { 4, 9, 14, 19, 24, NO_LED, NO_LED },
- { 32, 33, 34, 35, NO_LED, NO_LED, NO_LED },
- { 65, 61, 56, 51, 46, 41, 36 },
- { 66, 62, 57, 52, 47, 42, 37 },
- { 67, 63, 58, 53, 48, 43, 38 },
- { NO_LED, 64, 59, 54, 49, 44, 39 },
- { NO_LED, NO_LED, 60, 55, 50, 45, 40 },
- { NO_LED, NO_LED, NO_LED, 71, 70, 69, 68 }
-}, {
- { 0, 4}, { 0, 20}, { 0, 36}, { 0, 52}, { 0, 68},
- { 16, 3}, { 16, 19}, { 16, 35}, { 16, 51}, { 16, 67},
- { 32, 1}, { 32, 17}, { 32, 33}, { 32, 49}, { 32, 65},
- { 48, 0}, { 48, 16}, { 48, 32}, { 48, 48}, { 48, 64},
- { 64, 1}, { 64, 17}, { 64, 33}, { 64, 49}, { 64, 65},
- { 80, 3}, { 80, 19}, { 80, 35}, { 80, 51},
- { 96, 4}, { 96, 20}, { 96, 36},
- { 88, 69}, {100, 80}, {112, 91}, {108, 69},
-
- {240, 4}, {240, 20}, {240, 36}, {240, 52}, {240, 68},
- {224, 3}, {224, 19}, {224, 35}, {224, 51}, {224, 67},
- {208, 1}, {208, 17}, {208, 33}, {208, 49}, {208, 65},
- {192, 0}, {192, 16}, {192, 32}, {192, 48}, {192, 64},
- {176, 1}, {176, 17}, {176, 33}, {176, 49}, {176, 65},
- {160, 3}, {160, 19}, {160, 35}, {160, 51},
- {144, 4}, {144, 20}, {144, 36},
- {152, 69}, {140, 80}, {128, 91}, {132, 69}
-}, {
- 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4,
- 1, 1, 1,
- 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 1,
- 4, 4, 4, 4,
- 1, 1, 1,
- 1, 1, 1, 1
-} };
-// clang-format on
-
-#endif
-
-#ifdef AUDIO_ENABLE
-bool music_mask_kb(uint16_t keycode) {
- switch (keycode) {
- case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
- case QK_TO ... QK_TO_MAX:
- case QK_MOMENTARY ... QK_MOMENTARY_MAX:
- case QK_DEF_LAYER ... QK_DEF_LAYER_MAX:
- case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:
- case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:
- case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
- case QK_LAYER_MOD ... QK_LAYER_MOD_MAX:
- case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:
- case QK_MOD_TAP ... QK_MOD_TAP_MAX:
- case AU_ON ... AU_PREV:
- case QK_BOOT:
- case QK_CLEAR_EEPROM:
- return false;
- default:
- return music_mask_user(keycode);
- }
-}
-#endif
-
-#ifdef SWAP_HANDS_ENABLE
-// swap-hands action needs a matrix to define the swap
-// clang-format off
-const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
- /* Left hand, matrix positions */
- {{6,6}, {5,6}, {4,6}, {3,6}, {2,6}, {1,6},{0,6}},
- {{6,7}, {5,7}, {4,7}, {3,7}, {2,7}, {1,7},{0,7}},
- {{6,8}, {5,8}, {4,8}, {3,8}, {2,8}, {1,8},{0,8}},
- {{6,9}, {5,9}, {4,9}, {3,9}, {2,9}, {1,9},{0,9}},
- {{6,10},{5,10},{4,10},{3,10},{2,10},{1,10},{0,10}},
- {{6,11},{5,11},{4,11},{3,11},{2,11},{1,11},{0,11}},
- /* Right hand, matrix positions */
- {{6,0}, {5,0}, {4,0}, {3,0}, {2,0}, {1,0},{0,0}},
- {{6,1}, {5,1}, {4,1}, {3,1}, {2,1}, {1,1},{0,1}},
- {{6,2}, {5,2}, {4,2}, {3,2}, {2,2}, {1,2},{0,2}},
- {{6,3}, {5,3}, {4,3}, {3,3}, {2,3}, {1,3},{0,3}},
- {{6,4}, {5,4}, {4,4}, {3,4}, {2,4}, {1,4},{0,4}},
- {{6,5}, {5,5}, {4,5}, {3,5}, {2,5}, {1,5},{0,5}},
-};
-// clang-format on
-
-void keyboard_post_init_kb(void) {
- rgb_matrix_enable_noeeprom();
- keyboard_post_init_user();
-}
-#endif
-
-#if defined(AUDIO_ENABLE) && defined(MUSIC_MAP)
-// clang-format off
-__attribute__ ((weak))
-const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = {
- {58, 59, 60, 61, 62, 63, 64},
- {44, 45, 46, 47, 48, 49, 50},
- {30, 31, 32, 33, 34, 35, 36},
- {18, 19, 20, 21, 22, 23, 0},
- { 8, 9, 10, 11, 12, 0, 0},
- { 0, 1, 2, 3, 0, 0, 0},
- {65, 66, 67, 68, 69, 70, 71},
- {51, 52, 53, 54, 55, 56, 57},
- {37, 38, 39, 40, 41, 42, 43},
- { 0, 24, 25, 26, 27, 28, 29},
- { 0, 0, 13, 14, 15, 16, 17},
- { 0, 0, 0, 4, 5, 6, 7}
-};
-// clang-format on
-#endif
-
-#ifdef CAPS_LOCK_STATUS
-void led_update_ports(led_t led_state) {
- ML_LED_6(led_state.caps_lock);
-}
-#endif
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_user(keycode, record)) { return false; }
- switch (keycode) {
-#if !defined(MOONLANDER_USER_LEDS)
- case LED_LEVEL:
- if (record->event.pressed) {
- keyboard_config.led_level ^= 1;
- eeconfig_update_kb(keyboard_config.raw);
- if (keyboard_config.led_level) {
- layer_state_set_kb(layer_state);
- } else {
- ML_LED_1(false);
- ML_LED_2(false);
- ML_LED_3(false);
- ML_LED_4(false);
- ML_LED_5(false);
- ML_LED_6(false);
- }
- }
- break;
-#endif
-#ifdef RGB_MATRIX_ENABLE
- case TOGGLE_LAYER_COLOR:
- if (record->event.pressed) {
- keyboard_config.disable_layer_led ^= 1;
- if (keyboard_config.disable_layer_led) rgb_matrix_set_color_all(0, 0, 0);
- eeconfig_update_kb(keyboard_config.raw);
- }
- break;
- case RGB_TOG:
- if (record->event.pressed) {
- switch (rgb_matrix_get_flags()) {
- case LED_FLAG_ALL: {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- keyboard_config.rgb_matrix_enable = false;
- rgb_matrix_set_color_all(0, 0, 0);
- } break;
- default: {
- rgb_matrix_set_flags(LED_FLAG_ALL);
- keyboard_config.rgb_matrix_enable = true;
- } break;
- }
- eeconfig_update_kb(keyboard_config.raw);
- }
- return false;
-#endif
- }
- return true;
-}
-
-void matrix_init_kb(void) {
- keyboard_config.raw = eeconfig_read_kb();
-
- if (!keyboard_config.led_level && !keyboard_config.led_level_res) {
- keyboard_config.led_level = true;
- keyboard_config.led_level_res = 0b11;
- eeconfig_update_kb(keyboard_config.raw);
- }
-#ifdef RGB_MATRIX_ENABLE
- if (keyboard_config.rgb_matrix_enable) {
- rgb_matrix_set_flags(LED_FLAG_ALL);
- } else {
- rgb_matrix_set_flags(LED_FLAG_NONE);
- }
-#endif
- matrix_init_user();
-}
-
-void eeconfig_init_kb(void) { // EEPROM is getting reset!
- keyboard_config.raw = 0;
- keyboard_config.rgb_matrix_enable = true;
- keyboard_config.led_level = true;
- keyboard_config.led_level_res = 0b11;
- eeconfig_update_kb(keyboard_config.raw);
- eeconfig_init_user();
-}
diff --git a/keyboards/moonlander/readme.md b/keyboards/moonlander/readme.md
deleted file mode 100644
index 733780abde..0000000000
--- a/keyboards/moonlander/readme.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Moonlander
-
-![Moonlander](https://zsa.io/static/gallery-white-case-7a2ef555f8f7f4ce1b9030477b16e517.png)
-
-A next-gen split, ergonomic keyboard with an active left side, USB type C, integrated wrist rest, and a thumb cluster that can move.
-
-
-* Keyboard Maintainer: [drashna](https://github.com/drashna), [ZSA](https://github.com/zsa/)
-* Hardware Supported: Moonlander MK 1 (STM32F303xC)
-* Hardware Availability: [ZSA Store](https://zsa.io/moonlander/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make moonlander:default
-
-Flashing example for this keyboard:
-
- make moonlander: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).
-
-
-## Moonlander Customization
-
-### Indicator LEDs
-
-There are 6 functions for enabling and disabling the LEDs on the top of the boards. The functions are `ML_LED_1(bool)` through `ML_LED_6(bool)`, with the first LED being the left most LED on the left hand, and the sixth LED being the right most LED on the right side.
-
-By default, the Indicator LEDs are used to indicate the layer state for the keyboard. If you wish to change this (and indicate caps/num/scroll lock status instead), then define `MOONLANDER_USER_LEDS` in your `config.h` file.
-
-
-### Oryx Configuration
-
-To enable the features from Oryx (ZSA's Configurator), either compile the `default` keymap, or add `#define ORYX_CONFIGURATOR` to your `config.h` file.
-
-This enables the front Indicator LEDs, and the `TOGGLE_LAYER_COLOR` keycode. The `TOGGLE_LAYER_COLOR` keycode toggles the customized LED map configured on Oryx.
-
-### RGB Matrix Features
-
-If you're using the Smart LED (layer indication) feature from the Oryx Configurator, you want to make sure that you enable these options by adding `#define ORYX_CONFIGURATOR` to your keymap's `config.h`.
-
-This changes the `RGB_TOG` keycode so that it will toggle the lights on and off, in a way that will allow the Smart LEDs to continue to work, even with the rest of the LEDs turned off.
-
-Additionally, a new keycode has been added to toggle the Smart LEDs. Use `TOGGLE_LAYER_COLOR`, if you aren't already.
-
-### Detecting split / Gaming mode
-
-To make it extra gaming friendly, you can configure what happens when you disconnect the right half. This is especially useful when using gaming unfriendly layers or layouts (e.g. home row mods, dvorak, colemak).
-
-Example for enabling a specific layer while right side is disconnected:
-
-```
-void housekeeping_task_user(void) {
- if (!is_transport_connected()) {
- // set layer
- }
-}
-``` \ No newline at end of file
diff --git a/keyboards/mss_studio/m63_rgb/config.h b/keyboards/mss_studio/m63_rgb/config.h
deleted file mode 100644
index 357f61e77c..0000000000
--- a/keyboards/mss_studio/m63_rgb/config.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright 2021 Mss Studio
- * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 75
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/mss_studio/m63_rgb/info.json b/keyboards/mss_studio/m63_rgb/info.json
index 197a78a924..3ac3725f1b 100644
--- a/keyboards/mss_studio/m63_rgb/info.json
+++ b/keyboards/mss_studio/m63_rgb/info.json
@@ -13,7 +13,52 @@
"pin": "B15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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_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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B10", "A7", "A6", "A5", "A4", "B5", "B6", "A1", "B7", "B8", "B9"],
diff --git a/keyboards/mss_studio/m64_rgb/config.h b/keyboards/mss_studio/m64_rgb/config.h
deleted file mode 100644
index dc228f8c62..0000000000
--- a/keyboards/mss_studio/m64_rgb/config.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright 2021 Mss Studio
- * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 76
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/mss_studio/m64_rgb/info.json b/keyboards/mss_studio/m64_rgb/info.json
index c1850d1191..f956ac50b5 100644
--- a/keyboards/mss_studio/m64_rgb/info.json
+++ b/keyboards/mss_studio/m64_rgb/info.json
@@ -13,7 +13,52 @@
"pin": "B15"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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_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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B10", "A7", "A6", "A5", "A4", "B5", "B6", "A1", "B7", "B8", "B9"],
diff --git a/keyboards/mt/mt40/rules.mk b/keyboards/mt/mt40/rules.mk
index b50ebe5888..5aa98ed4d8 100644
--- a/keyboards/mt/mt40/rules.mk
+++ b/keyboards/mt/mt40/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/mt/mt64rgb/config.h b/keyboards/mt/mt64rgb/config.h
index 2f69547df9..cc215ee9a1 100644
--- a/keyboards/mt/mt64rgb/config.h
+++ b/keyboards/mt/mt64rgb/config.h
@@ -15,69 +15,10 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
-#define RGB_MATRIX_LED_PROCESS_LIMIT 20
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define RGB_MATRIX_LED_COUNT 64
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-// # define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-
-#endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/mt/mt64rgb/info.json b/keyboards/mt/mt64rgb/info.json
index f2723823ee..b311502eef 100644
--- a/keyboards/mt/mt64rgb/info.json
+++ b/keyboards/mt/mt64rgb/info.json
@@ -29,7 +29,40 @@
"pin": "B0"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_multinexus": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true,
+ "solid_multisplash": true
+ },
+ "driver": "is31fl3733",
+ "led_flush_limit": 26,
+ "led_process_limit": 20,
+ "max_brightness": 160
},
"matrix_pins": {
"cols": ["B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "B1", "B2", "B3", "B7"],
diff --git a/keyboards/mt/mt64rgb/mt64rgb.c b/keyboards/mt/mt64rgb/mt64rgb.c
index 7a6831f6d0..42e6a48dc2 100644
--- a/keyboards/mt/mt64rgb/mt64rgb.c
+++ b/keyboards/mt/mt64rgb/mt64rgb.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/mt/mt84/config.h b/keyboards/mt/mt84/config.h
index 34ec1be86a..9b115d527d 100644
--- a/keyboards/mt/mt84/config.h
+++ b/keyboards/mt/mt84/config.h
@@ -15,70 +15,10 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
- #define RGB_MATRIX_LED_PROCESS_LIMIT 20
- #define RGB_MATRIX_LED_FLUSH_LIMIT 26
- #define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
- #define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC
+#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
+#define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC
- #define DRIVER_1_LED_TOTAL 44
- #define DRIVER_2_LED_TOTAL 40
- #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
- // RGB Matrix Animation modes. Explicitly enabled
- // For full list of effects, see:
- // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- // # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
- // # define ENABLE_RGB_MATRIX_BAND_SAT
- // # define ENABLE_RGB_MATRIX_BAND_VAL
- // # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- // # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- // # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- // # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- // # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
- // # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
- // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
- // # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- // # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
+#define RGB_MATRIX_LED_COUNT 84
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/mt/mt84/info.json b/keyboards/mt/mt84/info.json
index 74343e3583..7b41b09b57 100644
--- a/keyboards/mt/mt84/info.json
+++ b/keyboards/mt/mt84/info.json
@@ -23,7 +23,43 @@
"pin": "B0"
},
"rgb_matrix": {
- "driver": "is31fl3737"
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_multinexus": true,
+ "splash": true,
+ "multisplash": true,
+ "solid_splash": true,
+ "solid_multisplash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "is31fl3737",
+ "led_flush_limit": 26,
+ "led_process_limit": 20,
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "B1", "B2", "B3", "B7", "E6"],
diff --git a/keyboards/mt/mt84/mt84.c b/keyboards/mt/mt84/mt84.c
index fd4811e63a..4dd24c30b2 100644
--- a/keyboards/mt/mt84/mt84.c
+++ b/keyboards/mt/mt84/mt84.c
@@ -16,7 +16,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/mwstudio/alicekk/config.h b/keyboards/mwstudio/alicekk/config.h
deleted file mode 100644
index 26ff90fa59..0000000000
--- a/keyboards/mwstudio/alicekk/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2022 TW59420 <https://github.com/TW59420>
- *
- * 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 RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/mwstudio/mw65_rgb/config.h b/keyboards/mwstudio/mw65_rgb/config.h
deleted file mode 100644
index 0459b58d36..0000000000
--- a/keyboards/mwstudio/mw65_rgb/config.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 83
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_KEYPRESSES
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/mwstudio/mw65_rgb/info.json b/keyboards/mwstudio/mw65_rgb/info.json
index 73e3c0ea24..502a112c43 100644
--- a/keyboards/mwstudio/mw65_rgb/info.json
+++ b/keyboards/mwstudio/mw65_rgb/info.json
@@ -12,7 +12,50 @@
"pin": "B3"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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_fractal": 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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["C6", "B6", "B5", "B4", "D7", "D6", "D4", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "E6"],
diff --git a/keyboards/mwstudio/mw75/config.h b/keyboards/mwstudio/mw75/config.h
deleted file mode 100644
index b28f3547a7..0000000000
--- a/keyboards/mwstudio/mw75/config.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * 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 RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_LED_COUNT 97
-#define RGB_MATRIX_KEYPRESSES
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/mwstudio/mw75/info.json b/keyboards/mwstudio/mw75/info.json
index 197a58d7ab..61533f6266 100644
--- a/keyboards/mwstudio/mw75/info.json
+++ b/keyboards/mwstudio/mw75/info.json
@@ -9,7 +9,52 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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_fractal": true,
+ "pixel_rain": 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",
+ "max_brightness": 200
},
"matrix_pins": {
"cols": ["D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "E6"],
diff --git a/keyboards/mwstudio/mw75r2/config.h b/keyboards/mwstudio/mw75r2/config.h
deleted file mode 100644
index c2019d6cd3..0000000000
--- a/keyboards/mwstudio/mw75r2/config.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright 2021 TW59420 <https://github.com/TW59420>
- *
- * 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 RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_MATRIX_LED_COUNT 21
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
diff --git a/keyboards/mwstudio/mw75r2/info.json b/keyboards/mwstudio/mw75r2/info.json
index 8f9d19e016..950ded1e80 100644
--- a/keyboards/mwstudio/mw75r2/info.json
+++ b/keyboards/mwstudio/mw75r2/info.json
@@ -18,6 +18,28 @@
"pin": "B3"
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "breathing": 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_fractal": true,
+ "pixel_rain": true
+ },
"driver": "ws2812"
},
"matrix_pins": {
diff --git a/keyboards/nack/config.h b/keyboards/nack/config.h
index 8ac70be2dc..8a0b30f8ad 100644
--- a/keyboards/nack/config.h
+++ b/keyboards/nack/config.h
@@ -17,62 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
- #define WS2812_SPI_DRIVER SPID1
- #define WS2812_SPI_MOSI_PAL_MODE 5
- #define RGB_MATRIX_LED_COUNT 52
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128 // Max brightness of LEDs
- #define RGB_MATRIX_DEFAULT_VAL 64
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
+#define WS2812_SPI_DRIVER SPID1
+#define WS2812_SPI_MOSI_PAL_MODE 5
#ifdef AUDIO_ENABLE
#define AUDIO_PIN A5
diff --git a/keyboards/nack/info.json b/keyboards/nack/info.json
index 4fd9981145..4af3f64126 100644
--- a/keyboards/nack/info.json
+++ b/keyboards/nack/info.json
@@ -13,10 +13,58 @@
"driver": "spi"
},
"rgb_matrix": {
+ "animations": {
+ "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
+ },
+ "default": {
+ "val": 64
+ },
"driver": "ws2812",
"hue_steps": 10,
"sat_steps": 10,
- "val_steps": 10
+ "val_steps": 10,
+ "max_brightness": 128
},
"matrix_pins": {
"cols": ["A6", "A7", "A8", "A9", "A10", "B0", "B1", "B2", "B6", "B7", "C13", "C14", "C15"],
diff --git a/keyboards/nek_type_a/nek_type_a.h b/keyboards/nek_type_a/nek_type_a.h
index dda9e2bdde..fe6fb27a45 100644
--- a/keyboards/nek_type_a/nek_type_a.h
+++ b/keyboards/nek_type_a/nek_type_a.h
@@ -21,9 +21,7 @@
#include <stdbool.h>
#include <util/delay.h>
-#define I2C_ADDR 0b0100000
-#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define I2C_ADDR (0b0100000<<1)
#define IODIRA 0x00 // i/o direction register
#define IODIRB 0x01
#define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/neopad/readme.md b/keyboards/neopad/readme.md
deleted file mode 100644
index 9e83e9bb6d..0000000000
--- a/keyboards/neopad/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Neopad
-
-Neopad is a little macropad with four switches and two rotary encoders, made by through hole components only.
-_Actually the number of switches is six, because even the encoder are allowed to click._
-
-![Neopad](https://i.imgur.com/TgOkj2Fh.jpg "Neopad first proto")
-
-The Neopad in the photo above is the first prototype. See the project repository for revision 1 update and KiCad files.
-
-* Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy)
-* Hardware supported: ProMicro, _Elite-C (not tested)_
-* Project repository: [Neopad on github](https://github.com/rookiebwoy/neopad)
-
-Make example for this keyboard (after setting up your build environment):
-
- make neopad/rev1:default
-
-Flashing example for this keyboard:
-
- make neopad/rev1:default:flash
-
-When asked by the terminal, press the dedicated `RESET` button (the one above the 2 LEDs) to enter the bootloader and let the OS detects the device.
-
-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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
-
diff --git a/keyboards/neopad/rules.mk b/keyboards/neopad/rules.mk
deleted file mode 100755
index 8fc1afe955..0000000000
--- a/keyboards/neopad/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-DEFAULT_FOLDER = neopad/rev1
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..bf8eeb87dd 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;
@@ -53,20 +54,20 @@ void housekeeping_task_kb(void)
alert = !alert;
last_ticks = timer_read();
}
- ws2812_setleds(led, RGBLED_NUM);
+ ws2812_setleds(led, RGBLIGHT_LED_COUNT);
} else {
if (backup) {
led[4].r = caps_led.r;
led[4].g = caps_led.g;
led[4].b = caps_led.b;
backup = false;
- ws2812_setleds(led, RGBLED_NUM);
+ ws2812_setleds(led, RGBLIGHT_LED_COUNT);
}
}
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;
@@ -79,7 +80,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds)
uint8_t tmp = start_led[4].g;
start_led[4].g = start_led[4].r;
start_led[4].r = tmp;
- ws2812_setleds(start_led, RGBLED_NUM);
+ ws2812_setleds(start_led, RGBLIGHT_LED_COUNT);
}
+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/newgame40/post_config.h b/keyboards/newgame40/post_config.h
index 247178beec..7ac270c932 100644
--- a/keyboards/newgame40/post_config.h
+++ b/keyboards/newgame40/post_config.h
@@ -1,14 +1,14 @@
#pragma once
#ifndef IOS_DEVICE_ENABLE
-# if RGBLED_NUM <= 6
+# if RGBLIGHT_LED_COUNT <= 6
# define RGBLIGHT_LIMIT_VAL 255
# else
# define RGBLIGHT_LIMIT_VAL 130
# endif
# define RGBLIGHT_VAL_STEP 17
#else
-# if RGBLED_NUM <= 6
+# if RGBLIGHT_LED_COUNT <= 6
# define RGBLIGHT_LIMIT_VAL 90
# else
# define RGBLIGHT_LIMIT_VAL 45
diff --git a/keyboards/ning/tiny_board/tb16_rgb/config.h b/keyboards/ning/tiny_board/tb16_rgb/config.h
deleted file mode 100644
index 849035d1c3..0000000000
--- a/keyboards/ning/tiny_board/tb16_rgb/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2023 Ning (@ningjx)
- *
- * 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 RGB_MATRIX_LED_COUNT 16
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/ning/tiny_board/tb16_rgb/info.json b/keyboards/ning/tiny_board/tb16_rgb/info.json
index 337c61fabe..57a2438c3d 100644
--- a/keyboards/ning/tiny_board/tb16_rgb/info.json
+++ b/keyboards/ning/tiny_board/tb16_rgb/info.json
@@ -13,6 +13,12 @@
"rgb_matrix": true
},
"rgb_matrix": {
+ "animations": {
+ "typing_heatmap": true
+ },
+ "default": {
+ "animation": "typing_heatmap"
+ },
"driver": "ws2812"
},
"matrix_pins": {
diff --git a/keyboards/nopunin10did/jabberwocky/v1/config.h b/keyboards/nopunin10did/jabberwocky/v1/config.h
index 1eb25da282..ae6256b351 100644
--- a/keyboards/nopunin10did/jabberwocky/v1/config.h
+++ b/keyboards/nopunin10did/jabberwocky/v1/config.h
@@ -21,6 +21,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-/* Reducing layer count to 3 for via support */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/nopunin10did/jabberwocky/v1/info.json b/keyboards/nopunin10did/jabberwocky/v1/info.json
index 983b48ab1a..59ecc815b0 100644
--- a/keyboards/nopunin10did/jabberwocky/v1/info.json
+++ b/keyboards/nopunin10did/jabberwocky/v1/info.json
@@ -17,6 +17,9 @@
"caps_lock": "B0",
"num_lock": "D1"
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"layouts": {
diff --git a/keyboards/nopunin10did/jabberwocky/v2/config.h b/keyboards/nopunin10did/jabberwocky/v2/config.h
index 7be9070afe..b00b2242dc 100644
--- a/keyboards/nopunin10did/jabberwocky/v2/config.h
+++ b/keyboards/nopunin10did/jabberwocky/v2/config.h
@@ -21,6 +21,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-/* Reducing layer count to 3 for via support */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/nopunin10did/jabberwocky/v2/info.json b/keyboards/nopunin10did/jabberwocky/v2/info.json
index 64848c0552..263ae7df8f 100644
--- a/keyboards/nopunin10did/jabberwocky/v2/info.json
+++ b/keyboards/nopunin10did/jabberwocky/v2/info.json
@@ -18,6 +18,9 @@
"pin": "D6",
"levels": 6
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "B7",
"num_lock": "C6"
diff --git a/keyboards/novelkeys/nk20/config.h b/keyboards/novelkeys/nk20/config.h
index 55d8b53e83..317cc2c3e8 100644
--- a/keyboards/novelkeys/nk20/config.h
+++ b/keyboards/novelkeys/nk20/config.h
@@ -17,65 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* RGB options */
-
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
#define WS2812_DMA_CHANNEL 3
-
-#define RGB_MATRIX_LED_COUNT 20
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 210
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/novelkeys/nk20/info.json b/keyboards/novelkeys/nk20/info.json
index 3ad31f8a33..6d25ca4c21 100644
--- a/keyboards/novelkeys/nk20/info.json
+++ b/keyboards/novelkeys/nk20/info.json
@@ -13,7 +13,54 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 210,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B13", "B14", "B15", "A4"],
diff --git a/keyboards/novelkeys/nk65b/config.h b/keyboards/novelkeys/nk65b/config.h
index e236351344..40e3b54053 100755
--- a/keyboards/novelkeys/nk65b/config.h
+++ b/keyboards/novelkeys/nk65b/config.h
@@ -17,65 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* RGB options */
-
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 1
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
#define WS2812_DMA_CHANNEL 3
-
-#define RGB_MATRIX_LED_COUNT 68
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/novelkeys/nk65b/info.json b/keyboards/novelkeys/nk65b/info.json
index eb6565aea6..8e6e01fe46 100755
--- a/keyboards/novelkeys/nk65b/info.json
+++ b/keyboards/novelkeys/nk65b/info.json
@@ -13,7 +13,54 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 130,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A3", "A4", "A5", "A6", "A7", "B0", "B1", "B2", "B10", "B12", "B13", "B14", "B15", "A8", "A9"],
diff --git a/keyboards/novelkeys/nk87b/config.h b/keyboards/novelkeys/nk87b/config.h
index a0bbb315d4..a79137e7d9 100644
--- a/keyboards/novelkeys/nk87b/config.h
+++ b/keyboards/novelkeys/nk87b/config.h
@@ -17,65 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* RGB options */
-
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
#define WS2812_DMA_CHANNEL 3
-
-#define RGB_MATRIX_LED_COUNT 87
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 114
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/novelkeys/nk87b/info.json b/keyboards/novelkeys/nk87b/info.json
index 269db89ed3..cbcc8e2e18 100755
--- a/keyboards/novelkeys/nk87b/info.json
+++ b/keyboards/novelkeys/nk87b/info.json
@@ -13,7 +13,54 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 114,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B12", "B13", "B14", "B15", "A8", "A10", "A14", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "A0", "A1"],
diff --git a/keyboards/novelkeys/nk_plus/config.h b/keyboards/novelkeys/nk_plus/config.h
index 2d3322bab2..40e3b54053 100644
--- a/keyboards/novelkeys/nk_plus/config.h
+++ b/keyboards/novelkeys/nk_plus/config.h
@@ -17,64 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* RGB options */
-
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 1
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
#define WS2812_DMA_CHANNEL 3
-
-#define RGB_MATRIX_LED_COUNT 76
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/novelkeys/nk_plus/info.json b/keyboards/novelkeys/nk_plus/info.json
index 51a23057c4..41beca3682 100755
--- a/keyboards/novelkeys/nk_plus/info.json
+++ b/keyboards/novelkeys/nk_plus/info.json
@@ -27,6 +27,51 @@
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"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": [
{"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
@@ -106,7 +151,8 @@
{"flags": 1, "matrix": [4, 15], "x": 211, "y": 64},
{"flags": 1, "matrix": [4, 16], "x": 224, "y": 64}
],
- "max_brightness": 120
+ "max_brightness": 120,
+ "sleep": true
},
"ws2812": {
"driver": "pwm",
diff --git a/keyboards/null/st110r2/info.json b/keyboards/null/st110r2/info.json
new file mode 100644
index 0000000000..b83e9746e1
--- /dev/null
+++ b/keyboards/null/st110r2/info.json
@@ -0,0 +1,596 @@
+{
+ "manufacturer": "[null]",
+ "keyboard_name": "ST110 r2",
+ "maintainer": "user176176",
+ "bootloader": "halfkay",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "indicators": {
+ "caps_lock": "D0",
+ "compose": "B5",
+ "kana": "B4",
+ "num_lock": "B7",
+ "scroll_lock": "D1"
+ },
+ "matrix_pins": {
+ "cols": ["F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "C0", "C1", "C2", "C3", "C4", "C5", "C6"],
+ "rows": ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7"]
+ },
+ "processor": "at90usb1286",
+ "url": "https://null-src.com/posts/nkbm-st110r2/post.php",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "community_layouts": ["fullsize_ansi", "fullsize_iso", "fullsize_jis"],
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "K00/0A/KC_ESC", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "K02/0C/KC_F1", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "K03/0D/KC_F2", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "K04/0E/KC_F3", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "K05/0F/KC_F4", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "K06/0G/KC_F5", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "K07/0H/KC_F6", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "K08/0I/KC_F7", "matrix": [0, 8], "x": 8.5, "y": 0},
+ {"label": "K09/0J/KC_F8", "matrix": [0, 9], "x": 9.5, "y": 0},
+ {"label": "K0B/0L/KC_F9", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "K0C/0M/KC_F10", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "K0D/0N/KC_F11", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "K0E/0O/KC_F12", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "K60/6A/KC_PSCR", "matrix": [6, 0], "x": 15.25, "y": 0},
+ {"label": "K61/6B/KC_SCRL", "matrix": [6, 1], "x": 16.25, "y": 0},
+ {"label": "K62/6C/KC_PAUS", "matrix": [6, 2], "x": 17.25, "y": 0},
+ {"label": "K10/1A/KC_GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "K11/1B/KC_1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "K12/1C/KC_2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "K13/1D/KC_3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "K14/1E/KC_4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "K15/1F/KC_5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "K16/1G/KC_6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "K17/1H/KC_7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "K18/1I/KC_8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "K19/1J/KC_9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "K1A/1K/KC_0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "K1B/1L/KC_MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "K1C/1M/KC_EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "K1D/1N/KC_JYEN", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "K1E/1O/KC_BSPC", "matrix": [1, 14], "x": 14, "y": 1.25},
+ {"label": "K63/6D/KC_INS", "matrix": [6, 3], "x": 15.25, "y": 1.25},
+ {"label": "K64/6E/KC_HOME", "matrix": [6, 4], "x": 16.25, "y": 1.25},
+ {"label": "K65/6F/KC_PGUP", "matrix": [6, 5], "x": 17.25, "y": 1.25},
+ {"label": "K6D/6N/KC_NUM", "matrix": [6, 13], "x": 18.5, "y": 1.25},
+ {"label": "K6E/6O/KC_PSLS", "matrix": [6, 14], "x": 19.5, "y": 1.25},
+ {"label": "K70/7A/KC_PAST", "matrix": [7, 0], "x": 20.5, "y": 1.25},
+ {"label": "K71/7B/KC_PMNS", "matrix": [7, 1], "x": 21.5, "y": 1.25},
+ {"label": "K20/2A/KC_TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "K21/2B/KC_Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "K22/2C/KC_W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "K23/2D/KC_E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "K24/2E/KC_R", "matrix": [2, 4], "x": 4.5, "y": 2.15},
+ {"label": "K25/2F/KC_T", "matrix": [2, 5], "x": 5.5, "y": 2.15},
+ {"label": "K26/2G/KC_Y", "matrix": [2, 6], "x": 6.5, "y": 2.15},
+ {"label": "K27/2H/KC_U", "matrix": [2, 7], "x": 7.5, "y": 2.15},
+ {"label": "K28/2I/KC_I", "matrix": [2, 8], "x": 8.5, "y": 2.15},
+ {"label": "K29/2J/KC_O", "matrix": [2, 9], "x": 9.5, "y": 2.15},
+ {"label": "K2A/2K/KC_P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "K2B/2L/KC_LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "K2C/2M/KC_RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "K3C/3M/KC_NUHS", "matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"label": "K66/6G/KC_DEL", "matrix": [6, 6], "x": 15.25, "y": 2.25},
+ {"label": "K67/6H/KC_END", "matrix": [6, 7], "x": 16.25, "y": 2.25},
+ {"label": "K68/6I/KC_PGDN", "matrix": [6, 8], "x": 17.25, "y": 2.25},
+ {"label": "K72/7G/KC_P7", "matrix": [7, 2], "x": 18.5, "y": 2.25},
+ {"label": "K73/7D/KC_P8", "matrix": [7, 3], "x": 19.5, "y": 2.25},
+ {"label": "K74/7E/KC_P9", "matrix": [7, 4], "x": 20.5, "y": 2.25},
+ {"label": "K75/7F/KC_PPLS", "matrix": [7, 5], "x": 21.5, "y": 2.25, "h": 2},
+ {"label": "K30/3A/KC_CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "K31/3B/KC_A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "K32/3C/KC_S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "K33/3D/KC_D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "K34/3E/KC_F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "K35/3F/KC_G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "K36/3G/KC_H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "K37/3H/KC_J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K38/3I/KC_K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "K39/3J/KC_L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": "K3A/3K/KC_SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "K3B/3L/KC_QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "K3E/3O/KC_ENT", "matrix": [3, 14], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"label": "K76/7G/KC_P4", "matrix": [7, 6], "x": 18.5, "y": 3.25},
+ {"label": "K77/7H/KC_P5", "matrix": [7, 7], "x": 19.5, "y": 3.25},
+ {"label": "K78/7I/KC_P6", "matrix": [7, 8], "x": 20.5, "y": 3.25},
+ {"label": "K40/4A/KC_LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "K41/4B/KC_NUBS", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "K42/4C/KC_Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "K43/4D/KC_X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "K44/4E/KC_C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "K45/4F/KC_V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "K46/4G/KC_B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "K47/4H/KC_N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "K48/4I/KC_M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": "K49/4J/KC_COMM", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": "K4A/4K/KC_DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "K4B/4L/KC_SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "K4C/4M/KC_ROPT", "matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"label": "K4D/4N/KC_RSFT", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"label": "K69/6J/KC_UP", "matrix": [6, 9], "x": 16.25, "y": 4.25},
+ {"label": "K79/7J/KC_P1", "matrix": [7, 9], "x": 18.5, "y": 4.25},
+ {"label": "K7A/7K/KC_P2", "matrix": [7, 10], "x": 19.5, "y": 4.25},
+ {"label": "K7B/7L/KC_P3", "matrix": [7, 11], "x": 20.5, "y": 4.25},
+ {"label": "K7C/7M/KC_PENT", "matrix": [7, 12], "x": 21.5, "y": 4.25, "h": 2},
+ {"label": "K50/5A/KC_LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "K51/5B/KC_LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"label": "K52/5C/KC_LALT", "matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"label": "K53/5D/KC_MHEN", "matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"label": "K54/5E/KC_NO", "matrix": [5, 4], "x": 4.5, "y": 5.25, "w": 1.75},
+ {"label": "K55/5F/KC_SPC", "matrix": [5, 5], "x": 6.25, "y": 5.25, "w": 1.25},
+ {"label": "K57/5H/KC_NO", "matrix": [5, 7], "x": 7.5, "y": 5.25, "w": 1.75},
+ {"label": "K58/5I/KC_NO", "matrix": [5, 8], "x": 9.25, "y": 5.25},
+ {"label": "K59/5J/KC_RALT", "matrix": [5, 9], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "K5A/5K/KC_RGUI", "matrix": [5, 10], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "K5D/5L/KC_APP", "matrix": [5, 13], "x": 12.75, "y": 5.25},
+ {"label": "K5E/5M/KC_RCTL", "matrix": [5, 14], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"label": "K6A//KC_LEFT", "matrix": [6, 10], "x": 15.25, "y": 5.25},
+ {"label": "K6B//KC_DOWN", "matrix": [6, 11], "x": 16.25, "y": 5.25},
+ {"label": "K6C//KC_RGHT", "matrix": [6, 12], "x": 17.25, "y": 5.25},
+ {"label": "K7D//KC_P0", "matrix": [7, 13], "x": 18.5, "y": 5.25, "w": 2},
+ {"label": "K7E//KC_PDOT", "matrix": [7, 14], "x": 20.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_fullsize_ansi": {
+ "layout": [
+ {"label": "K00/0A/KC_ESC", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "K02/0C/KC_F1", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "K03/0D/KC_F2", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "K04/0E/KC_F3", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "K05/0F/KC_F4", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "K06/0G/KC_F5", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "K07/0H/KC_F6", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "K08/0I/KC_F7", "matrix": [0, 8], "x": 8.5, "y": 0},
+ {"label": "K09/0J/KC_F8", "matrix": [0, 9], "x": 9.5, "y": 0},
+ {"label": "K0B/0L/KC_F9", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "K0C/0M/KC_F10", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "K0D/0N/KC_F11", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "K0E/0O/KC_F12", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "K60/6A/KC_PSCR", "matrix": [6, 0], "x": 15.25, "y": 0},
+ {"label": "K61/6B/KC_SCRL", "matrix": [6, 1], "x": 16.25, "y": 0},
+ {"label": "K62/6C/KC_PAUS", "matrix": [6, 2], "x": 17.25, "y": 0},
+ {"label": "K10/1A/KC_GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "K11/1B/KC_1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "K12/1C/KC_2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "K13/1D/KC_3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "K14/1E/KC_4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "K15/1F/KC_5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "K16/1G/KC_6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "K17/1H/KC_7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "K18/1I/KC_8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "K19/1J/KC_9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "K1A/1K/KC_0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "K1B/1L/KC_MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "K1C/1M/KC_EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "K1E/1O/KC_BSPC", "matrix": [1, 14], "x": 13, "y": 1.25, "w": 2},
+ {"label": "K63/6D/KC_INS", "matrix": [6, 3], "x": 15.25, "y": 1.25},
+ {"label": "K64/6E/KC_HOME", "matrix": [6, 4], "x": 16.25, "y": 1.25},
+ {"label": "K65/6F/KC_PGUP", "matrix": [6, 5], "x": 17.25, "y": 1.25},
+ {"label": "K6D/6N/KC_NUM", "matrix": [6, 13], "x": 18.5, "y": 1.25},
+ {"label": "K6E/6O/KC_PSLS", "matrix": [6, 14], "x": 19.5, "y": 1.25},
+ {"label": "K70/7A/KC_PAST", "matrix": [7, 0], "x": 20.5, "y": 1.25},
+ {"label": "K71/7B/KC_PMNS", "matrix": [7, 1], "x": 21.5, "y": 1.25},
+ {"label": "K20/2A/KC_TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "K21/2B/KC_Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "K22/2C/KC_W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "K23/2D/KC_E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "K24/2E/KC_R", "matrix": [2, 4], "x": 4.5, "y": 2.15},
+ {"label": "K25/2F/KC_T", "matrix": [2, 5], "x": 5.5, "y": 2.15},
+ {"label": "K26/2G/KC_Y", "matrix": [2, 6], "x": 6.5, "y": 2.15},
+ {"label": "K27/2H/KC_U", "matrix": [2, 7], "x": 7.5, "y": 2.15},
+ {"label": "K28/2I/KC_I", "matrix": [2, 8], "x": 8.5, "y": 2.15},
+ {"label": "K29/2J/KC_O", "matrix": [2, 9], "x": 9.5, "y": 2.15},
+ {"label": "K2A/2K/KC_P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "K2B/2L/KC_LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "K2C/2M/KC_RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "K3C/3M/KC_NUBS", "matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"label": "K66/6G/KC_DEL", "matrix": [6, 6], "x": 15.25, "y": 2.25},
+ {"label": "K67/6H/KC_END", "matrix": [6, 7], "x": 16.25, "y": 2.25},
+ {"label": "K68/6I/KC_PGDN", "matrix": [6, 8], "x": 17.25, "y": 2.25},
+ {"label": "K72/7G/KC_P7", "matrix": [7, 2], "x": 18.5, "y": 2.25},
+ {"label": "K73/7D/KC_P8", "matrix": [7, 3], "x": 19.5, "y": 2.25},
+ {"label": "K74/7E/KC_P9", "matrix": [7, 4], "x": 20.5, "y": 2.25},
+ {"label": "K75/7F/KC_PPLS", "matrix": [7, 5], "x": 21.5, "y": 2.25, "h": 2},
+ {"label": "K30/3A/KC_CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "K31/3B/KC_A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "K32/3C/KC_S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "K33/3D/KC_D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "K34/3E/KC_F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "K35/3F/KC_G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "K36/3G/KC_H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "K37/3H/KC_J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K38/3I/KC_K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "K39/3J/KC_L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": "K3A/3K/KC_SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "K3B/3L/KC_QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "K3E/3O/KC_ENT", "matrix": [3, 14], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"label": "K76/7G/KC_P4", "matrix": [7, 6], "x": 18.5, "y": 3.25},
+ {"label": "K77/7H/KC_P5", "matrix": [7, 7], "x": 19.5, "y": 3.25},
+ {"label": "K78/7I/KC_P6", "matrix": [7, 8], "x": 20.5, "y": 3.25},
+ {"label": "K40/4A/KC_LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "K42/4C/KC_Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "K43/4D/KC_X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "K44/4E/KC_C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "K45/4F/KC_V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "K46/4G/KC_B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "K47/4H/KC_N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "K48/4I/KC_M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": "K49/4J/KC_COMM", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": "K4A/4K/KC_DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "K4B/4L/KC_SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "K4D/4N/KC_RSFT", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"label": "K69/6J/KC_UP", "matrix": [6, 9], "x": 16.25, "y": 4.25},
+ {"label": "K79/7J/KC_P1", "matrix": [7, 9], "x": 18.5, "y": 4.25},
+ {"label": "K7A/7K/KC_P2", "matrix": [7, 10], "x": 19.5, "y": 4.25},
+ {"label": "K7B/7L/KC_P3", "matrix": [7, 11], "x": 20.5, "y": 4.25},
+ {"label": "K7C/7M/KC_PENT", "matrix": [7, 12], "x": 21.5, "y": 4.25, "h": 2},
+ {"label": "K50/5A/KC_LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "K51/5B/KC_LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "K52/5C/KC_LALT", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "K55/5F/KC_SPC", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "K59/5J/KC_RALT", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "K5A/5K/KC_RGUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "K5D/5N/KC_APP", "matrix": [5, 13], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "K5E/5O/KC_RCTL", "matrix": [5, 14], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"label": "K6A/6K/KC_LEFT", "matrix": [6, 10], "x": 15.25, "y": 5.25},
+ {"label": "K6B/6L/KC_DOWN", "matrix": [6, 11], "x": 16.25, "y": 5.25},
+ {"label": "K6C/6M/KC_RGHT", "matrix": [6, 12], "x": 17.25, "y": 5.25},
+ {"label": "K7D/7N/KC_P0", "matrix": [7, 13], "x": 18.5, "y": 5.25, "w": 2},
+ {"label": "K7E/7O/KC_PDOT", "matrix": [7, 14], "x": 20.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_fullsize_iso": {
+ "layout": [
+ {"label": "K00/0A/KC_ESC", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "K02/0C/KC_F1", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "K03/0D/KC_F2", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "K04/0E/KC_F3", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "K05/0F/KC_F4", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "K06/0G/KC_F5", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "K07/0H/KC_F6", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "K08/0I/KC_F7", "matrix": [0, 8], "x": 8.5, "y": 0},
+ {"label": "K09/0J/KC_F8", "matrix": [0, 9], "x": 9.5, "y": 0},
+ {"label": "K0B/0L/KC_F9", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "K0C/0M/KC_F10", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "K0D/0N/KC_F11", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "K0E/0O/KC_F12", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "K60/6A/KC_PSCR", "matrix": [6, 0], "x": 15.25, "y": 0},
+ {"label": "K61/6B/KC_SCRL", "matrix": [6, 1], "x": 16.25, "y": 0},
+ {"label": "K62/6C/KC_PAUS", "matrix": [6, 2], "x": 17.25, "y": 0},
+ {"label": "K10/1A/KC_GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "K11/1B/KC_1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "K12/1C/KC_2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "K13/1D/KC_3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "K14/1E/KC_4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "K15/1F/KC_5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "K16/1G/KC_6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "K17/1H/KC_7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "K18/1I/KC_8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "K19/1J/KC_9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "K1A/1K/KC_0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "K1B/1L/KC_MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "K1C/1M/KC_EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "K1E/1O/KC_BSPC", "matrix": [1, 14], "x": 13, "y": 1.25, "w": 2},
+ {"label": "K63/6D/KC_INS", "matrix": [6, 3], "x": 15.25, "y": 1.25},
+ {"label": "K64/6E/KC_HOME", "matrix": [6, 4], "x": 16.25, "y": 1.25},
+ {"label": "K65/6F/KC_PGUP", "matrix": [6, 5], "x": 17.25, "y": 1.25},
+ {"label": "K6D/6N/KC_NUM", "matrix": [6, 13], "x": 18.5, "y": 1.25},
+ {"label": "K6E/6O/KC_PSLS", "matrix": [6, 14], "x": 19.5, "y": 1.25},
+ {"label": "K70/7A/KC_PAST", "matrix": [7, 0], "x": 20.5, "y": 1.25},
+ {"label": "K71/7B/KC_PMNS", "matrix": [7, 1], "x": 21.5, "y": 1.25},
+ {"label": "K20/2A/KC_TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "K21/2B/KC_Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "K22/2C/KC_W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "K23/2D/KC_E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "K24/2E/KC_R", "matrix": [2, 4], "x": 4.5, "y": 2.15},
+ {"label": "K25/2F/KC_T", "matrix": [2, 5], "x": 5.5, "y": 2.15},
+ {"label": "K26/2G/KC_Y", "matrix": [2, 6], "x": 6.5, "y": 2.15},
+ {"label": "K27/2H/KC_U", "matrix": [2, 7], "x": 7.5, "y": 2.15},
+ {"label": "K28/2I/KC_I", "matrix": [2, 8], "x": 8.5, "y": 2.15},
+ {"label": "K29/2J/KC_O", "matrix": [2, 9], "x": 9.5, "y": 2.15},
+ {"label": "K2A/2K/KC_P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "K2B/2L/KC_LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "K2C/2M/KC_RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "K66/6G/KC_DEL", "matrix": [6, 6], "x": 15.25, "y": 2.25},
+ {"label": "K67/6H/KC_END", "matrix": [6, 7], "x": 16.25, "y": 2.25},
+ {"label": "K68/6I/KC_PGDN", "matrix": [6, 8], "x": 17.25, "y": 2.25},
+ {"label": "K72/7G/KC_P7", "matrix": [7, 2], "x": 18.5, "y": 2.25},
+ {"label": "K73/7D/KC_P8", "matrix": [7, 3], "x": 19.5, "y": 2.25},
+ {"label": "K74/7E/KC_P9", "matrix": [7, 4], "x": 20.5, "y": 2.25},
+ {"label": "K75/7F/KC_PPLS", "matrix": [7, 5], "x": 21.5, "y": 2.25, "h": 2},
+ {"label": "K30/3A/KC_CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "K31/3B/KC_A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "K32/3C/KC_S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "K33/3D/KC_D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "K34/3E/KC_F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "K35/3F/KC_G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "K36/3G/KC_H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "K37/3H/KC_J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K38/3I/KC_K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "K39/3J/KC_L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": "K3A/3K/KC_SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "K3B/3L/KC_QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "K3C/3M/KC_NUHS", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "K3E/3O/KC_ENT", "matrix": [3, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"label": "K76/7G/KC_P4", "matrix": [7, 6], "x": 18.5, "y": 3.25},
+ {"label": "K77/7H/KC_P5", "matrix": [7, 7], "x": 19.5, "y": 3.25},
+ {"label": "K78/7I/KC_P6", "matrix": [7, 8], "x": 20.5, "y": 3.25},
+ {"label": "K40/4A/KC_LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "K41/4B/KC_NUBS", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "K42/4C/KC_Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "K43/4D/KC_X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "K44/4E/KC_C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "K45/4F/KC_V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "K46/4G/KC_B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "K47/4H/KC_N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "K48/4I/KC_M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": "K49/4J/KC_COMM", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": "K4A/4K/KC_DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "K4B/4L/KC_SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "K4D/4N/KC_RSFT", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"label": "K69/6J/KC_UP", "matrix": [6, 9], "x": 16.25, "y": 4.25},
+ {"label": "K79/7J/KC_P1", "matrix": [7, 9], "x": 18.5, "y": 4.25},
+ {"label": "K7A/7K/KC_P2", "matrix": [7, 10], "x": 19.5, "y": 4.25},
+ {"label": "K7B/7L/KC_P3", "matrix": [7, 11], "x": 20.5, "y": 4.25},
+ {"label": "K7C/7M/KC_PENT", "matrix": [7, 12], "x": 21.5, "y": 4.25, "h": 2},
+ {"label": "K50/5A/KC_LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "K51/5B/KC_LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "K52/5C/KC_LALT", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "K55/5F/KC_SPC", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "K59/5J/KC_RALT", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "K5A/5K/KC_RGUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "K5D/5N/KC_APP", "matrix": [5, 13], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "K5E/5O/KC_RCTL", "matrix": [5, 14], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"label": "K6A/6K/KC_LEFT", "matrix": [6, 10], "x": 15.25, "y": 5.25},
+ {"label": "K6B/6L/KC_DOWN", "matrix": [6, 11], "x": 16.25, "y": 5.25},
+ {"label": "K6C/6M/KC_RGHT", "matrix": [6, 12], "x": 17.25, "y": 5.25},
+ {"label": "K7D/7N/KC_P0", "matrix": [7, 13], "x": 18.5, "y": 5.25, "w": 2},
+ {"label": "K7E/7O/KC_PDOT", "matrix": [7, 14], "x": 20.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_fullsize_jis": {
+ "layout": [
+ {"label": "K00/0A/KC_ESC", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "K02/0C/KC_F1", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "K03/0D/KC_F2", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "K04/0E/KC_F3", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "K05/0F/KC_F4", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "K06/0G/KC_F5", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "K07/0H/KC_F6", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "K08/0I/KC_F7", "matrix": [0, 8], "x": 8.5, "y": 0},
+ {"label": "K09/0J/KC_F8", "matrix": [0, 9], "x": 9.5, "y": 0},
+ {"label": "K0B/0L/KC_F9", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "K0C/0M/KC_F10", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "K0D/0N/KC_F11", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "K0E/0O/KC_F12", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "K60/6A/KC_PSCR", "matrix": [6, 0], "x": 15.25, "y": 0},
+ {"label": "K61/6B/KC_SCRL", "matrix": [6, 1], "x": 16.25, "y": 0},
+ {"label": "K62/6C/KC_PAUS", "matrix": [6, 2], "x": 17.25, "y": 0},
+ {"label": "K10/1A/KC_GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "K11/1B/KC_1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "K12/1C/KC_2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "K13/1D/KC_3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "K14/1E/KC_4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "K15/1F/KC_5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "K16/1G/KC_6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "K17/1H/KC_7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "K18/1I/KC_8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "K19/1J/KC_9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "K1A/1K/KC_0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "K1B/1L/KC_MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "K1C/1M/KC_EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "K1D/1N/KC_JYEN", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "K1E/1O/KC_BSPC", "matrix": [1, 14], "x": 14, "y": 1.25},
+ {"label": "K63/6D/KC_INS", "matrix": [6, 3], "x": 15.25, "y": 1.25},
+ {"label": "K64/6E/KC_HOME", "matrix": [6, 4], "x": 16.25, "y": 1.25},
+ {"label": "K65/6F/KC_PGUP", "matrix": [6, 5], "x": 17.25, "y": 1.25},
+ {"label": "K6D/6N/KC_NUM", "matrix": [6, 13], "x": 18.5, "y": 1.25},
+ {"label": "K6E/6O/KC_PSLS", "matrix": [6, 14], "x": 19.5, "y": 1.25},
+ {"label": "K70/7A/KC_PAST", "matrix": [7, 0], "x": 20.5, "y": 1.25},
+ {"label": "K71/7B/KC_PMNS", "matrix": [7, 1], "x": 21.5, "y": 1.25},
+ {"label": "K20/2A/KC_TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "K21/2B/KC_Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "K22/2C/KC_W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "K23/2D/KC_E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "K24/2E/KC_R", "matrix": [2, 4], "x": 4.5, "y": 2.15},
+ {"label": "K25/2F/KC_T", "matrix": [2, 5], "x": 5.5, "y": 2.15},
+ {"label": "K26/2G/KC_Y", "matrix": [2, 6], "x": 6.5, "y": 2.15},
+ {"label": "K27/2H/KC_U", "matrix": [2, 7], "x": 7.5, "y": 2.15},
+ {"label": "K28/2I/KC_I", "matrix": [2, 8], "x": 8.5, "y": 2.15},
+ {"label": "K29/2J/KC_O", "matrix": [2, 9], "x": 9.5, "y": 2.15},
+ {"label": "K2A/2K/KC_P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "K2B/2L/KC_LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "K2C/2M/KC_RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "K66/6G/KC_DEL", "matrix": [6, 6], "x": 15.25, "y": 2.25},
+ {"label": "K67/6H/KC_END", "matrix": [6, 7], "x": 16.25, "y": 2.25},
+ {"label": "K68/6I/KC_PGDN", "matrix": [6, 8], "x": 17.25, "y": 2.25},
+ {"label": "K72/7G/KC_P7", "matrix": [7, 2], "x": 18.5, "y": 2.25},
+ {"label": "K73/7D/KC_P8", "matrix": [7, 3], "x": 19.5, "y": 2.25},
+ {"label": "K74/7E/KC_P9", "matrix": [7, 4], "x": 20.5, "y": 2.25},
+ {"label": "K75/7F/KC_PPLS", "matrix": [7, 5], "x": 21.5, "y": 2.25, "h": 2},
+ {"label": "K30/3A/KC_CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "K31/3B/KC_A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "K32/3C/KC_S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "K33/3D/KC_D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "K34/3E/KC_F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "K35/3F/KC_G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "K36/3G/KC_H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "K37/3H/KC_J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K38/3I/KC_K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "K39/3J/KC_L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": "K3A/3K/KC_SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "K3B/3L/KC_QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "K3C/3M/KC_NUHS", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "K3E/3O/KC_ENT", "matrix": [3, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"label": "K76/7G/KC_P4", "matrix": [7, 6], "x": 18.5, "y": 3.25},
+ {"label": "K77/7H/KC_P5", "matrix": [7, 7], "x": 19.5, "y": 3.25},
+ {"label": "K78/7I/KC_P6", "matrix": [7, 8], "x": 20.5, "y": 3.25},
+ {"label": "K40/4A/KC_LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "K42/4C/KC_Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "K43/4D/KC_X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "K44/4E/KC_C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "K45/4F/KC_V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "K46/4G/KC_B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "K47/4H/KC_N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "K48/4I/KC_M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": "K49/4J/KC_COMM", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": "K4A/4K/KC_DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "K4B/4L/KC_SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "K4C/4M/KC_ROPT", "matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"label": "K4D/4N/KC_RSFT", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"label": "K69/6J/KC_UP", "matrix": [6, 9], "x": 16.25, "y": 4.25},
+ {"label": "K79/7J/KC_P1", "matrix": [7, 9], "x": 18.5, "y": 4.25},
+ {"label": "K7A/7K/KC_P2", "matrix": [7, 10], "x": 19.5, "y": 4.25},
+ {"label": "K7B/7L/KC_P3", "matrix": [7, 11], "x": 20.5, "y": 4.25},
+ {"label": "K7C/7M/KC_PENT", "matrix": [7, 12], "x": 21.5, "y": 4.25, "h": 2},
+ {"label": "K50/5A/KC_LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "K51/5B/KC_LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "K52/5C/KC_LALT", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "K53/5D/KC_MHEN", "matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25},
+ {"label": "K55/5F/KC_SPC", "matrix": [5, 5], "x": 5, "y": 5.25, "w": 3.25},
+ {"label": "K57/5H/KC_INT4", "matrix": [5, 7], "x": 8.25, "y": 5.25, "w": 1.25},
+ {"label": "K58/5I/KC_INT2", "matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 1.25},
+ {"label": "K59/5J/KC_RALT", "matrix": [5, 9], "x": 10.75, "y": 5.25},
+ {"label": "K5A/5K/KC_RGUI", "matrix": [5, 10], "x": 11.75, "y": 5.25},
+ {"label": "K5D/5L/KC_APP", "matrix": [5, 13], "x": 12.75, "y": 5.25},
+ {"label": "K5E/5M/KC_RCTL", "matrix": [5, 14], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"label": "K6A//KC_LEFT", "matrix": [6, 10], "x": 15.25, "y": 5.25},
+ {"label": "K6B//KC_DOWN", "matrix": [6, 11], "x": 16.25, "y": 5.25},
+ {"label": "K6C//KC_RGHT", "matrix": [6, 12], "x": 17.25, "y": 5.25},
+ {"label": "K7D//KC_P0", "matrix": [7, 13], "x": 18.5, "y": 5.25, "w": 2},
+ {"label": "K7E//KC_PDOT", "matrix": [7, 14], "x": 20.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"label": "K00/0A/KC_ESC", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "K02/0C/KC_F1", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "K03/0D/KC_F2", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "K04/0E/KC_F3", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "K05/0F/KC_F4", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "K06/0G/KC_F5", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "K07/0H/KC_F6", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "K08/0I/KC_F7", "matrix": [0, 8], "x": 8.5, "y": 0},
+ {"label": "K09/0J/KC_F8", "matrix": [0, 9], "x": 9.5, "y": 0},
+ {"label": "K0B/0L/KC_F9", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "K0C/0M/KC_F10", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "K0D/0N/KC_F11", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "K0E/0O/KC_F12", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "K60/6A/KC_PSCR", "matrix": [6, 0], "x": 15.25, "y": 0},
+ {"label": "K61/6B/KC_SCRL", "matrix": [6, 1], "x": 16.25, "y": 0},
+ {"label": "K62/6C/KC_PAUS", "matrix": [6, 2], "x": 17.25, "y": 0},
+ {"label": "K10/1A/KC_GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "K11/1B/KC_1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "K12/1C/KC_2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "K13/1D/KC_3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "K14/1E/KC_4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "K15/1F/KC_5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "K16/1G/KC_6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "K17/1H/KC_7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "K18/1I/KC_8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "K19/1J/KC_9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "K1A/1K/KC_0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "K1B/1L/KC_MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "K1C/1M/KC_EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "K1D/1N/KC_JYEN", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "K1E/1O/KC_BSPC", "matrix": [1, 14], "x": 14, "y": 1.25},
+ {"label": "K63/6D/KC_INS", "matrix": [6, 3], "x": 15.25, "y": 1.25},
+ {"label": "K64/6E/KC_HOME", "matrix": [6, 4], "x": 16.25, "y": 1.25},
+ {"label": "K65/6F/KC_PGUP", "matrix": [6, 5], "x": 17.25, "y": 1.25},
+ {"label": "K6D/6N/KC_NUM", "matrix": [6, 13], "x": 18.5, "y": 1.25},
+ {"label": "K6E/6O/KC_PSLS", "matrix": [6, 14], "x": 19.5, "y": 1.25},
+ {"label": "K70/7A/KC_PAST", "matrix": [7, 0], "x": 20.5, "y": 1.25},
+ {"label": "K71/7B/KC_PMNS", "matrix": [7, 1], "x": 21.5, "y": 1.25},
+ {"label": "K20/2A/KC_TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "K21/2B/KC_Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "K22/2C/KC_W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "K23/2D/KC_E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "K24/2E/KC_R", "matrix": [2, 4], "x": 4.5, "y": 2.15},
+ {"label": "K25/2F/KC_T", "matrix": [2, 5], "x": 5.5, "y": 2.15},
+ {"label": "K26/2G/KC_Y", "matrix": [2, 6], "x": 6.5, "y": 2.15},
+ {"label": "K27/2H/KC_U", "matrix": [2, 7], "x": 7.5, "y": 2.15},
+ {"label": "K28/2I/KC_I", "matrix": [2, 8], "x": 8.5, "y": 2.15},
+ {"label": "K29/2J/KC_O", "matrix": [2, 9], "x": 9.5, "y": 2.15},
+ {"label": "K2A/2K/KC_P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "K2B/2L/KC_LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "K2C/2M/KC_RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "K66/6G/KC_DEL", "matrix": [6, 6], "x": 15.25, "y": 2.25},
+ {"label": "K67/6H/KC_END", "matrix": [6, 7], "x": 16.25, "y": 2.25},
+ {"label": "K68/6I/KC_PGDN", "matrix": [6, 8], "x": 17.25, "y": 2.25},
+ {"label": "K72/7G/KC_P7", "matrix": [7, 2], "x": 18.5, "y": 2.25},
+ {"label": "K73/7D/KC_P8", "matrix": [7, 3], "x": 19.5, "y": 2.25},
+ {"label": "K74/7E/KC_P9", "matrix": [7, 4], "x": 20.5, "y": 2.25},
+ {"label": "K75/7F/KC_PPLS", "matrix": [7, 5], "x": 21.5, "y": 2.25, "h": 2},
+ {"label": "K30/3A/KC_CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "K31/3B/KC_A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "K32/3C/KC_S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "K33/3D/KC_D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "K34/3E/KC_F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "K35/3F/KC_G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "K36/3G/KC_H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "K37/3H/KC_J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K38/3I/KC_K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "K39/3J/KC_L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": "K3A/3K/KC_SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "K3B/3L/KC_QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "K3C/3M/KC_NUHS", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "K3E/3O/KC_ENT", "matrix": [3, 14], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"label": "K76/7G/KC_P4", "matrix": [7, 6], "x": 18.5, "y": 3.25},
+ {"label": "K77/7H/KC_P5", "matrix": [7, 7], "x": 19.5, "y": 3.25},
+ {"label": "K78/7I/KC_P6", "matrix": [7, 8], "x": 20.5, "y": 3.25},
+ {"label": "K40/4A/KC_LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "K41/4B/KC_NUBS", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "K42/4C/KC_Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "K43/4D/KC_X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "K44/4E/KC_C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "K45/4F/KC_V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "K46/4G/KC_B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "K47/4H/KC_N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "K48/4I/KC_M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": "K49/4J/KC_COMM", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": "K4A/4K/KC_DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "K4B/4L/KC_SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "K4C/4M/KC_ROPT", "matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"label": "K4D/4N/KC_RSFT", "matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"label": "K69/6J/KC_UP", "matrix": [6, 9], "x": 16.25, "y": 4.25},
+ {"label": "K79/7J/KC_P1", "matrix": [7, 9], "x": 18.5, "y": 4.25},
+ {"label": "K7A/7K/KC_P2", "matrix": [7, 10], "x": 19.5, "y": 4.25},
+ {"label": "K7B/7L/KC_P3", "matrix": [7, 11], "x": 20.5, "y": 4.25},
+ {"label": "K7C/7M/KC_PENT", "matrix": [7, 12], "x": 21.5, "y": 4.25, "h": 2},
+ {"label": "K50/5A/KC_LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "K51/5B/KC_LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"label": "K52/5C/KC_LALT", "matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"label": "K53/5D/KC_MHEN", "matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"label": "K54/5E/KC_NO", "matrix": [5, 4], "x": 4.5, "y": 5.25, "w": 1.75},
+ {"label": "K55/5F/KC_SPC", "matrix": [5, 5], "x": 6.25, "y": 5.25, "w": 1.25},
+ {"label": "K57/5H/KC_NO", "matrix": [5, 7], "x": 7.5, "y": 5.25, "w": 1.75},
+ {"label": "K58/5I/KC_NO", "matrix": [5, 8], "x": 9.25, "y": 5.25},
+ {"label": "K59/5J/KC_RALT", "matrix": [5, 9], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"label": "K5A/5K/KC_RGUI", "matrix": [5, 10], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"label": "K5D/5L/KC_APP", "matrix": [5, 13], "x": 12.75, "y": 5.25},
+ {"label": "K5E/5M/KC_RCTL", "matrix": [5, 14], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"label": "K6A//KC_LEFT", "matrix": [6, 10], "x": 15.25, "y": 5.25},
+ {"label": "K6B//KC_DOWN", "matrix": [6, 11], "x": 16.25, "y": 5.25},
+ {"label": "K6C//KC_RGHT", "matrix": [6, 12], "x": 17.25, "y": 5.25},
+ {"label": "K7D//KC_P0", "matrix": [7, 13], "x": 18.5, "y": 5.25, "w": 2},
+ {"label": "K7E//KC_PDOT", "matrix": [7, 14], "x": 20.5, "y": 5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/null/st110r2/keymaps/ansi_std/keymap.c b/keyboards/null/st110r2/keymaps/ansi_std/keymap.c
new file mode 100644
index 0000000000..b350c1c28a
--- /dev/null
+++ b/keyboards/null/st110r2/keymaps/ansi_std/keymap.c
@@ -0,0 +1,32 @@
+// 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│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───┠┌───┬───┬───┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┠├───┼───┼───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┠├───┴───┼───┤Ent│
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ↠│ ↓ │ → │ │ 0 │ . │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+ */
+ [0] = LAYOUT_fullsize_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ )
+};
diff --git a/keyboards/null/st110r2/keymaps/default/keymap.c b/keyboards/null/st110r2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e163012807
--- /dev/null
+++ b/keyboards/null/st110r2/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+// 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│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┠┌───┬───┬───┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ ¥ │Bsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ ┌───┠├───┼───┼───┼───┤
+ * │Shft│<|>│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \_│ Shft │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+ * ├────┼───┼───┴┬──┴┬──┴───┼───┼───┴──┬┴──┬┴───┼───┴┬──┴─┬────┤ ┌───┼───┼───┠├───┴───┼───┤Ent│
+ * │Ctrl│GUI│Alt │MHN│Space │SPC│Space │HNK│KNA │Alt │App │Ctrl│ │ ↠│ ↓ │ → │ │ 0 │ . │ │
+ * └────┴───┴────┴───┴──────┴───┴──────┴───┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+ */
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ 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_INT3, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_SPC, KC_SPC, KC_INT4, KC_INT2, KC_RALT, KC_APP, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT
+ )
+};
diff --git a/keyboards/null/st110r2/keymaps/iso_default/keymap.c b/keyboards/null/st110r2/keymaps/iso_default/keymap.c
new file mode 100644
index 0000000000..13f31bbf1d
--- /dev/null
+++ b/keyboards/null/st110r2/keymaps/iso_default/keymap.c
@@ -0,0 +1,32 @@
+// 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│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┠┌───┬───┬───┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ ¥ │Bsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ │ 4 │ 5 │ 6 │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┠├───┼───┼───┼───┤
+ * │Shft│<|>│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \_│ Shft │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+ * ├────┼───┼───┴┬──┴┬──┴───┼───┼───┴──┬┴──┬┴───┼───┴┬──┴─┬────┤ ┌───┼───┼───┠├───┴───┼───┤Ent│
+ * │Ctrl│GUI│Alt │MHN│Space │SPC│Space │HNK│KNA │Alt │App │Ctrl│ │ ↠│ ↓ │ → │ │ 0 │ . │ │
+ * └────┴───┴────┴───┴──────┴───┴──────┴───┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+ */
+ [0] = LAYOUT_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ 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_INT3, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ 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_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_SPC, KC_SPC, KC_INT4, KC_INT2, KC_RALT, KC_APP, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT
+ )
+};
diff --git a/keyboards/null/st110r2/keymaps/iso_std/keymap.c b/keyboards/null/st110r2/keymaps/iso_std/keymap.c
new file mode 100644
index 0000000000..a1873be5c8
--- /dev/null
+++ b/keyboards/null/st110r2/keymaps/iso_std/keymap.c
@@ -0,0 +1,32 @@
+// 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│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───┠┌───┬───┬───┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ │ 4 │ 5 │ 6 │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┠├───┼───┼───┼───┤
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┠├───┴───┼───┤Ent│
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ↠│ ↓ │ → │ │ 0 │ . │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+ */
+ [0] = LAYOUT_fullsize_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ )
+};
diff --git a/keyboards/null/st110r2/keymaps/jis_std/keymap.c b/keyboards/null/st110r2/keymaps/jis_std/keymap.c
new file mode 100644
index 0000000000..95c76bfb55
--- /dev/null
+++ b/keyboards/null/st110r2/keymaps/jis_std/keymap.c
@@ -0,0 +1,32 @@
+// 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│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┠┌───┬───┬───┬───â”
+ * │ZHK│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │Bsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │
+ * │ Eisu │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ : │ ] │ │ │ 4 │ 5 │ 6 │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┠├───┼───┼───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \ │ Shft │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+ * ├────┬───┴┬──┴─┬─┴──┬┴───┴───┴───┼───┴┬──┴─┬─┴─┬─┴─┬─┴─┬────┤ ┌───┼───┼───┠├───┴───┼───┤Ent│
+ * │Ctrl│GUI │Alt │Mhen│ Space │Henk│Kana│Alt│GUI│App│Ctrl│ │ ↠│ ↓ │ → │ │ 0 │ . │ │
+ * └────┴────┴────┴────┴────────────┴────┴────┴───┴───┴───┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+ */
+ [0] = LAYOUT_fullsize_jis(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ 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_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_INT2, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ )
+};
diff --git a/keyboards/null/st110r2/readme.md b/keyboards/null/st110r2/readme.md
new file mode 100644
index 0000000000..c4959b4003
--- /dev/null
+++ b/keyboards/null/st110r2/readme.md
@@ -0,0 +1,31 @@
+# null/st110r2
+
+null ST110r2 is a custom PCB/keyboard project that supports multiple layouts and is built on top of the Filco and the clones alike.
+
+![st110r2_zoom](https://s3.amazonaws.com/null-src/images/posts/nkbm-st110r2/NKBM-ST110r21-both1.png)
+![st110r2_full](https://s3.amazonaws.com/null-src/images/posts/nkbm-st110r2/NKBM-ST110r21-both3.png)
+
+* Keyboard Maintainer: [user176176](https://github.com/user176176)
+* Hardware Supported: [null] 最高タイプ (SaikouType) NKBM-ST110r2.x keyboard PCBs with Teensy 2.0++.
+* Hardware Availability: [NKBM-ST110r2 - null-src.com](https://null-src.com/posts/nkbm-st110r2/post.php)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make null/st110r2:default
+
+Flashing example for this keyboard:
+
+ make null/st110r2: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the reset button on Teensy
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
+
+![st110r2_pcb](https://s3.amazonaws.com/null-src/images/posts/nkbm-st110r2/NKBM-ST110r2_PCB.jpg)
+![st110r2_build](https://s3.amazonaws.com/null-src/images/posts/nkbm-st110r2/NKBM-ST110r2.1_rosewill_top.jpg)
diff --git a/keyboards/null/st110r2/rules.mk b/keyboards/null/st110r2/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/null/st110r2/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/nullbitsco/nibble/keymaps/via/keymap.c b/keyboards/nullbitsco/nibble/keymaps/via/keymap.c
index b71f9119ef..4e2f7dd4d6 100644
--- a/keyboards/nullbitsco/nibble/keymaps/via/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/via/keymap.c
@@ -112,7 +112,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} else {
rgblight_timer_disable();
uint8_t val = rgblight_get_val();
- rgblight_sethsv_range(255, 255, val, 0, RGBLED_NUM-1);
+ rgblight_sethsv_range(255, 255, val, 0, RGBLIGHT_LED_COUNT-1);
}
deafened = !deafened;
}
diff --git a/keyboards/oddforge/vea/config.h b/keyboards/oddforge/vea/config.h
index 963f3ea313..316f8392c0 100644
--- a/keyboards/oddforge/vea/config.h
+++ b/keyboards/oddforge/vea/config.h
@@ -24,6 +24,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 9
diff --git a/keyboards/oddforge/vea/info.json b/keyboards/oddforge/vea/info.json
index b5299b1f3e..9b55d0f2b5 100644
--- a/keyboards/oddforge/vea/info.json
+++ b/keyboards/oddforge/vea/info.json
@@ -11,6 +11,9 @@
"backlight": {
"pin": "D4"
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"rgblight": {
"led_count": 18,
"sleep": true,
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/config.h b/keyboards/omkbd/runner3680/5x6_5x8/config.h
index 99e7de0d87..8cf1e8238d 100644
--- a/keyboards/omkbd/runner3680/5x6_5x8/config.h
+++ b/keyboards/omkbd/runner3680/5x6_5x8/config.h
@@ -21,11 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 70
-#define RGB_MATRIX_SPLIT { 30, 40 } // Number of LEDs
-#endif
-
#define SELECT_SOFT_SERIAL_SPEED 1
/*Sets the protocol speed when using serial communication*/
//Speeds:
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/info.json b/keyboards/omkbd/runner3680/5x6_5x8/info.json
index ed687ddb3d..8a7b34597e 100644
--- a/keyboards/omkbd/runner3680/5x6_5x8/info.json
+++ b/keyboards/omkbd/runner3680/5x6_5x8/info.json
@@ -9,7 +9,8 @@
"device_version": "0.0.5"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "split_count": [30, 40]
},
"matrix_pins": {
"cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"],
diff --git a/keyboards/opendeck/32/rev1/config.h b/keyboards/opendeck/32/rev1/config.h
index d5e824fdfb..17cf330d6d 100644
--- a/keyboards/opendeck/32/rev1/config.h
+++ b/keyboards/opendeck/32/rev1/config.h
@@ -15,60 +15,9 @@
*/
#pragma once
-// RGB matrix
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define RGB_MATRIX_LED_COUNT (4 * 8 * 3)
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_SPIRAL
+
#define RGB_MATRIX_DISABLE_KEYCODES
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
// Slim down the ROM
#define NO_ACTION_LAYER
diff --git a/keyboards/opendeck/32/rev1/info.json b/keyboards/opendeck/32/rev1/info.json
index 2d72d9d0b4..9ff22ec125 100644
--- a/keyboards/opendeck/32/rev1/info.json
+++ b/keyboards/opendeck/32/rev1/info.json
@@ -4,7 +4,56 @@
"rows": ["C7", "C6", "B6", "B5"]
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "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
+ },
+ "default": {
+ "animation": "cycle_spiral"
+ },
+ "driver": "is31fl3731",
+ "sleep": true
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
diff --git a/keyboards/opendeck/32/rev1/rev1.c b/keyboards/opendeck/32/rev1/rev1.c
index 0b062ecd38..2bf04f8479 100644
--- a/keyboards/opendeck/32/rev1/rev1.c
+++ b/keyboards/opendeck/32/rev1/rev1.c
@@ -17,7 +17,7 @@
#include "rev1.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -100,11 +100,15 @@ void keyboard_pre_init_kb(void) {
// We don't use this feature of the IS31FL3731 but it is electrically connected
// Make sure not to drive it
setPinInput(RGB_IRQ_N_PIN);
+
+ keyboard_pre_init_user();
}
-void keyboard_post_init_user(void) {
+void keyboard_post_init_kb(void) {
// RGB enabled by default, no way to turn off. No need to expend EEPROM write cycles here.
rgb_matrix_enable_noeeprom();
+
+ keyboard_post_init_user();
}
#endif
diff --git a/keyboards/ortho5by12/rules.mk b/keyboards/ortho5by12/rules.mk
index bf02b03119..6fe874e748 100644
--- a/keyboards/ortho5by12/rules.mk
+++ b/keyboards/ortho5by12/rules.mk
@@ -10,4 +10,3 @@ 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
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/orthograph/config.h b/keyboards/orthograph/config.h
new file mode 100644
index 0000000000..137c5601c9
--- /dev/null
+++ b/keyboards/orthograph/config.h
@@ -0,0 +1,20 @@
+/*
+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 EE_HANDS // need to flash eeprom with eeprom-lefthand.eep for left, etc
+
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
diff --git a/keyboards/orthograph/info.json b/keyboards/orthograph/info.json
new file mode 100644
index 0000000000..19d3f6b2fb
--- /dev/null
+++ b/keyboards/orthograph/info.json
@@ -0,0 +1,229 @@
+{
+ "keyboard_name": "Orthograph",
+ "url": "https://github.com/vladkvit",
+ "maintainer": "vladkvit",
+ "manufacturer": "vladkvit",
+ "build": {
+ "debounce_type": "asym_eager_defer_pk",
+ "lto": true
+ },
+ "debounce": 4,
+ "usb": {
+ "vid": "0x564B",
+ "pid": "0x0602",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "rgb_matrix": true,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "development_board": "elite_c",
+ "matrix_pins": {
+ "cols": ["B5", "B4", "D7", "C6", "D4", "D2", "D3", "F4"],
+ "rows": ["F5", "F6", "F7", "B1", "B3", "B2"]
+ },
+ "diode_direction": "COL2ROW",
+ "split": {
+ "enabled": true,
+ "soft_serial_pin": "E6",
+ "transport": {
+ "sync_matrix_state": true
+ },
+ "usb_detect":{
+ "enabled": true
+ }
+ },
+ "rgb_matrix": {
+ "default": {
+ "animation": "band_val"
+ },
+ "driver": "is31fl3733",
+ "split_count": [36, 46],
+ "layout": [
+ {"matrix":[0, 0], "flags":4, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":4, "x":16, "y":0},
+ {"matrix":[0, 2], "flags":4, "x":32, "y":0},
+ {"matrix":[0, 3], "flags":4, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":4, "x":64, "y":0},
+ {"matrix":[0, 5], "flags":4, "x":80, "y":0},
+ {"matrix":[1, 0], "flags":4, "x":0, "y":12},
+ {"matrix":[1, 1], "flags":4, "x":16, "y":12},
+ {"matrix":[1, 2], "flags":4, "x":32, "y":12},
+ {"matrix":[1, 3], "flags":4, "x":48, "y":12},
+ {"matrix":[1, 4], "flags":4, "x":64, "y":12},
+ {"matrix":[1, 5], "flags":4, "x":80, "y":12},
+ {"matrix":[2, 0], "flags":4, "x":0, "y":24},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":24},
+ {"matrix":[2, 2], "flags":4, "x":32, "y":24},
+ {"matrix":[2, 3], "flags":4, "x":48, "y":24},
+ {"matrix":[2, 4], "flags":4, "x":64, "y":24},
+ {"matrix":[2, 5], "flags":4, "x":80, "y":24},
+ {"matrix":[3, 0], "flags":1, "x":0, "y":36},
+ {"matrix":[3, 1], "flags":4, "x":16, "y":36},
+ {"matrix":[3, 2], "flags":4, "x":32, "y":36},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":36},
+ {"matrix":[3, 4], "flags":4, "x":64, "y":36},
+ {"matrix":[3, 5], "flags":4, "x":80, "y":36},
+ {"matrix":[4, 0], "flags":4, "x":0, "y":48},
+ {"matrix":[4, 1], "flags":4, "x":16, "y":48},
+ {"matrix":[4, 2], "flags":4, "x":32, "y":48},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":48},
+ {"matrix":[4, 4], "flags":4, "x":64, "y":48},
+ {"matrix":[4, 5], "flags":4, "x":80, "y":48},
+ {"matrix":[5, 0], "flags":4, "x":0, "y":60},
+ {"matrix":[5, 1], "flags":4, "x":16, "y":60},
+ {"matrix":[5, 2], "flags":4, "x":32, "y":60},
+ {"matrix":[5, 3], "flags":4, "x":48, "y":60},
+ {"matrix":[5, 4], "flags":4, "x":64, "y":60},
+ {"matrix":[5, 5], "flags":4, "x":80, "y":60},
+ {"matrix":[6, 0], "flags":4, "x":96, "y":0},
+ {"matrix":[6, 1], "flags":4, "x":112, "y":0},
+ {"matrix":[6, 2], "flags":4, "x":128, "y":0},
+ {"matrix":[6, 3], "flags":4, "x":144, "y":0},
+ {"matrix":[6, 4], "flags":4, "x":160, "y":0},
+ {"matrix":[6, 5], "flags":4, "x":176, "y":0},
+ {"matrix":[6, 6], "flags":4, "x":192, "y":0},
+
+
+ {"matrix":[7, 0], "flags":4, "x":96, "y":12},
+ {"matrix":[7, 1], "flags":4, "x":112, "y":12},
+ {"matrix":[7, 2], "flags":4, "x":128, "y":12},
+ {"matrix":[7, 3], "flags":4, "x":144, "y":12},
+ {"matrix":[7, 4], "flags":4, "x":160, "y":12},
+ {"matrix":[7, 5], "flags":4, "x":176, "y":12},
+ {"matrix":[7, 6], "flags":4, "x":192, "y":12},
+ {"matrix":[7, 7], "flags":4, "x":208, "y":12},
+ {"matrix":[8, 0], "flags":4, "x":96, "y":24},
+ {"matrix":[8, 1], "flags":4, "x":112, "y":24},
+ {"matrix":[8, 2], "flags":4, "x":128, "y":24},
+ {"matrix":[8, 3], "flags":4, "x":144, "y":24},
+ {"matrix":[8, 4], "flags":4, "x":160, "y":24},
+ {"matrix":[8, 5], "flags":4, "x":176, "y":24},
+ {"matrix":[8, 6], "flags":4, "x":192, "y":24},
+ {"matrix":[8, 7], "flags":4, "x":208, "y":24},
+ {"matrix":[9, 0], "flags":4, "x":96, "y":36},
+ {"matrix":[9, 1], "flags":4, "x":112, "y":36},
+ {"matrix":[9, 2], "flags":4, "x":128, "y":36},
+ {"matrix":[9, 3], "flags":4, "x":144, "y":36},
+ {"matrix":[9, 4], "flags":4, "x":160, "y":36},
+ {"matrix":[9, 5], "flags":4, "x":176, "y":36},
+ {"matrix":[9, 6], "flags":4, "x":192, "y":36},
+ {"matrix":[10, 0], "flags":4, "x":96, "y":48},
+ {"matrix":[10, 1], "flags":4, "x":112, "y":48},
+ {"matrix":[10, 2], "flags":4, "x":128, "y":48},
+ {"matrix":[10, 3], "flags":4, "x":144, "y":48},
+ {"matrix":[10, 4], "flags":4, "x":160, "y":48},
+ {"matrix":[10, 5], "flags":4, "x":176, "y":48},
+ {"matrix":[10, 6], "flags":4, "x":192, "y":48},
+ {"matrix":[10, 7], "flags":4, "x":208, "y":48},
+ {"matrix":[11, 0], "flags":4, "x":96, "y":60},
+ {"matrix":[11, 1], "flags":4, "x":112, "y":60},
+ {"matrix":[11, 2], "flags":4, "x":128, "y":60},
+ {"matrix":[11, 3], "flags":4, "x":144, "y":60},
+ {"matrix":[11, 4], "flags":4, "x":160, "y":60},
+ {"matrix":[11, 5], "flags":4, "x":176, "y":60},
+ {"matrix":[11, 6], "flags":4, "x":192, "y":60},
+ {"matrix":[11, 7], "flags":4, "x":208, "y":60}
+
+ ],
+ "animations": {
+ "alphas_mods": true,
+ "band_val": true,
+ "cycle_spiral": true
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "label":"Esc", "x":0.75, "y":0, "w":1.5},
+ {"matrix": [0, 1], "label":"F1", "x":2.25, "y":0},
+ {"matrix": [0, 2], "label":"F2", "x":3.25, "y":0},
+ {"matrix": [0, 3], "label":"F3", "x":4.25, "y":0},
+ {"matrix": [0, 4], "label":"F4", "x":5.25, "y":0},
+ {"matrix": [0, 5], "label":"F5", "x":6.25, "y":0},
+ {"matrix": [6, 0], "label":"F6", "x":12.5, "y":0},
+ {"matrix": [6, 1], "label":"F7", "x":13.5, "y":0},
+ {"matrix": [6, 2], "label":"F8", "x":14.5, "y":0},
+ {"matrix": [6, 3], "label":"F9", "x":15.5, "y":0},
+ {"matrix": [6, 4], "label":"F10", "x":16.5, "y":0},
+ {"matrix": [6, 5], "label":"F11", "x":17.5, "y":0},
+ {"matrix": [6, 6], "label":"F12", "x":18.5, "y":0},
+ {"matrix": [1, 0], "label":"~", "x":0.75, "y":1, "w":1.5},
+ {"matrix": [1, 1], "label":"1", "x":2.25, "y":1},
+ {"matrix": [1, 2], "label":"2", "x":3.25, "y":1},
+ {"matrix": [1, 3], "label":"3", "x":4.25, "y":1},
+ {"matrix": [1, 4], "label":"4", "x":5.25, "y":1},
+ {"matrix": [1, 5], "label":"5", "x":6.25, "y":1},
+ {"matrix": [7, 0], "label":"^", "x":12.5, "y":1},
+ {"matrix": [7, 1], "label":"&", "x":13.5, "y":1},
+ {"matrix": [7, 2], "label":"*", "x":14.5, "y":1},
+ {"matrix": [7, 3], "label":"(", "x":15.5, "y":1},
+ {"matrix": [7, 4], "label":")", "x":16.5, "y":1},
+ {"matrix": [7, 5], "label":"_", "x":17.5, "y":1},
+ {"matrix": [7, 6], "label":"+", "x":18.5, "y":1},
+ {"matrix": [7, 7], "label":"Backspace", "x":19.5, "y":1, "w":1.5},
+ {"matrix": [2, 0], "label":"Tab", "x":0.75, "y":2, "w":1.5},
+ {"matrix": [2, 1], "label":"Q", "x":2.25, "y":2},
+ {"matrix": [2, 2], "label":"W", "x":3.25, "y":2},
+ {"matrix": [2, 3], "label":"E", "x":4.25, "y":2},
+ {"matrix": [2, 4], "label":"R", "x":5.25, "y":2},
+ {"matrix": [2, 5], "label":"T", "x":6.25, "y":2},
+ {"matrix": [8, 0], "label":"Y", "x":12.5, "y":2},
+ {"matrix": [8, 1], "label":"U", "x":13.5, "y":2},
+ {"matrix": [8, 2], "label":"I", "x":14.5, "y":2},
+ {"matrix": [8, 3], "label":"O", "x":15.5, "y":2},
+ {"matrix": [8, 4], "label":"P", "x":16.5, "y":2},
+ {"matrix": [8, 5], "label":"{", "x":17.5, "y":2},
+ {"matrix": [8, 6], "label":"}", "x":18.5, "y":2},
+ {"matrix": [8, 7], "label":"|", "x":19.5, "y":2, "w":1.5},
+ {"matrix": [3, 0], "label":"Caps", "x":0.75, "y":3, "w":1.5},
+ {"matrix": [3, 1], "label":"A", "x":2.25, "y":3},
+ {"matrix": [3, 2], "label":"S", "x":3.25, "y":3},
+ {"matrix": [3, 3], "label":"D", "x":4.25, "y":3},
+ {"matrix": [3, 4], "label":"F", "x":5.25, "y":3},
+ {"matrix": [3, 5], "label":"G", "x":6.25, "y":3},
+ {"matrix": [9, 0], "label":"H", "x":12.5, "y":3},
+ {"matrix": [9, 1], "label":"J", "x":13.5, "y":3},
+ {"matrix": [9, 2], "label":"K", "x":14.5, "y":3},
+ {"matrix": [9, 3], "label":"L", "x":15.5, "y":3},
+ {"matrix": [9, 4], "label":":", "x":16.5, "y":3},
+ {"matrix": [9, 5], "label":"\"", "x":17.5, "y":3},
+ {"matrix": [9, 6], "label":"Enter", "x":18.5, "y":3, "w":2.25},
+ {"matrix": [4, 0], "label":"Shift", "x":0.75, "y":4, "w":1.5},
+ {"matrix": [4, 1], "label":"Z", "x":2.25, "y":4},
+ {"matrix": [4, 2], "label":"X", "x":3.25, "y":4},
+ {"matrix": [4, 3], "label":"C", "x":4.25, "y":4},
+ {"matrix": [4, 4], "label":"V", "x":5.25, "y":4},
+ {"matrix": [4, 5], "label":"B", "x":6.25, "y":4},
+ {"matrix": [10, 0], "label":"N", "x":12.5, "y":4},
+ {"matrix": [10, 1], "label":"M", "x":13.5, "y":4},
+ {"matrix": [10, 2], "label":"<", "x":14.5, "y":4},
+ {"matrix": [10, 3], "label":">", "x":15.5, "y":4},
+ {"matrix": [10, 4], "label":"?", "x":16.5, "y":4},
+ {"matrix": [10, 5], "label":"Shift", "x":17.5, "y":4, "w":1.5},
+ {"matrix": [10, 6], "label":"\u2191", "x":19, "y":4},
+ {"matrix": [10, 7], "label":"mx", "x":20, "y":4},
+ {"matrix": [5, 0], "label":"Ctrl", "x":1, "y":5, "w":1.25},
+ {"matrix": [5, 1], "label":"Win", "x":2.25, "y":5, "w":1.25},
+ {"matrix": [5, 2], "label":"Alt", "x":3.5, "y":5, "w":1.25},
+ {"matrix": [5, 3], "label":"Menu", "x":4.75, "y":5, "w":1.25},
+ {"matrix": [5, 4], "label":"space", "x":0, "y":4.75, "h":2},
+ {"matrix": [5, 5], "label":"fn", "x":1, "y":4.75, "h":2},
+ {"matrix": [11, 0], "label":"space2", "x":-2, "y":4.5, "h":2},
+ {"matrix": [11, 1], "label":"fn", "x":-1.0, "y":4.5, "h":2},
+ {"matrix": [11, 2], "label":"Alt", "x":14.25, "y":5, "w":1.25},
+ {"matrix": [11, 3], "label":"Win", "x":15.5, "y":5, "w":1.25},
+ {"matrix": [11, 4], "label":"Ctrl", "x":16.75, "y":5, "w":1.25},
+ {"matrix": [11, 5], "label":"\u2190", "x":18, "y":5},
+ {"matrix": [11, 6], "label":"\u2193", "x":19, "y":5},
+ {"matrix": [11, 7], "label":"\u2192", "x":20, "y":5}
+
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/orthograph/keymaps/default/keymap.json b/keyboards/orthograph/keymaps/default/keymap.json
new file mode 100644
index 0000000000..fcd2e26edc
--- /dev/null
+++ b/keyboards/orthograph/keymaps/default/keymap.json
@@ -0,0 +1,24 @@
+{
+ "keyboard": "orthograph",
+ "keymap": "default",
+ "layout": "LAYOUT",
+ "layers":
+ [
+ [
+ "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12",
+ "KC_GRAVE","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_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_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_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_PSCR",
+ "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_APP", "KC_SPC", "MO(1)", "KC_SPC", "MO(1)", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"
+ ],
+ [
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS", "KC_HOME", "KC_PGUP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_DEL", "KC_END", "KC_PGDN", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_MODE_FORWARD","KC_TRNS", "RGB_TOG", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
+ ]
+ ]
+} \ No newline at end of file
diff --git a/keyboards/orthograph/orthograph.c b/keyboards/orthograph/orthograph.c
new file mode 100644
index 0000000000..04d2582937
--- /dev/null
+++ b/keyboards/orthograph/orthograph.c
@@ -0,0 +1,128 @@
+/* Copyright 2023 vladkvit
+ *
+ * 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 "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+{0, A_6, B_6, C_6},
+{0, A_5, B_5, C_5},
+{0, A_4, B_4, C_4},
+{0, A_3, B_3, C_3},
+{0, A_2, B_2, C_2},
+{0, A_1, B_1, C_1},
+
+{0, D_6, E_6, F_6},
+{0, D_5, E_5, F_5},
+{0, D_4, E_4, F_4},
+{0, D_3, E_3, F_3},
+{0, D_2, E_2, F_2},
+{0, D_1, E_1, F_1},
+
+{0, G_6, H_6, I_6},
+{0, G_5, H_5, I_5},
+{0, G_4, H_4, I_4},
+{0, G_3, H_3, I_3},
+{0, G_2, H_2, I_2},
+{0, G_1, H_1, I_1},
+
+{0, A_14, B_14, C_14},
+{0, A_13, B_13, C_13},
+{0, A_12, B_12, C_12},
+{0, A_11, B_11, C_11},
+{0, A_10, B_10, C_10},
+{0, A_9, B_9, C_9},
+
+{0, D_14, E_14, F_14},
+{0, D_13, E_13, F_13},
+{0, D_12, E_12, F_12},
+{0, D_11, E_11, F_11},
+{0, D_10, E_10, F_10},
+{0, D_9, E_9, F_9},
+
+{0, G_14, H_14, I_14},
+{0, G_13, H_13, I_13},
+{0, G_12, H_12, I_12},
+{0, G_11, H_11, I_11},
+{0, G_10, H_10, I_10},
+{0, G_9, H_9, I_9},
+
+//----------------
+
+
+{0, A_6, B_6, C_6},
+{0, A_5, B_5, C_5},
+{0, A_4, B_4, C_4},
+{0, A_3, B_3, C_3},
+{0, A_2, B_2, C_2},
+{0, A_1, B_1, C_1},
+{0, A_16, B_16, C_16},
+// {0, A_15, B_15, C_15},
+
+
+{0, D_6, E_6, F_6},
+{0, D_5, E_5, F_5},
+{0, D_4, E_4, F_4},
+{0, D_3, E_3, F_3},
+{0, D_2, E_2, F_2},
+{0, D_1, E_1, F_1},
+{0, D_16, E_16, F_16},
+{0, D_15, E_15, F_15},
+
+{0, G_6, H_6, I_6},
+{0, G_5, H_5, I_5},
+{0, G_4, H_4, I_4},
+{0, G_3, H_3, I_3},
+{0, G_2, H_2, I_2},
+{0, G_1, H_1, I_1},
+{0, G_16, H_16, I_16},
+{0, G_15, H_15, I_15},
+
+{0, A_14, B_14, C_14},
+{0, A_13, B_13, C_13},
+{0, A_12, B_12, C_12},
+{0, A_11, B_11, C_11},
+{0, A_10, B_10, C_10},
+{0, A_9, B_9, C_9},
+{0, A_8, B_8, C_8},
+// {0, A_7, B_7, C_7},
+
+{0, D_14, E_14, F_14},
+{0, D_13, E_13, F_13},
+{0, D_12, E_12, F_12},
+{0, D_11, E_11, F_11},
+{0, D_10, E_10, F_10},
+{0, D_9, E_9, F_9},
+{0, D_8, E_8, F_8},
+{0, D_7, E_7, F_7},
+
+{0, G_14, H_14, I_14},
+{0, G_13, H_13, I_13},
+{0, G_12, H_12, I_12},
+{0, G_11, H_11, I_11},
+{0, G_10, H_10, I_10},
+{0, G_9, H_9, I_9},
+{0, G_8, H_8, I_8},
+{0, G_7, H_7, I_7}
+};
+
+#endif
diff --git a/keyboards/orthograph/readme.md b/keyboards/orthograph/readme.md
new file mode 100644
index 0000000000..126ab6d1d9
--- /dev/null
+++ b/keyboards/orthograph/readme.md
@@ -0,0 +1,25 @@
+# Orthograph
+
+Split ortho keyboard with RGB backlighting
+
+* Keyboard Maintainer: [vladkvit](https://github.com/vladkvit)
+* Hardware Supported: Two PCBs + thin Pro Micro compatible boards (Elite C has been extensively tested). Boards with castellated holes (Elite C style) are much easier to install. Maximum thickness is around 3-3.5mm, so a stock Pro Micro (4mm) will not work.
+* Hardware Availability: https://github.com/vladkvit/orthograph_keyboard for PCB, https://cad.onshape.com/documents/4f736d64448134c948af475a/w/ccab05fd44a7db98ce27216a/e/49ebfb6b27080b9b45bea74a?renderMode=0&uiState=64dd45dbc62cae486db10048 and https://cad.onshape.com/documents/5ff52821d2cb196f3db3d1e8/w/04b7cb21b748da89c8df31e6/e/486b72e32db97b2dfdf00af8 for the hardware
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb orthograph -km default
+
+Flashing example for this keyboard:
+ qmk flash -kb orthograph -km default
+ Then, flash EEPROM with handedness (left / right) on both sides.
+
+The reset button is on the underside of each half of the keyboard.
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/orthograph/rules.mk b/keyboards/orthograph/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/orthograph/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/owlab/voice65/hotswap/config.h b/keyboards/owlab/voice65/hotswap/config.h
index 8599c084d2..96c0c784c0 100644
--- a/keyboards/owlab/voice65/hotswap/config.h
+++ b/keyboards/owlab/voice65/hotswap/config.h
@@ -17,66 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-# define OWL_VOLUME_RANGE 50
+#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-/* RGB matrix */
#ifdef RGB_MATRIX_ENABLE
-# define USE_I2CV2
# define RGB_MATRIX_DISABLE_KEYCODES
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_DEFAULT_VAL 128
-# define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-# define RGB_MATRIX_LED_COUNT 67
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
diff --git a/keyboards/owlab/voice65/hotswap/hotswap.c b/keyboards/owlab/voice65/hotswap/hotswap.c
index b4c0c02c32..107952d370 100644
--- a/keyboards/owlab/voice65/hotswap/hotswap.c
+++ b/keyboards/owlab/voice65/hotswap/hotswap.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS3_SW1, CS2_SW1, CS1_SW1}, /* RGB0-ESC ROW0*/
{0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB1-1 */
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB2-2 */
diff --git a/keyboards/owlab/voice65/hotswap/info.json b/keyboards/owlab/voice65/hotswap/info.json
index 7b1ff47794..d32b74cfcb 100644
--- a/keyboards/owlab/voice65/hotswap/info.json
+++ b/keyboards/owlab/voice65/hotswap/info.json
@@ -10,7 +10,59 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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
+ },
+ "default": {
+ "val": 128
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A15", "B8", "B9", "B12", "B13"],
diff --git a/keyboards/owlab/voice65/soldered/config.h b/keyboards/owlab/voice65/soldered/config.h
index 9533e00a02..96c0c784c0 100644
--- a/keyboards/owlab/voice65/soldered/config.h
+++ b/keyboards/owlab/voice65/soldered/config.h
@@ -17,67 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-# define OWL_VOLUME_RANGE 50
+#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-/* RGB matrix*/
#ifdef RGB_MATRIX_ENABLE
-# define USE_I2CV2
# define RGB_MATRIX_DISABLE_KEYCODES
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_DEFAULT_VAL 128
-# define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-# define RGB_MATRIX_LED_COUNT 71
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
diff --git a/keyboards/owlab/voice65/soldered/info.json b/keyboards/owlab/voice65/soldered/info.json
index 8e96d68928..4cae769a94 100644
--- a/keyboards/owlab/voice65/soldered/info.json
+++ b/keyboards/owlab/voice65/soldered/info.json
@@ -10,7 +10,59 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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
+ },
+ "default": {
+ "val": 128
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A15", "B8", "B9", "B12", "B13"],
diff --git a/keyboards/owlab/voice65/soldered/soldered.c b/keyboards/owlab/voice65/soldered/soldered.c
index 301a5adc59..eb3b68515a 100644
--- a/keyboards/owlab/voice65/soldered/soldered.c
+++ b/keyboards/owlab/voice65/soldered/soldered.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS3_SW1, CS2_SW1, CS1_SW1}, /* RGB0-ESC ROW0*/
{0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB1-1 */
{0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB2-2 */
diff --git a/keyboards/pangorin/tan67/config.h b/keyboards/pangorin/tan67/config.h
deleted file mode 100644
index 9583631647..0000000000
--- a/keyboards/pangorin/tan67/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2023 Pangorin <https://github.com/pangorin>
- *
- * 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
-#ifdef RGB_MATRIX_ENABLE
- /* RGB Matrix config */
- #define RGB_MATRIX_LED_COUNT 84
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#endif
diff --git a/keyboards/paprikman/albacore/config.h b/keyboards/paprikman/albacore/config.h
deleted file mode 100644
index ede3d42de5..0000000000
--- a/keyboards/paprikman/albacore/config.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-Copyright 2021 paprikman
-
-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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 8
- #define RGB_DISABLE_WHEN_USB_SUSPENDED
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220
- #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define DISABLE_RGB_MATRIX_BAND_SAT
- #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define DISABLE_RGB_MATRIX_SPLASH
- #define DISABLE_RGB_MATRIX_MULTISPLASH
- #define DISABLE_RGB_MATRIX_SOLID_SPLASH
- #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
- #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
-#endif
diff --git a/keyboards/paprikman/albacore/info.json b/keyboards/paprikman/albacore/info.json
index 5fad6237fa..bee94e84b1 100644
--- a/keyboards/paprikman/albacore/info.json
+++ b/keyboards/paprikman/albacore/info.json
@@ -9,7 +9,9 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 220,
+ "sleep": true
},
"matrix_pins": {
"cols": ["C6", "B6", "B5", "B4"],
diff --git a/keyboards/percent/canoe_gen2/config.h b/keyboards/percent/canoe_gen2/config.h
index 062ba8102e..1f54b79bd0 100644
--- a/keyboards/percent/canoe_gen2/config.h
+++ b/keyboards/percent/canoe_gen2/config.h
@@ -21,59 +21,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-/* Backlight configuration
- */
-#define RGB_MATRIX_LED_COUNT 77
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/percent/canoe_gen2/info.json b/keyboards/percent/canoe_gen2/info.json
index 0cdb8f9819..0fe5d0e894 100644
--- a/keyboards/percent/canoe_gen2/info.json
+++ b/keyboards/percent/canoe_gen2/info.json
@@ -12,7 +12,40 @@
"pin": "B7"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "driver": "ws2812",
+ "max_brightness": 150,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "D0", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "D1", "F6", "F7"],
diff --git a/keyboards/phage_studio/pila87/config.h b/keyboards/phage_studio/pila87/config.h
deleted file mode 100644
index 2f4f0fac76..0000000000
--- a/keyboards/phage_studio/pila87/config.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2022 Phage Studio
- * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
- *
- * 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
-
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 91
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
- #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
- /* RGB Matrix effect */
- #define ENABLE_RGB_MATRIX_ALPHAS_MODS
- #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
- #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_BREATHING
- #define ENABLE_RGB_MATRIX_BAND_SAT
- #define ENABLE_RGB_MATRIX_BAND_VAL
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
- #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
- #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
- #define ENABLE_RGB_MATRIX_CYCLE_ALL
- #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
- #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
- #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
- #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
- #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
- #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
- #define ENABLE_RGB_MATRIX_DUAL_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
- #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
- #define ENABLE_RGB_MATRIX_RAINDROPS
- #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
- #define ENABLE_RGB_MATRIX_HUE_BREATHING
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM
- #define ENABLE_RGB_MATRIX_HUE_WAVE
- #define ENABLE_RGB_MATRIX_PIXEL_RAIN
- #define ENABLE_RGB_MATRIX_PIXEL_FLOW
- #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
- #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
- #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
- #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
- #define ENABLE_RGB_MATRIX_SPLASH
- #define ENABLE_RGB_MATRIX_MULTISPLASH
- #define ENABLE_RGB_MATRIX_SOLID_SPLASH
- #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
diff --git a/keyboards/phage_studio/pila87/info.json b/keyboards/phage_studio/pila87/info.json
index c7157bc573..4d12cf2573 100644
--- a/keyboards/phage_studio/pila87/info.json
+++ b/keyboards/phage_studio/pila87/info.json
@@ -9,7 +9,53 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 200
},
"processor": "STM32F103",
"bootloader": "stm32duino",
diff --git a/keyboards/phase_studio/titan65/hotswap/config.h b/keyboards/phase_studio/titan65/hotswap/config.h
deleted file mode 100644
index 8724fc556d..0000000000
--- a/keyboards/phase_studio/titan65/hotswap/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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
-
-#define RGB_MATRIX_LED_COUNT 67
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
diff --git a/keyboards/phase_studio/titan65/hotswap/info.json b/keyboards/phase_studio/titan65/hotswap/info.json
index a455235168..2c1f3e2854 100644
--- a/keyboards/phase_studio/titan65/hotswap/info.json
+++ b/keyboards/phase_studio/titan65/hotswap/info.json
@@ -12,7 +12,8 @@
"pin": "E6"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 150
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "B7", "D0", "D1", "D2", "D3", "D5", "F0", "F1", "C7", "F4", "F5", "F6"],
diff --git a/keyboards/phentech/rpk_001/config.h b/keyboards/phentech/rpk_001/config.h
index baa207f065..45229ec27b 100644
--- a/keyboards/phentech/rpk_001/config.h
+++ b/keyboards/phentech/rpk_001/config.h
@@ -4,9 +4,8 @@
#pragma once
/* RGB Config */
-#define DRIVER_1_CS B6
-#define DRIVER_1_EN B7
-#define RGB_MATRIX_LED_COUNT 67
+#define AW20216S_CS_PIN_1 B6
+#define AW20216S_EN_PIN_1 B7
/* SPI Config */
#define SPI_DRIVER SPIDQ
@@ -16,9 +15,3 @@
/* SPI Flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
-
-/* RGB Matrix */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
diff --git a/keyboards/phentech/rpk_001/info.json b/keyboards/phentech/rpk_001/info.json
index d047c36456..d61c83607a 100644
--- a/keyboards/phentech/rpk_001/info.json
+++ b/keyboards/phentech/rpk_001/info.json
@@ -42,9 +42,8 @@
"on_state": 0
},
"rgb_matrix": {
- "driver": "aw20216",
+ "driver": "aw20216s",
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
@@ -161,7 +160,9 @@
{ "flags": 1, "matrix": [4, 11], "x": 192, "y": 64},
{ "flags": 1, "matrix": [4, 13], "x": 208, "y": 64},
{ "flags": 1, "matrix": [4, 14], "x": 224, "y": 64}
- ]
+ ],
+ "react_on_keyup": true,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/phentech/rpk_001/rpk_001.c b/keyboards/phentech/rpk_001/rpk_001.c
index 9f1a118759..b24c0c6c0e 100644
--- a/keyboards/phentech/rpk_001/rpk_001.c
+++ b/keyboards/phentech/rpk_001/rpk_001.c
@@ -7,7 +7,7 @@
// clang-format off
-const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
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/default/keymap.c b/keyboards/pico/65keys/keymaps/default/keymap.c
deleted file mode 100644
index eb0ea05fc2..0000000000
--- a/keyboards/pico/65keys/keymaps/default/keymap.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define KC_ALES LALT_T(KC_ESC)
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- 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_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_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_INT3 ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_GRV ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,KC_CIRC ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
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/pico/65keys/keymaps/jis/keymap.c b/keyboards/pico/65keys/keymaps/jis/keymap.c
deleted file mode 100644
index 9f3f640f01..0000000000
--- a/keyboards/pico/65keys/keymaps/jis/keymap.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include QMK_KEYBOARD_H
-#include"keymap_japanese.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define KC_ALES LALT_T(KC_ESC)
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- 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 ,JP_AT ,JP_CIRC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,JP_COLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,JP_YEN ,JP_TILD ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,JP_GRV ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,JP_UNDS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,_______ ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/pico/70keys/keymaps/default/keymap.c b/keyboards/pico/70keys/keymaps/default/keymap.c
deleted file mode 100644
index 3c3ab50c17..0000000000
--- a/keyboards/pico/70keys/keymaps/default/keymap.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define KC_ALES LALT_T(KC_ESC)
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = 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_BSPC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,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_LCTL ,KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- KC_LSFT ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_INT3 ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_GRV ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,KC_CIRC ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,KC_UNDS ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/pico/70keys/keymaps/jis/keymap.c b/keyboards/pico/70keys/keymaps/jis/keymap.c
deleted file mode 100644
index 5727cb7841..0000000000
--- a/keyboards/pico/70keys/keymaps/jis/keymap.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include QMK_KEYBOARD_H
-#include"keymap_japanese.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define KC_ALES LALT_T(KC_ESC)
-#define KC_L1SYM LT(_SYMB, KC_LNG1)
-#define KC_L2SYM LT(_SYMB, KC_LNG2)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_CIRC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,JP_COLN ,KC_ENT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- KC_LSFT ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_UP ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- KC_ALES ,KC_ALES ,KC_ENT ,KC_DEL ,KC_LGUI ,KC_L2SYM,KC_SPC , KC_SPC ,KC_L1SYM,KC_RGUI ,KC_DEL ,KC_LEFT ,KC_DOWN ,KC_RGHT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LPRN ,KC_RPRN ,KC_PIPE ,JP_YEN ,JP_TILD ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,JP_GRV ,KC_MINS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┬────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LCBR ,KC_RCBR ,_______ ,_______ ,_______ ,JP_UNDS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,KC_LT ,_______ ,KC_GT
- //└────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/pico/readme.md b/keyboards/pico/readme.md
deleted file mode 100644
index 891bb174fe..0000000000
--- a/keyboards/pico/readme.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Pico keyboard
-
-A split keyboard kit designed for small hands.
-Pico adopted the footprint for [Kailh Mid-Height](http://www.kailh.com/en/Products/Ks/KHS/) smaller than Cherry MX compatible switches.
-
-* Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
-* Hardware Supported: Pico PCB rev1.0 w/ Pro Micro
-
-Make example for this keyboard (after setting up your build environment):
-
- make pico/65keys:default
-
-## 65 keys
-<p align="center">
- <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard.jpg" alt="Pico Keyboard 65 keys" width="600"/>
-</p>
-
-## 70 keys
-<p align="center">
- <img src="https://raw.githubusercontent.com/kumaokobo/pico-keyboard/master/img/pico-keyboard2.jpg" alt="Pico Keyboard 70 keys" width="600"/>
-</p>
-
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/pico/rules.mk b/keyboards/pico/rules.mk
deleted file mode 100644
index fac3912a25..0000000000
--- a/keyboards/pico/rules.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-SPLIT_KEYBOARD = yes
-
-DEFAULT_FOLDER = pico/65keys
diff --git a/keyboards/pisces/config.h b/keyboards/pisces/config.h
index 4cb5aaf54e..cbdce6f83e 100644
--- a/keyboards/pisces/config.h
+++ b/keyboards/pisces/config.h
@@ -18,6 +18,8 @@
/* Select hand configuration */
#define SPLIT_HAND_MATRIX_GRID B0,B7
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
+
#define MATRIX_MASKED
#define SPLIT_USB_DETECT
diff --git a/keyboards/planck/ez/config.h b/keyboards/planck/ez/config.h
index 93d0823714..74d8d21155 100644
--- a/keyboards/planck/ez/config.h
+++ b/keyboards/planck/ez/config.h
@@ -52,63 +52,6 @@
#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
-#define RGB_MATRIX_LED_COUNT 47
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_LED_PROCESS_LIMIT 5
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c
index dfadb820ae..532558a294 100644
--- a/keyboards/planck/ez/ez.c
+++ b/keyboards/planck/ez/ez.c
@@ -21,7 +21,7 @@
keyboard_config_t keyboard_config;
#ifdef RGB_MATRIX_ENABLE
-const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/planck/ez/info.json b/keyboards/planck/ez/info.json
index 6848239279..044e187c4b 100644
--- a/keyboards/planck/ez/info.json
+++ b/keyboards/planck/ez/info.json
@@ -7,7 +7,55 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3737"
+ "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": "is31fl3737",
+ "led_process_limit": 5,
+ "led_flush_limit": 26,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "A7", "B0"],
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index a19a4fceaa..9d3db5cdb7 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -14,8 +14,6 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
ENCODER_ENABLE = yes
-LAYOUTS_HAS_RGB = no
-
RGB_MATRIX_SUPPORTED = yes
RGBLIGHT_SUPPORTED = no
BAKCLIGHT_SUPPORTED = no
diff --git a/keyboards/planck/light/config.h b/keyboards/planck/light/config.h
index 6d12061b51..7c78d7cd3c 100644
--- a/keyboards/planck/light/config.h
+++ b/keyboards/planck/light/config.h
@@ -9,55 +9,3 @@
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-
-#define DRIVER_1_LED_TOTAL 25
-#define DRIVER_2_LED_TOTAL 24
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/planck/light/info.json b/keyboards/planck/light/info.json
index b6f3df8fe6..8fc112664b 100644
--- a/keyboards/planck/light/info.json
+++ b/keyboards/planck/light/info.json
@@ -9,6 +9,51 @@
"device_version": "0.0.1"
},
"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": "is31fl3731"
},
"matrix_pins": {
diff --git a/keyboards/planck/light/light.c b/keyboards/planck/light/light.c
index 828319c66d..44bd89dc11 100644
--- a/keyboards/planck/light/light.c
+++ b/keyboards/planck/light/light.c
@@ -16,7 +16,7 @@
#include "quantum.h"
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/planck/light/rules.mk b/keyboards/planck/light/rules.mk
index dbc992922b..a8efaf98f4 100644
--- a/keyboards/planck/light/rules.mk
+++ b/keyboards/planck/light/rules.mk
@@ -12,5 +12,3 @@ MIDI_ENABLE = yes # MIDI support
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGB_MATRIX_ENABLE = yes
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev1/rules.mk b/keyboards/planck/rev1/rules.mk
index 8827627e99..99b8691962 100644
--- a/keyboards/planck/rev1/rules.mk
+++ b/keyboards/planck/rev1/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev2/rules.mk b/keyboards/planck/rev2/rules.mk
index 8827627e99..99b8691962 100644
--- a/keyboards/planck/rev2/rules.mk
+++ b/keyboards/planck/rev2/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev3/rules.mk b/keyboards/planck/rev3/rules.mk
index 8827627e99..99b8691962 100644
--- a/keyboards/planck/rev3/rules.mk
+++ b/keyboards/planck/rev3/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev4/rules.mk b/keyboards/planck/rev4/rules.mk
index 78e1ba9f7b..73d6182ff4 100644
--- a/keyboards/planck/rev4/rules.mk
+++ b/keyboards/planck/rev4/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev5/rules.mk b/keyboards/planck/rev5/rules.mk
index 78e1ba9f7b..73d6182ff4 100644
--- a/keyboards/planck/rev5/rules.mk
+++ b/keyboards/planck/rev5/rules.mk
@@ -10,5 +10,3 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h
index a0a997f860..7fec8be56b 100644
--- a/keyboards/planck/rev6/config.h
+++ b/keyboards/planck/rev6/config.h
@@ -43,12 +43,8 @@
/*
* WS2812 Underglow Matrix options
*/
-#define RGB_MATRIX_LED_COUNT 9
-
#define WS2812_PWM_DRIVER PWMD2
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
#define WS2812_DMA_CHANNEL 2
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/planck/rev6/info.json b/keyboards/planck/rev6/info.json
index a6ad35281d..add17963b4 100644
--- a/keyboards/planck/rev6/info.json
+++ b/keyboards/planck/rev6/info.json
@@ -16,7 +16,8 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "A7", "B0"],
diff --git a/keyboards/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk
index 048b723c4c..ce96f94079 100644
--- a/keyboards/planck/rev6/rules.mk
+++ b/keyboards/planck/rev6/rules.mk
@@ -14,5 +14,3 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
RGB_MATRIX_ENABLE = no
ENCODER_ENABLE = yes
DIP_SWITCH_ENABLE = yes
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev6_drop/config.h b/keyboards/planck/rev6_drop/config.h
index a0a997f860..7fec8be56b 100644
--- a/keyboards/planck/rev6_drop/config.h
+++ b/keyboards/planck/rev6_drop/config.h
@@ -43,12 +43,8 @@
/*
* WS2812 Underglow Matrix options
*/
-#define RGB_MATRIX_LED_COUNT 9
-
#define WS2812_PWM_DRIVER PWMD2
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
#define WS2812_DMA_CHANNEL 2
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/planck/rev6_drop/info.json b/keyboards/planck/rev6_drop/info.json
index d224561c7f..aff2eef5d7 100644
--- a/keyboards/planck/rev6_drop/info.json
+++ b/keyboards/planck/rev6_drop/info.json
@@ -16,7 +16,8 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "A7", "B0"],
diff --git a/keyboards/planck/rev6_drop/rules.mk b/keyboards/planck/rev6_drop/rules.mk
index 3eb3eac7eb..022a5ccd53 100644
--- a/keyboards/planck/rev6_drop/rules.mk
+++ b/keyboards/planck/rev6_drop/rules.mk
@@ -17,5 +17,3 @@ ENCODER_ENABLE = yes
DIP_SWITCH_ENABLE = yes
SRC += matrix.c
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev7/config.h b/keyboards/planck/rev7/config.h
index 678cb1d438..a5e49c8a53 100644
--- a/keyboards/planck/rev7/config.h
+++ b/keyboards/planck/rev7/config.h
@@ -30,8 +30,6 @@
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
#define WS2812_DMA_CHANNEL 2
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/planck/rev7/info.json b/keyboards/planck/rev7/info.json
index 72dce51d83..2275965ebd 100644
--- a/keyboards/planck/rev7/info.json
+++ b/keyboards/planck/rev7/info.json
@@ -13,7 +13,8 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "sleep": true
},
"matrix_pins": {
"cols": ["B11", "B10", "B2", "B1", "A7", "B0"],
diff --git a/keyboards/planck/rev7/rules.mk b/keyboards/planck/rev7/rules.mk
index 38710bc00b..04b21019ae 100644
--- a/keyboards/planck/rev7/rules.mk
+++ b/keyboards/planck/rev7/rules.mk
@@ -5,5 +5,3 @@ CUSTOM_MATRIX = lite
DIP_SWITCH_ENABLE = yes
SRC += matrix.c
-
-LAYOUTS_HAS_RGB = no
diff --git a/keyboards/playkbtw/pk64rgb/config.h b/keyboards/playkbtw/pk64rgb/config.h
index 6e30ee857a..3922034290 100644
--- a/keyboards/playkbtw/pk64rgb/config.h
+++ b/keyboards/playkbtw/pk64rgb/config.h
@@ -16,27 +16,9 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_KEYPRESSES
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
- #define RGB_MATRIX_LED_PROCESS_LIMIT 20
- #define RGB_MATRIX_LED_FLUSH_LIMIT 26
- #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
- #define RGB_MATRIX_LED_COUNT 64
+#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
-
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define DISABLE_RGB_MATRIX_BAND_SAT
-#define DISABLE_RGB_MATRIX_BAND_VAL
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#endif
+#define RGB_MATRIX_LED_COUNT 64
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/playkbtw/pk64rgb/info.json b/keyboards/playkbtw/pk64rgb/info.json
index 727b9c0a5c..ee2849f14f 100644
--- a/keyboards/playkbtw/pk64rgb/info.json
+++ b/keyboards/playkbtw/pk64rgb/info.json
@@ -9,7 +9,10 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "driver": "is31fl3733",
+ "led_flush_limit": 26,
+ "led_process_limit": 20,
+ "max_brightness": 160
},
"matrix_pins": {
"cols": ["B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "B1", "B2", "B3", "B7"],
diff --git a/keyboards/playkbtw/pk64rgb/pk64rgb.c b/keyboards/playkbtw/pk64rgb/pk64rgb.c
index 427d1cf04e..17b8c74b18 100644
--- a/keyboards/playkbtw/pk64rgb/pk64rgb.c
+++ b/keyboards/playkbtw/pk64rgb/pk64rgb.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/plywrks/ply8x/config.h b/keyboards/plywrks/ply8x/config.h
index cccedf8e23..3fc4de978d 100644
--- a/keyboards/plywrks/ply8x/config.h
+++ b/keyboards/plywrks/ply8x/config.h
@@ -3,12 +3,8 @@
#pragma once
-/* RGB */
#define WS2812_SPI_DRIVER SPID2
#define WS2812_SPI_MOSI_PAL_MODE 0
#define WS2812_SPI_SCK_PIN B13
#define WS2812_SPI_SCK_PAL_MODE 0
#define WS2812_EXTERNAL_PULLUP
-#define RGB_MATRIX_LED_COUNT 6
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/pom_keyboards/tnln95/config.h b/keyboards/pom_keyboards/tnln95/config.h
index 14f8d92d5d..d1b911c4c4 100644
--- a/keyboards/pom_keyboards/tnln95/config.h
+++ b/keyboards/pom_keyboards/tnln95/config.h
@@ -20,8 +20,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-// #define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 225 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-// #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h
index 0ca96c9164..7800131a90 100644
--- a/keyboards/preonic/rev3/config.h
+++ b/keyboards/preonic/rev3/config.h
@@ -41,8 +41,6 @@
//#define NO_ACTION_ONESHOT
// RGB Matrix support
-#define RGB_MATRIX_LED_COUNT 9
-
#define WS2812_PWM_DRIVER PWMD2
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
diff --git a/keyboards/preonic/rev3_drop/config.h b/keyboards/preonic/rev3_drop/config.h
index 0ca96c9164..7800131a90 100644
--- a/keyboards/preonic/rev3_drop/config.h
+++ b/keyboards/preonic/rev3_drop/config.h
@@ -41,8 +41,6 @@
//#define NO_ACTION_ONESHOT
// RGB Matrix support
-#define RGB_MATRIX_LED_COUNT 9
-
#define WS2812_PWM_DRIVER PWMD2
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 1
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/projectd/65/projectd_65_ansi/config.h b/keyboards/projectd/65/projectd_65_ansi/config.h
index 8b162a2149..6c6ba2057d 100644
--- a/keyboards/projectd/65/projectd_65_ansi/config.h
+++ b/keyboards/projectd/65/projectd_65_ansi/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
@@ -34,5 +32,3 @@
#define AW20216S_CS_PIN_1 A15
#define AW20216S_EN_PIN_1 C13
-
-#define RGB_MATRIX_LED_COUNT 71
diff --git a/keyboards/projectd/65/projectd_65_ansi/info.json b/keyboards/projectd/65/projectd_65_ansi/info.json
index 861e3792db..9cfe8ffb5d 100644
--- a/keyboards/projectd/65/projectd_65_ansi/info.json
+++ b/keyboards/projectd/65/projectd_65_ansi/info.json
@@ -154,7 +154,8 @@
{ "flags": 4, "matrix": [0, 3], "x": 130, "y": 40 },
{ "flags": 4, "matrix": [1, 5], "x": 140, "y": 40 },
{ "flags": 4, "matrix": [2, 5], "x": 150, "y": 40 }
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/projectd/65/projectd_65_ansi/projectd_65_ansi.c b/keyboards/projectd/65/projectd_65_ansi/projectd_65_ansi.c
index 0d6123ac01..c5b513447b 100644
--- a/keyboards/projectd/65/projectd_65_ansi/projectd_65_ansi.c
+++ b/keyboards/projectd/65/projectd_65_ansi/projectd_65_ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to AW20216S manual for these locations
* driver
* | R location
diff --git a/keyboards/projectd/75/ansi/ansi.c b/keyboards/projectd/75/ansi/ansi.c
index 1df7625002..7dd38569da 100644
--- a/keyboards/projectd/75/ansi/ansi.c
+++ b/keyboards/projectd/75/ansi/ansi.c
@@ -18,7 +18,7 @@
#ifdef RGB_MATRIX_ENABLE
-const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
+const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/projectd/75/ansi/config.h b/keyboards/projectd/75/ansi/config.h
index 3b685c09b8..d1cbf28085 100644
--- a/keyboards/projectd/75/ansi/config.h
+++ b/keyboards/projectd/75/ansi/config.h
@@ -21,8 +21,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
@@ -32,11 +30,7 @@
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
-#define DRIVER_1_CS A15
-#define DRIVER_2_CS B15
-#define DRIVER_1_EN C13
-#define DRIVER_2_EN C13
-
-#define DRIVER_1_LED_TOTAL 70
-#define DRIVER_2_LED_TOTAL 17
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define AW20216S_CS_PIN_1 A15
+#define AW20216S_CS_PIN_2 B15
+#define AW20216S_EN_PIN_1 C13
+#define AW20216S_EN_PIN_2 C13
diff --git a/keyboards/projectd/75/ansi/info.json b/keyboards/projectd/75/ansi/info.json
index 0e137de614..2e57c35328 100644
--- a/keyboards/projectd/75/ansi/info.json
+++ b/keyboards/projectd/75/ansi/info.json
@@ -81,7 +81,7 @@
"solid_multisplash": true
},
"center_point": [78, 20],
- "driver": "aw20216",
+ "driver": "aw20216s",
"layout": [
{ "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [2, 6], "x": 12.5, "y": 0 },
@@ -175,7 +175,8 @@
{ "flags": 4, "matrix": [0, 3], "x": 132.5, "y": 52.5 },
{ "flags": 4, "matrix": [7, 3], "x": 142.5, "y": 52.5 },
{ "flags": 4, "matrix": [0, 5], "x": 152.5, "y": 52.5 }
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/pw88/config.h b/keyboards/pw88/config.h
deleted file mode 100644
index f655b92527..0000000000
--- a/keyboards/pw88/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2023 Matthijs Muller
-
-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 WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
diff --git a/keyboards/quarkeys/z40/config.h b/keyboards/quarkeys/z40/config.h
index 84b3e5c03e..d531fe5c4c 100644
--- a/keyboards/quarkeys/z40/config.h
+++ b/keyboards/quarkeys/z40/config.h
@@ -14,35 +14,6 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 47
-#define RGB_MATRIX_KEYPRESSES // Reacts to Keypresses
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // Turn off effects when suspended
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130 // Limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-
-// RGB_MATRIX effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS //Enables RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_BREATHING //Enables RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN //Enables RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON //Enables RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN //Enables RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL //Enables RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL //Enables RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL //Enables RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON //Enables RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON //Enables RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS //Enables RGB_MATRIX_RAINBOW_PINWHEELS
-
-// RGB_MATRIX reactive effects
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-#endif
-
#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
#define RGBLIGHT_LAYERS
diff --git a/keyboards/quarkeys/z40/info.json b/keyboards/quarkeys/z40/info.json
index a045a9831a..6e7d213614 100644
--- a/keyboards/quarkeys/z40/info.json
+++ b/keyboards/quarkeys/z40/info.json
@@ -9,10 +9,31 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "breathing": 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,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multicross": true,
+ "solid_reactive_multinexus": true,
+ "multisplash": true,
+ "solid_multisplash": true
+ },
"driver": "ws2812",
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "max_brightness": 130,
+ "sleep": true
},
"rgblight": {
"saturation_steps": 8,
diff --git a/keyboards/quarkeys/z40/z40.c b/keyboards/quarkeys/z40/z40.c
index 18ebec736b..edd8946c11 100644
--- a/keyboards/quarkeys/z40/z40.c
+++ b/keyboards/quarkeys/z40/z40.c
@@ -26,7 +26,7 @@ led_config_t g_led_config = { {
{ 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35 },
{ 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23 },
{ 22, 21, 20, 29, 18, 17, 16, 15, 14, 13, 12, 11 },
- { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }
+ { 10, 9, 8, 7, 6, 5, NO_LED, 4, 3, 2, 1, 0 }
},
{ // Index to Physical Position
{225, 64}, {200, 64}, {180, 64}, {160, 64}, {140, 64}, {110, 64}, { 80, 64}, { 60, 64}, { 40, 64}, { 20, 64}, { 0, 64},
diff --git a/keyboards/quokka/config.h b/keyboards/quokka/config.h
index 6cacf0d545..ae94f33a6f 100644
--- a/keyboards/quokka/config.h
+++ b/keyboards/quokka/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 150U
#define WS2812_PIO_USE_PIO1
-#define RGB_MATRIX_LED_COUNT 36
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP2
diff --git a/keyboards/quokka/info.json b/keyboards/quokka/info.json
index 86037222bb..ed951ff0b2 100644
--- a/keyboards/quokka/info.json
+++ b/keyboards/quokka/info.json
@@ -23,42 +23,42 @@
"center_point": [133, 54],
"driver": "ws2812",
"layout": [
- { "flags": 4, "matrix": [3, 4], "x": 122, "y": 85 },
- { "flags": 4, "matrix": [3, 3], "x": 102, "y": 85 },
- { "flags": 4, "matrix": [3, 2], "x": 81, "y": 85 },
- { "flags": 4, "matrix": [2, 4], "x": 102, "y": 64 },
- { "flags": 4, "matrix": [1, 4], "x": 102, "y": 43 },
- { "flags": 4, "matrix": [0, 4], "x": 102, "y": 21 },
- { "flags": 4, "matrix": [0, 3], "x": 81, "y": 21 },
- { "flags": 4, "matrix": [1, 3], "x": 81, "y": 43 },
- { "flags": 4, "matrix": [2, 3], "x": 81, "y": 64 },
- { "flags": 4, "matrix": [2, 2], "x": 61, "y": 64 },
- { "flags": 4, "matrix": [1, 2], "x": 61, "y": 43 },
- { "flags": 4, "matrix": [0, 2], "x": 61, "y": 21 },
- { "flags": 4, "matrix": [0, 1], "x": 41, "y": 21 },
- { "flags": 4, "matrix": [1, 1], "x": 41, "y": 43 },
- { "flags": 4, "matrix": [2, 1], "x": 41, "y": 64 },
- { "flags": 4, "matrix": [2, 0], "x": 20, "y": 64 },
- { "flags": 4, "matrix": [1, 0], "x": 20, "y": 43 },
- { "flags": 4, "matrix": [0, 0], "x": 20, "y": 21 },
- { "flags": 4, "matrix": [7, 0], "x": 143, "y": 85 },
- { "flags": 4, "matrix": [7, 1], "x": 163, "y": 85 },
- { "flags": 4, "matrix": [7, 2], "x": 183, "y": 85 },
- { "flags": 4, "matrix": [6, 0], "x": 163, "y": 64 },
- { "flags": 4, "matrix": [5, 0], "x": 163, "y": 43 },
- { "flags": 4, "matrix": [4, 0], "x": 163, "y": 21 },
- { "flags": 4, "matrix": [4, 1], "x": 183, "y": 21 },
- { "flags": 4, "matrix": [5, 1], "x": 183, "y": 43 },
- { "flags": 4, "matrix": [6, 1], "x": 183, "y": 64 },
- { "flags": 4, "matrix": [6, 2], "x": 204, "y": 64 },
- { "flags": 4, "matrix": [5, 2], "x": 204, "y": 43 },
- { "flags": 4, "matrix": [4, 2], "x": 204, "y": 21 },
- { "flags": 4, "matrix": [4, 3], "x": 224, "y": 21 },
- { "flags": 4, "matrix": [5, 3], "x": 224, "y": 43 },
- { "flags": 4, "matrix": [6, 3], "x": 224, "y": 64 },
- { "flags": 4, "matrix": [6, 4], "x": 244, "y": 64 },
- { "flags": 4, "matrix": [5, 4], "x": 244, "y": 43 },
- { "flags": 4, "matrix": [4, 4], "x": 244, "y": 21 }
+ {"matrix": [3, 4], "x": 122, "y": 85, "flags": 4},
+ {"matrix": [3, 3], "x": 102, "y": 85, "flags": 4},
+ {"matrix": [3, 2], "x": 81, "y": 85, "flags": 4},
+ {"matrix": [2, 4], "x": 102, "y": 64, "flags": 4},
+ {"matrix": [1, 4], "x": 102, "y": 43, "flags": 4},
+ {"matrix": [0, 4], "x": 102, "y": 21, "flags": 4},
+ {"matrix": [0, 3], "x": 81, "y": 21, "flags": 4},
+ {"matrix": [1, 3], "x": 81, "y": 43, "flags": 4},
+ {"matrix": [2, 3], "x": 81, "y": 64, "flags": 4},
+ {"matrix": [2, 2], "x": 61, "y": 64, "flags": 4},
+ {"matrix": [1, 2], "x": 61, "y": 43, "flags": 4},
+ {"matrix": [0, 2], "x": 61, "y": 21, "flags": 4},
+ {"matrix": [0, 1], "x": 41, "y": 21, "flags": 4},
+ {"matrix": [1, 1], "x": 41, "y": 43, "flags": 4},
+ {"matrix": [2, 1], "x": 41, "y": 64, "flags": 4},
+ {"matrix": [2, 0], "x": 20, "y": 64, "flags": 4},
+ {"matrix": [1, 0], "x": 20, "y": 43, "flags": 4},
+ {"matrix": [0, 0], "x": 20, "y": 21, "flags": 4},
+ {"matrix": [7, 0], "x": 143, "y": 85, "flags": 4},
+ {"matrix": [7, 1], "x": 163, "y": 85, "flags": 4},
+ {"matrix": [7, 2], "x": 183, "y": 85, "flags": 4},
+ {"matrix": [6, 0], "x": 163, "y": 64, "flags": 4},
+ {"matrix": [5, 0], "x": 163, "y": 43, "flags": 4},
+ {"matrix": [4, 0], "x": 163, "y": 21, "flags": 4},
+ {"matrix": [4, 1], "x": 183, "y": 21, "flags": 4},
+ {"matrix": [5, 1], "x": 183, "y": 43, "flags": 4},
+ {"matrix": [6, 1], "x": 183, "y": 64, "flags": 4},
+ {"matrix": [6, 2], "x": 204, "y": 64, "flags": 4},
+ {"matrix": [5, 2], "x": 204, "y": 43, "flags": 4},
+ {"matrix": [4, 2], "x": 204, "y": 21, "flags": 4},
+ {"matrix": [4, 3], "x": 224, "y": 21, "flags": 4},
+ {"matrix": [5, 3], "x": 224, "y": 43, "flags": 4},
+ {"matrix": [6, 3], "x": 224, "y": 64, "flags": 4},
+ {"matrix": [6, 4], "x": 244, "y": 64, "flags": 4},
+ {"matrix": [5, 4], "x": 244, "y": 43, "flags": 4},
+ {"matrix": [4, 4], "x": 244, "y": 21, "flags": 4}
],
"split_count": [18, 18]
},
@@ -76,45 +76,46 @@
"driver": "vendor",
"pin": "GP29"
},
+ "community_layouts": ["split_3x5_3"],
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
- { "label": "L00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
- { "label": "L01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
- { "label": "L02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
- { "label": "L03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
- { "label": "L04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
- { "label": "R00", "matrix": [4, 4], "w": 1, "x": 5, "y": 0 },
- { "label": "R01", "matrix": [4, 3], "w": 1, "x": 6, "y": 0 },
- { "label": "R02", "matrix": [4, 2], "w": 1, "x": 7, "y": 0 },
- { "label": "R03", "matrix": [4, 1], "w": 1, "x": 8, "y": 0 },
- { "label": "R04", "matrix": [4, 0], "w": 1, "x": 9, "y": 0 },
- { "label": "L10", "matrix": [1, 0], "w": 1, "x": 10, "y": 0 },
- { "label": "L11", "matrix": [1, 1], "w": 1, "x": 11, "y": 0 },
- { "label": "L12", "matrix": [1, 2], "w": 1, "x": 12, "y": 0 },
- { "label": "L13", "matrix": [1, 3], "w": 1, "x": 13, "y": 0 },
- { "label": "L14", "matrix": [1, 4], "w": 1, "x": 14, "y": 0 },
- { "label": "R10", "matrix": [5, 4], "w": 1, "x": 15, "y": 0 },
- { "label": "R11", "matrix": [5, 3], "w": 1, "x": 16, "y": 0 },
- { "label": "R12", "matrix": [5, 2], "w": 1, "x": 17, "y": 0 },
- { "label": "R13", "matrix": [5, 1], "w": 1, "x": 18, "y": 0 },
- { "label": "R14", "matrix": [5, 0], "w": 1, "x": 19, "y": 0 },
- { "label": "L20", "matrix": [2, 0], "w": 1, "x": 20, "y": 0 },
- { "label": "L21", "matrix": [2, 1], "w": 1, "x": 21, "y": 0 },
- { "label": "L22", "matrix": [2, 2], "w": 1, "x": 22, "y": 0 },
- { "label": "L23", "matrix": [2, 3], "w": 1, "x": 23, "y": 0 },
- { "label": "L24", "matrix": [2, 4], "w": 1, "x": 24, "y": 0 },
- { "label": "R20", "matrix": [6, 4], "w": 1, "x": 25, "y": 0 },
- { "label": "R21", "matrix": [6, 3], "w": 1, "x": 26, "y": 0 },
- { "label": "R22", "matrix": [6, 2], "w": 1, "x": 27, "y": 0 },
- { "label": "R23", "matrix": [6, 1], "w": 1, "x": 28, "y": 0 },
- { "label": "R24", "matrix": [6, 0], "w": 1, "x": 29, "y": 0 },
- { "label": "L32", "matrix": [3, 2], "w": 1, "x": 30, "y": 0 },
- { "label": "L33", "matrix": [3, 3], "w": 1, "x": 31, "y": 0 },
- { "label": "L34", "matrix": [3, 4], "w": 1, "x": 32, "y": 0 },
- { "label": "R30", "matrix": [7, 4], "w": 1, "x": 33, "y": 0 },
- { "label": "R31", "matrix": [7, 3], "w": 1, "x": 34, "y": 0 },
- { "label": "R32", "matrix": [7, 2], "w": 1, "x": 35, "y": 0 }
+ {"label": "L00", "matrix": [0, 0], "x": 0, "y": 1.25},
+ {"label": "L01", "matrix": [0, 1], "x": 1, "y": 0.25},
+ {"label": "L02", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "L03", "matrix": [0, 3], "x": 3, "y": 0.5},
+ {"label": "L04", "matrix": [0, 4], "x": 4, "y": 0.65},
+ {"label": "R00", "matrix": [4, 4], "x": 7, "y": 0.65},
+ {"label": "R01", "matrix": [4, 3], "x": 8, "y": 0.5},
+ {"label": "R02", "matrix": [4, 2], "x": 9, "y": 0},
+ {"label": "R03", "matrix": [4, 1], "x": 10, "y": 0.25},
+ {"label": "R04", "matrix": [4, 0], "x": 11, "y": 1.25},
+ {"label": "L10", "matrix": [1, 0], "x": 0, "y": 2.25},
+ {"label": "L11", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "L12", "matrix": [1, 2], "x": 2, "y": 1},
+ {"label": "L13", "matrix": [1, 3], "x": 3, "y": 1.5},
+ {"label": "L14", "matrix": [1, 4], "x": 4, "y": 1.65},
+ {"label": "R10", "matrix": [5, 4], "x": 7, "y": 1.65},
+ {"label": "R11", "matrix": [5, 3], "x": 8, "y": 1.5},
+ {"label": "R12", "matrix": [5, 2], "x": 9, "y": 1},
+ {"label": "R13", "matrix": [5, 1], "x": 10, "y": 1.25},
+ {"label": "R14", "matrix": [5, 0], "x": 11, "y": 2.25},
+ {"label": "L20", "matrix": [2, 0], "x": 0, "y": 3.25},
+ {"label": "L21", "matrix": [2, 1], "x": 1, "y": 2.25},
+ {"label": "L22", "matrix": [2, 2], "x": 2, "y": 2},
+ {"label": "L23", "matrix": [2, 3], "x": 3, "y": 2.5},
+ {"label": "L24", "matrix": [2, 4], "x": 4, "y": 2.65},
+ {"label": "R20", "matrix": [6, 4], "x": 7, "y": 2.65},
+ {"label": "R21", "matrix": [6, 3], "x": 8, "y": 2.5},
+ {"label": "R22", "matrix": [6, 2], "x": 9, "y": 2},
+ {"label": "R23", "matrix": [6, 1], "x": 10, "y": 2.25},
+ {"label": "R24", "matrix": [6, 0], "x": 11, "y": 3.25},
+ {"label": "L32", "matrix": [3, 2], "x": 2.5, "y": 3.65},
+ {"label": "L33", "matrix": [3, 3], "x": 3.5, "y": 3.75},
+ {"label": "L34", "matrix": [3, 4], "x": 4.5, "y": 4.15},
+ {"label": "R30", "matrix": [7, 4], "x": 6.5, "y": 4.15},
+ {"label": "R31", "matrix": [7, 3], "x": 7.5, "y": 3.75},
+ {"label": "R32", "matrix": [7, 2], "x": 8.5, "y": 3.65}
]
}
}
diff --git a/keyboards/quokka/keymaps/default/keymap.c b/keyboards/quokka/keymaps/default/keymap.c
index 77375cd8a1..2aee8824f3 100644
--- a/keyboards/quokka/keymaps/default/keymap.c
+++ b/keyboards/quokka/keymaps/default/keymap.c
@@ -17,7 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
-
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/qwertykeys/qk100/ansi/ansi.c b/keyboards/qwertykeys/qk100/ansi/ansi.c
index 87e1b99e1b..06f7c11fb2 100644
--- a/keyboards/qwertykeys/qk100/ansi/ansi.c
+++ b/keyboards/qwertykeys/qk100/ansi/ansi.c
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS2_SW1, CS3_SW1, CS1_SW1}, /* RGB0-ESC ROW0*/
{0, CS5_SW1, CS6_SW1, CS4_SW1}, /* RGB1-F1 */
{0, CS8_SW1, CS9_SW1, CS7_SW1}, /* RGB2-F2 */
diff --git a/keyboards/qwertykeys/qk100/ansi/config.h b/keyboards/qwertykeys/qk100/ansi/config.h
index 82766b8834..c179795b1f 100644
--- a/keyboards/qwertykeys/qk100/ansi/config.h
+++ b/keyboards/qwertykeys/qk100/ansi/config.h
@@ -30,13 +30,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* RGB matrix */
#define I2C1_CLOCK_SPEED 400000
-#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
-# define RGB_MATRIX_DISABLE_KEYCODES
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_MATRIX_STARTUP_VAL 128
-# define DRIVER_ADDR_1 0b0110000
-# define RGB_MATRIX_LED_COUNT 101 \ No newline at end of file
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
+
+#define RGB_MATRIX_DISABLE_KEYCODES
diff --git a/keyboards/qwertykeys/qk100/ansi/info.json b/keyboards/qwertykeys/qk100/ansi/info.json
index e9cd6ca3f2..3469f1c62e 100644
--- a/keyboards/qwertykeys/qk100/ansi/info.json
+++ b/keyboards/qwertykeys/qk100/ansi/info.json
@@ -102,7 +102,9 @@
{"matrix": [5, 0], "x": 0, "y": 52, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 52, "flags": 1},
{"matrix": [5, 2], "x": 28, "y": 52, "flags": 1},
+ {"x": 74, "y": 52, "flags": 4},
{"matrix": [5, 5], "x": 74, "y": 52, "flags": 4},
+ {"x": 74, "y": 52, "flags": 4},
{"matrix": [5, 9], "x": 122, "y": 52, "flags": 1},
{"matrix": [5, 10], "x": 148, "y": 52, "flags": 1},
{"matrix": [5, 12], "x": 158, "y": 52, "flags": 1},
@@ -112,7 +114,6 @@
{"matrix": [5, 17], "x": 212, "y": 52, "flags": 4}
],
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
@@ -156,7 +157,13 @@
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
- }
+ },
+ "default": {
+ "val": 128
+ },
+ "led_process_limit": 4,
+ "led_flush_limit": 26,
+ "sleep": true
},
"layouts": {
"LAYOUT": {
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/raindrop/readme.md b/keyboards/raindrop/readme.md
deleted file mode 100644
index 2741cfafa7..0000000000
--- a/keyboards/raindrop/readme.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Raindrop
-
-![stacked](https://i.imgur.com/R2iPqjIh.png)
-*Casing*
-![PCB Front](https://i.imgur.com/00TpL3nh.png)
-*PCB Front*
-
-60% sized keyboard with a gasket mounted plate and aluminium case, made by Laneware Peripherals.
-
-* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
-* Hardware Supported: Raindrop PCB
-* Hardware Availability: Group Buy
-
-## Layouts
-The Raindrop PCB can be configured in the following key layouts:
-| Key Layout | Keymap | Diagram |
-| :---: | :---: | :---: |
-| Standard 60% | default | ![diagram_ansi](https://i.imgur.com/oibG44o.png) |
-| 2u Left Shift with Arrow Keys | arrows | ![diagram_arrows](https://i.imgur.com/cQ4Kwb5h.png) |
-| HHKB with 6.25 Spacebar | hhkb | ![diagram_hhkb](https://i.imgur.com/WU6gb1Qh.png) |
-
-Make example for this keyboard (after setting up your build environment):
-
- make raindrop:default
-
-Flashing example for this keyboard:
-
- make raindrop: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
-* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/raindrop/rules.mk b/keyboards/raindrop/rules.mk
deleted file mode 100644
index e69de29bb2..0000000000
--- a/keyboards/raindrop/rules.mk
+++ /dev/null
diff --git a/keyboards/rate/pistachio/rev2/config.h b/keyboards/rate/pistachio/rev2/config.h
index 8b5dcbc9f4..8a12d3d9ee 100644
--- a/keyboards/rate/pistachio/rev2/config.h
+++ b/keyboards/rate/pistachio/rev2/config.h
@@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Split hand configration */
#define SPLIT_HAND_MATRIX_GRID D4,D3
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
#define RGBLIGHT_LAYERS
diff --git a/keyboards/rate/pistachio_pro/lib/bme280.c b/keyboards/rate/pistachio_pro/lib/bme280.c
index f3dc231dc5..ac7a4873ba 100644
--- a/keyboards/rate/pistachio_pro/lib/bme280.c
+++ b/keyboards/rate/pistachio_pro/lib/bme280.c
@@ -102,9 +102,9 @@ static int32_t t_fine;
static void readTrim(void) {
uint8_t data[32];
- i2c_readReg(BME280_ADDRESS, BME280_REG_CALIB00, &data[0], 24, I2C_BME280_TIMEOUT);
- i2c_readReg(BME280_ADDRESS, BME280_REG_CALIB25, &data[25], 1, I2C_BME280_TIMEOUT);
- i2c_readReg(BME280_ADDRESS, BME280_REG_CALIB26, &data[25], 7, I2C_BME280_TIMEOUT);
+ i2c_read_register(BME280_ADDRESS, BME280_REG_CALIB00, &data[0], 24, I2C_BME280_TIMEOUT);
+ i2c_read_register(BME280_ADDRESS, BME280_REG_CALIB25, &data[25], 1, I2C_BME280_TIMEOUT);
+ i2c_read_register(BME280_ADDRESS, BME280_REG_CALIB26, &data[25], 7, I2C_BME280_TIMEOUT);
dig_T1 = (data[1] << 8) | data[0];
dig_T2 = (data[3] << 8) | data[2];
@@ -131,7 +131,7 @@ static void readTrim(void) {
static void readData(void) {
uint8_t data[8];
- i2c_readReg(BME280_ADDRESS, 0xF7, &data[0], 8, I2C_BME280_TIMEOUT);
+ i2c_read_register(BME280_ADDRESS, 0xF7, &data[0], 8, I2C_BME280_TIMEOUT);
pres_raw = data[0];
pres_raw = (pres_raw<<8) | data[1];
@@ -210,9 +210,9 @@ void bme280_init(void) {
config_reg = BME280_CONFIG_VAL;
i2c_init();
- i2c_writeReg(BME280_ADDRESS, BME280_REG_CTRL_HUM, &ctrl_hum_reg, 1, I2C_BME280_TIMEOUT);
- i2c_writeReg(BME280_ADDRESS, BME280_REG_CTRL_MEAS, &ctrl_meas_reg, 1, I2C_BME280_TIMEOUT);
- i2c_writeReg(BME280_ADDRESS, BME280_REG_CONFIG, &config_reg, 1, I2C_BME280_TIMEOUT);
+ i2c_write_register(BME280_ADDRESS, BME280_REG_CTRL_HUM, &ctrl_hum_reg, 1, I2C_BME280_TIMEOUT);
+ i2c_write_register(BME280_ADDRESS, BME280_REG_CTRL_MEAS, &ctrl_meas_reg, 1, I2C_BME280_TIMEOUT);
+ i2c_write_register(BME280_ADDRESS, BME280_REG_CONFIG, &config_reg, 1, I2C_BME280_TIMEOUT);
readTrim();
return;
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/redox/keymaps/KL1RL/config.h b/keyboards/redox/keymaps/KL1RL/config.h
deleted file mode 100644
index f3f993be5c..0000000000
--- a/keyboards/redox/keymaps/KL1RL/config.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright 2018 Mattia Dal Ben <matthewdibi@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
-
-#define USE_I2C
-
-/* Select hand configuration */
-//#define MASTER_LEFT
-//#define MASTER_RIGHT
-#define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/KL1RL/keymap.c b/keyboards/redox/keymaps/KL1RL/keymap.c
deleted file mode 100644
index a024cd1d56..0000000000
--- a/keyboards/redox/keymaps/KL1RL/keymap.c
+++ /dev/null
@@ -1,90 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTES LCTL_T(KC_ESC)
-#define KC_CTQU RCTL_T(KC_QUOT)
-
-#define KC_NAGR LT(_NAV, KC_GRV)
-#define KC_NAMI LT(_NAV, KC_MINS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CTES ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOTE ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_BSLS ,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_LGUI , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,KC_F6 , KC_F7 ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,KC_WH_U ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,KC_MS_L ,KC_MS_D ,KC_MS_U ,KC_MS_R ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_WH_D ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,KC_BTN3 , KC_BTN3 ,KC_BTN2 , KC_BTN1 , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_MUTE , KC_VOLD ,KC_VOLU , KC_BRID ,KC_BRIU , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/redox/keymaps/KL1RL/readme.md b/keyboards/redox/keymaps/KL1RL/readme.md
deleted file mode 100644
index 520d004813..0000000000
--- a/keyboards/redox/keymaps/KL1RL/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# A tweaked keymap for Redox
-
-I copied fculpo's layout and made a few modifcations more suited for my own needs. In general it seems to be a fairly straight foward adaptation
-of a standard QWERTY full size keyboard. At least for me.
-
-![fculpo Layout Image](https://i.imgur.com/OXT8boJ.png)
-
-## Changes to the default keymap
-
-Keymap changes from the default keymap are:
-
-- Move `GUI` (`SUPER`) key to where default left `CTRL` is
-- Move `/?` into usual location next to right `SHIFT` - the default flash from Falbatech put `\|` here (might not be the Redox default?), which felt unintuitive
-- Put `\|` into bottom-left spot where `GUI` (`SUPER`) was - had to go somewhere and this bottom-left placement sort of balances with the almost bottom-right `/?`
-- Change default `ESC` into `ESC` on tap, `CTRL` on hold - for the love of the UNIX-ey `CTRL` key location and to keep `ESC` in the original position
-- Add `F11` and `F12` keys to two layers - needed on macOS if you want to control volume up and down from your keyboard (not shown, on a different layer)S
-- Access ADJUST layer by holding either `END` or `PAGEUP` off default layer.
-
-Changes by KL1RL are:
-- Remove the right hand `CTRL` combo key, it was bugging me.
-- Add Brightness Up and Brightness Down on the right hand thumb cluster on the ADJUST layer.
-- Add Mute, Vol Down and Vol Up on LH thumb cluster also on the ADJUST layer.
diff --git a/keyboards/redox/keymaps/KL1RL/rules.mk b/keyboards/redox/keymaps/KL1RL/rules.mk
deleted file mode 100644
index a81250cdf6..0000000000
--- a/keyboards/redox/keymaps/KL1RL/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-RGBLIGHT_ENABLE = yes
-
diff --git a/keyboards/redox/keymaps/default/config.h b/keyboards/redox/keymaps/default/config.h
index 2a1801a78f..ab4d588cb0 100644
--- a/keyboards/redox/keymaps/default/config.h
+++ b/keyboards/redox/keymaps/default/config.h
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -33,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
+#define RGBLIGHT_LED_COUNT 14
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/default/keymap.c b/keyboards/redox/keymaps/default/keymap.c
index ecf3ff4f80..bae5972fc7 100644
--- a/keyboards/redox/keymaps/default/keymap.c
+++ b/keyboards/redox/keymaps/default/keymap.c
@@ -1,19 +1,27 @@
-#include QMK_KEYBOARD_H
+/*
+Copyright 2018 Mattia Dal Ben <matthewdibi@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.
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
+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 custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
+enum layers {
+ _QWERTY,
+ _SYMB,
+ _NAV,
+ _ADJUST
};
// Shortcut to make keymap more readable
diff --git a/keyboards/redox/keymaps/eightbitraptor/config.h b/keyboards/redox/keymaps/eightbitraptor/config.h
deleted file mode 100644
index 045b6a2165..0000000000
--- a/keyboards/redox/keymaps/eightbitraptor/config.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Copyright 2018 Mattia Dal Ben <matthewdibi@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
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-
-#define RETRO_TAPPING
diff --git a/keyboards/redox/keymaps/eightbitraptor/keymap.c b/keyboards/redox/keymaps/eightbitraptor/keymap.c
deleted file mode 100644
index ab2dd307c8..0000000000
--- a/keyboards/redox/keymaps/eightbitraptor/keymap.c
+++ /dev/null
@@ -1,87 +0,0 @@
-#include QMK_KEYBOARD_H
-
-enum layer_names {
- _QWERTY,
- _SYMB,
- _NAV,
- _ADJUST,
-};
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-#define NAV_L MO(_NAV)
-
-#define KC_NABS LT(_NAV, KC_BSLS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-#define KC_ECTL MT(MOD_LCTL, KC_ESC)
-#define KC_QCTL MT(MOD_RCTL, KC_QUOT)
-
-// TODO: Can I invert shift presses to invert ' and "?
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- 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_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_UNDS , KC_MINS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ECTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QCTL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- SC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,SC_RSPC ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- NAV_L ,SYM_L ,XXXXXXX ,KC_LALT , KC_LGUI , KC_SPC ,KC_DEL , KC_ENT ,KC_BSPC , KC_RGUI , KC_LALT ,XXXXXXX ,SYM_L ,KC_NABS
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_MUTE , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,KC_MPRV , KC_MNXT ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , KC_BRID ,KC_VOLD , KC_VOLU ,KC_BRIU , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-};
diff --git a/keyboards/redox/keymaps/eightbitraptor/rules.mk b/keyboards/redox/keymaps/eightbitraptor/rules.mk
deleted file mode 100644
index a81250cdf6..0000000000
--- a/keyboards/redox/keymaps/eightbitraptor/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-RGBLIGHT_ENABLE = yes
-
diff --git a/keyboards/redox/keymaps/fculpo/config.h b/keyboards/redox/keymaps/fculpo/config.h
deleted file mode 100644
index 17260ccd20..0000000000
--- a/keyboards/redox/keymaps/fculpo/config.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Copyright 2018 Mattia Dal Ben <matthewdibi@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
-
-/* Select hand configuration */
-#define MASTER_LEFT
-//#define MASTER_RIGHT
-//#define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/fculpo/keymap.c b/keyboards/redox/keymaps/fculpo/keymap.c
deleted file mode 100644
index 24c4767869..0000000000
--- a/keyboards/redox/keymaps/fculpo/keymap.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include QMK_KEYBOARD_H
-
-extern keymap_config_t keymap_config;
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTES LCTL_T(KC_ESC)
-#define KC_CTQU RCTL_T(KC_QUOT)
-
-#define KC_NAGR LT(_NAV, KC_GRV)
-#define KC_NAMI LT(_NAV, KC_MINS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CTES ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_CTQU ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_BSLS ,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_LGUI , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,KC_F6 , KC_F7 ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/redox/keymaps/fculpo/keymap.json b/keyboards/redox/keymaps/fculpo/keymap.json
deleted file mode 100644
index ca7905b169..0000000000
--- a/keyboards/redox/keymaps/fculpo/keymap.json
+++ /dev/null
@@ -1,399 +0,0 @@
-[
- {
- "name": "Redox/rev1",
- "author": "Fabien Culpo",
- "switchMount": "cherry",
- "plate": false,
- "pcb": false
- },
- [
- {
- "x": 3.5
- },
- "#\n3",
- {
- "x": 10.5
- },
- "*\n8"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "@\n2",
- {
- "x": 1
- },
- "$\n4",
- {
- "x": 8.5
- },
- "&\n7",
- {
- "x": 1
- },
- "(\n9"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "%\n5",
- {
- "x": 6.5
- },
- "^\n6"
- ],
- [
- {
- "y": -0.875,
- "x": 0.25,
- "a": 5,
- "w": 1.25
- },
- "`\nLayer 2\n\n\n\n\n~",
- {
- "a": 4
- },
- "!\n1",
- {
- "x": 14.5
- },
- ")\n0",
- {
- "a": 5,
- "w": 1.25
- },
- "_\nLayer 2\n\n\n\n\n-"
- ],
- [
- {
- "y": -0.625,
- "x": 6.5
- },
- "Layer 1",
- {
- "x": 4.5
- },
- "Layer 1"
- ],
- [
- {
- "y": -0.75,
- "x": 3.5,
- "a": 4
- },
- "E",
- {
- "x": 10.5
- },
- "I"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "W",
- {
- "x": 1
- },
- "R",
- {
- "x": 8.5
- },
- "U",
- {
- "x": 1
- },
- "O"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "T",
- {
- "x": 6.5
- },
- "Y"
- ],
- [
- {
- "y": -0.875,
- "x": 0.25,
- "a": 7,
- "w": 1.25
- },
- "TAB",
- {
- "a": 4
- },
- "Q",
- {
- "x": 14.5
- },
- "P",
- {
- "a": 5,
- "w": 1.25
- },
- "+\n="
- ],
- [
- {
- "y": -0.625,
- "x": 6.5,
- "a": 7,
- "h": 1.5
- },
- "[",
- {
- "x": 4.5,
- "h": 1.5
- },
- "]"
- ],
- [
- {
- "y": -0.75,
- "x": 3.5,
- "a": 4
- },
- "D",
- {
- "x": 10.5
- },
- "K"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "S",
- {
- "x": 1,
- "n": true
- },
- "F",
- {
- "x": 8.5,
- "n": true
- },
- "J",
- {
- "x": 1
- },
- "L"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "G",
- {
- "x": 6.5
- },
- "H"
- ],
- [
- {
- "y": -0.875,
- "x": 0.25,
- "a": 5,
- "w": 1.25
- },
- "ESC\nCTRL",
- {
- "a": 4
- },
- "A",
- {
- "x": 14.5
- },
- ":\n;",
- {
- "a": 5,
- "w": 1.25
- },
- "'\nCTRL"
- ],
- [
- {
- "y": -0.375,
- "x": 3.5,
- "a": 4
- },
- "C",
- {
- "x": 10.5
- },
- "<\n,"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "X",
- {
- "x": 1
- },
- "V",
- {
- "x": 8.5
- },
- "M",
- {
- "x": 1
- },
- ">\n."
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "B",
- {
- "x": 6.5
- },
- "N"
- ],
- [
- {
- "y": -0.875,
- "x": 0.25,
- "a": 5,
- "w": 1.25
- },
- "SHIFT",
- {
- "a": 4
- },
- "Z",
- {
- "x": 14.5
- },
- "?\n/",
- {
- "a": 5,
- "w": 1.25
- },
- "SHIFT"
- ],
- [
- {
- "y": -0.375,
- "x": 3.5
- },
- "*\nALT",
- {
- "x": 10.5
- },
- "Left"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "-",
- {
- "x": 12.5
- },
- "Down"
- ],
- [
- {
- "y": -0.75,
- "x": 0.5
- },
- "|\n\n\n\n\n\n\\",
- "+",
- {
- "x": 14.5
- },
- "Up",
- {
- "sb": "cherry",
- "st": "MX1A-21xx"
- },
- "Right"
- ],
- [
- {
- "r": 15,
- "y": -2.625,
- "x": 5.75,
- "a": 7,
- "w": 1.25
- },
- "SUPER"
- ],
- [
- {
- "r": 30,
- "rx": 6.5,
- "ry": 4.25,
- "y": -1,
- "a": 5
- },
- "PgUp\nLay. 3",
- {
- "a": 7
- },
- "PgDn"
- ],
- [
- {
- "h": 1.5
- },
- "Bksp",
- {
- "h": 1.5
- },
- "Del"
- ],
- [
- {
- "r": -30,
- "rx": 13,
- "y": -1,
- "x": -2
- },
- "Home",
- {
- "a": 5
- },
- "End\nLay. 3"
- ],
- [
- {
- "x": -2,
- "a": 7,
- "h": 1.5
- },
- "Enter",
- {
- "h": 1.5
- },
- "Space"
- ],
- [
- {
- "r": -15,
- "rx": 0,
- "ry": 0,
- "y": 7.75,
- "x": 11.75,
- "w": 1.25
- },
- "ALT"
- ]
-]
diff --git a/keyboards/redox/keymaps/fculpo/readme.md b/keyboards/redox/keymaps/fculpo/readme.md
deleted file mode 100644
index 1250e47b9c..0000000000
--- a/keyboards/redox/keymaps/fculpo/readme.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# A tweaked keymap for Redox
-
-This keymap modifies the [default keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/redox) for the awesome [Redox keyboard](https://github.com/mattdibi/redox-keyboard) designed by Mattia Dal Ben.
-
-Also heavily inspired by nrichers layout.
-
-![fculpo Layout Image](https://i.imgur.com/OXT8boJ.png)
-
-## Changes to the default keymap
-
-These keymap changes are meant to improve the usability of the layout in everyday use:
-
-- Move `GUI` (`SUPER`) key to where default left `CTRL` is
-- Move `/?` into usual location next to right `SHIFT` - the default flash from Falbatech put `\|` here (might not be the Redox default?), which felt unintuitive
-- Put `\|` into bottom-left spot where `GUI` (`SUPER`) was - had to go somewhere and this bottom-left placement sort of balances with the almost bottom-right `/?`
-- Change default `ESC` into `ESC` on tap, `CTRL` on hold - Love the UNIX-ey `CTRL` key location and wanted to keep `ESC` in the original position
-- Change default `'` above right `SHIFT` into `'` on tap, `CTRL` on hold - Love the UNIX-ey CTRL key location, but it can give you 'left claw hand', which a second, mirrored `CTRL` key fixes
-- Add `F11` and `F12` keys to two layers - needed on macOS if you want to control volume up and down from your keyboard (not shown, on a different layer)S
diff --git a/keyboards/redox/keymaps/fculpo/rules.mk b/keyboards/redox/keymaps/fculpo/rules.mk
deleted file mode 100644
index a81250cdf6..0000000000
--- a/keyboards/redox/keymaps/fculpo/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-RGBLIGHT_ENABLE = yes
-
diff --git a/keyboards/redox/keymaps/finex/config.h b/keyboards/redox/keymaps/finex/config.h
deleted file mode 100644
index e65e610046..0000000000
--- a/keyboards/redox/keymaps/finex/config.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright 2018 Leonardo (FiNeX) Finetti <finex@finex.org>
-
-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
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-
-// #define PERMISSIVE_HOLD
-#define TAPPING_TERM 200
diff --git a/keyboards/redox/keymaps/finex/keymap.c b/keyboards/redox/keymaps/finex/keymap.c
deleted file mode 100644
index 9057dee074..0000000000
--- a/keyboards/redox/keymaps/finex/keymap.c
+++ /dev/null
@@ -1,386 +0,0 @@
-#include QMK_KEYBOARD_H
-
-extern keymap_config_t keymap_config;
-
-// Layer names
-enum{
- // - Base layers:
- _COLEMAKDHMK,
- _COLEMAKDHMK_MAC,
- _QWERTY,
- _QWERTY_MAC,
- // - Symbols, numbers, functions and custom shifts:
- _SYMB,
- _NUMB,
- _FUNC,
- _RHSH, // Righ hand shifted keycodes
- _LHSH, // Left hand shifted keycodes
- // - Adjust layer:
- _ADJUST
-};
-
-// Custom keycodes
-enum custom_keycodes {
- COLEMAKDHMK = SAFE_RANGE,
- COLEMAKDHMK_MAC,
- QWERTY,
- QWERTY_MAC,
- ASC_SAR,
- ASC_DAR,
- ASC_SQT,
- ASC_DQT,
- ASC_CIRC,
- ASC_TILD,
- ASC_HAP,
- ASC_SAD,
- ASC_BKT,
- ASC_CBRL,
- ASC_CBRR
-};
-
-// Tap dance keycodes
-enum tap_dance{
- TD_SCLN, // ;; -> :
- TD_LBRC, // [[ -> {
- TD_RBRC, // ]] -> }
- TD_QMRK // // -> ?
-};
-
-// Semicolon to Colon
-void dance_scln_finished (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code (KC_SCLN);
- } else {
- register_code (KC_RSFT);
- register_code (KC_SCLN);
- }
-}
-void dance_scln_reset (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code (KC_SCLN);
- } else {
- unregister_code (KC_RSFT);
- unregister_code (KC_SCLN);
- }
-}
-
-// Square braket to curly bracket (left)
-void dance_lbrc_finished (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code (KC_LBRC);
- } else {
- register_code (KC_RSFT);
- register_code (KC_LBRC);
- }
-}
-void dance_lbrc_reset (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code (KC_LBRC);
- } else {
- unregister_code (KC_RSFT);
- unregister_code (KC_LBRC);
- }
-}
-
-// Square braket to curly bracket (right)
-void dance_rbrc_finished (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code (KC_RBRC);
- } else {
- register_code (KC_RSFT);
- register_code (KC_RBRC);
- }
-}
-void dance_rbrc_reset (tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code (KC_RBRC);
- } else {
- unregister_code (KC_RSFT);
- unregister_code (KC_RBRC);
- }
-}
-
-
-//Tap Dance Definitions
-tap_dance_action_t tap_dance_actions[] = {
- [TD_SCLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_scln_finished, dance_scln_reset),
- [TD_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_lbrc_finished, dance_lbrc_reset),
- [TD_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_rbrc_finished, dance_rbrc_reset)
-};
-
-
-// Shortcut to make keymap more readable
-
-// - Adjustment Layer:
-#define KC_ADEN LT(_ADJUST, KC_END) // End / _ADJUST layer
-#define KC_ADPU LT(_ADJUST, KC_PGUP) // Page Up / _ADJUST layer
-
-// - Custom layers:
-#define KC_SYSP LT(_SYMB, KC_SPC) // Space / _symbols
-#define KC_NUES LT(_NUMB, KC_ESC) // Esc / _numbers
-#define KC_FUTA LT(_FUNC, KC_TAB) // Tab / _functions
-#define KC_N_SH LT(_LHSH, KC_N) // Pressing N key, enable shifted keys on other half (the left one)
-#define KC_T_SH LT(_RHSH, KC_T) // Pressing T key, enable shifted keys on other half (the right one)
-
-// - Custom keys/modifiers:
-#define KC_ATAB RALT_T(KC_TAB) // - Tab / Alt Gr
-#define KC_CESC LCTL_T(KC_ESC) // - Esc / Left Ctrl
-#define KC_GSPC LGUI_T(KC_SPC) // - Space / Left GUI
-#define KC_CBSP LCTL_T(KC_BSPC) // - Backspace / Left Ctrl
-
-// -- Mac os mode:
-#define KC_CSPC LCTL_T(KC_SPC) // - Space / Left Ctrl
-#define KC_GBSP LGUI_T(KC_BSPC) // - Backspace / Left GUI
-
-
-#define KC_AEQL LALT_T(KC_EQL) // - Equals / Alt (left alt)
-#define KC_CMIN RCTL_T(KC_MINUS) // - Minus / Right Ctrl
-#define KC_ADEL RALT_T(KC_DEL) // - Del / Alt Gr
-#define KC_RSEN RSFT_T(KC_ENT) // - Enter / Right Shift (standard shift)
-#define KC_LAEN LALT_T(KC_ENT) // - Enter / Left Alt
-
-// Home row mod tap keys:
-// - Left hand
-#define KC_CT_A CTL_T(KC_A) // A / Left Ctrl
-#define KC_AL_S ALT_T(KC_S) // S / Left Alt
-// - Right hand
-#define KC_AL_E ALT_T(KC_E) // E / Left Alt
-#define KC_CT_O CTL_T(KC_O) // O / Left Ctrl
-
-// - Tap dance:
-#define KC_TDSC TD(TD_SCLN) // ;; -> :
-#define KC_TDLB TD(TD_LBRC) // [[ -> {
-#define KC_TDRB TD(TD_RBRC) // ]] -> }
-
-// - Keyboard base maps:
-#define LR1 COLEMAKDHMK
-#define LR2 COLEMAKDHMK_MAC
-#define LR3 QWERTY
-#define LR4 QWERTY_MAC
-
-
-// Send custom strings or change default base layer
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- switch(keycode) {
- case ASC_SAR:
- SEND_STRING("->");
- return false;
- case ASC_DAR:
- SEND_STRING("=>");
- return false;
- case ASC_SQT:
- // SS_RALT(): Avoid sending dead key on software intl layouts
- SEND_STRING(SS_RALT("'"));
- return false;
- case ASC_DQT:
- // SS_RALT(SS_LSFT()): Avoid sending dead key on software intl layouts
- SEND_STRING(SS_RALT(SS_LSFT("\"")));
- return false;
- case ASC_CIRC:
- // SS_RALT(): Avoid sending dead key on software intl layouts
- SEND_STRING(SS_RALT("^"));
- return false;
- case ASC_TILD:
- // SS_RALT(SS_LSFT()): Avoid sending dead key on software intl layouts
- SEND_STRING(SS_RALT(SS_LSFT("~")));
- return false;
- case ASC_HAP:
- SEND_STRING(":-) ");
- return false;
- case ASC_SAD:
- SEND_STRING(":-( ");
- return false;
- case ASC_BKT:
- // SS_RALT(): Avoid sending dead key on software intl layouts
- SEND_STRING(SS_RALT("`"));
- return false;
- case ASC_CBRL:
- SEND_STRING("{");
- return false;
- case ASC_CBRR:
- SEND_STRING("}");
- return false;
- case QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- case COLEMAKDHMK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_COLEMAKDHMK);
- }
- return false;
- break;
- case QWERTY_MAC:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY_MAC);
- }
- return false;
- break;
- case COLEMAKDHMK_MAC:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_COLEMAKDHMK_MAC);
- }
- return false;
- break;
- }
- }
- return true;
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- // Colemak DH-MK Mod
- [_COLEMAKDHMK] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ATAB ,KC_Q ,KC_W ,KC_F ,KC_P ,KC_B ,XXXXXXX , XXXXXXX ,KC_J ,KC_L ,KC_U ,KC_Y ,KC_TDSC ,KC_AEQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CESC ,KC_A ,KC_R ,KC_AL_S ,KC_T_SH ,KC_G ,KC_TDLB , KC_TDRB ,KC_M ,KC_N_SH ,KC_AL_E ,KC_I ,KC_O ,KC_CMIN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- SC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_D ,KC_V ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_K ,KC_H ,KC_COMM ,KC_DOT ,KC_SLSH ,SC_RSPC ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_GSPC ,KC_HYPR ,KC_MEH ,XXXXXXX , KC_NUES , KC_CBSP ,KC_FUTA , KC_LAEN ,KC_SYSP , KC_ADEL , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // Colemak DH-MK Mod, Mac version (CTRL and GUI are swapped)
- [_COLEMAKDHMK_MAC] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ATAB ,KC_Q ,KC_W ,KC_F ,KC_P ,KC_B ,XXXXXXX , XXXXXXX ,KC_J ,KC_L ,KC_U ,KC_Y ,KC_TDSC ,KC_AEQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CESC ,KC_A ,KC_R ,KC_AL_S ,KC_T_SH ,KC_G ,KC_TDLB , KC_TDRB ,KC_M ,KC_N_SH ,KC_AL_E ,KC_I ,KC_O ,KC_CMIN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- SC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_D ,KC_V ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_K ,KC_H ,KC_COMM ,KC_DOT ,KC_SLSH ,SC_RSPC ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_CSPC ,KC_HYPR ,KC_MEH ,XXXXXXX , KC_NUES , KC_GBSP ,KC_FUTA , KC_LAEN ,KC_SYSP , KC_ADEL , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // QWERTY
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ATAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,XXXXXXX , XXXXXXX ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_AEQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_TDLB , KC_TDRB ,KC_H ,KC_J ,KC_K ,KC_L ,KC_TDSC ,KC_CMIN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- SC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,SC_RSPC ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_GSPC ,KC_HYPR ,KC_MEH ,XXXXXXX , KC_NUES , KC_CBSP ,KC_FUTA , KC_LAEN ,KC_SYSP , KC_ADEL , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // QWERTY, Mac version (CTRL and GUI are swapped)
- [_QWERTY_MAC] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_ESC ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ATAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,XXXXXXX , XXXXXXX ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_AEQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_TDLB , KC_TDRB ,KC_H ,KC_J ,KC_K ,KC_L ,KC_TDSC ,KC_CMIN ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- SC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,SC_RSPC ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_CSPC ,KC_HYPR ,KC_MEH ,XXXXXXX , KC_NUES , KC_GBSP ,KC_FUTA , KC_LAEN ,KC_SYSP , KC_ADEL , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // Symbols, home row arrows, function keys and macros layer
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,_______ , _______ ,ASC_CIRC,KC_AMPR ,KC_ASTR ,KC_PLUS ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PIPE ,KC_PMNS ,ASC_SQT ,ASC_DQT ,KC_GRV ,ASC_SAR , ASC_DAR ,KC_QUOT ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_BSLS ,KC_UNDS ,KC_COLN ,ASC_TILD,KC_EQL ,ASC_SAD ,ASC_HAP , _______ ,_______ ,ASC_BKT ,KC_PGUP ,KC_PGDN ,KC_HOME ,KC_END ,_______ ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // Numeric keypad layer
- [_NUMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,KC_PAST ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,KC_PPLS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,KC_PMNS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,KC_PSLS ,_______ ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , XXXXXXX , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // Function layer and some extra keys on right hand
- [_FUNC] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F12 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F11 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PSCR ,KC_NUM ,KC_INS ,KC_CAPS ,KC_APP ,_______ ,_______ , _______ ,_______ ,_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F10 ,_______ ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
-
- // Left hand shifted keycodes
- [_LHSH] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,S(KC_Q) ,S(KC_W) ,S(KC_F) ,S(KC_P) ,S(KC_B) ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,S(KC_A) ,S(KC_R) ,S(KC_S) ,S(KC_T) ,S(KC_G) ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,S(KC_Z) ,S(KC_X) ,S(KC_C) ,S(KC_D) ,S(KC_V) ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , KC_TAB ,KC_BSPC , KC_ESC , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // Right hand shifted keycodes
- [_RHSH] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,S(KC_J) ,S(KC_L) ,S(KC_U) ,S(KC_Y) ,KC_COLN ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,S(KC_M) ,S(KC_N) ,S(KC_E) ,S(KC_I) ,S(KC_O) ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,S(KC_K) ,S(KC_H) ,KC_LABK ,KC_RABK ,KC_QUES ,_______ ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , KC_DEL , KC_SPC ,KC_ENT , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- // Adjust layer (RGB, Reset and base layer switch)
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,LR1 ,LR2 ,LR3 ,LR4 ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,RGB_M_B ,RGB_M_R ,RGB_M_SW,RGB_M_SN,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,RGB_M_K ,RGB_M_X ,RGB_M_G ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/redox/keymaps/finex/readme.md b/keyboards/redox/keymaps/finex/readme.md
deleted file mode 100644
index ae092e8064..0000000000
--- a/keyboards/redox/keymaps/finex/readme.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Customized keymap for Redox by Leonardo (FiNeX) Finetti.
-
-
-## Features
-
-- PC Layouts: Colemak Mod DH-MK, Qwerty.
-- Mac Layouts: same as above with CTRL-GUI keys inverted.
-- Added redundant `Space`, `Esc`, `Ctrl` and `Enter` keys. I like to have this
- keys on both halves.
-- Added macro to print `->` and `=>` strings.
-- Added macro to print `:-( ` and `:-) ` strings.
-- Added more arrows.
-- Added `(` and `)` on Shifts keys.
-- Tapdance: `:` (`;` × 2), `{` (`[` × 2), `}` (`]` × 2).
-- Removed Mouse and media support.
-- Added missing "Print Screen" and "Menu" keys.
-- Added missing "F11" and "F12" keys.
-- Added `Alt` modifier on home row.
-- Added `Shift other half` on home keys: this allows to shift the right half
-pressing `t` on the left (or `f` using Qwerty), and the opposite pressing `n`
-(or `j` for Qwerty layout).
-
-
-## Description
-
-This keymap use the default one with some changes to suit my needs. Mainly
-having most used symbol on a separated layer copying the common symbols on the
-number keys on the second row and adding other symbols and ``|´` dead keys for
-accents.
-
-
-## Main Keyboard Layout
-
-[TODO]
-
-
-## Changelog
-
-- 2018/11/13
- First public release.
-- 2018/12/04
- Added Caps Lock, Num Lock and Insert on Symbols Layout. Inverted KC_GRV and
- KC_QUOT on Symbols Layout. Added "Toggle Symbols Layout" and "Momentarily
- activates Symbols Layout" on bottom row. Added Space/Control on left bottom
- corner: now both halves contains Enter and Space keys.
-- 2018/12/23
- Moved around modifiers key.
- Added MEH and HYPER keys.
- Improved symbols layout.
- Rearranged layers.
-- 2019/01/04
- Added new layer with numeric keypad and rearranged symbols.
-- 2019/01/26
- Added curly brackets on own keys (normally unused).
- Added tap dance for testing purpose.
- Minor fixes.
-- 2019/02/25
- Major layouts upgrade, partially inspired by Steven Hum's Beakl layouts.
-- 2019/03/17
- Aligned qwerty and mac to main layout.
-
-
-## TODO
-
-- Bring back mouse and multimedia keys.
-- Add default Colemak Mod DH layout.
-- Improve top corner keys.
-- Improve bottom row keys.
-- Improve README.md
diff --git a/keyboards/redox/keymaps/finex/rules.mk b/keyboards/redox/keymaps/finex/rules.mk
deleted file mode 100644
index f248688fb4..0000000000
--- a/keyboards/redox/keymaps/finex/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-RGBLIGHT_ENABLE = yes
-COMMAND_ENABLE = no
-KEY_LOCK_ENABLE = yes
-TAP_DANCE_ENABLE=yes
diff --git a/keyboards/redox/keymaps/german/config.h b/keyboards/redox/keymaps/german/config.h
deleted file mode 100644
index cfb2a9378a..0000000000
--- a/keyboards/redox/keymaps/german/config.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2018 Mattia Dal Ben <matthewdibi@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
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/german/keymap.c b/keyboards/redox/keymaps/german/keymap.c
deleted file mode 100644
index 2ccd4b1678..0000000000
--- a/keyboards/redox/keymaps/german/keymap.c
+++ /dev/null
@@ -1,96 +0,0 @@
-#include QMK_KEYBOARD_H
-
-#include "keymap_german.h"
-
-extern keymap_config_t keymap_config;
-extern rgblight_config_t rgblight_config;
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define KC_BKSL KC_BSLS
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTPL LCTL_T(KC_PSLS)
-
-#define KC_NAGR LT(_NAV, DE_CIRC)
-#define KC_NAMI LT(_NAV, DE_SS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,DE_1 ,DE_2 ,DE_3 ,DE_4 ,DE_5 , DE_6 ,DE_7 ,DE_8 ,DE_9 ,DE_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,DE_Q ,DE_W ,DE_E ,DE_R ,DE_T ,SYM_L , SYM_L ,DE_Z ,DE_U ,DE_I ,DE_O ,DE_P ,DE_UDIA ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ESC ,DE_A ,DE_S ,DE_D ,DE_F ,DE_G ,DE_ACUT , DE_PLUS ,DE_H ,DE_J ,DE_K ,DE_L ,DE_ODIA ,DE_ADIA ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,DE_Y ,DE_X ,DE_C ,DE_V ,DE_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,DE_N ,DE_M ,DE_COMM ,DE_DOT ,DE_MINS ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_LGUI ,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,DE_EXLM ,DE_AT ,DE_LCBR ,DE_RCBR ,DE_PIPE ,_______ , _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,DE_HASH ,DE_DLR ,DE_LBRC ,DE_RBRC ,DE_TILD ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,DE_PERC ,DE_CIRC ,DE_LPRN ,DE_RPRN ,DE_GRV ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,KC_LALT , KC_LCTL , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/redox/keymaps/german/readme.md b/keyboards/redox/keymaps/german/readme.md
deleted file mode 100644
index 91bc230fca..0000000000
--- a/keyboards/redox/keymaps/german/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# German keymap for Redox
-
-The layout acommodates the German umlauts and the punctuation symbols
-at their usual positions relative to the other alphabetic characters.
-Apart from that it stays close to the default english redox layout.
diff --git a/keyboards/redox/keymaps/german/rules.mk b/keyboards/redox/keymaps/german/rules.mk
deleted file mode 100644
index 1e3cebb145..0000000000
--- a/keyboards/redox/keymaps/german/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-RGBLIGHT_ENABLE = yes
diff --git a/keyboards/redox/keymaps/italian/config.h b/keyboards/redox/keymaps/italian/config.h
deleted file mode 100644
index cfb2a9378a..0000000000
--- a/keyboards/redox/keymaps/italian/config.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2018 Mattia Dal Ben <matthewdibi@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
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/italian/keymap.c b/keyboards/redox/keymaps/italian/keymap.c
deleted file mode 100644
index 6b3cdd5475..0000000000
--- a/keyboards/redox/keymaps/italian/keymap.c
+++ /dev/null
@@ -1,102 +0,0 @@
-#include QMK_KEYBOARD_H
-
-#include "keymap_italian.h"
-
-extern keymap_config_t keymap_config;
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define KC_BKSL KC_BSLS
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTPL LCTL_T(KC_PSLS)
-
-#define KC_NAGR LT(_NAV, KC_GRV)
-#define KC_NAMI LT(_NAV, KC_MINS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-// Italian specific shortcuts
-#define ALT_IACC RALT_T(IT_IGRV)
-#define GUI_LESS LGUI_T(IT_LABK)
-
-#define IT_SHSL RSFT_T(KC_SLSH)
-#define IT_GRV RALT(KC_MINS)
-#define IT_TILD RALT(KC_EQL)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,IT_EGRV ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,IT_LBRC , IT_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,IT_OGRV ,IT_AGRV ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UGRV ,IT_SHSL ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- GUI_LESS,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , ALT_IACC, KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,IT_EXLM ,IT_AT ,IT_LCBR ,IT_RCBR ,IT_PIPE ,_______ , _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,IT_HASH ,IT_DLR ,IT_LBRC ,IT_RBRC ,IT_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,IT_PERC ,IT_CIRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/redox/keymaps/italian/readme.md b/keyboards/redox/keymaps/italian/readme.md
deleted file mode 100644
index 85b48fdb6f..0000000000
--- a/keyboards/redox/keymaps/italian/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The italian keymap for Redox
diff --git a/keyboards/redox/keymaps/italian/rules.mk b/keyboards/redox/keymaps/italian/rules.mk
deleted file mode 100644
index a81250cdf6..0000000000
--- a/keyboards/redox/keymaps/italian/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-RGBLIGHT_ENABLE = yes
-
diff --git a/keyboards/redox/keymaps/jeherve/config.h b/keyboards/redox/keymaps/jeherve/config.h
deleted file mode 100644
index 689e8f6e4d..0000000000
--- a/keyboards/redox/keymaps/jeherve/config.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Copyright 2021 Jeremy Herve <jeremy@jeremy.hu>
-
-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
-
-/* Change the default tapping toggle value (normally 5) */
-#define TAPPING_TOGGLE 2
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_SLEEP
-
-/* Set Unicode mode by default */
-#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS
-
-/* Custom startup sound */
-#ifdef AUDIO_ENABLE
-# define STARTUP_SONG SONG(ZELDA_PUZZLE)
-#endif
diff --git a/keyboards/redox/keymaps/jeherve/keymap.c b/keyboards/redox/keymaps/jeherve/keymap.c
deleted file mode 100644
index 35958221bb..0000000000
--- a/keyboards/redox/keymaps/jeherve/keymap.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
-Copyright 2021 Jeremy Herve <jeremy@jeremy.hu>
-
-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
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _COLEMAK 0
-#define _SYMB 1
-#define _NAV 2
-#define _INTER 3
-#define _ADJUST 4
-
-// Define song.
-#ifdef AUDIO_ENABLE
-float tone_zelda[][2] = SONG(ZELDA_TREASURE);
-#endif
-
-enum custom_keycodes {
- COLEMAK = SAFE_RANGE,
- SYMB,
- NAV,
- INTER,
- ADJUST,
- // These use process_record_user()
- M_BRACKET_LEFT,
- M_BRACKET_RIGHT,
- SHRUG,
- WAVE,
- YOSHI,
- THUMB_UP,
- INV_1P,
- ALFRED
-};
-
-// Is shift being held? Let's store this in a bool.
-static bool shift_held = false;
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case SHRUG:
- if (record->event.pressed) {
- send_unicode_string("¯\\_(ツ)_/¯");
- }
- return false;
- break;
- case INV_1P:
- if (record->event.pressed) {
- SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_LALT) SS_TAP(X_BACKSLASH) SS_UP(X_LGUI) SS_UP(X_LALT));
- }
- return false;
- break;
- case ALFRED:
- if (record->event.pressed) {
- SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_SPACE) SS_UP(X_LALT));
- }
- return false;
- break;
- case YOSHI:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- PLAY_SONG(tone_zelda);
-#endif
- SEND_STRING(":yellow_yoshi:");
- }
- return false;
- break;
- case THUMB_UP:
- if (record->event.pressed) {
- register_unicode(0x1F44D);
- }
- return false;
- break;
- case WAVE:
- if (record->event.pressed) {
- register_unicode(0x1F44B);
- }
- return false;
- break;
- case KC_LSFT:
- shift_held = record->event.pressed;
- return true;
- break;
- case KC_RSFT:
- shift_held = record->event.pressed;
- return true;
- break;
- case M_BRACKET_LEFT: {
- if (record->event.pressed) {
- if (shift_held) {
- unregister_code(KC_LSFT);
- unregister_code(KC_RSFT);
- register_code(KC_LBRC);
- } else {
- register_code(KC_LSFT);
- register_code(KC_9);
- }
- } else { // Release the key
- unregister_code(KC_LBRC);
- unregister_code(KC_LSFT);
- unregister_code(KC_RSFT);
- unregister_code(KC_9);
- }
- return false;
- break;
- }
- case M_BRACKET_RIGHT: {
- if (record->event.pressed) {
- if (shift_held) {
- unregister_code(KC_LSFT);
- unregister_code(KC_RSFT);
- register_code(KC_RBRC);
- } else {
- register_code(KC_LSFT);
- register_code(KC_0);
- }
- } else { // Release the key
- unregister_code(KC_RBRC);
- unregister_code(KC_LSFT);
- unregister_code(KC_RSFT);
- unregister_code(KC_0);
- }
- return false;
- break;
- }
- }
- return true;
-};
-
-// Shortcut to make keymap more readable
-#define KC_SYQT LT(_SYMB, KC_QUOT)
-#define SYM_L MO(_SYMB)
-#define MO_INTR MO(_INTER)
-#define TT_ADJ TT(_ADJUST)
-
-#define UC_00E0 UC(0x00E0)
-#define UC_00FC UC(0x00FC)
-#define UC_00E8 UC(0x00E8)
-#define UC_00F6 UC(0x00F6)
-#define UC_00E1 UC(0x00E1)
-#define UC_00F9 UC(0x00F9)
-#define UC_00E9 UC(0x00E9)
-#define UC_00ED UC(0x00ED)
-#define UC_00F3 UC(0x00F3)
-#define UC_00E2 UC(0x00E2)
-#define UC_00E7 UC(0x00E7)
-#define UC_0171 UC(0x0171)
-#define UC_00EA UC(0x00EA)
-#define UC_0151 UC(0x0151)
-// Non-breaking space.
-#define UC_00A0 UC(0x00a0)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_COLEMAK] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_F ,KC_P ,KC_G ,KC_ESC , INV_1P ,KC_J ,KC_L ,KC_U ,KC_Y ,KC_SCLN ,KC_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- SYM_L ,KC_A ,KC_R ,KC_S ,KC_T ,KC_D ,M_BRACKET_LEFT, M_BRACKET_RIGHT ,KC_H ,KC_N ,KC_E ,KC_I ,KC_O ,KC_SYQT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,TT(_NAV),TT(_SYMB), TT(_SYMB),TT(_NAV),KC_K ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- MO_INTR ,KC_LCTL ,KC_HYPR ,KC_LALT , KC_LCMD , KC_BSPC ,KC_LCTL , KC_ENT ,KC_SPC , ALFRED , TT_ADJ ,KC_HYPR ,KC_RCTL ,MO_INTR
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,_______ , _______ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,KC_LCBR , KC_RCBR ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_MINS ,KC_UNDS ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,KC_TILD ,KC_GRV , _______ ,_______ ,_______ , _______ ,_______ ,_______ ,KC_EQL ,KC_PLUS ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_VOLD ,KC_VOLU ,KC_MUTE ,XXXXXXX ,_______ , _______ ,XXXXXXX ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,XXXXXXX , XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_INTER] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,UC_00E0 ,WAVE ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,UC_00FC ,UC_00E8 ,YOSHI ,UC_00F6 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,UC_00E1 ,XXXXXXX ,SHRUG ,THUMB_UP,XXXXXXX ,_______ , _______ ,XXXXXXX ,UC_00F9 ,UC_00E9 ,UC_00ED ,UC_00F3 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,UC_00E2 ,XXXXXXX ,UC_00E7 ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,UC_0171 ,UC_00EA ,XXXXXXX ,UC_0151 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,UC_00A0 , XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,RGB_VAD ,RGB_VAI ,RGB_TOG ,XXXXXXX ,_______ , _______ ,XXXXXXX ,QK_BOOT ,DB_TOGG ,AU_TOGG ,XXXXXXX ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,XXXXXXX , XXXXXXX , _______ ,XXXXXXX ,XXXXXXX ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
-
-void persistent_default_layer_set(uint16_t default_layer) {
- eeconfig_update_default_layer(default_layer);
- default_layer_set(default_layer);
-}
-
-// Change LED colors depending on the layer.
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _SYMB:
- rgblight_setrgb(RGB_ORANGE);
- break;
- case _NAV:
- rgblight_setrgb(RGB_SPRINGGREEN);
- break;
- case _INTER:
- rgblight_setrgb(RGB_TEAL);
- break;
- case _ADJUST:
- rgblight_setrgb(RGB_RED);
- break;
- default: // for any other layers, or the default layer
- rgblight_setrgb(RGB_YELLOW);
- break;
- }
- return state;
-};
diff --git a/keyboards/redox/keymaps/jeherve/readme.md b/keyboards/redox/keymaps/jeherve/readme.md
deleted file mode 100644
index 72ed31919b..0000000000
--- a/keyboards/redox/keymaps/jeherve/readme.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# A Colemak keymap for the Redox keyboard
-
-----
-![jeherve-redox-layout-5](https://user-images.githubusercontent.com/426388/116534030-56f67600-a8e2-11eb-9bf3-3ce5362d717a.png)
-
-----
-
-This keymap is **a work in progress**, and is meant to be used on macOS, with the "Unicode Hex Input" keyboard input.
-
-![macOS keyboard input setting](https://user-images.githubusercontent.com/426388/43962498-1ee9e3fc-9cb8-11e8-88e3-dbb068ec5c67.png)
-
-I may change a lot of the keys over the next few months, and will update this repo when I do so.
-
-[View on KLE](http://www.keyboard-layout-editor.com/#/gists/3d5368842d87a8462c8f95d4382c4a19)
-
-## Layers
-
-My keymap uses 5 layers:
-
-1. The default base layer, using [Colemak](https://colemak.com/).
-2. A Symbol layer, so all symbols can be accessed from the home row. (top right legends)
-3. A Navigation / Media layer, with both sound control and arrows on the home row. (bottom right legends)
-4. An international / Emoji layer so I can type accented characters commonly used in France and in Hungary, as well as a few Emoji I often use. (top center legends)
-5. A keyboard control layer, not pictured above, allowing me to control the LED lighting as well as the keyboard debug functions.
-
-## Changelog
-
-- 2021.04.29
- - Update code to replace deprecated code.
- - Fix non-breaking space key.
-- 2018.12.20
- - 2 new Macro keys, to invoke [Alfred](https://www.alfredapp.com/) and [1Password](https://1password.com/).
- - No more Right Command key or Expose key, I didn't use those much.
- - Updates to use newer QMK function to call ¯\_(ツ)_/¯
- - Fix: you can now move back to the base layer when double tapping the thumb keys to switch to the Nav layer. ðŸ‘
-- 2018.09.06
- - Initial submission to QMK. It's alive! ⌨ï¸
-
-## Credits
-
-- Redox keyboard design by [Mattia Dal Ben](https://github.com/mattdibi/redox-keyboard).
-- This keymap is based off the default keymap for the Redox keyboard, available [here](https://github.com/qmk/qmk_firmware/tree/master/keyboards/redox) and also build by Mattia Dal Ben (thank you!).
-- This layout uses [QMK keyboard controller firmware](https://github.com/qmk/qmk_firmware/).
-
-I've also read posts by [Gergely Nagy](https://asylum.madhouse-project.org/blog/2016/10/15/multi-purpose-keys/), [Rebecca Le](https://sevenseacat.net/posts/2018/unicode-in-qmk-on-osx/), and [Justin Rogers](https://implementsblog.com/2016/10/16/my-ergodox-ezs-custom-layout/#comments) for inspiration.
diff --git a/keyboards/redox/keymaps/jeherve/rules.mk b/keyboards/redox/keymaps/jeherve/rules.mk
deleted file mode 100644
index ac2496b8c9..0000000000
--- a/keyboards/redox/keymaps/jeherve/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-RGBLIGHT_ENABLE = yes
-UNICODE_ENABLE = yes
-AUDIO_ENABLE = yes
diff --git a/keyboards/redox/keymaps/nrichers/config.h b/keyboards/redox/keymaps/nrichers/config.h
deleted file mode 100755
index cfb2a9378a..0000000000
--- a/keyboards/redox/keymaps/nrichers/config.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2018 Mattia Dal Ben <matthewdibi@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
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/nrichers/keymap.c b/keyboards/redox/keymaps/nrichers/keymap.c
deleted file mode 100755
index cfe6895cde..0000000000
--- a/keyboards/redox/keymaps/nrichers/keymap.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include QMK_KEYBOARD_H
-
-extern keymap_config_t keymap_config;
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTES LCTL_T(KC_ESC)
-#define KC_CTQU RCTL_T(KC_QUOT)
-
-#define KC_NAGR LT(_NAV, KC_GRV)
-#define KC_NAMI LT(_NAV, KC_MINS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_CTES ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_CTQU ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_BSLS ,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_LGUI , KC_SPC ,KC_BSPC , KC_DEL ,KC_ENT , KC_RGUI , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
diff --git a/keyboards/redox/keymaps/nrichers/readme.md b/keyboards/redox/keymaps/nrichers/readme.md
deleted file mode 100755
index 6189e8e9b2..0000000000
--- a/keyboards/redox/keymaps/nrichers/readme.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# A tweaked keymap for Redox
-
-This keymap modifies the [default keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/redox) for the awesome [Redox keyboard](https://github.com/mattdibi/redox-keyboard) designed by Mattia Dal Ben.
-
-![Modified Redox keymap](https://github.com/nrichers/qmk_firmware/blob/master/keyboards/redox/keymaps/nrichers/keymap.png)
-
-## Changes to the default keymap ![#99fcbe](https://placehold.it/15/99fcbe/000000?text=+)
-
-These keymap changes are meant to improve the usability of the layout in everyday use:
-
-- Move `GUI` (`SUPER`) key to where default left `CTRL` and right `ALT` are - gives you two frequently used `CMD` keys on macOS where my brain expects them
-- Move `/?` into usual location next to right `SHIFT` - the default flash from Falbatech put `\|` here (might not be the Redox default?), which felt unintuitive
-- Put `\|` into bottom-left spot where `GUI` (`SUPER`) was - had to go somewhere and this bottom-left placement sort of balances with the almost bottom-right `/?`
-- Change default `ESC` into `ESC` on tap, `CTRL` on hold - Love the UNIX-ey `CTRL` key location and wanted to keep `ESC` in the original position
-- Change default `'` above right `SHIFT` into `'` on tap, `CTRL` on hold - Love the UNIX-ey CTRL key location, but it can give you 'left claw hand', which a second, mirrored `CTRL` key fixes
-- Add `F11` and `F12` keys to two layers - needed on macOS if you want to control volume up and down from your keyboard (not shown, on a different layer)
-- On thumb clusters:
- - Left: Move `SPACE` closest to left thumb and move `BACKSPACE` to the right of that - put the key for 'getting it right' closest to your thumb and reduce usage of my right hand (purely personal preference)
- - Right: Move `ENTER` closest to right thumb and move `DEL` to the left of that - put the key for 'getting it right' closest to your thumb
-
-## Changes to the Redox layout ![#99e6fc](https://placehold.it/15/99e6fc/000000?text=+)
-
-These are physical keycap changes on the board that make reaching the `Layer 1` keys easier and that, subjectively, look more balanced visually:
-
-- Increase the `Layer 1` key sizes from 1U to 1.25U
-- Decrease the 1.5 U key size for `[` and `]` to 1.25U
-
-You could even make `[` and `]` 1U so that you can use keycaps from a standard ANSI key set and also increase the size of the `Layer 2` keys to 1.5U.
diff --git a/keyboards/redox/keymaps/nrichers/rules.mk b/keyboards/redox/keymaps/nrichers/rules.mk
deleted file mode 100755
index a81250cdf6..0000000000
--- a/keyboards/redox/keymaps/nrichers/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-RGBLIGHT_ENABLE = yes
-
diff --git a/keyboards/redox/keymaps/tw1t611/config.h b/keyboards/redox/keymaps/tw1t611/config.h
deleted file mode 100644
index 4f50e8507b..0000000000
--- a/keyboards/redox/keymaps/tw1t611/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-#undef RGBLED_NUM
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define RGBLED_NUM 14
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/tw1t611/keymap.c b/keyboards/redox/keymaps/tw1t611/keymap.c
deleted file mode 100644
index da978de9fa..0000000000
--- a/keyboards/redox/keymaps/tw1t611/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "keymap_german.h"
-
-enum {
- QWERTZ = 0,
- MOD,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [QWERTZ] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,_______ , _______ ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_ADIA ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_BSPC , KC_DEL ,KC_H ,KC_J ,KC_K ,KC_L ,DE_EQL ,DE_ODIA ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- DE_UNDS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LCTL ,KC_BSPC , KC_DEL ,KC_RCTL ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,DE_SS ,DE_UDIA ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , KC_LALT , KC_SPC ,KC_LSFT , MO(MOD) ,KC_ENT , KC_LGUI , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
- [MOD] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_F12 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- DE_CIRC ,DE_QUOT ,DE_DQUO ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_MOD , QK_BOOT,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- DE_TILD ,DE_EXLM ,DE_DLR ,DE_LPRN ,DE_RPRN ,DE_AMPR ,RGB_TOG , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,DE_QUES ,DE_PIPE ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,DE_AT ,DE_EURO ,DE_LBRC ,DE_RBRC ,_______ ,RGB_M_P ,_______ , _______ ,_______ ,DE_HASH ,DE_LABK ,DE_SCLN ,DE_COLN ,DE_RABK ,DE_SECT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-};
diff --git a/keyboards/redox/keymaps/tw1t611/readme.md b/keyboards/redox/keymaps/tw1t611/readme.md
deleted file mode 100644
index 1bb928f58d..0000000000
--- a/keyboards/redox/keymaps/tw1t611/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# Keymap for Redox by tw1t611
diff --git a/keyboards/redox/keymaps/via/config.h b/keyboards/redox/keymaps/via/config.h
index cfb2a9378a..7b9be07d97 100644
--- a/keyboards/redox/keymaps/via/config.h
+++ b/keyboards/redox/keymaps/via/config.h
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -34,7 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14
+#define RGBLIGHT_LED_COUNT 14
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/redox/keymaps/via/keymap.c b/keyboards/redox/keymaps/via/keymap.c
index 474f03ecd7..2724199842 100644
--- a/keyboards/redox/keymaps/via/keymap.c
+++ b/keyboards/redox/keymaps/via/keymap.c
@@ -1,19 +1,20 @@
- /* Copyright HarshitGoel96 2020
- * With permission from mattdibi, the original maintainer of the Redox hardware.
- *
- * 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 HarshitGoel96 2020
+* With permission from mattdibi, the original maintainer of the Redox hardware.
+*
+* 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
// Each layer gets a name for readability, which is then used in the keymap matrix below.
@@ -84,5 +85,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
)
-
-}; \ No newline at end of file
+};
diff --git a/keyboards/redox/keymaps/via/rules.mk b/keyboards/redox/keymaps/via/rules.mk
index 43061db1dd..36b7ba9cbc 100644
--- a/keyboards/redox/keymaps/via/rules.mk
+++ b/keyboards/redox/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-LTO_ENABLE = yes \ No newline at end of file
+LTO_ENABLE = yes
diff --git a/keyboards/redox/readme.md b/keyboards/redox/readme.md
deleted file mode 100644
index 82b00d79f7..0000000000
--- a/keyboards/redox/readme.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# The Redox keyboard
-
-<p align="center">
-<img src="https://github.com/mattdibi/redox-keyboard/raw/master/img/redox-logo.png" alt="Redox logo" width="600"/>
-</p>
-
-<p align="center">
-<img src="https://github.com/mattdibi/redox-keyboard/raw/master/img/redox-pcb2.jpg" alt="Redox PCB rev1.0" width="600"/>
-</p>
-
-**Redox**: the **R**educed **E**rgo**dox** project. More information and building instruction [here](https://github.com/mattdibi/redox-keyboard).
-
-- Keyboard Maintainer: [Mattia Dal Ben](https://github.com/mattdibi)
-- Hardware Supported: Redox PCB rev1.0 w/ Pro Micro or Proton C
-- Hardware Availability: [Falbatech](https://falba.tech/product-category/keyboard-parts/redox-parts/)
-
-Make example for this keyboard (after setting up [qmk](https://docs.qmk.fm/#/getting_started_build_tools)):
-
-To build the Pro Micro firmware, first set your config:
-```sh
-qmk config user.keyboard=redox/rev1
-```
-or if your using the Proton C:
-```sh
-qmk config user.keyboard=redox/rev1/proton_c
-```
-
-Don't forget to set a layout. There's many to choose from in the keymaps folder.
-```sh
-qmk config user.keymap=default
-```
-
-Now you can build your firmware!
-```sh
-qmk compile
-```
-
-Flashing is also straightforward. Run:
-```sh
-qmk flash
-```
-Enter the bootloader when prompted by doing one of the following:
-* **Physical reset button**: Briefly press the button on the back of the PCB
-* **Keycode in layout**: Press the key mapped to `QK_BOOT` if you have a layout that has one.
-
-The WS2812 driver is *untested* on the Proton C, but if you choose to use this feature, you will need to source 5v from the Proton's VUSB pin and not use the PCB's dedicated pin which will be 3v3 *and* follow the [documentation](https://docs.qmk.fm/#/ws2812_driver) to enable the correct driver settings.
-
-Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/redox/rev1/base/info.json b/keyboards/redox/rev1/base/info.json
index e0d1433115..a4a3f3fe96 100644
--- a/keyboards/redox/rev1/base/info.json
+++ b/keyboards/redox/rev1/base/info.json
@@ -13,6 +13,5 @@
"ws2812": {
"pin": "D3"
},
- "processor": "atmega32u4",
- "bootloader": "caterina"
+ "development_board": "promicro"
}
diff --git a/keyboards/redox/rev1/base/rules.mk b/keyboards/redox/rev1/base/rules.mk
index e69de29bb2..3bbd261429 100644
--- a/keyboards/redox/rev1/base/rules.mk
+++ b/keyboards/redox/rev1/base/rules.mk
@@ -0,0 +1 @@
+# File intentionally blank
diff --git a/keyboards/redox/rev1/info.json b/keyboards/redox/rev1/info.json
index c0c5ce6e1a..446020179c 100644
--- a/keyboards/redox/rev1/info.json
+++ b/keyboards/redox/rev1/info.json
@@ -8,9 +8,35 @@
"pid": "0x5244",
"device_version": "1.0.0"
},
+ "features":{
+ "bootmagic": true,
+ "command": true,
+ "console": false,
+ "mousekey": true,
+ "extrakey": true,
+ "nkro": true,
+ "rgblight": true
+ },
+ "split":{
+ "enabled": true
+ },
"rgblight": {
"led_count": 14,
- "split": true
+ "split": true,
+ "saturation_steps": 8,
+ "brightness_steps": 8,
+ "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
+ }
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/redox/rev1/proton_c/config.h b/keyboards/redox/rev1/proton_c/config.h
index 08a74aef2c..4d28bd2f4a 100644
--- a/keyboards/redox/rev1/proton_c/config.h
+++ b/keyboards/redox/rev1/proton_c/config.h
@@ -24,19 +24,3 @@
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
-
-/*
- * 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/redox/rev1/proton_c/info.json b/keyboards/redox/rev1/proton_c/info.json
index 7fec1e7950..48bec82627 100644
--- a/keyboards/redox/rev1/proton_c/info.json
+++ b/keyboards/redox/rev1/proton_c/info.json
@@ -10,7 +10,5 @@
"rows": ["B5", "B3", "B2", "B1", "B0"]
},
"diode_direction": "COL2ROW",
- "processor": "STM32F303",
- "bootloader": "stm32-dfu",
- "board": "QMK_PROTON_C"
+ "development_board": "proton_c"
}
diff --git a/keyboards/redox/rev1/readme.md b/keyboards/redox/rev1/readme.md
new file mode 100644
index 0000000000..6f336cde86
--- /dev/null
+++ b/keyboards/redox/rev1/readme.md
@@ -0,0 +1,50 @@
+# The Redox keyboard
+
+<p align="center">
+<img src="https://github.com/mattdibi/redox-keyboard/raw/master/img/redox-logo.png" alt="Redox logo" width="600"/>
+</p>
+
+<p align="center">
+<img src="https://github.com/mattdibi/redox-keyboard/raw/master/img/redox-pcb2.jpg" alt="Redox PCB rev1.0" width="600"/>
+</p>
+
+**Redox**: the **R**educed **E**rgo**dox** project. More information and building instruction [here](https://github.com/mattdibi/redox-keyboard).
+
+- Keyboard Maintainer: [Mattia Dal Ben](https://github.com/mattdibi)
+- Hardware Supported:
+ - Redox PCB rev1.0
+ - Pro Micro or Proton C micro controllers
+- Hardware Availability: [Falbatech](https://falba.tech/product-category/keyboard-parts/redox-parts/)
+
+Make example for this keyboard (after setting up [qmk](https://docs.qmk.fm/#/getting_started_build_tools)):
+
+To build the Pro Micro firmware, first set your config:
+```sh
+qmk config user.keyboard=redox/rev1
+```
+or if your using the Proton C:
+```sh
+qmk config user.keyboard=redox/rev1/proton_c
+```
+
+Don't forget to set a layout. There's many to choose from in the keymaps folder.
+```sh
+qmk config user.keymap=default
+```
+
+Now you can build your firmware!
+```sh
+qmk compile
+```
+
+Flashing is also straightforward. Run:
+```sh
+qmk flash
+```
+Enter the bootloader when prompted by doing one of the following:
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if you have a layout that has one.
+
+The WS2812 driver is *untested* on the Proton C, but if you choose to use this feature, you will need to source 5v from the Proton's VUSB pin and not use the PCB's dedicated pin which will be 3v3 *and* follow the [documentation](https://docs.qmk.fm/#/ws2812_driver) to enable the correct driver settings.
+
+Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/redox/rules.mk b/keyboards/redox/rules.mk
index 29ad3b9404..a2f52752e0 100644
--- a/keyboards/redox/rules.mk
+++ b/keyboards/redox/rules.mk
@@ -1,18 +1,3 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-SPLIT_KEYBOARD = yes
-
DEFAULT_FOLDER = redox/rev1/base
# Disable unsupported hardware
diff --git a/keyboards/redox/wireless/config.h b/keyboards/redox/wireless/config.h
new file mode 100644
index 0000000000..88e99b7352
--- /dev/null
+++ b/keyboards/redox/wireless/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2017 Mattia Dal Ben
+ *
+ * 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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define ONESHOT_TIMEOUT 500
diff --git a/keyboards/redox/wireless/info.json b/keyboards/redox/wireless/info.json
new file mode 100644
index 0000000000..86977f4602
--- /dev/null
+++ b/keyboards/redox/wireless/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "Redox Wireless",
+ "manufacturer": "Mattia Dal Ben",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D44",
+ "pid": "0x5257",
+ "device_version": "0.0.1"
+ },
+ "features":{
+ "bootmagic": true,
+ "command": true,
+ "console": true,
+ "mousekey": true,
+ "extrakey": true,
+ "nkro": true
+ },
+ "development_board": "promicro",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0.375, "w": 1.25},
+ {"matrix": [0, 1], "x": 1.25, "y": 0.375},
+ {"matrix": [0, 2], "x": 2.25, "y": 0.125},
+ {"matrix": [0, 3], "x": 3.25, "y": 0},
+ {"matrix": [0, 4], "x": 4.25, "y": 0.125},
+ {"matrix": [0, 5], "x": 5.25, "y": 0.25},
+
+ {"matrix": [0, 8], "x": 12.25, "y": 0.25},
+ {"matrix": [0, 9], "x": 13.25, "y": 0.125},
+ {"matrix": [0, 10], "x": 14.25, "y": 0},
+ {"matrix": [0, 11], "x": 15.25, "y": 0.125},
+ {"matrix": [0, 12], "x": 16.25, "y": 0.375},
+ {"matrix": [0, 13], "x": 17.25, "y": 0.375, "w": 1.25},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.375, "w": 1.25},
+ {"matrix": [1, 1], "x": 1.25, "y": 1.375},
+ {"matrix": [1, 2], "x": 2.25, "y": 1.125},
+ {"matrix": [1, 3], "x": 3.25, "y": 1},
+ {"matrix": [1, 4], "x": 4.25, "y": 1.125},
+ {"matrix": [1, 5], "x": 5.25, "y": 1.25},
+ {"matrix": [0, 6], "x": 6.25, "y": 0.75},
+
+ {"matrix": [0, 7], "x": 11.25, "y": 0.75},
+ {"matrix": [1, 8], "x": 12.25, "y": 1.25},
+ {"matrix": [1, 9], "x": 13.25, "y": 1.125},
+ {"matrix": [1, 10], "x": 14.25, "y": 1},
+ {"matrix": [1, 11], "x": 15.25, "y": 1.125},
+ {"matrix": [1, 12], "x": 16.25, "y": 1.375},
+ {"matrix": [1, 13], "x": 17.25, "y": 1.375, "w": 1.25},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.375, "w": 1.25},
+ {"matrix": [2, 1], "x": 1.25, "y": 2.375},
+ {"matrix": [2, 2], "x": 2.25, "y": 2.125},
+ {"matrix": [2, 3], "x": 3.25, "y": 2},
+ {"matrix": [2, 4], "x": 4.25, "y": 2.125},
+ {"matrix": [2, 5], "x": 5.25, "y": 2.25},
+ {"matrix": [1, 6], "x": 6.25, "y": 1.75, "h": 1.5},
+
+ {"matrix": [1, 7], "x": 11.25, "y": 1.75, "h": 1.5},
+ {"matrix": [2, 8], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 13.25, "y": 2.125},
+ {"matrix": [2, 10], "x": 14.25, "y": 2},
+ {"matrix": [2, 11], "x": 15.25, "y": 2.125},
+ {"matrix": [2, 12], "x": 16.25, "y": 2.375},
+ {"matrix": [2, 13], "x": 17.25, "y": 2.375, "w": 1.25},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.375, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.375},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.125},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.125},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 3.75},
+ {"matrix": [3, 6], "x": 7.75, "y": 3.75},
+
+ {"matrix": [3, 7], "x": 9.75, "y": 3.75},
+ {"matrix": [2, 7], "x": 10.75, "y": 3.75},
+ {"matrix": [3, 8], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 13.25, "y": 3.125},
+ {"matrix": [3, 10], "x": 14.25, "y": 3},
+ {"matrix": [3, 11], "x": 15.25, "y": 3.125},
+ {"matrix": [3, 12], "x": 16.25, "y": 3.375},
+ {"matrix": [3, 13], "x": 17.25, "y": 3.375, "w": 1.25},
+
+ {"matrix": [4, 0], "x": 0.25, "y": 4.375},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.375},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.125},
+ {"matrix": [4, 3], "x": 3.25, "y": 4},
+ {"matrix": [4, 4], "x": 5.5, "y": 5.25, "w": 1.25},
+ {"matrix": [4, 5], "x": 6.75, "y": 4.75, "h": 1.5},
+ {"matrix": [4, 6], "x": 7.75, "y": 4.75, "h": 1.5},
+
+ {"matrix": [4, 7], "x": 9.75, "y": 4.75, "h": 1.5},
+ {"matrix": [4, 8], "x": 10.75, "y": 4.75, "h": 1.5},
+ {"matrix": [4, 9], "x": 11.75, "y": 5.25, "w": 1.25},
+ {"matrix": [4, 10], "x": 14.25, "y": 4},
+ {"matrix": [4, 11], "x": 15.25, "y": 4.125},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.375},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.375}
+ ]
+ }
+ }
+}
diff --git a/keyboards/redox_w/matrix.c b/keyboards/redox/wireless/matrix.c
index 9c50c9cece..9c50c9cece 100644
--- a/keyboards/redox_w/matrix.c
+++ b/keyboards/redox/wireless/matrix.c
diff --git a/keyboards/redox/wireless/readme.md b/keyboards/redox/wireless/readme.md
new file mode 100644
index 0000000000..65386c94b1
--- /dev/null
+++ b/keyboards/redox/wireless/readme.md
@@ -0,0 +1,34 @@
+# Redox Wireless
+=======
+
+<p align="center">
+<img src="https://github.com/mattdibi/redox-keyboard/raw/master/img/redox-logo.png" alt="Redox logo" width="600"/>
+</p>
+
+**Redox**: the **R**educed **E**rgo**dox** project. More information and building instruction [here](https://github.com/mattdibi/redox-keyboard).
+
+A wireless version of the Redox keyboard.
+
+- Keyboard Maintainer: [@mattdibi](https://github.com/mattdibi)
+- Hardware Supported: Redox-w rev1.0W PCB
+- Hardware Availability: Falbatech
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make redox/wireless:default
+```
+
+Example of flashing this keyboard:
+
+```sh
+make redox/wireless:default:avrdude
+```
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+For nRF51822 firmware upload instruction and development see [the Redox wireless firmware repository](https://github.com/mattdibi/redox-w-firmware).
+
+## Notes
+
+These configuration files were based off the [Mitosis](https://github.com/qmk/qmk_firmware/tree/master/keyboards/mitosis) and [Atreus](https://github.com/technomancy/atreus) keyboard. It assumes a Pro Micro is being used, however retains the 'make upload' feature from the Atreus branch. This keyboard uses a completely different 'matrix scan' system to other keyboards, it relies on an external nRF51822 microcontroller maintaining a matrix of keystates received from the keyboard halves. The matrix.c file contains the code to poll the external microcontroller for the key matrix. As long as this file is not changed, all other QMK features are supported.
diff --git a/keyboards/redox/wireless/rules.mk b/keyboards/redox/wireless/rules.mk
new file mode 100644
index 0000000000..18d234d62a
--- /dev/null
+++ b/keyboards/redox/wireless/rules.mk
@@ -0,0 +1,5 @@
+CUSTOM_MATRIX = lite
+
+# project specific files
+SRC += matrix.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/redox/wireless/wireless.c b/keyboards/redox/wireless/wireless.c
new file mode 100644
index 0000000000..30cefd9f4e
--- /dev/null
+++ b/keyboards/redox/wireless/wireless.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2018 Mattia Dal Ben <matthewdibi@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/>.
+*/
+
+#include "wireless.h"
+
+void led_init(void) {
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(F4);
+ setPinOutput(F5);
+
+ writePinHigh(D0);
+ writePinHigh(D1);
+ writePinHigh(F4);
+ writePinHigh(F5);
+}
+
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+ matrix_init_user();
+ led_init();
+}
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+{{13, 0}, {12, 0}, {11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+{{13, 1}, {12, 1}, {11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+{{13, 2}, {12, 2}, {11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+{{13, 3}, {12, 3}, {11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
+{{13, 4}, {12, 4}, {11, 4}, {10, 4}, {9, 4}, {8, 4}, {7, 4}, {6, 4}, {5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+};
+#endif
diff --git a/keyboards/redox/wireless/wireless.h b/keyboards/redox/wireless/wireless.h
new file mode 100644
index 0000000000..a0ba09aff3
--- /dev/null
+++ b/keyboards/redox/wireless/wireless.h
@@ -0,0 +1,35 @@
+/*
+Copyright 2018 Mattia Dal Ben <matthewdibi@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
+
+#include "quantum.h"
+
+#define red_led_off writePinHigh(F5)
+#define red_led_on writePinLow(F5)
+#define blu_led_off writePinHigh(F4)
+#define blu_led_on writePinLow(F4)
+#define grn_led_off writePinHigh(D1)
+#define grn_led_on writePinLow(D1)
+#define wht_led_off writePinHigh(D0)
+#define wht_led_on writePinLow(D0)
+
+#define set_led_off red_led_off; grn_led_off; blu_led_off; wht_led_off
+#define set_led_red red_led_on; grn_led_off; blu_led_off; wht_led_off
+#define set_led_blue red_led_off; grn_led_off; blu_led_on; wht_led_off
+#define set_led_green red_led_off; grn_led_on; blu_led_off; wht_led_off
+#define set_led_white red_led_off; grn_led_off; blu_led_off; wht_led_on
diff --git a/keyboards/redox_w/config.h b/keyboards/redox_w/config.h
deleted file mode 100644
index bbdfbb7d1f..0000000000
--- a/keyboards/redox_w/config.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright 2017 Mattia Dal Ben
- *
- * 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
-
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 14
-
-#define ONESHOT_TIMEOUT 500
-
-/*
- * 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/redox_w/info.json b/keyboards/redox_w/info.json
deleted file mode 100644
index c765291258..0000000000
--- a/keyboards/redox_w/info.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "keyboard_name": "Redox Wireless",
- "manufacturer": "Mattia Dal Ben",
- "url": "",
- "maintainer": "qmk",
- "usb": {
- "vid": "0x4D44",
- "pid": "0x5257",
- "device_version": "0.0.1"
- },
- "processor": "atmega32u4",
- "bootloader": "caterina",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.375, "w": 1.25},
- {"matrix": [0, 1], "x": 1.25, "y": 0.375},
- {"matrix": [0, 2], "x": 2.25, "y": 0.125},
- {"matrix": [0, 3], "x": 3.25, "y": 0},
- {"matrix": [0, 4], "x": 4.25, "y": 0.125},
- {"matrix": [0, 5], "x": 5.25, "y": 0.25},
-
- {"matrix": [0, 8], "x": 12.25, "y": 0.25},
- {"matrix": [0, 9], "x": 13.25, "y": 0.125},
- {"matrix": [0, 10], "x": 14.25, "y": 0},
- {"matrix": [0, 11], "x": 15.25, "y": 0.125},
- {"matrix": [0, 12], "x": 16.25, "y": 0.375},
- {"matrix": [0, 13], "x": 17.25, "y": 0.375, "w": 1.25},
-
- {"matrix": [1, 0], "x": 0, "y": 1.375, "w": 1.25},
- {"matrix": [1, 1], "x": 1.25, "y": 1.375},
- {"matrix": [1, 2], "x": 2.25, "y": 1.125},
- {"matrix": [1, 3], "x": 3.25, "y": 1},
- {"matrix": [1, 4], "x": 4.25, "y": 1.125},
- {"matrix": [1, 5], "x": 5.25, "y": 1.25},
- {"matrix": [0, 6], "x": 6.25, "y": 0.75},
-
- {"matrix": [0, 7], "x": 11.25, "y": 0.75},
- {"matrix": [1, 8], "x": 12.25, "y": 1.25},
- {"matrix": [1, 9], "x": 13.25, "y": 1.125},
- {"matrix": [1, 10], "x": 14.25, "y": 1},
- {"matrix": [1, 11], "x": 15.25, "y": 1.125},
- {"matrix": [1, 12], "x": 16.25, "y": 1.375},
- {"matrix": [1, 13], "x": 17.25, "y": 1.375, "w": 1.25},
-
- {"matrix": [2, 0], "x": 0, "y": 2.375, "w": 1.25},
- {"matrix": [2, 1], "x": 1.25, "y": 2.375},
- {"matrix": [2, 2], "x": 2.25, "y": 2.125},
- {"matrix": [2, 3], "x": 3.25, "y": 2},
- {"matrix": [2, 4], "x": 4.25, "y": 2.125},
- {"matrix": [2, 5], "x": 5.25, "y": 2.25},
- {"matrix": [1, 6], "x": 6.25, "y": 1.75, "h": 1.5},
-
- {"matrix": [1, 7], "x": 11.25, "y": 1.75, "h": 1.5},
- {"matrix": [2, 8], "x": 12.25, "y": 2.25},
- {"matrix": [2, 9], "x": 13.25, "y": 2.125},
- {"matrix": [2, 10], "x": 14.25, "y": 2},
- {"matrix": [2, 11], "x": 15.25, "y": 2.125},
- {"matrix": [2, 12], "x": 16.25, "y": 2.375},
- {"matrix": [2, 13], "x": 17.25, "y": 2.375, "w": 1.25},
-
- {"matrix": [3, 0], "x": 0, "y": 3.375, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.375},
- {"matrix": [3, 2], "x": 2.25, "y": 3.125},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3.125},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [2, 6], "x": 6.75, "y": 3.75},
- {"matrix": [3, 6], "x": 7.75, "y": 3.75},
-
- {"matrix": [3, 7], "x": 9.75, "y": 3.75},
- {"matrix": [2, 7], "x": 10.75, "y": 3.75},
- {"matrix": [3, 8], "x": 12.25, "y": 3.25},
- {"matrix": [3, 9], "x": 13.25, "y": 3.125},
- {"matrix": [3, 10], "x": 14.25, "y": 3},
- {"matrix": [3, 11], "x": 15.25, "y": 3.125},
- {"matrix": [3, 12], "x": 16.25, "y": 3.375},
- {"matrix": [3, 13], "x": 17.25, "y": 3.375, "w": 1.25},
-
- {"matrix": [4, 0], "x": 0.25, "y": 4.375},
- {"matrix": [4, 1], "x": 1.25, "y": 4.375},
- {"matrix": [4, 2], "x": 2.25, "y": 4.125},
- {"matrix": [4, 3], "x": 3.25, "y": 4},
- {"matrix": [4, 4], "x": 5.5, "y": 5.25, "w": 1.25},
- {"matrix": [4, 5], "x": 6.75, "y": 4.75, "h": 1.5},
- {"matrix": [4, 6], "x": 7.75, "y": 4.75, "h": 1.5},
-
- {"matrix": [4, 7], "x": 9.75, "y": 4.75, "h": 1.5},
- {"matrix": [4, 8], "x": 10.75, "y": 4.75, "h": 1.5},
- {"matrix": [4, 9], "x": 11.75, "y": 5.25, "w": 1.25},
- {"matrix": [4, 10], "x": 14.25, "y": 4},
- {"matrix": [4, 11], "x": 15.25, "y": 4.125},
- {"matrix": [4, 12], "x": 16.25, "y": 4.375},
- {"matrix": [4, 13], "x": 17.25, "y": 4.375}
- ]
- }
- }
-}
diff --git a/keyboards/redox_w/keymaps/default/keymap.c b/keyboards/redox_w/keymaps/default/keymap.c
deleted file mode 100644
index a463bfc673..0000000000
--- a/keyboards/redox_w/keymaps/default/keymap.c
+++ /dev/null
@@ -1,111 +0,0 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTPL LCTL_T(KC_BSLS)
-
-#define KC_NAGR LT(_NAV, KC_GRV)
-#define KC_NAMI LT(_NAV, KC_MINS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_LGUI ,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _QWERTY:
- set_led_off;
- break;
- case _SYMB:
- set_led_green;
- break;
- case _NAV:
- set_led_blue;
- break;
- case _ADJUST:
- set_led_red;
- break;
- default:
- break;
- }
- return state;
-}
-
-
diff --git a/keyboards/redox_w/keymaps/default/readme.md b/keyboards/redox_w/keymaps/default/readme.md
deleted file mode 100644
index 32ab1253d7..0000000000
--- a/keyboards/redox_w/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# Default keymap for Redox Wireless
diff --git a/keyboards/redox_w/keymaps/dvorak/keymap.c b/keyboards/redox_w/keymaps/dvorak/keymap.c
deleted file mode 100644
index bf3d8917a4..0000000000
--- a/keyboards/redox_w/keymaps/dvorak/keymap.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Copyright 2021 66f94eae(66f94eae@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/>.
- */
-
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-enum layers {
- _DVORAK,
- _SYMB,
- _QWERTY,
- _ADJUST,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[_DVORAK] = LAYOUT(
-//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- QK_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC, KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_SLSH ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I ,KC_MINS, KC_EQL ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_PGUP ,KC_HOME , KC_END ,KC_PGDN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_RSFT ,
-//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_CAPS ,KC_APP ,KC_LALT ,KC_LGUI , LT(3,KC_MUTE), KC_SPC ,KC_INS , KC_DEL ,KC_ENT , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
-//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
-),
-
-[_SYMB] = LAYOUT(
-//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- QK_GESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_BSPC ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB , KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_WH_U ,KC_COPY ,KC_F6 , KC_F7 ,KC_COPY ,KC_P7 ,KC_P8 ,KC_P9 ,KC_MPRV ,KC_PPLS ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,KC_CUT ,KC_VOLD , KC_VOLU ,KC_CUT ,KC_P4 ,KC_P5 ,KC_P6 ,KC_MNXT ,KC_PMNS ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_WH_L ,KC_UP ,KC_WH_R ,KC_LGUI ,KC_PSTE ,KC_WH_U ,KC_SCRL , KC_NUM ,KC_WH_D ,KC_PSTE ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PEQL ,KC_PAST ,
-//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_CAPS ,KC_LEFT ,KC_DOWN ,KC_RGHT, LT(3,KC_MUTE) ,KC_SPC ,KC_ESC , KC_DEL ,KC_ENT , KC_APP , KC_P0 ,KC_PDOT ,KC_PENT ,KC_PSLS
-//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
-),
-
-[_QWERTY] = LAYOUT(
-//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- QK_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_HOME ,KC_PGUP , KC_PGDN ,KC_END ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
-//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_CAPS ,KC_LGUI ,KC_LALT , KC_APP ,LT(3,KC_MUTE) , KC_SPC ,KC_INS , KC_DEL ,KC_ENT , KC_APP , KC_LEFT ,KC_UP ,KC_DOWN ,KC_RGHT
-//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
-),
-
-[_ADJUST] = LAYOUT(
-//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- QK_GESC ,TO(0) ,TO(1) ,TO(2) ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
-//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_RSFT ,
-//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_NO ,KC_NO ,KC_NO ,KC_LGUI ,LT(3,KC_MUTE), KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_APP ,KC_NO ,KC_NO ,KC_NO ,KC_NO
-//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
-)
-
-};
-
-layer_state_t layer_state_set_user(layer_state_t state)
-{
- switch (get_highest_layer(state)) {
- case _DVORAK:
- blu_led_off;
- grn_led_off;
- break;
- case _SYMB:
- blu_led_on;
- grn_led_off;
- break;
- case _QWERTY:
- blu_led_off;
- grn_led_on;
- break;
- case _ADJUST:
- blu_led_on;
- grn_led_on;
- break;
- default:
- break;
- }
- return state;
-}
-
-bool led_update_user(led_t led_state)
-{
- if (led_state.caps_lock) {
- red_led_on;
- } else {
- red_led_off;
- }
- if (led_state.num_lock) {
- wht_led_on;
- } else {
- wht_led_off;
- }
- return false;
-}
diff --git a/keyboards/redox_w/keymaps/dvorak/readme.md b/keyboards/redox_w/keymaps/dvorak/readme.md
deleted file mode 100644
index cdc90976a7..0000000000
--- a/keyboards/redox_w/keymaps/dvorak/readme.md
+++ /dev/null
@@ -1,38 +0,0 @@
-### fork from default layout,and support dvorak layout[defalut layer]
-
-##### only use 3 layers
-
-```
-Keymap: 3 Layers
------------------
-stack of layers
- ____________ precedence
- / / | high
- 31 /___________// |
- : _:_:_:_:_:__ |
- 3 /___________// | --- adjust
- 2 /___________// | --- qwerty
- 1 /___________// | --- symb
- 0 /___________/ | --- dvorak[default]
-```
-
-defalut LED indicators
-
-RED --------- CAPS LOCK
-
-BLUE ------- SYMB layer
-
-GREEN----- QWERTY layer
-
-WHITE------ NUM LOCK *in my test case,this is inefficient on mac os*
-
-> BLUE and GREEN as a bit flag
->
-> 0                    0
-
-| BLUE(0) | GREEN(0) | STATUS | DESCRIBE |
-|:-------:|:--------:|:------:|:--------------------------------------------------- |
-| 0 | 0 | 0 | layer 0[dvorak] is active,and blue,green led is off |
-| 1 | 0 | 1 | layer1[symb] is active, and blue led is on |
-| 0 | 1 | 2 | layer 2[qwerty] is active,and green led is on |
-| 1 | 1 | 3 | layer 3[adjust] is active,and blue,green led is on |
diff --git a/keyboards/redox_w/keymaps/italian/keymap.c b/keyboards/redox_w/keymaps/italian/keymap.c
deleted file mode 100644
index 6d345028b2..0000000000
--- a/keyboards/redox_w/keymaps/italian/keymap.c
+++ /dev/null
@@ -1,123 +0,0 @@
-#include QMK_KEYBOARD_H
-
-#include "keymap_italian.h"
-
-extern keymap_config_t keymap_config;
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _SYMB 1
-#define _NAV 2
-#define _ADJUST 3
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SYMB,
- NAV,
- ADJUST,
-};
-
-// Shortcut to make keymap more readable
-#define KC_BKSL KC_BSLS
-#define SYM_L MO(_SYMB)
-
-#define KC_ALAS LALT_T(KC_PAST)
-#define KC_CTPL LCTL_T(KC_PSLS)
-
-#define KC_NAGR LT(_NAV, KC_GRV)
-#define KC_NAMI LT(_NAV, KC_MINS)
-
-#define KC_ADEN LT(_ADJUST, KC_END)
-#define KC_ADPU LT(_ADJUST, KC_PGUP)
-
-// Italian specific shortcuts
-#define ALT_IACC RALT_T(IT_IGRV)
-#define GUI_LESS LGUI_T(IT_LABK)
-
-#define IT_SHSL RSFT_T(KC_SLSH)
-#define IT_GRV RALT(KC_MINS)
-#define IT_TILD RALT(KC_EQL)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,IT_EGRV ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,IT_LBRC , IT_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,IT_OGRV ,IT_AGRV ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UGRV ,IT_SHSL ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- GUI_LESS,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , ALT_IACC, KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,IT_EXLM ,IT_AT ,IT_LCBR ,IT_RCBR ,IT_PIPE ,_______ , _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,IT_HASH ,IT_DLR ,IT_LBRC ,IT_RBRC ,IT_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,IT_PERC ,IT_CIRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-};
-
-void matrix_scan_user(void) {
- uint8_t layer = get_highest_layer(layer_state);
-
- switch (layer) {
- case _QWERTY:
- set_led_off;
- break;
- case _SYMB:
- set_led_green;
- break;
- case _NAV:
- set_led_blue;
- break;
- case _ADJUST:
- set_led_red;
- break;
- default:
- break;
- }
-};
diff --git a/keyboards/redox_w/keymaps/italian/readme.md b/keyboards/redox_w/keymaps/italian/readme.md
deleted file mode 100644
index a2b5ef7079..0000000000
--- a/keyboards/redox_w/keymaps/italian/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# Italian keymap for Redox Wireless
diff --git a/keyboards/redox_w/keymaps/via/keymap.c b/keyboards/redox_w/keymaps/via/keymap.c
deleted file mode 100644
index 2ec63ec852..0000000000
--- a/keyboards/redox_w/keymaps/via/keymap.c
+++ /dev/null
@@ -1,89 +0,0 @@
- /* Copyright HarshitGoel96 2020
- * With permission from mattdibi, the original maintainer of the Redox hardware.
- *
- * 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
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-
-enum custom_keycodes {
- _QWERTY,
- _SYMB,
- _NAV,
- _ADJUST,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,XXXXXXX , MO(_ADJUST) ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,XXXXXXX ,KC_PGDN , KC_HOME ,XXXXXXX ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- KC_LGUI ,KC_PPLS ,KC_PMNS ,MO(_SYMB) , MO(_NAV) , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_SYMB] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_NAV] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- ),
-
- [_ADJUST] = LAYOUT(
- //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
- //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
- //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
- )
-
-}; \ No newline at end of file
diff --git a/keyboards/redox_w/keymaps/via/readme.md b/keyboards/redox_w/keymaps/via/readme.md
deleted file mode 100644
index 32ab1253d7..0000000000
--- a/keyboards/redox_w/keymaps/via/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# Default keymap for Redox Wireless
diff --git a/keyboards/redox_w/keymaps/via/rules.mk b/keyboards/redox_w/keymaps/via/rules.mk
deleted file mode 100644
index 43061db1dd..0000000000
--- a/keyboards/redox_w/keymaps/via/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-VIA_ENABLE = yes
-LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/redox_w/readme.md b/keyboards/redox_w/readme.md
deleted file mode 100644
index a47fc2eadd..0000000000
--- a/keyboards/redox_w/readme.md
+++ /dev/null
@@ -1,34 +0,0 @@
-Redox wireless
-=======
-
-<p align="center">
-<img src="https://github.com/mattdibi/redox-keyboard/raw/master/img/redox-logo.png" alt="Redox logo" width="600"/>
-</p>
-
-**Redox**: the **R**educed **E**rgo**dox** project. More information and building instruction [here](https://github.com/mattdibi/redox-keyboard).
-
-A wireless version of the Redox keyboard.
-
-- Keyboard Maintainer: [@mattdibi](https://github.com/mattdibi)
-- Hardware Supported: Redox-w rev1.0W PCB
-- Hardware Availability: Falbatech
-
-Make example for this keyboard (after setting up your build environment):
-
-```sh
-make redox_w:default
-```
-
-Example of flashing this keyboard:
-
-```sh
-make redox_w:default:avrdude
-```
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
-
-For nRF51822 firmware upload instruction and development see [the Redox wireless firmware repository](https://github.com/mattdibi/redox-w-firmware).
-
-## Redox-w Notes
-
-These configuration files were based off the [Mitosis](https://github.com/qmk/qmk_firmware/tree/master/keyboards/mitosis) and [Atreus](https://github.com/technomancy/atreus) keyboard. It assumes a Pro Micro is being used, however retains the 'make upload' feature from the Atreus branch. This keyboard uses a completely different 'matrix scan' system to other keyboards, it relies on an external nRF51822 microcontroller maintaining a matrix of keystates received from the keyboard halves. The matrix.c file contains the code to poll the external microcontroller for the key matrix. As long as this file is not changed, all other QMK features are supported.
diff --git a/keyboards/redox_w/redox_w.c b/keyboards/redox_w/redox_w.c
deleted file mode 100644
index 48ea7d3bed..0000000000
--- a/keyboards/redox_w/redox_w.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "redox_w.h"
-
-void led_init(void) {
- setPinOutput(D0);
- setPinOutput(D1);
- setPinOutput(F4);
- setPinOutput(F5);
-
- writePinHigh(D0);
- writePinHigh(D1);
- writePinHigh(F4);
- writePinHigh(F5);
-}
-
-
-void matrix_init_kb(void) {
- // put your keyboard start-up code here
- // runs once when the firmware starts up
- matrix_init_user();
- led_init();
-}
-
-#ifdef SWAP_HANDS_ENABLE
-__attribute__ ((weak))
-const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
-{{13, 0}, {12, 0}, {11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
-{{13, 1}, {12, 1}, {11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
-{{13, 2}, {12, 2}, {11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
-{{13, 3}, {12, 3}, {11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
-{{13, 4}, {12, 4}, {11, 4}, {10, 4}, {9, 4}, {8, 4}, {7, 4}, {6, 4}, {5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
-};
-#endif
diff --git a/keyboards/redox_w/redox_w.h b/keyboards/redox_w/redox_w.h
deleted file mode 100644
index 086c8aae31..0000000000
--- a/keyboards/redox_w/redox_w.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-#define red_led_off writePinHigh(F5)
-#define red_led_on writePinLow(F5)
-#define blu_led_off writePinHigh(F4)
-#define blu_led_on writePinLow(F4)
-#define grn_led_off writePinHigh(D1)
-#define grn_led_on writePinLow(D1)
-#define wht_led_off writePinHigh(D0)
-#define wht_led_on writePinLow(D0)
-
-#define set_led_off red_led_off; grn_led_off; blu_led_off; wht_led_off
-#define set_led_red red_led_on; grn_led_off; blu_led_off; wht_led_off
-#define set_led_blue red_led_off; grn_led_off; blu_led_on; wht_led_off
-#define set_led_green red_led_off; grn_led_on; blu_led_off; wht_led_off
-#define set_led_white red_led_off; grn_led_off; blu_led_off; wht_led_on
diff --git a/keyboards/redox_w/rules.mk b/keyboards/redox_w/rules.mk
deleted file mode 100644
index f543b5fd9a..0000000000
--- a/keyboards/redox_w/rules.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # 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
-CUSTOM_MATRIX = lite
-
-# project specific files
-SRC += matrix.c
-UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/redragon/k667/config.h b/keyboards/redragon/k667/config.h
index 33e26c4a39..6408c97af4 100644
--- a/keyboards/redragon/k667/config.h
+++ b/keyboards/redragon/k667/config.h
@@ -16,12 +16,5 @@
#pragma once
-
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
-
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 45
-
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL)
-
diff --git a/keyboards/redragon/k667/info.json b/keyboards/redragon/k667/info.json
index 889ecd56c0..5261d11476 100644
--- a/keyboards/redragon/k667/info.json
+++ b/keyboards/redragon/k667/info.json
@@ -31,7 +31,6 @@
"processor": "STM32F103",
"rgb_matrix": {
"animations": {
- "solid_color": true,
"band_sat": true,
"band_spiral_val": true,
"band_spiral_sat": true,
diff --git a/keyboards/redragon/k667/k667.c b/keyboards/redragon/k667/k667.c
index 629e120b7b..a1930f3b85 100644
--- a/keyboards/redragon/k667/k667.c
+++ b/keyboards/redragon/k667/k667.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{0, G_1, I_1, H_1},
{0, G_3, I_3, H_3},
{0, G_4, I_4, H_4},
diff --git a/keyboards/reviung/reviung34/keymaps/default_rgb/config.h b/keyboards/reviung/reviung34/keymaps/default_rgb/config.h
index e4d91482c9..cc14e26943 100644
--- a/keyboards/reviung/reviung34/keymaps/default_rgb/config.h
+++ b/keyboards/reviung/reviung34/keymaps/default_rgb/config.h
@@ -19,7 +19,7 @@
// place overrides here
#define WS2812_DI_PIN D3
- #define RGBLED_NUM 9
+ #define RGBLIGHT_LED_COUNT 9
#define RGBLIGHT_HUE_STEP 16
#define RGBLIGHT_SAT_STEP 16
#define RGBLIGHT_VAL_STEP 16
diff --git a/keyboards/reviung/reviung34/keymaps/default_rgb2u/config.h b/keyboards/reviung/reviung34/keymaps/default_rgb2u/config.h
index e4d91482c9..cc14e26943 100644
--- a/keyboards/reviung/reviung34/keymaps/default_rgb2u/config.h
+++ b/keyboards/reviung/reviung34/keymaps/default_rgb2u/config.h
@@ -19,7 +19,7 @@
// place overrides here
#define WS2812_DI_PIN D3
- #define RGBLED_NUM 9
+ #define RGBLIGHT_LED_COUNT 9
#define RGBLIGHT_HUE_STEP 16
#define RGBLIGHT_SAT_STEP 16
#define RGBLIGHT_VAL_STEP 16
diff --git a/keyboards/reviung/reviung39/keymaps/default/config.h b/keyboards/reviung/reviung39/keymaps/default/config.h
index d868c539e4..d882e8ad94 100644
--- a/keyboards/reviung/reviung39/keymaps/default/config.h
+++ b/keyboards/reviung/reviung39/keymaps/default/config.h
@@ -19,7 +19,7 @@
// place overrides here
#define WS2812_DI_PIN D3
- #define RGBLED_NUM 11
+ #define RGBLIGHT_LED_COUNT 11
#define RGBLIGHT_HUE_STEP 16
#define RGBLIGHT_SAT_STEP 16
#define RGBLIGHT_VAL_STEP 16
diff --git a/keyboards/reviung/reviung39/keymaps/default_s/config.h b/keyboards/reviung/reviung39/keymaps/default_s/config.h
index c44a5f9d7c..3fd3c73fcc 100644
--- a/keyboards/reviung/reviung39/keymaps/default_s/config.h
+++ b/keyboards/reviung/reviung39/keymaps/default_s/config.h
@@ -19,7 +19,7 @@
// place overrides here
#define WS2812_DI_PIN D3
- #define RGBLED_NUM 6
+ #define RGBLIGHT_LED_COUNT 6
#define RGBLIGHT_HUE_STEP 16
#define RGBLIGHT_SAT_STEP 16
#define RGBLIGHT_VAL_STEP 16
diff --git a/keyboards/reviung/reviung39/keymaps/default_s/readme.md b/keyboards/reviung/reviung39/keymaps/default_s/readme.md
index b882ec40c2..a67401b97c 100644
--- a/keyboards/reviung/reviung39/keymaps/default_s/readme.md
+++ b/keyboards/reviung/reviung39/keymaps/default_s/readme.md
@@ -3,4 +3,4 @@
__REVIUNG39S is simple version__
The number of RGB LEDs is set to 6.
-To change the number of RGB LEDs, change the "#define RGBLED_NUM 6" number in "default_s / config.h".
+To change the number of RGB LEDs, change the "#define RGBLIGHT_LED_COUNT 6" number in "default_s / config.h".
diff --git a/keyboards/reviung/reviung61/keymaps/default_rgb/config.h b/keyboards/reviung/reviung61/keymaps/default_rgb/config.h
index 854af5142d..ddd5ef6cf5 100644
--- a/keyboards/reviung/reviung61/keymaps/default_rgb/config.h
+++ b/keyboards/reviung/reviung61/keymaps/default_rgb/config.h
@@ -20,7 +20,7 @@
// --- RGB underglow ---
#define WS2812_DI_PIN B7
- #define RGBLED_NUM 12
+ #define RGBLIGHT_LED_COUNT 12
#define RGBLIGHT_HUE_STEP 16
#define RGBLIGHT_SAT_STEP 16
#define RGBLIGHT_VAL_STEP 16
diff --git a/keyboards/rgbkb/common/touch_encoder.c b/keyboards/rgbkb/common/touch_encoder.c
index 5f0e4f0cca..18037b8fb5 100644
--- a/keyboards/rgbkb/common/touch_encoder.c
+++ b/keyboards/rgbkb/common/touch_encoder.c
@@ -125,7 +125,7 @@ bool touch_slave_init = false;
slave_touch_status_t touch_slave_state = { 0, 0 };
static bool write_register8(uint8_t address, uint8_t data) {
- i2c_status_t status = i2c_writeReg((I2C_ADDRESS << 1), address, &data, sizeof(data), I2C_TIMEOUT);
+ i2c_status_t status = i2c_write_register((I2C_ADDRESS << 1), address, &data, sizeof(data), I2C_TIMEOUT);
if (status != I2C_STATUS_SUCCESS) {
xprintf("write_register8 %d failed %d\n", address, status);
}
@@ -133,7 +133,7 @@ static bool write_register8(uint8_t address, uint8_t data) {
}
static bool read_register(uint8_t address, uint8_t* data, uint16_t length) {
- i2c_status_t status = i2c_readReg((I2C_ADDRESS << 1), address, data, length, I2C_TIMEOUT);
+ i2c_status_t status = i2c_read_register((I2C_ADDRESS << 1), address, data, length, I2C_TIMEOUT);
if (status != I2C_STATUS_SUCCESS) {
xprintf("read_register %d failed %d\n", address, status);
return false;
diff --git a/keyboards/rgbkb/mun/config.h b/keyboards/rgbkb/mun/config.h
index 87a7fe1319..b247fa91cd 100644
--- a/keyboards/rgbkb/mun/config.h
+++ b/keyboards/rgbkb/mun/config.h
@@ -43,63 +43,6 @@
/* Split Transport Features */
#define SPLIT_TRANSACTION_IDS_KB TOUCH_ENCODER_SYNC, RGB_MENU_SYNC
-#define RGB_MATRIX_LED_COUNT 98
-#define RGB_MATRIX_SPLIT { 49, 49 }
-#define RGB_MATRIX_CENTER { 128, 34 }
-#define RGB_MATRIX_LED_FLUSH_LIMIT 33
-#define RGB_MATRIX_LED_PROCESS_LIMIT 10
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#if RGB_UNLIMITED_POWER
#define RGBLIGHT_LIMIT_VAL 255
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
diff --git a/keyboards/rgbkb/mun/keymaps/default/config.h b/keyboards/rgbkb/mun/keymaps/default/config.h
index 88bdc06dee..7b8e106b46 100644
--- a/keyboards/rgbkb/mun/keymaps/default/config.h
+++ b/keyboards/rgbkb/mun/keymaps/default/config.h
@@ -18,4 +18,4 @@
// 20m timeout (20m * 60s * 1000mil)
// #define RGB_MATRIX_TIMEOUT 1200000
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
diff --git a/keyboards/rgbkb/mun/keymaps/via/config.h b/keyboards/rgbkb/mun/keymaps/via/config.h
index a0f581b50a..67ad76d191 100644
--- a/keyboards/rgbkb/mun/keymaps/via/config.h
+++ b/keyboards/rgbkb/mun/keymaps/via/config.h
@@ -18,7 +18,7 @@
// 20m timeout (20m * 60s * 1000mil)
// #define RGB_MATRIX_TIMEOUT 1200000
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
// 224B per layer right now
diff --git a/keyboards/rgbkb/mun/keymaps/xulkal2/config.h b/keyboards/rgbkb/mun/keymaps/xulkal2/config.h
index c945db1417..b34b40c785 100644
--- a/keyboards/rgbkb/mun/keymaps/xulkal2/config.h
+++ b/keyboards/rgbkb/mun/keymaps/xulkal2/config.h
@@ -30,7 +30,7 @@
// 20m timeout (20m * 60s * 1000mil)
// #define RGB_MATRIX_TIMEOUT 1200000
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define OLED_SCROLL_TIMEOUT 20000
#define ONESHOT_TAP_TOGGLE 2
diff --git a/keyboards/rgbkb/mun/rev1/info.json b/keyboards/rgbkb/mun/rev1/info.json
index 96d1a18e81..7374f6cd47 100644
--- a/keyboards/rgbkb/mun/rev1/info.json
+++ b/keyboards/rgbkb/mun/rev1/info.json
@@ -29,7 +29,57 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "center_point": [128, 34],
+ "driver": "ws2812",
+ "led_flush_limit": 33,
+ "led_process_limit": 10,
+ "sleep": true,
+ "split_count": [49, 49]
},
"matrix_pins": {
"cols": ["A0", "B11", "B0", "B10", "B12", "B2", "A8"],
diff --git a/keyboards/rgbkb/pan/config.h b/keyboards/rgbkb/pan/config.h
index 58b047c2b3..abb9620a5d 100644
--- a/keyboards/rgbkb/pan/config.h
+++ b/keyboards/rgbkb/pan/config.h
@@ -17,52 +17,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#define RGB_MATRIX_LED_COUNT 64
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/rgbkb/pan/info.json b/keyboards/rgbkb/pan/info.json
index fdf3519bb6..60c4431d34 100644
--- a/keyboards/rgbkb/pan/info.json
+++ b/keyboards/rgbkb/pan/info.json
@@ -9,6 +9,51 @@
"device_version": "0.0.2"
},
"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": "custom"
},
"rgblight": {
diff --git a/keyboards/rgbkb/sol/config.h b/keyboards/rgbkb/sol/config.h
index 9a05fa04e3..fb608c724c 100644
--- a/keyboards/rgbkb/sol/config.h
+++ b/keyboards/rgbkb/sol/config.h
@@ -30,54 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_LIMIT_VAL 120
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#endif
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define LED_HITS_TO_REMEMBER 5
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/rev1/config.h b/keyboards/rgbkb/sol/rev1/config.h
index a41959a88b..8e18f9df2c 100644
--- a/keyboards/rgbkb/sol/rev1/config.h
+++ b/keyboards/rgbkb/sol/rev1/config.h
@@ -19,10 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#ifdef LED_MIRRORED
- #define RGBLED_NUM 35
+ #define RGBLIGHT_LED_COUNT 35
#else
- #define RGBLED_NUM 70
+ #define RGBLIGHT_LED_COUNT 70
#endif
-#define RGB_MATRIX_LED_COUNT RGBLED_NUM
-
-#define RGB_MATRIX_CENTER { 112, 35 }
+#define RGB_MATRIX_LED_COUNT RGBLIGHT_LED_COUNT
diff --git a/keyboards/rgbkb/sol/rev1/info.json b/keyboards/rgbkb/sol/rev1/info.json
index 5b288088a9..874b4ece22 100644
--- a/keyboards/rgbkb/sol/rev1/info.json
+++ b/keyboards/rgbkb/sol/rev1/info.json
@@ -9,6 +9,52 @@
"device_version": "0.0.1"
},
"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
+ },
+ "center_point": [112, 35],
"driver": "ws2812"
},
"rgblight": {
diff --git a/keyboards/rgbkb/sol/rev2/config.h b/keyboards/rgbkb/sol/rev2/config.h
index 19680c84b3..ab5150051a 100644
--- a/keyboards/rgbkb/sol/rev2/config.h
+++ b/keyboards/rgbkb/sol/rev2/config.h
@@ -24,30 +24,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef LED_MIRRORED
#ifdef FULLHAND_ENABLE
#define FULLHAND_LEDS 24
- #define RGBLED_NUM 74
+ #define RGBLIGHT_LED_COUNT 74
#elif SF_ENABLE
#define FULLHAND_LEDS 38
- #define RGBLED_NUM 81
+ #define RGBLIGHT_LED_COUNT 81
#else
#define FULLHAND_LEDS 0
- #define RGBLED_NUM 62
+ #define RGBLIGHT_LED_COUNT 62
#endif
#else
#ifdef FULLHAND_ENABLE
#define FULLHAND_LEDS 24
- #define RGBLED_NUM 148
+ #define RGBLIGHT_LED_COUNT 148
#elif SF_ENABLE
#define FULLHAND_LEDS 38
- #define RGBLED_NUM 162
+ #define RGBLIGHT_LED_COUNT 162
#else
#define FULLHAND_LEDS 0
- #define RGBLED_NUM 124
+ #define RGBLIGHT_LED_COUNT 124
#endif
#endif
-#define RGB_MATRIX_LED_COUNT RGBLED_NUM
-
-#define RGB_MATRIX_CENTER { 112, 37 }
+#define RGB_MATRIX_LED_COUNT RGBLIGHT_LED_COUNT
// Encoder support
#ifndef EXTRA_ENCODERS_ENABLE
diff --git a/keyboards/rgbkb/sol/rev2/info.json b/keyboards/rgbkb/sol/rev2/info.json
index c71efbc769..ac57e4e74e 100644
--- a/keyboards/rgbkb/sol/rev2/info.json
+++ b/keyboards/rgbkb/sol/rev2/info.json
@@ -9,6 +9,52 @@
"device_version": "0.0.2"
},
"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
+ },
+ "center_point": [112, 37],
"driver": "ws2812"
},
"rgblight": {
diff --git a/keyboards/rgbkb/sol3/config.h b/keyboards/rgbkb/sol3/config.h
index 102ebcda95..2d3caeea4e 100644
--- a/keyboards/rgbkb/sol3/config.h
+++ b/keyboards/rgbkb/sol3/config.h
@@ -43,65 +43,6 @@
/* Split Transport Features */
#define SPLIT_TRANSACTION_IDS_KB TOUCH_ENCODER_SYNC, RGB_MENU_SYNC
-#define RGB_MATRIX_LED_COUNT 156
-#define RGB_MATRIX_SPLIT { 78, 78 }
-#define RGB_MATRIX_CENTER { 81, 28 }
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_MATRIX_LED_FLUSH_LIMIT 33
-#define RGB_MATRIX_LED_PROCESS_LIMIT 10
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define RGB_MATRIX_KEYPRESSES
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define WS2812_PWM_DRIVER PWMD3
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 2
diff --git a/keyboards/rgbkb/sol3/keymaps/default/config.h b/keyboards/rgbkb/sol3/keymaps/default/config.h
index 88bdc06dee..7b8e106b46 100644
--- a/keyboards/rgbkb/sol3/keymaps/default/config.h
+++ b/keyboards/rgbkb/sol3/keymaps/default/config.h
@@ -18,4 +18,4 @@
// 20m timeout (20m * 60s * 1000mil)
// #define RGB_MATRIX_TIMEOUT 1200000
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
diff --git a/keyboards/rgbkb/sol3/keymaps/via/config.h b/keyboards/rgbkb/sol3/keymaps/via/config.h
index 7b7f806261..8206f72fa6 100644
--- a/keyboards/rgbkb/sol3/keymaps/via/config.h
+++ b/keyboards/rgbkb/sol3/keymaps/via/config.h
@@ -18,7 +18,7 @@
// 20m timeout (20m * 60s * 1000mil)
// #define RGB_MATRIX_TIMEOUT 1200000
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/rgbkb/sol3/rev1/info.json b/keyboards/rgbkb/sol3/rev1/info.json
index c76e1f84dc..96213156f0 100644
--- a/keyboards/rgbkb/sol3/rev1/info.json
+++ b/keyboards/rgbkb/sol3/rev1/info.json
@@ -29,7 +29,57 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "center_point": [81, 28],
+ "driver": "ws2812",
+ "led_flush_limit": 33,
+ "led_process_limit": 10,
+ "sleep": true,
+ "split_count": [78, 78]
},
"matrix_pins": {
"cols": ["A6", "A7", "B0", "B2", "B1", "B9", "B3", "B4"],
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/default/config.h b/keyboards/rgbkb/zen/rev1/keymaps/default/config.h
index 1de23afd63..e9d6659d60 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/default/config.h
+++ b/keyboards/rgbkb/zen/rev1/keymaps/default/config.h
@@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -35,7 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 16
+#define RGBLIGHT_LED_COUNT 16
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/rgbkb/zygomorph/rev1/config.h b/keyboards/rgbkb/zygomorph/rev1/config.h
index 8a46a941b7..5e74a87f68 100644
--- a/keyboards/rgbkb/zygomorph/rev1/config.h
+++ b/keyboards/rgbkb/zygomorph/rev1/config.h
@@ -22,14 +22,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EE_HANDS
#ifndef RGBLIGHT_SPLIT_ENABLE
- #define RGBLED_NUM 30
+ #define RGBLIGHT_LED_COUNT 30
#else
- #define RGBLED_NUM 60
+ #define RGBLIGHT_LED_COUNT 60
#endif
-#define RGB_MATRIX_LED_COUNT 60
-#define RGB_MATRIX_SPLIT { 30, 30 }
-
#ifdef IOS_DEVICE_ENABLE
#define RGBLIGHT_LIMIT_VAL 40
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 40
diff --git a/keyboards/rgbkb/zygomorph/rev1/info.json b/keyboards/rgbkb/zygomorph/rev1/info.json
index 4cd4c876f0..3bd412cc3b 100644
--- a/keyboards/rgbkb/zygomorph/rev1/info.json
+++ b/keyboards/rgbkb/zygomorph/rev1/info.json
@@ -9,7 +9,8 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "split_count": [30, 30]
},
"matrix_pins": {
"cols": ["F4", "F6", "C7", "C6", "B6", "D4"],
diff --git a/keyboards/riot_pad/readme.md b/keyboards/riot_pad/readme.md
deleted file mode 100644
index c2c3ffd4be..0000000000
--- a/keyboards/riot_pad/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# riot_pad
-
-![riot_pad](https://i.imgur.com/zH6H3pSh.png)
-
-A RGB lovin', 6 key macropad.
-
-* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
-* Hardware Supported: RiotPad PCB
-* Hardware Availability: [Limited Groupbuy](https://store.shandon.codes/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make riot_pad:default
-
-Flashing example for this keyboard:
-
- make riot_pad: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 (0,0) in the matrix (top left key) and plug in the keyboard
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/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/rookiebwoy/late9/readme.md b/keyboards/rookiebwoy/late9/readme.md
new file mode 100644
index 0000000000..9815391cbd
--- /dev/null
+++ b/keyboards/rookiebwoy/late9/readme.md
@@ -0,0 +1,27 @@
+# LATE-9
+
+
+The LATE-9 is a multi-tap input keyboard based on mobile phones from the late '90s. LATE-9 is intended as a dev board with 18 buttons and an OLED screen, made by through-hole components only. With this, you can experiment QMK OLED capabilities with very little expense.
+
+![LATE-9](https://i.imgur.com/QXycTC3h.jpg "LATE-9 first proto")
+
+See the project repository for gerbers.
+
+* Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy)
+* Hardware supported: ProMicro, _Elite-C (not tested)_
+* Project repository: [LATE-9 on github](https://github.com/rookiebwoy/late-9)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make rookiebwoy/late9/rev1:default
+
+Flashing example for this keyboard:
+
+ make rookiebwoy/late9/rev1:default:flash
+
+
+When asked by the terminal, short with a metal wire the pins on the backside of the board highlighted as `RST` (one is the `RESET` and the other one is `GROUND`) to enter the bootloader and let the OS detects the device.
+After installing this firmware you can use Bootmagic to enter the bootloader while plugging in your LATE-9. By default it's the button on the upper-left of the keyboard.
+
+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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
diff --git a/keyboards/late9/rev1/config.h b/keyboards/rookiebwoy/late9/rev1/config.h
index 8c9a5702f2..8c9a5702f2 100644
--- a/keyboards/late9/rev1/config.h
+++ b/keyboards/rookiebwoy/late9/rev1/config.h
diff --git a/keyboards/late9/rev1/info.json b/keyboards/rookiebwoy/late9/rev1/info.json
index 05d0934b96..05d0934b96 100644
--- a/keyboards/late9/rev1/info.json
+++ b/keyboards/rookiebwoy/late9/rev1/info.json
diff --git a/keyboards/late9/rev1/keymaps/default/keymap.c b/keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c
index bed15eb57e..bed15eb57e 100644
--- a/keyboards/late9/rev1/keymaps/default/keymap.c
+++ b/keyboards/rookiebwoy/late9/rev1/keymaps/default/keymap.c
diff --git a/keyboards/late9/rev1/keymaps/default/readme.md b/keyboards/rookiebwoy/late9/rev1/keymaps/default/readme.md
index f78318d7de..f78318d7de 100644
--- a/keyboards/late9/rev1/keymaps/default/readme.md
+++ b/keyboards/rookiebwoy/late9/rev1/keymaps/default/readme.md
diff --git a/keyboards/late9/rev1/keymaps/multitap/keymap.c b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/keymap.c
index e378fb4921..e378fb4921 100644
--- a/keyboards/late9/rev1/keymaps/multitap/keymap.c
+++ b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/keymap.c
diff --git a/keyboards/late9/rev1/keymaps/multitap/readme.md b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/readme.md
index 2b5136c2b8..2b5136c2b8 100644
--- a/keyboards/late9/rev1/keymaps/multitap/readme.md
+++ b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/readme.md
diff --git a/keyboards/late9/rev1/keymaps/multitap/rules.mk b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/rules.mk
index 4141c3e7a4..4141c3e7a4 100644
--- a/keyboards/late9/rev1/keymaps/multitap/rules.mk
+++ b/keyboards/rookiebwoy/late9/rev1/keymaps/multitap/rules.mk
diff --git a/keyboards/late9/rev1/readme.md b/keyboards/rookiebwoy/late9/rev1/readme.md
index d9683222a9..d9683222a9 100644
--- a/keyboards/late9/rev1/readme.md
+++ b/keyboards/rookiebwoy/late9/rev1/readme.md
diff --git a/keyboards/late9/rev1/rev1.c b/keyboards/rookiebwoy/late9/rev1/rev1.c
index aa45141b06..aa45141b06 100644
--- a/keyboards/late9/rev1/rev1.c
+++ b/keyboards/rookiebwoy/late9/rev1/rev1.c
diff --git a/keyboards/late9/rev1/rules.mk b/keyboards/rookiebwoy/late9/rev1/rules.mk
index 874033acc9..874033acc9 100644
--- a/keyboards/late9/rev1/rules.mk
+++ b/keyboards/rookiebwoy/late9/rev1/rules.mk
diff --git a/keyboards/rookiebwoy/late9/rules.mk b/keyboards/rookiebwoy/late9/rules.mk
new file mode 100755
index 0000000000..358facb3ca
--- /dev/null
+++ b/keyboards/rookiebwoy/late9/rules.mk
@@ -0,0 +1 @@
+DEFAULT_FOLDER = rookiebwoy/late9/rev1
diff --git a/keyboards/rookiebwoy/neopad/readme.md b/keyboards/rookiebwoy/neopad/readme.md
new file mode 100644
index 0000000000..5b0ae7abc7
--- /dev/null
+++ b/keyboards/rookiebwoy/neopad/readme.md
@@ -0,0 +1,25 @@
+# Neopad
+
+Neopad is a little macropad with four switches and two rotary encoders, made by through hole components only.
+_Actually the number of switches is six, because even the encoder are allowed to click._
+
+![Neopad](https://i.imgur.com/TgOkj2Fh.jpg "Neopad first proto")
+
+The Neopad in the photo above is the first prototype. See the project repository for revision 1 update and KiCad files.
+
+* Keyboard maintainer: [rookiebwoy](https://github.com/rookiebwoy)
+* Hardware supported: ProMicro, _Elite-C (not tested)_
+* Project repository: [Neopad on github](https://github.com/rookiebwoy/neopad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make rookiebwoy/neopad/rev1:default
+
+Flashing example for this keyboard:
+
+ make rookiebwoy/neopad/rev1:default:flash
+
+When asked by the terminal, press the dedicated `RESET` button (the one above the 2 LEDs) to enter the bootloader and let the OS detects the device.
+
+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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
diff --git a/keyboards/neopad/rev1/config.h b/keyboards/rookiebwoy/neopad/rev1/config.h
index fd1724caf1..fd1724caf1 100755
--- a/keyboards/neopad/rev1/config.h
+++ b/keyboards/rookiebwoy/neopad/rev1/config.h
diff --git a/keyboards/neopad/rev1/info.json b/keyboards/rookiebwoy/neopad/rev1/info.json
index 0a0340c06d..0a0340c06d 100755
--- a/keyboards/neopad/rev1/info.json
+++ b/keyboards/rookiebwoy/neopad/rev1/info.json
diff --git a/keyboards/neopad/rev1/keymaps/default/keymap.c b/keyboards/rookiebwoy/neopad/rev1/keymaps/default/keymap.c
index 08227c84f9..08227c84f9 100755
--- a/keyboards/neopad/rev1/keymaps/default/keymap.c
+++ b/keyboards/rookiebwoy/neopad/rev1/keymaps/default/keymap.c
diff --git a/keyboards/neopad/rev1/readme.md b/keyboards/rookiebwoy/neopad/rev1/readme.md
index 1265922722..1265922722 100644
--- a/keyboards/neopad/rev1/readme.md
+++ b/keyboards/rookiebwoy/neopad/rev1/readme.md
diff --git a/keyboards/neopad/rev1/rev1.c b/keyboards/rookiebwoy/neopad/rev1/rev1.c
index c8216f4e70..c8216f4e70 100755
--- a/keyboards/neopad/rev1/rev1.c
+++ b/keyboards/rookiebwoy/neopad/rev1/rev1.c
diff --git a/keyboards/neopad/rev1/rules.mk b/keyboards/rookiebwoy/neopad/rev1/rules.mk
index 7816aab001..7816aab001 100755
--- a/keyboards/neopad/rev1/rules.mk
+++ b/keyboards/rookiebwoy/neopad/rev1/rules.mk
diff --git a/keyboards/rookiebwoy/neopad/rules.mk b/keyboards/rookiebwoy/neopad/rules.mk
new file mode 100755
index 0000000000..c34c04435e
--- /dev/null
+++ b/keyboards/rookiebwoy/neopad/rules.mk
@@ -0,0 +1 @@
+DEFAULT_FOLDER = rookiebwoy/neopad/rev1
diff --git a/keyboards/rura66/rev1/oled_display.c b/keyboards/rura66/rev1/oled_display.c
index d2e3422bf9..514fda9992 100644
--- a/keyboards/rura66/rev1/oled_display.c
+++ b/keyboards/rura66/rev1/oled_display.c
@@ -18,61 +18,59 @@
// Defines names for use in layer keycodes and the keymap
enum layer_names {
- _QWERTY = 0,
- _LOWER,
- _RAISE,
- _ADJUST
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
};
#ifdef OLED_ENABLE
void render_status(void) {
+ // Render to mode icon
+ static const char os_logo[][2][3] PROGMEM = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
+ if (is_mac_mode()) {
+ oled_write_P(os_logo[0][0], false);
+ oled_write_P(PSTR("\n"), false);
+ oled_write_P(os_logo[0][1], false);
+ } else {
+ oled_write_P(os_logo[1][0], false);
+ oled_write_P(PSTR("\n"), false);
+ oled_write_P(os_logo[1][1], false);
+ }
- // Render to mode icon
- static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
- if (is_mac_mode()) {
- oled_write_P(os_logo[0][0], false);
- oled_write_P(PSTR("\n"), false);
- oled_write_P(os_logo[0][1], false);
- }else{
- oled_write_P(os_logo[1][0], false);
- oled_write_P(PSTR("\n"), false);
- oled_write_P(os_logo[1][1], false);
- }
-
- oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(" "), false);
- // Host Keyboard Layer Status
- oled_write_P(PSTR("Layer: "), false);
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
- switch (get_highest_layer(layer_state)) {
- case _QWERTY:
- oled_write_P(PSTR("Default\n"), false);
- break;
- case _RAISE:
- oled_write_P(PSTR("Raise\n"), false);
- break;
- case _LOWER:
- oled_write_P(PSTR("Lower\n"), false);
- break;
- case _ADJUST:
- oled_write_P(PSTR("Adjust\n"), false);
- break;
- default:
- // Or use the write_ln shortcut over adding '\n' to the end of your string
- oled_write_ln_P(PSTR("Undefined"), false);
- }
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower\n"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adjust\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
- oled_write_P(PSTR("\n"), false);
+ oled_write_P(PSTR("\n"), false);
- // Host Keyboard LED Status
- led_t led_state = host_keyboard_led_state();
- oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
- oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
- oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
-
static void render_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
@@ -84,35 +82,38 @@ static void render_logo(void) {
}
static void render_rgbled_status(bool full) {
-#ifdef RGBLIGHT_ENABLE
- if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) {
- if (full) {
- // " LED %d:%d,%d,%d"
- oled_write_P(PSTR(" LED"), false);
- oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
- oled_write_char(':', false);
- oled_write(get_u8_str(rgblight_get_hue()/RGBLIGHT_HUE_STEP, ' '), false);
- oled_write_char(',', false);
- oled_write(get_u8_str(rgblight_get_sat()/RGBLIGHT_SAT_STEP, ' '), false);
- oled_write_char(',', false);
- oled_write(get_u8_str(rgblight_get_val()/RGBLIGHT_VAL_STEP, ' '), false);
- } else {
- // "[%2d] "
- oled_write_char('[', false);
- oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
- oled_write_char(']', false);
+# ifdef RGBLIGHT_ENABLE
+ if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) {
+ if (full) {
+ // " LED %d:%d,%d,%d"
+ oled_write_P(PSTR(" LED"), false);
+ oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
+ oled_write_char(':', false);
+ oled_write(get_u8_str(rgblight_get_hue() / RGBLIGHT_HUE_STEP, ' '), false);
+ oled_write_char(',', false);
+ oled_write(get_u8_str(rgblight_get_sat() / RGBLIGHT_SAT_STEP, ' '), false);
+ oled_write_char(',', false);
+ oled_write(get_u8_str(rgblight_get_val() / RGBLIGHT_VAL_STEP, ' '), false);
+ } else {
+ // "[%2d] "
+ oled_write_char('[', false);
+ oled_write(get_u8_str(rgblight_get_mode(), ' '), false);
+ oled_write_char(']', false);
+ }
}
- }
-#endif
+# endif
}
-bool oled_task_user(void) {
- if(is_keyboard_master()){
- render_status();
- }else{
- render_logo();
- render_rgbled_status(true);
- }
- return false;
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ if (is_keyboard_master()) {
+ render_status();
+ } else {
+ render_logo();
+ render_rgbled_status(true);
+ }
+ return true;
}
#endif
diff --git a/keyboards/ryanskidmore/rskeys100/config.h b/keyboards/ryanskidmore/rskeys100/config.h
index 1ec96ddfdf..9f01b96248 100644
--- a/keyboards/ryanskidmore/rskeys100/config.h
+++ b/keyboards/ryanskidmore/rskeys100/config.h
@@ -3,7 +3,6 @@
#pragma once
-
/* Key Matrix Sizes */
#define MATRIX_ROWS 6
#define MATRIX_COLS 24
@@ -29,14 +28,6 @@
/* The number of RGB LEDs connected */
#define RGB_MATRIX_LED_COUNT 105
-/* Set the maximum brightness to 110 to avoid going over 500 mA.
- * At full brightness with all three indicator LEDs on, the power draw is about 450 mA. */
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 110
-/* Enable framebuffer effects */
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-/* Enable the cycle left right animation and set it as the startup mode */
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/ryanskidmore/rskeys100/info.json b/keyboards/ryanskidmore/rskeys100/info.json
index 1e7bf80828..dfd6ce5c24 100644
--- a/keyboards/ryanskidmore/rskeys100/info.json
+++ b/keyboards/ryanskidmore/rskeys100/info.json
@@ -11,7 +11,11 @@
"pin": "C7"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "cycle_left_right": true
+ },
+ "driver": "ws2812",
+ "max_brightness": 110
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
diff --git a/keyboards/s_ol/0xc_pad/config.h b/keyboards/s_ol/0xc_pad/config.h
deleted file mode 100644
index 865ab45d31..0000000000
--- a/keyboards/s_ol/0xc_pad/config.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright 2021 s-ol
- *
- * 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
-
-
-/* ws2812 RGB LED */
-#define RGB_MATRIX_LED_COUNT 12
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_MATRIX_CENTER \
- { 112, 63 }
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER
-
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SPLASH
diff --git a/keyboards/s_ol/0xc_pad/info.json b/keyboards/s_ol/0xc_pad/info.json
index 9809230260..a4809b9c7c 100644
--- a/keyboards/s_ol/0xc_pad/info.json
+++ b/keyboards/s_ol/0xc_pad/info.json
@@ -10,6 +10,26 @@
"pin": "C7"
},
"rgb_matrix": {
+ "animations": {
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "band_spiral_sat": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_spiral": true,
+ "hue_breathing": true,
+ "hue_wave": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "typing_heatmap": true,
+ "solid_reactive": true,
+ "splash": true
+ },
+ "center_point": [112, 63],
"driver": "ws2812"
},
"layouts": {
diff --git a/keyboards/saevus/cor_tkl/config.h b/keyboards/saevus/cor_tkl/config.h
deleted file mode 100644
index 7fedf4dce1..0000000000
--- a/keyboards/saevus/cor_tkl/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2022 Ramon Imbao
-
-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
-
-
-/* RGB Matrix setup */
-#define RGB_MATRIX_LED_COUNT 2
-#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/config.h b/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/config.h
index 12d5784374..f2a365a52e 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/config.h
+++ b/keyboards/salicylic_acid3/naked48/keymaps/default_with_nafuda/config.h
@@ -25,11 +25,11 @@
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 180
-#ifdef RGBLED_NUM
- #undef RGBLED_NUM
+#ifdef RGBLIGHT_LED_COUNT
+ #undef RGBLIGHT_LED_COUNT
#endif
-#define RGBLED_NUM 55 // Number of LEDs
+#define RGBLIGHT_LED_COUNT 55 // Number of LEDs
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT { 48, 7 }
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/default_with_setta21/config.h b/keyboards/salicylic_acid3/naked48/keymaps/default_with_setta21/config.h
index 392f2f97e8..d0f71f4f9f 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/default_with_setta21/config.h
+++ b/keyboards/salicylic_acid3/naked48/keymaps/default_with_setta21/config.h
@@ -25,10 +25,10 @@
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 180
-#ifdef RGBLED_NUM
- #undef RGBLED_NUM
+#ifdef RGBLIGHT_LED_COUNT
+ #undef RGBLIGHT_LED_COUNT
#endif
-#define RGBLED_NUM 69 // Number of LEDs
+#define RGBLIGHT_LED_COUNT 69 // Number of LEDs
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT { 48, 21 }
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/salicylic/config.h b/keyboards/salicylic_acid3/naked48/keymaps/salicylic/config.h
index b8a6b843ce..94b5ebf0c8 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/salicylic/config.h
+++ b/keyboards/salicylic_acid3/naked48/keymaps/salicylic/config.h
@@ -30,7 +30,7 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/config.h b/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/config.h
index 21494a0dfd..a967ffd3c1 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/config.h
+++ b/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/config.h
@@ -21,8 +21,8 @@
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 180
-#ifdef RGBLED_NUM
- #undef RGBLED_NUM
+#ifdef RGBLIGHT_LED_COUNT
+ #undef RGBLIGHT_LED_COUNT
#endif
#define RGB_MATRIX_LED_COUNT 48
@@ -31,7 +31,7 @@
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
- #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_SLEEP // turn off effects when suspended
#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
diff --git a/keyboards/salicylic_acid3/naked64/keymaps/default_with_setta21/config.h b/keyboards/salicylic_acid3/naked64/keymaps/default_with_setta21/config.h
index 73a3019540..ebc2b46717 100644
--- a/keyboards/salicylic_acid3/naked64/keymaps/default_with_setta21/config.h
+++ b/keyboards/salicylic_acid3/naked64/keymaps/default_with_setta21/config.h
@@ -25,6 +25,6 @@
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 180
-#define RGBLED_NUM 12 // Number of LEDs
+#define RGBLIGHT_LED_COUNT 12 // Number of LEDs
#define RGBLIGHT_LED_MAP { 0, 1, 3, 2, 2, 3, 2, 3, 4, 5, 6, 7 }
diff --git a/keyboards/salicylic_acid3/setta21/keymaps/salicylic/config.h b/keyboards/salicylic_acid3/setta21/keymaps/salicylic/config.h
index 540c819c2b..590edd0f02 100644
--- a/keyboards/salicylic_acid3/setta21/keymaps/salicylic/config.h
+++ b/keyboards/salicylic_acid3/setta21/keymaps/salicylic/config.h
@@ -26,7 +26,7 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
diff --git a/keyboards/sawnsprojects/satxri6key/config.h b/keyboards/sawnsprojects/satxri6key/config.h
deleted file mode 100644
index d649c698ab..0000000000
--- a/keyboards/sawnsprojects/satxri6key/config.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * 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 RGB_MATRIX_LED_COUNT 6
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Sets the default mode, if none has been set
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/sawnsprojects/satxri6key/info.json b/keyboards/sawnsprojects/satxri6key/info.json
index 5d92db728a..e56af19c7d 100644
--- a/keyboards/sawnsprojects/satxri6key/info.json
+++ b/keyboards/sawnsprojects/satxri6key/info.json
@@ -8,6 +8,58 @@
"pid": "0x0727",
"device_version": "0.0.1"
},
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "solid_reactive_simple"
+ },
+ "driver": "ws2812",
+ "max_brightness": 200,
+ "react_on_keyup": true
+ },
"rgblight": {
"saturation_steps": 8,
"brightness_steps": 8,
diff --git a/keyboards/senselessclay/ck60/config.h b/keyboards/senselessclay/ck60/config.h
deleted file mode 100644
index 44f0121915..0000000000
--- a/keyboards/senselessclay/ck60/config.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright 2020 Hadi Iskandarani
-
-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
-
-/* RGB matrix lighting */
-#define RGB_MATRIX_LED_COUNT 62
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160 // limit brightness to not overamp the USB
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // 16 is equivalent to limiting to 60fps
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/senselessclay/ck60/info.json b/keyboards/senselessclay/ck60/info.json
index f05d94c9de..e997157436 100644
--- a/keyboards/senselessclay/ck60/info.json
+++ b/keyboards/senselessclay/ck60/info.json
@@ -12,7 +12,32 @@
"pin": "B1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "typing_heatmap": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true,
+ "multisplash": true,
+ "solid_multisplash": true
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "ws2812",
+ "max_brightness": 160,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F0", "D5", "D3", "D2", "D1", "D0", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"],
diff --git a/keyboards/sets3n/kk980/config.h b/keyboards/sets3n/kk980/config.h
index c19b74dc53..5e35453f1f 100644
--- a/keyboards/sets3n/kk980/config.h
+++ b/keyboards/sets3n/kk980/config.h
@@ -24,8 +24,3 @@
#define RGBLIGHT_LAYERS
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
-
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_COUNT 102
-#define RGB_MATRIX_KEYPRESSES
-#endif
diff --git a/keyboards/flygone60/rev3/config.h b/keyboards/shandoncodes/flygone60/rev3/config.h
index 339cf3c782..339cf3c782 100644
--- a/keyboards/flygone60/rev3/config.h
+++ b/keyboards/shandoncodes/flygone60/rev3/config.h
diff --git a/keyboards/flygone60/rev3/info.json b/keyboards/shandoncodes/flygone60/rev3/info.json
index 254f093aee..254f093aee 100644
--- a/keyboards/flygone60/rev3/info.json
+++ b/keyboards/shandoncodes/flygone60/rev3/info.json
diff --git a/keyboards/flygone60/rev3/keymaps/default/keymap.c b/keyboards/shandoncodes/flygone60/rev3/keymaps/default/keymap.c
index 20bcc64f80..20bcc64f80 100644
--- a/keyboards/flygone60/rev3/keymaps/default/keymap.c
+++ b/keyboards/shandoncodes/flygone60/rev3/keymaps/default/keymap.c
diff --git a/keyboards/flygone60/rev3/keymaps/default/readme.md b/keyboards/shandoncodes/flygone60/rev3/keymaps/default/readme.md
index 91ea23c734..91ea23c734 100644
--- a/keyboards/flygone60/rev3/keymaps/default/readme.md
+++ b/keyboards/shandoncodes/flygone60/rev3/keymaps/default/readme.md
diff --git a/keyboards/flygone60/rev3/keymaps/via/keymap.c b/keyboards/shandoncodes/flygone60/rev3/keymaps/via/keymap.c
index 54b0e4f673..54b0e4f673 100644
--- a/keyboards/flygone60/rev3/keymaps/via/keymap.c
+++ b/keyboards/shandoncodes/flygone60/rev3/keymaps/via/keymap.c
diff --git a/keyboards/flygone60/rev3/keymaps/via/rules.mk b/keyboards/shandoncodes/flygone60/rev3/keymaps/via/rules.mk
index 43061db1dd..43061db1dd 100644
--- a/keyboards/flygone60/rev3/keymaps/via/rules.mk
+++ b/keyboards/shandoncodes/flygone60/rev3/keymaps/via/rules.mk
diff --git a/keyboards/shandoncodes/flygone60/rev3/readme.md b/keyboards/shandoncodes/flygone60/rev3/readme.md
new file mode 100644
index 0000000000..4bb2438602
--- /dev/null
+++ b/keyboards/shandoncodes/flygone60/rev3/readme.md
@@ -0,0 +1,19 @@
+# flygone60
+
+![Flygone60](https://i.imgur.com/x63gMG2h.jpeg)
+
+A 60% that takes arrow keys seriously!
+
+* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
+* Hardware Supported: Flygone60
+* Hardware Availability: [Kit](https://www.etsy.com/listing/1025415290/flygone60-keyboard-kit?ga_order=most_relevant&ga_search_type=all&ga_view_type=gallery&ga_search_query=flygone60&ref=sr_gallery-1-13&organic_search_click=1&frs=1)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shandoncodes/flygone60/rev3:default
+
+Flashing example for this keyboard:
+
+ make shandoncodes/flygone60/rev3: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).
diff --git a/keyboards/flygone60/rev3/rules.mk b/keyboards/shandoncodes/flygone60/rev3/rules.mk
index ab2c49da70..ab2c49da70 100644
--- a/keyboards/flygone60/rev3/rules.mk
+++ b/keyboards/shandoncodes/flygone60/rev3/rules.mk
diff --git a/keyboards/mino/hotswap/config.h b/keyboards/shandoncodes/mino/hotswap/config.h
index 45fec5af48..45fec5af48 100644
--- a/keyboards/mino/hotswap/config.h
+++ b/keyboards/shandoncodes/mino/hotswap/config.h
diff --git a/keyboards/mino/hotswap/info.json b/keyboards/shandoncodes/mino/hotswap/info.json
index 9ba7617920..9ba7617920 100644
--- a/keyboards/mino/hotswap/info.json
+++ b/keyboards/shandoncodes/mino/hotswap/info.json
diff --git a/keyboards/mino/hotswap/rules.mk b/keyboards/shandoncodes/mino/hotswap/rules.mk
index f8a709213c..f8a709213c 100644
--- a/keyboards/mino/hotswap/rules.mk
+++ b/keyboards/shandoncodes/mino/hotswap/rules.mk
diff --git a/keyboards/mino/keymaps/default/keymap.c b/keyboards/shandoncodes/mino/keymaps/default/keymap.c
index 94ef51e0e3..94ef51e0e3 100644
--- a/keyboards/mino/keymaps/default/keymap.c
+++ b/keyboards/shandoncodes/mino/keymaps/default/keymap.c
diff --git a/keyboards/mino/keymaps/via/keymap.c b/keyboards/shandoncodes/mino/keymaps/via/keymap.c
index f481b07d34..f481b07d34 100644
--- a/keyboards/mino/keymaps/via/keymap.c
+++ b/keyboards/shandoncodes/mino/keymaps/via/keymap.c
diff --git a/keyboards/mino/keymaps/via/rules.mk b/keyboards/shandoncodes/mino/keymaps/via/rules.mk
index a4ac614775..a4ac614775 100644
--- a/keyboards/mino/keymaps/via/rules.mk
+++ b/keyboards/shandoncodes/mino/keymaps/via/rules.mk
diff --git a/keyboards/shandoncodes/mino/readme.md b/keyboards/shandoncodes/mino/readme.md
new file mode 100644
index 0000000000..7ccb70662b
--- /dev/null
+++ b/keyboards/shandoncodes/mino/readme.md
@@ -0,0 +1,27 @@
+# mino
+
+![Mino](https://i.imgur.com/f5kHu8Qh.jpg)
+
+A 47 key board with a retro twist.
+
+* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
+* Hardware Supported: Mino PCB
+* Hardware Availability: Groupbuy
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. For the default keymap it is the middle spacebar on the second layer.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shandoncodes/mino/hotswap:default
+
+Flashing example for this keyboard:
+
+ make shandoncodes/mino/hotswap: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).
diff --git a/keyboards/mino_plus/hotswap/config.h b/keyboards/shandoncodes/mino_plus/hotswap/config.h
index b8c0007938..b8c0007938 100644
--- a/keyboards/mino_plus/hotswap/config.h
+++ b/keyboards/shandoncodes/mino_plus/hotswap/config.h
diff --git a/keyboards/mino_plus/hotswap/halconf.h b/keyboards/shandoncodes/mino_plus/hotswap/halconf.h
index fb8ce45220..fb8ce45220 100644
--- a/keyboards/mino_plus/hotswap/halconf.h
+++ b/keyboards/shandoncodes/mino_plus/hotswap/halconf.h
diff --git a/keyboards/mino_plus/hotswap/hotswap.c b/keyboards/shandoncodes/mino_plus/hotswap/hotswap.c
index a5920b2617..a5920b2617 100644
--- a/keyboards/mino_plus/hotswap/hotswap.c
+++ b/keyboards/shandoncodes/mino_plus/hotswap/hotswap.c
diff --git a/keyboards/mino_plus/hotswap/info.json b/keyboards/shandoncodes/mino_plus/hotswap/info.json
index b7cda6d71f..b7cda6d71f 100644
--- a/keyboards/mino_plus/hotswap/info.json
+++ b/keyboards/shandoncodes/mino_plus/hotswap/info.json
diff --git a/keyboards/mino_plus/hotswap/keymaps/default/keymap.c b/keyboards/shandoncodes/mino_plus/hotswap/keymaps/default/keymap.c
index f068c66215..f068c66215 100644
--- a/keyboards/mino_plus/hotswap/keymaps/default/keymap.c
+++ b/keyboards/shandoncodes/mino_plus/hotswap/keymaps/default/keymap.c
diff --git a/keyboards/mino_plus/hotswap/keymaps/via/keymap.c b/keyboards/shandoncodes/mino_plus/hotswap/keymaps/via/keymap.c
index 901adcb3d2..901adcb3d2 100644
--- a/keyboards/mino_plus/hotswap/keymaps/via/keymap.c
+++ b/keyboards/shandoncodes/mino_plus/hotswap/keymaps/via/keymap.c
diff --git a/keyboards/mino_plus/hotswap/keymaps/via/rules.mk b/keyboards/shandoncodes/mino_plus/hotswap/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/mino_plus/hotswap/keymaps/via/rules.mk
+++ b/keyboards/shandoncodes/mino_plus/hotswap/keymaps/via/rules.mk
diff --git a/keyboards/mino_plus/hotswap/mcuconf.h b/keyboards/shandoncodes/mino_plus/hotswap/mcuconf.h
index 7b8a66123e..7b8a66123e 100644
--- a/keyboards/mino_plus/hotswap/mcuconf.h
+++ b/keyboards/shandoncodes/mino_plus/hotswap/mcuconf.h
diff --git a/keyboards/mino_plus/hotswap/rules.mk b/keyboards/shandoncodes/mino_plus/hotswap/rules.mk
index 76e55c05f4..76e55c05f4 100644
--- a/keyboards/mino_plus/hotswap/rules.mk
+++ b/keyboards/shandoncodes/mino_plus/hotswap/rules.mk
diff --git a/keyboards/shandoncodes/mino_plus/mino_plus.c b/keyboards/shandoncodes/mino_plus/mino_plus.c
new file mode 100644
index 0000000000..0763a5292b
--- /dev/null
+++ b/keyboards/shandoncodes/mino_plus/mino_plus.c
@@ -0,0 +1,251 @@
+// Copyright 2023 ShandonCodes (@ShandonCodes)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "quantum.h"
+
+#ifdef OLED_ENABLE
+# define FRAMES 5
+# define ANIMATION_SIZE 512
+# define TAP_SPEED 30
+
+uint8_t current_frame = 0;
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+uint32_t ANIM_FRAME_DURATION = 1000;
+
+static void render_animation(void) {
+ static const char PROGMEM animation_frames[FRAMES][ANIMATION_SIZE] = {
+ // 'Base', 32x128px
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0,
+ 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
+ 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
+ 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
+ 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
+ 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
+ 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
+ 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
+ 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
+ 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
+ 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
+ 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
+ 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
+
+ // 'Frame_1', 32x128px
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x4c, 0x4c, 0xfc, 0xfc, 0x4c,
+ 0x4c, 0xfc, 0xc0, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x04,
+ 0x04, 0x07, 0x07, 0x04, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0,
+ 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
+ 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
+ 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
+ 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
+ 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
+ 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
+ 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
+ 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
+ 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
+ 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
+ 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
+ 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
+
+ // 'Frame_2', 32x128px
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0xc0, 0x40,
+ 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x3f, 0x7f, 0x44,
+ 0x44, 0x7f, 0x7c, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0,
+ 0x40, 0x40, 0x40, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
+ 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
+ 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
+ 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
+ 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
+ 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
+ 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
+ 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
+ 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
+ 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
+ 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
+ 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
+
+ // 'Frame_3', 32x128px
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0xfc, 0xfc, 0x44,
+ 0x44, 0xfc, 0xc0, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x43, 0x47, 0xc4,
+ 0x44, 0x47, 0x47, 0xc4, 0x44, 0x47, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
+ 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
+ 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
+ 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
+ 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
+ 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
+ 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
+ 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
+ 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
+ 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
+ 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
+ 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f},
+
+ // 'Frame_4', 32x128px
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0xc0, 0x40,
+ 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc4, 0x44, 0x7f, 0x7f, 0xe6,
+ 0x66, 0x7f, 0x7e, 0xe4, 0x64, 0x7c, 0x40, 0xc0, 0xc0, 0x40, 0x40, 0xc1, 0xc3, 0x43, 0x43, 0xc3,
+ 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0xe6, 0xfc, 0x20, 0x20, 0xff, 0xe6, 0x66, 0x66, 0xff,
+ 0xe6, 0x26, 0x26, 0x67, 0xe6, 0x26, 0x26, 0xe7, 0xff, 0x66, 0x66, 0xff, 0x7f, 0x26, 0x26, 0x3f,
+ 0xe0, 0x20, 0x20, 0x20, 0xff, 0x22, 0x22, 0xff, 0xff, 0x22, 0x22, 0xff, 0xe3, 0x22, 0x22, 0xe3,
+ 0x3f, 0x22, 0x22, 0xe2, 0x3f, 0x22, 0x22, 0x3f, 0xff, 0x22, 0x22, 0xff, 0x22, 0x00, 0x00, 0x00,
+ 0xff, 0x33, 0x33, 0x33, 0xff, 0x1f, 0x13, 0x13, 0xff, 0xff, 0x33, 0x33, 0xff, 0x33, 0x13, 0x13,
+ 0x1f, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x33, 0xff, 0x33, 0x33, 0xff, 0x02, 0x00, 0x00, 0x00,
+ 0xff, 0x11, 0x11, 0x91, 0xff, 0xf0, 0x10, 0x10, 0xff, 0xff, 0x11, 0x11, 0xff, 0x9b, 0x11, 0x11,
+ 0xff, 0x91, 0x11, 0x91, 0xff, 0x11, 0x11, 0x1f, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x99, 0x99, 0x99, 0xff, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9, 0xf9, 0x99, 0x99, 0xf9,
+ 0x9f, 0x99, 0x99, 0xf9, 0x1f, 0x19, 0x19, 0x1f, 0xff, 0x99, 0x99, 0xff, 0xff, 0x99, 0x99, 0xff,
+ 0xf8, 0x88, 0x88, 0x88, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff, 0xff, 0x89, 0x89, 0xff,
+ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x80, 0xff, 0xc9, 0x89, 0x89, 0xff,
+ 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x40, 0x40, 0xcc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0xcc, 0x48, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xfc, 0xff, 0xcc, 0xcc, 0xff, 0xff, 0xcc, 0xcc, 0xff,
+ 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f,
+ 0x7c, 0x7c, 0x7c, 0x7f, 0x7c, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f, 0x7f, 0x7c, 0x7c, 0x7f}
+ };
+
+ void animate_phase(void) {
+ current_frame = (current_frame + 1) % FRAMES;
+ oled_write_raw_P(animation_frames[current_frame], ANIMATION_SIZE);
+ }
+
+ if (get_current_wpm() != 000) {
+ oled_on(); // not essential but turns on animation OLED with any alpha keypress
+ if (get_current_wpm() > TAP_SPEED) {
+ ANIM_FRAME_DURATION = 100;
+ } else {
+ ANIM_FRAME_DURATION = 1000;
+ }
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animate_phase();
+ }
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animate_phase();
+ }
+ }
+ }
+}
+
+static void render_status(void) {
+ // Host Keyboard Layer Status
+ oled_write_ln_P(PSTR("Layer"), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Base"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("1"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("2"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+}
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ render_animation();
+ render_status();
+
+ oled_write_ln_P(PSTR("WPM:"), false);
+ oled_write_ln(get_u8_str(get_current_wpm(), '0'), false);
+
+ return true;
+}
+#endif
diff --git a/keyboards/shandoncodes/mino_plus/readme.md b/keyboards/shandoncodes/mino_plus/readme.md
new file mode 100644
index 0000000000..8f2b06fa3c
--- /dev/null
+++ b/keyboards/shandoncodes/mino_plus/readme.md
@@ -0,0 +1,29 @@
+# mino_plus
+
+![mino_plus](https://i.imgur.com/vZJ6kaNh.jpg)
+
+A 65% keyboard, inspried by tetrominos.
+
+* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
+* Hardware Supported: Mino Plus PCB
+* Hardware Availability: https://store.shandon.codes/mino-plus/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shandoncodes/mino_plus/soldered:default
+ make shandoncodes/mino_plus/hotswap:default
+
+Flashing example for this keyboard:
+
+ make shandoncodes/mino_plus/soldered:default:flash
+ make shandoncodes/mino_plus/hotswap: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 (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `FN` + `R` if it is available.
diff --git a/keyboards/mino_plus/soldered/config.h b/keyboards/shandoncodes/mino_plus/soldered/config.h
index bbdb3c9452..bbdb3c9452 100644
--- a/keyboards/mino_plus/soldered/config.h
+++ b/keyboards/shandoncodes/mino_plus/soldered/config.h
diff --git a/keyboards/mino_plus/soldered/halconf.h b/keyboards/shandoncodes/mino_plus/soldered/halconf.h
index 65321fb1c8..65321fb1c8 100644
--- a/keyboards/mino_plus/soldered/halconf.h
+++ b/keyboards/shandoncodes/mino_plus/soldered/halconf.h
diff --git a/keyboards/mino_plus/soldered/info.json b/keyboards/shandoncodes/mino_plus/soldered/info.json
index 52b612e01b..52b612e01b 100644
--- a/keyboards/mino_plus/soldered/info.json
+++ b/keyboards/shandoncodes/mino_plus/soldered/info.json
diff --git a/keyboards/mino_plus/soldered/keymaps/default/keymap.c b/keyboards/shandoncodes/mino_plus/soldered/keymaps/default/keymap.c
index 365f31440a..365f31440a 100644
--- a/keyboards/mino_plus/soldered/keymaps/default/keymap.c
+++ b/keyboards/shandoncodes/mino_plus/soldered/keymaps/default/keymap.c
diff --git a/keyboards/mino_plus/soldered/keymaps/via/keymap.c b/keyboards/shandoncodes/mino_plus/soldered/keymaps/via/keymap.c
index 2a7e816e36..2a7e816e36 100644
--- a/keyboards/mino_plus/soldered/keymaps/via/keymap.c
+++ b/keyboards/shandoncodes/mino_plus/soldered/keymaps/via/keymap.c
diff --git a/keyboards/mino_plus/soldered/keymaps/via/rules.mk b/keyboards/shandoncodes/mino_plus/soldered/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/mino_plus/soldered/keymaps/via/rules.mk
+++ b/keyboards/shandoncodes/mino_plus/soldered/keymaps/via/rules.mk
diff --git a/keyboards/mino_plus/soldered/mcuconf.h b/keyboards/shandoncodes/mino_plus/soldered/mcuconf.h
index 7968bd26da..7968bd26da 100644
--- a/keyboards/mino_plus/soldered/mcuconf.h
+++ b/keyboards/shandoncodes/mino_plus/soldered/mcuconf.h
diff --git a/keyboards/mino_plus/soldered/rules.mk b/keyboards/shandoncodes/mino_plus/soldered/rules.mk
index 76e55c05f4..76e55c05f4 100644
--- a/keyboards/mino_plus/soldered/rules.mk
+++ b/keyboards/shandoncodes/mino_plus/soldered/rules.mk
diff --git a/keyboards/mino_plus/soldered/soldered.c b/keyboards/shandoncodes/mino_plus/soldered/soldered.c
index 6dd113ebfa..6dd113ebfa 100644
--- a/keyboards/mino_plus/soldered/soldered.c
+++ b/keyboards/shandoncodes/mino_plus/soldered/soldered.c
diff --git a/keyboards/riot_pad/config.h b/keyboards/shandoncodes/riot_pad/config.h
index 4c5de878dc..4c5de878dc 100644
--- a/keyboards/riot_pad/config.h
+++ b/keyboards/shandoncodes/riot_pad/config.h
diff --git a/keyboards/riot_pad/halconf.h b/keyboards/shandoncodes/riot_pad/halconf.h
index 555a609029..555a609029 100644
--- a/keyboards/riot_pad/halconf.h
+++ b/keyboards/shandoncodes/riot_pad/halconf.h
diff --git a/keyboards/riot_pad/info.json b/keyboards/shandoncodes/riot_pad/info.json
index ab732ef0b0..ab732ef0b0 100644
--- a/keyboards/riot_pad/info.json
+++ b/keyboards/shandoncodes/riot_pad/info.json
diff --git a/keyboards/riot_pad/keymaps/default/keymap.c b/keyboards/shandoncodes/riot_pad/keymaps/default/keymap.c
index 0e6eda839e..0e6eda839e 100644
--- a/keyboards/riot_pad/keymaps/default/keymap.c
+++ b/keyboards/shandoncodes/riot_pad/keymaps/default/keymap.c
diff --git a/keyboards/riot_pad/keymaps/via/keymap.c b/keyboards/shandoncodes/riot_pad/keymaps/via/keymap.c
index 0e6eda839e..0e6eda839e 100644
--- a/keyboards/riot_pad/keymaps/via/keymap.c
+++ b/keyboards/shandoncodes/riot_pad/keymaps/via/keymap.c
diff --git a/keyboards/riot_pad/keymaps/via/rules.mk b/keyboards/shandoncodes/riot_pad/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/riot_pad/keymaps/via/rules.mk
+++ b/keyboards/shandoncodes/riot_pad/keymaps/via/rules.mk
diff --git a/keyboards/riot_pad/mcuconf.h b/keyboards/shandoncodes/riot_pad/mcuconf.h
index 7c3eec4802..7c3eec4802 100644
--- a/keyboards/riot_pad/mcuconf.h
+++ b/keyboards/shandoncodes/riot_pad/mcuconf.h
diff --git a/keyboards/shandoncodes/riot_pad/readme.md b/keyboards/shandoncodes/riot_pad/readme.md
new file mode 100644
index 0000000000..ce5f874213
--- /dev/null
+++ b/keyboards/shandoncodes/riot_pad/readme.md
@@ -0,0 +1,25 @@
+# riot_pad
+
+![riot_pad](https://i.imgur.com/zH6H3pSh.png)
+
+A RGB lovin', 6 key macropad.
+
+* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes)
+* Hardware Supported: RiotPad PCB
+* Hardware Availability: [Limited Groupbuy](https://store.shandon.codes/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shandoncodes/riot_pad:default
+
+Flashing example for this keyboard:
+
+ make shandoncodes/riot_pad: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 (0,0) in the matrix (top left key) and plug in the keyboard
diff --git a/keyboards/riot_pad/rules.mk b/keyboards/shandoncodes/riot_pad/rules.mk
index 7ff128fa69..7ff128fa69 100644
--- a/keyboards/riot_pad/rules.mk
+++ b/keyboards/shandoncodes/riot_pad/rules.mk
diff --git a/keyboards/sharkoon/skiller_sgk50_s3/config.h b/keyboards/sharkoon/skiller_sgk50_s3/config.h
index 113ee2bab0..7cc691ea95 100644
--- a/keyboards/sharkoon/skiller_sgk50_s3/config.h
+++ b/keyboards/sharkoon/skiller_sgk50_s3/config.h
@@ -3,11 +3,6 @@
#pragma once
-/* RGB Matrix */
-#define RGB_MATRIX_LED_COUNT 88
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_DEFAULT_VAL 80
-
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
diff --git a/keyboards/sharkoon/skiller_sgk50_s3/info.json b/keyboards/sharkoon/skiller_sgk50_s3/info.json
index 9dd0ddb50c..0b228b034b 100644
--- a/keyboards/sharkoon/skiller_sgk50_s3/info.json
+++ b/keyboards/sharkoon/skiller_sgk50_s3/info.json
@@ -59,7 +59,6 @@
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
- "solid_color": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
@@ -73,6 +72,9 @@
"splash": true,
"typing_heatmap": true
},
+ "default": {
+ "val": 80
+ },
"driver": "ws2812",
"layout": [
{"matrix": [5, 6], "x": 90, "y": 64, "flags": 4},
@@ -165,7 +167,8 @@
{"matrix": [4, 1], "x": 15, "y": 51, "flags": 4}
],
"max_brightness": 110,
- "val_steps": 28
+ "val_steps": 28,
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/silverbullet44/config.h b/keyboards/silverbullet44/config.h
index e8f1cca7eb..acba2932db 100644
--- a/keyboards/silverbullet44/config.h
+++ b/keyboards/silverbullet44/config.h
@@ -19,16 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MASTER_RIGHT
- #ifdef RGB_MATRIX_ENABLE
- #define RGB_MATRIX_LED_COUNT 52
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-
- #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
- #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-
- #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
- #else
+#ifdef RGBLIGHT_ENABLE
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
@@ -36,10 +27,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_BREATHE_CENTER 2 // 1 to 2.7
#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
/*== customize snake effect ==*/
- #define RGBLIGHT_EFFECT_SNAKE_LENGTH RGBLED_NUM
+ #define RGBLIGHT_EFFECT_SNAKE_LENGTH RGBLIGHT_LED_COUNT
/*== customize knight effect ==*/
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 6
- #endif
+#endif
/* Audio */
#ifdef AUDIO_ENABLE
diff --git a/keyboards/silverbullet44/info.json b/keyboards/silverbullet44/info.json
index a761288fb4..fe45ad86c5 100644
--- a/keyboards/silverbullet44/info.json
+++ b/keyboards/silverbullet44/info.json
@@ -12,7 +12,14 @@
"pin": "D3"
},
"rgb_matrix": {
+ "animations": {
+ "typing_heatmap": true
+ },
+ "default": {
+ "animation": "typing_heatmap"
+ },
"driver": "ws2812",
+ "max_brightness": 150,
"sat_steps": 8,
"val_steps": 8,
"speed_steps": 8
diff --git a/keyboards/sirius/unigo66/main.c b/keyboards/sirius/unigo66/main.c
index b4f2a91e49..4f8e2f0c94 100644
--- a/keyboards/sirius/unigo66/main.c
+++ b/keyboards/sirius/unigo66/main.c
@@ -85,7 +85,7 @@ int main(void)
_delay_ms(1000);
}
- debug("init: done\n");
+ dprintln("init: done");
for (;;) {
keyboard_task();
diff --git a/keyboards/skeletonkbd/frost68/config.h b/keyboards/skeletonkbd/frost68/config.h
index eaf7a31fb6..7066497f1a 100644
--- a/keyboards/skeletonkbd/frost68/config.h
+++ b/keyboards/skeletonkbd/frost68/config.h
@@ -3,59 +3,4 @@
#pragma once
-#define WS2812_PIO_USE_PIO1
-#define RGB_MATRIX_LED_COUNT 68
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define USB_SUSPEND_WAKEUP_DELAY 200
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN
diff --git a/keyboards/skeletonkbd/frost68/info.json b/keyboards/skeletonkbd/frost68/info.json
index 742daf8d57..0411a3826d 100644
--- a/keyboards/skeletonkbd/frost68/info.json
+++ b/keyboards/skeletonkbd/frost68/info.json
@@ -26,6 +26,54 @@
"pin": "GP0"
},
"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_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_up_down"
+ },
"driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 33.1, "y": 3.7, "flags": 4},
@@ -98,9 +146,11 @@
{"matrix": [0, 15], "x": 233.9, "y": 1.5, "flags": 4}
],
"max_brightness": 118,
+ "react_on_keyup": true,
"sat_steps": 8,
"speed_steps": 10,
- "val_steps": 8
+ "val_steps": 8,
+ "sleep": true
},
"url": "https://skeletonkbd.com/",
"usb": {
diff --git a/keyboards/skmt/15k/config.h b/keyboards/skmt/15k/config.h
deleted file mode 100644
index 6e0360ec7b..0000000000
--- a/keyboards/skmt/15k/config.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2022 Jimmy Lye (@satorusaka)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-
-#define RGB_MATRIX_LED_COUNT 15 // Number of LEDs
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16
-#define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/skmt/15k/info.json b/keyboards/skmt/15k/info.json
index 0f33362092..903a13b985 100644
--- a/keyboards/skmt/15k/info.json
+++ b/keyboards/skmt/15k/info.json
@@ -16,7 +16,7 @@
"matrix_pins": {
"cols": ["GP2", "GP3", "GP4", "GP5", "GP6"],
"rows": ["GP7", "GP8", "GP9"]
- },
+ },
"processor": "RP2040",
"url": "https://github.com/satorusaka/15k-macropad",
"usb": {
@@ -47,6 +47,51 @@
}
},
"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": [
{"flags": 4, "matrix": [2, 4], "x": 224, "y": 64},
@@ -64,7 +109,8 @@
{"flags": 4, "matrix": [0, 2], "x": 112, "y": 0},
{"flags": 4, "matrix": [0, 1], "x": 56, "y": 0},
{"flags": 4, "matrix": [0, 0], "x": 0, "y": 0}
- ]
+ ],
+ "sleep": true
},
"ws2812": {
"pin": "GP1",
diff --git a/keyboards/skyloong/dt40/config.h b/keyboards/skyloong/dt40/config.h
index e67b7ae0a9..b0aa978063 100644
--- a/keyboards/skyloong/dt40/config.h
+++ b/keyboards/skyloong/dt40/config.h
@@ -15,13 +15,7 @@
*/
#pragma once
-#define RGB_MATRIX_LED_COUNT 44 //The number of LEDs connected
-#define RGB_MATRIX_KEYPRESSES //Reacts to keypress
-#define RGB_DISABLE_WHEN_USB_SUSPENDED //turn off effects when suspended
-
-#define RGB_MATRIX_DEFAULT_VAL 150 //Sets the default mode, if none has been set
#define RGB_TRIGGER_ON_KEYDOWN //Triggers RGB keypress events on key down
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 1
//Set WS2812 driver
@@ -32,5 +26,3 @@
#define WS2812_PWM_PAL_MODE 2
#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
#define WS2812_DMA_CHANNEL 3
-
-
diff --git a/keyboards/skyloong/dt40/info.json b/keyboards/skyloong/dt40/info.json
index b6172465e6..a79b48289a 100644
--- a/keyboards/skyloong/dt40/info.json
+++ b/keyboards/skyloong/dt40/info.json
@@ -48,6 +48,9 @@
"raindrops": true,
"ranbow_beacon": true
},
+ "default": {
+ "val": 150
+ },
"driver": "ws2812",
"hue_steps": 20,
"layout": [
@@ -99,7 +102,8 @@
"max_brightness": 180,
"sat_steps": 20,
"speed_steps": 20,
- "val_steps": 20
+ "val_steps": 20,
+ "sleep": true
},
"url": "https://github.com/JZ-Skyloong",
"usb": {
diff --git a/keyboards/skyloong/gk61/pro/config.h b/keyboards/skyloong/gk61/pro/config.h
index 8e9b5f9258..5e6d6d0e6a 100644
--- a/keyboards/skyloong/gk61/pro/config.h
+++ b/keyboards/skyloong/gk61/pro/config.h
@@ -3,17 +3,10 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 64
+#define IS31FL3743A_I2C_ADDRESS_1 IS31FL3743A_I2C_ADDRESS_GND_GND
+
#define CAPS_LOCK_INDEX 28
#define WIN_MOD_INDEX 16
#define MAC_MOD_INDEX 17
#define WIN_LOCK_INDEX 54
#define SDB C1 //RGB matrix Power control PIN
-
-/* RGB Matrix Animation modes. Explicitly enabled
- * For full list of effects, see:
- * https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
- */
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/skyloong/gk61/pro/pro.c b/keyboards/skyloong/gk61/pro/pro.c
index 1936964b32..6240d9cead 100644
--- a/keyboards/skyloong/gk61/pro/pro.c
+++ b/keyboards/skyloong/gk61/pro/pro.c
@@ -6,7 +6,7 @@ int FN_MAC = 0;
int L_WIN = 0;
int L_MAC = 0;
-const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/skyloong/gk61/pro_48/config.h b/keyboards/skyloong/gk61/pro_48/config.h
index df94455a9e..18f3ef3e72 100644
--- a/keyboards/skyloong/gk61/pro_48/config.h
+++ b/keyboards/skyloong/gk61/pro_48/config.h
@@ -3,14 +3,11 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 64
+#define IS31FL3743A_I2C_ADDRESS_1 IS31FL3743A_I2C_ADDRESS_GND_GND
+
#define CAPS_LOCK_INDEX 28
#define WIN_MOD_INDEX 16
#define MAC_MOD_INDEX 17
#define SDB A4
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
#define g_suspend_state rgb_matrix_get_suspend_state()
diff --git a/keyboards/skyloong/gk61/pro_48/info.json b/keyboards/skyloong/gk61/pro_48/info.json
index 0e49e005aa..10a663f3c7 100644
--- a/keyboards/skyloong/gk61/pro_48/info.json
+++ b/keyboards/skyloong/gk61/pro_48/info.json
@@ -123,7 +123,8 @@
"hue_steps": 20,
"sat_steps": 20,
"speed_steps": 20,
- "val_steps": 20
+ "val_steps": 20,
+ "sleep": true
},
"url": "https://github.com/JZ-Skyloong",
"usb": {
diff --git a/keyboards/skyloong/gk61/pro_48/pro_48.c b/keyboards/skyloong/gk61/pro_48/pro_48.c
index e4f64c022f..dc1058a08b 100644
--- a/keyboards/skyloong/gk61/pro_48/pro_48.c
+++ b/keyboards/skyloong/gk61/pro_48/pro_48.c
@@ -7,7 +7,7 @@ _Bool L_WIN = 0;
_Bool L_MAC = 0;
#if defined(RGB_MATRIX_ENABLE) /*&& defined(CAPS_LOCK_INDEX)*/
-const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/skyloong/gk61/v1/config.h b/keyboards/skyloong/gk61/v1/config.h
index bd9cab743f..146a19e6fd 100644
--- a/keyboards/skyloong/gk61/v1/config.h
+++ b/keyboards/skyloong/gk61/v1/config.h
@@ -17,9 +17,4 @@
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
-#define RGB_MATRIX_LED_COUNT 64
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS //Enable frame effects
-#define RGB_MATRIX_KEYPRESSES //Reacts to keypress
-#define RGB_DISABLE_WHEN_USB_SUSPENDED //turn off effects when suspended
#define SDB C1
diff --git a/keyboards/skyloong/gk61/v1/info.json b/keyboards/skyloong/gk61/v1/info.json
index 6015efa12c..d5320fa765 100644
--- a/keyboards/skyloong/gk61/v1/info.json
+++ b/keyboards/skyloong/gk61/v1/info.json
@@ -113,7 +113,8 @@
"max_brightness": 200,
"sat_steps": 20,
"speed_steps": 20,
- "val_steps": 20
+ "val_steps": 20,
+ "sleep": true
},
"url": "https://github.com/JZ-Skyloong",
"usb": {
diff --git a/keyboards/skyloong/gk61/v1/v1.c b/keyboards/skyloong/gk61/v1/v1.c
index cb3772f6b4..1ee3522b50 100644
--- a/keyboards/skyloong/gk61/v1/v1.c
+++ b/keyboards/skyloong/gk61/v1/v1.c
@@ -17,7 +17,7 @@
#ifdef RGB_MATRIX_ENABLE
-const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
diff --git a/keyboards/skyloong/qk21/v1/config.h b/keyboards/skyloong/qk21/v1/config.h
index c74d5cce78..4410f06c6a 100644
--- a/keyboards/skyloong/qk21/v1/config.h
+++ b/keyboards/skyloong/qk21/v1/config.h
@@ -5,8 +5,3 @@
/* Enable num-lock LED */
#define NUM_LOCK_INDEX 13
-
-#define RGB_MATRIX_LED_COUNT 21
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS //Enable frame effects
-#define RGB_MATRIX_KEYPRESSES //Reacts to keypress
-#define RGB_DISABLE_WHEN_USB_SUSPENDED //turn off effects when suspended
diff --git a/keyboards/skyloong/qk21/v1/info.json b/keyboards/skyloong/qk21/v1/info.json
index d5aa5e8be9..3f22fc0ccb 100644
--- a/keyboards/skyloong/qk21/v1/info.json
+++ b/keyboards/skyloong/qk21/v1/info.json
@@ -89,7 +89,8 @@
"max_brightness": 200,
"sat_steps": 20,
"speed_steps": 20,
- "val_steps": 20
+ "val_steps": 20,
+ "sleep": true
},
"url": "https://github.com/JZ-Skyloong",
"usb": {
diff --git a/keyboards/smallkeyboard/config.h b/keyboards/smallkeyboard/config.h
index d98a2b6ef2..9a6ca310e4 100644
--- a/keyboards/smallkeyboard/config.h
+++ b/keyboards/smallkeyboard/config.h
@@ -17,56 +17,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-
-#define RGB_MATRIX_LED_COUNT 6
-#endif
diff --git a/keyboards/smallkeyboard/info.json b/keyboards/smallkeyboard/info.json
index 9fb889d28e..d5a64f465a 100644
--- a/keyboards/smallkeyboard/info.json
+++ b/keyboards/smallkeyboard/info.json
@@ -9,7 +9,36 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "typing_heatmap": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3731",
+ "sleep": true
},
"matrix_pins": {
"cols": ["F7", "F6", "F5"],
diff --git a/keyboards/smallkeyboard/smallkeyboard.c b/keyboards/smallkeyboard/smallkeyboard.c
index ce79c7df5d..7442444b00 100644
--- a/keyboards/smallkeyboard/smallkeyboard.c
+++ b/keyboards/smallkeyboard/smallkeyboard.c
@@ -17,7 +17,7 @@
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/smithrune/iron180/info.json b/keyboards/smithrune/iron180/info.json
index aecd10ef84..4707f32664 100644
--- a/keyboards/smithrune/iron180/info.json
+++ b/keyboards/smithrune/iron180/info.json
@@ -1,5 +1,5 @@
{
- "keyboard_name": "Iron180",
+ "keyboard_name": "Iron180 V1",
"manufacturer": "SmithRune",
"url": "",
"maintainer": "Gondolindrim",
diff --git a/keyboards/smithrune/iron180v2/readme.md b/keyboards/smithrune/iron180v2/readme.md
new file mode 100644
index 0000000000..2df6b96521
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/readme.md
@@ -0,0 +1,27 @@
+# Iron180 V2 PCBs QMK firmware folder
+
+## Introduction
+
+This is the QMK Firmware repository for the Iron180 PCB, a keyboard designed by [Smith and Rune](https://smithrune.com/) and PCB designed by [Gondolindrim](http://github.com/Gondolindrim).
+
+The Iron180 PCB PCB had two versions. The first version used an STM32F072 microcontroller, and was available only in solderable version; it also supports ALPS switches, in-switch single-color LEDs and a multi-layout design for default or 7U bottom row, ISO layout, split backspace and right shift.
+
+The second version used an STM32F401 microcontroller and was available in hotswap and solderable version. The solderable version removes in-switch LED support and ALPS support, but keeps all layout compatibilities of the first version. The hotswap incarnation removes ISO layout support.
+
+As of November 2020, the only way to obtain an Iron180 was through the [Group Buy](https://geekhack.org/index.php?topic=109513) which is already over and all spots were filled. There was a sale for the V2 PCBs in october, 2023.
+
+## How to compile
+
+After setting up your build environment, you can compile the Iron180 default keymap by using:
+
+ make smithrune/iron180v2/<version>/default
+
+Where `<version>` can be `v2s` or `v2h`.
+
+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).
+
+## How to enter into bootloader DFU
+Enter the bootloader DFU mode in 3 ways:
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Escape in the default keymap) and plug in the keyboard
+* **Physical reset button**: press and hold the reset button on the back of the PCB for five seconds
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` (Escape key on layer 1 in the default keymap)
diff --git a/keyboards/smithrune/iron180v2/v2h/config.h b/keyboards/smithrune/iron180v2/v2h/config.h
new file mode 100644
index 0000000000..1d195c5a45
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2h/config.h
@@ -0,0 +1,26 @@
+/*
+Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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
+
+/* 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
+
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE 4096
diff --git a/keyboards/smithrune/iron180v2/v2h/info.json b/keyboards/smithrune/iron180v2/v2h/info.json
new file mode 100644
index 0000000000..67eaf0501b
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2h/info.json
@@ -0,0 +1,674 @@
+{
+ "keyboard_name": "Iron180H v2",
+ "manufacturer": "SmithRune",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x8384",
+ "pid": "0x1182",
+ "device_version": "0.0.1"
+ },
+ "matrix_pins": {
+ "cols": ["C8" , "C7" , "C6" , "B15", "B14", "B13", "B12", "B3" , "D2" , "B1" , "B0" , "C12", "C10", "A10", "A15", "C0" , "C1" , "C4"],
+ "rows": ["B4" , "C11", "A8" , "C9" , "B10", "C5" , "B5" , "B6"]
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "build": {
+ "lto": true
+ },
+ "diode_direction": "COL2ROW",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_tkl_f13_ansi_split_bs_rshift"
+ },
+ "community_layouts": [
+ "tkl_f13_ansi",
+ "tkl_f13_ansi_split_bs_rshift",
+ "tkl_f13_ansi_tsangan",
+ "tkl_f13_ansi_tsangan_split_bs_rshift"
+ ],
+ "layouts": {
+ "LAYOUT_tkl_f13_ansi": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_tsangan": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 11], "x": 12.5, "y": 5.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 11], "x": 12.5, "y": 5.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/smithrune/iron180v2/v2h/keymaps/default/keymap.c b/keyboards/smithrune/iron180v2/v2h/keymaps/default/keymap.c
new file mode 100755
index 0000000000..82cc8162ad
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2h/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 , KC_PSCR, KC_SCRL, KC_PAUS,
+ 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_INS , KC_HOME, KC_PGUP,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN,
+ KC_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_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP ,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/smithrune/iron180v2/v2h/keymaps/via/keymap.c b/keyboards/smithrune/iron180v2/v2h/keymaps/via/keymap.c
new file mode 100755
index 0000000000..82cc8162ad
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2h/keymaps/via/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 , KC_PSCR, KC_SCRL, KC_PAUS,
+ 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_INS , KC_HOME, KC_PGUP,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN,
+ KC_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_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP ,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/w1_at/keymaps/via/rules.mk b/keyboards/smithrune/iron180v2/v2h/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/w1_at/keymaps/via/rules.mk
+++ b/keyboards/smithrune/iron180v2/v2h/keymaps/via/rules.mk
diff --git a/keyboards/smithrune/iron180v2/v2h/matrix_diagram.md b/keyboards/smithrune/iron180v2/v2h/matrix_diagram.md
new file mode 100644
index 0000000000..2e6310bcb6
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2h/matrix_diagram.md
@@ -0,0 +1,24 @@
+# Matrix Diagram for SmithRune Iron180 V2 H
+
+```
+┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+│00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D ││0G │0F │0E │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───┬───┬───┠┌───────â”
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E ││1F │1G │3G │ │1D │ 2u Backspace
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └───────┘
+│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D ││2E │2F │2G │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘
+│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+│40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+│50 │51 │52 │56 │59 │5A │5B │5C ││5E │5F │5G │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ ┌──────────â”
+ 2.75u RShift │4C │
+ └──────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+│50 │51 │52 │56 │5A │5B │5C │ Tsangan/WKL
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+```
diff --git a/keyboards/smithrune/iron180v2/v2h/rules.mk b/keyboards/smithrune/iron180v2/v2h/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2h/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/smithrune/iron180v2/v2s/config.h b/keyboards/smithrune/iron180v2/v2s/config.h
new file mode 100644
index 0000000000..bf443b56f1
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/config.h
@@ -0,0 +1,46 @@
+/*
+Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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
+
+#define BACKLIGHT_PWM_DRIVER PWMD3
+#define BACKLIGHT_PWM_CHANNEL 3
+#define BACKLIGHT_PAL_MODE 2
+
+/* 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
+
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE 4096
+
+/*
+ * 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/smithrune/iron180v2/v2s/halconf.h b/keyboards/smithrune/iron180v2/v2s/halconf.h
new file mode 100644
index 0000000000..c58ddcbf7b
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * 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/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/iron180/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/smithrune/iron180v2/v2s/info.json b/keyboards/smithrune/iron180v2/v2s/info.json
new file mode 100644
index 0000000000..aae84fd956
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/info.json
@@ -0,0 +1,1432 @@
+{
+ "keyboard_name": "Iron180 Sv2",
+ "manufacturer": "SmithRune",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x8384",
+ "pid": "0x1181",
+ "device_version": "0.0.1"
+ },
+ "matrix_pins": {
+ "cols": ["C7" , "C6" , "B15", "B14", "B13", "B12", "B10", "B3" , "D2" , "B0" , "C5" , "C12", "C10", "A10", "A15", "C0" , "C1" , "A7"],
+ "rows": ["B4" , "C11", "A8" , "C9" , "B1" , "C4" , "B5" , "B6"]
+ },
+ "features": {
+ "backlight": true,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "build": {
+ "lto": true
+ },
+ "diode_direction": "COL2ROW",
+ "backlight": {
+ "pin": "C8",
+ "levels": 20,
+ "breathing": false,
+ "as_caps_lock": true
+ },
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "community_layouts": [
+ "tkl_f13_ansi",
+ "tkl_f13_ansi_split_bs_rshift",
+ "tkl_f13_ansi_tsangan",
+ "tkl_f13_ansi_tsangan_split_bs_rshift",
+ "tkl_f13_iso",
+ "tkl_f13_iso_split_bs_rshift",
+ "tkl_f13_iso_tsangan",
+ "tkl_f13_iso_tsangan_split_bs_rshift"
+ ],
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_tsangan": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 11], "x": 12.5, "y": 5.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 11], "x": 12.5, "y": 5.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"label": "\\", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_tsangan": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 11], "x": 12.5, "y": 5.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 11], "x": 12.5, "y": 5.25},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_wkl": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_wkl_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+
+ {"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
+ {"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
+ {"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
+ {"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
+
+ {"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
+ {"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
+ {"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
+ {"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
+
+ {"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
+ {"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
+ {"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
+ {"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
+
+ {"label": "F13", "matrix": [0, 13], "x": 14, "y": 0},
+
+ {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
+ {"label": "Scroll Lock", "matrix": [0, 15], "x": 16.25, "y": 0},
+ {"label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"label": "`", "matrix": [1, 0], "x": 0, "y": 1.25},
+ {"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
+ {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
+ {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25},
+ {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25},
+ {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25},
+ {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25},
+ {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25},
+ {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25},
+ {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25},
+ {"label": "0", "matrix": [1, 10], "x": 10, "y": 1.25},
+ {"label": "-", "matrix": [1, 11], "x": 11, "y": 1.25},
+ {"label": "=", "matrix": [1, 12], "x": 12, "y": 1.25},
+ {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25},
+ {"label": "Backspace", "matrix": [3, 14], "x": 14, "y": 1.25},
+
+ {"label": "Insert", "matrix": [6, 14], "x": 15.25, "y": 1.25},
+ {"label": "Home", "matrix": [6, 15], "x": 16.25, "y": 1.25},
+ {"label": "Page Up", "matrix": [6, 16], "x": 17.25, "y": 1.25},
+
+ {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"label": "[", "matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"label": "]", "matrix": [2, 12], "x": 12.5, "y": 2.25},
+
+ {"label": "Delete", "matrix": [7, 14], "x": 15.25, "y": 2.25},
+ {"label": "End", "matrix": [7, 15], "x": 16.25, "y": 2.25},
+ {"label": "Page Down", "matrix": [7, 16], "x": 17.25, "y": 2.25},
+
+ {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"label": ";", "matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"label": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+
+ {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 4.25},
+
+ {"label": "\u2191", "matrix": [4, 17], "x": 16.25, "y": 4.25},
+
+ {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"label": "Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"label": "Alt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
+
+ {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"label": "\u2193", "matrix": [5, 17], "x": 16.25, "y": 5.25},
+ {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/smithrune/iron180v2/v2s/keymaps/default/keymap.c b/keyboards/smithrune/iron180v2/v2s/keymaps/default/keymap.c
new file mode 100755
index 0000000000..f2d58a163d
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2012,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/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 , KC_PSCR, KC_SCRL, KC_PAUS,
+ 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_INS , KC_HOME, KC_PGUP,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT ,
+ KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP ,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/smithrune/iron180v2/v2s/keymaps/via/keymap.c b/keyboards/smithrune/iron180v2/v2s/keymaps/via/keymap.c
new file mode 100755
index 0000000000..f2d58a163d
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/keymaps/via/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2012,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/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 , KC_PSCR, KC_SCRL, KC_PAUS,
+ 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_INS , KC_HOME, KC_PGUP,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT ,
+ KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP ,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/smithrune/iron180v2/v2s/keymaps/via/rules.mk b/keyboards/smithrune/iron180v2/v2s/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/smithrune/iron180v2/v2s/matrix_diagram.md b/keyboards/smithrune/iron180v2/v2s/matrix_diagram.md
new file mode 100644
index 0000000000..d946162263
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/matrix_diagram.md
@@ -0,0 +1,24 @@
+# Matrix Diagram for SmithRune Iron180 V2 S
+
+```
+┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+│00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D ││0E │0F │0G │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───┬───┬───┠┌───────â”
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E ││6F │6F │6G │ │3E │ 2u Backspace
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤
+│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D ││7E │7F │7G │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴â”3D │ ISO Enter
+│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3C │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┠└───┴────┘
+│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4H │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+│50 │51 │52 │56 │59 │5A │5B │5C ││5E │5H │5G │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+┌────────┠┌──────────â”
+│40 │ 2.25u LShift 2.75u RShift │4C │
+└────────┘ └──────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+│50 │51 │52 │56 │5A │5B │5C │ Tsangan/WKL
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+```
diff --git a/keyboards/smithrune/iron180v2/v2s/mcuconf.h b/keyboards/smithrune/iron180v2/v2s/mcuconf.h
new file mode 100644
index 0000000000..b7b462f8cd
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
diff --git a/keyboards/smithrune/iron180v2/v2s/rules.mk b/keyboards/smithrune/iron180v2/v2s/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/smithrune/iron180v2/v2s/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/lefty/config.h b/keyboards/smoll/lefty/config.h
index b1432e4d87..b1432e4d87 100644
--- a/keyboards/lefty/config.h
+++ b/keyboards/smoll/lefty/config.h
diff --git a/keyboards/lefty/info.json b/keyboards/smoll/lefty/info.json
index c7113e4c26..c7113e4c26 100644
--- a/keyboards/lefty/info.json
+++ b/keyboards/smoll/lefty/info.json
diff --git a/keyboards/lefty/keymaps/default/keymap.c b/keyboards/smoll/lefty/keymaps/default/keymap.c
index e88edb63a5..e88edb63a5 100644
--- a/keyboards/lefty/keymaps/default/keymap.c
+++ b/keyboards/smoll/lefty/keymaps/default/keymap.c
diff --git a/keyboards/lefty/keymaps/via/keymap.c b/keyboards/smoll/lefty/keymaps/via/keymap.c
index e88edb63a5..e88edb63a5 100644
--- a/keyboards/lefty/keymaps/via/keymap.c
+++ b/keyboards/smoll/lefty/keymaps/via/keymap.c
diff --git a/keyboards/smoll/lefty/keymaps/via/rules.mk b/keyboards/smoll/lefty/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/smoll/lefty/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/lefty/lefty.c b/keyboards/smoll/lefty/lefty.c
index b1bea424b0..b1bea424b0 100644
--- a/keyboards/lefty/lefty.c
+++ b/keyboards/smoll/lefty/lefty.c
diff --git a/keyboards/lefty/readme.md b/keyboards/smoll/lefty/readme.md
index 7562517a22..7562517a22 100644
--- a/keyboards/lefty/readme.md
+++ b/keyboards/smoll/lefty/readme.md
diff --git a/keyboards/lefty/rev1/info.json b/keyboards/smoll/lefty/rev1/info.json
index 0a3e44c86f..0a3e44c86f 100644
--- a/keyboards/lefty/rev1/info.json
+++ b/keyboards/smoll/lefty/rev1/info.json
diff --git a/keyboards/pico/65keys/rules.mk b/keyboards/smoll/lefty/rev1/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/pico/65keys/rules.mk
+++ b/keyboards/smoll/lefty/rev1/rules.mk
diff --git a/keyboards/lefty/rev2/info.json b/keyboards/smoll/lefty/rev2/info.json
index 9b8578c0db..9b8578c0db 100644
--- a/keyboards/lefty/rev2/info.json
+++ b/keyboards/smoll/lefty/rev2/info.json
diff --git a/keyboards/pico/70keys/rules.mk b/keyboards/smoll/lefty/rev2/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/pico/70keys/rules.mk
+++ b/keyboards/smoll/lefty/rev2/rules.mk
diff --git a/keyboards/smoll/lefty/rules.mk b/keyboards/smoll/lefty/rules.mk
new file mode 100644
index 0000000000..d8d08e502c
--- /dev/null
+++ b/keyboards/smoll/lefty/rules.mk
@@ -0,0 +1,17 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # 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
+LTO_ENABLE = yes
+
+OLED_ENABLE = yes
+
+DEFAULT_FOLDER = smoll/lefty/rev2
diff --git a/keyboards/pw88/info.json b/keyboards/smoll/pw88/info.json
index bd24071e70..bd24071e70 100644
--- a/keyboards/pw88/info.json
+++ b/keyboards/smoll/pw88/info.json
diff --git a/keyboards/pw88/keymaps/default/keymap.c b/keyboards/smoll/pw88/keymaps/default/keymap.c
index 9e5ffd3f24..9e5ffd3f24 100644
--- a/keyboards/pw88/keymaps/default/keymap.c
+++ b/keyboards/smoll/pw88/keymaps/default/keymap.c
diff --git a/keyboards/pw88/keymaps/via/keymap.c b/keyboards/smoll/pw88/keymaps/via/keymap.c
index 9e5ffd3f24..9e5ffd3f24 100644
--- a/keyboards/pw88/keymaps/via/keymap.c
+++ b/keyboards/smoll/pw88/keymaps/via/keymap.c
diff --git a/keyboards/smoll/pw88/keymaps/via/rules.mk b/keyboards/smoll/pw88/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/smoll/pw88/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/pw88/readme.md b/keyboards/smoll/pw88/readme.md
index facee8bac8..facee8bac8 100644
--- a/keyboards/pw88/readme.md
+++ b/keyboards/smoll/pw88/readme.md
diff --git a/keyboards/pw88/rules.mk b/keyboards/smoll/pw88/rules.mk
index c628fc7d0f..c628fc7d0f 100644
--- a/keyboards/pw88/rules.mk
+++ b/keyboards/smoll/pw88/rules.mk
diff --git a/keyboards/snes_macropad/snes_macropad.c b/keyboards/snes_macropad/snes_macropad.c
index 1dcfda33ec..9f4f410fa3 100644
--- a/keyboards/snes_macropad/snes_macropad.c
+++ b/keyboards/snes_macropad/snes_macropad.c
@@ -90,7 +90,7 @@ static void setupForFlashing(void) {
// Set alternating backlight colors
const uint8_t max = 20;
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- for (size_t i = 0; i < RGBLED_NUM; ++i) {
+ for (size_t i = 0; i < RGBLIGHT_LED_COUNT; ++i) {
rgb_led_t *led_ = (rgb_led_t *)&led[i];
switch (i % 2) {
case 0:
diff --git a/keyboards/sofle/info.json b/keyboards/sofle/info.json
new file mode 100644
index 0000000000..91fdfd38be
--- /dev/null
+++ b/keyboards/sofle/info.json
@@ -0,0 +1,117 @@
+{
+ "keyboard_name": "Sofle",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "encoder": true,
+ "oled": true
+ },
+ "build": {
+ "lto": true
+ },
+ "usb": {
+ "vid": "0xFC32"
+ },
+ "diode_direction": "COL2ROW",
+ "qmk": {
+ "tap_keycode_delay": 10
+ },
+ "split": {
+ "enabled": true,
+ "soft_serial_pin": "D2",
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
+ }
+ },
+ "ws2812": {
+ "pin": "D3"
+ },
+ "rgblight": {
+ "led_count": 72,
+ "split_count": [36, 36],
+ "sleep": true
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "split_count": [36, 36],
+ "sleep": true,
+ "layout": [
+ {"x": 96, "y": 40, "flags": 8},
+ {"x": 16, "y": 20, "flags": 2},
+ {"x": 48, "y": 10, "flags": 2},
+ {"x": 80, "y": 18, "flags": 2},
+ {"x": 88, "y": 60, "flags": 2},
+ {"x": 56, "y": 57, "flags": 2},
+ {"x": 24, "y": 60, "flags": 2},
+ {"matrix": [4, 0], "x": 32, "y": 57, "flags": 4},
+ {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4},
+ {"matrix": [2, 0], "x": 0, "y": 36, "flags": 4},
+ {"matrix": [1, 0], "x": 0, "y": 24, "flags": 4},
+ {"matrix": [0, 0], "x": 0, "y": 12, "flags": 4},
+ {"matrix": [0, 1], "x": 16, "y": 12, "flags": 4},
+ {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
+ {"matrix": [2, 1], "x": 16, "y": 36, "flags": 4},
+ {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4},
+ {"matrix": [4, 1], "x": 48, "y": 55, "flags": 4},
+ {"matrix": [4, 2], "x": 64, "y": 57, "flags": 4},
+ {"matrix": [3, 2], "x": 32, "y": 45, "flags": 4},
+ {"matrix": [2, 2], "x": 32, "y": 33, "flags": 4},
+ {"matrix": [1, 2], "x": 32, "y": 21, "flags": 4},
+ {"matrix": [0, 2], "x": 32, "y": 9, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 7, "flags": 4},
+ {"matrix": [1, 3], "x": 48, "y": 19, "flags": 4},
+ {"matrix": [2, 3], "x": 48, "y": 31, "flags": 4},
+ {"matrix": [3, 3], "x": 48, "y": 43, "flags": 4},
+ {"matrix": [4, 3], "x": 80, "y": 59, "flags": 4},
+ {"matrix": [4, 4], "x": 96, "y": 64, "flags": 4},
+ {"matrix": [3, 4], "x": 64, "y": 45, "flags": 4},
+ {"matrix": [2, 4], "x": 64, "y": 33, "flags": 4},
+ {"matrix": [1, 4], "x": 64, "y": 21, "flags": 4},
+ {"matrix": [0, 4], "x": 64, "y": 9, "flags": 4},
+ {"matrix": [0, 5], "x": 80, "y": 10, "flags": 4},
+ {"matrix": [1, 5], "x": 80, "y": 22, "flags": 4},
+ {"matrix": [2, 5], "x": 80, "y": 34, "flags": 4},
+ {"matrix": [3, 5], "x": 80, "y": 47, "flags": 4},
+ {"x": 128, "y": 40, "flags": 8},
+ {"x": 208, "y": 20, "flags": 2},
+ {"x": 176, "y": 10, "flags": 2},
+ {"x": 144, "y": 18, "flags": 2},
+ {"x": 136, "y": 60, "flags": 2},
+ {"x": 168, "y": 57, "flags": 2},
+ {"x": 200, "y": 60, "flags": 2},
+ {"matrix": [9, 0], "x": 192, "y": 57, "flags": 4},
+ {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4},
+ {"matrix": [7, 0], "x": 224, "y": 36, "flags": 4},
+ {"matrix": [6, 0], "x": 224, "y": 24, "flags": 4},
+ {"matrix": [5, 0], "x": 224, "y": 12, "flags": 4},
+ {"matrix": [5, 1], "x": 208, "y": 12, "flags": 4},
+ {"matrix": [6, 1], "x": 208, "y": 24, "flags": 4},
+ {"matrix": [7, 1], "x": 208, "y": 36, "flags": 4},
+ {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4},
+ {"matrix": [9, 1], "x": 176, "y": 55, "flags": 4},
+ {"matrix": [9, 2], "x": 160, "y": 57, "flags": 4},
+ {"matrix": [8, 2], "x": 192, "y": 45, "flags": 4},
+ {"matrix": [7, 2], "x": 192, "y": 33, "flags": 4},
+ {"matrix": [6, 2], "x": 192, "y": 21, "flags": 4},
+ {"matrix": [5, 2], "x": 192, "y": 9, "flags": 4},
+ {"matrix": [5, 3], "x": 176, "y": 7, "flags": 4},
+ {"matrix": [6, 3], "x": 176, "y": 19, "flags": 4},
+ {"matrix": [7, 3], "x": 176, "y": 31, "flags": 4},
+ {"matrix": [8, 3], "x": 176, "y": 43, "flags": 4},
+ {"matrix": [9, 3], "x": 144, "y": 59, "flags": 4},
+ {"matrix": [9, 4], "x": 128, "y": 64, "flags": 4},
+ {"matrix": [8, 4], "x": 160, "y": 45, "flags": 4},
+ {"matrix": [7, 4], "x": 160, "y": 33, "flags": 4},
+ {"matrix": [6, 4], "x": 160, "y": 21, "flags": 4},
+ {"matrix": [5, 4], "x": 160, "y": 9, "flags": 4},
+ {"matrix": [5, 5], "x": 144, "y": 10, "flags": 4},
+ {"matrix": [6, 5], "x": 144, "y": 22, "flags": 4},
+ {"matrix": [7, 5], "x": 144, "y": 34, "flags": 4},
+ {"matrix": [8, 5], "x": 144, "y": 47, "flags": 4}
+ ]
+ }
+}
diff --git a/keyboards/sofle/keyhive/config.h b/keyboards/sofle/keyhive/config.h
index cda0be789e..cda0be789e 100755..100644
--- a/keyboards/sofle/keyhive/config.h
+++ b/keyboards/sofle/keyhive/config.h
diff --git a/keyboards/sofle/keyhive/info.json b/keyboards/sofle/keyhive/info.json
index ae7c4a1935..8c76e875b0 100644
--- a/keyboards/sofle/keyhive/info.json
+++ b/keyboards/sofle/keyhive/info.json
@@ -1,14 +1,11 @@
{
"keyboard_name": "Sofle",
"manufacturer": "Keyhive",
+ "development_board": "elite_c",
"usb": {
- "vid": "0xFC32",
"pid": "0x1287",
"device_version": "0.0.2"
},
- "ws2812": {
- "pin": "D3"
- },
"rgblight": {
"hue_steps": 10,
"led_count": 74,
@@ -21,14 +18,12 @@
"cols": ["B6", "B2", "B3", "B1", "F7", "F6", null],
"rows": ["C6", "D7", "E6", "B4", "B5"]
},
- "diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "F5", "pin_b": "F4"}
]
},
"split": {
- "soft_serial_pin": "D2",
"encoder": {
"right": {
"rotary": [
@@ -44,17 +39,11 @@
},
"transport": {
"sync": {
- "matrix_state": true,
"oled": true,
"wpm": true
}
}
},
- "qmk": {
- "tap_keycode_delay": 10
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sofle/keyhive/readme.md b/keyboards/sofle/keyhive/readme.md
index 3847dfe6bb..3847dfe6bb 100755..100644
--- a/keyboards/sofle/keyhive/readme.md
+++ b/keyboards/sofle/keyhive/readme.md
diff --git a/keyboards/sofle/keyhive/rules.mk b/keyboards/sofle/keyhive/rules.mk
index 00719ebea0..6e7633bfe0 100755..100644
--- a/keyboards/sofle/keyhive/rules.mk
+++ b/keyboards/sofle/keyhive/rules.mk
@@ -1,16 +1 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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
-ENCODER_ENABLE = yes
-LTO_ENABLE = yes
-SPLIT_KEYBOARD = yes
-OLED_ENABLE = yes
+# This file intentionally left blank
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/sofle/keymaps/default/keymap.c b/keyboards/sofle/keymaps/default/keymap.c
index 377b4498e6..37996c3e41 100644
--- a/keyboards/sofle/keymaps/default/keymap.c
+++ b/keyboards/sofle/keymaps/default/keymap.c
@@ -1,3 +1,5 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum sofle_layers {
@@ -10,16 +12,14 @@ enum sofle_layers {
};
enum custom_keycodes {
- KC_QWERTY = SAFE_RANGE,
+ KC_QWERTY = QK_USER,
KC_COLEMAK,
KC_PRVWD,
KC_NXTWD,
KC_LSTRT,
- KC_LEND,
- KC_DLINE
+ KC_LEND
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* QWERTY
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LGUI,KC_LALT,KC_LCTL, MO(_LOWER), KC_ENT, KC_SPC, MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
+ KC_LGUI,KC_LALT,KC_LCTL, TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
),
/*
* COLEMAK
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LGUI,KC_LALT,KC_LCTL,MO(_LOWER), KC_ENT, KC_SPC, MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
+ KC_LGUI,KC_LALT,KC_LCTL,TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
@@ -104,9 +104,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_RAISE] = LAYOUT(
_______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
- _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC,
+ _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,C(KC_BSPC), KC_BSPC,
_______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
- _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
+ _______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* ADJUST
@@ -132,86 +132,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#ifdef OLED_ENABLE
-
-static void render_logo(void) {
- static const char PROGMEM qmk_logo[] = {
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
- };
-
- oled_write_P(qmk_logo, false);
-}
-
-static void print_status_narrow(void) {
- // Print current mode
- oled_write_P(PSTR("\n\n"), false);
- oled_write_ln_P(PSTR("MODE"), false);
- oled_write_ln_P(PSTR(""), false);
- if (keymap_config.swap_lctl_lgui) {
- oled_write_ln_P(PSTR("MAC"), false);
- } else {
- oled_write_ln_P(PSTR("WIN"), false);
- }
-
- switch (get_highest_layer(default_layer_state)) {
- case _QWERTY:
- oled_write_ln_P(PSTR("Qwrt"), false);
- break;
- case _COLEMAK:
- oled_write_ln_P(PSTR("Clmk"), false);
- break;
- default:
- oled_write_P(PSTR("Undef"), false);
- }
- oled_write_P(PSTR("\n\n"), false);
- // Print current layer
- oled_write_ln_P(PSTR("LAYER"), false);
- switch (get_highest_layer(layer_state)) {
- case _COLEMAK:
- case _QWERTY:
- oled_write_P(PSTR("Base\n"), false);
- break;
- case _RAISE:
- oled_write_P(PSTR("Raise"), false);
- break;
- case _LOWER:
- oled_write_P(PSTR("Lower"), false);
- break;
- case _ADJUST:
- oled_write_P(PSTR("Adj\n"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- oled_write_P(PSTR("\n\n"), false);
- led_t led_usb_state = host_keyboard_led_state();
- oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
-}
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (is_keyboard_master()) {
- return OLED_ROTATION_270;
- }
- return rotation;
-}
-
-bool oled_task_user(void) {
- if (is_keyboard_master()) {
- print_status_narrow();
- } else {
- render_logo();
- }
- return false;
-}
-
-#endif
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_QWERTY:
@@ -298,73 +218,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
break;
- case KC_DLINE:
- if (record->event.pressed) {
- register_mods(mod_config(MOD_LCTL));
- register_code(KC_BSPC);
- } else {
- unregister_mods(mod_config(MOD_LCTL));
- unregister_code(KC_BSPC);
- }
- break;
- case KC_COPY:
- if (record->event.pressed) {
- register_mods(mod_config(MOD_LCTL));
- register_code(KC_C);
- } else {
- unregister_mods(mod_config(MOD_LCTL));
- unregister_code(KC_C);
- }
- return false;
- case KC_PASTE:
- if (record->event.pressed) {
- register_mods(mod_config(MOD_LCTL));
- register_code(KC_V);
- } else {
- unregister_mods(mod_config(MOD_LCTL));
- unregister_code(KC_V);
- }
- return false;
- case KC_CUT:
- if (record->event.pressed) {
- register_mods(mod_config(MOD_LCTL));
- register_code(KC_X);
- } else {
- unregister_mods(mod_config(MOD_LCTL));
- unregister_code(KC_X);
- }
- return false;
- break;
- case KC_UNDO:
- if (record->event.pressed) {
- register_mods(mod_config(MOD_LCTL));
- register_code(KC_Z);
- } else {
- unregister_mods(mod_config(MOD_LCTL));
- unregister_code(KC_Z);
- }
- return false;
}
return true;
}
-
-#ifdef ENCODER_ENABLE
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- }
- return true;
-}
-
-#endif
diff --git a/keyboards/sofle/keymaps/default/readme.md b/keyboards/sofle/keymaps/default/readme.md
index 6d6dea228c..879513af06 100644
--- a/keyboards/sofle/keymaps/default/readme.md
+++ b/keyboards/sofle/keymaps/default/readme.md
@@ -1,12 +1,10 @@
-![SofleKeyboard default keymap](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard.png)
-![SofleKeyboard adjust layer](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard_layout_adjust.png)
-
+![SofleKeyboard default keymap](https://i.imgur.com/MZxVvm9.png)
+![SofleKeyboard adjust layer](https://i.imgur.com/f5sKy0I.png)
# Default keymap for Sofle Keyboard
Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
-
Features:
- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
@@ -15,5 +13,3 @@ Features:
- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer (the red one in the image). Designed to simplify transtions when switching between operating systems often.
- The OLED on master half shows selected mode and caps lock state and is rotated.
- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
-
-
diff --git a/keyboards/sofle/keymaps/default/rules.mk b/keyboards/sofle/keymaps/default/rules.mk
index ab79c07969..7c9bf212a6 100644
--- a/keyboards/sofle/keymaps/default/rules.mk
+++ b/keyboards/sofle/keymaps/default/rules.mk
@@ -1,5 +1 @@
-
-OLED_ENABLE = yes
-ENCODER_ENABLE = yes
-CONSOLE_ENABLE = no
-EXTRAKEY_ENABLE = yes
+TRI_LAYER_ENABLE = yes
diff --git a/keyboards/sofle/keymaps/rgb_default/config.h b/keyboards/sofle/keymaps/rgb_default/config.h
index 7d14c6e337..314322c929 100644
--- a/keyboards/sofle/keymaps/rgb_default/config.h
+++ b/keyboards/sofle/keymaps/rgb_default/config.h
@@ -49,13 +49,13 @@
#ifdef RGB_MATRIX_ENABLE
-#define RGBLED_NUM 35 // Number of LEDs
-#define RGBLED_NUM 35 // Number of LEDs
-#define RGB_MATRIX_LED_COUNT RGBLED_NUM
+#define RGBLIGHT_LED_COUNT 35 // Number of LEDs
+#define RGBLIGHT_LED_COUNT 35 // Number of LEDs
+#define RGB_MATRIX_LED_COUNT RGBLIGHT_LED_COUNT
#endif
#ifdef RGBLIGHT_ENABLE
- #undef RGBLED_NUM
+ #undef RGBLIGHT_LED_COUNT
//#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
@@ -68,11 +68,11 @@
//#define RGBLIGHT_EFFECT_ALTERNATING
//#define RGBLIGHT_EFFECT_TWINKLE
- #define RGBLED_NUM 70
+ #define RGBLIGHT_LED_COUNT 70
//#define RGBLED_SPLIT
#define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet
- //#define RGBLED_NUM 30
+ //#define RGBLIGHT_LED_COUNT 30
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
@@ -82,7 +82,7 @@
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_SLEEP // turn off effects when suspended
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
diff --git a/keyboards/sofle/keymaps/via/config.h b/keyboards/sofle/keymaps/via/config.h
deleted file mode 100644
index e53881987d..0000000000
--- a/keyboards/sofle/keymaps/via/config.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright 2020 Josef Adamcik
- * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
- *
- * 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
-
-/* By default left side is selected as master,
-see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness
-for more options. */
-
-#if defined(KEYBOARD_sofle_rev1)
-// Add RGB underglow and top facing lighting
-# define WS2812_DI_PIN D3
-# define RGBLED_NUM 72
-# define RGBLED_SPLIT \
- { 36, 36 }
-# ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT RGBLED_NUM
-# define RGB_MATRIX_SPLIT RGBLED_SPLIT
-# define SPLIT_TRANSPORT_MIRROR
-# else
-# define RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_RAINBOW_MOOD
-# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-# define RGBLIGHT_EFFECT_SNAKE
-# define RGBLIGHT_EFFECT_KNIGHT
-# define RGBLIGHT_EFFECT_CHRISTMAS
-# define RGBLIGHT_EFFECT_STATIC_GRADIENT
-# define RGBLIGHT_EFFECT_RGB_TEST
-# define RGBLIGHT_EFFECT_ALTERNATING
-# define RGBLIGHT_EFFECT_TWINKLE
-# define RGBLIGHT_LIMIT_VAL 120
-# define RGBLIGHT_HUE_STEP 10
-# define RGBLIGHT_SAT_STEP 17
-# define RGBLIGHT_VAL_STEP 17
-# endif
-#endif
diff --git a/keyboards/sofle/keymaps/via/keymap.c b/keyboards/sofle/keymaps/via/keymap.c
index 21717a7a6c..8207f35fd9 100644
--- a/keyboards/sofle/keymaps/via/keymap.c
+++ b/keyboards/sofle/keymaps/via/keymap.c
@@ -1,22 +1,21 @@
/* Copyright 2020 Josef Adamcik
* Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
- *
- * 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/>.
- */
+ *
+ * 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
-#include "oled.c"
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
diff --git a/keyboards/sofle/keymaps/via/oled.c b/keyboards/sofle/keymaps/via/oled.c
deleted file mode 100644
index 74f06cedc5..0000000000
--- a/keyboards/sofle/keymaps/via/oled.c
+++ /dev/null
@@ -1,85 +0,0 @@
- /* Copyright 2020 Josef Adamcik
- * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
- *
- * 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/>.
- */
-
-//Sets up what the OLED screens display.
-
-#ifdef OLED_ENABLE
-
-static void render_logo(void) {
- static const char PROGMEM qmk_logo[] = {
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
- };
-
- oled_write_P(qmk_logo, false);
-}
-
-static void print_status_narrow(void) {
- // Print current mode
- oled_write_P(PSTR("\n\n"), false);
-
- switch (get_highest_layer(layer_state)) {
- case 0:
- oled_write_ln_P(PSTR("Qwrt"), false);
- break;
- case 1:
- oled_write_ln_P(PSTR("Clmk"), false);
- break;
- default:
- oled_write_P(PSTR("Mod\n"), false);
- break;
- }
- oled_write_P(PSTR("\n\n"), false);
- // Print current layer
- oled_write_ln_P(PSTR("LAYER"), false);
- switch (get_highest_layer(layer_state)) {
- case 0:
- case 1:
- oled_write_P(PSTR("Base\n"), false);
- break;
- case 2:
- oled_write_P(PSTR("Raise"), false);
- break;
- case 3:
- oled_write_P(PSTR("Lower"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- oled_write_P(PSTR("\n\n"), false);
- led_t led_usb_state = host_keyboard_led_state();
- oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
-}
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (is_keyboard_master()) {
- return OLED_ROTATION_270;
- }
- return rotation;
-}
-
-bool oled_task_user(void) {
- if (is_keyboard_master()) {
- print_status_narrow();
- } else {
- render_logo();
- }
- return false;
-}
-
-#endif
diff --git a/keyboards/sofle/keymaps/via/readme.md b/keyboards/sofle/keymaps/via/readme.md
index 8470c69bcf..e0a87253e6 100644
--- a/keyboards/sofle/keymaps/via/readme.md
+++ b/keyboards/sofle/keymaps/via/readme.md
@@ -2,7 +2,6 @@
Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
-
Features:
- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
@@ -11,4 +10,3 @@ Features:
- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
- Via support
- RGB underglow support
-
diff --git a/keyboards/sofle/keymaps/via/rules.mk b/keyboards/sofle/keymaps/via/rules.mk
index c8ca49919c..2c37cfdddd 100644
--- a/keyboards/sofle/keymaps/via/rules.mk
+++ b/keyboards/sofle/keymaps/via/rules.mk
@@ -1,8 +1,3 @@
-OLED_ENABLE = yes
-ENCODER_ENABLE = yes
-CONSOLE_ENABLE = no
-EXTRAKEY_ENABLE = yes
VIA_ENABLE = yes
-LTO_ENABLE = yes
-RGBLIGHT_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/sofle/readme.md b/keyboards/sofle/readme.md
index 27071e6f33..7e8ef215c2 100644
--- a/keyboards/sofle/readme.md
+++ b/keyboards/sofle/readme.md
@@ -1,6 +1,6 @@
# Sofle Keyboard
-![SofleKeyboard version 1](https://raw.githubusercontent.com/josefadamcik/SofleKeyboard/master/Images/IMG_20200126_114622.jpg)
+![SofleKeyboard version 1](https://i.imgur.com/S5GTKth.jpeg)
Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
diff --git a/keyboards/sofle/rev1/info.json b/keyboards/sofle/rev1/info.json
index 5ab71ff1e3..20548d6baf 100644
--- a/keyboards/sofle/rev1/info.json
+++ b/keyboards/sofle/rev1/info.json
@@ -1,10 +1,9 @@
{
- "keyboard_name": "Sofle",
"manufacturer": "JosefAdamcik",
"url": "https://github.com/josefadamcik/SofleKeyboard",
"maintainer": "Josef Adamcik <josef.adamcik@gmail.com>",
+ "development_board": "promicro",
"usb": {
- "vid": "0xFC32",
"pid": "0x0287",
"device_version": "0.0.1"
},
@@ -12,14 +11,12 @@
"cols": ["F6", "F7", "B1", "B3", "B2", "B6"],
"rows": ["C6", "D7", "E6", "B4", "B5"]
},
- "diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "F5", "pin_b": "F4", "resolution": 2}
]
},
"split": {
- "soft_serial_pin": "D2",
"encoder": {
"right": {
"rotary": [
@@ -28,14 +25,6 @@
}
}
},
- "tapping": {
- "term": 100
- },
- "qmk": {
- "tap_keycode_delay": 10
- },
- "processor": "atmega32u4",
- "bootloader": "caterina",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sofle/rev1/readme.md b/keyboards/sofle/rev1/readme.md
index 629d568e60..1d229030c4 100644
--- a/keyboards/sofle/rev1/readme.md
+++ b/keyboards/sofle/rev1/readme.md
@@ -1,6 +1,6 @@
# Sofle Keyboard
-![SofleKeyboard version 1](https://raw.githubusercontent.com/josefadamcik/SofleKeyboard/master/Images/IMG_20200126_114622.jpg)
+![SofleKeyboard version 1](https://i.imgur.com/S5GTKth.jpeg)
Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
diff --git a/keyboards/sofle/rev1/rev1.c b/keyboards/sofle/rev1/rev1.c
deleted file mode 100644
index df0f23a26c..0000000000
--- a/keyboards/sofle/rev1/rev1.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright 2021 Carlos Martins
- *
- * 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 "quantum.h"
-
-#ifdef RGB_MATRIX_ENABLE
- // Physical Layout
- // Columns
- // 0 1 2 3 4 5 6 7 8 9 10 11 12 13
- // ROWS
- // 12 13 22 23 32 33 33 32 23 22 13 12 0
- // 02 03 04 04 03 02
- // 11 14 21 24 31 34 34 31 24 21 14 11 1
- // 01 01
- // 10 15 20 25 30 35 35 30 25 20 15 10 2
- //
- // 09 16 19 26 29 36 36 29 26 19 16 09 3
- //
- // 08 17 18 27 28 28 27 18 17 08 4
- // 07 06 05 05 06 07
-
-led_config_t g_led_config = {
- {
- { 11, 12, 21, 22, 31, 32 },
- { 10, 13, 20, 23, 30, 33 },
- { 9, 14, 19, 24, 29, 34},
- { 8, 15, 18, 25, 28, 35},
- { 7, 16, 17, 26, 27, NO_LED },
- { 47, 48, 57, 58, 67, 68},
- { 46, 49, 56, 59, 66, 69},
- { 45, 50, 55, 60, 65, 70},
- { 44, 51, 54, 61, 64, 71},
- { 43, 52, 53, 62, 63, NO_LED }
- },
- {
- // Left side underglow
- {96, 40}, {16, 20}, {48, 10}, {80, 18}, {88, 60}, {56, 57}, {24,60},
- // Left side Matrix
- {32, 57}, { 0, 48}, { 0, 36}, { 0, 24}, { 0, 12},
- {16, 12}, {16, 24}, {16, 36}, {16, 48}, {48, 55},
- {64, 57}, {32, 45}, {32, 33}, {32, 21}, {32, 9},
- {48, 7}, {48, 19}, {48, 31}, {48, 43}, {80, 59},
- {96, 64}, {64, 45}, {64, 33}, {64, 21}, {64, 9},
- {80, 10}, {80, 22}, {80, 34}, {80, 47},
-
-
- // Right side underglow
- {128, 40}, {208, 20}, {176, 10}, {144, 18}, {136, 60}, {168, 57}, {200,60},
- // Right side Matrix
- {192, 57}, {224, 48}, {224, 36}, {224, 24}, {224, 12},
- {208, 12}, {208, 24}, {208, 36}, {208, 48}, {176, 55},
- {160, 57}, {192, 45}, {192, 33}, {192, 21}, {192, 9},
- {176, 7}, {176, 19}, {176, 31}, {176, 43}, {144, 59},
- {128, 64}, {160, 45}, {160, 33}, {160, 21}, {160, 9},
- {144, 10}, {144, 22}, {144, 34}, {144, 47},
- },
- {
- LED_FLAG_INDICATOR, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_INDICATOR, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT
- }
-};
-#endif
diff --git a/keyboards/sofle/rev1/rules.mk b/keyboards/sofle/rev1/rules.mk
index 5ec06e9609..6e7633bfe0 100644
--- a/keyboards/sofle/rev1/rules.mk
+++ b/keyboards/sofle/rev1/rules.mk
@@ -1,2 +1 @@
-ENCODER_ENABLE = yes
-OLED_ENABLE = yes
+# This file intentionally left blank
diff --git a/keyboards/sofle/rules.mk b/keyboards/sofle/rules.mk
index e03eb21a90..a7307c3499 100644
--- a/keyboards/sofle/rules.mk
+++ b/keyboards/sofle/rules.mk
@@ -1,3 +1 @@
-SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = sofle/rev1
-SWAP_HANDS_ENABLE = yes
diff --git a/keyboards/sofle/sofle.c b/keyboards/sofle/sofle.c
index bd3f3e157c..3f88e2b5ba 100644
--- a/keyboards/sofle/sofle.c
+++ b/keyboards/sofle/sofle.c
@@ -1,3 +1,5 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#ifdef SWAP_HANDS_ENABLE
@@ -44,3 +46,90 @@ const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0};
# endif
#endif
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return rotation;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
+ };
+ oled_write_P(qmk_logo, false);
+}
+
+void print_status_narrow(void) {
+ oled_write_P(PSTR("\n\n"), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Qwrt"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("Clmk"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Mod\n"), false);
+ break;
+ }
+ oled_write_P(PSTR("\n\n"), false);
+ oled_write_ln_P(PSTR("LAYER"), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ case 1:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Raise"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Lower"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ oled_write_P(PSTR("\n\n"), false);
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ if (is_keyboard_master()) {
+ print_status_narrow();
+ } else {
+ render_logo();
+ }
+ return true;
+}
+
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/sofle_choc/info.json b/keyboards/sofle_choc/info.json
index b59def38b0..f0ce6d78e0 100644
--- a/keyboards/sofle_choc/info.json
+++ b/keyboards/sofle_choc/info.json
@@ -24,7 +24,6 @@
"driver": "ws2812",
"split_count": [29, 29],
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
diff --git a/keyboards/sofle_choc/keymaps/default/config.h b/keyboards/sofle_choc/keymaps/default/config.h
index 93f173e84d..d48529d816 100644
--- a/keyboards/sofle_choc/keymaps/default/config.h
+++ b/keyboards/sofle_choc/keymaps/default/config.h
@@ -24,6 +24,6 @@
// I've found this helps with some ProMicros where the slave does not boot
#define SPLIT_USB_DETECT
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define SPLIT_TRANSPORT_MIRROR // If LED_MATRIX_KEYPRESSES or LED_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 // limits maximum brightness of LEDs (max 255). Higher may cause the controller to crash.
diff --git a/keyboards/sofle_choc/keymaps/via/config.h b/keyboards/sofle_choc/keymaps/via/config.h
index 93f173e84d..d48529d816 100644
--- a/keyboards/sofle_choc/keymaps/via/config.h
+++ b/keyboards/sofle_choc/keymaps/via/config.h
@@ -24,6 +24,6 @@
// I've found this helps with some ProMicros where the slave does not boot
#define SPLIT_USB_DETECT
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_SLEEP // turn off effects when suspended
#define SPLIT_TRANSPORT_MIRROR // If LED_MATRIX_KEYPRESSES or LED_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 // limits maximum brightness of LEDs (max 255). Higher may cause the controller to crash.
diff --git a/keyboards/sowbug/68keys/config.h b/keyboards/sowbug/68keys/config.h
deleted file mode 100644
index 0836a67e88..0000000000
--- a/keyboards/sowbug/68keys/config.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2021 Mike Tsao
- *
- * 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/>.
- */
-
-// config.h
-
-#pragma once
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_COUNT 68
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/sowbug/68keys/info.json b/keyboards/sowbug/68keys/info.json
index 641ed0aa06..aa22cb804a 100644
--- a/keyboards/sowbug/68keys/info.json
+++ b/keyboards/sowbug/68keys/info.json
@@ -12,7 +12,53 @@
"pin": "B9"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 128
},
"matrix_pins": {
"cols": ["A3", "A4", "A5", "A6", "A7", "B0", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"],
diff --git a/keyboards/sowbug/ansi_tkl/config.h b/keyboards/sowbug/ansi_tkl/config.h
deleted file mode 100644
index 4b1538b645..0000000000
--- a/keyboards/sowbug/ansi_tkl/config.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2021 Mike Tsao
- *
- * 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/>.
- */
-
-// config.h
-
-#pragma once
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_LED_COUNT 87
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/sowbug/ansi_tkl/info.json b/keyboards/sowbug/ansi_tkl/info.json
index 39cc57a8f3..6c6f2346bd 100644
--- a/keyboards/sowbug/ansi_tkl/info.json
+++ b/keyboards/sowbug/ansi_tkl/info.json
@@ -12,7 +12,53 @@
"pin": "B9"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 128
},
"matrix_pins": {
"cols": ["A4", "A5", "A6", "A7", "B0", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10", "A15", "B3"],
diff --git a/keyboards/spaceholdings/nebula12b/config.h b/keyboards/spaceholdings/nebula12b/config.h
deleted file mode 100755
index aba496d469..0000000000
--- a/keyboards/spaceholdings/nebula12b/config.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright 2022 Yiancar
-
-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
-
-/* RGB options */
-
-#define RGB_MATRIX_LED_COUNT 16
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
diff --git a/keyboards/spaceholdings/nebula12b/info.json b/keyboards/spaceholdings/nebula12b/info.json
index f7ba574efc..d6e02d1b97 100755
--- a/keyboards/spaceholdings/nebula12b/info.json
+++ b/keyboards/spaceholdings/nebula12b/info.json
@@ -12,7 +12,53 @@
"pin": "D5"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "sleep": true
},
"matrix_pins": {
"cols": ["F4", "F5", "D7"],
diff --git a/keyboards/spaceholdings/nebula68b/config.h b/keyboards/spaceholdings/nebula68b/config.h
deleted file mode 100755
index 4da2b5894a..0000000000
--- a/keyboards/spaceholdings/nebula68b/config.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-Copyright 2021 Yiancar
-
-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
-
-/* RGB options */
-
-#define RGB_MATRIX_LED_COUNT 79
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/spaceholdings/nebula68b/hs/config.h b/keyboards/spaceholdings/nebula68b/hs/config.h
deleted file mode 100755
index 472798f755..0000000000
--- a/keyboards/spaceholdings/nebula68b/hs/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 Yiancar
-
-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
-
-#undef RGB_MATRIX_LED_COUNT
-#define RGB_MATRIX_LED_COUNT 78
diff --git a/keyboards/spaceholdings/nebula68b/info.json b/keyboards/spaceholdings/nebula68b/info.json
index c82e52299d..6151466894 100755
--- a/keyboards/spaceholdings/nebula68b/info.json
+++ b/keyboards/spaceholdings/nebula68b/info.json
@@ -12,7 +12,54 @@
"pin": "B7"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 130,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D0", "D1", "D2", "D3", "D5", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
diff --git a/keyboards/splitkb/aurora/corne/rev1/config.h b/keyboards/splitkb/aurora/corne/rev1/config.h
index 340aff824a..f37b59a952 100644
--- a/keyboards/splitkb/aurora/corne/rev1/config.h
+++ b/keyboards/splitkb/aurora/corne/rev1/config.h
@@ -25,11 +25,3 @@
# define OLED_DISPLAY_128X32
# define SPLIT_OLED_ENABLE
#endif
-
-// Not yet available in `info.json`
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128
-# define RGB_MATRIX_LED_COUNT 54
-# define RGB_MATRIX_SPLIT { 27, 27 }
-# define SPLIT_TRANSPORT_MIRROR
-#endif
diff --git a/keyboards/splitkb/aurora/corne/rev1/info.json b/keyboards/splitkb/aurora/corne/rev1/info.json
index d1725f215e..2e0b74b5a8 100644
--- a/keyboards/splitkb/aurora/corne/rev1/info.json
+++ b/keyboards/splitkb/aurora/corne/rev1/info.json
@@ -95,6 +95,11 @@
{"pin_a": "F6", "pin_b": "F7"}
]
}
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
}
},
"rgblight": {
@@ -164,6 +169,7 @@
{"flags": 4, "matrix": [5, 0], "x": 224, "y": 24}, // R SW12
{"flags": 4, "matrix": [6, 0], "x": 224, "y": 41} // R SW18
],
- "max_brightness": 128
+ "max_brightness": 128,
+ "split_count": [27, 27]
}
}
diff --git a/keyboards/splitkb/aurora/helix/keymaps/default/config.h b/keyboards/splitkb/aurora/helix/keymaps/default/config.h
index 869e99b779..a6863a01e8 100644
--- a/keyboards/splitkb/aurora/helix/keymaps/default/config.h
+++ b/keyboards/splitkb/aurora/helix/keymaps/default/config.h
@@ -16,7 +16,7 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/splitkb/aurora/helix/rev1/config.h b/keyboards/splitkb/aurora/helix/rev1/config.h
index bbf6c50073..f8b8a190fe 100644
--- a/keyboards/splitkb/aurora/helix/rev1/config.h
+++ b/keyboards/splitkb/aurora/helix/rev1/config.h
@@ -20,5 +20,3 @@
#define OLED_DISPLAY_128X32
#define SPLIT_OLED_ENABLE
-
-#define RGB_MATRIX_LED_COUNT 76 \ No newline at end of file
diff --git a/keyboards/splitkb/aurora/lily58/rev1/config.h b/keyboards/splitkb/aurora/lily58/rev1/config.h
index 1356c62ea1..08a61a2978 100644
--- a/keyboards/splitkb/aurora/lily58/rev1/config.h
+++ b/keyboards/splitkb/aurora/lily58/rev1/config.h
@@ -25,10 +25,3 @@
# define OLED_DISPLAY_128X32
# define SPLIT_OLED_ENABLE
#endif
-
-// Not yet available in `info.json`
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 68
-# define RGB_MATRIX_SPLIT { 34, 34 }
-# define SPLIT_TRANSPORT_MIRROR
-#endif
diff --git a/keyboards/splitkb/aurora/lily58/rev1/info.json b/keyboards/splitkb/aurora/lily58/rev1/info.json
index 6a7bfdd26d..f81da08464 100644
--- a/keyboards/splitkb/aurora/lily58/rev1/info.json
+++ b/keyboards/splitkb/aurora/lily58/rev1/info.json
@@ -106,6 +106,11 @@
{"pin_a": "F7", "pin_b": "F6"}
]
}
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
}
},
"rgblight": {
@@ -189,6 +194,7 @@
{"flags": 4, "matrix": [9, 3], "x": 173, "y": 62}, // R SW27
{"flags": 4, "matrix": [9, 2], "x": 188, "y": 62} // R SW26
],
- "max_brightness": 128
+ "max_brightness": 128,
+ "split_count": [34, 34]
}
}
diff --git a/keyboards/splitkb/aurora/sofle_v2/keymaps/default/config.h b/keyboards/splitkb/aurora/sofle_v2/keymaps/default/config.h
index 353c0ee349..75d233f42e 100644
--- a/keyboards/splitkb/aurora/sofle_v2/keymaps/default/config.h
+++ b/keyboards/splitkb/aurora/sofle_v2/keymaps/default/config.h
@@ -16,7 +16,7 @@
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_SLEEP
#define RGB_MATRIX_KEYPRESSES
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/splitkb/aurora/sofle_v2/rev1/config.h b/keyboards/splitkb/aurora/sofle_v2/rev1/config.h
index 1896af3cb5..7292b3d8b0 100644
--- a/keyboards/splitkb/aurora/sofle_v2/rev1/config.h
+++ b/keyboards/splitkb/aurora/sofle_v2/rev1/config.h
@@ -20,5 +20,3 @@
#define OLED_DISPLAY_128X32
#define SPLIT_OLED_ENABLE
-
-#define RGB_MATRIX_LED_COUNT 70 \ No newline at end of file
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/default/config.h b/keyboards/splitkb/aurora/sweep/keymaps/default/config.h
index b35ec79511..4605cb782a 100644
--- a/keyboards/splitkb/aurora/sweep/keymaps/default/config.h
+++ b/keyboards/splitkb/aurora/sweep/keymaps/default/config.h
@@ -18,7 +18,7 @@
// Not yet available in `keymap.json` format
#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_SLEEP
# define RGB_MATRIX_KEYPRESSES
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/splitkb/aurora/sweep/rev1/config.h b/keyboards/splitkb/aurora/sweep/rev1/config.h
index a3b2cc893e..f37b59a952 100644
--- a/keyboards/splitkb/aurora/sweep/rev1/config.h
+++ b/keyboards/splitkb/aurora/sweep/rev1/config.h
@@ -25,10 +25,3 @@
# define OLED_DISPLAY_128X32
# define SPLIT_OLED_ENABLE
#endif
-
-// Not yet available in `info.json`
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 46
-# define RGB_MATRIX_SPLIT { 23, 23 }
-# define SPLIT_TRANSPORT_MIRROR
-#endif
diff --git a/keyboards/splitkb/aurora/sweep/rev1/info.json b/keyboards/splitkb/aurora/sweep/rev1/info.json
index 74de07ceda..0d235cd5b2 100644
--- a/keyboards/splitkb/aurora/sweep/rev1/info.json
+++ b/keyboards/splitkb/aurora/sweep/rev1/info.json
@@ -92,6 +92,11 @@
{"pin_a": "F5", "pin_b": "D4"}
]
}
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
}
},
"rgblight": {
@@ -153,6 +158,7 @@
{"flags": 4, "matrix": [7, 0], "x": 132, "y": 64},
{"flags": 4, "matrix": [7, 1], "x": 153, "y": 60}
],
- "max_brightness": 128
+ "max_brightness": 128,
+ "split_count": [23, 23]
}
}
diff --git a/keyboards/splitkb/kyria/rev1/config.h b/keyboards/splitkb/kyria/rev1/config.h
index 6c21b12a84..d666099135 100644
--- a/keyboards/splitkb/kyria/rev1/config.h
+++ b/keyboards/splitkb/kyria/rev1/config.h
@@ -45,12 +45,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define OLED_DISPLAY_128X64
# define SPLIT_OLED_ENABLE
#endif
-
-/* RGB matrix support */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 20 // Number of LEDs
-# define RGB_MATRIX_SPLIT { 10, 10 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-#endif
diff --git a/keyboards/splitkb/kyria/rev1/info.json b/keyboards/splitkb/kyria/rev1/info.json
index aa38a7dd0c..38a2e6bf3f 100644
--- a/keyboards/splitkb/kyria/rev1/info.json
+++ b/keyboards/splitkb/kyria/rev1/info.json
@@ -9,7 +9,10 @@
"split_count": [10, 10]
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 170,
+ "sleep": true,
+ "split_count": [10, 10]
},
"matrix_pins": {
"cols": ["B6", "B2", "B3", "B1", "F7", "F6", "F5", "F4"],
@@ -28,6 +31,11 @@
{"pin_a": "B5", "pin_b": "C6"}
]
}
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
}
},
"layout_aliases": {
diff --git a/keyboards/splitkb/kyria/rev2/config.h b/keyboards/splitkb/kyria/rev2/config.h
index 198688772b..452e011f0a 100644
--- a/keyboards/splitkb/kyria/rev2/config.h
+++ b/keyboards/splitkb/kyria/rev2/config.h
@@ -20,7 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Side detection
// col 4 row 3 on right-hand-side
#define SPLIT_HAND_MATRIX_GRID E6, B3 // row first because the board is col2row
-#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `rev2.c`
/*
@@ -51,12 +50,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define OLED_DISPLAY_128X64
# define SPLIT_OLED_ENABLE
#endif
-
-/* RGB matrix support */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT 20 // Number of LEDs
-# define RGB_MATRIX_SPLIT { 10, 10 }
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-#endif
diff --git a/keyboards/splitkb/kyria/rev2/info.json b/keyboards/splitkb/kyria/rev2/info.json
index 6e362d9548..0290153f4a 100644
--- a/keyboards/splitkb/kyria/rev2/info.json
+++ b/keyboards/splitkb/kyria/rev2/info.json
@@ -9,7 +9,10 @@
"split_count": [10, 10]
},
"rgb_matrix": {
- "driver": "ws2812"
+ "driver": "ws2812",
+ "max_brightness": 170,
+ "sleep": true,
+ "split_count": [10, 10]
},
"matrix_pins": {
"cols": ["B2", "B6", "B5", "B4", "E6", "D7", "C6", "D4"],
@@ -34,6 +37,11 @@
"cols": ["B4", "B5", "B6", "B2", "B3", "B1", "F7", "F6"],
"rows": ["D4", "C6", "D7", "E6"]
}
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
}
},
"layout_aliases": {
diff --git a/keyboards/splitkb/kyria/rev3/config.h b/keyboards/splitkb/kyria/rev3/config.h
index 5168e8678e..b0a64320c6 100644
--- a/keyboards/splitkb/kyria/rev3/config.h
+++ b/keyboards/splitkb/kyria/rev3/config.h
@@ -25,10 +25,3 @@
# define OLED_DISPLAY_128X64
# define SPLIT_OLED_ENABLE
#endif
-
-// Not yet available in `info.json`
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 62
-# define RGB_MATRIX_SPLIT { 31, 31 }
-# define SPLIT_TRANSPORT_MIRROR
-#endif
diff --git a/keyboards/splitkb/kyria/rev3/info.json b/keyboards/splitkb/kyria/rev3/info.json
index 07713f9658..4a426cb206 100644
--- a/keyboards/splitkb/kyria/rev3/info.json
+++ b/keyboards/splitkb/kyria/rev3/info.json
@@ -110,6 +110,11 @@
{"pin_a": "F4", "pin_b": "F5"}
]
}
+ },
+ "transport": {
+ "sync": {
+ "matrix_state": true
+ }
}
},
"rgblight": {
@@ -187,6 +192,7 @@
{"flags": 4, "matrix": [4, 5], "x": 210, "y": 11}, // R SW05
{"flags": 4, "matrix": [4, 6], "x": 224, "y": 11} // R SW06
],
- "max_brightness": 128
+ "max_brightness": 128,
+ "split_count": [31, 31]
}
}
diff --git a/keyboards/stront/config.h b/keyboards/stront/config.h
index 13c76a80e2..c1dfd3162a 100644
--- a/keyboards/stront/config.h
+++ b/keyboards/stront/config.h
@@ -34,60 +34,3 @@
#define BACKLIGHT_PWM_DRIVER PWMD7
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A
#define QUANTUM_PAINTER_LVGL_USE_CUSTOM_CONF
-
-/* RGB config */
-#ifdef RGB_MATRIX_ENABLE
-# define SPLIT_TRANSPORT_MIRROR
-# define RGB_MATRIX_LED_COUNT RGBLED_NUM
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_KEYPRESSES
-
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient Chevron shaped scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-# define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
-# define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Single hue fractal filled keys pulsing horizontally out to edges
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW // Pulsing RGB flow along LED wiring with random hues
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN // Randomly light keys with random hues
-# if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# endif
-# if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-# endif
-#endif
diff --git a/keyboards/stront/info.json b/keyboards/stront/info.json
index 40be364688..88ccb2c6d0 100644
--- a/keyboards/stront/info.json
+++ b/keyboards/stront/info.json
@@ -65,6 +65,7 @@
"transport": {
"sync": {
"indicators": true,
+ "matrix_state": true,
"modifiers": true
}
}
@@ -101,6 +102,51 @@
"split_count": [19, 19]
},
"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,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": 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_fractal": true,
+ "pixel_flow": true,
+ "pixel_rain": 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",
"led_count": 38,
"split_count": [19, 19],
@@ -144,7 +190,8 @@
{ "flags": 4, "matrix": [4, 2], "x": 180, "y": 0 },
{ "flags": 4, "matrix": [4, 3], "x": 167, "y": 5 },
{ "flags": 4, "matrix": [4, 4], "x": 153, "y": 7 }
- ]
+ ],
+ "sleep": true
},
"usb": {
"device_version": "1.0.0",
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/sx60/matrix.c b/keyboards/sx60/matrix.c
index 66bc494be6..22f37db539 100644
--- a/keyboards/sx60/matrix.c
+++ b/keyboards/sx60/matrix.c
@@ -214,7 +214,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
return 0;
} else {
uint8_t data = 0;
- mcp23018_status = i2c_readReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT);
+ mcp23018_status = i2c_read_register(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT);
if (!mcp23018_status) {
current_matrix[current_row] |= (~((uint16_t)data) << 8);
}
@@ -245,7 +245,7 @@ static void select_row(uint8_t row)
set active row output : 1
set other rows hi-Z : 1 */
uint8_t port = 0xFF & ~(1<<abs(row-4));
- mcp23018_status = i2c_writeReg(I2C_ADDR, GPIOB, &port, 1, I2C_TIMEOUT);
+ mcp23018_status = i2c_write_register(I2C_ADDR, GPIOB, &port, 1, I2C_TIMEOUT);
}
uint8_t pin = row_pins[row];
diff --git a/keyboards/sx60/sx60.c b/keyboards/sx60/sx60.c
index cb7f2b88ff..12fa6a9ed5 100755
--- a/keyboards/sx60/sx60.c
+++ b/keyboards/sx60/sx60.c
@@ -27,9 +27,9 @@ uint8_t init_mcp23018(void) {
0b00000000,
};
- mcp23018_status = i2c_writeReg(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT);
+ mcp23018_status = i2c_write_register(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT);
if (mcp23018_status) return mcp23018_status;
- mcp23018_status = i2c_writeReg(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT);
+ mcp23018_status = i2c_write_register(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT);
return mcp23018_status;
}
diff --git a/keyboards/synthlabs/060/config.h b/keyboards/synthlabs/060/config.h
deleted file mode 100644
index 4a475316ed..0000000000
--- a/keyboards/synthlabs/060/config.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2022 Aaron Hong (@hongaaronc)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-/* Backlighting */
-#define RGB_MATRIX_LED_COUNT 63
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// RGB Matrix Animation modes
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// Enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// Enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-// Disabled due to firmware size constraints
-// Can be enabled in exchange for some other effects
-#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#undef ENABLE_RGB_MATRIX_DUAL_BEACON
-#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
diff --git a/keyboards/synthlabs/060/info.json b/keyboards/synthlabs/060/info.json
index b816b18027..0c5870b46a 100644
--- a/keyboards/synthlabs/060/info.json
+++ b/keyboards/synthlabs/060/info.json
@@ -30,6 +30,39 @@
"force_nkro": true
},
"rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_sat": true,
+ "band_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": true,
+ "cycle_out_in": true,
+ "raindrops": true,
+ "jellybean_raindrops": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "pixel_rain": true,
+ "pixel_flow": true,
+ "pixel_fractal": 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": [
{"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
@@ -99,7 +132,8 @@
{"flags": 1, "matrix": [4, 11], "x": 180, "y": 64},
{"flags": 1, "matrix": [4, 12], "x": 200, "y": 64},
{"flags": 1, "matrix": [4, 13], "x": 220, "y": 64}
- ]
+ ],
+ "sleep": true
},
"community_layouts": [
"60_ansi",
diff --git a/keyboards/system76/launch_1/config.h b/keyboards/system76/launch_1/config.h
index 27e3025fe3..986a4db76e 100644
--- a/keyboards/system76/launch_1/config.h
+++ b/keyboards/system76/launch_1/config.h
@@ -17,34 +17,7 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 84
-# define RGB_MATRIX_KEYPRESSES // Reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // Reacts to keyreleases (instead of keypresses)
-// # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables framebuffer effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // Turns off effects when suspended
-// Limit brightness to support USB-A at 0.5 A
-// TODO: Do this dynamically based on power source
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 176 // Limits maximum brightness of LEDs to 176 out of 255. If not defined, maximum brightness is set to 255
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Sets the default mode, if none has been set
-# define RGB_MATRIX_DEFAULT_HUE 142 // Sets the default hue value, if none has been set
-# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
-# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
-# define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set
-# define RGB_MATRIX_DISABLE_KEYCODES // Disables control of rgb matrix by keycodes (must use code functions to control the feature)
-
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-#endif // RGB_MATRIX_ENABLE
+#define RGB_MATRIX_DISABLE_KEYCODES // Disables control of rgb matrix by keycodes (must use code functions to control the feature)
// Mechanical locking support; use KC_LCAP, KC_LNUM, or KC_LSCR instead in keymap
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/system76/launch_1/info.json b/keyboards/system76/launch_1/info.json
index eba3a115b8..536b310cc0 100644
--- a/keyboards/system76/launch_1/info.json
+++ b/keyboards/system76/launch_1/info.json
@@ -11,7 +11,28 @@
"pin": "E2"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "rainbow_moving_chevron": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "raindrops": true,
+ "splash": true,
+ "multisplash": true
+ },
+ "default": {
+ "animation": "rainbow_moving_chevron",
+ "hue": 142,
+ "sat": 255,
+ "speed": 127
+ },
+ "driver": "ws2812",
+ "max_brightness": 176,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D7", "C7", "C6", "B6", "B5", "B4", "D6", "D4", "E6", "D5", "D3", "D2", "B7", "B0"],
diff --git a/keyboards/system76/launch_1/usb_mux.c b/keyboards/system76/launch_1/usb_mux.c
index 6cb04dcdd7..dd51b7c4b2 100644
--- a/keyboards/system76/launch_1/usb_mux.c
+++ b/keyboards/system76/launch_1/usb_mux.c
@@ -77,51 +77,14 @@ i2c_status_t usb7206_read_reg(struct USB7206* self, uint32_t addr, uint8_t* data
return status;
}
- uint8_t read[2] = {
- 0x00, // Buffer address MSB: always 0
- 0x06, // Buffer address LSB: 6 to skip header
- };
-
- status = i2c_start((self->addr << 1) | I2C_WRITE, I2C_TIMEOUT);
- if (status >= 0) {
- for (uint16_t i = 0; i < sizeof(read); i++) {
- status = i2c_write(read[i], I2C_TIMEOUT);
- if (status < 0) {
- goto error;
- }
- }
- } else {
- goto error;
- }
-
- status = i2c_start((self->addr << 1) | I2C_READ, I2C_TIMEOUT);
- if (status < 0) {
- goto error;
- }
-
- // Read and ignore buffer length
- status = i2c_read_ack(I2C_TIMEOUT);
- if (status < 0) {
- goto error;
- }
+ uint16_t read = 0x0006; // Buffer address 6 to skip header
+ uint8_t data_with_buffer_length[length];
+ status = i2c_readReg16((self->addr << 1), read, data_with_buffer_length, length, I2C_TIMEOUT);
for (uint16_t i = 0; i < (length - 1) && status >= 0; i++) {
- status = i2c_read_ack(I2C_TIMEOUT);
- if (status >= 0) {
- data[i] = (uint8_t)status;
- }
+ data[i] = data_with_buffer_length[i+1];
}
- if (status >= 0) {
- status = i2c_read_nack(I2C_TIMEOUT);
- if (status >= 0) {
- data[(length - 1)] = (uint8_t)status;
- }
- }
-
-error:
- i2c_stop();
-
return (status < 0) ? status : length;
}
@@ -160,35 +123,21 @@ i2c_status_t usb7206_write_reg(struct USB7206* self, uint32_t addr, uint8_t* dat
(uint8_t)(addr >> 8), // Register address byte 1
(uint8_t)(addr >> 0), // Register address byte 0
};
+ uint8_t send_buffer_length = sizeof(register_write) + length;
+ uint8_t send_buffer[send_buffer_length];
+ uint8_t j = 0;
- status = i2c_start((self->addr << 1) | I2C_WRITE, I2C_TIMEOUT);
- if (status >= 0) {
- for (uint16_t i = 0; i < sizeof(register_write); i++) {
- status = i2c_write(register_write[i], I2C_TIMEOUT);
- if (status < 0) {
- goto error;
- }
- }
+ for (uint16_t i = 0; i < sizeof(register_write); i++) {
+ send_buffer[j++] = register_write[i];
+ }
- for (uint16_t i = 0; i < length; i++) {
- status = i2c_write(data[i], I2C_TIMEOUT);
- if (status < 0) {
- goto error;
- }
- }
- } else {
- goto error;
+ for (uint16_t i = 0; i < length; i++) {
+ send_buffer[j++] = data[i];
}
- i2c_stop();
+ status = i2c_transmit((self->addr << 1), send_buffer, send_buffer_length, I2C_TIMEOUT);
status = usb7206_register_access(self);
- if (status < 0) {
- goto error;
- }
-
-error:
- i2c_stop();
return (status < 0) ? status : length;
}
@@ -354,7 +303,7 @@ i2c_status_t ptn5110_init(struct PTN5110* self) {
// Read PTN5110 CC_STATUS.
// Returns zero on success or a negative number on error.
-i2c_status_t ptn5110_get_cc_status(struct PTN5110* self, uint8_t* cc) { return i2c_readReg(self->addr << 1, 0x1D, cc, 1, I2C_TIMEOUT); }
+i2c_status_t ptn5110_get_cc_status(struct PTN5110* self, uint8_t* cc) { return i2c_read_register(self->addr << 1, 0x1D, cc, 1, I2C_TIMEOUT); }
// Set PTN5110 SSMUX orientation.
// Returns zero on success or a negative number on error.
@@ -362,7 +311,7 @@ i2c_status_t ptn5110_set_ssmux(struct PTN5110* self, bool orientation) { return
// Write PTN5110 COMMAND.
// Returns zero on success or negative number on error.
-i2c_status_t ptn5110_command(struct PTN5110* self, uint8_t command) { return i2c_writeReg(self->addr << 1, 0x23, &command, 1, I2C_TIMEOUT); }
+i2c_status_t ptn5110_command(struct PTN5110* self, uint8_t command) { return i2c_write_register(self->addr << 1, 0x23, &command, 1, I2C_TIMEOUT); }
// Set orientation of PTN5110 operating as a sink, call this once.
// Returns zero on success or a negative number on error.
diff --git a/keyboards/takashicompany/minizone/config.h b/keyboards/takashicompany/minizone/config.h
deleted file mode 100644
index 5665732b04..0000000000
--- a/keyboards/takashicompany/minizone/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2022 takashicompany (@takashicompany)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#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/takashicompany/minizone/info.json b/keyboards/takashicompany/minizone/info.json
index 911b924cfc..e5690d5488 100644
--- a/keyboards/takashicompany/minizone/info.json
+++ b/keyboards/takashicompany/minizone/info.json
@@ -3,11 +3,31 @@
"manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/minizone",
"maintainer": "takashicompany",
+ "development_board": "promicro",
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "rgblight": true,
+ "oled": true
+ },
+ "build": {
+ "lto": true
+ },
"usb": {
"vid": "0x7463",
"pid": "0x0021",
"device_version": "0.0.1"
},
+ "qmk": {
+ "locking": {
+ "enabled": true,
+ "resync": true
+ }
+ },
+ "dynamic_keymap": {
+ "layer_count": 10
+ },
"rgblight": {
"saturation_steps": 8,
"brightness_steps": 8,
@@ -31,8 +51,6 @@
"rows": ["D4", "C6", "D7", "E6", "B4", "B5"]
},
"diode_direction": "COL2ROW",
- "processor": "atmega32u4",
- "bootloader": "caterina",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/minizone/keymaps/default/keymap.c b/keyboards/takashicompany/minizone/keymaps/default/keymap.c
index a1ae5d866c..f69284703a 100644
--- a/keyboards/takashicompany/minizone/keymaps/default/keymap.c
+++ b/keyboards/takashicompany/minizone/keymaps/default/keymap.c
@@ -5,66 +5,66 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT(
- LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
- LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
+ [0] = LAYOUT(
+ LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
+ LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_PGUP, KC_PGDN
),
-
- LAYOUT(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
- LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
+
+ [1] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
+ LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
- KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
- KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
+
+ [2] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
+ KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
- LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
+
+ [3] = LAYOUT(
+ LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
+ LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_PGUP, KC_PGDN
),
-
- LAYOUT(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
- LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
+
+ [4] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
+ LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
+
+ [5] = LAYOUT(
KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
- KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
+
+ [6] = LAYOUT(
+ KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- LAYOUT(
- KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
+ ),
+
+ [7] = LAYOUT(
+ KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
- RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
+
+ [8] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
+ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
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/takashicompany/minizone/keymaps/via/config.h b/keyboards/takashicompany/minizone/keymaps/via/config.h
deleted file mode 100644
index f357dce303..0000000000
--- a/keyboards/takashicompany/minizone/keymaps/via/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright 2022 takashicompany (@takashicompany)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 10 \ No newline at end of file
diff --git a/keyboards/takashicompany/minizone/keymaps/via/keymap.c b/keyboards/takashicompany/minizone/keymaps/via/keymap.c
index f64501f2f5..f69284703a 100644
--- a/keyboards/takashicompany/minizone/keymaps/via/keymap.c
+++ b/keyboards/takashicompany/minizone/keymaps/via/keymap.c
@@ -5,72 +5,66 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT(
- LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
- LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
+ [0] = LAYOUT(
+ LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
+ LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_PGUP, KC_PGDN
),
-
- LAYOUT(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
- LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
+
+ [1] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3,
+ LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
- KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
- KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
+
+ [2] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3),
+ KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3),
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
- LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
+
+ [3] = LAYOUT(
+ LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
+ LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_PGUP, KC_PGDN
),
-
- LAYOUT(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
- LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
+
+ [4] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3,
+ LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
- KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
+
+ [5] = LAYOUT(
+ KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
+ KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
- KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- LAYOUT(
- KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
+
+ [6] = LAYOUT(
+ KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
- RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
+
+ [7] = LAYOUT(
+ KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
- LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ ),
+
+ [8] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
+ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
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/takashicompany/minizone/rules.mk b/keyboards/takashicompany/minizone/rules.mk
index e6ed3b4b03..6e7633bfe0 100644
--- a/keyboards/takashicompany/minizone/rules.mk
+++ b/keyboards/takashicompany/minizone/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 = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-OLED_ENABLE = yes
+# This file intentionally left blank
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/teleport/native/config.h b/keyboards/teleport/native/config.h
index 99c82df12e..acb481bc96 100644
--- a/keyboards/teleport/native/config.h
+++ b/keyboards/teleport/native/config.h
@@ -14,9 +14,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* Use 3 dynamic keymap layers */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
/* i2C Config */
#define I2C_DRIVER I2CD1
#define I2C1_SCL_PIN B6
@@ -27,36 +24,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9
#define I2C1_CLOCK_SPEED 400000
-
-/* RGB Matrix driver config */
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
-#define DRIVER_1_LED_TOTAL 46
-#define DRIVER_2_LED_TOTAL 39
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-#define RGB_MATRIX_LED_FLUSH_LIMIT 32
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_DEFAULT_SPD 40
-#define RGB_MATRIX_DEFAULT_VAL 220
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CUSTOM_SINGLE_COLOR_RAINDROPS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS // 2 Alphas and mods have different colors
-#define ENABLE_RGB_MATRIX_BREATHING // 3 Breath a static color
-#define ENABLE_RGB_MATRIX_CYCLE_ALL // 4 Cycle all colors
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // 5 Cycle vertically
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // 6 Cycle in a spirals
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP // 7 Heatmap of typing speed
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE // 8 Static background, pressed keys light up
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // 9 Pressed keys and nearby keys light up
#define ENABLE_RGB_MATRIX_CUSTOM_SINGLE_COLOR_RAINDROPS // 0 Single color raindrops, random keys lighting up at randomized intensity
#define ENABLE_RGB_MATRIX_CUSTOM_STATIC_GAME_MODE // - Game mode sets the entire matrix (static) once, then stops LED refreshes
@@ -95,6 +67,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_TYPING_HEATMAP_SLIM
#endif
-
/* Set HSE clock since it differs from F411 default */
#define STM32_HSECLK 16000000
diff --git a/keyboards/teleport/native/info.json b/keyboards/teleport/native/info.json
index 87b97e5b2d..eaf9118ff9 100644
--- a/keyboards/teleport/native/info.json
+++ b/keyboards/teleport/native/info.json
@@ -11,7 +11,23 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "is31fl3733"
+ "animations": {
+ "alphas_mods": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_up_down": true,
+ "cycle_spiral": true,
+ "typing_heatmap": true,
+ "solid_reactive": true,
+ "solid_reactive_multiwide": true
+ },
+ "default": {
+ "speed": 40,
+ "val": 220
+ },
+ "driver": "is31fl3733",
+ "led_flush_limit": 32,
+ "sleep": true
},
"features": {
"bootmagic": true,
diff --git a/keyboards/teleport/native/native.c b/keyboards/teleport/native/native.c
index ab6d588de7..b11b63f1f6 100644
--- a/keyboards/teleport/native/native.c
+++ b/keyboards/teleport/native/native.c
@@ -25,7 +25,7 @@ void keyboard_post_init_kb(void) {
}
#ifdef RGB_MATRIX_ENABLE
-const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
diff --git a/keyboards/terrazzo/config.h b/keyboards/terrazzo/config.h
index d2e76f1de0..8be468fabe 100644
--- a/keyboards/terrazzo/config.h
+++ b/keyboards/terrazzo/config.h
@@ -15,43 +15,11 @@
*/
#pragma once
-#ifdef LED_MATRIX_ENABLE
-
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-#define LED_MATRIX_LED_COUNT 105
-#define LED_MATRIX_ROWS 15
-#define LED_MATRIX_COLS 7
-#define LED_MATRIX_MAXIMUM_BRIGHTNESS 20
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-// # define ENABLE_LED_MATRIX_ALPHAS_MODS
-// # define ENABLE_LED_MATRIX_BREATHING
-// # define ENABLE_LED_MATRIX_BAND
-// # define ENABLE_LED_MATRIX_BAND_PINWHEEL
-// # define ENABLE_LED_MATRIX_BAND_SPIRAL
-// # define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT
-// # define ENABLE_LED_MATRIX_CYCLE_UP_DOWN
-// # define ENABLE_LED_MATRIX_CYCLE_OUT_IN
-// # define ENABLE_LED_MATRIX_DUAL_BEACON
-// # if defined(LED_MATRIX_KEYREACTIVE_ENABLED)
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_LED_MATRIX_SPLASH
-// # define ENABLE_LED_MATRIX_MULTISPLASH
-// # endif
-// # define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT
-// # define ENABLE_LED_MATRIX_WAVE_UP_DOWN
-#endif
/* Terrazzo animations */
+#define LED_MATRIX_ROWS 15
+#define LED_MATRIX_COLS 7
// #define DISABLE_TERRAZZO_EFFECT_STRIPES
// #define DISABLE_TERRAZZO_EFFECT_DINO
diff --git a/keyboards/terrazzo/info.json b/keyboards/terrazzo/info.json
index 279c0f3324..53a497cfc4 100644
--- a/keyboards/terrazzo/info.json
+++ b/keyboards/terrazzo/info.json
@@ -21,7 +21,9 @@
]
},
"led_matrix": {
- "driver": "is31fl3731"
+ "driver": "is31fl3731",
+ "max_brightness": 20,
+ "sleep": true
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
diff --git a/keyboards/terrazzo/terrazzo.c b/keyboards/terrazzo/terrazzo.c
index 7717b36e65..53b0bd4c51 100644
--- a/keyboards/terrazzo/terrazzo.c
+++ b/keyboards/terrazzo/terrazzo.c
@@ -21,7 +21,7 @@
#include "print.h"
#include "quantum.h"
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* https://cdn-learn.adafruit.com/downloads/pdf/adafruit-15x7-7x15-charlieplex-led-matrix-charliewing-featherwing.pdf
*/
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/config.h b/keyboards/themadnoodle/ncc1701kb/v2/config.h
new file mode 100644
index 0000000000..fbb498c408
--- /dev/null
+++ b/keyboards/themadnoodle/ncc1701kb/v2/config.h
@@ -0,0 +1,6 @@
+// Copyright 2023 Jesse Leventhal (@The=Mad-Noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 5
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/info.json b/keyboards/themadnoodle/ncc1701kb/v2/info.json
index 3ea2515e64..c67262c562 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/info.json
+++ b/keyboards/themadnoodle/ncc1701kb/v2/info.json
@@ -1,59 +1,71 @@
{
- "keyboard_name": "NCC-1701-KB v2",
- "manufacturer": "The Mad Noodle",
- "url": "instagram.com/the_mad_noodle",
- "maintainer": "The-Mad-Noodle",
- "usb": {
- "vid": "0xFEED",
- "pid": "0x1701",
- "device_version": "0.0.2"
- },
- "matrix_pins": {
- "cols": ["B4", "B5", "B6"],
- "rows": ["D4", "D6", "D7"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "D0", "pin_b": "D1"}
- ]
- },
- "rgblight": {
- "led_count": 4,
- "sleep": true,
- "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
- }
- },
- "ws2812": {
- "pin": "B7"
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_ortho_3x3": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1, "y": 0},
- {"matrix": [0, 2], "x": 2, "y": 0},
-
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1, "y": 1},
- {"matrix": [1, 2], "x": 2, "y": 1},
+ "manufacturer": "The Mad Noodle",
+ "keyboard_name": "NCC-1701-KB v2",
+ "maintainer": "The-Mad-Noodle",
+ "url": "https://www.madnoodleprototypes.com/",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true,
+ "encoder": true
+ },
+ "rgblight": {
+ "hue_steps": 10,
+ "led_count": 4,
+ "sleep": true,
+ "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
+ }
+ },
+ "ws2812": {
+ "pin": "B7"
+ },
+ "matrix_pins": {
+ "rows": ["D4", "D6", "D7"],
+ "cols": ["B4", "B5", "B6"]
+ },
+ "processor": "atmega32u4",
+ "usb": {
+ "device_version": "2.0.0",
+ "pid": "0x0021",
+ "vid": "0x6A6C"
+ },
+ "community_layouts": ["ortho_3x3"],
+ "layouts": {
+ "LAYOUT_ortho_3x3": {
+ "layout": [
+ {"x":0, "y":0, "matrix": [0,0]},
+ {"label":"Encoder", "x":1, "y":0, "matrix": [0,1]},
+ {"x":2, "y":0, "matrix": [0,2]},
+ {"x":0, "y":1, "matrix": [1,0]},
+ {"x":1, "y":1, "matrix": [1,1]},
+ {"x":2, "y":1, "matrix": [1,2]},
+ {"x":0, "y":2, "matrix": [2,0]},
+ {"x":1, "y":2, "matrix": [2,1]},
+ {"x":2, "y":2, "matrix": [2,2]}
+ ]
+ }
+ },
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1, "y": 2},
- {"matrix": [2, 2], "x": 2, "y": 2}
- ]
+ "encoder": {
+ "rotary": [
+ { "pin_a": "D0", "pin_b": "D1" }
+ ]
+
}
- }
-}
+} \ No newline at end of file
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/keymap.c b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/keymap.c
index 15b6df3b1a..52932a3baa 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/keymap.c
+++ b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/keymap.c
@@ -1,10 +1,13 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* LAYER 0
- * ,-----------------------.
- * | << | MUTE | >> | ENCODER - PRESS (MUTE) / HOLD (LAYER 2) / KNOB (VOLUME CONTROL)
+ /* LAYER 0
+ * ,-------|ENCODER|-------.
+ * | << | MUTE | >> |
* |-------+-------+-------|
* | STOP | PLAY | MEDIA |
* |-------+-------+-------|
@@ -13,72 +16,70 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[0] = LAYOUT_ortho_3x3(
- KC_MPRV, LT(2, KC_MUTE), KC_MNXT,
+ KC_MPRV, LT(2, KC_MUTE), KC_MNXT,
KC_MSTP, KC_MPLY, KC_MSEL,
KC_CALC, KC_MAIL, LT(1, KC_MYCM)
),
- /* LAYER 1
- * ,-----------------------.
- * | MODE+ |RGB TOG| MODE- | ENCODER - PRESS (NA) / KNOB (Hue Control)
+ /* LAYER 1
+ * ,-------|ENCODER|-------.
+ * | MODE+ |RGB TOG| MODE- |
* |-------+-------+-------|
- * | SPD- | SPD+ |Bright |
+ * |Bright-| PLAIN |Bright+|
* |-------+-------+-------|
- * | SAT+ | SAT- | |
+ * | SWIRL |BREATH | |
* `-----------------------'
*/
-
+
[1] = LAYOUT_ortho_3x3(
- RGB_MOD, RGB_TOG, RGB_RMOD,
- RGB_SPI, RGB_SPD, RGB_VAI,
- RGB_SAI, RGB_SAD, KC_TRNS
+ RGB_MOD, RGB_TOG, RGB_RMOD,
+ RGB_VAD, RGB_M_P, RGB_VAI,
+ LT(3,RGB_M_SW), RGB_M_B, KC_TRNS
),
-
- /* LAYER 2 (ENCODER)
- * ,-----------------------.
- * | | | | ENCODER - PRESS (NA) / KNOB (Arrow Left/Right)
+
+ /* LAYER 2
+ * ,-------|ENCODER|-------.
+ * | | | |
* |-------+-------+-------|
* | | | |
* |-------+-------+-------|
* | | | |
* `-----------------------'
*/
-
+
[2] = LAYOUT_ortho_3x3(
- KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+
+ /* LAYER 3
+ * ,-------|ENCODER|-------.
+ * | | | |
+ * |-------+-------+-------|
+ * | | | |
+ * |-------+-------+-------|
+ * | | | |
+ * `-----------------------'
+ */
+
+ [3] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
)
};
-bool encoder_update_user(uint8_t index, bool clockwise) {
-
- switch (get_highest_layer(layer_state)) {
- case 1:
- if (clockwise) {
- rgblight_increase_hue();
- } else {
- rgblight_decrease_hue();
- }
- break;
- case 2:
- if (clockwise) {
- tap_code(KC_RGHT);
- } else {
- tap_code(KC_LEFT);
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
-
- }
- return true;
-}
+/*Encoder Mapping*/
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
+ [2] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
+ [3] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+};
+#endif
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/rules.mk b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/rules.mk
new file mode 100644
index 0000000000..a40474b4d5
--- /dev/null
+++ b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/keymap.c b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..22ceb93c7e
--- /dev/null
+++ b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/keymap.c
@@ -0,0 +1,85 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* LAYER 0
+ * ,-------|ENCODER|-------.
+ * | << | MUTE | >> |
+ * |-------+-------+-------|
+ * | STOP | PLAY | MEDIA |
+ * |-------+-------+-------|
+ * | CALC | MY PC | TO(3) |
+ * `-----------------------'
+ */
+
+ [0] = LAYOUT_ortho_3x3(
+ KC_MPRV, KC_MUTE, KC_MNXT,
+ KC_MSTP, KC_MPLY, KC_MSEL,
+ KC_CALC, KC_MYCM, TO(3)
+ ),
+
+
+ /* LAYER 1
+ * ,-------|ENCODER|-------.
+ * | MODE+ |RGB TOG| MODE- |
+ * |-------+-------+-------|
+ * |Bright-| PLAIN |Bright+|
+ * |-------+-------+-------|
+ * | SWIRL |BREATH | TO(0) |
+ * `-----------------------'
+ */
+
+ [1] = LAYOUT_ortho_3x3(
+ RGB_MOD, RGB_TOG, RGB_RMOD,
+ RGB_VAD, RGB_M_P, RGB_VAI,
+ RGB_M_SW, RGB_M_B, TO(0)
+ ),
+
+
+ /* LAYER 2
+ * ,-------|ENCODER|-------.
+ * | | | |
+ * |-------+-------+-------|
+ * | | | |
+ * |-------+-------+-------|
+ * | | | TO(0) |
+ * `-----------------------'
+ */
+
+ [2] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, TO(0)
+ ),
+
+
+ /* LAYER 3
+ * ,-------|ENCODER|-------.
+ * | | | |
+ * |-------+-------+-------|
+ * | TO(1) | | TO(2) |
+ * |-------+-------+-------|
+ * | | | TO(0) |
+ * `-----------------------'
+ */
+
+ [3] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ TO(1), KC_TRNS, TO(2),
+ KC_TRNS, KC_TRNS, TO(0)
+ )
+
+};
+
+/*Encoder Mapping*/
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
+ [2] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI)},
+ [3] = { ENCODER_CCW_CW(KC_UP, KC_DOWN)},
+};
+#endif
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/rules.mk b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..6ccd6d9194
--- /dev/null
+++ b/keyboards/themadnoodle/ncc1701kb/v2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_MAP_ENABLE = yes
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/readme.md b/keyboards/themadnoodle/ncc1701kb/v2/readme.md
index 4e70dd3422..02639aeec3 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/readme.md
+++ b/keyboards/themadnoodle/ncc1701kb/v2/readme.md
@@ -1,17 +1,27 @@
-# NCC-1701-KB v2 Keypad with Encoder
+# NCC-1701-KB v.2
-![NCC-1701-KB V2 TOP](https://static.wixstatic.com/media/59d0ff_e9812deb74a4408ca77599a19a8f93b6~mv2.jpg)
-![NCC-1701-KB V2 RGB](https://static.wixstatic.com/media/59d0ff_7a8968b70ed849a591664332964cc936~mv2.jpg)
+![NCC1701KBv2](https://i.imgur.com/Zq1SjBTh.jpg)
-The NCC-1701-KB v2 by The Mad Noodle Prototypes is a custom Star Trek inspired 3x3 mechanical keypad with an encoder knob and full RGB Underglow.
+*The NCC-1701-KB v.2 is a 8 key macro keypad with a push button encoder knob*
-* Keyboard Maintainer: [The Mad Noodle Prototypes](https://github.com/The-Mad-Noodle)
-* Hardware Supported: NCC-1701-KB v2 PCB, ATmega32U4
-* Hardware Availability: [MadNoodlePrototypes.com](https://www.madnoodleprototypes.com/shop)
+* Keyboard Maintainer: [The Mad Noodle](https://github.com/The-Mad-Noodle)
+* Hardware Supported: NCC-1701-KB v.2 PCB
+* Hardware Availability: https://www.madnoodleprototypes.com/shop
-Make example for this keyboard (after setting up your build environment):
- make themadnoodle/ncc1701kb/v2:default
+Compile example for this keyboard (after setting up your build environment):
-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).
+ qmk compile -kb themadnoodle/ncc1701kb/v2 -km default
+
+Flashing example for this keyboard:
+
+ qmk flash -kb themadnoodle/ncc1701kb/v2 -km 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).
+
+## Bootloader & Flashing
+
+
+**Physical reset button**:
+
+* Press the physical button located on the top left of the back of the PCB (Labeled RST) to enter Bootloader Mode
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/rules.mk b/keyboards/themadnoodle/ncc1701kb/v2/rules.mk
index dd5d8dbfe9..6e7633bfe0 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/rules.mk
+++ b/keyboards/themadnoodle/ncc1701kb/v2/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # 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 = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-UNICODE_ENABLE = yes # Unicode
-ENCODER_ENABLE = yes
+# This file intentionally left blank
diff --git a/keyboards/themadnoodle/noodlepad/config.h b/keyboards/themadnoodle/noodlepad/config.h
new file mode 100644
index 0000000000..d51dabf53d
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/config.h
@@ -0,0 +1,6 @@
+// Copyright 2023 Jesse Leventhal (@The=Mad-Noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 5 \ No newline at end of file
diff --git a/keyboards/themadnoodle/noodlepad/info.json b/keyboards/themadnoodle/noodlepad/info.json
index 5f21cbbc75..8ad698df38 100644
--- a/keyboards/themadnoodle/noodlepad/info.json
+++ b/keyboards/themadnoodle/noodlepad/info.json
@@ -1,59 +1,52 @@
{
- "keyboard_name": "Noodle Pad v1",
- "manufacturer": "The Mad Noodle",
- "url": "instagram.com/the_mad_noodle",
- "maintainer": "The-Mad-Noodle",
- "usb": {
- "vid": "0xFEED",
- "pid": "0x1701",
- "device_version": "0.0.1"
- },
- "matrix_pins": {
- "cols": ["B4", "B5", "B6"],
- "rows": ["D4", "D6", "D7"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "D0", "pin_b": "D1"}
- ]
- },
- "rgblight": {
- "led_count": 4,
- "sleep": true,
- "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
- }
- },
- "ws2812": {
- "pin": "B7"
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_ortho_3x3": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1, "y": 0},
- {"matrix": [0, 2], "x": 2, "y": 0},
+ "manufacturer": "The Mad Noodle",
+ "keyboard_name": "NoodlePad",
+ "maintainer": "The-Mad-Noodle",
+ "url": "https://www.madnoodleprototypes.com/",
+ "bootloader": "atmel-dfu",
+ "processor": "atmega32u4",
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true,
+ "encoder": true
+ },
+ "rgblight": {
+ "hue_steps": 10,
+ "led_count": 4,
+ "sleep": true,
+ "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
+ }
+ },
+ "layouts": {
+ "LAYOUT_ortho_3x3": {
+ "layout": [
+ {"x":0, "y":0, "matrix": [0,0]},
+ {"label":"Encoder", "x":1, "y":0, "matrix": [0,1]},
+ {"x":2, "y":0, "matrix": [0,2]},
+ {"x":0, "y":1, "matrix": [1,0]},
+ {"x":1, "y":1, "matrix": [1,1]},
+ {"x":2, "y":1, "matrix": [1,2]},
+ {"x":0, "y":2, "matrix": [2,0]},
+ {"x":1, "y":2, "matrix": [2,1]},
+ {"x":2, "y":2, "matrix": [2,2]}
+ ]
+ }
+ },
- {"matrix": [1, 0], "x": 0, "y": 1},
- {"matrix": [1, 1], "x": 1, "y": 1},
- {"matrix": [1, 2], "x": 2, "y": 1},
-
- {"matrix": [2, 0], "x": 0, "y": 2},
- {"matrix": [2, 1], "x": 1, "y": 2},
- {"matrix": [2, 2], "x": 2, "y": 2}
- ]
- }
- }
-}
+} \ No newline at end of file
diff --git a/keyboards/themadnoodle/noodlepad/keymaps/default/keymap.c b/keyboards/themadnoodle/noodlepad/keymaps/default/keymap.c
index 8fc7e2a27b..73294a41ab 100644
--- a/keyboards/themadnoodle/noodlepad/keymaps/default/keymap.c
+++ b/keyboards/themadnoodle/noodlepad/keymaps/default/keymap.c
@@ -1,10 +1,13 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* LAYER 0
- * ,-----------------------.
- * | << | MUTE | >> | ENCODER - PRESS (MUTE) / KNOB (VOLUME CONTROL)
+ * ,-------|ENCODER|-------.
+ * | << | MUTE | >> |
* |-------+-------+-------|
* | STOP | PLAY | MEDIA |
* |-------+-------+-------|
@@ -13,72 +16,70 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[0] = LAYOUT_ortho_3x3(
- KC_MPRV, LT(2, KC_MUTE), KC_MNXT,
+ KC_MPRV, LT(2, KC_MUTE), KC_MNXT,
KC_MSTP, KC_MPLY, KC_MSEL,
KC_CALC, KC_MAIL, LT(1, KC_MYCM)
),
/* LAYER 1
- * ,-----------------------.
- * | MODE+ |RGB TOG| MODE- | ENCODER - PRESS (NA) / KNOB (Hue Control)
+ * ,-------|ENCODER|-------.
+ * | MODE+ |RGB TOG| MODE- |
* |-------+-------+-------|
- * | SPD- | SPD+ |Bright |
+ * |Bright-| PLAIN |Bright+|
* |-------+-------+-------|
- * | SAT+ | SAT- | |
+ * | SWIRL |BREATH | |
* `-----------------------'
*/
-
+
[1] = LAYOUT_ortho_3x3(
- RGB_MOD, RGB_TOG, RGB_RMOD,
- RGB_SPI, RGB_SPD, RGB_VAI,
- RGB_SAI, RGB_SAD, KC_TRNS
+ RGB_MOD, RGB_TOG, RGB_RMOD,
+ RGB_VAD, RGB_M_P, RGB_VAI,
+ LT(3,RGB_M_SW), RGB_M_B, KC_TRNS
),
-
- /* LAYER 2 (ENCODER)
- * ,-----------------------.
- * | | | | ENCODER - PRESS (NA) / KNOB (Arrow Left/Right)
+
+ /* LAYER 2
+ * ,-------|ENCODER|-------.
+ * | | | |
* |-------+-------+-------|
* | | | |
* |-------+-------+-------|
* | | | |
* `-----------------------'
*/
-
+
[2] = LAYOUT_ortho_3x3(
- KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+
+ /* LAYER 3
+ * ,-------|ENCODER|-------.
+ * | | | |
+ * |-------+-------+-------|
+ * | | | |
+ * |-------+-------+-------|
+ * | | | |
+ * `-----------------------'
+ */
+
+ [3] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
)
};
-bool encoder_update_user(uint8_t index, bool clockwise) {
-
- switch (get_highest_layer(layer_state)) {
- case 1:
- if (clockwise) {
- rgblight_increase_hue();
- } else {
- rgblight_decrease_hue();
- }
- break;
- case 2:
- if (clockwise) {
- tap_code(KC_RGHT);
- } else {
- tap_code(KC_LEFT);
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
-
- }
- return true;
-}
+/*Encoder Mapping*/
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
+ [2] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
+ [3] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+};
+#endif
diff --git a/keyboards/themadnoodle/noodlepad/keymaps/default/rules.mk b/keyboards/themadnoodle/noodlepad/keymaps/default/rules.mk
new file mode 100644
index 0000000000..a40474b4d5
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/themadnoodle/noodlepad/keymaps/via/keymap.c b/keyboards/themadnoodle/noodlepad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..22ceb93c7e
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/keymaps/via/keymap.c
@@ -0,0 +1,85 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* LAYER 0
+ * ,-------|ENCODER|-------.
+ * | << | MUTE | >> |
+ * |-------+-------+-------|
+ * | STOP | PLAY | MEDIA |
+ * |-------+-------+-------|
+ * | CALC | MY PC | TO(3) |
+ * `-----------------------'
+ */
+
+ [0] = LAYOUT_ortho_3x3(
+ KC_MPRV, KC_MUTE, KC_MNXT,
+ KC_MSTP, KC_MPLY, KC_MSEL,
+ KC_CALC, KC_MYCM, TO(3)
+ ),
+
+
+ /* LAYER 1
+ * ,-------|ENCODER|-------.
+ * | MODE+ |RGB TOG| MODE- |
+ * |-------+-------+-------|
+ * |Bright-| PLAIN |Bright+|
+ * |-------+-------+-------|
+ * | SWIRL |BREATH | TO(0) |
+ * `-----------------------'
+ */
+
+ [1] = LAYOUT_ortho_3x3(
+ RGB_MOD, RGB_TOG, RGB_RMOD,
+ RGB_VAD, RGB_M_P, RGB_VAI,
+ RGB_M_SW, RGB_M_B, TO(0)
+ ),
+
+
+ /* LAYER 2
+ * ,-------|ENCODER|-------.
+ * | | | |
+ * |-------+-------+-------|
+ * | | | |
+ * |-------+-------+-------|
+ * | | | TO(0) |
+ * `-----------------------'
+ */
+
+ [2] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, TO(0)
+ ),
+
+
+ /* LAYER 3
+ * ,-------|ENCODER|-------.
+ * | | | |
+ * |-------+-------+-------|
+ * | TO(1) | | TO(2) |
+ * |-------+-------+-------|
+ * | | | TO(0) |
+ * `-----------------------'
+ */
+
+ [3] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ TO(1), KC_TRNS, TO(2),
+ KC_TRNS, KC_TRNS, TO(0)
+ )
+
+};
+
+/*Encoder Mapping*/
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
+ [2] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI)},
+ [3] = { ENCODER_CCW_CW(KC_UP, KC_DOWN)},
+};
+#endif
diff --git a/keyboards/themadnoodle/noodlepad/keymaps/via/rules.mk b/keyboards/themadnoodle/noodlepad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..6ccd6d9194
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_MAP_ENABLE = yes
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/themadnoodle/noodlepad/readme.md b/keyboards/themadnoodle/noodlepad/readme.md
deleted file mode 100644
index e4439dac45..0000000000
--- a/keyboards/themadnoodle/noodlepad/readme.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Noodle Pad v1 Keypad with Encoder
-
-![NoodlePad TOP](https://static.wixstatic.com/media/59d0ff_052f27ee5ae84266821af7277c51c4ed~mv2.jpg)
-![NoodlePad RGB](https://static.wixstatic.com/media/59d0ff_c91f2adc258547a38cc5b480a8d9c510~mv2.jpg)
-
-The Noodle Pad by The Mad Noodle Prototypes is a custom 3x3 mechanical keypad with an encoder knob and full RGB Underglow.
-
-* Keyboard Maintainer: [The Mad Noodle Prototypes](https://github.com/The-Mad-Noodle)
-* Hardware Supported: NoodlePad PCB, ATmega32U4
-* Hardware Availability: [MadNoodlePrototypes.com](https://www.madnoodleprototypes.com/shop)
-
-Make example for this keyboard (after setting up your build environment):
-
- make themadnoodle/noodlepad:default
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
-Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/themadnoodle/noodlepad/rules.mk b/keyboards/themadnoodle/noodlepad/rules.mk
index dd5d8dbfe9..318832e121 100644
--- a/keyboards/themadnoodle/noodlepad/rules.mk
+++ b/keyboards/themadnoodle/noodlepad/rules.mk
@@ -1,14 +1,3 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # 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 = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-UNICODE_ENABLE = yes # Unicode
-ENCODER_ENABLE = yes
+# Default folder for noodlepad
+DEFAULT_FOLDER = themadnoodle/noodlepad/v1
+
diff --git a/keyboards/themadnoodle/noodlepad/v1/info.json b/keyboards/themadnoodle/noodlepad/v1/info.json
new file mode 100644
index 0000000000..e868400ee1
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/v1/info.json
@@ -0,0 +1,25 @@
+{
+ "manufacturer": "The Mad Noodle",
+ "keyboard_name": "NoodlePad v1",
+ "maintainer": "The-Mad-Noodle",
+ "url": "https://www.madnoodleprototypes.com/",
+ "ws2812": {
+ "pin": "B7"
+ },
+ "matrix_pins": {
+ "rows": ["D4", "D6", "D7"],
+ "cols": ["B4", "B5", "B6"]
+ },
+ "processor": "atmega32u4",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0001",
+ "vid": "0x6A6C"
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "D0", "pin_b": "D1" }
+ ]
+
+ }
+} \ No newline at end of file
diff --git a/keyboards/themadnoodle/noodlepad/v1/readme.md b/keyboards/themadnoodle/noodlepad/v1/readme.md
new file mode 100644
index 0000000000..a0ef407618
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/v1/readme.md
@@ -0,0 +1,27 @@
+# NoodlePad v.1
+
+![NoodPad v1](https://i.imgur.com/dmThaHq.jpg)
+
+The Noodlepad v.1 is a 8 key macro keypad with a push button encoder knob.
+
+* Keyboard Maintainer: [The Mad Noodle](https://github.com/The-Mad-Noodle)
+* Hardware Supported: NoodlePad v.1 PCB
+* Hardware Availability: https://www.madnoodleprototypes.com/shop
+
+
+Compile example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb themadnoodle/noodlepad/v1 -km default
+
+Flashing example for this keyboard:
+
+ qmk flash -kb themadnoodle/noodlepad/v1 -km 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).
+
+## Bootloader & Flashing
+
+
+**Physical reset button**:
+
+* Press the physical button located on the top left of the back of the PCB (Labeled RST) to enter Bootloader Mode
diff --git a/keyboards/themadnoodle/noodlepad/v1/rules.mk b/keyboards/themadnoodle/noodlepad/v1/rules.mk
new file mode 100644
index 0000000000..bd92456148
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/v1/rules.mk
@@ -0,0 +1 @@
+#this file was left intentionally blank
diff --git a/keyboards/themadnoodle/noodlepad/v2/info.json b/keyboards/themadnoodle/noodlepad/v2/info.json
new file mode 100644
index 0000000000..d66c2813ce
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/v2/info.json
@@ -0,0 +1,24 @@
+{
+ "manufacturer": "The Mad Noodle",
+ "keyboard_name": "NoodlePad v2",
+ "maintainer": "The-Mad-Noodle",
+ "url": "https://www.madnoodleprototypes.com/",
+ "ws2812": {
+ "pin": "B7"
+ },
+ "matrix_pins": {
+ "cols": ["F0", "B5", "B6"],
+ "rows": ["F1", "D6", "D7"]
+ },
+ "usb": {
+ "device_version": "2.0.0",
+ "pid": "0x0002",
+ "vid": "0x6A6C"
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "D0", "pin_b": "D1" }
+ ]
+
+ }
+} \ No newline at end of file
diff --git a/keyboards/themadnoodle/noodlepad/v2/readme.md b/keyboards/themadnoodle/noodlepad/v2/readme.md
new file mode 100644
index 0000000000..4b180c2066
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/v2/readme.md
@@ -0,0 +1,27 @@
+# NoodlePad v.2
+
+![NoodPad v2](https://i.imgur.com/tzP0tdzh.jpg)
+
+The Noodlepad v.2 is a 8 hotswap key macro keypad with a push button encoder knob.
+
+* Keyboard Maintainer: [The Mad Noodle](https://github.com/The-Mad-Noodle)
+* Hardware Supported: NoodlePad v.2 PCB
+* Hardware Availability: https://www.madnoodleprototypes.com/shop
+
+
+Compile example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb themadnoodle/noodlepad/v2 -km default
+
+Flashing example for this keyboard:
+
+ qmk flash -kb themadnoodle/noodlepad/v2 -km 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).
+
+## Bootloader & Flashing
+
+
+**Physical reset button**:
+
+* Press the physical button located on the top left of the back of the PCB (Labeled RST) to enter Bootloader Mode
diff --git a/keyboards/themadnoodle/noodlepad/v2/rules.mk b/keyboards/themadnoodle/noodlepad/v2/rules.mk
new file mode 100644
index 0000000000..bd92456148
--- /dev/null
+++ b/keyboards/themadnoodle/noodlepad/v2/rules.mk
@@ -0,0 +1 @@
+#this file was left intentionally blank
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/tkc/california/config.h b/keyboards/tkc/california/config.h
index a9909d1001..827133aed3 100644
--- a/keyboards/tkc/california/config.h
+++ b/keyboards/tkc/california/config.h
@@ -17,9 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2 //Reduced layer count due to memory space considerations
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/tkc/california/info.json b/keyboards/tkc/california/info.json
index d309e872f4..731e65323e 100644
--- a/keyboards/tkc/california/info.json
+++ b/keyboards/tkc/california/info.json
@@ -17,6 +17,9 @@
"pin": "B7",
"breathing": true
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"indicators": {
"caps_lock": "F0",
"num_lock": "F1"
diff --git a/keyboards/tkc/portico/config.h b/keyboards/tkc/portico/config.h
index 265e0abbc3..a57c0b4b1d 100644
--- a/keyboards/tkc/portico/config.h
+++ b/keyboards/tkc/portico/config.h
@@ -17,38 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# undef ENABLE_RGB_MATRIX_BAND_SAT
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# undef ENABLE_RGB_MATRIX_SPLASH
-# undef ENABLE_RGB_MATRIX_MULTISPLASH
-# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
-# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
-# define DRIVER_1_LED_TOTAL 36
-# define DRIVER_2_LED_TOTAL 31
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-#else
-// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
+
+#ifndef RGB_MATRIX_ENABLE
+// IS31FL3731 driver
#define IS31FL3731_LED_COUNT 67
#define RGB_BACKLIGHT_ENABLED 1
diff --git a/keyboards/tkc/portico/info.json b/keyboards/tkc/portico/info.json
index 6eb15efb73..4f908c83e6 100644
--- a/keyboards/tkc/portico/info.json
+++ b/keyboards/tkc/portico/info.json
@@ -9,7 +9,39 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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
+ },
+ "driver": "is31fl3731",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D3", "D5", "D4", "D6", "D7", "B4", "B5", "F6", "F5", "F4", "F1", "B0", "B1", "B2", "B3"],
diff --git a/keyboards/tkc/portico68v2/config.h b/keyboards/tkc/portico68v2/config.h
index 2c8ecf806d..3da76c332d 100644
--- a/keyboards/tkc/portico68v2/config.h
+++ b/keyboards/tkc/portico68v2/config.h
@@ -18,62 +18,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-#define DRIVER_1_LED_TOTAL 82
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-#define DRIVER_INDICATOR_LED_TOTAL 0
-#define RGB_MATRIX_CENTER { 116, 32 }
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 175
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-//# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-//# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-// #define RGB_MATRIX_LED_PROCESS_LIMIT 5
-// #define RGB_MATRIX_LED_FLUSH_LIMIT 26
diff --git a/keyboards/tkc/portico68v2/info.json b/keyboards/tkc/portico68v2/info.json
index 7a11cb6172..38a94c2c9d 100644
--- a/keyboards/tkc/portico68v2/info.json
+++ b/keyboards/tkc/portico68v2/info.json
@@ -9,7 +9,53 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "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,
+ "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
+ },
+ "center_point": [116, 32],
+ "driver": "is31fl3741",
+ "max_brightness": 175,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D3", "D5", "D4", "D6", "D7", "B4", "B5", "F6", "F5", "F4", "F1", "B0", "B1", "B2", "B3"],
diff --git a/keyboards/tkc/portico68v2/portico68v2.c b/keyboards/tkc/portico68v2/portico68v2.c
index 90d8c12fca..5c5f65f10d 100644
--- a/keyboards/tkc/portico68v2/portico68v2.c
+++ b/keyboards/tkc/portico68v2/portico68v2.c
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3741_led_t g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB1 */
{0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB2 */
{0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB3 */
@@ -133,13 +133,13 @@ bool rgb_matrix_indicators_kb(void) {
return false;
}
if (host_keyboard_led_state().caps_lock) {
- for (uint8_t i = 0; i < DRIVER_1_LED_TOTAL; i++) {
+ for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
rgb_matrix_set_color(i, 0xFF, 0xFF, 0xFF);
}
}
else {
if (rgb_matrix_get_flags() == LED_FLAG_NONE) {
- for (uint8_t i = 0; i < DRIVER_1_LED_TOTAL; i++) {
+ for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) {
rgb_matrix_set_color(i, 0, 0, 0);
}
}
diff --git a/keyboards/tkc/portico75/config.h b/keyboards/tkc/portico75/config.h
index 8146141bf0..8d209e3775 100644
--- a/keyboards/tkc/portico75/config.h
+++ b/keyboards/tkc/portico75/config.h
@@ -17,68 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 4
-# define RGB_MATRIX_LED_FLUSH_LIMIT 26
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-# define DRIVER_1_LED_TOTAL 98
-# define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-# define DRIVER_INDICATOR_LED_TOTAL 0
-#else
+#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
+
+#ifndef RGB_MATRIX_ENABLE
// WT_RGB IS31FL3741 driver code
-# define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
# define IS31FL3741_LED_COUNT 98
# define RGB_BACKLIGHT_ENABLED 1
diff --git a/keyboards/tkc/portico75/info.json b/keyboards/tkc/portico75/info.json
index 5a90036972..fa2a24951f 100644
--- a/keyboards/tkc/portico75/info.json
+++ b/keyboards/tkc/portico75/info.json
@@ -9,7 +9,39 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3741"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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
+ },
+ "driver": "is31fl3741",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "B3", "B7"],
diff --git a/keyboards/tkc/tkl_ab87/config.h b/keyboards/tkc/tkl_ab87/config.h
index 5a3bda67c2..ef2f04081f 100644
--- a/keyboards/tkc/tkl_ab87/config.h
+++ b/keyboards/tkc/tkl_ab87/config.h
@@ -17,9 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2 //Reduced layer count due to memory space considerations
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/tominabox1/le_chiffre/config.h b/keyboards/tominabox1/le_chiffre/config.h
index 9b01cb3da4..333d0a100e 100644
--- a/keyboards/tominabox1/le_chiffre/config.h
+++ b/keyboards/tominabox1/le_chiffre/config.h
@@ -19,9 +19,3 @@
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-/*
- * WS2812 Underglow Matrix options
- */
-#define RGB_MATRIX_LED_COUNT 11
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
diff --git a/keyboards/tominabox1/le_chiffre/info.json b/keyboards/tominabox1/le_chiffre/info.json
index 8ebc0778e6..47c07ab361 100644
--- a/keyboards/tominabox1/le_chiffre/info.json
+++ b/keyboards/tominabox1/le_chiffre/info.json
@@ -73,7 +73,8 @@
"max_brightness": 150,
"sat_steps": 8,
"speed_steps": 10,
- "val_steps": 8
+ "val_steps": 8,
+ "sleep": true
},
"usb": {
"vid": "0x7431",
diff --git a/keyboards/torn/mcp23018.c b/keyboards/torn/mcp23018.c
index 12c4f9bc7f..ba26e67ba9 100644
--- a/keyboards/torn/mcp23018.c
+++ b/keyboards/torn/mcp23018.c
@@ -48,7 +48,7 @@ i2c_status_t mcp23018_writeReg(uint8_t regaddr, const uint8_t* data, uint16_t le
return mcp23018_status;
}
- mcp23018_status = i2c_writeReg((MCP23018_ADDR << 1), regaddr, data, length, MCP23018_TIMEOUT);
+ mcp23018_status = i2c_write_register((MCP23018_ADDR << 1), regaddr, data, length, MCP23018_TIMEOUT);
return mcp23018_status;
}
@@ -57,6 +57,6 @@ i2c_status_t mcp23018_readReg(uint8_t regaddr, uint8_t* data, uint16_t length) {
return mcp23018_status;
}
- mcp23018_status = i2c_readReg((MCP23018_ADDR << 1), regaddr, data, length, MCP23018_TIMEOUT);
+ mcp23018_status = i2c_read_register((MCP23018_ADDR << 1), regaddr, data, length, MCP23018_TIMEOUT);
return mcp23018_status;
}
diff --git a/keyboards/touchpad/matrix.c b/keyboards/touchpad/matrix.c
index 6bffb826bd..87944cb7cc 100644
--- a/keyboards/touchpad/matrix.c
+++ b/keyboards/touchpad/matrix.c
@@ -38,7 +38,7 @@ volatile uint8_t LEDs[6][6] = {{0}};//Stores current LED values
//Read data from the cap touch IC
uint8_t readDataFromTS(uint8_t reg) {
uint8_t rx[1] = { 0 };
- if (i2c_readReg(0x1C << 1, reg, rx, 1, 100) == 0) {
+ if (i2c_read_register(0x1C << 1, reg, rx, 1, 100) == 0) {
return rx[0];
}
return 0;
diff --git a/keyboards/treasure/type9s3/config.h b/keyboards/treasure/type9s3/config.h
deleted file mode 100644
index b87cd59b2f..0000000000
--- a/keyboards/treasure/type9s3/config.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2023 Treasure
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 9
-
-#define RGB_MATRIX_DEFAULT_SPD 40 // Sets the default animation speed, if none has been set
-#define RGB_MATRIX_DEFAULT_VAL 120
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/treasure/type9s3/info.json b/keyboards/treasure/type9s3/info.json
index 8e9c9fa38f..cb2bcf3a7a 100644
--- a/keyboards/treasure/type9s3/info.json
+++ b/keyboards/treasure/type9s3/info.json
@@ -31,6 +31,28 @@
"pin": "B6"
},
"rgb_matrix": {
+ "animations": {
+ "gradient_up_down": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "jellybean_raindrops": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "typing_heatmap": true,
+ "digital_rain": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_nexus": true,
+ "splash": true,
+ "solid_splash": true
+ },
+ "default": {
+ "speed": 40,
+ "val": 120
+ },
"driver": "ws2812",
"layout": [
{ "matrix": [2, 0],"flags": 4, "x": 0, "y": 20 },
@@ -42,7 +64,8 @@
{ "matrix": [0, 0],"flags": 4, "x": 0, "y": 0 },
{ "matrix": [0, 1],"flags": 4, "x": 10, "y": 0 },
{ "matrix": [0, 2],"flags": 4, "x": 20, "y": 0 }
- ]
+ ],
+ "sleep": true
},
"community_layouts": ["ortho_3x3"],
"layouts": {
diff --git a/keyboards/tunks/ergo33/keymaps/default/config.h b/keyboards/tunks/ergo33/keymaps/default/config.h
index 33edf0b03c..3ca11c66a6 100644
--- a/keyboards/tunks/ergo33/keymaps/default/config.h
+++ b/keyboards/tunks/ergo33/keymaps/default/config.h
@@ -20,7 +20,7 @@
* No external LED PCB: 10
* External LED PCB: 14
*/
-#define RGBLED_NUM 14
+#define RGBLIGHT_LED_COUNT 14
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/tweetydabird/chameleon/config.h b/keyboards/tweetydabird/chameleon/config.h
deleted file mode 100644
index ba31336014..0000000000
--- a/keyboards/tweetydabird/chameleon/config.h
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright 2023 Markus Knutsson (@TweetyDaBird)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
diff --git a/keyboards/tzarc/djinn/rev1/config.h b/keyboards/tzarc/djinn/rev1/config.h
index cdcabed05c..7c8dc042f3 100644
--- a/keyboards/tzarc/djinn/rev1/config.h
+++ b/keyboards/tzarc/djinn/rev1/config.h
@@ -14,9 +14,6 @@
#endif // SERIAL_USART_SPEED
// RGB configuration
-#define RGB_MATRIX_LED_COUNT 84
-#define RGB_MATRIX_SPLIT \
- { 42, 42 }
#define RGB_POWER_ENABLE_PIN B1
#define RGB_CURR_1500mA_OK_PIN B0
#define RGB_CURR_3000mA_OK_PIN C5
diff --git a/keyboards/tzarc/djinn/rev1/info.json b/keyboards/tzarc/djinn/rev1/info.json
index 8a77a0fdc1..a0422dea93 100644
--- a/keyboards/tzarc/djinn/rev1/info.json
+++ b/keyboards/tzarc/djinn/rev1/info.json
@@ -97,6 +97,7 @@
{"flags": 4, "matrix": [6, 4], "x": 120, "y": 30},
{"flags": 4, "matrix": [6, 5], "x": 94, "y": 30},
{"flags": 4, "matrix": [6, 6], "x": 68, "y": 30}
- ]
+ ],
+ "split_count": [42, 42]
}
}
diff --git a/keyboards/tzarc/djinn/rev2/config.h b/keyboards/tzarc/djinn/rev2/config.h
index 00a893ff65..bc7fcb3712 100644
--- a/keyboards/tzarc/djinn/rev2/config.h
+++ b/keyboards/tzarc/djinn/rev2/config.h
@@ -17,9 +17,6 @@
#define SERIAL_USART_FULL_DUPLEX
// RGB configuration
-#define RGB_MATRIX_LED_COUNT 86
-#define RGB_MATRIX_SPLIT \
- { 43, 43 }
#define RGB_POWER_ENABLE_PIN B0
#define RGB_CURR_1500mA_OK_PIN C5
#define RGB_CURR_3000mA_OK_PIN C4
diff --git a/keyboards/tzarc/djinn/rev2/info.json b/keyboards/tzarc/djinn/rev2/info.json
index a8716209ea..33db91971e 100644
--- a/keyboards/tzarc/djinn/rev2/info.json
+++ b/keyboards/tzarc/djinn/rev2/info.json
@@ -98,6 +98,7 @@
{"flags": 4, "matrix": [6, 4], "x": 120, "y": 30},
{"flags": 4, "matrix": [6, 5], "x": 94, "y": 30},
{"flags": 4, "matrix": [6, 6], "x": 68, "y": 30}
- ]
+ ],
+ "split_count": [43, 43]
}
}
diff --git a/keyboards/tzarc/ghoul/config.h b/keyboards/tzarc/ghoul/config.h
index 402f14cd92..4709151e8d 100644
--- a/keyboards/tzarc/ghoul/config.h
+++ b/keyboards/tzarc/ghoul/config.h
@@ -9,6 +9,3 @@
// EEPROM configuration
#define EEPROM_SPI_MB85RS64V
-
-// RGB configuration
-#define RGB_MATRIX_LED_COUNT 40
diff --git a/keyboards/ungodly/launch_pad/config.h b/keyboards/ungodly/launch_pad/config.h
index f3431bd412..70dfd10d97 100644
--- a/keyboards/ungodly/launch_pad/config.h
+++ b/keyboards/ungodly/launch_pad/config.h
@@ -18,66 +18,3 @@
/* Midi Slider */
#define SLIDER_PIN F6
#define MIDI_ADVANCED
-
-/* RGB Matrix configuration */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 22
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_PINWHEEL // default mode
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-// # define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-// # define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// # define ENABLE_RGB_MATRIX_CYCLE_ALL
-// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-// # define ENABLE_RGB_MATRIX_DUAL_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define ENABLE_RGB_MATRIX_RAINDROPS
-// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define ENABLE_RGB_MATRIX_HUE_BREATHING
-// # define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// # define ENABLE_RGB_MATRIX_HUE_WAVE
-// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
diff --git a/keyboards/ungodly/launch_pad/info.json b/keyboards/ungodly/launch_pad/info.json
index 5474bc5279..d9d0ea30ed 100644
--- a/keyboards/ungodly/launch_pad/info.json
+++ b/keyboards/ungodly/launch_pad/info.json
@@ -9,10 +9,19 @@
"device_version": "99.9.9"
},
"rgb_matrix": {
+ "animations": {
+ "gradient_left_right": true,
+ "cycle_pinwheel": true
+ },
+ "default": {
+ "animation": "cycle_pinwheel"
+ },
"driver": "ws2812",
+ "max_brightness": 150,
"sat_steps": 8,
"val_steps": 8,
- "speed_steps": 10
+ "speed_steps": 10,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3"],
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/unison/keymaps/via/config.h b/keyboards/unison/keymaps/via/config.h
index 48fe417a5d..07a2c9f5cc 100644
--- a/keyboards/unison/keymaps/via/config.h
+++ b/keyboards/unison/keymaps/via/config.h
@@ -16,8 +16,8 @@
#pragma once
- #undef RGBLED_NUM
- #define RGBLED_NUM 17 // Layer Indicator(2) + Rotary Encoder(5) + Optional(2) + Under(8)
+ #undef RGBLIGHT_LED_COUNT
+ #define RGBLIGHT_LED_COUNT 17 // Layer Indicator(2) + Rotary Encoder(5) + Optional(2) + Under(8)
#undef RGBLIGHT_LED_MAP
#define RGBLIGHT_LED_MAP {2, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} // Left to Right to Under
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/info.json b/keyboards/w1_at/info.json
deleted file mode 100644
index 896e523c83..0000000000
--- a/keyboards/w1_at/info.json
+++ /dev/null
@@ -1,569 +0,0 @@
-{
- "keyboard_name": "W1-AT",
- "manufacturer": "Yiancar-Designs",
- "url": "https://yiancar-designs.com",
- "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"]
- },
- "diode_direction": "COL2ROW",
- "indicators": {
- "caps_lock": "B6",
- "num_lock": "B3",
- "scroll_lock": "A15",
- "kana": "A13",
- "on_state": 0
- },
- "bootmagic": {
- "matrix": [0, 2]
- },
- "processor": "STM32F072",
- "bootloader": "stm32-dfu",
- "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},
- {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
- {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
- {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
- {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
- {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
- {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
- {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
- {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
- {"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},
- {"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},
- {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
- {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
- {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
- {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
- {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
- {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
- {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
- {"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": "\\", "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},
- {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
- {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
- {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
- {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
- {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
- {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
- {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
- {"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},
- {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
- {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
- {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
- {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
- {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
- {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
- {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
- {"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": 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},
- {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
- ]
- },
- "LAYOUT_ansi_wkl": {
- "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},
- {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
- {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
- {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
- {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
- {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
- {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
- {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
- {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
- {"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},
- {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
- {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
- {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
- {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
- {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
- {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
- {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
- {"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": "\\", "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},
- {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
- {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
- {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
- {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
- {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
- {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
- {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
- {"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},
- {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
- {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
- {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
- {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
- {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
- {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
- {"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},
- {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
- ]
- },
- "LAYOUT_ansi_wkl_split_bs_rshift": {
- "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},
- {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
- {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
- {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
- {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
- {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
- {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
- {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
- {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
- {"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},
- {"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},
- {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
- {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
- {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
- {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
- {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
- {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
- {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
- {"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": "\\", "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},
- {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
- {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
- {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
- {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
- {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
- {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
- {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
- {"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},
- {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
- {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
- {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
- {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
- {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
- {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
- {"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": 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},
- {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
- ]
- },
- "LAYOUT_iso_wkl": {
- "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},
- {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
- {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
- {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
- {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
- {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
- {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
- {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
- {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
- {"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},
- {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
- {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
- {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
- {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
- {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
- {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
- {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
- {"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},
- {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
- {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
- {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
- {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
- {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
- {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
- {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
- {"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
- {"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},
- {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
- {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
- {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
- {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
- {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
- {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
- {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
- {"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},
- {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
- ]
- },
- "LAYOUT_iso_wkl_split_bs_rshift": {
- "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},
- {"label": "3", "matrix": [0, 5], "x": 5.25, "y": 0},
- {"label": "4", "matrix": [0, 6], "x": 6.25, "y": 0},
- {"label": "5", "matrix": [0, 7], "x": 7.25, "y": 0},
- {"label": "6", "matrix": [0, 8], "x": 8.25, "y": 0},
- {"label": "7", "matrix": [0, 9], "x": 9.25, "y": 0},
- {"label": "8", "matrix": [0, 10], "x": 10.25, "y": 0},
- {"label": "9", "matrix": [0, 11], "x": 11.25, "y": 0},
- {"label": "0", "matrix": [0, 12], "x": 12.25, "y": 0},
- {"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},
- {"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},
- {"label": "E", "matrix": [1, 5], "x": 5.75, "y": 1},
- {"label": "R", "matrix": [1, 6], "x": 6.75, "y": 1},
- {"label": "T", "matrix": [1, 7], "x": 7.75, "y": 1},
- {"label": "Y", "matrix": [1, 8], "x": 8.75, "y": 1},
- {"label": "U", "matrix": [1, 9], "x": 9.75, "y": 1},
- {"label": "I", "matrix": [1, 10], "x": 10.75, "y": 1},
- {"label": "O", "matrix": [1, 11], "x": 11.75, "y": 1},
- {"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},
- {"label": "D", "matrix": [2, 5], "x": 6, "y": 2},
- {"label": "F", "matrix": [2, 6], "x": 7, "y": 2},
- {"label": "G", "matrix": [2, 7], "x": 8, "y": 2},
- {"label": "H", "matrix": [2, 8], "x": 9, "y": 2},
- {"label": "J", "matrix": [2, 9], "x": 10, "y": 2},
- {"label": "K", "matrix": [2, 10], "x": 11, "y": 2},
- {"label": "L", "matrix": [2, 11], "x": 12, "y": 2},
- {"label": ";", "matrix": [2, 12], "x": 13, "y": 2},
- {"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},
- {"label": "X", "matrix": [3, 5], "x": 5.5, "y": 3},
- {"label": "C", "matrix": [3, 6], "x": 6.5, "y": 3},
- {"label": "V", "matrix": [3, 7], "x": 7.5, "y": 3},
- {"label": "B", "matrix": [3, 8], "x": 8.5, "y": 3},
- {"label": "N", "matrix": [3, 9], "x": 9.5, "y": 3},
- {"label": "M", "matrix": [3, 10], "x": 10.5, "y": 3},
- {"label": ",", "matrix": [3, 11], "x": 11.5, "y": 3},
- {"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": 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},
- {"label": "Enter", "matrix": [4, 19], "x": 20.5, "y": 4}
- ]
- }
- }
-}
diff --git a/keyboards/w1_at/keymaps/default/keymap.c b/keyboards/w1_at/keymaps/default/keymap.c
deleted file mode 100644
index 7c190b73d6..0000000000
--- a/keyboards/w1_at/keymaps/default/keymap.c
+++ /dev/null
@@ -1,49 +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/>.
- */
-#include QMK_KEYBOARD_H
-
-enum custom_keycodes {
- KC_P00 = SAFE_RANGE
-};
-
-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_PMNS,
- KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3, KC_PMNS,
- KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_P0, KC_P00, KC_PDOT, KC_PENT),
-
-[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_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)
-};
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- switch(keycode) {
- case KC_P00:
- tap_code(KC_P0);
- tap_code(KC_P0);
- return false;
- }
- }
- return true;
-} \ No newline at end of file
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/readme.md b/keyboards/w1_at/readme.md
deleted file mode 100644
index 7608e72f76..0000000000
--- a/keyboards/w1_at/readme.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# W1-AT
-
-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 Availability: https://geon.works/
-
-## Instructions
-
-### Build
-
-Make example for this keyboard (after setting up your build environment):
-
- make 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).
-
-### Reset
-
-- Unplug
-- Hold Escape
-- Plug In
-- Unplug
-- Release Escape
-
-### Flash
-
-- Unplug
-- Hold Escape
-- Plug In
-- Flash using QMK Toolbox or CLI (`make w1_at:<keymap>:flash`)
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/w1_at/w1_at.c b/keyboards/w1_at/w1_at.c
deleted file mode 100644
index d4c4ce932a..0000000000
--- a/keyboards/w1_at/w1_at.c
+++ /dev/null
@@ -1,30 +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/>.
- */
- #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);
-}
-
-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/wavtype/p01_ultra/config.h b/keyboards/wavtype/p01_ultra/config.h
index e01f469285..3da58bc5d2 100644
--- a/keyboards/wavtype/p01_ultra/config.h
+++ b/keyboards/wavtype/p01_ultra/config.h
@@ -22,8 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/wekey/we27/config.h b/keyboards/wekey/we27/config.h
index f6839b9006..c86ead57bd 100644
--- a/keyboards/wekey/we27/config.h
+++ b/keyboards/wekey/we27/config.h
@@ -17,65 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 27
-
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-#define RGB_MATRIX_DEFAULT_HUE 108 // Sets the default hue value, if none has been set
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-// # define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-// # define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// # define ENABLE_RGB_MATRIX_CYCLE_ALL
-// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-// # define ENABLE_RGB_MATRIX_DUAL_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # define ENABLE_RGB_MATRIX_RAINDROPS
-// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define ENABLE_RGB_MATRIX_HUE_BREATHING
-// # define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// # define ENABLE_RGB_MATRIX_HUE_WAVE
-// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/wekey/we27/info.json b/keyboards/wekey/we27/info.json
index 4d4081faf0..802ae8eed6 100644
--- a/keyboards/wekey/we27/info.json
+++ b/keyboards/wekey/we27/info.json
@@ -9,7 +9,14 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "rainbow_moving_chevron": true
+ },
+ "default": {
+ "hue": 108
+ },
+ "driver": "ws2812",
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["F4", "F5", "C7", "D6", "D4"],
diff --git a/keyboards/wilba_tech/wt60_a/rules.mk b/keyboards/wilba_tech/wt60_a/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt60_a/rules.mk
+++ b/keyboards/wilba_tech/wt60_a/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt60_a/wt60_a.c b/keyboards/wilba_tech/wt60_a/wt60_a.c
new file mode 100644
index 0000000000..fe566ce3fc
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_a/wt60_a.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT60_A)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT60_A)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt65_a/rules.mk b/keyboards/wilba_tech/wt65_a/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt65_a/rules.mk
+++ b/keyboards/wilba_tech/wt65_a/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt65_a/wt65_a.c b/keyboards/wilba_tech/wt65_a/wt65_a.c
new file mode 100644
index 0000000000..4ac6e622db
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_a/wt65_a.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT65_A)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT65_A)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt65_b/rules.mk b/keyboards/wilba_tech/wt65_b/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt65_b/rules.mk
+++ b/keyboards/wilba_tech/wt65_b/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt65_b/wt65_b.c b/keyboards/wilba_tech/wt65_b/wt65_b.c
new file mode 100644
index 0000000000..139ddca921
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_b/wt65_b.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT65_B)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT65_B)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt75_a/rules.mk b/keyboards/wilba_tech/wt75_a/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt75_a/rules.mk
+++ b/keyboards/wilba_tech/wt75_a/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt75_a/wt75_a.c b/keyboards/wilba_tech/wt75_a/wt75_a.c
new file mode 100644
index 0000000000..8b64397b95
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_a/wt75_a.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT75_A)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT75_A)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt75_b/rules.mk b/keyboards/wilba_tech/wt75_b/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt75_b/rules.mk
+++ b/keyboards/wilba_tech/wt75_b/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt75_b/wt75_b.c b/keyboards/wilba_tech/wt75_b/wt75_b.c
new file mode 100644
index 0000000000..9095bf5d6f
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_b/wt75_b.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT75_B)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT75_B)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt75_c/rules.mk b/keyboards/wilba_tech/wt75_c/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt75_c/rules.mk
+++ b/keyboards/wilba_tech/wt75_c/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt75_c/wt75_c.c b/keyboards/wilba_tech/wt75_c/wt75_c.c
new file mode 100644
index 0000000000..c3446b2af6
--- /dev/null
+++ b/keyboards/wilba_tech/wt75_c/wt75_c.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT75_C)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT75_C)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt80_a/rules.mk b/keyboards/wilba_tech/wt80_a/rules.mk
index 9ca8e8f973..f7482c7a2f 100644
--- a/keyboards/wilba_tech/wt80_a/rules.mk
+++ b/keyboards/wilba_tech/wt80_a/rules.mk
@@ -11,7 +11,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
# project specific files
-SRC = drivers/led/issi/is31fl3736-simple.c \
+SRC = drivers/led/issi/is31fl3736-mono.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
diff --git a/keyboards/wilba_tech/wt80_a/wt80_a.c b/keyboards/wilba_tech/wt80_a/wt80_a.c
new file mode 100644
index 0000000000..cf29760b62
--- /dev/null
+++ b/keyboards/wilba_tech/wt80_a/wt80_a.c
@@ -0,0 +1,120 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#if defined(MONO_BACKLIGHT_WT80_A)
+# include "drivers/led/issi/is31fl3736-mono.h"
+#endif
+
+#if defined(LED_MATRIX_ENABLE) || defined(MONO_BACKLIGHT_WT80_A)
+const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_4},
+ {0, A_5},
+ {0, A_6},
+ {0, A_7},
+ {0, A_8},
+
+ {0, B_1},
+ {0, B_2},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+
+ {0, F_1},
+ {0, F_2},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_7},
+ {0, G_8},
+
+ {0, H_1},
+ {0, H_2},
+ {0, H_3},
+ {0, H_4},
+ {0, H_5},
+ {0, H_6},
+ {0, H_7},
+ {0, H_8},
+
+ {0, I_1},
+ {0, I_2},
+ {0, I_3},
+ {0, I_4},
+ {0, I_5},
+ {0, I_6},
+ {0, I_7},
+ {0, I_8},
+
+ {0, J_1},
+ {0, J_2},
+ {0, J_3},
+ {0, J_4},
+ {0, J_5},
+ {0, J_6},
+ {0, J_7},
+ {0, J_8},
+
+ {0, K_1},
+ {0, K_2},
+ {0, K_3},
+ {0, K_4},
+ {0, K_5},
+ {0, K_6},
+ {0, K_7},
+ {0, K_8},
+
+ {0, L_1},
+ {0, L_2},
+ {0, L_3},
+ {0, L_4},
+ {0, L_5},
+ {0, L_6},
+ {0, L_7},
+ {0, L_8}
+};
+#endif
diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c
index e218f0af4b..1523fbdb85 100644
--- a/keyboards/wilba_tech/wt_mono_backlight.c
+++ b/keyboards/wilba_tech/wt_mono_backlight.c
@@ -33,7 +33,7 @@
#error VIA_EEPROM_CUSTOM_CONFIG_SIZE was not defined to store backlight_config struct
#endif
-#include "drivers/led/issi/is31fl3736-simple.h"
+#include "drivers/led/issi/is31fl3736-mono.h"
#define BACKLIGHT_EFFECT_MAX 3
@@ -50,116 +50,6 @@ backlight_config g_config = {
.color_1 = MONO_BACKLIGHT_COLOR_1,
};
-const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
- {0, A_1},
- {0, A_2},
- {0, A_3},
- {0, A_4},
- {0, A_5},
- {0, A_6},
- {0, A_7},
- {0, A_8},
-
- {0, B_1},
- {0, B_2},
- {0, B_3},
- {0, B_4},
- {0, B_5},
- {0, B_6},
- {0, B_7},
- {0, B_8},
-
- {0, C_1},
- {0, C_2},
- {0, C_3},
- {0, C_4},
- {0, C_5},
- {0, C_6},
- {0, C_7},
- {0, C_8},
-
- {0, D_1},
- {0, D_2},
- {0, D_3},
- {0, D_4},
- {0, D_5},
- {0, D_6},
- {0, D_7},
- {0, D_8},
-
- {0, E_1},
- {0, E_2},
- {0, E_3},
- {0, E_4},
- {0, E_5},
- {0, E_6},
- {0, E_7},
- {0, E_8},
-
- {0, F_1},
- {0, F_2},
- {0, F_3},
- {0, F_4},
- {0, F_5},
- {0, F_6},
- {0, F_7},
- {0, F_8},
-
- {0, G_1},
- {0, G_2},
- {0, G_3},
- {0, G_4},
- {0, G_5},
- {0, G_6},
- {0, G_7},
- {0, G_8},
-
- {0, H_1},
- {0, H_2},
- {0, H_3},
- {0, H_4},
- {0, H_5},
- {0, H_6},
- {0, H_7},
- {0, H_8},
-
- {0, I_1},
- {0, I_2},
- {0, I_3},
- {0, I_4},
- {0, I_5},
- {0, I_6},
- {0, I_7},
- {0, I_8},
-
- {0, J_1},
- {0, J_2},
- {0, J_3},
- {0, J_4},
- {0, J_5},
- {0, J_6},
- {0, J_7},
- {0, J_8},
-
- {0, K_1},
- {0, K_2},
- {0, K_3},
- {0, K_4},
- {0, K_5},
- {0, K_6},
- {0, K_7},
- {0, K_8},
-
- {0, L_1},
- {0, L_2},
- {0, L_3},
- {0, L_4},
- {0, L_5},
- {0, L_6},
- {0, L_7},
- {0, L_8}
-};
-
bool g_suspend_state = false;
// Global tick at 20 Hz
diff --git a/keyboards/winry/winry315/config.h b/keyboards/winry/winry315/config.h
index 4a3c8c3e27..7bb818d273 100644
--- a/keyboards/winry/winry315/config.h
+++ b/keyboards/winry/winry315/config.h
@@ -3,78 +3,4 @@
#pragma once
-// clang-format on
-
-// RGB Matrix configuration.
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 27
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-
-# define RGB_MATRIX_CENTER \
- { 35, 35 }
-
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// This option is required for the TYPING_HEATMAP and DIGITAL_RAIN effects,
-// both of which are disabled below, so the common support for those effects is
-// disabled too.
-# undef RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// This option is required for reactive effects; disabling this option will
-// implicitly disable all of them.
-# define RGB_MATRIX_KEYPRESSES
-
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
-// different from the physical layout; it also has problems when underglow
-// LEDs are present, or when multiple LEDs are associated with the same key.
-# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// is defined. Both of these effects currently don't work properly when the
-// key matrix does not match the physical layout, so they are disabled.
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// Reactive effects; can be enabled only if at least one of
-// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
+#define RGB_MATRIX_LED_COUNT 27
diff --git a/keyboards/winry/winry315/info.json b/keyboards/winry/winry315/info.json
index 98bb376ba2..a7d71aca46 100644
--- a/keyboards/winry/winry315/info.json
+++ b/keyboards/winry/winry315/info.json
@@ -9,7 +9,51 @@
"vid": "0xF1F1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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,
+ "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
+ },
+ "center_point": [35, 35],
+ "driver": "ws2812",
+ "max_brightness": 150,
+ "sleep": true
},
"rgblight": {
"saturation_steps": 8,
diff --git a/keyboards/wolf/m60_b/config.h b/keyboards/wolf/m60_b/config.h
deleted file mode 100644
index a0d44d48e3..0000000000
--- a/keyboards/wolf/m60_b/config.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-Copyright 2020 <contact@vwolf.be>
-
-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 RGB */
-#ifdef RGB_MATRIX_ENABLE
-
-#define RGB_MATRIX_LED_COUNT 62
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-
-#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// The PIXEL_FRACTAL effect does not work properly when the matrix layout is
-// different from the physical layout; it also has problems when underglow
-// LEDs are present, or when multiple LEDs are associated with the same key.
-#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-// Framebuffer effects; can be enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// is defined. Both of these effects currently don't work properly when the
-// key matrix does not match the physical layout, so they are disabled.
-#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// Reactive effects; can be enabled only if at least one of
-// RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined.
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
diff --git a/keyboards/wolf/m60_b/info.json b/keyboards/wolf/m60_b/info.json
index 2c3b4a3b0d..6d39d0bbf8 100644
--- a/keyboards/wolf/m60_b/info.json
+++ b/keyboards/wolf/m60_b/info.json
@@ -23,6 +23,50 @@
},
"processor": "atmega32u4",
"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,
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
"driver": "ws2812",
"layout": [
{"flags": 4, "matrix": [2, 0], "x": 7, "y": 32},
@@ -87,7 +131,9 @@
{"flags": 4, "matrix": [0, 12], "x": 209, "y": 0},
{"flags": 4, "matrix": [2, 12], "x": 227, "y": 0},
{"flags": 4, "matrix": [0, 13], "x": 244, "y": 0}
- ]
+ ],
+ "max_brightness": 120,
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/wolf/m6_c/config.h b/keyboards/wolf/m6_c/config.h
deleted file mode 100644
index d5f391bcdd..0000000000
--- a/keyboards/wolf/m6_c/config.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2023 contact@vwolf.be
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-
-#define RGB_MATRIX_LED_COUNT 6
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL \ No newline at end of file
diff --git a/keyboards/wolf/m6_c/info.json b/keyboards/wolf/m6_c/info.json
index ff83a95164..f6f2416902 100644
--- a/keyboards/wolf/m6_c/info.json
+++ b/keyboards/wolf/m6_c/info.json
@@ -25,7 +25,6 @@
"driver": "ws2812",
"max_brightness": 120,
"animations": {
- "solid_color": true,
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
@@ -70,6 +69,9 @@
"solid_splash": true,
"solid_multisplash": true
},
+ "default": {
+ "animation": "cycle_all"
+ },
"layout": [
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [0, 1], "x": 122, "y": 0 },
@@ -77,7 +79,8 @@
{ "flags": 4, "matrix": [1, 2], "x": 244, "y": 64 },
{ "flags": 4, "matrix": [1, 1], "x": 122, "y": 64 },
{ "flags": 4, "matrix": [1, 0], "x": 0, "y": 64 }
- ]
+ ],
+ "sleep": true
},
"url": "",
"usb": {
diff --git a/keyboards/work_louder/loop/config.h b/keyboards/work_louder/loop/config.h
index 28c506d867..6853707067 100644
--- a/keyboards/work_louder/loop/config.h
+++ b/keyboards/work_louder/loop/config.h
@@ -22,62 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
#define RGBLIGHT_DEFAULT_HUE 36
-#define RGB_MATRIX_LED_COUNT 9
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_DISABLE_KEYCODES
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/*
* Feature disable options
diff --git a/keyboards/work_louder/loop/info.json b/keyboards/work_louder/loop/info.json
index eacbbbccbd..7c62f7f854 100644
--- a/keyboards/work_louder/loop/info.json
+++ b/keyboards/work_louder/loop/info.json
@@ -9,7 +9,42 @@
"max_power": 100
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B3", "B2", "B1", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6"],
@@ -30,6 +65,7 @@
"pin": "F1"
},
"rgblight": {
+ "driver": "custom",
"max_brightness": 120,
"sleep": true,
"animations": {
diff --git a/keyboards/work_louder/micro/config.h b/keyboards/work_louder/micro/config.h
index 98f2b86973..3fe4cb5b32 100644
--- a/keyboards/work_louder/micro/config.h
+++ b/keyboards/work_louder/micro/config.h
@@ -3,64 +3,12 @@
#pragma once
-
-#define RGB_MATRIX_LED_COUNT 12
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
#define RGB_MATRIX_DISABLE_KEYCODES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_MATRIX_KEYPRESSES
#define RGBLIGHT_DI_PIN D2
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_GRADIENT + 9
#define RGBLIGHT_DEFAULT_HUE 213
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* disable debug print */
//#define NO_DEBUG
diff --git a/keyboards/work_louder/micro/info.json b/keyboards/work_louder/micro/info.json
index d76e7aa049..95fdb5ab15 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,
@@ -44,7 +45,42 @@
"pin": "D1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "driver": "ws2812",
+ "max_brightness": 150,
+ "sleep": true
},
"url": "https://worklouder.cc/",
"usb": {
diff --git a/keyboards/work_louder/nano/config.h b/keyboards/work_louder/nano/config.h
index 22c6f7b1bd..ace674c509 100644
--- a/keyboards/work_louder/nano/config.h
+++ b/keyboards/work_louder/nano/config.h
@@ -22,61 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
#define RGBLIGHT_DEFAULT_HUE 170
-#define RGB_MATRIX_LED_COUNT 2
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_DISABLE_KEYCODES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/*
* Feature disable options
diff --git a/keyboards/work_louder/nano/info.json b/keyboards/work_louder/nano/info.json
index ab064bd019..01bfc0ce46 100644
--- a/keyboards/work_louder/nano/info.json
+++ b/keyboards/work_louder/nano/info.json
@@ -10,7 +10,42 @@
"max_power": 100
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B5", "B6", "C6"],
@@ -27,6 +62,7 @@
},
"rgblight": {
"led_count": 6,
+ "driver": "custom",
"max_brightness": 120,
"sleep": true,
"animations": {
diff --git a/keyboards/work_louder/numpad/config.h b/keyboards/work_louder/numpad/config.h
index f6a70b90b0..da59b51670 100644
--- a/keyboards/work_louder/numpad/config.h
+++ b/keyboards/work_louder/numpad/config.h
@@ -19,60 +19,8 @@
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-#define RGB_MATRIX_LED_COUNT 16
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
#define RGB_MATRIX_DISABLE_KEYCODES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-
#define RGBLIGHT_DI_PIN D2
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_GRADIENT + 9
#define RGBLIGHT_DEFAULT_HUE 213
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/work_louder/numpad/info.json b/keyboards/work_louder/numpad/info.json
index 0fa2bf2565..e9a20613c6 100644
--- a/keyboards/work_louder/numpad/info.json
+++ b/keyboards/work_louder/numpad/info.json
@@ -29,6 +29,39 @@
"lto": true
},
"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
+ },
"driver": "ws2812",
"layout": [
{"flags": 1, "matrix": [3, 3], "x": 141, "y": 64},
@@ -47,9 +80,12 @@
{"flags": 4, "matrix": [0, 1], "x": 103, "y": 7},
{"flags": 4, "matrix": [0, 2], "x": 122, "y": 7},
{"flags": 4, "matrix": [0, 3], "x": 141, "y": 7}
- ]
+ ],
+ "max_brightness": 150,
+ "sleep": true
},
"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/config.h b/keyboards/work_louder/work_board/config.h
index de91d98de9..c698ad42ca 100644
--- a/keyboards/work_louder/work_board/config.h
+++ b/keyboards/work_louder/work_board/config.h
@@ -23,64 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_DEFAULT_HUE 213
#define RGB_MATRIX_LED_COUNT 49
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
#define RGB_MATRIX_DISABLE_KEYCODES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_MATRIX_KEYPRESSES
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
-#define RGB_MATRIX_DEFAULT_HUE 191 // Sets the default hue value, if none has been set
/*
* Feature disable options
diff --git a/keyboards/work_louder/work_board/info.json b/keyboards/work_louder/work_board/info.json
index 1946b8bcf4..d920837209 100644
--- a/keyboards/work_louder/work_board/info.json
+++ b/keyboards/work_louder/work_board/info.json
@@ -9,7 +9,44 @@
"max_power": 100
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "default": {
+ "animation": "solid_color",
+ "hue": 191
+ },
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "E6"],
@@ -25,6 +62,7 @@
"pin": "D1"
},
"rgblight": {
+ "driver": "custom",
"max_brightness": 120,
"sleep": true,
"animations": {
diff --git a/keyboards/xbows/knight/config.h b/keyboards/xbows/knight/config.h
index d28ca9eac4..1069259547 100644
--- a/keyboards/xbows/knight/config.h
+++ b/keyboards/xbows/knight/config.h
@@ -15,43 +15,6 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 18
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_CENTER \
- { 92, 33 }
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-# define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
-# define DRIVER_1_LED_TOTAL 36
-# define DRIVER_2_LED_TOTAL 35
-# define DRIVER_3_LED_TOTAL 15
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL)
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
+#define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
diff --git a/keyboards/xbows/knight/info.json b/keyboards/xbows/knight/info.json
index 7684ca6b39..b110bc6e49 100644
--- a/keyboards/xbows/knight/info.json
+++ b/keyboards/xbows/knight/info.json
@@ -9,7 +9,29 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "breathing": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "splash": true,
+ "solid_multisplash": true
+ },
+ "center_point": [92, 33],
+ "driver": "is31fl3731",
+ "led_process_limit": 18,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6"],
diff --git a/keyboards/xbows/knight/knight.c b/keyboards/xbows/knight/knight.c
index 05ff84060c..87a297a5ed 100644
--- a/keyboards/xbows/knight/knight.c
+++ b/keyboards/xbows/knight/knight.c
@@ -15,7 +15,7 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
- const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C1_3, C2_3, C3_3}, // L01
{0, C1_4, C2_4, C3_4}, // L02
diff --git a/keyboards/xbows/knight_plus/config.h b/keyboards/xbows/knight_plus/config.h
index 433d8d994f..1069259547 100644
--- a/keyboards/xbows/knight_plus/config.h
+++ b/keyboards/xbows/knight_plus/config.h
@@ -15,43 +15,6 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 18
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_CENTER \
- { 92, 33 }
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-# define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
-# define DRIVER_1_LED_TOTAL 36
-# define DRIVER_2_LED_TOTAL 35
-# define DRIVER_3_LED_TOTAL 15
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL)
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
+#define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
diff --git a/keyboards/xbows/knight_plus/info.json b/keyboards/xbows/knight_plus/info.json
index 695ef03672..d524aed93e 100644
--- a/keyboards/xbows/knight_plus/info.json
+++ b/keyboards/xbows/knight_plus/info.json
@@ -9,7 +9,29 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "breathing": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "splash": true,
+ "solid_multisplash": true
+ },
+ "center_point": [92, 33],
+ "driver": "is31fl3731",
+ "led_process_limit": 18,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6"],
diff --git a/keyboards/xbows/knight_plus/knight_plus.c b/keyboards/xbows/knight_plus/knight_plus.c
index b84f6b964b..a5335337f1 100644
--- a/keyboards/xbows/knight_plus/knight_plus.c
+++ b/keyboards/xbows/knight_plus/knight_plus.c
@@ -15,7 +15,7 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
- const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C1_3, C2_3, C3_3}, // L01
{0, C1_4, C2_4, C3_4}, // L02
diff --git a/keyboards/xbows/nature/config.h b/keyboards/xbows/nature/config.h
index 1710e17c2f..d488c7c9e8 100644
--- a/keyboards/xbows/nature/config.h
+++ b/keyboards/xbows/nature/config.h
@@ -15,45 +15,6 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 18
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_CENTER \
- { 92, 33 }
-
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-# define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
-# define DRIVER_1_LED_TOTAL 36
-# define DRIVER_2_LED_TOTAL 36
-# define DRIVER_3_LED_TOTAL 15
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL)
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
+#define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
diff --git a/keyboards/xbows/nature/info.json b/keyboards/xbows/nature/info.json
index 892dda8878..af496e6e36 100644
--- a/keyboards/xbows/nature/info.json
+++ b/keyboards/xbows/nature/info.json
@@ -9,7 +9,29 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "breathing": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "splash": true,
+ "solid_multisplash": true
+ },
+ "center_point": [92, 33],
+ "driver": "is31fl3731",
+ "led_process_limit": 18,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6"],
diff --git a/keyboards/xbows/nature/nature.c b/keyboards/xbows/nature/nature.c
index 1ba964e453..9fcd40c08c 100644
--- a/keyboards/xbows/nature/nature.c
+++ b/keyboards/xbows/nature/nature.c
@@ -15,7 +15,7 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
- const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C1_3, C2_3, C3_3}, // L01
{0, C1_4, C2_4, C3_4}, // L02
diff --git a/keyboards/xbows/numpad/config.h b/keyboards/xbows/numpad/config.h
index df025a850d..0966c03f47 100644
--- a/keyboards/xbows/numpad/config.h
+++ b/keyboards/xbows/numpad/config.h
@@ -15,38 +15,4 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 18
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_CENTER \
- { 30, 32 }
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_VCC
-# define RGB_MATRIX_LED_COUNT 22
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_VCC
diff --git a/keyboards/xbows/numpad/info.json b/keyboards/xbows/numpad/info.json
index 2f5f5f4cd8..6ccb05e1b9 100644
--- a/keyboards/xbows/numpad/info.json
+++ b/keyboards/xbows/numpad/info.json
@@ -9,7 +9,29 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "breathing": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "splash": true,
+ "solid_multisplash": true
+ },
+ "center_point": [30, 32],
+ "driver": "is31fl3731",
+ "led_process_limit": 18,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["D4", "D6", "B2", "B1"],
diff --git a/keyboards/xbows/numpad/numpad.c b/keyboards/xbows/numpad/numpad.c
index 519a1b36f4..b84f59fbed 100644
--- a/keyboards/xbows/numpad/numpad.c
+++ b/keyboards/xbows/numpad/numpad.c
@@ -15,7 +15,7 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
- const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C3_3, C2_3, C1_3}, // L01
{0, C3_4, C2_4, C1_4}, // L02
diff --git a/keyboards/xbows/ranger/config.h b/keyboards/xbows/ranger/config.h
index 92bcfa492c..c9910cb145 100644
--- a/keyboards/xbows/ranger/config.h
+++ b/keyboards/xbows/ranger/config.h
@@ -15,43 +15,6 @@
*/
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_PROCESS_LIMIT 18
-# define RGB_MATRIX_LED_FLUSH_LIMIT 16
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_MATRIX_CENTER { 103, 32 }
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL
-# define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SDA
-# define DRIVER_1_LED_TOTAL 36
-# define DRIVER_2_LED_TOTAL 36
-# define DRIVER_3_LED_TOTAL 15
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL)
-
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL
+#define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SDA
diff --git a/keyboards/xbows/ranger/info.json b/keyboards/xbows/ranger/info.json
index edbb5fc504..f51d400ee4 100644
--- a/keyboards/xbows/ranger/info.json
+++ b/keyboards/xbows/ranger/info.json
@@ -9,7 +9,29 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "breathing": true,
+ "band_spiral_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_reactive_simple": true,
+ "solid_reactive": true,
+ "solid_reactive_wide": true,
+ "solid_reactive_cross": true,
+ "splash": true,
+ "solid_multisplash": true
+ },
+ "center_point": [103, 32],
+ "driver": "is31fl3731",
+ "led_process_limit": 18,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B7", "B3", "B2", "B1", "B0", "E6", "F0", "F1", "F4", "F5", "D7", "F6", "F7", "D4", "D5", "D3"],
diff --git a/keyboards/xbows/ranger/ranger.c b/keyboards/xbows/ranger/ranger.c
index 028b5fca5c..1ebb9a127c 100644
--- a/keyboards/xbows/ranger/ranger.c
+++ b/keyboards/xbows/ranger/ranger.c
@@ -17,7 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C3_3, C2_3, C1_3}, // L01
{0, C3_4, C2_4, C1_4}, // L02
diff --git a/keyboards/xbows/woody/config.h b/keyboards/xbows/woody/config.h
index 7d06b7abda..82b582bfe1 100644
--- a/keyboards/xbows/woody/config.h
+++ b/keyboards/xbows/woody/config.h
@@ -1,64 +1,4 @@
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_LED_PROCESS_LIMIT 4
-#define RGB_MATRIX_LED_FLUSH_LIMIT 26
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
-# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-# define DRIVER_1_LED_TOTAL 35
-# define DRIVER_2_LED_TOTAL 32
-# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#endif
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
diff --git a/keyboards/xbows/woody/info.json b/keyboards/xbows/woody/info.json
index 8212f31034..487fc76698 100644
--- a/keyboards/xbows/woody/info.json
+++ b/keyboards/xbows/woody/info.json
@@ -9,7 +9,41 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "is31fl3731"
+ "animations": {
+ "alphas_mods": true,
+ "gradient_left_right": true,
+ "breathing": true,
+ "band_val": true,
+ "band_pinwheel_val": 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,
+ "solid_reactive_simple": true,
+ "solid_reactive": true
+ },
+ "driver": "is31fl3731",
+ "led_flush_limit": 26,
+ "led_process_limit": 4,
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B6", "C6", "C7", "F4", "F5", "F6", "F7", "B7", "D2", "D3", "D5", "D4", "D6", "D7", "B4"],
diff --git a/keyboards/xbows/woody/woody.c b/keyboards/xbows/woody/woody.c
index e58ec15e10..9bfa1fd219 100644
--- a/keyboards/xbows/woody/woody.c
+++ b/keyboards/xbows/woody/woody.c
@@ -1,6 +1,6 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = {
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{0, C8_8, C7_8, C6_8}, // LA17
{0, C9_8, C7_7, C6_7}, // LA16
diff --git a/keyboards/xelus/dawn60/rev1_qmk/config.h b/keyboards/xelus/dawn60/rev1_qmk/config.h
index 4e6d418f21..81d5dc1e83 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/config.h
+++ b/keyboards/xelus/dawn60/rev1_qmk/config.h
@@ -26,15 +26,10 @@
//RGB Matrix defines
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
+#define IS31FL3731_LED_COUNT 64
-#define DRIVER_1_LED_TOTAL 32
-#define DRIVER_2_LED_TOTAL 32
-#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define RGB_MATRIX_LED_COUNT (IS31FL3731_LED_COUNT + WS2812_LED_TOTAL)
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_MATRIX_KEYPRESSES
-
// enable/disable LEDs based on layout
// switch between split backspace (1) or normal backspace(0)
#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1
@@ -45,52 +40,3 @@
// | ? | Shift | Fn | vs | Shift | Up | Fn |
// `------------------' `-------------------'
#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/xelus/dawn60/rev1_qmk/info.json b/keyboards/xelus/dawn60/rev1_qmk/info.json
index e32c8c53a8..12d6a5d529 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/info.json
+++ b/keyboards/xelus/dawn60/rev1_qmk/info.json
@@ -3,6 +3,52 @@
"pin": "F0"
},
"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,
+ "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
+ },
+ "default": {
+ "val": 80
+ },
"driver": "custom"
},
"matrix_pins": {
diff --git a/keyboards/xelus/la_plus/config.h b/keyboards/xelus/la_plus/config.h
index 6e3a51166e..c8b4a6e5b1 100755
--- a/keyboards/xelus/la_plus/config.h
+++ b/keyboards/xelus/la_plus/config.h
@@ -22,59 +22,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-// RGB Matrix
-// The number of LEDs connected
-#define RGB_MATRIX_LED_COUNT 32
-
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
-
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
// Custom Startup Animation
// comment out for solid animation
// #define STARTUP_ANIMATION_DOTS
diff --git a/keyboards/xelus/la_plus/info.json b/keyboards/xelus/la_plus/info.json
index be1fa11584..85e4e60215 100644
--- a/keyboards/xelus/la_plus/info.json
+++ b/keyboards/xelus/la_plus/info.json
@@ -12,7 +12,42 @@
"pin": "F1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "animations": {
+ "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_fractal": true,
+ "pixel_rain": true
+ },
+ "default": {
+ "animation": "cycle_all",
+ "val": 80
+ },
+ "driver": "ws2812",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["E6", "D5", "B2", "B3", "D3", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"],
diff --git a/keyboards/xelus/pachi/rgb/rev1/config.h b/keyboards/xelus/pachi/rgb/rev1/config.h
index e12b1af443..6cb40a9fae 100644
--- a/keyboards/xelus/pachi/rgb/rev1/config.h
+++ b/keyboards/xelus/pachi/rgb/rev1/config.h
@@ -38,57 +38,4 @@
// RGB Matrix defines
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-
-#define DRIVER_1_LED_TOTAL 117
-#define IS31FL3741_LED_COUNT DRIVER_1_LED_TOTAL
-
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define IS31FL3741_LED_COUNT RGB_MATRIX_LED_COUNT // is31fl3741.h does not set this for custom driver
diff --git a/keyboards/xelus/pachi/rgb/rev1/info.json b/keyboards/xelus/pachi/rgb/rev1/info.json
index 092021b23a..fe88e695be 100644
--- a/keyboards/xelus/pachi/rgb/rev1/info.json
+++ b/keyboards/xelus/pachi/rgb/rev1/info.json
@@ -10,7 +10,56 @@
"force_nkro": true
},
"rgb_matrix": {
- "driver": "custom"
+ "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_fractal": true,
+ "pixel_rain": 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
+ },
+ "default": {
+ "animation": "cycle_all",
+ "val": 80
+ },
+ "driver": "custom",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C13", "C14", "C15", "H0", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "H1", "B10", "B11"],
diff --git a/keyboards/xelus/pachi/rgb/rev2/config.h b/keyboards/xelus/pachi/rgb/rev2/config.h
index f852602705..50f7d6ac1d 100644
--- a/keyboards/xelus/pachi/rgb/rev2/config.h
+++ b/keyboards/xelus/pachi/rgb/rev2/config.h
@@ -38,61 +38,7 @@
// RGB Matrix defines
#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
-
-#define DRIVER_1_LED_TOTAL 117
-#define IS31FL3741_LED_COUNT DRIVER_1_LED_TOTAL
-
-#define RGB_MATRIX_DEFAULT_VAL 80
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define IS31FL3741_LED_COUNT RGB_MATRIX_LED_COUNT // is31fl3741.h does not set this for custom driver
// VIA KB level
#define VIA_FIRMWARE_VERSION 1
diff --git a/keyboards/xelus/pachi/rgb/rev2/info.json b/keyboards/xelus/pachi/rgb/rev2/info.json
index e0b5dc7d1a..ea712b78d8 100644
--- a/keyboards/xelus/pachi/rgb/rev2/info.json
+++ b/keyboards/xelus/pachi/rgb/rev2/info.json
@@ -9,7 +9,54 @@
"device_version": "0.0.2"
},
"rgb_matrix": {
- "driver": "custom"
+ "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,
+ "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
+ },
+ "default": {
+ "animation": "cycle_all",
+ "val": 80
+ },
+ "driver": "custom",
+ "sleep": true
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A10", "A9"],
diff --git a/keyboards/xelus/valor/rev2/config.h b/keyboards/xelus/valor/rev2/config.h
index 9a0146172d..f601945a15 100644
--- a/keyboards/xelus/valor/rev2/config.h
+++ b/keyboards/xelus/valor/rev2/config.h
@@ -36,10 +36,6 @@
// I2C EEPROM
#define EEPROM_I2C_24LC64
-/* RGB Matrix */
-#define RGB_MATRIX_LED_COUNT 28
-#define NOP_FUDGE 0.4
-
// RGB PWM
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 2
@@ -52,57 +48,4 @@
#define WS2812_EXTERNAL_PULLUP
// RGB Matrix settings
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CUSTOM_test_mode
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/xelus/valor/rev2/info.json b/keyboards/xelus/valor/rev2/info.json
index c082afbca2..196c1ad1c4 100644
--- a/keyboards/xelus/valor/rev2/info.json
+++ b/keyboards/xelus/valor/rev2/info.json
@@ -13,7 +13,54 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 200,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B2", "B1", "B0", "A7", "A6", "A5", "A4", "A13", "B7", "B6", "B5", "B4", "B3", "A15", "A14"],
diff --git a/keyboards/yandrstudio/nz64/config.h b/keyboards/yandrstudio/nz64/config.h
index 4aa37c5f20..81b549b60d 100644
--- a/keyboards/yandrstudio/nz64/config.h
+++ b/keyboards/yandrstudio/nz64/config.h
@@ -15,76 +15,8 @@
*/
#pragma once
-/* RGB Matrix */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 82
-
-# define WS2812_PWM_DRIVER PWMD3 // default: PWMD2
-# define WS2812_PWM_CHANNEL 2 // default: 2
-# define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
-# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-# define WS2812_DMA_CHANNEL 5 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-
-
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
-# define RGB_DISABLE_WHEN_USB_SUSPENDED true
-# define RGB_MATRIX_CENTER { 96, 32 }
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-/* enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined */
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#endif
-
-
-#ifdef RGBLIGHT_ENABLE
-# define WS2812_PWM_DRIVER PWMD3 // default: PWMD2
-# define WS2812_PWM_CHANNEL 2 // default: 2
-# define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
-# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-# define WS2812_DMA_CHANNEL 5 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-#endif
+#define WS2812_PWM_DRIVER PWMD3 // default: PWMD2
+#define WS2812_PWM_CHANNEL 2 // default: 2
+#define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#define WS2812_DMA_CHANNEL 5 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
diff --git a/keyboards/yandrstudio/nz64/info.json b/keyboards/yandrstudio/nz64/info.json
index 1ac32fe9a4..27515bebbc 100644
--- a/keyboards/yandrstudio/nz64/info.json
+++ b/keyboards/yandrstudio/nz64/info.json
@@ -12,7 +12,55 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "center_point": [96, 32],
+ "driver": "ws2812",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["A15", "B3", "B4", "B6", "B7", "B5", "C13", "A5", "A4", "B14", "B15", "A8", "A9", "A10"],
diff --git a/keyboards/yandrstudio/nz67v2/config.h b/keyboards/yandrstudio/nz67v2/config.h
index dba2f77395..7ecdfeafcf 100644
--- a/keyboards/yandrstudio/nz67v2/config.h
+++ b/keyboards/yandrstudio/nz67v2/config.h
@@ -16,65 +16,7 @@
#pragma once
-/* RGB Matrix */
-#ifdef RGB_MATRIX_ENABLE
-
-# define RGB_MATRIX_LED_COUNT 86
-
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-/* enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined */
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# define WS2812_PWM_DRIVER PWMD3 // default: PWMD2
-# define WS2812_PWM_CHANNEL 2 // default: 2
-# define WS2812_DMA_STREAM STM32_DMA1_STREAM3 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-# define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
-
-#endif
+#define WS2812_PWM_DRIVER PWMD3 // default: PWMD2
+#define WS2812_PWM_CHANNEL 2 // default: 2
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
diff --git a/keyboards/yandrstudio/nz67v2/info.json b/keyboards/yandrstudio/nz67v2/info.json
index 3cd784934a..372330eb68 100644
--- a/keyboards/yandrstudio/nz67v2/info.json
+++ b/keyboards/yandrstudio/nz67v2/info.json
@@ -11,7 +11,54 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 180,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B9", "A3", "A4", "A5", "A6", "A7", "B0", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8"],
diff --git a/keyboards/yandrstudio/tg67/config.h b/keyboards/yandrstudio/tg67/config.h
index 3386838c74..686696be7d 100644
--- a/keyboards/yandrstudio/tg67/config.h
+++ b/keyboards/yandrstudio/tg67/config.h
@@ -15,67 +15,8 @@
*/
#pragma once
-/* RGB Matrix */
-#ifdef RGB_MATRIX_ENABLE
-
-# define RGB_MATRIX_LED_COUNT 69
-
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 250
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-
-# define WS2812_PWM_DRIVER PWMD3
-# define WS2812_PWM_CHANNEL 2
-# define WS2812_PWM_PAL_MODE 2
-# define WS2812_DMA_STREAM STM32_DMA1_STREAM3
-# define WS2812_DMA_CHANNEL 3
-
-#endif
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 2
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+#define WS2812_DMA_CHANNEL 3
diff --git a/keyboards/yandrstudio/tg67/info.json b/keyboards/yandrstudio/tg67/info.json
index a82f58300b..0e4a0f6243 100644
--- a/keyboards/yandrstudio/tg67/info.json
+++ b/keyboards/yandrstudio/tg67/info.json
@@ -11,7 +11,54 @@
"driver": "pwm"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 250,
+ "sleep": true
},
"matrix_pins": {
"cols": ["B2", "B10", "B11", "A8", "A9", "A10", "B5", "A15", "B3", "A2", "A3", "B4", "A4", "A5", "A6"],
diff --git a/keyboards/ydkb/grape/config.h b/keyboards/ydkb/grape/config.h
index c0bea85aba..a835243d58 100644
--- a/keyboards/ydkb/grape/config.h
+++ b/keyboards/ydkb/grape/config.h
@@ -28,5 +28,3 @@
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/ydkb/grape/info.json b/keyboards/ydkb/grape/info.json
index 32c9914bdb..75aa8fffaf 100644
--- a/keyboards/ydkb/grape/info.json
+++ b/keyboards/ydkb/grape/info.json
@@ -12,6 +12,9 @@
"pin": "B7",
"breathing": true
},
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
"rgblight": {
"led_count": 4
},
diff --git a/keyboards/yiancardesigns/barleycorn/matrix.c b/keyboards/yiancardesigns/barleycorn/matrix.c
index 99366d6098..9ef2926566 100644
--- a/keyboards/yiancardesigns/barleycorn/matrix.c
+++ b/keyboards/yiancardesigns/barleycorn/matrix.c
@@ -42,9 +42,9 @@ static void init_pins(void) {
unselect_rows();
// Set I/O
uint8_t send_data[2] = { 0xFF, 0x03};
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data[0], 2, 20);
// Set Pull-up
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x0C, &send_data[0], 2, 20);
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if ( x < 8 ) {
@@ -75,7 +75,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
matrix_io_delay();
uint8_t port_expander_col_buffer[2];
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x12, &port_expander_col_buffer[0], 2, 20);
// For each col...
for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
diff --git a/keyboards/yiancardesigns/gingham/gingham.c b/keyboards/yiancardesigns/gingham/gingham.c
index 496ae35705..f34d4d7cfd 100644
--- a/keyboards/yiancardesigns/gingham/gingham.c
+++ b/keyboards/yiancardesigns/gingham/gingham.c
@@ -22,7 +22,7 @@ void matrix_init_kb(void) {
// Due to the way the port expander is setup both LEDs are already outputs. This is set n matrix.copy
//Turn the red LED on as power indicator.
send_data = 0x10;
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &send_data, 1, 20);
matrix_init_user();
}
@@ -31,7 +31,7 @@ bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
send_data = led_state.caps_lock ? 0x18 : 0x10;
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &send_data, 1, 20);
}
return res;
}
diff --git a/keyboards/yiancardesigns/gingham/matrix.c b/keyboards/yiancardesigns/gingham/matrix.c
index 47c8830565..d17518b494 100644
--- a/keyboards/yiancardesigns/gingham/matrix.c
+++ b/keyboards/yiancardesigns/gingham/matrix.c
@@ -42,9 +42,9 @@ static void init_pins(void) {
unselect_rows();
// Set I/O
uint8_t send_data = 0x07;
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20);
// Set Pull-up
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20);
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if ( (x > 0) && (x < 12) ) {
@@ -80,15 +80,15 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
// Select the col pin to read (active low)
switch (col_index) {
case 0 :
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &pin_state, 1, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &pin_state, 1, 20);
pin_state = pin_state & 0x01;
break;
case 12 :
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &pin_state, 1, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &pin_state, 1, 20);
pin_state = pin_state & (1 << 2);
break;
case 13 :
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &pin_state, 1, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &pin_state, 1, 20);
pin_state = pin_state & (1 << 1);
break;
default :
diff --git a/keyboards/yiancardesigns/seigaiha/matrix.c b/keyboards/yiancardesigns/seigaiha/matrix.c
index 212b8015f0..55ee239db4 100644
--- a/keyboards/yiancardesigns/seigaiha/matrix.c
+++ b/keyboards/yiancardesigns/seigaiha/matrix.c
@@ -42,9 +42,9 @@ static void init_pins(void) {
unselect_rows();
// Set I/O
uint8_t send_data = 0x1F;
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20);
// Set Pull-up
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20);
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if ( x < 10 ) {
@@ -75,7 +75,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
matrix_io_delay();
uint8_t port_expander_col_buffer;
- i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &port_expander_col_buffer, 1, 20);
+ i2c_read_register((PORT_EXPANDER_ADDRESS << 1), 0x09, &port_expander_col_buffer, 1, 20);
// For each col...
for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
diff --git a/keyboards/yiancardesigns/seigaiha/seigaiha.c b/keyboards/yiancardesigns/seigaiha/seigaiha.c
index 7a39637b91..03d420f053 100644
--- a/keyboards/yiancardesigns/seigaiha/seigaiha.c
+++ b/keyboards/yiancardesigns/seigaiha/seigaiha.c
@@ -26,7 +26,7 @@ void led_update_ports(led_t led_state) {
} else {
send_data &= ~(1 << 5);
}
- i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x0A, &send_data, 1, 20);
+ i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x0A, &send_data, 1, 20);
}
__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
diff --git a/keyboards/ymdk/id75/config.h b/keyboards/ymdk/id75/config.h
index ed0d3f9539..14ed1d644c 100644
--- a/keyboards/ymdk/id75/config.h
+++ b/keyboards/ymdk/id75/config.h
@@ -16,13 +16,6 @@
#pragma once
-#define RGB_MATRIX_LED_COUNT 89
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
#define WS2812_PWM_DRIVER PWMD4
#define WS2812_PWM_CHANNEL 4
#define WS2812_PWM_PAL_MODE 2
diff --git a/keyboards/ymdk/id75/info.json b/keyboards/ymdk/id75/info.json
index e30afaf717..76bed29efb 100644
--- a/keyboards/ymdk/id75/info.json
+++ b/keyboards/ymdk/id75/info.json
@@ -158,7 +158,8 @@
{"flags": 2, "x": 190, "y": 0},
{"flags": 2, "x": 224, "y": 0}
],
- "max_brightness": 128
+ "max_brightness": 128,
+ "sleep": true
},
"usb": {
"device_version": "0.0.1",
diff --git a/keyboards/ymdk/sp64/matrix.c b/keyboards/ymdk/sp64/matrix.c
index b5f0e10462..6f8c7962eb 100644
--- a/keyboards/ymdk/sp64/matrix.c
+++ b/keyboards/ymdk/sp64/matrix.c
@@ -114,7 +114,7 @@ uint8_t matrix_scan(void)
#ifdef RIGHT_HALF
uint8_t data = 0x7F;
// Receive the columns from right half
- i2c_receive(I2C_ADDR_WRITE, &data, 1, MCP23018_I2C_TIMEOUT);
+ i2c_receive(I2C_ADDR, &data, 1, MCP23018_I2C_TIMEOUT);
cols |= ((~(data) & 0x7F) << 7);
#endif
@@ -162,7 +162,7 @@ static void matrix_select_row(uint8_t row)
//Set the remote row on port A
txdata[0] = GPIOA;
txdata[1] = 0xFF & ~(1<<row);
- mcp23018_status = i2c_transmit(I2C_ADDR_WRITE, (uint8_t *)txdata, 2, MCP23018_I2C_TIMEOUT);
+ mcp23018_status = i2c_transmit(I2C_ADDR, (uint8_t *)txdata, 2, MCP23018_I2C_TIMEOUT);
#endif
// select other half
diff --git a/keyboards/ymdk/sp64/sp64.c b/keyboards/ymdk/sp64/sp64.c
index 12f2577713..e9f30d91f9 100644
--- a/keyboards/ymdk/sp64/sp64.c
+++ b/keyboards/ymdk/sp64/sp64.c
@@ -39,7 +39,7 @@ uint8_t init_mcp23018(void)
data[0] = IODIRA;
data[1] = 0b00000000;
data[2] = 0b11111111;
- mcp23018_status = i2c_transmit(I2C_ADDR_WRITE, (uint8_t *)data, 3, MCP23018_I2C_TIMEOUT);
+ mcp23018_status = i2c_transmit(I2C_ADDR, (uint8_t *)data, 3, MCP23018_I2C_TIMEOUT);
if (mcp23018_status != I2C_STATUS_SUCCESS)
goto out;
@@ -50,7 +50,7 @@ uint8_t init_mcp23018(void)
data[0] = GPPUA;
data[1] = 0b00000000;
data[2] = 0b11111111;
- mcp23018_status = i2c_transmit(I2C_ADDR_WRITE, (uint8_t *)data, 3, MCP23018_I2C_TIMEOUT);
+ mcp23018_status = i2c_transmit(I2C_ADDR, (uint8_t *)data, 3, MCP23018_I2C_TIMEOUT);
if (mcp23018_status != I2C_STATUS_SUCCESS)
goto out;
@@ -61,7 +61,7 @@ uint8_t init_mcp23018(void)
data[0] = OLATA;
data[1] = 0b11111111;
data[2] = 0b11111111;
- mcp23018_status = i2c_transmit(I2C_ADDR_WRITE, (uint8_t *)data, 3, MCP23018_I2C_TIMEOUT);
+ mcp23018_status = i2c_transmit(I2C_ADDR, (uint8_t *)data, 3, MCP23018_I2C_TIMEOUT);
out:
return (mcp23018_status);
diff --git a/keyboards/ymdk/sp64/sp64.h b/keyboards/ymdk/sp64/sp64.h
index afad36ee9a..0e3e3c38b8 100644
--- a/keyboards/ymdk/sp64/sp64.h
+++ b/keyboards/ymdk/sp64/sp64.h
@@ -23,9 +23,7 @@
# include "i2c_master.h"
// I2C aliases and register addresses (see "mcp23018.md")
-# define I2C_ADDR 0b0100000
-# define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
-# define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+# define I2C_ADDR (0b0100000<<1)
# define IODIRA 0x00 // i/o direction register
# define IODIRB 0x01
# define GPPUA 0x0C // GPIO pull-up resistor register
diff --git a/keyboards/ymdk/ymd09/config.h b/keyboards/ymdk/ymd09/config.h
index b66c41ad69..8d59b7832f 100644
--- a/keyboards/ymdk/ymd09/config.h
+++ b/keyboards/ymdk/ymd09/config.h
@@ -18,59 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define RGB_MATRIX_LED_COUNT 9
-
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-//#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-//#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-//#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-//#define ENABLE_RGB_MATRIX_BAND_SAT
-//#define ENABLE_RGB_MATRIX_BAND_VAL
-//#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-//#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-//#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-//#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-//#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-//#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/ymdk/ymd09/info.json b/keyboards/ymdk/ymd09/info.json
index 11552ae5b2..52dc9d3160 100644
--- a/keyboards/ymdk/ymd09/info.json
+++ b/keyboards/ymdk/ymd09/info.json
@@ -46,6 +46,40 @@
}
},
"rgb_matrix": {
+ "animations": {
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "rainbow_moving_chevron": true,
+ "cycle_out_in": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "dual_beacon": true,
+ "rainbow_beacon": 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": [
{"flags": 4, "matrix": [0, 2], "x": 64, "y": 0}, //7
@@ -58,6 +92,7 @@
{"flags": 4, "matrix": [2, 1], "x": 32, "y": 64}, //2
{"flags": 4, "matrix": [2, 0], "x": 0, "y": 64} //3
],
- "center_point": [32, 32]
+ "center_point": [32, 32],
+ "sleep": true
}
}
diff --git a/keyboards/ymdk/ymd40/air40/config.h b/keyboards/ymdk/ymd40/air40/config.h
deleted file mode 100644
index 2f64f97d93..0000000000
--- a/keyboards/ymdk/ymd40/air40/config.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2021 Dennis Kruyt (dennis@kruyt.org)
- *
- * 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 RGB_MATRIX_LED_COUNT 51
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130 // Limit to vendor-recommended value
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif \ No newline at end of file
diff --git a/keyboards/ymdk/ymd40/air40/info.json b/keyboards/ymdk/ymd40/air40/info.json
index daf104ebfe..4e791c87c4 100644
--- a/keyboards/ymdk/ymd40/air40/info.json
+++ b/keyboards/ymdk/ymd40/air40/info.json
@@ -9,7 +9,54 @@
"device_version": "0.0.1"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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",
+ "max_brightness": 130,
+ "sleep": true
},
"matrix_pins": {
"cols": ["F1", "F0", "B0", "C7", "F4", "F5", "F6", "F7", "D4", "D6", "B4", "D7"],
diff --git a/keyboards/ymdk/ymd75/rev4/iso/config.h b/keyboards/ymdk/ymd75/rev4/iso/config.h
index 317c0ec236..58c4b34d61 100644
--- a/keyboards/ymdk/ymd75/rev4/iso/config.h
+++ b/keyboards/ymdk/ymd75/rev4/iso/config.h
@@ -2,8 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
#define WS2812_PWM_DRIVER PWMD4
#define WS2812_PWM_CHANNEL 4
#define WS2812_PWM_PAL_MODE 2
diff --git a/keyboards/ymdk/ymd75/rev4/iso/info.json b/keyboards/ymdk/ymd75/rev4/iso/info.json
index d7e27dbdeb..180c68beaa 100644
--- a/keyboards/ymdk/ymd75/rev4/iso/info.json
+++ b/keyboards/ymdk/ymd75/rev4/iso/info.json
@@ -179,7 +179,8 @@
{ "flags": 2, "x": 38, "y": 60 },
{ "flags": 2, "x": 1, "y": 60 },
{ "flags": 2, "x": 1, "y": 32 }
- ]
+ ],
+ "sleep": true
},
"community_layouts": ["75_iso"],
"layouts": {
diff --git a/keyboards/yncognito/batpad/config.h b/keyboards/yncognito/batpad/config.h
deleted file mode 100644
index d44817cae9..0000000000
--- a/keyboards/yncognito/batpad/config.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright 2020 Yncognito
-
-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 RGB_MATRIX_LED_COUNT 8
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_KEYRELEASES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// #define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGB_MATRIX_LED_FLUSH_LIMIT 16
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/yncognito/batpad/info.json b/keyboards/yncognito/batpad/info.json
index 4ec1dc045f..0335608cfb 100644
--- a/keyboards/yncognito/batpad/info.json
+++ b/keyboards/yncognito/batpad/info.json
@@ -12,7 +12,56 @@
"pin": "B5"
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "default": {
+ "animation": "cycle_all"
+ },
+ "driver": "ws2812",
+ "react_on_keyup": true
},
"matrix_pins": {
"cols": ["F1", "F0", "D5", "D3"],
diff --git a/keyboards/yoichiro/lunakey_macro/config.h b/keyboards/yoichiro/lunakey_macro/config.h
index 4c3ced2c42..78ba8a377c 100644
--- a/keyboards/yoichiro/lunakey_macro/config.h
+++ b/keyboards/yoichiro/lunakey_macro/config.h
@@ -27,9 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Mouse Keys Combined mode */
//#define MK_COMBINED
-/* Layer Count */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/yosino58/keymaps/default/config.h b/keyboards/yosino58/keymaps/default/config.h
index 763b31aa10..e82254fff1 100644
--- a/keyboards/yosino58/keymaps/default/config.h
+++ b/keyboards/yosino58/keymaps/default/config.h
@@ -29,7 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define QUICK_TAP_TERM 0
#define TAPPING_TERM 100
-#undef RGBLED_NUM
+#undef RGBLIGHT_LED_COUNT
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -40,7 +40,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 12
+#define RGBLIGHT_LED_COUNT 12
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
diff --git a/keyboards/yushakobo/quick17/config.h b/keyboards/yushakobo/quick17/config.h
index 1d3b4dd3ee..82b19956dc 100644
--- a/keyboards/yushakobo/quick17/config.h
+++ b/keyboards/yushakobo/quick17/config.h
@@ -17,18 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_LED_COUNT 18
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-// HSV_TEAL
-#endif
-
#define RGBLIGHT_LAYERS
#define RGBLIGHT_MAX_LAYERS 8
diff --git a/keyboards/yushakobo/quick17/info.json b/keyboards/yushakobo/quick17/info.json
index 58374a7de7..51c41a6e82 100644
--- a/keyboards/yushakobo/quick17/info.json
+++ b/keyboards/yushakobo/quick17/info.json
@@ -10,7 +10,9 @@
},
"rgb_matrix": {
"driver": "ws2812",
+ "max_brightness": 150,
"sat_steps": 8,
+ "sleep": true,
"val_steps": 8,
"speed_steps": 10
},
diff --git a/keyboards/z12/config.h b/keyboards/zigotica/z12/config.h
index fef7fb59bd..fef7fb59bd 100644
--- a/keyboards/z12/config.h
+++ b/keyboards/zigotica/z12/config.h
diff --git a/keyboards/z12/info.json b/keyboards/zigotica/z12/info.json
index 8a88206df8..8a88206df8 100644
--- a/keyboards/z12/info.json
+++ b/keyboards/zigotica/z12/info.json
diff --git a/keyboards/z12/keymaps/default/config.h b/keyboards/zigotica/z12/keymaps/default/config.h
index 1fcf924f35..1fcf924f35 100644
--- a/keyboards/z12/keymaps/default/config.h
+++ b/keyboards/zigotica/z12/keymaps/default/config.h
diff --git a/keyboards/z12/keymaps/default/keymap.c b/keyboards/zigotica/z12/keymaps/default/keymap.c
index 16a6c1f70e..16a6c1f70e 100644
--- a/keyboards/z12/keymaps/default/keymap.c
+++ b/keyboards/zigotica/z12/keymaps/default/keymap.c
diff --git a/keyboards/z12/keymaps/default/readme.md b/keyboards/zigotica/z12/keymaps/default/readme.md
index 5f30ab6a39..5f30ab6a39 100644
--- a/keyboards/z12/keymaps/default/readme.md
+++ b/keyboards/zigotica/z12/keymaps/default/readme.md
diff --git a/keyboards/z12/keymaps/default/rules.mk b/keyboards/zigotica/z12/keymaps/default/rules.mk
index b220469c6c..b220469c6c 100644
--- a/keyboards/z12/keymaps/default/rules.mk
+++ b/keyboards/zigotica/z12/keymaps/default/rules.mk
diff --git a/keyboards/z12/readme.md b/keyboards/zigotica/z12/readme.md
index 17e4bfdb84..17e4bfdb84 100644
--- a/keyboards/z12/readme.md
+++ b/keyboards/zigotica/z12/readme.md
diff --git a/keyboards/z12/rules.mk b/keyboards/zigotica/z12/rules.mk
index 102b2e62a3..102b2e62a3 100644
--- a/keyboards/z12/rules.mk
+++ b/keyboards/zigotica/z12/rules.mk
diff --git a/keyboards/z34/config.h b/keyboards/zigotica/z34/config.h
index d2ec68cc39..d2ec68cc39 100644
--- a/keyboards/z34/config.h
+++ b/keyboards/zigotica/z34/config.h
diff --git a/keyboards/z34/info.json b/keyboards/zigotica/z34/info.json
index e82a6dd304..e82a6dd304 100644
--- a/keyboards/z34/info.json
+++ b/keyboards/zigotica/z34/info.json
diff --git a/keyboards/z34/keymaps/default/config.h b/keyboards/zigotica/z34/keymaps/default/config.h
index 2bcd017d72..2bcd017d72 100644
--- a/keyboards/z34/keymaps/default/config.h
+++ b/keyboards/zigotica/z34/keymaps/default/config.h
diff --git a/keyboards/z34/keymaps/default/keymap.c b/keyboards/zigotica/z34/keymaps/default/keymap.c
index 973d24eafb..973d24eafb 100644
--- a/keyboards/z34/keymaps/default/keymap.c
+++ b/keyboards/zigotica/z34/keymaps/default/keymap.c
diff --git a/keyboards/z34/keymaps/default/readme.md b/keyboards/zigotica/z34/keymaps/default/readme.md
index c6a0115573..c6a0115573 100644
--- a/keyboards/z34/keymaps/default/readme.md
+++ b/keyboards/zigotica/z34/keymaps/default/readme.md
diff --git a/keyboards/z34/keymaps/default/rules.mk b/keyboards/zigotica/z34/keymaps/default/rules.mk
index 827811a362..827811a362 100644
--- a/keyboards/z34/keymaps/default/rules.mk
+++ b/keyboards/zigotica/z34/keymaps/default/rules.mk
diff --git a/keyboards/z34/readme.md b/keyboards/zigotica/z34/readme.md
index 29bbf571a3..29bbf571a3 100644
--- a/keyboards/z34/readme.md
+++ b/keyboards/zigotica/z34/readme.md
diff --git a/keyboards/z34/rules.mk b/keyboards/zigotica/z34/rules.mk
index 669d2bc02f..669d2bc02f 100644
--- a/keyboards/z34/rules.mk
+++ b/keyboards/zigotica/z34/rules.mk
diff --git a/keyboards/zsa/moonlander/config.h b/keyboards/zsa/moonlander/config.h
new file mode 100644
index 0000000000..9fbb7a64b5
--- /dev/null
+++ b/keyboards/zsa/moonlander/config.h
@@ -0,0 +1,87 @@
+/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
+ * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
+ * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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
+
+
+#define WEBUSB_LANDING_PAGE_URL u8"configure.ergodox-ez.com"
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+/* PCB default pin-out */
+// #define MATRIX_ROW_PINS { B10, B11, B12, B13, B14, B15 }
+// #define MATRIX_COL_PINS { A0, A1, A2, A3, A6, A7, B0 }
+
+// #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 }
+// #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 }
+
+// #define MCP23_LED_R GPB7
+// #define MCP23_LED_G GPB6
+// #define MCP23_LED_B GPA7
+
+#define EEPROM_I2C_24LC128
+
+// Not needed, is default address:
+// #define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100000
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* 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
+
+#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
+#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 400
+#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL
+#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
+
+#define MUSIC_MAP
+
+#define FIRMWARE_VERSION_SIZE 17
+#define DYNAMIC_KEYMAP_EEPROM_ADDR (EECONFIG_SIZE + FIRMWARE_VERSION_SIZE)
+
+#define AUDIO_PIN A5
+#define AUDIO_PIN_ALT A4
+#define AUDIO_PIN_ALT_AS_NEGATIVE
diff --git a/keyboards/moonlander/halconf.h b/keyboards/zsa/moonlander/halconf.h
index 46b53b1a7f..46b53b1a7f 100644
--- a/keyboards/moonlander/halconf.h
+++ b/keyboards/zsa/moonlander/halconf.h
diff --git a/keyboards/zsa/moonlander/info.json b/keyboards/zsa/moonlander/info.json
new file mode 100644
index 0000000000..31d6693e39
--- /dev/null
+++ b/keyboards/zsa/moonlander/info.json
@@ -0,0 +1,162 @@
+{
+ "keyboard_name": "Moonlander Mark I",
+ "manufacturer": "ZSA Technology Labs",
+ "url": "zsa.io/moonlander",
+ "maintainer": "ZSA via Drashna",
+ "usb": {
+ "vid": "0x3297",
+ "pid": "0x1969",
+ "device_version": "0.0.1"
+ },
+ "dynamic_keymap": {
+ "layer_count": 8
+ },
+ "eeprom": {
+ "driver": "i2c"
+ },
+ "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
+ },
+ "center_point": [120, 36],
+ "driver": "is31fl3731",
+ "max_brightness": 175,
+ "sleep": true
+ },
+ "processor": "STM32F303",
+ "bootloader": "stm32-dfu",
+ "layout_aliases": {
+ "LAYOUT_moonlander": "LAYOUT"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0.375},
+ {"matrix": [0, 1], "x": 1, "y": 0.375},
+ {"matrix": [0, 2], "x": 2, "y": 0.125},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0.125},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+
+ {"matrix": [6, 0], "x": 10, "y": 0.25},
+ {"matrix": [6, 1], "x": 11, "y": 0.25},
+ {"matrix": [6, 2], "x": 12, "y": 0.125},
+ {"matrix": [6, 3], "x": 13, "y": 0},
+ {"matrix": [6, 4], "x": 14, "y": 0.125},
+ {"matrix": [6, 5], "x": 15, "y": 0.375},
+ {"matrix": [6, 6], "x": 16, "y": 0.375},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.375},
+ {"matrix": [1, 1], "x": 1, "y": 1.375},
+ {"matrix": [1, 2], "x": 2, "y": 1.125},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1.125},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+
+ {"matrix": [7, 0], "x": 10, "y": 1.25},
+ {"matrix": [7, 1], "x": 11, "y": 1.25},
+ {"matrix": [7, 2], "x": 12, "y": 1.125},
+ {"matrix": [7, 3], "x": 13, "y": 1},
+ {"matrix": [7, 4], "x": 14, "y": 1.125},
+ {"matrix": [7, 5], "x": 15, "y": 1.375},
+ {"matrix": [7, 6], "x": 16, "y": 1.375},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.375},
+ {"matrix": [2, 1], "x": 1, "y": 2.375},
+ {"matrix": [2, 2], "x": 2, "y": 2.125},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2.125},
+ {"matrix": [2, 5], "x": 5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6, "y": 2.25},
+
+ {"matrix": [8, 0], "x": 10, "y": 2.25},
+ {"matrix": [8, 1], "x": 11, "y": 2.25},
+ {"matrix": [8, 2], "x": 12, "y": 2.125},
+ {"matrix": [8, 3], "x": 13, "y": 2},
+ {"matrix": [8, 4], "x": 14, "y": 2.125},
+ {"matrix": [8, 5], "x": 15, "y": 2.375},
+ {"matrix": [8, 6], "x": 16, "y": 2.375},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.375},
+ {"matrix": [3, 1], "x": 1, "y": 3.375},
+ {"matrix": [3, 2], "x": 2, "y": 3.125},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+ {"matrix": [3, 4], "x": 4, "y": 3.125},
+ {"matrix": [3, 5], "x": 5, "y": 3.25},
+
+ {"matrix": [9, 1], "x": 11, "y": 3.25},
+ {"matrix": [9, 2], "x": 12, "y": 3.125},
+ {"matrix": [9, 3], "x": 13, "y": 3},
+ {"matrix": [9, 4], "x": 14, "y": 3.125},
+ {"matrix": [9, 5], "x": 15, "y": 3.375},
+ {"matrix": [9, 6], "x": 16, "y": 3.375},
+
+ {"matrix": [4, 0], "x": 0, "y": 4.375},
+ {"matrix": [4, 1], "x": 1, "y": 4.375},
+ {"matrix": [4, 2], "x": 2, "y": 4.125},
+ {"matrix": [4, 3], "x": 3, "y": 4},
+ {"matrix": [4, 4], "x": 4, "y": 4.125},
+ {"matrix": [5, 3], "x": 5, "y": 4.5, "w": 2},
+
+ {"matrix": [11, 3], "x": 10, "y": 4.5, "w": 2},
+ {"matrix": [10, 2], "x": 12, "y": 4.125},
+ {"matrix": [10, 3], "x": 13, "y": 4},
+ {"matrix": [10, 4], "x": 14, "y": 4.125},
+ {"matrix": [10, 5], "x": 15, "y": 4.375},
+ {"matrix": [10, 6], "x": 16, "y": 4.375},
+
+ {"matrix": [5, 0], "x": 5, "y": 5.5, "h": 1.5},
+ {"matrix": [5, 1], "x": 6, "y": 5.5, "h": 1.5},
+ {"matrix": [5, 2], "x": 7, "y": 5.5, "h": 1.5},
+
+ {"matrix": [11, 4], "x": 9, "y": 5.5, "h": 1.5},
+ {"matrix": [11, 5], "x": 10, "y": 5.5, "h": 1.5},
+ {"matrix": [11, 6], "x": 11, "y": 5.5, "h": 1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/moonlander/keymaps/default/config.h b/keyboards/zsa/moonlander/keymaps/default/config.h
index 83ea2a1b58..83ea2a1b58 100644
--- a/keyboards/moonlander/keymaps/default/config.h
+++ b/keyboards/zsa/moonlander/keymaps/default/config.h
diff --git a/keyboards/moonlander/keymaps/default/keymap.c b/keyboards/zsa/moonlander/keymaps/default/keymap.c
index ad7705eff8..ad7705eff8 100644
--- a/keyboards/moonlander/keymaps/default/keymap.c
+++ b/keyboards/zsa/moonlander/keymaps/default/keymap.c
diff --git a/keyboards/moonlander/keymaps/via/keymap.c b/keyboards/zsa/moonlander/keymaps/via/keymap.c
index 4b1e4c83e7..4b1e4c83e7 100644
--- a/keyboards/moonlander/keymaps/via/keymap.c
+++ b/keyboards/zsa/moonlander/keymaps/via/keymap.c
diff --git a/keyboards/moonlander/keymaps/via/readme.md b/keyboards/zsa/moonlander/keymaps/via/readme.md
index 8bede7bee3..8bede7bee3 100644
--- a/keyboards/moonlander/keymaps/via/readme.md
+++ b/keyboards/zsa/moonlander/keymaps/via/readme.md
diff --git a/keyboards/zsa/moonlander/keymaps/via/rules.mk b/keyboards/zsa/moonlander/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/zsa/moonlander/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/zsa/moonlander/matrix.c b/keyboards/zsa/moonlander/matrix.c
new file mode 100644
index 0000000000..aa97d0721f
--- /dev/null
+++ b/keyboards/zsa/moonlander/matrix.c
@@ -0,0 +1,233 @@
+/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
+ * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
+ * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
+*/
+
+#include "moonlander.h"
+#include "i2c_master.h"
+
+/*
+#define MATRIX_ROW_PINS { B10, B11, B12, B13, B14, B15 } outputs
+#define MATRIX_COL_PINS { A0, A1, A2, A3, A6, A7, B0 } inputs
+ */
+/* matrix state(1:on, 0:off) */
+extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
+extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
+static matrix_row_t raw_matrix_right[MATRIX_COLS];
+
+#define ROWS_PER_HAND (MATRIX_ROWS / 2)
+#ifndef MOONLANDER_I2C_TIMEOUT
+# define MOONLANDER_I2C_TIMEOUT 100
+#endif
+
+extern bool mcp23018_leds[3];
+extern bool is_launching;
+
+bool mcp23018_initd = false;
+static uint8_t mcp23018_reset_loop;
+
+uint8_t mcp23018_tx[3];
+uint8_t mcp23018_rx[1];
+
+void mcp23018_init(void) {
+ i2c_init();
+
+ // #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 } outputs
+ // #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 } inputs
+
+ mcp23018_tx[0] = 0x00; // IODIRA
+ mcp23018_tx[1] = 0b00000000; // A is output
+ mcp23018_tx[2] = 0b00111111; // B is inputs
+
+ if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) {
+ dprintf("error hori\n");
+ } else {
+ mcp23018_tx[0] = 0x0C; // GPPUA
+ mcp23018_tx[1] = 0b10000000; // A is not pulled-up
+ mcp23018_tx[2] = 0b11111111; // B is pulled-up
+
+ if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) {
+ dprintf("error hori\n");
+ } else {
+ mcp23018_initd = is_launching = true;
+ }
+ }
+}
+
+void matrix_init_custom(void) {
+ dprintf("matrix init\n");
+ // debug_matrix = true;
+ // outputs
+ setPinOutput(B10);
+ setPinOutput(B11);
+ setPinOutput(B12);
+ setPinOutput(B13);
+ setPinOutput(B14);
+ setPinOutput(B15);
+
+ // inputs
+ setPinInputLow(A0);
+ setPinInputLow(A1);
+ setPinInputLow(A2);
+ setPinInputLow(A3);
+ setPinInputLow(A6);
+ setPinInputLow(A7);
+ setPinInputLow(B0);
+
+ mcp23018_init();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool changed = false;
+
+ // Try to re-init right side
+ if (!mcp23018_initd) {
+ if (++mcp23018_reset_loop == 0) {
+ // if (++mcp23018_reset_loop >= 1300) {
+ // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
+ // this will be approx bit more frequent than once per second
+ print("trying to reset mcp23018\n");
+ mcp23018_init();
+ if (!mcp23018_initd) {
+ print("right side not responding\n");
+ } else {
+ print("right side attached\n");
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_init();
+#endif
+ }
+ }
+ }
+
+ matrix_row_t data = 0;
+ // actual matrix
+ for (uint8_t row = 0; row <= ROWS_PER_HAND; row++) {
+ // strobe row
+ switch (row) {
+ case 0: writePinHigh(B10); break;
+ case 1: writePinHigh(B11); break;
+ case 2: writePinHigh(B12); break;
+ case 3: writePinHigh(B13); break;
+ case 4: writePinHigh(B14); break;
+ case 5: writePinHigh(B15); break;
+ case 6: break; // Left hand has 6 rows
+ }
+
+ // right side
+ if (mcp23018_initd) {
+ // #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 } outputs
+ // #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 } inputs
+
+ // select row
+ mcp23018_tx[0] = 0x12; // GPIOA
+ mcp23018_tx[1] = (0b01111111 & ~(1 << (row))) | ((uint8_t)!mcp23018_leds[2] << 7); // activate row
+ mcp23018_tx[2] = ((uint8_t)!mcp23018_leds[1] << 6) | ((uint8_t)!mcp23018_leds[0] << 7); // activate row
+
+ if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) {
+ dprintf("error hori\n");
+ mcp23018_initd = false;
+ }
+
+ // read col
+
+ mcp23018_tx[0] = 0x13; // GPIOB
+ if (MSG_OK != i2c_read_register(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx[0], &mcp23018_rx[0], 1, MOONLANDER_I2C_TIMEOUT)) {
+ dprintf("error vert\n");
+ mcp23018_initd = false;
+ }
+
+ data = ~(mcp23018_rx[0] & 0b00111111);
+ // data = 0x01;
+ } else {
+ data = 0;
+ }
+
+ if (raw_matrix_right[row] != data) {
+ raw_matrix_right[row] = data;
+ changed = true;
+ }
+
+
+ // left side
+ if (row < ROWS_PER_HAND) {
+ // i2c comm incur enough wait time
+ if (!mcp23018_initd) {
+ // need wait to settle pin state
+ matrix_io_delay();
+ }
+ // read col data
+ data = (
+ (readPin(A0) << 0 ) |
+ (readPin(A1) << 1 ) |
+ (readPin(A2) << 2 ) |
+ (readPin(A3) << 3 ) |
+ (readPin(A6) << 4 ) |
+ (readPin(A7) << 5 ) |
+ (readPin(B0) << 6 )
+ );
+ // unstrobe row
+ switch (row) {
+ case 0: writePinLow(B10); break;
+ case 1: writePinLow(B11); break;
+ case 2: writePinLow(B12); break;
+ case 3: writePinLow(B13); break;
+ case 4: writePinLow(B14); break;
+ case 5: writePinLow(B15); break;
+ case 6: break;
+ }
+
+ if (current_matrix[row] != data) {
+ current_matrix[row] = data;
+ changed = true;
+ }
+ }
+ }
+ for (uint8_t row = 0; row < ROWS_PER_HAND; row++) {
+ current_matrix[11 - row] = 0;
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ current_matrix[11 - row] |= ((raw_matrix_right[6 - col] & (1 << row) ? 1 : 0) << col);
+ }
+ }
+ return changed;
+}
+
+// DO NOT REMOVE
+// Needed for proper wake/sleep
+void matrix_power_up(void) {
+ bool temp_launching = is_launching;
+
+ matrix_init_custom();
+
+ is_launching = temp_launching;
+ if (!is_launching) {
+ ML_LED_1(false);
+ ML_LED_2(false);
+ ML_LED_3(false);
+ ML_LED_4(false);
+ ML_LED_5(false);
+ ML_LED_6(false);
+ }
+
+ // initialize matrix state: all keys off
+ for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+ matrix[i] = 0;
+ }
+
+}
+
+bool is_transport_connected(void) {
+ return mcp23018_initd;
+} \ No newline at end of file
diff --git a/keyboards/moonlander/mcuconf.h b/keyboards/zsa/moonlander/mcuconf.h
index 032c853f4e..032c853f4e 100644
--- a/keyboards/moonlander/mcuconf.h
+++ b/keyboards/zsa/moonlander/mcuconf.h
diff --git a/keyboards/zsa/moonlander/moonlander.c b/keyboards/zsa/moonlander/moonlander.c
new file mode 100644
index 0000000000..dad795d315
--- /dev/null
+++ b/keyboards/zsa/moonlander/moonlander.c
@@ -0,0 +1,469 @@
+/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
+ * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
+ * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
+*/
+
+#include "moonlander.h"
+
+keyboard_config_t keyboard_config;
+
+bool mcp23018_leds[3] = {0, 0, 0};
+bool is_launching = false;
+
+#ifdef DYNAMIC_MACRO_ENABLE
+static bool is_dynamic_recording = false;
+
+void dynamic_macro_record_start_user(int8_t direction) { is_dynamic_recording = true; }
+
+void dynamic_macro_record_end_user(int8_t direction) {
+ is_dynamic_recording = false;
+ ML_LED_3(false);
+}
+#endif
+
+void moonlander_led_task(void) {
+ if (is_launching) {
+ ML_LED_1(false);
+ ML_LED_2(false);
+ ML_LED_3(false);
+ ML_LED_4(false);
+ ML_LED_5(false);
+ ML_LED_6(false);
+
+ ML_LED_1(true);
+ wait_ms(250);
+ ML_LED_2(true);
+ wait_ms(250);
+ ML_LED_3(true);
+ wait_ms(250);
+ ML_LED_4(true);
+ wait_ms(250);
+ ML_LED_5(true);
+ wait_ms(250);
+ ML_LED_6(true);
+ wait_ms(250);
+ ML_LED_1(false);
+ wait_ms(250);
+ ML_LED_2(false);
+ wait_ms(250);
+ ML_LED_3(false);
+ wait_ms(250);
+ ML_LED_4(false);
+ wait_ms(250);
+ ML_LED_5(false);
+ wait_ms(250);
+ ML_LED_6(false);
+ wait_ms(250);
+ is_launching = false;
+ layer_state_set_kb(layer_state);
+ }
+#ifdef DYNAMIC_MACRO_ENABLE
+ else if (is_dynamic_recording) {
+ ML_LED_3(true);
+ wait_ms(100);
+ ML_LED_3(false);
+ wait_ms(155);
+ }
+#endif
+#if !defined(MOONLANDER_USER_LEDS)
+ else {
+ layer_state_set_kb(layer_state);
+ }
+#endif
+}
+
+static THD_WORKING_AREA(waLEDThread, 128);
+static THD_FUNCTION(LEDThread, arg) {
+ (void)arg;
+ chRegSetThreadName("LEDThread");
+ while (true) {
+ moonlander_led_task();
+ }
+}
+
+void keyboard_pre_init_kb(void) {
+ setPinOutput(B5);
+ setPinOutput(B4);
+ setPinOutput(B3);
+
+ writePinLow(B5);
+ writePinLow(B4);
+ writePinLow(B3);
+
+ chThdCreateStatic(waLEDThread, sizeof(waLEDThread), NORMALPRIO - 16, LEDThread, NULL);
+
+ /* the array is initialized to 0, no need to re-set it here */
+ // mcp23018_leds[0] = 0; // blue
+ // mcp23018_leds[1] = 0; // green
+ // mcp23018_leds[2] = 0; // red
+
+ keyboard_pre_init_user();
+}
+
+#if !defined(MOONLANDER_USER_LEDS)
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+ if (is_launching || !keyboard_config.led_level) return state;
+ bool LED_1 = false;
+ bool LED_2 = false;
+ bool LED_3 = false;
+ bool LED_4 = false;
+ bool LED_5 = false;
+#if !defined(CAPS_LOCK_STATUS)
+ bool LED_6 = false;
+#endif
+
+ uint8_t layer = get_highest_layer(state);
+ switch (layer) {
+ case 1:
+ LED_1 = true;
+ LED_4 = true;
+ break;
+ case 2:
+ LED_2 = true;
+ LED_5 = true;
+ break;
+ case 3:
+ LED_3 = true;
+#if !defined(CAPS_LOCK_STATUS)
+ LED_6 = true;
+#endif
+ break;
+ case 4:
+ LED_4 = true;
+ break;
+ case 5:
+ LED_5 = true;
+ break;
+ case 6:
+#if !defined(CAPS_LOCK_STATUS)
+ LED_6 = true;
+#endif
+ break;
+ default:
+ break;
+ }
+
+ ML_LED_1(LED_1);
+ ML_LED_2(LED_2);
+ ML_LED_3(LED_3);
+ ML_LED_4(LED_4);
+ ML_LED_5(LED_5);
+#if !defined(CAPS_LOCK_STATUS)
+ ML_LED_6(LED_6);
+#endif
+
+ return state;
+}
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C3_2, C1_1, C4_2}, // 1
+ {0, C2_2, C1_2, C4_3},
+ {0, C2_3, C1_3, C3_3},
+ {0, C2_4, C1_4, C3_4},
+ {0, C2_5, C1_5, C3_5},
+ {0, C2_6, C1_6, C3_6},
+ {0, C2_7, C1_7, C3_7},
+ {0, C2_8, C1_8, C3_8},
+ {0, C3_1, C2_1, C4_1},
+
+ {0, C7_8, C6_8, C8_8}, // 10
+ {0, C7_7, C6_7, C9_8},
+ {0, C8_7, C6_6, C9_7},
+ {0, C8_6, C7_6, C9_6},
+ {0, C8_5, C7_5, C9_5},
+ {0, C8_4, C7_4, C9_4},
+ {0, C8_3, C7_3, C9_3},
+ {0, C8_2, C7_2, C9_2},
+ {0, C8_1, C7_1, C9_1},
+
+ {0, C3_10, C1_9, C4_10}, // 19
+ {0, C2_10, C1_10, C4_11},
+ {0, C2_11, C1_11, C3_11},
+ {0, C2_12, C1_12, C3_12},
+ {0, C2_13, C1_13, C3_13},
+ {0, C2_14, C1_14, C3_14},
+ {0, C2_15, C1_15, C3_15},
+ {0, C2_16, C1_16, C3_16},
+ {0, C3_9, C2_9, C4_9},
+
+ {0, C7_16, C6_16, C8_16}, // 28
+ {0, C7_15, C6_15, C9_16},
+ {0, C8_15, C6_14, C9_15},
+ {0, C8_10, C7_10, C9_10},
+ {0, C8_9, C7_9, C9_9},
+ {0, C8_11, C7_11, C9_11},
+ {0, C8_12, C7_12, C9_12},
+ {0, C8_13, C7_13, C9_13},
+ {0, C8_14, C7_14, C9_14},
+
+ {1, C3_2, C1_1, C4_2}, // 1
+ {1, C2_2, C1_2, C4_3},
+ {1, C2_3, C1_3, C3_3},
+ {1, C2_4, C1_4, C3_4},
+ {1, C2_5, C1_5, C3_5},
+ {1, C2_6, C1_6, C3_6},
+ {1, C2_7, C1_7, C3_7},
+ {1, C2_8, C1_8, C3_8},
+ {1, C3_1, C2_1, C4_1},
+
+ {1, C7_8, C6_8, C8_8}, // 10
+ {1, C7_7, C6_7, C9_8},
+ {1, C8_7, C6_6, C9_7},
+ {1, C8_6, C7_6, C9_6},
+ {1, C8_5, C7_5, C9_5},
+ {1, C8_4, C7_4, C9_4},
+ {1, C8_3, C7_3, C9_3},
+ {1, C8_2, C7_2, C9_2},
+ {1, C8_1, C7_1, C9_1},
+
+ {1, C3_10, C1_9, C4_10}, // 19
+ {1, C2_10, C1_10, C4_11},
+ {1, C2_11, C1_11, C3_11},
+ {1, C2_12, C1_12, C3_12},
+ {1, C2_13, C1_13, C3_13},
+ {1, C2_14, C1_14, C3_14},
+ {1, C2_15, C1_15, C3_15},
+ {1, C2_16, C1_16, C3_16},
+ {1, C3_9, C2_9, C4_9},
+
+ {1, C7_16, C6_16, C8_16}, // 28
+ {1, C7_15, C6_15, C9_16},
+ {1, C8_15, C6_14, C9_15},
+ {1, C8_10, C7_10, C9_10},
+ {1, C8_9, C7_9, C9_9},
+ {1, C8_11, C7_11, C9_11},
+ {1, C8_12, C7_12, C9_12},
+ {1, C8_13, C7_13, C9_13},
+ {1, C8_14, C7_14, C9_14},
+
+};
+
+led_config_t g_led_config = { {
+ { 0, 5, 10, 15, 20, 25, 29 },
+ { 1, 6, 11, 16, 21, 26, 30 },
+ { 2, 7, 12, 17, 22, 27, 31 },
+ { 3, 8, 13, 18, 23, 28, NO_LED },
+ { 4, 9, 14, 19, 24, NO_LED, NO_LED },
+ { 32, 33, 34, 35, NO_LED, NO_LED, NO_LED },
+ { 65, 61, 56, 51, 46, 41, 36 },
+ { 66, 62, 57, 52, 47, 42, 37 },
+ { 67, 63, 58, 53, 48, 43, 38 },
+ { NO_LED, 64, 59, 54, 49, 44, 39 },
+ { NO_LED, NO_LED, 60, 55, 50, 45, 40 },
+ { NO_LED, NO_LED, NO_LED, 71, 70, 69, 68 }
+}, {
+ { 0, 4}, { 0, 20}, { 0, 36}, { 0, 52}, { 0, 68},
+ { 16, 3}, { 16, 19}, { 16, 35}, { 16, 51}, { 16, 67},
+ { 32, 1}, { 32, 17}, { 32, 33}, { 32, 49}, { 32, 65},
+ { 48, 0}, { 48, 16}, { 48, 32}, { 48, 48}, { 48, 64},
+ { 64, 1}, { 64, 17}, { 64, 33}, { 64, 49}, { 64, 65},
+ { 80, 3}, { 80, 19}, { 80, 35}, { 80, 51},
+ { 96, 4}, { 96, 20}, { 96, 36},
+ { 88, 69}, {100, 80}, {112, 91}, {108, 69},
+
+ {240, 4}, {240, 20}, {240, 36}, {240, 52}, {240, 68},
+ {224, 3}, {224, 19}, {224, 35}, {224, 51}, {224, 67},
+ {208, 1}, {208, 17}, {208, 33}, {208, 49}, {208, 65},
+ {192, 0}, {192, 16}, {192, 32}, {192, 48}, {192, 64},
+ {176, 1}, {176, 17}, {176, 33}, {176, 49}, {176, 65},
+ {160, 3}, {160, 19}, {160, 35}, {160, 51},
+ {144, 4}, {144, 20}, {144, 36},
+ {152, 69}, {140, 80}, {128, 91}, {132, 69}
+}, {
+ 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4,
+ 1, 1, 1,
+ 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 1,
+ 4, 4, 4, 4,
+ 1, 1, 1,
+ 1, 1, 1, 1
+} };
+// clang-format on
+
+#endif
+
+#ifdef AUDIO_ENABLE
+bool music_mask_kb(uint16_t keycode) {
+ switch (keycode) {
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ case QK_TO ... QK_TO_MAX:
+ case QK_MOMENTARY ... QK_MOMENTARY_MAX:
+ case QK_DEF_LAYER ... QK_DEF_LAYER_MAX:
+ case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:
+ case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:
+ case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
+ case QK_LAYER_MOD ... QK_LAYER_MOD_MAX:
+ case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ case AU_ON ... AU_PREV:
+ case QK_BOOT:
+ case QK_CLEAR_EEPROM:
+ return false;
+ default:
+ return music_mask_user(keycode);
+ }
+}
+#endif
+
+#ifdef SWAP_HANDS_ENABLE
+// swap-hands action needs a matrix to define the swap
+// clang-format off
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ /* Left hand, matrix positions */
+ {{6,6}, {5,6}, {4,6}, {3,6}, {2,6}, {1,6},{0,6}},
+ {{6,7}, {5,7}, {4,7}, {3,7}, {2,7}, {1,7},{0,7}},
+ {{6,8}, {5,8}, {4,8}, {3,8}, {2,8}, {1,8},{0,8}},
+ {{6,9}, {5,9}, {4,9}, {3,9}, {2,9}, {1,9},{0,9}},
+ {{6,10},{5,10},{4,10},{3,10},{2,10},{1,10},{0,10}},
+ {{6,11},{5,11},{4,11},{3,11},{2,11},{1,11},{0,11}},
+ /* Right hand, matrix positions */
+ {{6,0}, {5,0}, {4,0}, {3,0}, {2,0}, {1,0},{0,0}},
+ {{6,1}, {5,1}, {4,1}, {3,1}, {2,1}, {1,1},{0,1}},
+ {{6,2}, {5,2}, {4,2}, {3,2}, {2,2}, {1,2},{0,2}},
+ {{6,3}, {5,3}, {4,3}, {3,3}, {2,3}, {1,3},{0,3}},
+ {{6,4}, {5,4}, {4,4}, {3,4}, {2,4}, {1,4},{0,4}},
+ {{6,5}, {5,5}, {4,5}, {3,5}, {2,5}, {1,5},{0,5}},
+};
+// clang-format on
+
+void keyboard_post_init_kb(void) {
+ rgb_matrix_enable_noeeprom();
+ keyboard_post_init_user();
+}
+#endif
+
+#if defined(AUDIO_ENABLE) && defined(MUSIC_MAP)
+// clang-format off
+__attribute__ ((weak))
+const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = {
+ {58, 59, 60, 61, 62, 63, 64},
+ {44, 45, 46, 47, 48, 49, 50},
+ {30, 31, 32, 33, 34, 35, 36},
+ {18, 19, 20, 21, 22, 23, 0},
+ { 8, 9, 10, 11, 12, 0, 0},
+ { 0, 1, 2, 3, 0, 0, 0},
+ {65, 66, 67, 68, 69, 70, 71},
+ {51, 52, 53, 54, 55, 56, 57},
+ {37, 38, 39, 40, 41, 42, 43},
+ { 0, 24, 25, 26, 27, 28, 29},
+ { 0, 0, 13, 14, 15, 16, 17},
+ { 0, 0, 0, 4, 5, 6, 7}
+};
+// clang-format on
+#endif
+
+#ifdef CAPS_LOCK_STATUS
+void led_update_ports(led_t led_state) {
+ ML_LED_6(led_state.caps_lock);
+}
+#endif
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) { return false; }
+ switch (keycode) {
+#if !defined(MOONLANDER_USER_LEDS)
+ case LED_LEVEL:
+ if (record->event.pressed) {
+ keyboard_config.led_level ^= 1;
+ eeconfig_update_kb(keyboard_config.raw);
+ if (keyboard_config.led_level) {
+ layer_state_set_kb(layer_state);
+ } else {
+ ML_LED_1(false);
+ ML_LED_2(false);
+ ML_LED_3(false);
+ ML_LED_4(false);
+ ML_LED_5(false);
+ ML_LED_6(false);
+ }
+ }
+ break;
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ case TOGGLE_LAYER_COLOR:
+ if (record->event.pressed) {
+ keyboard_config.disable_layer_led ^= 1;
+ if (keyboard_config.disable_layer_led) rgb_matrix_set_color_all(0, 0, 0);
+ eeconfig_update_kb(keyboard_config.raw);
+ }
+ break;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ keyboard_config.rgb_matrix_enable = false;
+ rgb_matrix_set_color_all(0, 0, 0);
+ } break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ keyboard_config.rgb_matrix_enable = true;
+ } break;
+ }
+ eeconfig_update_kb(keyboard_config.raw);
+ }
+ return false;
+#endif
+ }
+ return true;
+}
+
+void matrix_init_kb(void) {
+ keyboard_config.raw = eeconfig_read_kb();
+
+ if (!keyboard_config.led_level && !keyboard_config.led_level_res) {
+ keyboard_config.led_level = true;
+ keyboard_config.led_level_res = 0b11;
+ eeconfig_update_kb(keyboard_config.raw);
+ }
+#ifdef RGB_MATRIX_ENABLE
+ if (keyboard_config.rgb_matrix_enable) {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ } else {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ }
+#endif
+ matrix_init_user();
+}
+
+void eeconfig_init_kb(void) { // EEPROM is getting reset!
+ keyboard_config.raw = 0;
+ keyboard_config.rgb_matrix_enable = true;
+ keyboard_config.led_level = true;
+ keyboard_config.led_level_res = 0b11;
+ eeconfig_update_kb(keyboard_config.raw);
+ eeconfig_init_user();
+}
diff --git a/keyboards/moonlander/moonlander.h b/keyboards/zsa/moonlander/moonlander.h
index 0e5282c511..0e5282c511 100644
--- a/keyboards/moonlander/moonlander.h
+++ b/keyboards/zsa/moonlander/moonlander.h
diff --git a/keyboards/zsa/moonlander/readme.md b/keyboards/zsa/moonlander/readme.md
new file mode 100644
index 0000000000..546681e630
--- /dev/null
+++ b/keyboards/zsa/moonlander/readme.md
@@ -0,0 +1,58 @@
+# Moonlander
+
+![Moonlander](https://i.imgur.com/st2PCgph.png)
+
+A next-gen split, ergonomic keyboard with an active left side, USB type C, integrated wrist rest, and a thumb cluster that can move.
+
+
+* Keyboard Maintainer: [drashna](https://github.com/drashna), [ZSA](https://github.com/zsa/)
+* Hardware Supported: Moonlander MK 1 (STM32F303xC)
+* Hardware Availability: [ZSA Store](https://zsa.io/moonlander/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make zsa/moonlander:default
+
+Flashing example for this keyboard:
+
+ make zsa/moonlander: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).
+
+
+## Moonlander Customization
+
+### Indicator LEDs
+
+There are 6 functions for enabling and disabling the LEDs on the top of the boards. The functions are `ML_LED_1(bool)` through `ML_LED_6(bool)`, with the first LED being the left most LED on the left hand, and the sixth LED being the right most LED on the right side.
+
+By default, the Indicator LEDs are used to indicate the layer state for the keyboard. If you wish to change this (and indicate caps/num/scroll lock status instead), then define `MOONLANDER_USER_LEDS` in your `config.h` file.
+
+
+### Oryx Configuration
+
+To enable the features from Oryx (ZSA's Configurator), either compile the `default` keymap, or add `#define ORYX_CONFIGURATOR` to your `config.h` file.
+
+This enables the front Indicator LEDs, and the `TOGGLE_LAYER_COLOR` keycode. The `TOGGLE_LAYER_COLOR` keycode toggles the customized LED map configured on Oryx.
+
+### RGB Matrix Features
+
+If you're using the Smart LED (layer indication) feature from the Oryx Configurator, you want to make sure that you enable these options by adding `#define ORYX_CONFIGURATOR` to your keymap's `config.h`.
+
+This changes the `RGB_TOG` keycode so that it will toggle the lights on and off, in a way that will allow the Smart LEDs to continue to work, even with the rest of the LEDs turned off.
+
+Additionally, a new keycode has been added to toggle the Smart LEDs. Use `TOGGLE_LAYER_COLOR`, if you aren't already.
+
+### Detecting split / Gaming mode
+
+To make it extra gaming friendly, you can configure what happens when you disconnect the right half. This is especially useful when using gaming unfriendly layers or layouts (e.g. home row mods, dvorak, colemak).
+
+Example for enabling a specific layer while right side is disconnected:
+
+```
+void housekeeping_task_user(void) {
+ if (!is_transport_connected()) {
+ // set layer
+ }
+}
+```
diff --git a/keyboards/moonlander/rules.mk b/keyboards/zsa/moonlander/rules.mk
index 204c5940e4..204c5940e4 100644
--- a/keyboards/moonlander/rules.mk
+++ b/keyboards/zsa/moonlander/rules.mk
diff --git a/keyboards/zykrah/fuyu/config.h b/keyboards/zykrah/fuyu/config.h
index 20b0feb523..4561522868 100644
--- a/keyboards/zykrah/fuyu/config.h
+++ b/keyboards/zykrah/fuyu/config.h
@@ -17,46 +17,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
-#ifdef RGB_MATRIX_ENABLE
-/* The pin connected to the data pin of the LEDs */
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS * 3/4
-
-/* The number of LEDs connected (7 Snowflake, 34 Underglow) */
-#define DRIVER_LED_TOTAL 41
-#define RGB_MATRIX_LED_COUNT 41
-
/* Caps locks LED index default is 0 (LED1 on PCB) */
#define CAPS_LOCK_LED_INDEX 0
-
-/* Enable RGB MATRIX effects */
-#define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-#define ENABLE_RGB_MATRIX_BAND_SAT
-#define ENABLE_RGB_MATRIX_BAND_VAL
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#define ENABLE_RGB_MATRIX_HUE_BREATHING
-#define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#endif
diff --git a/keyboards/zykrah/fuyu/info.json b/keyboards/zykrah/fuyu/info.json
index 5431d14329..01053d4821 100644
--- a/keyboards/zykrah/fuyu/info.json
+++ b/keyboards/zykrah/fuyu/info.json
@@ -27,7 +27,42 @@
"cols": ["GP29", "GP28", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP27", "GP9", "GP1", "GP0"]
},
"rgb_matrix": {
- "driver": "ws2812"
+ "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
+ },
+ "default": {
+ "val": 150
+ },
+ "driver": "ws2812",
+ "max_brightness": 200
},
"ws2812": {
"pin": "GP2",
diff --git a/keyboards/zykrah/fuyu/keymaps/via/keymap.c b/keyboards/zykrah/fuyu/keymaps/via/keymap.c
index 95eb2692cb..d502e9c50f 100644
--- a/keyboards/zykrah/fuyu/keymaps/via/keymap.c
+++ b/keyboards/zykrah/fuyu/keymaps/via/keymap.c
@@ -102,7 +102,7 @@ bool rgb_matrix_indicators_user(void) {
#if defined(RGB_MATRIX_ENABLE)
#define INDICATOR_RGB_DIVISOR 4
-extern rgb_led_t rgb_matrix_ws2812_array[DRIVER_LED_TOTAL];
+extern rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_COUNT];
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
for (uint8_t i = led_min; i < led_max; i++) {
if (g_led_config.flags[i] & LED_FLAG_INDICATOR) {
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/lib/python/qmk/cli/format/json.py b/lib/python/qmk/cli/format/json.py
index 283513254c..87a3837d10 100755
--- a/lib/python/qmk/cli/format/json.py
+++ b/lib/python/qmk/cli/format/json.py
@@ -92,8 +92,8 @@ def format_json(cli):
output = json.dumps(json_data, cls=json_encoder, sort_keys=True)
if cli.args.inplace:
- with open(cli.args.json_file, 'w+', encoding='utf-8') as outfile:
- outfile.write(output)
+ with open(cli.args.json_file, 'w+', encoding='utf-8', newline='\n') as outfile:
+ outfile.write(output + '\n')
# Display the results if print was set
# We don't operate in-place by default, so also display to stdout
diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py
index 00fb1d9585..fc681300a3 100755
--- a/lib/python/qmk/cli/generate/config_h.py
+++ b/lib/python/qmk/cli/generate/config_h.py
@@ -108,6 +108,8 @@ def generate_config_items(kb_info_json, config_h_lines):
elif key_type.startswith('array'):
config_h_lines.append(generate_define(config_key, f'{{ {", ".join(map(str, config_value))} }}'))
elif key_type == 'bool':
+ config_h_lines.append(generate_define(config_key, 'true' if config_value else 'false'))
+ elif key_type == 'flag':
if config_value:
config_h_lines.append(generate_define(config_key))
elif key_type == 'mapping':
diff --git a/lib/python/qmk/cli/generate/keyboard_c.py b/lib/python/qmk/cli/generate/keyboard_c.py
index f010341613..5a6c967486 100755
--- a/lib/python/qmk/cli/generate/keyboard_c.py
+++ b/lib/python/qmk/cli/generate/keyboard_c.py
@@ -9,21 +9,25 @@ from qmk.path import normpath
from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
-def _gen_led_config(info_data):
+def _gen_led_configs(info_data):
+ lines = []
+
+ if 'layout' in info_data.get('rgb_matrix', {}):
+ lines.extend(_gen_led_config(info_data, 'rgb_matrix'))
+
+ if 'layout' in info_data.get('led_matrix', {}):
+ lines.extend(_gen_led_config(info_data, 'led_matrix'))
+
+ return lines
+
+
+def _gen_led_config(info_data, config_type):
"""Convert info.json content to g_led_config
"""
cols = info_data['matrix_size']['cols']
rows = info_data['matrix_size']['rows']
- config_type = None
- if 'layout' in info_data.get('rgb_matrix', {}):
- config_type = 'rgb_matrix'
- elif 'layout' in info_data.get('led_matrix', {}):
- config_type = 'led_matrix'
-
lines = []
- if not config_type:
- return lines
matrix = [['NO_LED'] * cols for _ in range(rows)]
pos = []
@@ -53,6 +57,7 @@ def _gen_led_config(info_data):
lines.append(f' {{ {", ".join(flags)} }},')
lines.append('};')
lines.append('#endif')
+ lines.append('')
return lines
@@ -98,7 +103,7 @@ def generate_keyboard_c(cli):
# Build the layouts.h file.
keyboard_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#include QMK_KEYBOARD_H', '']
- keyboard_h_lines.extend(_gen_led_config(kb_info_json))
+ keyboard_h_lines.extend(_gen_led_configs(kb_info_json))
keyboard_h_lines.extend(_gen_matrix_mask(kb_info_json))
# Show the results
diff --git a/lib/python/qmk/cli/migrate.py b/lib/python/qmk/cli/migrate.py
index c1b1ad1ea9..0bab5c1949 100644
--- a/lib/python/qmk/cli/migrate.py
+++ b/lib/python/qmk/cli/migrate.py
@@ -47,9 +47,12 @@ def migrate(cli):
files = _candidate_files(cli.args.keyboard)
# Filter down keys if requested
- keys = info_map.keys()
+ keys = list(filter(lambda key: info_map[key].get("to_json", True), info_map.keys()))
if cli.args.filter:
keys = list(set(keys) & set(cli.args.filter))
+ rejected = set(cli.args.filter) - set(keys)
+ for key in rejected:
+ cli.log.info(f'{{fg_yellow}}Skipping {key} as migration not possible...')
cli.log.info(f'{{fg_green}}Migrating keyboard {{fg_cyan}}{cli.args.keyboard}{{fg_green}}.{{fg_reset}}')
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index d42ba5c660..4ef12bea71 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -524,6 +524,9 @@ def _config_to_json(key_type, config_value):
"""Convert config value using spec
"""
if key_type.startswith('array'):
+ if key_type.count('.') > 1:
+ raise Exception(f"Conversion of {key_type} not possible")
+
if '.' in key_type:
key_type, array_type = key_type.split('.', 1)
else:
@@ -536,7 +539,7 @@ def _config_to_json(key_type, config_value):
else:
return list(map(str.strip, config_value.split(',')))
- elif key_type == 'bool':
+ elif key_type in ['bool', 'flag']:
if isinstance(config_value, bool):
return config_value
return config_value in true_values
@@ -706,27 +709,23 @@ def _extract_led_config(info_data, keyboard):
cols = info_data['matrix_size']['cols']
rows = info_data['matrix_size']['rows']
- # Determine what feature owns g_led_config
- features = info_data.get("features", {})
- feature = None
- if features.get("rgb_matrix", False):
- feature = "rgb_matrix"
- elif features.get("led_matrix", False):
- feature = "led_matrix"
-
- if feature:
- # Process
- for file in find_keyboard_c(keyboard):
- try:
- ret = find_led_config(file, cols, rows)
- if ret:
- info_data[feature] = info_data.get(feature, {})
- info_data[feature]["layout"] = ret
- except Exception as e:
- _log_warning(info_data, f'led_config: {file.name}: {e}')
-
- if info_data[feature].get("layout", None) and not info_data[feature].get("led_count", None):
- info_data[feature]["led_count"] = len(info_data[feature]["layout"])
+ for feature in ['rgb_matrix', 'led_matrix']:
+ if info_data.get('features', {}).get(feature, False) or feature in info_data:
+
+ # Only attempt search if dd led config is missing
+ if 'layout' not in info_data.get(feature, {}):
+ # Process
+ for file in find_keyboard_c(keyboard):
+ try:
+ ret = find_led_config(file, cols, rows)
+ if ret:
+ info_data[feature] = info_data.get(feature, {})
+ info_data[feature]['layout'] = ret
+ except Exception as e:
+ _log_warning(info_data, f'led_config: {file.name}: {e}')
+
+ if info_data[feature].get('layout', None) and not info_data[feature].get('led_count', None):
+ info_data[feature]['led_count'] = len(info_data[feature]['layout'])
return info_data
diff --git a/platforms/avr/_print.h b/platforms/avr/_print.h
index 5c1fdd26d8..bf8247c2f3 100644
--- a/platforms/avr/_print.h
+++ b/platforms/avr/_print.h
@@ -24,10 +24,3 @@
#pragma once
#include "avr/xprintf.h"
-
-// Create user & normal print defines
-#define print(s) xputs(PSTR(s))
-#define println(s) xputs(PSTR(s "\r\n"))
-#define uprint(s) xputs(PSTR(s))
-#define uprintln(s) xputs(PSTR(s "\r\n"))
-#define uprintf(fmt, ...) __xprintf(PSTR(fmt), ##__VA_ARGS__) \ No newline at end of file
diff --git a/platforms/avr/drivers/i2c_master.c b/platforms/avr/drivers/i2c_master.c
index 58939f3e00..64083d862a 100644
--- a/platforms/avr/drivers/i2c_master.c
+++ b/platforms/avr/drivers/i2c_master.c
@@ -24,6 +24,7 @@
#include "timer.h"
#include "wait.h"
#include "util.h"
+#include "progmem.h"
#ifndef F_SCL
# define F_SCL 400000UL // SCL frequency
@@ -38,7 +39,7 @@
#define TWBR_val (((F_CPU / F_SCL) - 16) / 2)
-void i2c_init(void) {
+__attribute__((weak)) void i2c_init(void) {
TWSR = 0; /* no prescaler */
TWBR = (uint8_t)TWBR_val;
@@ -94,7 +95,7 @@ static i2c_status_t i2c_start_impl(uint8_t address, uint16_t timeout) {
return I2C_STATUS_SUCCESS;
}
-i2c_status_t i2c_start(uint8_t address, uint16_t timeout) {
+__attribute__((always_inline)) static inline i2c_status_t i2c_start(uint8_t address, uint16_t timeout) {
// Retry i2c_start_impl a bunch times in case the remote side has interrupts disabled.
uint16_t timeout_timer = timer_read();
uint16_t time_slice = MAX(1, (timeout == (I2C_TIMEOUT_INFINITE)) ? 5 : (timeout / (I2C_START_RETRY_COUNT))); // if it's infinite, wait 1ms between attempts, otherwise split up the entire timeout into the number of retries
@@ -105,6 +106,11 @@ i2c_status_t i2c_start(uint8_t address, uint16_t timeout) {
return status;
}
+__attribute__((always_inline)) static inline void i2c_stop(void) {
+ // transmit STOP condition
+ TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO);
+}
+
i2c_status_t i2c_write(uint8_t data, uint16_t timeout) {
// load data into data register
TWDR = data;
@@ -167,6 +173,18 @@ i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length,
return status;
}
+i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) {
+ i2c_status_t status = i2c_start(address | I2C_ACTION_WRITE, timeout);
+
+ for (uint16_t i = 0; i < length && status >= 0; i++) {
+ status = i2c_write(pgm_read_byte((const char*)data++), timeout);
+ }
+
+ i2c_stop();
+
+ return status;
+}
+
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_status_t status = i2c_start(address | I2C_ACTION_READ, timeout);
@@ -189,7 +207,7 @@ i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16
return (status < 0) ? status : I2C_STATUS_SUCCESS;
}
-i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
+i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_status_t status = i2c_start(devaddr | 0x00, timeout);
if (status >= 0) {
status = i2c_write(regaddr, timeout);
@@ -204,7 +222,7 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
return status;
}
-i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
+i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_status_t status = i2c_start(devaddr | 0x00, timeout);
if (status >= 0) {
status = i2c_write(regaddr >> 8, timeout);
@@ -223,7 +241,7 @@ i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* da
return status;
}
-i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
+i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_status_t status = i2c_start(devaddr, timeout);
if (status < 0) {
goto error;
@@ -256,7 +274,7 @@ error:
return (status < 0) ? status : I2C_STATUS_SUCCESS;
}
-i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
+i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_status_t status = i2c_start(devaddr, timeout);
if (status < 0) {
goto error;
@@ -293,7 +311,8 @@ error:
return (status < 0) ? status : I2C_STATUS_SUCCESS;
}
-void i2c_stop(void) {
- // transmit STOP condition
- TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO);
-}
+__attribute__((weak)) i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout) {
+ i2c_status_t status = i2c_start(address, timeout);
+ i2c_stop();
+ return status;
+} \ No newline at end of file
diff --git a/platforms/avr/drivers/i2c_master.h b/platforms/avr/drivers/i2c_master.h
index 04ef126c80..b797997619 100644
--- a/platforms/avr/drivers/i2c_master.h
+++ b/platforms/avr/drivers/i2c_master.h
@@ -21,6 +21,13 @@
#include <stdint.h>
+// ### DEPRECATED - DO NOT USE ###
+#define i2c_writeReg(devaddr, regaddr, data, length, timeout) i2c_write_register(devaddr, regaddr, data, length, timeout)
+#define i2c_writeReg16(devaddr, regaddr, data, length, timeout) i2c_write_register16(devaddr, regaddr, data, length, timeout)
+#define i2c_readReg(devaddr, regaddr, data, length, timeout) i2c_read_register(devaddr, regaddr, data, length, timeout)
+#define i2c_readReg16(devaddr, regaddr, data, length, timeout) i2c_read_register16(devaddr, regaddr, data, length, timeout)
+// ###############################
+
#define I2C_READ 0x01
#define I2C_WRITE 0x00
@@ -34,14 +41,11 @@ typedef int16_t i2c_status_t;
#define I2C_TIMEOUT_INFINITE (0xFFFF)
void i2c_init(void);
-i2c_status_t i2c_start(uint8_t address, uint16_t timeout);
-i2c_status_t i2c_write(uint8_t data, uint16_t timeout);
-int16_t i2c_read_ack(uint16_t timeout);
-int16_t i2c_read_nack(uint16_t timeout);
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
-void i2c_stop(void);
+i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout);
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/platforms/chibios/drivers/analog.c b/platforms/chibios/drivers/analog.c
index bf84ce8f76..fb146df936 100644
--- a/platforms/chibios/drivers/analog.c
+++ b/platforms/chibios/drivers/analog.c
@@ -31,7 +31,15 @@
#endif
#if STM32_ADCV3_OVERSAMPLING
-# error "STM32 ADCV3 Oversampling is not supported at this time."
+// Apparently all ADCV3 chips that support oversampling (STM32L4xx, STM32L4xx+,
+// STM32G4xx, STM32WB[35]x) have errata like “Wrong ADC result if conversion
+// done late after calibration or previous conversionâ€; the workaround is to
+// perform a dummy conversion and discard its result. STM32G4xx chips also
+// have the “ADC channel 0 converted instead of the required ADC channelâ€
+// errata, one workaround for which is also to perform a dummy conversion.
+# define ADC_DUMMY_CONVERSIONS_AT_START 1
+#else
+# define ADC_DUMMY_CONVERSIONS_AT_START 0
#endif
// Otherwise assume V3
@@ -76,8 +84,10 @@
#ifndef ADC_COUNT
# if defined(RP2040) || defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103) || defined(WB32F3G71xx) || defined(WB32FQ95xx)
# define ADC_COUNT 1
-# elif defined(STM32F3XX)
+# elif defined(STM32F3XX) || defined(STM32G4XX)
# define ADC_COUNT 4
+# elif defined(STM32L4XX)
+# define ADC_COUNT 3
# else
# error "ADC_COUNT has not been set for this ARM microcontroller."
# endif
@@ -89,13 +99,24 @@
# error "The ARM ADC implementation currently only supports reading one channel at a time."
#endif
+// Add dummy conversions as extra channels (this would work only on chips that
+// have multiple channel index fields instead of a channel mask, but all chips
+// that need that workaround are like that).
+#define ADC_TOTAL_CHANNELS (ADC_DUMMY_CONVERSIONS_AT_START + ADC_NUM_CHANNELS)
+
#ifndef ADC_BUFFER_DEPTH
# define ADC_BUFFER_DEPTH 1
#endif
// For more sampling rate options, look at hal_adc_lld.h in ChibiOS
-#ifndef ADC_SAMPLING_RATE
-# define ADC_SAMPLING_RATE ADC_SMPR_SMP_1P5
+#if !defined(ADC_SAMPLING_RATE) && !defined(RP2040)
+# if defined(ADC_SMPR_SMP_1P5)
+# define ADC_SAMPLING_RATE ADC_SMPR_SMP_1P5
+# elif defined(ADC_SMPR_SMP_2P5) // STM32L4XX, STM32L4XXP, STM32G4XX, STM32WBXX
+# define ADC_SAMPLING_RATE ADC_SMPR_SMP_2P5
+# else
+# error "Cannot determine the default ADC_SAMPLING_RATE for this MCU."
+# endif
#endif
// Options are 12, 10, 8, and 6 bit.
@@ -108,7 +129,7 @@
#endif
static ADCConfig adcCfg = {};
-static adcsample_t sampleBuffer[ADC_NUM_CHANNELS * ADC_BUFFER_DEPTH];
+static adcsample_t sampleBuffer[ADC_TOTAL_CHANNELS * ADC_BUFFER_DEPTH];
// Initialize to max number of ADCs, set to empty object to initialize all to false.
static bool adcInitialized[ADC_COUNT] = {};
@@ -116,7 +137,7 @@ static bool adcInitialized[ADC_COUNT] = {};
// TODO: add back TR handling???
static ADCConversionGroup adcConversionGroup = {
.circular = FALSE,
- .num_channels = (uint16_t)(ADC_NUM_CHANNELS),
+ .num_channels = (uint16_t)(ADC_TOTAL_CHANNELS),
#if defined(USE_ADCV1)
.cfgr1 = ADC_CFGR1_CONT | ADC_RESOLUTION,
.smpr = ADC_SAMPLING_RATE,
@@ -240,6 +261,74 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) {
case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 );
// STM32F103x[C-G] in 144-pin packages also have analog inputs on F6...F10, but they are on ADC3, and the
// ChibiOS ADC driver for STM32F1xx currently supports only ADC1, therefore these pins are not usable.
+#elif defined(STM32L4XX)
+ case A0: return TO_MUX( ADC_CHANNEL_IN5, 0 ); // Can also be ADC2 in some cases
+ case A1: return TO_MUX( ADC_CHANNEL_IN6, 0 ); // Can also be ADC2 in some cases
+ case A2: return TO_MUX( ADC_CHANNEL_IN7, 0 ); // Can also be ADC2
+ case A3: return TO_MUX( ADC_CHANNEL_IN8, 0 ); // Can also be ADC2
+ case A4: return TO_MUX( ADC_CHANNEL_IN9, 0 ); // Can also be ADC2
+ case A5: return TO_MUX( ADC_CHANNEL_IN10, 0 ); // Can also be ADC2
+ case A6: return TO_MUX( ADC_CHANNEL_IN11, 0 ); // Can also be ADC2
+ case A7: return TO_MUX( ADC_CHANNEL_IN12, 0 ); // Can also be ADC2
+ case B0: return TO_MUX( ADC_CHANNEL_IN15, 0 ); // Can also be ADC2
+ case B1: return TO_MUX( ADC_CHANNEL_IN16, 0 ); // Can also be ADC2
+ case C0: return TO_MUX( ADC_CHANNEL_IN1, 0 ); // Can also be ADC2 or ADC3
+ case C1: return TO_MUX( ADC_CHANNEL_IN2, 0 ); // Can also be ADC2 or ADC3
+ case C2: return TO_MUX( ADC_CHANNEL_IN3, 0 ); // Can also be ADC2 or ADC3
+ case C3: return TO_MUX( ADC_CHANNEL_IN4, 0 ); // Can also be ADC2 or ADC3
+ case C4: return TO_MUX( ADC_CHANNEL_IN13, 0 ); // Can also be ADC2
+ case C5: return TO_MUX( ADC_CHANNEL_IN14, 0 ); // Can also be ADC2
+# if STM32_HAS_GPIOF && STM32_ADC_USE_ADC3
+ case F3: return TO_MUX( ADC_CHANNEL_IN6, 2 );
+ case F4: return TO_MUX( ADC_CHANNEL_IN7, 2 );
+ case F5: return TO_MUX( ADC_CHANNEL_IN8, 2 );
+ case F6: return TO_MUX( ADC_CHANNEL_IN9, 2 );
+ case F7: return TO_MUX( ADC_CHANNEL_IN10, 2 );
+ case F8: return TO_MUX( ADC_CHANNEL_IN11, 2 );
+ case F9: return TO_MUX( ADC_CHANNEL_IN12, 2 );
+ case F10: return TO_MUX( ADC_CHANNEL_IN13, 2 );
+# endif
+#elif defined(STM32G4XX)
+ case A0: return TO_MUX( ADC_CHANNEL_IN1, 0 ); // Can also be ADC2
+ case A1: return TO_MUX( ADC_CHANNEL_IN2, 0 ); // Can also be ADC2
+ case A2: return TO_MUX( ADC_CHANNEL_IN3, 0 );
+ case A3: return TO_MUX( ADC_CHANNEL_IN4, 0 );
+ case A4: return TO_MUX( ADC_CHANNEL_IN17, 1 );
+ case A5: return TO_MUX( ADC_CHANNEL_IN13, 1 );
+ case A6: return TO_MUX( ADC_CHANNEL_IN3, 1 );
+ case A7: return TO_MUX( ADC_CHANNEL_IN4, 1 );
+ case B0: return TO_MUX( ADC_CHANNEL_IN15, 0 ); // Can also be ADC3
+ case B1: return TO_MUX( ADC_CHANNEL_IN12, 0 ); // Can also be ADC3
+ case B2: return TO_MUX( ADC_CHANNEL_IN12, 1 );
+ case B11: return TO_MUX( ADC_CHANNEL_IN14, 0 ); // Can also be ADC2
+ case B12: return TO_MUX( ADC_CHANNEL_IN11, 0 ); // Can also be ADC4
+ case B13: return TO_MUX( ADC_CHANNEL_IN5, 2 );
+ case B14: return TO_MUX( ADC_CHANNEL_IN5, 0 ); // Can also be ADC4
+ case B15: return TO_MUX( ADC_CHANNEL_IN15, 1 ); // Can also be ADC4
+ case C0: return TO_MUX( ADC_CHANNEL_IN6, 0 ); // Can also be ADC2
+ case C1: return TO_MUX( ADC_CHANNEL_IN7, 0 ); // Can also be ADC2
+ case C2: return TO_MUX( ADC_CHANNEL_IN8, 0 ); // Can also be ADC2
+ case C3: return TO_MUX( ADC_CHANNEL_IN9, 0 ); // Can also be ADC2
+ case C4: return TO_MUX( ADC_CHANNEL_IN5, 1 );
+ case C5: return TO_MUX( ADC_CHANNEL_IN11, 1 );
+ case D8: return TO_MUX( ADC_CHANNEL_IN12, 3 );
+ case D9: return TO_MUX( ADC_CHANNEL_IN13, 3 );
+ case D10: return TO_MUX( ADC_CHANNEL_IN7, 2 ); // Can also be ADC4
+ case D11: return TO_MUX( ADC_CHANNEL_IN8, 2 ); // Can also be ADC4
+ case D12: return TO_MUX( ADC_CHANNEL_IN9, 2 ); // Can also be ADC4
+ case D13: return TO_MUX( ADC_CHANNEL_IN10, 2 ); // Can also be ADC4
+ case D14: return TO_MUX( ADC_CHANNEL_IN11, 2 ); // Can also be ADC4
+ case E5: return TO_MUX( ADC_CHANNEL_IN2, 3 );
+ case E7: return TO_MUX( ADC_CHANNEL_IN4, 2 );
+ case E8: return TO_MUX( ADC_CHANNEL_IN6, 2 ); // Can also be ADC4
+ case E9: return TO_MUX( ADC_CHANNEL_IN2, 2 );
+ case E10: return TO_MUX( ADC_CHANNEL_IN14, 2 ); // Can also be ADC4
+ case E11: return TO_MUX( ADC_CHANNEL_IN15, 2 ); // Can also be ADC4
+ case E12: return TO_MUX( ADC_CHANNEL_IN16, 2 ); // Can also be ADC4
+ case E13: return TO_MUX( ADC_CHANNEL_IN3, 2 );
+ case E14: return TO_MUX( ADC_CHANNEL_IN1, 3 );
+ case F0: return TO_MUX( ADC_CHANNEL_IN10, 0 );
+ case F1: return TO_MUX( ADC_CHANNEL_IN10, 1 );
#elif defined(RP2040)
case 26U: return TO_MUX(0, 0);
case 27U: return TO_MUX(1, 0);
@@ -306,7 +395,11 @@ int16_t adc_read(adc_mux mux) {
#elif defined(RP2040)
adcConversionGroup.channel_mask = 1 << mux.input;
#else
- adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(mux.input);
+ adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(mux.input)
+# if ADC_DUMMY_CONVERSIONS_AT_START >= 1
+ | ADC_SQR1_SQ2_N(mux.input)
+# endif
+ ;
#endif
ADCDriver* targetDriver = intToADCDriver(mux.adc);
@@ -321,9 +414,9 @@ int16_t adc_read(adc_mux mux) {
#if defined(USE_ADCV2) || defined(RP2040)
// fake 12-bit -> N-bit scale
- return (*sampleBuffer) >> (12 - ADC_RESOLUTION);
+ return (sampleBuffer[ADC_DUMMY_CONVERSIONS_AT_START]) >> (12 - ADC_RESOLUTION);
#else
// already handled as part of adcConvert
- return *sampleBuffer;
+ return sampleBuffer[ADC_DUMMY_CONVERSIONS_AT_START];
#endif
}
diff --git a/platforms/chibios/drivers/audio_dac.h b/platforms/chibios/drivers/audio_dac.h
index 07cd622ead..2f62d12934 100644
--- a/platforms/chibios/drivers/audio_dac.h
+++ b/platforms/chibios/drivers/audio_dac.h
@@ -24,11 +24,6 @@
#endif
/**
- * Size of the dac_buffer arrays. All must be the same size.
- */
-#define AUDIO_DAC_BUFFER_SIZE 256U
-
-/**
* Highest value allowed sample value.
* since the DAC is limited to 12 bit, the absolute max is 0xfff = 4095U;
@@ -97,6 +92,35 @@
#endif
/**
+ * Size of the dac_buffer array. This controls the length of the runtime buffer
+ * which accumulates the data to be sent to the DAC every few milliseconds, and
+ * it does not need to correspond to the length of the wavetable for the chosen
+ * waveform defined by AUDIO_DAC_SAMPLE_WAVEFORM_* in the additive DAC driver.
+ * By default, this is set to be as close to 3.3 ms as possible, giving 300 DAC
+ * interrupts per second. Any smaller and the interrupt load gets too heavy and
+ * this results in crackling due to buffer underrun in the additive DAC driver;
+ * too large and the RAM (additive driver) or flash (basic driver) usage may be
+ * too high, causing build failures, and matrix scanning is liable to have long
+ * periodic pauses that delay key presses or releases or fully lose short taps.
+ * Large buffers also cause notes to take longer to stop after they should from
+ * music mode or MIDI input.
+ * This should be a power of 2 for maximum compatibility.
+ */
+#ifndef AUDIO_DAC_BUFFER_SIZE
+# if AUDIO_DAC_SAMPLE_RATE < 5100U
+# define AUDIO_DAC_BUFFER_SIZE 16U
+# elif AUDIO_DAC_SAMPLE_RATE < 9900U
+# define AUDIO_DAC_BUFFER_SIZE 32U
+# elif AUDIO_DAC_SAMPLE_RATE < 19500U
+# define AUDIO_DAC_BUFFER_SIZE 64U
+# elif AUDIO_DAC_SAMPLE_RATE < 38700U
+# define AUDIO_DAC_BUFFER_SIZE 128U
+# else
+# define AUDIO_DAC_BUFFER_SIZE 256U
+# endif
+#endif
+
+/**
* The number of tones that can be played simultaneously. If too high a value
* is used here, the keyboard will freeze and glitch-out when that many tones
* are being played.
diff --git a/platforms/chibios/drivers/audio_dac_additive.c b/platforms/chibios/drivers/audio_dac_additive.c
index 26e044b048..d6fde42b68 100644
--- a/platforms/chibios/drivers/audio_dac_additive.c
+++ b/platforms/chibios/drivers/audio_dac_additive.c
@@ -53,35 +53,39 @@
#ifdef AUDIO_DAC_SAMPLE_WAVEFORM_SINE
/* one full sine wave over [0,2*pi], but shifted up one amplitude and left pi/4; for the samples to start at 0
*/
-static const dacsample_t dac_buffer_sine[AUDIO_DAC_BUFFER_SIZE] = {
+static const dacsample_t dac_buffer_sine[] = {
// 256 values, max 4095
0x0, 0x1, 0x2, 0x6, 0xa, 0xf, 0x16, 0x1e, 0x27, 0x32, 0x3d, 0x4a, 0x58, 0x67, 0x78, 0x89, 0x9c, 0xb0, 0xc5, 0xdb, 0xf2, 0x10a, 0x123, 0x13e, 0x159, 0x175, 0x193, 0x1b1, 0x1d1, 0x1f1, 0x212, 0x235, 0x258, 0x27c, 0x2a0, 0x2c6, 0x2ed, 0x314, 0x33c, 0x365, 0x38e, 0x3b8, 0x3e3, 0x40e, 0x43a, 0x467, 0x494, 0x4c2, 0x4f0, 0x51f, 0x54e, 0x57d, 0x5ad, 0x5dd, 0x60e, 0x63f, 0x670, 0x6a1, 0x6d3, 0x705, 0x737, 0x769, 0x79b, 0x7cd, 0x800, 0x832, 0x864, 0x896, 0x8c8, 0x8fa, 0x92c, 0x95e, 0x98f, 0x9c0, 0x9f1, 0xa22, 0xa52, 0xa82, 0xab1, 0xae0, 0xb0f, 0xb3d, 0xb6b, 0xb98, 0xbc5, 0xbf1, 0xc1c, 0xc47, 0xc71, 0xc9a, 0xcc3, 0xceb, 0xd12, 0xd39, 0xd5f, 0xd83, 0xda7, 0xdca, 0xded, 0xe0e, 0xe2e, 0xe4e, 0xe6c, 0xe8a, 0xea6, 0xec1, 0xedc, 0xef5, 0xf0d, 0xf24, 0xf3a, 0xf4f, 0xf63, 0xf76, 0xf87, 0xf98, 0xfa7, 0xfb5, 0xfc2, 0xfcd, 0xfd8, 0xfe1, 0xfe9, 0xff0, 0xff5, 0xff9, 0xffd, 0xffe,
- 0xfff, 0xffe, 0xffd, 0xff9, 0xff5, 0xff0, 0xfe9, 0xfe1, 0xfd8, 0xfcd, 0xfc2, 0xfb5, 0xfa7, 0xf98, 0xf87, 0xf76, 0xf63, 0xf4f, 0xf3a, 0xf24, 0xf0d, 0xef5, 0xedc, 0xec1, 0xea6, 0xe8a, 0xe6c, 0xe4e, 0xe2e, 0xe0e, 0xded, 0xdca, 0xda7, 0xd83, 0xd5f, 0xd39, 0xd12, 0xceb, 0xcc3, 0xc9a, 0xc71, 0xc47, 0xc1c, 0xbf1, 0xbc5, 0xb98, 0xb6b, 0xb3d, 0xb0f, 0xae0, 0xab1, 0xa82, 0xa52, 0xa22, 0x9f1, 0x9c0, 0x98f, 0x95e, 0x92c, 0x8fa, 0x8c8, 0x896, 0x864, 0x832, 0x800, 0x7cd, 0x79b, 0x769, 0x737, 0x705, 0x6d3, 0x6a1, 0x670, 0x63f, 0x60e, 0x5dd, 0x5ad, 0x57d, 0x54e, 0x51f, 0x4f0, 0x4c2, 0x494, 0x467, 0x43a, 0x40e, 0x3e3, 0x3b8, 0x38e, 0x365, 0x33c, 0x314, 0x2ed, 0x2c6, 0x2a0, 0x27c, 0x258, 0x235, 0x212, 0x1f1, 0x1d1, 0x1b1, 0x193, 0x175, 0x159, 0x13e, 0x123, 0x10a, 0xf2, 0xdb, 0xc5, 0xb0, 0x9c, 0x89, 0x78, 0x67, 0x58, 0x4a, 0x3d, 0x32, 0x27, 0x1e, 0x16, 0xf, 0xa, 0x6, 0x2, 0x1};
+ 0xfff, 0xffe, 0xffd, 0xff9, 0xff5, 0xff0, 0xfe9, 0xfe1, 0xfd8, 0xfcd, 0xfc2, 0xfb5, 0xfa7, 0xf98, 0xf87, 0xf76, 0xf63, 0xf4f, 0xf3a, 0xf24, 0xf0d, 0xef5, 0xedc, 0xec1, 0xea6, 0xe8a, 0xe6c, 0xe4e, 0xe2e, 0xe0e, 0xded, 0xdca, 0xda7, 0xd83, 0xd5f, 0xd39, 0xd12, 0xceb, 0xcc3, 0xc9a, 0xc71, 0xc47, 0xc1c, 0xbf1, 0xbc5, 0xb98, 0xb6b, 0xb3d, 0xb0f, 0xae0, 0xab1, 0xa82, 0xa52, 0xa22, 0x9f1, 0x9c0, 0x98f, 0x95e, 0x92c, 0x8fa, 0x8c8, 0x896, 0x864, 0x832, 0x800, 0x7cd, 0x79b, 0x769, 0x737, 0x705, 0x6d3, 0x6a1, 0x670, 0x63f, 0x60e, 0x5dd, 0x5ad, 0x57d, 0x54e, 0x51f, 0x4f0, 0x4c2, 0x494, 0x467, 0x43a, 0x40e, 0x3e3, 0x3b8, 0x38e, 0x365, 0x33c, 0x314, 0x2ed, 0x2c6, 0x2a0, 0x27c, 0x258, 0x235, 0x212, 0x1f1, 0x1d1, 0x1b1, 0x193, 0x175, 0x159, 0x13e, 0x123, 0x10a, 0xf2, 0xdb, 0xc5, 0xb0, 0x9c, 0x89, 0x78, 0x67, 0x58, 0x4a, 0x3d, 0x32, 0x27, 0x1e, 0x16, 0xf, 0xa, 0x6, 0x2, 0x1,
+};
#endif // AUDIO_DAC_SAMPLE_WAVEFORM_SINE
#ifdef AUDIO_DAC_SAMPLE_WAVEFORM_TRIANGLE
-static const dacsample_t dac_buffer_triangle[AUDIO_DAC_BUFFER_SIZE] = {
+static const dacsample_t dac_buffer_triangle[] = {
// 256 values, max 4095
0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x100, 0x120, 0x140, 0x160, 0x180, 0x1a0, 0x1c0, 0x1e0, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0x300, 0x320, 0x340, 0x360, 0x380, 0x3a0, 0x3c0, 0x3e0, 0x400, 0x420, 0x440, 0x460, 0x480, 0x4a0, 0x4c0, 0x4e0, 0x500, 0x520, 0x540, 0x560, 0x580, 0x5a0, 0x5c0, 0x5e0, 0x600, 0x620, 0x640, 0x660, 0x680, 0x6a0, 0x6c0, 0x6e0, 0x700, 0x720, 0x740, 0x760, 0x780, 0x7a0, 0x7c0, 0x7e0, 0x800, 0x81f, 0x83f, 0x85f, 0x87f, 0x89f, 0x8bf, 0x8df, 0x8ff, 0x91f, 0x93f, 0x95f, 0x97f, 0x99f, 0x9bf, 0x9df, 0x9ff, 0xa1f, 0xa3f, 0xa5f, 0xa7f, 0xa9f, 0xabf, 0xadf, 0xaff, 0xb1f, 0xb3f, 0xb5f, 0xb7f, 0xb9f, 0xbbf, 0xbdf, 0xbff, 0xc1f, 0xc3f, 0xc5f, 0xc7f, 0xc9f, 0xcbf, 0xcdf, 0xcff, 0xd1f, 0xd3f, 0xd5f, 0xd7f, 0xd9f, 0xdbf, 0xddf, 0xdff, 0xe1f, 0xe3f, 0xe5f, 0xe7f, 0xe9f, 0xebf, 0xedf, 0xeff, 0xf1f, 0xf3f, 0xf5f, 0xf7f, 0xf9f, 0xfbf, 0xfdf,
- 0xfff, 0xfdf, 0xfbf, 0xf9f, 0xf7f, 0xf5f, 0xf3f, 0xf1f, 0xeff, 0xedf, 0xebf, 0xe9f, 0xe7f, 0xe5f, 0xe3f, 0xe1f, 0xdff, 0xddf, 0xdbf, 0xd9f, 0xd7f, 0xd5f, 0xd3f, 0xd1f, 0xcff, 0xcdf, 0xcbf, 0xc9f, 0xc7f, 0xc5f, 0xc3f, 0xc1f, 0xbff, 0xbdf, 0xbbf, 0xb9f, 0xb7f, 0xb5f, 0xb3f, 0xb1f, 0xaff, 0xadf, 0xabf, 0xa9f, 0xa7f, 0xa5f, 0xa3f, 0xa1f, 0x9ff, 0x9df, 0x9bf, 0x99f, 0x97f, 0x95f, 0x93f, 0x91f, 0x8ff, 0x8df, 0x8bf, 0x89f, 0x87f, 0x85f, 0x83f, 0x81f, 0x800, 0x7e0, 0x7c0, 0x7a0, 0x780, 0x760, 0x740, 0x720, 0x700, 0x6e0, 0x6c0, 0x6a0, 0x680, 0x660, 0x640, 0x620, 0x600, 0x5e0, 0x5c0, 0x5a0, 0x580, 0x560, 0x540, 0x520, 0x500, 0x4e0, 0x4c0, 0x4a0, 0x480, 0x460, 0x440, 0x420, 0x400, 0x3e0, 0x3c0, 0x3a0, 0x380, 0x360, 0x340, 0x320, 0x300, 0x2e0, 0x2c0, 0x2a0, 0x280, 0x260, 0x240, 0x220, 0x200, 0x1e0, 0x1c0, 0x1a0, 0x180, 0x160, 0x140, 0x120, 0x100, 0xe0, 0xc0, 0xa0, 0x80, 0x60, 0x40, 0x20};
+ 0xfff, 0xfdf, 0xfbf, 0xf9f, 0xf7f, 0xf5f, 0xf3f, 0xf1f, 0xeff, 0xedf, 0xebf, 0xe9f, 0xe7f, 0xe5f, 0xe3f, 0xe1f, 0xdff, 0xddf, 0xdbf, 0xd9f, 0xd7f, 0xd5f, 0xd3f, 0xd1f, 0xcff, 0xcdf, 0xcbf, 0xc9f, 0xc7f, 0xc5f, 0xc3f, 0xc1f, 0xbff, 0xbdf, 0xbbf, 0xb9f, 0xb7f, 0xb5f, 0xb3f, 0xb1f, 0xaff, 0xadf, 0xabf, 0xa9f, 0xa7f, 0xa5f, 0xa3f, 0xa1f, 0x9ff, 0x9df, 0x9bf, 0x99f, 0x97f, 0x95f, 0x93f, 0x91f, 0x8ff, 0x8df, 0x8bf, 0x89f, 0x87f, 0x85f, 0x83f, 0x81f, 0x800, 0x7e0, 0x7c0, 0x7a0, 0x780, 0x760, 0x740, 0x720, 0x700, 0x6e0, 0x6c0, 0x6a0, 0x680, 0x660, 0x640, 0x620, 0x600, 0x5e0, 0x5c0, 0x5a0, 0x580, 0x560, 0x540, 0x520, 0x500, 0x4e0, 0x4c0, 0x4a0, 0x480, 0x460, 0x440, 0x420, 0x400, 0x3e0, 0x3c0, 0x3a0, 0x380, 0x360, 0x340, 0x320, 0x300, 0x2e0, 0x2c0, 0x2a0, 0x280, 0x260, 0x240, 0x220, 0x200, 0x1e0, 0x1c0, 0x1a0, 0x180, 0x160, 0x140, 0x120, 0x100, 0xe0, 0xc0, 0xa0, 0x80, 0x60, 0x40, 0x20,
+};
#endif // AUDIO_DAC_SAMPLE_WAVEFORM_TRIANGLE
#ifdef AUDIO_DAC_SAMPLE_WAVEFORM_SQUARE
-static const dacsample_t dac_buffer_square[AUDIO_DAC_BUFFER_SIZE] = {
- [0 ... AUDIO_DAC_BUFFER_SIZE / 2 - 1] = AUDIO_DAC_OFF_VALUE, // first and
- [AUDIO_DAC_BUFFER_SIZE / 2 ... AUDIO_DAC_BUFFER_SIZE - 1] = AUDIO_DAC_SAMPLE_MAX, // second half
+static const dacsample_t dac_buffer_square[] = {
+ AUDIO_DAC_OFF_VALUE, // first and
+ AUDIO_DAC_SAMPLE_MAX, // second steps
};
#endif // AUDIO_DAC_SAMPLE_WAVEFORM_SQUARE
/*
// four steps: 0, 1/3, 2/3 and 1
-static const dacsample_t dac_buffer_staircase[AUDIO_DAC_BUFFER_SIZE] = {
- [0 ... AUDIO_DAC_BUFFER_SIZE/3 -1 ] = 0,
- [AUDIO_DAC_BUFFER_SIZE / 4 ... AUDIO_DAC_BUFFER_SIZE / 2 -1 ] = AUDIO_DAC_SAMPLE_MAX / 3,
- [AUDIO_DAC_BUFFER_SIZE / 2 ... 3 * AUDIO_DAC_BUFFER_SIZE / 4 -1 ] = 2 * AUDIO_DAC_SAMPLE_MAX / 3,
- [3 * AUDIO_DAC_BUFFER_SIZE / 4 ... AUDIO_DAC_BUFFER_SIZE -1 ] = AUDIO_DAC_SAMPLE_MAX,
+static const dacsample_t dac_buffer_staircase[] = {
+ 0,
+ AUDIO_DAC_SAMPLE_MAX / 3,
+ 2 * AUDIO_DAC_SAMPLE_MAX / 3,
+ AUDIO_DAC_SAMPLE_MAX,
}
*/
#ifdef AUDIO_DAC_SAMPLE_WAVEFORM_TRAPEZOID
-static const dacsample_t dac_buffer_trapezoid[AUDIO_DAC_BUFFER_SIZE] = {0x0, 0x1f, 0x7f, 0xdf, 0x13f, 0x19f, 0x1ff, 0x25f, 0x2bf, 0x31f, 0x37f, 0x3df, 0x43f, 0x49f, 0x4ff, 0x55f, 0x5bf, 0x61f, 0x67f, 0x6df, 0x73f, 0x79f, 0x7ff, 0x85f, 0x8bf, 0x91f, 0x97f, 0x9df, 0xa3f, 0xa9f, 0xaff, 0xb5f, 0xbbf, 0xc1f, 0xc7f, 0xcdf, 0xd3f, 0xd9f, 0xdff, 0xe5f, 0xebf, 0xf1f, 0xf7f, 0xfdf, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
- 0xfff, 0xfdf, 0xf7f, 0xf1f, 0xebf, 0xe5f, 0xdff, 0xd9f, 0xd3f, 0xcdf, 0xc7f, 0xc1f, 0xbbf, 0xb5f, 0xaff, 0xa9f, 0xa3f, 0x9df, 0x97f, 0x91f, 0x8bf, 0x85f, 0x7ff, 0x79f, 0x73f, 0x6df, 0x67f, 0x61f, 0x5bf, 0x55f, 0x4ff, 0x49f, 0x43f, 0x3df, 0x37f, 0x31f, 0x2bf, 0x25f, 0x1ff, 0x19f, 0x13f, 0xdf, 0x7f, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
+static const dacsample_t dac_buffer_trapezoid[] = {
+ 0x0, 0x1f, 0x7f, 0xdf, 0x13f, 0x19f, 0x1ff, 0x25f, 0x2bf, 0x31f, 0x37f, 0x3df, 0x43f, 0x49f, 0x4ff, 0x55f, 0x5bf, 0x61f, 0x67f, 0x6df, 0x73f, 0x79f, 0x7ff, 0x85f, 0x8bf, 0x91f, 0x97f, 0x9df, 0xa3f, 0xa9f, 0xaff, 0xb5f, 0xbbf, 0xc1f, 0xc7f, 0xcdf, 0xd3f, 0xd9f, 0xdff, 0xe5f, 0xebf, 0xf1f, 0xf7f, 0xfdf, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff, 0xfff,
+ 0xfff, 0xfdf, 0xf7f, 0xf1f, 0xebf, 0xe5f, 0xdff, 0xd9f, 0xd3f, 0xcdf, 0xc7f, 0xc1f, 0xbbf, 0xb5f, 0xaff, 0xa9f, 0xa3f, 0x9df, 0x97f, 0x91f, 0x8bf, 0x85f, 0x7ff, 0x79f, 0x73f, 0x6df, 0x67f, 0x61f, 0x5bf, 0x55f, 0x4ff, 0x49f, 0x43f, 0x3df, 0x37f, 0x31f, 0x2bf, 0x25f, 0x1ff, 0x19f, 0x13f, 0xdf, 0x7f, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+};
#endif // AUDIO_DAC_SAMPLE_WAVEFORM_TRAPEZOID
static dacsample_t dac_buffer[AUDIO_DAC_BUFFER_SIZE];
@@ -124,20 +128,30 @@ __attribute__((weak)) uint16_t dac_value_generate(void) {
uint_fast16_t value = 0;
float frequency = 0.0f;
+#if defined(AUDIO_DAC_SAMPLE_WAVEFORM_SINE)
+ const size_t wavetable_length = ARRAY_SIZE(dac_buffer_sine);
+#elif defined(AUDIO_DAC_SAMPLE_WAVEFORM_TRIANGLE)
+ const size_t wavetable_length = ARRAY_SIZE(dac_buffer_triangle);
+#elif defined(AUDIO_DAC_SAMPLE_WAVEFORM_TRAPEZOID)
+ const size_t wavetable_length = ARRAY_SIZE(dac_buffer_trapezoid);
+#elif defined(AUDIO_DAC_SAMPLE_WAVEFORM_SQUARE)
+ const size_t wavetable_length = ARRAY_SIZE(dac_buffer_square);
+#endif
+
for (size_t i = 0; i < active_tones_snapshot_length; i++) {
/* Note: a user implementation does not have to rely on the active_tones_snapshot, but
* could directly query the active frequencies through audio_get_processed_frequency */
frequency = active_tones_snapshot[i];
float new_dac_if = dac_if[i];
- new_dac_if += frequency * ((float)AUDIO_DAC_BUFFER_SIZE / AUDIO_DAC_SAMPLE_RATE * 2.0f / 3.0f);
+ new_dac_if += frequency * ((float)wavetable_length / AUDIO_DAC_SAMPLE_RATE * 2.0f / 3.0f);
/*Note: the 2/3 are necessary to get the correct frequencies on the
* DAC output (as measured with an oscilloscope), since the gpt
* timer runs with 3*AUDIO_DAC_SAMPLE_RATE; and the DAC callback
* is called twice per conversion.*/
- while (new_dac_if >= AUDIO_DAC_BUFFER_SIZE)
- new_dac_if -= AUDIO_DAC_BUFFER_SIZE;
+ while (new_dac_if >= wavetable_length)
+ new_dac_if -= wavetable_length;
dac_if[i] = new_dac_if;
// Wavetable generation/lookup
diff --git a/platforms/chibios/drivers/audio_pwm_hardware.c b/platforms/chibios/drivers/audio_pwm_hardware.c
index 40d891326f..21b5c6892c 100644
--- a/platforms/chibios/drivers/audio_pwm_hardware.c
+++ b/platforms/chibios/drivers/audio_pwm_hardware.c
@@ -22,6 +22,12 @@
# define AUDIO_PWM_COUNTER_FREQUENCY 100000
#endif
+#ifndef AUDIO_PWM_COMPLEMENTARY_OUTPUT
+# define AUDIO_PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_HIGH
+#else
+# define AUDIO_PWM_OUTPUT_MODE PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH
+#endif
+
extern bool playing_note;
extern bool playing_melody;
extern uint8_t note_timbre;
@@ -29,7 +35,7 @@ extern uint8_t note_timbre;
static PWMConfig pwmCFG = {.frequency = AUDIO_PWM_COUNTER_FREQUENCY, /* PWM clock frequency */
.period = 2,
.callback = NULL,
- .channels = {[(AUDIO_PWM_CHANNEL - 1)] = {.mode = PWM_OUTPUT_ACTIVE_HIGH, .callback = NULL}}};
+ .channels = {[(AUDIO_PWM_CHANNEL - 1)] = {.mode = AUDIO_PWM_OUTPUT_MODE, .callback = NULL}}};
static float channel_1_frequency = 0.0f;
diff --git a/platforms/chibios/drivers/i2c_master.c b/platforms/chibios/drivers/i2c_master.c
index 7c49f9d005..ad11d850dd 100644
--- a/platforms/chibios/drivers/i2c_master.c
+++ b/platforms/chibios/drivers/i2c_master.c
@@ -1,5 +1,6 @@
/* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
+ * Copyright 2023 customMK
*
* 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
@@ -90,8 +91,6 @@
# endif
#endif
-static uint8_t i2c_address;
-
static const I2CConfig i2cconfig = {
#if defined(USE_I2CV1_CONTRIB)
I2C1_CLOCK_SPEED,
@@ -125,7 +124,7 @@ static i2c_status_t i2c_epilogue(const msg_t status) {
// From ChibiOS HAL: "After a timeout the driver must be stopped and
// restarted because the bus is in an uncertain state." We also issue that
// hard stop in case of any error.
- i2c_stop();
+ i2cStop(&I2C_DRIVER);
return status == MSG_TIMEOUT ? I2C_STATUS_TIMEOUT : I2C_STATUS_ERROR;
}
@@ -150,28 +149,19 @@ __attribute__((weak)) void i2c_init(void) {
}
}
-i2c_status_t i2c_start(uint8_t address) {
- i2c_address = address;
- i2cStart(&I2C_DRIVER, &i2cconfig);
- return I2C_STATUS_SUCCESS;
-}
-
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) {
- i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
- msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout));
+ msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (address >> 1), data, length, 0, 0, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) {
- i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
- msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout));
+ msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (address >> 1), data, length, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
-i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
- i2c_address = devaddr;
+i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
i2cStart(&I2C_DRIVER, &i2cconfig);
uint8_t complete_packet[length + 1];
@@ -180,12 +170,11 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
}
complete_packet[0] = regaddr;
- msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout));
+ msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
-i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
- i2c_address = devaddr;
+i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
i2cStart(&I2C_DRIVER, &i2cconfig);
uint8_t complete_packet[length + 2];
@@ -195,25 +184,27 @@ i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* da
complete_packet[0] = regaddr >> 8;
complete_packet[1] = regaddr & 0xFF;
- msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 2, 0, 0, TIME_MS2I(timeout));
+ msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), complete_packet, length + 2, 0, 0, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
-i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
- i2c_address = devaddr;
+i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2cStart(&I2C_DRIVER, &i2cconfig);
- msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), &regaddr, 1, data, length, TIME_MS2I(timeout));
+ msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), &regaddr, 1, data, length, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
-i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
- i2c_address = devaddr;
+i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2cStart(&I2C_DRIVER, &i2cconfig);
uint8_t register_packet[2] = {regaddr >> 8, regaddr & 0xFF};
- msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), register_packet, 2, data, length, TIME_MS2I(timeout));
+ msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (devaddr >> 1), register_packet, 2, data, length, TIME_MS2I(timeout));
return i2c_epilogue(status);
}
-void i2c_stop(void) {
- i2cStop(&I2C_DRIVER);
-}
+__attribute__((weak)) i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout) {
+ // ChibiOS does not provide low level enough control to check for an ack.
+ // Best effort instead tries reading register 0 which will either succeed or timeout.
+ // This approach may produce false negative results for I2C devices that do not respond to a register 0 read request.
+ uint8_t data = 0;
+ return i2c_readReg(address, 0, &data, sizeof(data), timeout);
+} \ No newline at end of file
diff --git a/platforms/chibios/drivers/i2c_master.h b/platforms/chibios/drivers/i2c_master.h
index deee7ecc08..132ffd14c0 100644
--- a/platforms/chibios/drivers/i2c_master.h
+++ b/platforms/chibios/drivers/i2c_master.h
@@ -26,6 +26,13 @@
#include <stdint.h>
+// ### DEPRECATED - DO NOT USE ###
+#define i2c_writeReg(devaddr, regaddr, data, length, timeout) i2c_write_register(devaddr, regaddr, data, length, timeout)
+#define i2c_writeReg16(devaddr, regaddr, data, length, timeout) i2c_write_register16(devaddr, regaddr, data, length, timeout)
+#define i2c_readReg(devaddr, regaddr, data, length, timeout) i2c_read_register(devaddr, regaddr, data, length, timeout)
+#define i2c_readReg16(devaddr, regaddr, data, length, timeout) i2c_read_register16(devaddr, regaddr, data, length, timeout)
+// ###############################
+
typedef int16_t i2c_status_t;
#define I2C_STATUS_SUCCESS (0)
@@ -33,11 +40,10 @@ typedef int16_t i2c_status_t;
#define I2C_STATUS_TIMEOUT (-2)
void i2c_init(void);
-i2c_status_t i2c_start(uint8_t address);
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
-i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
-void i2c_stop(void);
+i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
+i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout);
diff --git a/platforms/chibios/drivers/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c
index 440687bd72..6bba22767f 100644
--- a/platforms/chibios/drivers/ws2812_pwm.c
+++ b/platforms/chibios/drivers/ws2812_pwm.c
@@ -48,9 +48,6 @@
#ifndef WS2812_PWM_COMPLEMENTARY_OUTPUT
# define WS2812_PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_HIGH
#else
-# if !STM32_PWM_USE_ADVANCED
-# error "WS2812_PWM_COMPLEMENTARY_OUTPUT requires STM32_PWM_USE_ADVANCED == TRUE"
-# endif
# define WS2812_PWM_OUTPUT_MODE PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH
#endif
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index 28c8267517..c1a1500493 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -17,6 +17,7 @@
#include "audio.h"
#include "eeconfig.h"
#include "timer.h"
+#include "debug.h"
#include "wait.h"
#include "util.h"
@@ -62,6 +63,13 @@
* the internal state of the audio system does its calculations with the later - ms
*/
+#ifndef AUDIO_DEFAULT_ON
+# define AUDIO_DEFAULT_ON true
+#endif
+#ifndef AUDIO_DEFAULT_CLICKY_ON
+# define AUDIO_DEFAULT_CLICKY_ON true
+#endif
+
#ifndef AUDIO_TONE_STACKSIZE
# define AUDIO_TONE_STACKSIZE 8
#endif
@@ -117,32 +125,31 @@ void eeconfig_update_audio_current(void) {
eeconfig_update_audio(audio_config.raw);
}
+void eeconfig_update_audio_default(void) {
+ audio_config.valid = true;
+ audio_config.enable = AUDIO_DEFAULT_ON;
+ audio_config.clicky_enable = AUDIO_DEFAULT_CLICKY_ON;
+ eeconfig_update_audio(audio_config.raw);
+}
+
void audio_init(void) {
if (audio_initialized) {
return;
}
- // Check EEPROM
-#ifdef EEPROM_ENABLE
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
audio_config.raw = eeconfig_read_audio();
-#else // EEPROM settings
- audio_config.enable = true;
-# ifdef AUDIO_CLICKY_ON
- audio_config.clicky_enable = true;
-# endif
-#endif // EEPROM settings
+ if (!audio_config.valid) {
+ dprintf("audio_init audio_config.valid = 0. Write default values to EEPROM.\n");
+ eeconfig_update_audio_default();
+ }
for (uint8_t i = 0; i < AUDIO_TONE_STACKSIZE; i++) {
tones[i] = (musical_tone_t){.time_started = 0, .pitch = -1.0f, .duration = 0};
}
- if (!audio_initialized) {
- audio_driver_initialize();
- audio_initialized = true;
- }
+ audio_driver_initialize();
+ audio_initialized = true;
+
stop_all_notes();
#ifndef AUDIO_INIT_DELAY
audio_startup();
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index a4a908b43c..eb0bedc6f9 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -33,7 +33,8 @@ typedef union {
struct {
bool enable : 1;
bool clicky_enable : 1;
- uint8_t level : 6;
+ bool valid : 1;
+ uint8_t reserved : 5;
};
} audio_config_t;
diff --git a/quantum/backlight/backlight.c b/quantum/backlight/backlight.c
index e89b34696c..eb64dd71e8 100644
--- a/quantum/backlight/backlight.c
+++ b/quantum/backlight/backlight.c
@@ -42,20 +42,26 @@ backlight_config_t backlight_config;
static uint8_t breathing_period = BREATHING_PERIOD;
#endif
+static void backlight_check_config(void) {
+ /* Add some out of bound checks for backlight config */
+
+ if (backlight_config.level > BACKLIGHT_LEVELS) {
+ backlight_config.level = BACKLIGHT_LEVELS;
+ }
+}
+
/** \brief Backlight initialization
*
* FIXME: needs doc
*/
void backlight_init(void) {
- /* check signature */
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- eeconfig_update_backlight_default();
- }
backlight_config.raw = eeconfig_read_backlight();
- if (backlight_config.level > BACKLIGHT_LEVELS) {
- backlight_config.level = BACKLIGHT_LEVELS;
+ if (!backlight_config.valid) {
+ dprintf("backlight_init backlight_config.valid = 0. Write default values to EEPROM.\n");
+ eeconfig_update_backlight_default();
}
+ backlight_check_config();
+
backlight_set(backlight_config.enable ? backlight_config.level : 0);
}
@@ -183,6 +189,7 @@ void eeconfig_update_backlight_current(void) {
}
void eeconfig_update_backlight_default(void) {
+ backlight_config.valid = true;
backlight_config.enable = BACKLIGHT_DEFAULT_ON;
backlight_config.breathing = BACKLIGHT_DEFAULT_BREATHING;
backlight_config.level = BACKLIGHT_DEFAULT_LEVEL;
diff --git a/quantum/backlight/backlight.h b/quantum/backlight/backlight.h
index 85812bff3a..c34fb5858d 100644
--- a/quantum/backlight/backlight.h
+++ b/quantum/backlight/backlight.h
@@ -39,7 +39,7 @@ typedef union {
struct {
bool enable : 1;
bool breathing : 1;
- uint8_t reserved : 1; // Reserved for possible future backlight modes
+ bool valid : 1;
uint8_t level : 5;
};
} backlight_config_t;
diff --git a/quantum/bootmagic/bootmagic_lite.c b/quantum/bootmagic/bootmagic.c
index efce6bfd12..efce6bfd12 100644
--- a/quantum/bootmagic/bootmagic_lite.c
+++ b/quantum/bootmagic/bootmagic.c
diff --git a/quantum/bootmagic/bootmagic.h b/quantum/bootmagic/bootmagic.h
index db826025ce..4b5f5f7c5e 100644
--- a/quantum/bootmagic/bootmagic.h
+++ b/quantum/bootmagic/bootmagic.h
@@ -15,8 +15,11 @@
*/
#pragma once
-#if defined(BOOTMAGIC_LITE)
-# include "bootmagic_lite.h"
+#ifndef BOOTMAGIC_LITE_COLUMN
+# define BOOTMAGIC_LITE_COLUMN 0
+#endif
+#ifndef BOOTMAGIC_LITE_ROW
+# define BOOTMAGIC_LITE_ROW 0
#endif
void bootmagic(void);
diff --git a/quantum/bootmagic/bootmagic_lite.h b/quantum/bootmagic/bootmagic_lite.h
deleted file mode 100644
index 17777e6b4a..0000000000
--- a/quantum/bootmagic/bootmagic_lite.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2021 QMK
- *
- * 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 3 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
-
-#ifndef BOOTMAGIC_LITE_COLUMN
-# define BOOTMAGIC_LITE_COLUMN 0
-#endif
-#ifndef BOOTMAGIC_LITE_ROW
-# define BOOTMAGIC_LITE_ROW 0
-#endif
-
-void bootmagic_lite(void);
diff --git a/quantum/bootmagic/magic.c b/quantum/bootmagic/magic.c
deleted file mode 100644
index d68df3fa58..0000000000
--- a/quantum/bootmagic/magic.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2021 QMK
- *
- * 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 3 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 <stdint.h>
-#include <stdbool.h>
-#include "wait.h"
-#include "matrix.h"
-#include "bootloader.h"
-#include "debug.h"
-#include "keycode_config.h"
-#include "host.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-#include "bootmagic.h"
-
-keymap_config_t keymap_config;
-
-__attribute__((weak)) void bootmagic(void) {}
-
-/** \brief Magic
- *
- * FIXME: Needs doc
- */
-void magic(void) {
- /* check signature */
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
-
- /* init globals */
- debug_config.raw = eeconfig_read_debug();
- keymap_config.raw = eeconfig_read_keymap();
-
- bootmagic();
-
- /* read here just incase bootmagic process changed its value */
- layer_state_t default_layer = (layer_state_t)eeconfig_read_default_layer();
- default_layer_set(default_layer);
-
- /* Also initialize layer state to trigger callback functions for layer_state */
- layer_state_set_kb((layer_state_t)layer_state);
-}
diff --git a/quantum/bootmagic/magic.h b/quantum/bootmagic/magic.h
deleted file mode 100644
index 2c3969b85c..0000000000
--- a/quantum/bootmagic/magic.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2021 QMK
- *
- * 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 3 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
-
-void magic(void);
diff --git a/quantum/dip_switch.c b/quantum/dip_switch.c
index 6e254578d1..e901f3e0c4 100644
--- a/quantum/dip_switch.c
+++ b/quantum/dip_switch.c
@@ -19,8 +19,6 @@
#include <string.h> // for memcpy
#include "dip_switch.h"
-#include "gpio.h"
-#include "util.h"
#ifdef SPLIT_KEYBOARD
# include "split_common/split_util.h"
@@ -35,24 +33,17 @@
#endif
#ifdef DIP_SWITCH_PINS
-# define NUMBER_OF_DIP_SWITCHES (ARRAY_SIZE(dip_switch_pad))
static pin_t dip_switch_pad[] = DIP_SWITCH_PINS;
#endif
#ifdef DIP_SWITCH_MATRIX_GRID
-typedef struct matrix_index_t {
- uint8_t row;
- uint8_t col;
-} matrix_index_t;
-
-# define NUMBER_OF_DIP_SWITCHES (ARRAY_SIZE(dip_switch_pad))
-static matrix_index_t dip_switch_pad[] = DIP_SWITCH_MATRIX_GRID;
-extern bool peek_matrix(uint8_t row_index, uint8_t col_index, bool read_raw);
-static uint16_t scan_count;
+static matrix_intersection_t dip_switch_pad[] = DIP_SWITCH_MATRIX_GRID;
+extern bool peek_matrix(uint8_t row_index, uint8_t col_index, bool read_raw);
+static uint16_t scan_count;
#endif /* DIP_SWITCH_MATRIX_GRID */
-static bool dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0};
-static bool last_dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0};
+static bool dip_switch_state[NUM_DIP_SWITCHES] = {0};
+static bool last_dip_switch_state[NUM_DIP_SWITCHES] = {0};
__attribute__((weak)) bool dip_switch_update_user(uint8_t index, bool active) {
return true;
@@ -70,17 +61,39 @@ __attribute__((weak)) bool dip_switch_update_mask_kb(uint32_t state) {
return dip_switch_update_mask_user(state);
}
+#ifdef DIP_SWITCH_MAP_ENABLE
+# include "keymap_introspection.h"
+# include "action.h"
+
+# ifndef DIP_SWITCH_MAP_KEY_DELAY
+# define DIP_SWITCH_MAP_KEY_DELAY TAP_CODE_DELAY
+# endif
+
+static void dip_switch_exec_mapping(uint8_t index, bool on) {
+ // The delays below cater for Windows and its wonderful requirements.
+ action_exec(on ? MAKE_DIPSWITCH_ON_EVENT(index, true) : MAKE_DIPSWITCH_OFF_EVENT(index, true));
+# if DIP_SWITCH_MAP_KEY_DELAY > 0
+ wait_ms(DIP_SWITCH_MAP_KEY_DELAY);
+# endif // DIP_SWITCH_MAP_KEY_DELAY > 0
+
+ action_exec(on ? MAKE_DIPSWITCH_ON_EVENT(index, false) : MAKE_DIPSWITCH_OFF_EVENT(index, false));
+# if DIP_SWITCH_MAP_KEY_DELAY > 0
+ wait_ms(DIP_SWITCH_MAP_KEY_DELAY);
+# endif // DIP_SWITCH_MAP_KEY_DELAY > 0
+}
+#endif // DIP_SWITCH_MAP_ENABLE
+
void dip_switch_init(void) {
#ifdef DIP_SWITCH_PINS
# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
if (!isLeftHand) {
const pin_t dip_switch_pad_right[] = DIP_SWITCH_PINS_RIGHT;
- for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
+ for (uint8_t i = 0; i < NUM_DIP_SWITCHES; i++) {
dip_switch_pad[i] = dip_switch_pad_right[i];
}
}
# endif
- for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
+ for (uint8_t i = 0; i < NUM_DIP_SWITCHES; i++) {
setPinInputHigh(dip_switch_pad[i]);
}
dip_switch_read(true);
@@ -108,7 +121,7 @@ void dip_switch_read(bool forced) {
}
#endif
- for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
+ for (uint8_t i = 0; i < NUM_DIP_SWITCHES; i++) {
#ifdef DIP_SWITCH_PINS
dip_switch_state[i] = !readPin(dip_switch_pad[i]);
#endif
@@ -118,11 +131,21 @@ void dip_switch_read(bool forced) {
dip_switch_mask |= dip_switch_state[i] << i;
if (last_dip_switch_state[i] != dip_switch_state[i] || forced) {
has_dip_state_changed = true;
+#ifndef DIP_SWITCH_MAP_ENABLE
dip_switch_update_kb(i, dip_switch_state[i]);
+#else
+ dip_switch_exec_mapping(i, dip_switch_state[i]);
+#endif
}
}
if (has_dip_state_changed) {
+#ifndef DIP_SWITCH_MAP_ENABLE
dip_switch_update_mask_kb(dip_switch_mask);
+#endif
memcpy(last_dip_switch_state, dip_switch_state, sizeof(dip_switch_state));
}
}
+
+void dip_switch_task(void) {
+ dip_switch_read(false);
+}
diff --git a/quantum/dip_switch.h b/quantum/dip_switch.h
index 6e79dcb0bf..7629859359 100644
--- a/quantum/dip_switch.h
+++ b/quantum/dip_switch.h
@@ -20,11 +20,36 @@
#include <stdbool.h>
#include <stdint.h>
+#include "gpio.h"
+#include "util.h"
+
+#if defined(DIP_SWITCH_PINS)
+# define NUM_DIP_SWITCHES ARRAY_SIZE(((pin_t[])DIP_SWITCH_PINS))
+#elif defined(DIP_SWITCH_MATRIX_GRID)
+typedef struct matrix_intersection_t {
+ uint8_t row;
+ uint8_t col;
+} matrix_intersection_t;
+# define NUM_DIP_SWITCHES ARRAY_SIZE(((matrix_intersection_t[])DIP_SWITCH_MATRIX_GRID))
+#endif
+
+#ifndef NUM_DIP_SWITCHES
+# define NUM_DIP_SWITCHES 0
+#endif
bool dip_switch_update_kb(uint8_t index, bool active);
bool dip_switch_update_user(uint8_t index, bool active);
bool dip_switch_update_mask_user(uint32_t state);
bool dip_switch_update_mask_kb(uint32_t state);
-void dip_switch_init(void);
void dip_switch_read(bool forced);
+
+void dip_switch_init(void);
+void dip_switch_task(void);
+
+#ifdef DIP_SWITCH_MAP_ENABLE
+# define NUM_DIP_STATES 2
+# define DIP_SWITCH_OFF_ON(off, on) \
+ { (off), (on) }
+extern const uint16_t dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES];
+#endif // DIP_SWITCH_MAP_ENABLE
diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c
index d9eea13758..2d2180b4b4 100644
--- a/quantum/eeconfig.c
+++ b/quantum/eeconfig.c
@@ -54,7 +54,7 @@ void eeconfig_init_quantum(void) {
// Enable oneshot and autocorrect by default: 0b0001 0100 0000 0000
eeprom_update_word(EECONFIG_KEYMAP, 0x1400);
eeprom_update_byte(EECONFIG_BACKLIGHT, 0);
- eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default
+ eeprom_update_byte(EECONFIG_AUDIO, 0);
eeprom_update_dword(EECONFIG_RGBLIGHT, 0);
eeprom_update_byte(EECONFIG_RGBLIGHT_EXTENDED, 0);
eeprom_update_byte(EECONFIG_UNUSED, 0);
diff --git a/quantum/keyboard.c b/quantum/keyboard.c
index 86a1a9fea3..9bdf6e6344 100644
--- a/quantum/keyboard.c
+++ b/quantum/keyboard.c
@@ -20,7 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "keycode_config.h"
#include "matrix.h"
#include "keymap_introspection.h"
-#include "magic.h"
#include "host.h"
#include "led.h"
#include "keycode.h"
@@ -33,6 +32,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "sendchar.h"
#include "eeconfig.h"
#include "action_layer.h"
+#ifdef BOOTMAGIC_ENABLE
+# include "bootmagic.h"
+#endif
#ifdef AUDIO_ENABLE
# include "audio.h"
#endif
@@ -370,28 +372,30 @@ void housekeeping_task(void) {
housekeeping_task_user();
}
-/** \brief Init tasks previously located in matrix_init_quantum
+/** \brief quantum_init
*
- * TODO: rationalise against keyboard_init and current split role
+ * Init global state
*/
void quantum_init(void) {
- magic();
- led_init_ports();
-#ifdef BACKLIGHT_ENABLE
- backlight_init_ports();
-#endif
-#ifdef AUDIO_ENABLE
- audio_init();
-#endif
-#ifdef LED_MATRIX_ENABLE
- led_matrix_init();
-#endif
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init();
-#endif
-#if defined(UNICODE_COMMON_ENABLE)
- unicode_input_mode_init();
+ /* check signature */
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+
+ /* init globals */
+ debug_config.raw = eeconfig_read_debug();
+ keymap_config.raw = eeconfig_read_keymap();
+
+#ifdef BOOTMAGIC_ENABLE
+ bootmagic();
#endif
+
+ /* read here just incase bootmagic process changed its value */
+ layer_state_t default_layer = (layer_state_t)eeconfig_read_default_layer();
+ default_layer_set(default_layer);
+
+ /* Also initialize layer state to trigger callback functions for layer_state */
+ layer_state_set_kb((layer_state_t)layer_state);
}
/** \brief keyboard_init
@@ -412,6 +416,22 @@ void keyboard_init(void) {
#endif
matrix_init();
quantum_init();
+ led_init_ports();
+#ifdef BACKLIGHT_ENABLE
+ backlight_init_ports();
+#endif
+#ifdef AUDIO_ENABLE
+ audio_init();
+#endif
+#ifdef LED_MATRIX_ENABLE
+ led_matrix_init();
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_init();
+#endif
+#if defined(UNICODE_COMMON_ENABLE)
+ unicode_input_mode_init();
+#endif
#if defined(CRC_ENABLE)
crc_init();
#endif
@@ -615,7 +635,7 @@ void quantum_task(void) {
#endif
#ifdef DIP_SWITCH_ENABLE
- dip_switch_read(false);
+ dip_switch_task();
#endif
#ifdef AUTO_SHIFT_ENABLE
diff --git a/quantum/keyboard.h b/quantum/keyboard.h
index 5ea57815a7..0f39fde682 100644
--- a/quantum/keyboard.h
+++ b/quantum/keyboard.h
@@ -32,7 +32,7 @@ typedef struct {
uint8_t row;
} keypos_t;
-typedef enum keyevent_type_t { TICK_EVENT = 0, KEY_EVENT = 1, ENCODER_CW_EVENT = 2, ENCODER_CCW_EVENT = 3, COMBO_EVENT = 4 } keyevent_type_t;
+typedef enum keyevent_type_t { TICK_EVENT = 0, KEY_EVENT = 1, ENCODER_CW_EVENT = 2, ENCODER_CCW_EVENT = 3, COMBO_EVENT = 4, DIP_SWITCH_ON_EVENT = 5, DIP_SWITCH_OFF_EVENT = 6 } keyevent_type_t;
/* key event */
typedef struct {
@@ -48,6 +48,8 @@ typedef struct {
/* special keypos_t entries */
#define KEYLOC_ENCODER_CW 253
#define KEYLOC_ENCODER_CCW 252
+#define KEYLOC_DIP_SWITCH_ON 251
+#define KEYLOC_DIP_SWITCH_OFF 250
static inline bool IS_NOEVENT(const keyevent_t event) {
return event.type == TICK_EVENT;
@@ -64,6 +66,9 @@ static inline bool IS_COMBOEVENT(const keyevent_t event) {
static inline bool IS_ENCODEREVENT(const keyevent_t event) {
return event.type == ENCODER_CW_EVENT || event.type == ENCODER_CCW_EVENT;
}
+static inline bool IS_DIPSWITCHEVENT(const keyevent_t event) {
+ return event.type == DIP_SWITCH_ON_EVENT || event.type == DIP_SWITCH_OFF_EVENT;
+}
/* Common keypos_t object factory */
#define MAKE_KEYPOS(row_num, col_num) ((keypos_t){.row = (row_num), .col = (col_num)})
@@ -92,6 +97,12 @@ static inline bool IS_ENCODEREVENT(const keyevent_t event) {
# define MAKE_ENCODER_CCW_EVENT(enc_id, press) MAKE_EVENT(KEYLOC_ENCODER_CCW, (enc_id), (press), ENCODER_CCW_EVENT)
#endif // ENCODER_MAP_ENABLE
+#ifdef DIP_SWITCH_MAP_ENABLE
+/* Dip Switch events */
+# define MAKE_DIPSWITCH_ON_EVENT(switch_id, press) MAKE_EVENT(KEYLOC_DIP_SWITCH_ON, (switch_id), (press), DIP_SWITCH_ON_EVENT)
+# define MAKE_DIPSWITCH_OFF_EVENT(switch_id, press) MAKE_EVENT(KEYLOC_DIP_SWITCH_OFF, (switch_id), (press), DIP_SWITCH_OFF_EVENT)
+#endif // DIP_SWITCH_MAP_ENABLE
+
/* it runs once at early stage of startup before keyboard_init. */
void keyboard_setup(void);
/* it runs once after initializing host side protocol, debug and MCU peripherals. */
diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c
index 864488a65c..cbfbcc8140 100644
--- a/quantum/keycode_config.c
+++ b/quantum/keycode_config.c
@@ -16,6 +16,8 @@
#include "keycode_config.h"
+keymap_config_t keymap_config;
+
/** \brief keycode_config
*
* This function is used to check a specific keycode against the bootmagic config,
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index 91e47a72ee..abdcd5c7ba 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -29,6 +29,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# include "encoder.h"
#endif
+#ifdef DIP_SWITCH_MAP_ENABLE
+# include "dip_switch.h"
+#endif
+
#ifdef BACKLIGHT_ENABLE
# include "backlight.h"
#endif
@@ -204,5 +208,13 @@ __attribute__((weak)) uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key
return keycode_at_encodermap_location(layer, key.col, false);
}
#endif // ENCODER_MAP_ENABLE
+#ifdef DIP_SWITCH_MAP_ENABLE
+ else if (key.row == KEYLOC_DIP_SWITCH_ON && key.col < NUM_DIP_SWITCHES) {
+ return keycode_at_dip_switch_map_location(key.col, true);
+ } else if (key.row == KEYLOC_DIP_SWITCH_OFF && key.col < NUM_DIP_SWITCHES) {
+ return keycode_at_dip_switch_map_location(key.col, false);
+ }
+#endif // DIP_SWITCH_MAP_ENABLE
+
return KC_NO;
}
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
new file mode 100644
index 0000000000..63c9166a31
--- /dev/null
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -0,0 +1,122 @@
+// Copyright 2024 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 FR_HASH KC_GRV // #
+#define FR_1 KC_1 // 1
+#define FR_2 KC_2 // 2
+#define FR_3 KC_3 // 3
+#define FR_4 KC_4 // 4
+#define FR_5 KC_5 // 5
+#define FR_6 KC_6 // 6
+#define FR_7 KC_7 // 7
+#define FR_8 KC_8 // 8
+#define FR_9 KC_9 // 9
+#define FR_0 KC_0 // 0
+#define FR_MINS KC_MINS // -
+#define FR_EQL KC_EQL // =
+#define FR_Q KC_Q // Q
+#define FR_W KC_W // W
+#define FR_E KC_E // E
+#define FR_R KC_R // R
+#define FR_T KC_T // T
+#define FR_Y KC_Y // Y
+#define FR_U KC_U // U
+#define FR_I KC_I // I
+#define FR_O KC_O // O
+#define FR_P KC_P // P
+#define FR_DCIR KC_LBRC // ^ (dead)
+#define FR_CEDL KC_RBRC // ¸ (dead)
+#define FR_A KC_A // A
+#define FR_S KC_S // S
+#define FR_D KC_D // D
+#define FR_F KC_F // F
+#define FR_G KC_G // G
+#define FR_H KC_H // H
+#define FR_J KC_J // J
+#define FR_K KC_K // K
+#define FR_L KC_L // L
+#define FR_SCLN KC_SCLN // ;
+#define FR_DGRV KC_QUOT // ` (dead)
+#define FR_LABK KC_NUHS // <
+#define FR_LDAQ KC_NUBS // «
+#define FR_Z KC_Z // Z
+#define FR_X KC_X // X
+#define FR_C KC_C // C
+#define FR_V KC_V // V
+#define FR_B KC_B // B
+#define FR_N KC_N // N
+#define FR_M KC_M // M
+#define FR_COMM KC_COMM // ,
+#define FR_DOT KC_DOT // .
+#define FR_EACU KC_SLSH // É
+#define FR_PIPE S(FR_HASH) // |
+#define FR_EXLM S(FR_1) // !
+#define FR_DQUO S(FR_2) // "
+#define FR_SLSH S(FR_3) // /
+#define FR_DLR S(FR_4) // $
+#define FR_PERC S(FR_5) // %
+#define FR_QUES S(FR_6) // ?
+#define FR_AMPR S(FR_7) // &
+#define FR_ASTR S(FR_8) // *
+#define FR_LPRN S(FR_9) // (
+#define FR_RPRN S(FR_0) // )
+#define FR_UNDS S(FR_MINS) // _
+#define FR_PLUS S(FR_EQL) // +
+#define FR_DIAE S(FR_CEDL) // ¨ (dead)
+#define FR_COLN S(FR_SCLN) // :
+#define FR_RABK S(FR_LABK) // >
+#define FR_RDAQ S(FR_LDAQ) // »
+#define FR_QUOT S(FR_COMM) // '
+#define FR_BSLS ALGR(FR_HASH) // (backslash)
+#define FR_PLMN ALGR(FR_1) // ±
+#define FR_AT ALGR(FR_2) // @
+#define FR_PND ALGR(FR_3) // £
+#define FR_CENT ALGR(FR_4) // ¢
+#define FR_CURR ALGR(FR_5) // ¤
+#define FR_NOT ALGR(FR_6) // ¬
+#define FR_BRKP ALGR(FR_7) // ¦
+#define FR_SUP2 ALGR(FR_8) // ²
+#define FR_SUP3 ALGR(FR_9) // ³
+#define FR_QRTR ALGR(FR_0) // ¼
+#define FR_HALF ALGR(FR_MINS) // ½
+#define FR_TQTR ALGR(FR_EQL) // ¾
+#define FR_SECT ALGR(FR_O) // §
+#define FR_PARA ALGR(FR_P) // ¶
+#define FR_LBRC ALGR(FR_DCIR) // [
+#define FR_RBRC ALGR(FR_CEDL) // ]
+#define FR_TILD ALGR(FR_SCLN) // ~
+#define FR_LCBR ALGR(FR_DGRV) // {
+#define FR_RCBR ALGR(FR_LABK) // }
+#define FR_DEG ALGR(FR_LDAQ) // °
+#define FR_MICR ALGR(FR_M) // µ
+#define FR_MACR ALGR(FR_COMM) // ¯
+#define FR_SHYP ALGR(FR_DOT) // ­ (soft hyphen)
+#define FR_ACUT ALGR(FR_EACU) // ´ (dead)
+
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..0ade828793
--- /dev/null
+++ b/quantum/keymap_extras/keymap_spanish_latin_america.h
@@ -0,0 +1,105 @@
+// Copyright 2024 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_canadian_french.h b/quantum/keymap_extras/sendstring_canadian_french.h
new file mode 100644
index 0000000000..2abba3a9d3
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_canadian_french.h
@@ -0,0 +1,120 @@
+/* Copyright 2023 Nebuleon
+ *
+ * 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 Canadian French layouts
+
+#pragma once
+
+#include "keymap_canadian_french.h"
+#include "send_string.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, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 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, 0, 0, 0, 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, 1, 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, 1, 1, 1, 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, 1, 0, 1, 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, FR_1, FR_2, FR_HASH, FR_4, FR_5, FR_7, FR_COMM,
+ // ( ) * + , - . /
+ FR_9, FR_0, FR_8, FR_EQL, FR_COMM, FR_MINS, FR_DOT, FR_3,
+ // 0 1 2 3 4 5 6 7
+ FR_0, FR_1, FR_2, FR_3, FR_4, FR_5, FR_6, FR_7,
+ // 8 9 : ; < = > ?
+ FR_8, FR_9, FR_SCLN, FR_SCLN, FR_LABK, FR_EQL, FR_LABK, FR_6,
+ // @ A B C D E F G
+ FR_2, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
+ // H I J K L M N O
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
+ // P Q R S T U V W
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
+ // X Y Z [ \ ] ^ _
+ FR_X, FR_Y, FR_Z, FR_DCIR, FR_HASH, FR_CEDL, FR_DCIR, FR_MINS,
+ // ` a b c d e f g
+ FR_DGRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
+ // h i j k l m n o
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
+ // p q r s t u v w
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
+ // x y z { | } ~ DEL
+ FR_X, FR_Y, FR_Z, FR_DGRV, FR_HASH, FR_LABK, FR_SCLN, KC_DEL
+};
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/keymap_introspection.c b/quantum/keymap_introspection.c
index e4a01d2e9a..71e3b429ea 100644
--- a/quantum/keymap_introspection.c
+++ b/quantum/keymap_introspection.c
@@ -72,6 +72,24 @@ __attribute__((weak)) uint16_t keycode_at_encodermap_location(uint8_t layer_num,
#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Dip Switch mapping
+
+#if defined(DIP_SWITCH_ENABLE) && defined(DIP_SWITCH_MAP_ENABLE)
+
+uint16_t keycode_at_dip_switch_map_location_raw(uint8_t switch_idx, bool on) {
+ if (switch_idx < NUM_DIP_SWITCHES) {
+ return pgm_read_word(&dip_switch_map[switch_idx][!!on]);
+ }
+ return KC_TRNS;
+}
+
+uint16_t keycode_at_dip_switch_map_location(uint8_t switch_idx, bool on) {
+ return keycode_at_dip_switch_map_location_raw(switch_idx, on);
+}
+
+#endif // defined(DIP_SWITCH_ENABLE) && defined(DIP_SWITCH_MAP_ENABLE)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Combos
#if defined(COMBO_ENABLE)
diff --git a/quantum/keymap_introspection.h b/quantum/keymap_introspection.h
index 2012a2b8cc..f7516bf42a 100644
--- a/quantum/keymap_introspection.h
+++ b/quantum/keymap_introspection.h
@@ -36,6 +36,18 @@ uint16_t keycode_at_encodermap_location(uint8_t layer_num, uint8_t encoder_idx,
#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Dip Switch mapping
+
+#if defined(DIP_SWITCH_ENABLE) && defined(DIP_SWITCH_MAP_ENABLE)
+
+// Get the keycode for the dip_switch mapping location, stored in firmware rather than any other persistent storage
+uint16_t keycode_at_dip_switch_map_location_raw(uint8_t switch_idx, bool on);
+// Get the keycode for the dip_switch mapping location, potentially stored dynamically
+uint16_t keycode_at_dip_switch_map_location(uint8_t switch_idx, bool on);
+
+#endif // defined(DIP_SWITCH_ENABLE) && defined(DIP_SWITCH_MAP_ENABLE)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Combos
#if defined(COMBO_ENABLE)
diff --git a/quantum/led.c b/quantum/led.c
index 8d86374a6f..1e7ee9db76 100644
--- a/quantum/led.c
+++ b/quantum/led.c
@@ -183,9 +183,7 @@ void led_task(void) {
last_led_modification_time = timer_read32();
if (debug_keyboard) {
- debug("led_task: ");
- debug_hex8(led_status);
- debug("\n");
+ dprintf("led_task: %02X\n", led_status);
}
led_set(led_status);
}
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 4d67a295df..c0fb4c810b 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;
@@ -101,7 +98,7 @@ void eeconfig_update_led_matrix_default(void) {
led_matrix_eeconfig.mode = LED_MATRIX_DEFAULT_MODE;
led_matrix_eeconfig.val = LED_MATRIX_DEFAULT_VAL;
led_matrix_eeconfig.speed = LED_MATRIX_DEFAULT_SPD;
- led_matrix_eeconfig.flags = LED_FLAG_ALL;
+ led_matrix_eeconfig.flags = LED_MATRIX_DEFAULT_FLAGS;
eeconfig_flush_led_matrix(true);
}
@@ -114,6 +111,16 @@ void eeconfig_debug_led_matrix(void) {
dprintf("led_matrix_eeconfig.flags = %d\n", led_matrix_eeconfig.flags);
}
+void led_matrix_reload_from_eeprom(void) {
+ led_matrix_disable_noeeprom();
+ /* Reset back to what we have in eeprom */
+ eeconfig_init_led_matrix();
+ eeconfig_debug_led_matrix(); // display current eeprom values
+ if (led_matrix_eeconfig.enable) {
+ led_matrix_mode_noeeprom(led_matrix_eeconfig.mode);
+ }
+}
+
__attribute__((weak)) uint8_t led_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) {
return 0;
}
@@ -156,9 +163,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 +212,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 +322,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;
@@ -432,12 +425,6 @@ void led_matrix_init(void) {
}
#endif // LED_MATRIX_KEYREACTIVE_ENABLED
- if (!eeconfig_is_enabled()) {
- dprintf("led_matrix_init_drivers eeconfig is not enabled.\n");
- eeconfig_init();
- eeconfig_update_led_matrix_default();
- }
-
eeconfig_init_led_matrix();
if (!led_matrix_eeconfig.mode) {
dprintf("led_matrix_init_drivers led_matrix_eeconfig.mode = 0. Write default values to EEPROM.\n");
@@ -447,7 +434,7 @@ void led_matrix_init(void) {
}
void led_matrix_set_suspend_state(bool state) {
-#ifdef LED_DISABLE_WHEN_USB_SUSPENDED
+#ifdef LED_MATRIX_SLEEP
if (state && !suspend_state && is_keyboard_master()) { // only run if turning off, and only once
led_task_render(0); // turn off all LEDs when suspending
led_task_flush(0); // and actually flash led state to LEDs
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index c903a230f4..941d42aeca 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -23,32 +23,9 @@
#include <stdint.h>
#include <stdbool.h>
#include "led_matrix_types.h"
+#include "led_matrix_drivers.h"
#include "keyboard.h"
-#if defined(LED_MATRIX_IS31FL3218)
-# include "is31fl3218-simple.h"
-#elif defined(LED_MATRIX_IS31FL3731)
-# include "is31fl3731-simple.h"
-#endif
-#ifdef LED_MATRIX_IS31FL3733
-# include "is31fl3733-simple.h"
-#endif
-#ifdef LED_MATRIX_IS31FL3736
-# include "is31fl3736-simple.h"
-#endif
-#ifdef LED_MATRIX_IS31FL3737
-# include "is31fl3737-simple.h"
-#endif
-#ifdef LED_MATRIX_IS31FL3741
-# include "is31fl3741-simple.h"
-#endif
-#if defined(IS31FLCOMMON)
-# include "is31flcommon.h"
-#endif
-#ifdef LED_MATRIX_SNLED27351
-# include "snled27351-simple.h"
-#endif
-
#ifndef LED_MATRIX_TIMEOUT
# define LED_MATRIX_TIMEOUT 0
#endif
@@ -81,6 +58,10 @@
# define LED_MATRIX_DEFAULT_SPD UINT8_MAX / 2
#endif
+#ifndef LED_MATRIX_DEFAULT_FLAGS
+# define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL
+#endif
+
#ifndef LED_MATRIX_LED_FLUSH_LIMIT
# define LED_MATRIX_LED_FLUSH_LIMIT 16
#endif
@@ -159,6 +140,8 @@ bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max);
void led_matrix_init(void);
+void led_matrix_reload_from_eeprom(void);
+
void led_matrix_set_suspend_state(bool state);
bool led_matrix_get_suspend_state(void);
void led_matrix_toggle(void);
@@ -193,18 +176,6 @@ led_flags_t led_matrix_get_flags(void);
void led_matrix_set_flags(led_flags_t flags);
void led_matrix_set_flags_noeeprom(led_flags_t flags);
-typedef struct {
- /* Perform any initialisation required for the other driver functions to work. */
- void (*init)(void);
-
- /* Set the brightness of a single LED in the buffer. */
- void (*set_value)(int index, uint8_t value);
- /* Set the brightness of all LEDS on the keyboard in the buffer. */
- void (*set_value_all)(uint8_t value);
- /* Flush any buffered changes to the hardware. */
- void (*flush)(void);
-} led_matrix_driver_t;
-
static inline bool led_matrix_check_finished_leds(uint8_t led_idx) {
#if defined(LED_MATRIX_SPLIT)
if (is_keyboard_left()) {
@@ -217,8 +188,6 @@ static inline bool led_matrix_check_finished_leds(uint8_t led_idx) {
#endif
}
-extern const led_matrix_driver_t led_matrix_driver;
-
extern led_eeconfig_t led_matrix_eeconfig;
extern uint32_t g_led_timer;
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index 117bed9851..b866383481 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "led_matrix.h"
+#include "led_matrix_drivers.h"
/* Each driver needs to define a struct:
*
@@ -73,12 +73,36 @@ const led_matrix_driver_t led_matrix_driver = {
.set_value_all = is31fl3741_set_value_all,
};
-#elif defined(IS31FLCOMMON)
+#elif defined(LED_MATRIX_IS31FL3742A)
const led_matrix_driver_t led_matrix_driver = {
- .init = IS31FL_simple_init_drivers,
- .flush = IS31FL_common_flush,
- .set_value = IS31FL_simple_set_brightness,
- .set_value_all = IS31FL_simple_set_brigntness_all,
+ .init = is31fl3742a_init_drivers,
+ .flush = is31fl3742a_flush,
+ .set_value = is31fl3742a_set_value,
+ .set_value_all = is31fl3742a_set_value_all,
+};
+
+#elif defined(LED_MATRIX_IS31FL3743A)
+const led_matrix_driver_t led_matrix_driver = {
+ .init = is31fl3743a_init_drivers,
+ .flush = is31fl3743a_flush,
+ .set_value = is31fl3743a_set_value,
+ .set_value_all = is31fl3743a_set_value_all,
+};
+
+#elif defined(LED_MATRIX_IS31FL3745)
+const led_matrix_driver_t led_matrix_driver = {
+ .init = is31fl3745_init_drivers,
+ .flush = is31fl3745_flush,
+ .set_value = is31fl3745_set_value,
+ .set_value_all = is31fl3745_set_value_all,
+};
+
+#elif defined(LED_MATRIX_IS31FL3746A)
+const led_matrix_driver_t led_matrix_driver = {
+ .init = is31fl3746a_init_drivers,
+ .flush = is31fl3746a_flush,
+ .set_value = is31fl3746a_set_value,
+ .set_value_all = is31fl3746a_set_value_all,
};
#elif defined(LED_MATRIX_SNLED27351)
diff --git a/quantum/led_matrix/led_matrix_drivers.h b/quantum/led_matrix/led_matrix_drivers.h
new file mode 100644
index 0000000000..d792600e1f
--- /dev/null
+++ b/quantum/led_matrix/led_matrix_drivers.h
@@ -0,0 +1,44 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <stdint.h>
+
+#if defined(LED_MATRIX_IS31FL3218)
+# include "is31fl3218-mono.h"
+#elif defined(LED_MATRIX_IS31FL3731)
+# include "is31fl3731-mono.h"
+#elif defined(LED_MATRIX_IS31FL3733)
+# include "is31fl3733-mono.h"
+#elif defined(LED_MATRIX_IS31FL3736)
+# include "is31fl3736-mono.h"
+#elif defined(LED_MATRIX_IS31FL3737)
+# include "is31fl3737-mono.h"
+#elif defined(LED_MATRIX_IS31FL3741)
+# include "is31fl3741-mono.h"
+#elif defined(LED_MATRIX_IS31FL3742A)
+# include "is31fl3742a-mono.h"
+#elif defined(LED_MATRIX_IS31FL3743A)
+# include "is31fl3743a-mono.h"
+#elif defined(LED_MATRIX_IS31FL3745)
+# include "is31fl3745-mono.h"
+#elif defined(LED_MATRIX_IS31FL3746A)
+# include "is31fl3746a-mono.h"
+#elif defined(LED_MATRIX_SNLED27351)
+# include "snled27351-mono.h"
+#endif
+
+typedef struct {
+ /* Perform any initialisation required for the other driver functions to work. */
+ void (*init)(void);
+
+ /* Set the brightness of a single LED in the buffer. */
+ void (*set_value)(int index, uint8_t value);
+ /* Set the brightness of all LEDS on the keyboard in the buffer. */
+ void (*set_value_all)(uint8_t value);
+ /* Flush any buffered changes to the hardware. */
+ void (*flush)(void);
+} led_matrix_driver_t;
+
+extern const led_matrix_driver_t led_matrix_driver;
diff --git a/quantum/logging/debug.h b/quantum/logging/debug.h
index 8415310356..017f9b9181 100644
--- a/quantum/logging/debug.h
+++ b/quantum/logging/debug.h
@@ -54,116 +54,14 @@ extern debug_config_t debug_config;
* Debug print utils
*/
#ifndef NO_DEBUG
-
-# define dprint(s) \
- do { \
- if (debug_enable) print(s); \
- } while (0)
-# define dprintln(s) \
- do { \
- if (debug_enable) println(s); \
- } while (0)
-# define dprintf(fmt, ...) \
- do { \
- if (debug_enable) xprintf(fmt, ##__VA_ARGS__); \
- } while (0)
-# define dmsg(s) dprintf("%s at %d: %s\n", __FILE__, __LINE__, s)
-
-/* Deprecated. DO NOT USE these anymore, use dprintf instead. */
-# define debug(s) \
- do { \
- if (debug_enable) print(s); \
- } while (0)
-# define debugln(s) \
- do { \
- if (debug_enable) println(s); \
- } while (0)
-# define debug_msg(s) \
- do { \
- if (debug_enable) { \
- print(__FILE__); \
- print(" at "); \
- print_dec(__LINE__); \
- print(" in "); \
- print(": "); \
- print(s); \
- } \
- } while (0)
-# define debug_dec(data) \
- do { \
- if (debug_enable) print_dec(data); \
- } while (0)
-# define debug_decs(data) \
- do { \
- if (debug_enable) print_decs(data); \
- } while (0)
-# define debug_hex4(data) \
- do { \
- if (debug_enable) print_hex4(data); \
- } while (0)
-# define debug_hex8(data) \
- do { \
- if (debug_enable) print_hex8(data); \
- } while (0)
-# define debug_hex16(data) \
- do { \
- if (debug_enable) print_hex16(data); \
+# define dprintf(fmt, ...) \
+ do { \
+ if (debug_config.enable) xprintf(fmt, ##__VA_ARGS__); \
} while (0)
-# define debug_hex32(data) \
- do { \
- if (debug_enable) print_hex32(data); \
- } while (0)
-# define debug_bin8(data) \
- do { \
- if (debug_enable) print_bin8(data); \
- } while (0)
-# define debug_bin16(data) \
- do { \
- if (debug_enable) print_bin16(data); \
- } while (0)
-# define debug_bin32(data) \
- do { \
- if (debug_enable) print_bin32(data); \
- } while (0)
-# define debug_bin_reverse8(data) \
- do { \
- if (debug_enable) print_bin_reverse8(data); \
- } while (0)
-# define debug_bin_reverse16(data) \
- do { \
- if (debug_enable) print_bin_reverse16(data); \
- } while (0)
-# define debug_bin_reverse32(data) \
- do { \
- if (debug_enable) print_bin_reverse32(data); \
- } while (0)
-# define debug_hex(data) debug_hex8(data)
-# define debug_bin(data) debug_bin8(data)
-# define debug_bin_reverse(data) debug_bin8(data)
-
#else /* NO_DEBUG */
-
-# define dprint(s)
-# define dprintln(s)
# define dprintf(fmt, ...)
-# define dmsg(s)
-# define debug(s)
-# define debugln(s)
-# define debug_msg(s)
-# define debug_dec(data)
-# define debug_decs(data)
-# define debug_hex4(data)
-# define debug_hex8(data)
-# define debug_hex16(data)
-# define debug_hex32(data)
-# define debug_bin8(data)
-# define debug_bin16(data)
-# define debug_bin32(data)
-# define debug_bin_reverse8(data)
-# define debug_bin_reverse16(data)
-# define debug_bin_reverse32(data)
-# define debug_hex(data)
-# define debug_bin(data)
-# define debug_bin_reverse(data)
-
#endif /* NO_DEBUG */
+
+#define dprint(s) dprintf(s)
+#define dprintln(s) dprintf(s "\r\n")
+#define dmsg(s) dprintf("%s at %d: %s\n", __FILE__, __LINE__, s)
diff --git a/quantum/logging/print.h b/quantum/logging/print.h
index 4c4195de50..984bc10758 100644
--- a/quantum/logging/print.h
+++ b/quantum/logging/print.h
@@ -52,40 +52,27 @@ void print_set_sendchar(sendchar_func_t func);
# if __has_include_next("_print.h")
# include_next "_print.h" /* Include the platforms print.h */
# else
-// Fall back to lib/printf
-# include "printf.h" // lib/printf/printf.h
-
-// Create user & normal print defines
-# define print(s) printf(s)
-# define println(s) printf(s "\r\n")
+# include "printf.h" // // Fall back to lib/printf/printf.h
# define xprintf printf
-# define uprint(s) printf(s)
-# define uprintln(s) printf(s "\r\n")
-# define uprintf printf
-
-# endif /* __has_include_next("_print.h") */
-#else /* NO_PRINT */
-# undef xprintf
+# endif
+#else
// Remove print defines
-# define print(s)
-# define println(s)
+# undef xprintf
# define xprintf(fmt, ...)
-# define uprintf(fmt, ...)
-# define uprint(s)
-# define uprintln(s)
+#endif
-#endif /* NO_PRINT */
+// Resolve before USER_PRINT can remove
+#define uprintf xprintf
#ifdef USER_PRINT
// Remove normal print defines
-# undef print
-# undef println
# undef xprintf
-# define print(s)
-# define println(s)
# define xprintf(fmt, ...)
#endif
+#define print(s) xprintf(s)
+#define println(s) xprintf(s "\r\n")
+
#define print_dec(i) xprintf("%u", i)
#define print_decs(i) xprintf("%d", i)
/* hex */
@@ -121,6 +108,9 @@ void print_set_sendchar(sendchar_func_t func);
//
// !!! DO NOT USE USER PRINT CALLS IN THE BODY OF QMK/TMK !!!
+#define uprint(s) uprintf(s)
+#define uprintln(s) uprintf(s "\r\n")
+
/* decimal */
#define uprint_dec(i) uprintf("%u", i)
#define uprint_decs(i) uprintf("%d", i)
diff --git a/quantum/pointing_device/pointing_device.c b/quantum/pointing_device/pointing_device.c
index 17dc701a41..2fa49ade8e 100644
--- a/quantum/pointing_device/pointing_device.c
+++ b/quantum/pointing_device/pointing_device.c
@@ -251,14 +251,15 @@ __attribute__((weak)) bool pointing_device_task(void) {
# else
if (readPin(POINTING_DEVICE_MOTION_PIN))
# endif
+ {
#endif
#if defined(SPLIT_POINTING_ENABLE)
# if defined(POINTING_DEVICE_COMBINED)
static uint8_t old_buttons = 0;
- local_mouse_report.buttons = old_buttons;
- local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
- old_buttons = local_mouse_report.buttons;
+ local_mouse_report.buttons = old_buttons;
+ local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
+ old_buttons = local_mouse_report.buttons;
# elif defined(POINTING_DEVICE_LEFT) || defined(POINTING_DEVICE_RIGHT)
local_mouse_report = POINTING_DEVICE_THIS_SIDE ? pointing_device_driver.get_report(local_mouse_report) : shared_mouse_report;
# else
@@ -268,6 +269,10 @@ __attribute__((weak)) bool pointing_device_task(void) {
local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
#endif // defined(SPLIT_POINTING_ENABLE)
+#ifdef POINTING_DEVICE_MOTION_PIN
+ }
+#endif
+
// allow kb to intercept and modify report
#if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
if (is_keyboard_left()) {
diff --git a/quantum/pointing_device/pointing_device_auto_mouse.c b/quantum/pointing_device/pointing_device_auto_mouse.c
index 3135b9e531..1b11fffedb 100644
--- a/quantum/pointing_device/pointing_device_auto_mouse.c
+++ b/quantum/pointing_device/pointing_device_auto_mouse.c
@@ -17,6 +17,7 @@
#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+# include <stdlib.h>
# include <string.h>
# include "pointing_device_auto_mouse.h"
# include "debug.h"
@@ -217,7 +218,11 @@ void auto_mouse_layer_off(void) {
* @return bool of pointing_device activation
*/
__attribute__((weak)) bool auto_mouse_activation(report_mouse_t mouse_report) {
- return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.h != 0 || mouse_report.v != 0 || mouse_report.buttons;
+ auto_mouse_context.total_mouse_movement.x += mouse_report.x;
+ auto_mouse_context.total_mouse_movement.y += mouse_report.y;
+ auto_mouse_context.total_mouse_movement.h += mouse_report.h;
+ auto_mouse_context.total_mouse_movement.v += mouse_report.v;
+ return abs(auto_mouse_context.total_mouse_movement.x) > AUTO_MOUSE_THRESHOLD || abs(auto_mouse_context.total_mouse_movement.y) > AUTO_MOUSE_THRESHOLD || abs(auto_mouse_context.total_mouse_movement.h) > AUTO_MOUSE_THRESHOLD || abs(auto_mouse_context.total_mouse_movement.v) > AUTO_MOUSE_THRESHOLD || mouse_report.buttons;
}
/**
@@ -235,14 +240,16 @@ void pointing_device_task_auto_mouse(report_mouse_t mouse_report) {
// update activation and reset debounce
auto_mouse_context.status.is_activated = auto_mouse_activation(mouse_report);
if (is_auto_mouse_active()) {
- auto_mouse_context.timer.active = timer_read();
- auto_mouse_context.timer.delay = 0;
+ auto_mouse_context.total_mouse_movement = (total_mouse_movement_t){.x = 0, .y = 0, .h = 0, .v = 0};
+ auto_mouse_context.timer.active = timer_read();
+ auto_mouse_context.timer.delay = 0;
if (!layer_state_is((AUTO_MOUSE_TARGET_LAYER))) {
layer_on((AUTO_MOUSE_TARGET_LAYER));
}
} else if (layer_state_is((AUTO_MOUSE_TARGET_LAYER)) && timer_elapsed(auto_mouse_context.timer.active) > auto_mouse_context.config.timeout) {
layer_off((AUTO_MOUSE_TARGET_LAYER));
- auto_mouse_context.timer.active = 0;
+ auto_mouse_context.timer.active = 0;
+ auto_mouse_context.total_mouse_movement = (total_mouse_movement_t){.x = 0, .y = 0, .h = 0, .v = 0};
}
}
diff --git a/quantum/pointing_device/pointing_device_auto_mouse.h b/quantum/pointing_device/pointing_device_auto_mouse.h
index 1343855e00..904f18b68e 100644
--- a/quantum/pointing_device/pointing_device_auto_mouse.h
+++ b/quantum/pointing_device/pointing_device_auto_mouse.h
@@ -42,9 +42,18 @@
#ifndef AUTO_MOUSE_DEBOUNCE
# define AUTO_MOUSE_DEBOUNCE 25
#endif
+#ifndef AUTO_MOUSE_THRESHOLD
+# define AUTO_MOUSE_THRESHOLD 10
+#endif
/* data structure */
typedef struct {
+ mouse_xy_report_t x;
+ mouse_xy_report_t y;
+ int8_t v;
+ int8_t h;
+} total_mouse_movement_t;
+typedef struct {
struct {
bool is_enabled;
uint8_t layer;
@@ -60,6 +69,7 @@ typedef struct {
bool is_toggled;
int8_t mouse_key_tracker;
} status;
+ total_mouse_movement_t total_mouse_movement;
} auto_mouse_context_t;
/* ----------Set up and control------------------------------------------------------------------------------ */
diff --git a/quantum/process_keycode/process_caps_word.c b/quantum/process_keycode/process_caps_word.c
index 1088c8f76c..b8fb868c6d 100644
--- a/quantum/process_keycode/process_caps_word.c
+++ b/quantum/process_keycode/process_caps_word.c
@@ -14,6 +14,7 @@
#include "process_caps_word.h"
#include "process_auto_shift.h"
+#include "process_space_cadet.h"
#include "caps_word.h"
#include "keycodes.h"
#include "quantum_keycodes.h"
@@ -110,6 +111,9 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
# endif // COMMAND_ENABLE
) {
caps_word_on();
+# ifdef SPACE_CADET_ENABLE
+ reset_space_cadet();
+# endif // SPACE_CADET_ENABLE
}
# endif // defined(COMMAND_ENABLE) && !defined(IS_COMMAND)
#endif // BOTH_SHIFTS_TURNS_ON_CAPS_WORD
diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c
index 377fcb69e2..5ecd897d16 100644
--- a/quantum/process_keycode/process_midi.c
+++ b/quantum/process_keycode/process_midi.c
@@ -38,7 +38,7 @@ void process_midi_all_notes_off(void) {
#endif // MIDI_BASIC
#ifdef MIDI_ADVANCED
-static uint8_t tone_status[2][MIDI_TONE_COUNT];
+static uint8_t tone_status[MIDI_TONE_COUNT];
static uint8_t midi_modulation;
static int8_t midi_modulation_step;
@@ -57,8 +57,7 @@ void midi_init(void) {
midi_config.modulation_interval = 8;
for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) {
- tone_status[0][i] = MIDI_INVALID_NOTE;
- tone_status[1][i] = 0;
+ tone_status[i] = MIDI_INVALID_NOTE;
}
midi_modulation = 0;
@@ -77,21 +76,19 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) {
uint8_t tone = keycode - MIDI_TONE_MIN;
uint8_t velocity = midi_config.velocity;
if (record->event.pressed) {
- uint8_t note = midi_compute_note(keycode);
- midi_send_noteon(&midi_device, channel, note, velocity);
- dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
- tone_status[1][tone] += 1;
- if (tone_status[0][tone] == MIDI_INVALID_NOTE) {
- tone_status[0][tone] = note;
+ if (tone_status[tone] == MIDI_INVALID_NOTE) {
+ uint8_t note = midi_compute_note(keycode);
+ midi_send_noteon(&midi_device, channel, note, velocity);
+ dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ tone_status[tone] = note;
}
} else {
- uint8_t note = tone_status[0][tone];
- tone_status[1][tone] -= 1;
- if (tone_status[1][tone] == 0) {
+ uint8_t note = tone_status[tone];
+ if (note != MIDI_INVALID_NOTE) {
midi_send_noteoff(&midi_device, channel, note, velocity);
dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
- tone_status[0][tone] = MIDI_INVALID_NOTE;
}
+ tone_status[tone] = MIDI_INVALID_NOTE;
}
return false;
}
diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c
index f948ad6238..3e280d57d9 100644
--- a/quantum/process_keycode/process_space_cadet.c
+++ b/quantum/process_keycode/process_space_cadet.c
@@ -157,10 +157,14 @@ bool process_space_cadet(uint16_t keycode, keyrecord_t *record) {
}
default: {
if (record->event.pressed) {
- sc_last = 0;
+ reset_space_cadet();
}
break;
}
}
return true;
}
+
+void reset_space_cadet() {
+ sc_last = 0;
+}
diff --git a/quantum/process_keycode/process_space_cadet.h b/quantum/process_keycode/process_space_cadet.h
index 6d10051532..9d254e26fd 100644
--- a/quantum/process_keycode/process_space_cadet.h
+++ b/quantum/process_keycode/process_space_cadet.h
@@ -21,3 +21,4 @@
void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdMod, uint8_t tapMod, uint8_t keycode);
bool process_space_cadet(uint16_t keycode, keyrecord_t *record);
+void reset_space_cadet(void);
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c
index b8a8d32f35..ce3b8fc81f 100644
--- a/quantum/process_keycode/process_tap_dance.c
+++ b/quantum/process_keycode/process_tap_dance.c
@@ -133,7 +133,7 @@ bool preprocess_tap_dance(uint16_t keycode, keyrecord_t *record) {
if (!active_td || keycode == active_td) return false;
- action = &tap_dance_actions[TD_INDEX(active_td)];
+ action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(active_td)];
action->state.interrupted = true;
action->state.interrupting_keycode = keycode;
process_tap_dance_action_on_dance_finished(action);
@@ -154,7 +154,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
- action = &tap_dance_actions[TD_INDEX(keycode)];
+ action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
action->state.pressed = record->event.pressed;
if (record->event.pressed) {
@@ -182,7 +182,7 @@ void tap_dance_task(void) {
if (!active_td || timer_elapsed(last_tap_time) <= GET_TAPPING_TERM(active_td, &(keyrecord_t){})) return;
- action = &tap_dance_actions[TD_INDEX(active_td)];
+ action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(active_td)];
if (!action->state.interrupted) {
process_tap_dance_action_on_dance_finished(action);
}
diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h
index 2b114dabd3..c0137c14a3 100644
--- a/quantum/process_keycode/process_tap_dance.h
+++ b/quantum/process_keycode/process_tap_dance.h
@@ -19,6 +19,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "action.h"
+#include "quantum_keycodes.h"
typedef struct {
uint16_t interrupting_keycode;
@@ -74,8 +75,7 @@ typedef struct {
#define ACTION_TAP_DANCE_FN_ADVANCED_WITH_RELEASE(user_fn_on_each_tap, user_fn_on_each_release, user_fn_on_dance_finished, user_fn_on_dance_reset) \
{ .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, user_fn_on_each_release}, .user_data = NULL, }
-#define TD(n) (QK_TAP_DANCE | TD_INDEX(n))
-#define TD_INDEX(code) ((code)&0xFF)
+#define TD_INDEX(code) QK_TAP_DANCE_GET_INDEX(code)
#define TAP_DANCE_KEYCODE(state) TD(((tap_dance_action_t *)state) - tap_dance_actions)
extern tap_dance_action_t tap_dance_actions[];
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 996e93a12f..98d848581d 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -42,7 +42,6 @@
#include "action_layer.h"
#include "eeconfig.h"
#include "bootloader.h"
-#include "bootmagic.h"
#include "timer.h"
#include "sync_timer.h"
#include "gpio.h"
@@ -59,6 +58,10 @@
#include <stdio.h>
#include <string.h>
+#ifdef BOOTMAGIC_ENABLE
+# include "bootmagic.h"
+#endif
+
#ifdef DEFERRED_EXEC_ENABLE
# include "deferred_exec.h"
#endif
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index d3249bd455..882e1d07ae 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -190,6 +190,10 @@
#define SH_T(kc) (QK_SWAP_HANDS | ((kc)&0xFF))
#define QK_SWAP_HANDS_GET_TAP_KEYCODE(kc) ((kc)&0xFF)
+// Tap dance
+#define TD(i) (QK_TAP_DANCE | ((i)&0xFF))
+#define QK_TAP_DANCE_GET_INDEX(kc) ((kc)&0xFF)
+
// MIDI aliases
#define MIDI_TONE_MIN QK_MIDI_NOTE_C_0
#define MIDI_TONE_MAX QK_MIDI_NOTE_B_5
diff --git a/quantum/rgb_matrix/animations/solid_reactive_anim.h b/quantum/rgb_matrix/animations/solid_reactive_anim.h
index edf6041350..e18ffb5f2b 100644
--- a/quantum/rgb_matrix/animations/solid_reactive_anim.h
+++ b/quantum/rgb_matrix/animations/solid_reactive_anim.h
@@ -7,7 +7,7 @@ static HSV SOLID_REACTIVE_math(HSV hsv, uint16_t offset) {
# ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
hsv.h = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 8) >> 4);
# endif
- hsv.h += qsub8(130, offset);
+ hsv.h += scale8(255 - offset, 64);
return hsv;
}
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index d93d189827..655aca1867 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;
@@ -103,7 +100,7 @@ void eeconfig_update_rgb_matrix_default(void) {
rgb_matrix_config.mode = RGB_MATRIX_DEFAULT_MODE;
rgb_matrix_config.hsv = (HSV){RGB_MATRIX_DEFAULT_HUE, RGB_MATRIX_DEFAULT_SAT, RGB_MATRIX_DEFAULT_VAL};
rgb_matrix_config.speed = RGB_MATRIX_DEFAULT_SPD;
- rgb_matrix_config.flags = LED_FLAG_ALL;
+ rgb_matrix_config.flags = RGB_MATRIX_DEFAULT_FLAGS;
eeconfig_flush_rgb_matrix(true);
}
@@ -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;
@@ -473,12 +460,6 @@ void rgb_matrix_init(void) {
}
#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
- if (!eeconfig_is_enabled()) {
- dprintf("rgb_matrix_init_drivers eeconfig is not enabled.\n");
- eeconfig_init();
- eeconfig_update_rgb_matrix_default();
- }
-
eeconfig_init_rgb_matrix();
if (!rgb_matrix_config.mode) {
dprintf("rgb_matrix_init_drivers rgb_matrix_config.mode = 0. Write default values to EEPROM.\n");
@@ -488,7 +469,7 @@ void rgb_matrix_init(void) {
}
void rgb_matrix_set_suspend_state(bool state) {
-#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
+#ifdef RGB_MATRIX_SLEEP
if (state && !suspend_state) { // only run if turning off, and only once
rgb_task_render(0); // turn off all LEDs when suspending
rgb_task_flush(0); // and actually flash led state to LEDs
diff --git a/quantum/rgb_matrix/rgb_matrix.h b/quantum/rgb_matrix/rgb_matrix.h
index 9a3ffb8ea3..f8a6845e02 100644
--- a/quantum/rgb_matrix/rgb_matrix.h
+++ b/quantum/rgb_matrix/rgb_matrix.h
@@ -21,31 +21,10 @@
#include <stdint.h>
#include <stdbool.h>
#include "rgb_matrix_types.h"
+#include "rgb_matrix_drivers.h"
#include "color.h"
#include "keyboard.h"
-#if defined(RGB_MATRIX_IS31FL3218)
-# include "is31fl3218.h"
-#elif defined(RGB_MATRIX_IS31FL3731)
-# include "is31fl3731.h"
-#elif defined(RGB_MATRIX_IS31FL3733)
-# include "is31fl3733.h"
-#elif defined(RGB_MATRIX_IS31FL3736)
-# include "is31fl3736.h"
-#elif defined(RGB_MATRIX_IS31FL3737)
-# include "is31fl3737.h"
-#elif defined(RGB_MATRIX_IS31FL3741)
-# include "is31fl3741.h"
-#elif defined(IS31FLCOMMON)
-# include "is31flcommon.h"
-#elif defined(RGB_MATRIX_SNLED27351)
-# include "snled27351.h"
-#elif defined(RGB_MATRIX_AW20216S)
-# include "aw20216s.h"
-#elif defined(RGB_MATRIX_WS2812)
-# include "ws2812.h"
-#endif
-
#ifndef RGB_MATRIX_TIMEOUT
# define RGB_MATRIX_TIMEOUT 0
#endif
@@ -99,6 +78,10 @@
# define RGB_MATRIX_DEFAULT_SPD UINT8_MAX / 2
#endif
+#ifndef RGB_MATRIX_DEFAULT_FLAGS
+# define RGB_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL
+#endif
+
#ifndef RGB_MATRIX_LED_FLUSH_LIMIT
# define RGB_MATRIX_LED_FLUSH_LIMIT 16
#endif
@@ -272,17 +255,6 @@ void rgb_matrix_set_flags_noeeprom(led_flags_t flags);
# define rgblight_decrease_speed_noeeprom rgb_matrix_decrease_speed_noeeprom
#endif
-typedef struct {
- /* Perform any initialisation required for the other driver functions to work. */
- void (*init)(void);
- /* Set the colour of a single LED in the buffer. */
- void (*set_color)(int index, uint8_t r, uint8_t g, uint8_t b);
- /* Set the colour of all LEDS on the keyboard in the buffer. */
- void (*set_color_all)(uint8_t r, uint8_t g, uint8_t b);
- /* Flush any buffered changes to the hardware. */
- void (*flush)(void);
-} rgb_matrix_driver_t;
-
static inline bool rgb_matrix_check_finished_leds(uint8_t led_idx) {
#if defined(RGB_MATRIX_SPLIT)
if (is_keyboard_left()) {
@@ -295,8 +267,6 @@ static inline bool rgb_matrix_check_finished_leds(uint8_t led_idx) {
#endif
}
-extern const rgb_matrix_driver_t rgb_matrix_driver;
-
extern rgb_config_t rgb_matrix_config;
extern uint32_t g_rgb_timer;
diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c
index 0f979cb233..b5e539657d 100644
--- a/quantum/rgb_matrix/rgb_matrix_drivers.c
+++ b/quantum/rgb_matrix/rgb_matrix_drivers.c
@@ -14,7 +14,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "rgb_matrix.h"
+#include "rgb_matrix_drivers.h"
+
+#include <stdbool.h>
+#include "keyboard.h"
+#include "color.h"
#include "util.h"
/* Each driver needs to define the struct
@@ -72,12 +76,36 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
.set_color_all = is31fl3741_set_color_all,
};
-#elif defined(IS31FLCOMMON)
+#elif defined(RGB_MATRIX_IS31FL3742A)
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = is31fl3742a_init_drivers,
+ .flush = is31fl3742a_flush,
+ .set_color = is31fl3742a_set_color,
+ .set_color_all = is31fl3742a_set_color_all,
+};
+
+#elif defined(RGB_MATRIX_IS31FL3743A)
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = is31fl3743a_init_drivers,
+ .flush = is31fl3743a_flush,
+ .set_color = is31fl3743a_set_color,
+ .set_color_all = is31fl3743a_set_color_all,
+};
+
+#elif defined(RGB_MATRIX_IS31FL3745)
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = is31fl3745_init_drivers,
+ .flush = is31fl3745_flush,
+ .set_color = is31fl3745_set_color,
+ .set_color_all = is31fl3745_set_color_all,
+};
+
+#elif defined(RGB_MATRIX_IS31FL3746A)
const rgb_matrix_driver_t rgb_matrix_driver = {
- .init = IS31FL_RGB_init_drivers,
- .flush = IS31FL_common_flush,
- .set_color = IS31FL_RGB_set_color,
- .set_color_all = IS31FL_RGB_set_color_all,
+ .init = is31fl3746a_init_drivers,
+ .flush = is31fl3746a_flush,
+ .set_color = is31fl3746a_set_color,
+ .set_color_all = is31fl3746a_set_color_all,
};
#elif defined(RGB_MATRIX_SNLED27351)
@@ -103,7 +131,7 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
# endif
// LED color buffer
-rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
+rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_COUNT];
bool ws2812_dirty = false;
static void init(void) {
@@ -112,7 +140,7 @@ static void init(void) {
static void flush(void) {
if (ws2812_dirty) {
- ws2812_setleds(rgb_matrix_ws2812_array, RGB_MATRIX_LED_COUNT);
+ ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_COUNT);
ws2812_dirty = false;
}
}
diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.h b/quantum/rgb_matrix/rgb_matrix_drivers.h
new file mode 100644
index 0000000000..8f919b1b3c
--- /dev/null
+++ b/quantum/rgb_matrix/rgb_matrix_drivers.h
@@ -0,0 +1,47 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <stdint.h>
+
+#if defined(RGB_MATRIX_AW20216S)
+# include "aw20216s.h"
+#elif defined(RGB_MATRIX_IS31FL3218)
+# include "is31fl3218.h"
+#elif defined(RGB_MATRIX_IS31FL3731)
+# include "is31fl3731.h"
+#elif defined(RGB_MATRIX_IS31FL3733)
+# include "is31fl3733.h"
+#elif defined(RGB_MATRIX_IS31FL3736)
+# include "is31fl3736.h"
+#elif defined(RGB_MATRIX_IS31FL3737)
+# include "is31fl3737.h"
+#elif defined(RGB_MATRIX_IS31FL3741)
+# include "is31fl3741.h"
+#elif defined(RGB_MATRIX_IS31FL3742A)
+# include "is31fl3742a.h"
+#elif defined(RGB_MATRIX_IS31FL3743A)
+# include "is31fl3743a.h"
+#elif defined(RGB_MATRIX_IS31FL3745)
+# include "is31fl3745.h"
+#elif defined(RGB_MATRIX_IS31FL3746A)
+# include "is31fl3746a.h"
+#elif defined(RGB_MATRIX_SNLED27351)
+# include "snled27351.h"
+#elif defined(RGB_MATRIX_WS2812)
+# include "ws2812.h"
+#endif
+
+typedef struct {
+ /* Perform any initialisation required for the other driver functions to work. */
+ void (*init)(void);
+ /* Set the colour of a single LED in the buffer. */
+ void (*set_color)(int index, uint8_t r, uint8_t g, uint8_t b);
+ /* Set the colour of all LEDS on the keyboard in the buffer. */
+ void (*set_color_all)(uint8_t r, uint8_t g, uint8_t b);
+ /* Flush any buffered changes to the hardware. */
+ void (*flush)(void);
+} rgb_matrix_driver_t;
+
+extern const rgb_matrix_driver_t rgb_matrix_driver;
diff --git a/quantum/rgblight/rgblight.c b/quantum/rgblight/rgblight.c
index 8ac886d441..530cb04688 100644
--- a/quantum/rgblight/rgblight.c
+++ b/quantum/rgblight/rgblight.c
@@ -116,7 +116,7 @@ animation_status_t animation_status = {};
#endif
#ifndef LED_ARRAY
-rgb_led_t led[RGBLED_NUM];
+rgb_led_t led[RGBLIGHT_LED_COUNT];
# define LED_ARRAY led
#endif
@@ -126,7 +126,7 @@ rgblight_segment_t const *const *rgblight_layers = NULL;
static bool deferred_set_layer_state = false;
#endif
-rgblight_ranges_t rgblight_ranges = {0, RGBLED_NUM, 0, RGBLED_NUM, RGBLED_NUM};
+rgblight_ranges_t rgblight_ranges = {0, RGBLIGHT_LED_COUNT, 0, RGBLIGHT_LED_COUNT, RGBLIGHT_LED_COUNT};
void rgblight_set_clipping_range(uint8_t start_pos, uint8_t num_leds) {
rgblight_ranges.clipping_start_pos = start_pos;
@@ -134,8 +134,8 @@ void rgblight_set_clipping_range(uint8_t start_pos, uint8_t num_leds) {
}
void rgblight_set_effect_range(uint8_t start_pos, uint8_t num_leds) {
- if (start_pos >= RGBLED_NUM) return;
- if (start_pos + num_leds > RGBLED_NUM) return;
+ if (start_pos >= RGBLIGHT_LED_COUNT) return;
+ if (start_pos + num_leds > RGBLIGHT_LED_COUNT) return;
rgblight_ranges.effect_start_pos = start_pos;
rgblight_ranges.effect_end_pos = start_pos + num_leds;
rgblight_ranges.effect_num_leds = num_leds;
@@ -229,13 +229,7 @@ void rgblight_init(void) {
return;
}
- dprintf("rgblight_init called.\n");
dprintf("rgblight_init start!\n");
- if (!eeconfig_is_enabled()) {
- dprintf("rgblight_init eeconfig is not enabled.\n");
- eeconfig_init();
- eeconfig_update_rgblight_default();
- }
rgblight_config.raw = eeconfig_read_rgblight();
RGBLIGHT_SPLIT_SET_CHANGE_MODEHSVS;
if (!rgblight_config.mode) {
@@ -664,7 +658,7 @@ void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) {
}
void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index) {
- if (!rgblight_config.enable || index >= RGBLED_NUM) {
+ if (!rgblight_config.enable || index >= RGBLIGHT_LED_COUNT) {
return;
}
@@ -700,7 +694,7 @@ static uint8_t get_interval_time(const uint8_t *default_interval_address, uint8_
#endif
void rgblight_setrgb_range(uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8_t end) {
- if (!rgblight_config.enable || start < 0 || start >= end || end > RGBLED_NUM) {
+ if (!rgblight_config.enable || start < 0 || start >= end || end > RGBLIGHT_LED_COUNT) {
return;
}
@@ -727,19 +721,19 @@ void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start,
#ifndef RGBLIGHT_SPLIT
void rgblight_setrgb_master(uint8_t r, uint8_t g, uint8_t b) {
- rgblight_setrgb_range(r, g, b, 0, (uint8_t)RGBLED_NUM / 2);
+ rgblight_setrgb_range(r, g, b, 0, (uint8_t)RGBLIGHT_LED_COUNT / 2);
}
void rgblight_setrgb_slave(uint8_t r, uint8_t g, uint8_t b) {
- rgblight_setrgb_range(r, g, b, (uint8_t)RGBLED_NUM / 2, (uint8_t)RGBLED_NUM);
+ rgblight_setrgb_range(r, g, b, (uint8_t)RGBLIGHT_LED_COUNT / 2, (uint8_t)RGBLIGHT_LED_COUNT);
}
void rgblight_sethsv_master(uint8_t hue, uint8_t sat, uint8_t val) {
- rgblight_sethsv_range(hue, sat, val, 0, (uint8_t)RGBLED_NUM / 2);
+ rgblight_sethsv_range(hue, sat, val, 0, (uint8_t)RGBLIGHT_LED_COUNT / 2);
}
void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val) {
- rgblight_sethsv_range(hue, sat, val, (uint8_t)RGBLED_NUM / 2, (uint8_t)RGBLED_NUM);
+ rgblight_sethsv_range(hue, sat, val, (uint8_t)RGBLIGHT_LED_COUNT / 2, (uint8_t)RGBLIGHT_LED_COUNT);
}
#endif // ifndef RGBLIGHT_SPLIT
@@ -789,7 +783,7 @@ static void rgblight_layers_write(void) {
break; // No more segments
}
// Write segment.count LEDs
- rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)];
+ rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLIGHT_LED_COUNT)];
for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) {
# ifdef RGBLIGHT_LAYERS_RETAIN_VAL
sethsv(segment.hue, segment.sat, current_val, led_ptr);
@@ -900,12 +894,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 +903,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
- rgb_led_t led0[RGBLED_NUM];
- for (uint8_t i = 0; i < RGBLED_NUM; i++) {
+#ifdef RGBLIGHT_LED_MAP
+ rgb_led_t led0[RGBLIGHT_LED_COUNT];
+ for (uint8_t i = 0; i < RGBLIGHT_LED_COUNT; 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 */
@@ -1279,8 +1266,8 @@ void rgblight_effect_snake(animation_status_t *anim) {
# endif
for (j = 0; j < RGBLIGHT_EFFECT_SNAKE_LENGTH; j++) {
k = pos + j * increment;
- if (k > RGBLED_NUM) {
- k = k % (RGBLED_NUM);
+ if (k > RGBLIGHT_LED_COUNT) {
+ k = k % (RGBLIGHT_LED_COUNT);
}
if (k < 0) {
k = k + rgblight_ranges.effect_num_leds;
@@ -1465,7 +1452,7 @@ typedef struct PACKED {
uint8_t max_life;
} TwinkleState;
-static TwinkleState led_twinkle_state[RGBLED_NUM];
+static TwinkleState led_twinkle_state[RGBLIGHT_LED_COUNT];
void rgblight_effect_twinkle(animation_status_t *anim) {
const bool random_color = anim->delta / 3;
diff --git a/quantum/rgblight/rgblight.h b/quantum/rgblight/rgblight.h
index a222ab6b9f..9e2b073776 100644
--- a/quantum/rgblight/rgblight.h
+++ b/quantum/rgblight/rgblight.h
@@ -16,6 +16,12 @@
#pragma once
+// DEPRECATED DEFINES - DO NOT USE
+#if defined(RGBLED_NUM)
+# define RGBLIGHT_LED_COUNT RGBLED_NUM
+#endif
+// ========
+
/***** rgblight_mode(mode)/rgblight_mode_noeeprom(mode) ****
old mode number (before 0.6.117) to new mode name table
@@ -160,6 +166,7 @@ enum RGBLIGHT_EFFECT_MODE {
#include <stdint.h>
#include <stdbool.h>
+#include "rgblight_drivers.h"
#include "progmem.h"
#include "eeconfig.h"
#include "ws2812.h"
@@ -233,7 +240,7 @@ void rgblight_unblink_all_but_layer(uint8_t layer);
#endif
-extern rgb_led_t led[RGBLED_NUM];
+extern rgb_led_t led[RGBLIGHT_LED_COUNT];
extern const uint8_t RGBLED_BREATHING_INTERVALS[4] PROGMEM;
extern const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM;
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/quantum/split_common/split_util.c b/quantum/split_common/split_util.c
index 874339361d..2f592bd4cf 100644
--- a/quantum/split_common/split_util.c
+++ b/quantum/split_common/split_util.c
@@ -147,10 +147,10 @@ __attribute__((weak)) bool is_keyboard_left_impl(void) {
return readPin(SPLIT_HAND_PIN);
# endif
#elif defined(SPLIT_HAND_MATRIX_GRID)
-# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
- return peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID);
-# else
+# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT
return !peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID);
+# else
+ return peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID);
# endif
#elif defined(EE_HANDS)
if (!eeconfig_is_enabled()) {
diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c
index aade3c98d7..83edc34859 100644
--- a/quantum/split_common/transport.c
+++ b/quantum/split_common/transport.c
@@ -56,7 +56,7 @@ i2c_status_t transport_trigger_callback(int8_t id) {
// Kick off the "callback executor", now that data has been written to the slave
split_shmem->transaction_id = id;
split_transaction_desc_t *trans = &split_transaction_table[I2C_EXECUTE_CALLBACK];
- return i2c_writeReg(SLAVE_I2C_ADDRESS, trans->initiator2target_offset, split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size, SLAVE_I2C_TIMEOUT);
+ return i2c_write_register(SLAVE_I2C_ADDRESS, trans->initiator2target_offset, split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size, SLAVE_I2C_TIMEOUT);
}
bool transport_execute_transaction(int8_t id, const void *initiator2target_buf, uint16_t initiator2target_length, void *target2initiator_buf, uint16_t target2initiator_length) {
@@ -65,7 +65,7 @@ bool transport_execute_transaction(int8_t id, const void *initiator2target_buf,
if (initiator2target_length > 0) {
size_t len = trans->initiator2target_buffer_size < initiator2target_length ? trans->initiator2target_buffer_size : initiator2target_length;
memcpy(split_trans_initiator2target_buffer(trans), initiator2target_buf, len);
- if ((status = i2c_writeReg(SLAVE_I2C_ADDRESS, trans->initiator2target_offset, split_trans_initiator2target_buffer(trans), len, SLAVE_I2C_TIMEOUT)) < 0) {
+ if ((status = i2c_write_register(SLAVE_I2C_ADDRESS, trans->initiator2target_offset, split_trans_initiator2target_buffer(trans), len, SLAVE_I2C_TIMEOUT)) < 0) {
return false;
}
}
@@ -77,7 +77,7 @@ bool transport_execute_transaction(int8_t id, const void *initiator2target_buf,
if (target2initiator_length > 0) {
size_t len = trans->target2initiator_buffer_size < target2initiator_length ? trans->target2initiator_buffer_size : target2initiator_length;
- if ((status = i2c_readReg(SLAVE_I2C_ADDRESS, trans->target2initiator_offset, split_trans_target2initiator_buffer(trans), len, SLAVE_I2C_TIMEOUT)) < 0) {
+ if ((status = i2c_read_register(SLAVE_I2C_ADDRESS, trans->target2initiator_offset, split_trans_target2initiator_buffer(trans), len, SLAVE_I2C_TIMEOUT)) < 0) {
return false;
}
memcpy(target2initiator_buf, split_trans_target2initiator_buffer(trans), len);
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)
diff --git a/tests/caps_word/test_caps_word.cpp b/tests/caps_word/test_caps_word.cpp
index 802f1e960e..28d86e9324 100644
--- a/tests/caps_word/test_caps_word.cpp
+++ b/tests/caps_word/test_caps_word.cpp
@@ -423,8 +423,8 @@ TEST_P(CapsWordBothShifts, PressLRLR) {
run_one_scan_loop();
right_shift.press();
- // For mod-tap and Space Cadet keys, wait for the tapping term.
- if (left_shift.code == LSFT_T(KC_A) || left_shift.code == QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN) {
+ // For mod-tap, wait for the tapping term.
+ if (left_shift.code == LSFT_T(KC_A)) {
idle_for(TAPPING_TERM);
}
@@ -461,7 +461,7 @@ TEST_P(CapsWordBothShifts, PressLRRL) {
run_one_scan_loop();
right_shift.press();
- if (left_shift.code == LSFT_T(KC_A) || left_shift.code == QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN) {
+ if (left_shift.code == LSFT_T(KC_A)) {
idle_for(TAPPING_TERM);
}
run_one_scan_loop();
diff --git a/tests/tap_dance/examples.c b/tests/tap_dance/examples.c
index 13086bbb4b..5377b397d3 100644
--- a/tests/tap_dance/examples.c
+++ b/tests/tap_dance/examples.c
@@ -83,7 +83,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case TD(CT_CLN):
- action = &tap_dance_actions[TD_INDEX(keycode)];
+ action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
if (!record->event.pressed && action->state.count && !action->state.finished) {
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
tap_code16(tap_hold->tap);
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index 66f9ad0318..7b1e641213 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -51,6 +51,11 @@
extern keymap_config_t keymap_config;
#endif
+#if defined(CONSOLE_ENABLE)
+# define RBUF_SIZE 256
+# include "ring_buffer.h"
+#endif
+
/* ---------------------------------------------------------
* Global interface variables and declarations
* ---------------------------------------------------------
@@ -217,6 +222,24 @@ static const USBEndpointConfig digitizer_ep_config = {
};
#endif
+#ifdef CONSOLE_ENABLE
+/* Console endpoint state structure */
+static USBInEndpointState console_ep_state;
+
+/* Console endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
+static const USBEndpointConfig console_ep_config = {
+ USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
+ NULL, /* SETUP packet notification callback */
+ dummy_usb_cb, /* IN notification callback */
+ NULL, /* OUT notification callback */
+ CONSOLE_EPSIZE, /* IN maximum packet size */
+ 0, /* OUT maximum packet size */
+ &console_ep_state, /* IN Endpoint state */
+ NULL, /* OUT endpoint state */
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */
+};
+#endif
+
#ifdef USB_ENDPOINTS_ARE_REORDERABLE
typedef struct {
size_t queue_capacity_in;
@@ -347,9 +370,6 @@ typedef struct {
typedef struct {
union {
struct {
-#ifdef CONSOLE_ENABLE
- usb_driver_config_t console_driver;
-#endif
#ifdef RAW_ENABLE
usb_driver_config_t raw_driver;
#endif
@@ -365,13 +385,6 @@ typedef struct {
} usb_driver_configs_t;
static usb_driver_configs_t drivers = {
-#ifdef CONSOLE_ENABLE
-# define CONSOLE_IN_CAPACITY 4
-# define CONSOLE_OUT_CAPACITY 4
-# define CONSOLE_IN_MODE USB_EP_MODE_TYPE_INTR
-# define CONSOLE_OUT_MODE USB_EP_MODE_TYPE_INTR
- .console_driver = QMK_USB_DRIVER_CONFIG(CONSOLE, 0, true),
-#endif
#ifdef RAW_ENABLE
# ifndef RAW_IN_CAPACITY
# define RAW_IN_CAPACITY 4
@@ -510,6 +523,9 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP)
usbInitEndpointI(usbp, DIGITIZER_IN_EPNUM, &digitizer_ep_config);
#endif
+#ifdef CONSOLE_ENABLE
+ usbInitEndpointI(usbp, CONSOLE_IN_EPNUM, &console_ep_config);
+#endif
for (int i = 0; i < NUM_USB_DRIVERS; i++) {
#ifdef USB_ENDPOINTS_ARE_REORDERABLE
usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].inout_ep_config);
@@ -915,50 +931,35 @@ void send_digitizer(report_digitizer_t *report) {
#ifdef CONSOLE_ENABLE
int8_t sendchar(uint8_t c) {
- static bool timed_out = false;
- /* The `timed_out` state is an approximation of the ideal `is_listener_disconnected?` state.
- *
- * When a 5ms timeout write has timed out, hid_listen is most likely not running, or not
- * listening to this keyboard, so we go into the timed_out state. In this state we assume
- * that hid_listen is most likely not gonna be connected to us any time soon, so it would
- * be wasteful to write follow-up characters with a 5ms timeout, it would all add up and
- * unncecessarily slow down the firmware. However instead of just dropping the characters,
- * we write them with a TIME_IMMEDIATE timeout, which is a zero timeout,
- * and this will succeed only if hid_listen gets connected again. When a write with
- * TIME_IMMEDIATE timeout succeeds, we know that hid_listen is listening to us again, and
- * we can go back to the timed_out = false state, and following writes will be executed
- * with a 5ms timeout. The reason we don't just send all characters with the TIME_IMMEDIATE
- * timeout is that this could cause bytes to be lost even if hid_listen is running, if there
- * is a lot of data being sent over the console.
- *
- * This logic will work correctly as long as hid_listen is able to receive at least 200
- * bytes per second. On a heavily overloaded machine that's so overloaded that it's
- * unusable, and constantly swapping, hid_listen might have trouble receiving 200 bytes per
- * second, so some bytes might be lost on the console.
- */
-
- const sysinterval_t timeout = timed_out ? TIME_IMMEDIATE : TIME_MS2I(5);
- const size_t result = chnWriteTimeout(&drivers.console_driver.driver, &c, 1, timeout);
- timed_out = (result == 0);
- return result;
-}
-
-// Just a dummy function for now, this could be exposed as a weak function
-// Or connected to the actual QMK console
-static void console_receive(uint8_t *data, uint8_t length) {
- (void)data;
- (void)length;
+ rbuf_enqueue(c);
+ return 0;
}
void console_task(void) {
- uint8_t buffer[CONSOLE_EPSIZE];
- size_t size = 0;
- do {
- size = chnReadTimeout(&drivers.console_driver.driver, buffer, sizeof(buffer), TIME_IMMEDIATE);
- if (size > 0) {
- console_receive(buffer, size);
- }
- } while (size > 0);
+ if (!rbuf_has_data()) {
+ return;
+ }
+
+ osalSysLock();
+ if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
+ osalSysUnlock();
+ return;
+ }
+
+ if (usbGetTransmitStatusI(&USB_DRIVER, CONSOLE_IN_EPNUM)) {
+ osalSysUnlock();
+ return;
+ }
+
+ // Send in chunks - padded with zeros to 32
+ char send_buf[CONSOLE_EPSIZE] = {0};
+ uint8_t send_buf_count = 0;
+ while (rbuf_has_data() && send_buf_count < CONSOLE_EPSIZE) {
+ send_buf[send_buf_count++] = rbuf_dequeue();
+ }
+
+ usbStartTransmitI(&USB_DRIVER, CONSOLE_IN_EPNUM, (const uint8_t *)send_buf, CONSOLE_EPSIZE);
+ osalSysUnlock();
}
#endif /* CONSOLE_ENABLE */
diff --git a/tmk_core/protocol/chibios/usb_main.h b/tmk_core/protocol/chibios/usb_main.h
index 07186f76b8..3fd1e84fe8 100644
--- a/tmk_core/protocol/chibios/usb_main.h
+++ b/tmk_core/protocol/chibios/usb_main.h
@@ -57,7 +57,4 @@ void usb_event_queue_task(void);
/* Putchar over the USB console */
int8_t sendchar(uint8_t c);
-/* Flush output (send everything immediately) */
-void console_flush_output(void);
-
#endif /* CONSOLE_ENABLE */
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index 553f69b1e4..22cc0db8ce 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -184,41 +184,16 @@ static void raw_hid_task(void) {
* Console
******************************************************************************/
#ifdef CONSOLE_ENABLE
-/** \brief Console Task
+/** \brief Console Tasks
*
* FIXME: Needs doc
*/
-static void Console_Task(void) {
+static void console_flush_task(void) {
/* Device must be connected and configured for the task to run */
if (USB_DeviceState != DEVICE_STATE_Configured) return;
uint8_t ep = Endpoint_GetCurrentEndpoint();
-# if 0
- // TODO: impl receivechar()/recvchar()
- Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM);
-
- /* Check to see if a packet has been sent from the host */
- if (Endpoint_IsOUTReceived())
- {
- /* Check to see if the packet contains data */
- if (Endpoint_IsReadWriteAllowed())
- {
- /* Create a temporary buffer to hold the read in report from the host */
- uint8_t ConsoleData[CONSOLE_EPSIZE];
-
- /* Read Console Report Data */
- Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL);
-
- /* Process Console Report Data */
- //ProcessConsoleHIDReport(ConsoleData);
- }
-
- /* Finalize the stream transfer to send the last packet */
- Endpoint_ClearOUT();
- }
-# endif
-
/* IN packet */
Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM);
if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) {
@@ -237,6 +212,10 @@ static void Console_Task(void) {
Endpoint_SelectEndpoint(ep);
}
+
+void console_task(void) {
+ // do nothing
+}
#endif
/*******************************************************************************
@@ -341,7 +320,7 @@ void EVENT_USB_Device_StartOfFrame(void) {
count = 0;
if (!console_flush) return;
- Console_Task();
+ console_flush_task();
console_flush = false;
}
@@ -381,9 +360,6 @@ void EVENT_USB_Device_ConfigurationChanged(void) {
#ifdef CONSOLE_ENABLE
/* Setup console endpoint */
ConfigSuccess &= Endpoint_ConfigureEndpoint((CONSOLE_IN_EPNUM | ENDPOINT_DIR_IN), EP_TYPE_INTERRUPT, CONSOLE_EPSIZE, 1);
-# if 0
- ConfigSuccess &= Endpoint_ConfigureEndpoint((CONSOLE_OUT_EPNUM | ENDPOINT_DIR_OUT), EP_TYPE_INTERRUPT, CONSOLE_EPSIZE, 1);
-# endif
#endif
#ifdef MIDI_ENABLE
@@ -627,7 +603,7 @@ int8_t sendchar(uint8_t c) {
// The `timed_out` state is an approximation of the ideal `is_listener_disconnected?` state.
static bool timed_out = false;
- // prevents Console_Task() from running during sendchar() runs.
+ // prevents console_flush_task() from running during sendchar() runs.
// or char will be lost. These two function is mutually exclusive.
CONSOLE_FLUSH_SET(false);
@@ -812,7 +788,7 @@ static void setup_usb(void) {
USB_Init();
- // for Console_Task
+ // for console_flush_task
USB_Device_EnableSOFEvents();
}
@@ -876,6 +852,10 @@ void protocol_pre_task(void) {
}
void protocol_post_task(void) {
+#ifdef CONSOLE_ENABLE
+ console_task();
+#endif
+
#ifdef MIDI_ENABLE
MIDI_Device_USBTask(&USB_MIDI_Interface);
#endif
diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c
index eb214c0492..0e2e63ad8e 100644
--- a/tmk_core/protocol/usb_descriptor.c
+++ b/tmk_core/protocol/usb_descriptor.c
@@ -420,14 +420,6 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = {
HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE),
HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
-
- // Data from host
- HID_RI_USAGE(8, 0x76), // Vendor Defined
- HID_RI_LOGICAL_MINIMUM(8, 0x00),
- HID_RI_LOGICAL_MAXIMUM(16, 0x00FF),
- HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE),
- HID_RI_REPORT_SIZE(8, 0x08),
- HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0),
};
#endif
@@ -677,7 +669,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = {
},
.InterfaceNumber = CONSOLE_INTERFACE,
.AlternateSetting = 0x00,
- .TotalEndpoints = 2,
+ .TotalEndpoints = 1,
.Class = HID_CSCP_HIDClass,
.SubClass = HID_CSCP_NonBootSubclass,
.Protocol = HID_CSCP_NonBootProtocol,
@@ -704,16 +696,6 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = {
.EndpointSize = CONSOLE_EPSIZE,
.PollingIntervalMS = 0x01
},
- .Console_OUTEndpoint = {
- .Header = {
- .Size = sizeof(USB_Descriptor_Endpoint_t),
- .Type = DTYPE_Endpoint
- },
- .EndpointAddress = (ENDPOINT_DIR_OUT | CONSOLE_OUT_EPNUM),
- .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
- .EndpointSize = CONSOLE_EPSIZE,
- .PollingIntervalMS = 0x01
- },
#endif
#ifdef MIDI_ENABLE
diff --git a/tmk_core/protocol/usb_descriptor.h b/tmk_core/protocol/usb_descriptor.h
index 1268bdae73..2469990f4d 100644
--- a/tmk_core/protocol/usb_descriptor.h
+++ b/tmk_core/protocol/usb_descriptor.h
@@ -97,7 +97,6 @@ typedef struct {
USB_Descriptor_Interface_t Console_Interface;
USB_HID_Descriptor_HID_t Console_HID;
USB_Descriptor_Endpoint_t Console_INEndpoint;
- USB_Descriptor_Endpoint_t Console_OUTEndpoint;
#endif
#ifdef MIDI_ENABLE
@@ -232,19 +231,6 @@ enum usb_endpoints {
#ifdef CONSOLE_ENABLE
CONSOLE_IN_EPNUM = NEXT_EPNUM,
-
-# ifdef PROTOCOL_CHIBIOS
-// ChibiOS has enough memory and descriptor to actually enable the endpoint
-// It could use the same endpoint numbers, as that's supported by ChibiOS
-// But the QMK code currently assumes that the endpoint numbers are different
-# ifdef USB_ENDPOINTS_ARE_REORDERABLE
-# define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
-# else
- CONSOLE_OUT_EPNUM = NEXT_EPNUM,
-# endif
-# else
-# define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
-# endif
#endif
#ifdef MIDI_ENABLE
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index d09b2f19b7..cfeeed3712 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -717,13 +717,6 @@ const PROGMEM uchar console_hid_report[] = {
0x95, CONSOLE_BUFFER_SIZE, // Report Count
0x75, 0x08, // Report Size (8)
0x81, 0x02, // Input (Data, Variable, Absolute)
- // Data from host
- 0x09, 0x76, // Usage (Vendor Defined)
- 0x15, 0x00, // Logical Minimum (0x00)
- 0x26, 0xFF, 0x00, // Logical Maximum (0x00FF)
- 0x95, CONSOLE_BUFFER_SIZE, // Report Count
- 0x75, 0x08, // Report Size (8)
- 0x91, 0x02, // Output (Data)
0xC0 // End Collection
};
#endif
@@ -991,16 +984,6 @@ const PROGMEM usbConfigurationDescriptor_t usbConfigurationDescriptor = {
.wMaxPacketSize = CONSOLE_EPSIZE,
.bInterval = 0x01
},
- .consoleOUTEndpoint = {
- .header = {
- .bLength = sizeof(usbEndpointDescriptor_t),
- .bDescriptorType = USBDESCR_ENDPOINT
- },
- .bEndpointAddress = (USBRQ_DIR_HOST_TO_DEVICE | USB_CFG_EP3_NUMBER),
- .bmAttributes = 0x03,
- .wMaxPacketSize = CONSOLE_EPSIZE,
- .bInterval = 0x01
- }
# endif
};
diff --git a/tmk_core/protocol/vusb/vusb.h b/tmk_core/protocol/vusb/vusb.h
index ae17e5e014..4750e95bf2 100644
--- a/tmk_core/protocol/vusb/vusb.h
+++ b/tmk_core/protocol/vusb/vusb.h
@@ -114,7 +114,6 @@ typedef struct usbConfigurationDescriptor {
usbInterfaceDescriptor_t consoleInterface;
usbHIDDescriptor_t consoleHID;
usbEndpointDescriptor_t consoleINEndpoint;
- usbEndpointDescriptor_t consoleOUTEndpoint;
#endif
} __attribute__((packed)) usbConfigurationDescriptor_t;