summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/labeler.yml1
-rw-r--r--.github/workflows/cli.yml1
-rw-r--r--.gitignore5
-rw-r--r--.gitmodules4
-rw-r--r--Makefile36
-rwxr-xr-xbin/qmk58
-rw-r--r--bootloader.mk9
-rw-r--r--build_keyboard.mk48
-rw-r--r--build_test.mk2
-rw-r--r--common_features.mk216
-rw-r--r--data/schemas/keyboard.jsonschema4
-rw-r--r--disable_features.mk3
-rw-r--r--docs/_summary.md1
-rw-r--r--docs/audio_driver.md14
-rw-r--r--docs/cli_commands.md75
-rw-r--r--docs/cli_development.md2
-rw-r--r--docs/compatible_microcontrollers.md8
-rw-r--r--docs/configurator_default_keymaps.md4
-rw-r--r--docs/contributing.md2
-rw-r--r--docs/custom_matrix.md2
-rw-r--r--docs/de/cli.md19
-rw-r--r--docs/driver_installation_zadig.md1
-rw-r--r--docs/es/hardware_drivers.md4
-rw-r--r--docs/es/hardware_keyboard_guidelines.md2
-rw-r--r--docs/faq_debug.md4
-rw-r--r--docs/faq_misc.md2
-rw-r--r--docs/feature_backlight.md12
-rw-r--r--docs/feature_bluetooth.md25
-rw-r--r--docs/feature_digitizer.md2
-rw-r--r--docs/feature_haptic_feedback.md8
-rw-r--r--docs/feature_joystick.md2
-rw-r--r--docs/feature_layouts.md2
-rw-r--r--docs/feature_midi.md2
-rw-r--r--docs/feature_pointing_device.md2
-rw-r--r--docs/feature_programmable_button.md74
-rw-r--r--docs/feature_ps2_mouse.md40
-rw-r--r--docs/feature_rawhid.md4
-rw-r--r--docs/feature_rgb_matrix.md12
-rw-r--r--docs/feature_stenography.md2
-rw-r--r--docs/feature_swap_hands.md2
-rw-r--r--docs/feature_userspace.md4
-rw-r--r--docs/flashing_bootloadhid.md2
-rw-r--r--docs/fr-fr/cli.md19
-rw-r--r--docs/fr-fr/getting_started_github.md1
-rw-r--r--docs/getting_started_docker.md10
-rw-r--r--docs/getting_started_github.md1
-rw-r--r--docs/getting_started_make_guide.md4
-rw-r--r--docs/getting_started_vagrant.md8
-rw-r--r--docs/hardware_drivers.md4
-rw-r--r--docs/hardware_keyboard_guidelines.md30
-rw-r--r--docs/he-il/getting_started_github.md1
-rw-r--r--docs/how_keyboards_work.md2
-rw-r--r--docs/i2c_driver.md65
-rw-r--r--docs/ja/compatible_microcontrollers.md1
-rw-r--r--docs/ja/feature_haptic_feedback.md7
-rw-r--r--docs/ja/feature_ps2_mouse.md31
-rw-r--r--docs/ja/getting_started_github.md1
-rw-r--r--docs/ja/hardware_drivers.md4
-rw-r--r--docs/ja/hardware_keyboard_guidelines.md2
-rw-r--r--docs/ja/i2c_driver.md11
-rw-r--r--docs/ja/understanding_qmk.md4
-rw-r--r--docs/keycodes.md40
-rw-r--r--docs/newbs_git_resynchronize_a_branch.md16
-rw-r--r--docs/ru-ru/getting_started_github.md1
-rw-r--r--docs/understanding_qmk.md5
-rw-r--r--docs/unit_testing.md6
-rw-r--r--docs/zh-cn/getting_started_github.md1
-rw-r--r--doxygen-todo14
-rw-r--r--drivers/bluetooth/adafruit_ble.cpp (renamed from tmk_core/protocol/lufa/adafruit_ble.cpp)44
-rw-r--r--drivers/bluetooth/adafruit_ble.h (renamed from tmk_core/protocol/lufa/adafruit_ble.h)0
-rw-r--r--drivers/bluetooth/outputselect.c (renamed from tmk_core/protocol/lufa/outputselect.c)0
-rw-r--r--drivers/bluetooth/outputselect.h (renamed from tmk_core/protocol/lufa/outputselect.h)0
-rw-r--r--drivers/bluetooth/ringbuffer.hpp (renamed from tmk_core/protocol/lufa/ringbuffer.hpp)0
-rw-r--r--drivers/led/apa102.c4
-rw-r--r--drivers/ps2/ps2.h (renamed from tmk_core/protocol/ps2.h)0
-rw-r--r--drivers/ps2/ps2_busywait.c (renamed from tmk_core/protocol/ps2_busywait.c)0
-rw-r--r--drivers/ps2/ps2_interrupt.c (renamed from tmk_core/protocol/ps2_interrupt.c)18
-rw-r--r--drivers/ps2/ps2_io.h (renamed from tmk_core/protocol/ps2_io.h)0
-rw-r--r--drivers/ps2/ps2_mouse.c (renamed from tmk_core/protocol/ps2_mouse.c)10
-rw-r--r--drivers/ps2/ps2_mouse.h (renamed from tmk_core/protocol/ps2_mouse.h)0
-rw-r--r--drivers/qwiic/micro_oled.c482
-rw-r--r--drivers/qwiic/micro_oled.h134
-rw-r--r--drivers/qwiic/qwiic.c31
-rw-r--r--drivers/qwiic/qwiic.mk17
-rw-r--r--drivers/qwiic/util/font5x7.h39
-rw-r--r--drivers/qwiic/util/font8x16.h39
-rw-r--r--drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h105
-rw-r--r--drivers/ugfx/gdisp/is31fl3731c/driver.mk3
-rw-r--r--drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c302
-rw-r--r--drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h36
-rw-r--r--drivers/ugfx/gdisp/st7565/board_st7565_template.h96
-rw-r--r--drivers/ugfx/gdisp/st7565/driver.mk3
-rw-r--r--drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c314
-rw-r--r--drivers/ugfx/gdisp/st7565/gdisp_lld_config.h27
-rw-r--r--drivers/ugfx/gdisp/st7565/st7565.h39
-rw-r--r--drivers/usb2422.c (renamed from tmk_core/protocol/arm_atsam/usb/usb2422.h)216
-rw-r--r--drivers/usb2422.h59
-rw-r--r--generic_features.mk49
-rw-r--r--keyboards/10bleoledhub/rules.mk4
-rw-r--r--keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk3
-rw-r--r--keyboards/40percentclub/ut47/post_rules.mk4
-rw-r--r--keyboards/40percentclub/ut47/rules.mk5
-rw-r--r--keyboards/6ball/6ball.h16
-rw-r--r--keyboards/6ball/config.h5
-rw-r--r--keyboards/9key/9key.h16
-rw-r--r--keyboards/9key/config.h5
-rwxr-xr-xkeyboards/aeboards/constellation/rev2/config.h4
-rw-r--r--keyboards/aeboards/ext65/rev2/config.h4
-rw-r--r--keyboards/ai03/orbit/orbit.h36
-rw-r--r--keyboards/alf/dc60/dc60.h31
-rw-r--r--keyboards/alf/x2/config.h38
-rwxr-xr-xkeyboards/alpha/alpha.h19
-rwxr-xr-xkeyboards/alpha/config.h5
-rw-r--r--keyboards/amj96/amj96.h2
-rw-r--r--keyboards/amjpad/amjpad.h59
-rw-r--r--keyboards/amjpad/config.h5
-rw-r--r--keyboards/atreus/feather/rules.mk3
-rw-r--r--keyboards/atreus62/config.h5
-rw-r--r--keyboards/baguette/baguette.h54
-rw-r--r--keyboards/bantam44/bantam44.h26
-rw-r--r--keyboards/bantam44/config.h5
-rw-r--r--keyboards/bfake/bfake.h63
-rwxr-xr-xkeyboards/bigseries/1key/1key.h10
-rwxr-xr-xkeyboards/bigseries/1key/config.h6
-rwxr-xr-xkeyboards/bigseries/2key/2key.h10
-rwxr-xr-xkeyboards/bigseries/2key/config.h6
-rwxr-xr-xkeyboards/bigseries/3key/3key.h10
-rwxr-xr-xkeyboards/bigseries/3key/config.h6
-rwxr-xr-xkeyboards/bigseries/4key/4key.h14
-rwxr-xr-xkeyboards/bigseries/4key/config.h6
-rw-r--r--keyboards/blockey/blockey.h39
-rw-r--r--keyboards/blockey/config.h5
-rw-r--r--keyboards/boston_meetup/2019/2019.c220
-rw-r--r--keyboards/boston_meetup/2019/config.h11
-rw-r--r--keyboards/boston_meetup/2019/keymaps/default/keymap.c13
-rw-r--r--keyboards/boston_meetup/2019/keymaps/readme.md22
-rw-r--r--keyboards/boston_meetup/2019/rules.mk28
-rw-r--r--keyboards/bpiphany/frosty_flake/config.h5
-rw-r--r--keyboards/bpiphany/kitten_paw/config.h5
-rw-r--r--keyboards/bpiphany/kitten_paw/kitten_paw.h69
-rw-r--r--keyboards/bpiphany/sixshooter/sixshooter.h16
-rw-r--r--keyboards/bpiphany/tiger_lily/config.h5
-rw-r--r--keyboards/bpiphany/tiger_lily/tiger_lily.h73
-rw-r--r--keyboards/bpiphany/unloved_bastard/config.h5
-rw-r--r--keyboards/bpiphany/unloved_bastard/unloved_bastard.h107
-rw-r--r--keyboards/bthlabs/geekpad/geekpad.h21
-rw-r--r--keyboards/c39/keymaps/drashna/rules.mk3
-rw-r--r--keyboards/cannonkeys/satisfaction75/config.h17
-rw-r--r--keyboards/cannonkeys/satisfaction75/rules.mk5
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction75.c39
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction75.h16
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c2
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction_oled.c486
-rw-r--r--keyboards/chimera_ergo/chimera_ergo.h30
-rw-r--r--keyboards/chimera_ergo/config.h5
-rw-r--r--keyboards/chimera_ls/chimera_ls.h28
-rw-r--r--keyboards/chimera_ls/config.h5
-rw-r--r--keyboards/chimera_ortho/chimera_ortho.h28
-rw-r--r--keyboards/chimera_ortho/config.h5
-rw-r--r--keyboards/christmas_tree/V2017/V2017.h5
-rw-r--r--keyboards/christmas_tree/V2017/config.h5
-rw-r--r--keyboards/christmas_tree/christmas_tree.h26
-rw-r--r--keyboards/christmas_tree/config.h5
-rw-r--r--keyboards/ckeys/nakey/config.h5
-rw-r--r--keyboards/ckeys/nakey/nakey.h24
-rw-r--r--keyboards/ckeys/obelus/config.h5
-rw-r--r--keyboards/ckeys/obelus/obelus.h8
-rw-r--r--keyboards/clueboard/17/17.h5
-rw-r--r--keyboards/clueboard/17/config.h5
-rw-r--r--keyboards/clueboard/2x1800/2018/2018.h6
-rw-r--r--keyboards/clueboard/60/60.h6
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/config.h4
-rw-r--r--keyboards/coarse/vinta/vinta.h78
-rw-r--r--keyboards/comet46/comet46.h27
-rw-r--r--keyboards/comet46/config.h5
-rw-r--r--keyboards/comet46/i2c.h5
-rwxr-xr-xkeyboards/contra/config.h5
-rwxr-xr-xkeyboards/contra/contra.h37
-rw-r--r--keyboards/converter/adb_usb/adb.c (renamed from tmk_core/protocol/adb.c)4
-rw-r--r--keyboards/converter/adb_usb/adb.h (renamed from tmk_core/protocol/adb.h)0
-rw-r--r--keyboards/converter/adb_usb/adb_usb.h95
-rw-r--r--keyboards/converter/adb_usb/matrix.c8
-rw-r--r--keyboards/converter/adb_usb/rules.mk4
-rw-r--r--keyboards/converter/ibm_terminal/config.h39
-rw-r--r--keyboards/converter/ibm_terminal/ibm_terminal.h105
-rw-r--r--keyboards/converter/m0110_usb/m0110.c (renamed from tmk_core/protocol/m0110.c)0
-rw-r--r--keyboards/converter/m0110_usb/m0110.h (renamed from tmk_core/protocol/m0110.h)0
-rw-r--r--keyboards/converter/m0110_usb/m0110_usb.h82
-rw-r--r--keyboards/converter/m0110_usb/rules.mk1
-rw-r--r--keyboards/converter/palm_usb/post_rules.mk7
-rw-r--r--keyboards/converter/palm_usb/rules.mk7
-rw-r--r--keyboards/converter/sun_usb/config.h5
-rw-r--r--keyboards/converter/sun_usb/post_rules.mk6
-rw-r--r--keyboards/converter/sun_usb/rules.mk6
-rw-r--r--keyboards/converter/sun_usb/type3/type3.h55
-rw-r--r--keyboards/converter/sun_usb/type5/type5.h144
-rw-r--r--keyboards/converter/usb_usb/ble/ble.h5
-rw-r--r--keyboards/converter/usb_usb/ble/rules.mk6
-rw-r--r--keyboards/converter/usb_usb/config.h5
-rw-r--r--keyboards/converter/usb_usb/hasu/hasu.h5
-rw-r--r--keyboards/converter/usb_usb/pro_micro/pro_micro.h5
-rw-r--r--keyboards/converter/usb_usb/usb_usb.h252
-rw-r--r--keyboards/converter/xt_usb/rules.mk3
-rw-r--r--keyboards/converter/xt_usb/xt.h (renamed from tmk_core/protocol/xt.h)0
-rw-r--r--keyboards/converter/xt_usb/xt_interrupt.c (renamed from tmk_core/protocol/xt_interrupt.c)0
-rw-r--r--keyboards/cu24/config.h5
-rw-r--r--keyboards/cu24/cu24.h36
-rw-r--r--keyboards/cu75/config.h5
-rw-r--r--keyboards/cu75/cu75.h91
-rw-r--r--keyboards/dc01/left/i2c.h5
-rw-r--r--keyboards/dekunukem/duckypad/config.h4
-rw-r--r--keyboards/dichotomy/config.h5
-rwxr-xr-xkeyboards/dichotomy/dichotomy.h30
-rw-r--r--keyboards/diverge3/diverge3.h37
-rw-r--r--keyboards/dm9records/ergoinu/post_rules.mk9
-rw-r--r--keyboards/dm9records/ergoinu/rules.mk10
-rw-r--r--keyboards/do60/config.h5
-rw-r--r--keyboards/dtisaac/dosa40rgb/config.h5
-rw-r--r--keyboards/dtisaac/dosa40rgb/rules.mk3
-rw-r--r--keyboards/dztech/dz60rgb/v1/config.h6
-rw-r--r--keyboards/dztech/dz60rgb/v2/config.h6
-rw-r--r--keyboards/dztech/dz60rgb/v2_1/config.h6
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v1/config.h6
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2/config.h6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v1/config.h6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2/config.h6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2_1/config.h6
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md4
-rwxr-xr-xkeyboards/dztech/dz65rgb/v3/config.h4
-rw-r--r--keyboards/eco/config.h5
-rw-r--r--keyboards/eco/eco.h14
-rw-r--r--keyboards/eco/rev1/config.h5
-rw-r--r--keyboards/eco/rev1/rev1.h26
-rw-r--r--keyboards/eco/rev2/config.h5
-rw-r--r--keyboards/eco/rev2/rev2.h26
-rw-r--r--keyboards/ep/40/40.h31
-rw-r--r--keyboards/ep/96/96.h35
-rw-r--r--keyboards/ergodash/config.h5
-rw-r--r--keyboards/ergodash/mini/mini.h67
-rw-r--r--keyboards/ergodash/rev1/rev1.h182
-rw-r--r--keyboards/ergodox_infinity/board_is31fl3731c.h110
-rw-r--r--keyboards/ergodox_infinity/board_st7565.h96
-rw-r--r--keyboards/ergodox_infinity/config.h13
-rw-r--r--keyboards/ergodox_infinity/ergodox_infinity.c12
-rw-r--r--keyboards/ergodox_infinity/ergodox_infinity.h125
-rw-r--r--keyboards/ergodox_infinity/gfxconf.h27
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h2
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c4
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h123
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c79
-rw-r--r--keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h35
-rw-r--r--keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c384
-rw-r--r--keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h125
-rw-r--r--keyboards/ergodox_infinity/readme.md24
-rw-r--r--keyboards/ergodox_infinity/rules.mk7
-rw-r--r--keyboards/ergodox_infinity/simple_visualizer.h123
-rw-r--r--keyboards/ergodox_infinity/visualizer.c328
-rw-r--r--keyboards/ergotaco/post_rules.mk8
-rw-r--r--keyboards/ergotaco/rules.mk3
-rw-r--r--keyboards/ergotravel/rev1/rev1.h30
-rw-r--r--keyboards/evil80/evil80.h36
-rw-r--r--keyboards/evyd13/atom47/rev3/info.json9
-rw-r--r--keyboards/evyd13/atom47/rev4/info.json9
-rw-r--r--keyboards/evyd13/atom47/rev5/config.h6
-rw-r--r--keyboards/evyd13/gh80_3700/keymaps/ps2/config.h10
-rw-r--r--keyboards/exclusive/e6_rgb/config.h6
-rw-r--r--keyboards/exclusive/e6v2/le/config.h5
-rw-r--r--keyboards/exclusive/e6v2/le/le.h76
-rw-r--r--keyboards/exclusive/e6v2/oe/config.h5
-rw-r--r--keyboards/exclusive/e6v2/oe/oe.h99
-rw-r--r--keyboards/eyeohdesigns/sprh/info.json149
-rw-r--r--keyboards/ez_maker/directpins/teensy_32/config.h4
-rw-r--r--keyboards/ez_maker/directpins/teensy_lc/config.h4
-rw-r--r--keyboards/fc660c/actuation_point.h5
-rw-r--r--keyboards/fc660c/config.h5
-rw-r--r--keyboards/fc660c/fc660c.h41
-rw-r--r--keyboards/fc660c/i2c.h5
-rw-r--r--keyboards/fc980c/actuation_point.h5
-rw-r--r--keyboards/fc980c/config.h5
-rw-r--r--keyboards/fc980c/i2c.h5
-rw-r--r--keyboards/ferris/0_2/config.h6
-rw-r--r--keyboards/ferris/0_2/matrix.c5
-rw-r--r--keyboards/flehrad/bigswitch/bigswitch.h10
-rw-r--r--keyboards/flehrad/bigswitch/config.h6
-rw-r--r--keyboards/fleuron/config.h5
-rw-r--r--keyboards/fleuron/fleuron.h33
-rw-r--r--keyboards/four_banger/config.h5
-rw-r--r--keyboards/four_banger/four_banger.h13
-rwxr-xr-xkeyboards/fractal/config.h5
-rw-r--r--keyboards/gh80_3000/config.h5
-rw-r--r--keyboards/gh80_3000/gh80_3000.h217
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c2
-rw-r--r--keyboards/gray_studio/cod67/cod67.h29
-rwxr-xr-xkeyboards/gskt00/config.h31
-rwxr-xr-xkeyboards/gskt00/gskt00.c2
-rwxr-xr-xkeyboards/gskt00/gskt00.h57
-rw-r--r--keyboards/gskt00/readme.md17
-rw-r--r--keyboards/hadron/hadron.h44
-rw-r--r--keyboards/hadron/i2c.c166
-rw-r--r--keyboards/hadron/i2c.h49
-rw-r--r--keyboards/hadron/ver2/config.h6
-rw-r--r--keyboards/hadron/ver2/keymaps/default/keymap.c121
-rw-r--r--keyboards/hadron/ver2/keymaps/readme.md22
-rw-r--r--keyboards/hadron/ver2/keymaps/side_numpad/keymap.c162
-rw-r--r--keyboards/hadron/ver2/rules.mk31
-rw-r--r--keyboards/hadron/ver2/ver2.c64
-rw-r--r--keyboards/hadron/ver2/ver2.h7
-rw-r--r--keyboards/hadron/ver3/config.h17
-rw-r--r--keyboards/hadron/ver3/keymaps/default/config.h1
-rw-r--r--keyboards/hadron/ver3/keymaps/default/keymap.c4
-rw-r--r--keyboards/hadron/ver3/keymaps/readme.md24
-rw-r--r--keyboards/hadron/ver3/rules.mk7
-rw-r--r--keyboards/hadron/ver3/ver3.c222
-rw-r--r--keyboards/handwired/108key_trackpoint/config.h10
-rw-r--r--keyboards/handwired/412_64/412_64.h34
-rw-r--r--keyboards/handwired/42/rules.mk3
-rw-r--r--keyboards/handwired/arrow_pad/arrow_pad.h47
-rw-r--r--keyboards/handwired/arrow_pad/config.h5
-rw-r--r--keyboards/handwired/atreus50/atreus50.h26
-rw-r--r--keyboards/handwired/atreus50/config.h5
-rw-r--r--keyboards/handwired/bdn9_ble/rules.mk3
-rw-r--r--keyboards/handwired/cmd60/cmd60.h29
-rw-r--r--keyboards/handwired/cmd60/config.h5
-rw-r--r--keyboards/handwired/dactyl/config.h5
-rw-r--r--keyboards/handwired/dactyl/dactyl.h65
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_2_5/config.h3
-rw-r--r--keyboards/handwired/fivethirteen/config.h5
-rw-r--r--keyboards/handwired/fivethirteen/fivethirteen.h30
-rw-r--r--keyboards/handwired/fruity60/rules.mk4
-rw-r--r--keyboards/handwired/gamenum/config.h5
-rw-r--r--keyboards/handwired/gamenum/gamenum.h30
-rw-r--r--keyboards/handwired/hacked_motospeed/rules.mk4
-rw-r--r--keyboards/handwired/jn68m/jn68m.h48
-rw-r--r--keyboards/handwired/kbod/kbod.h33
-rw-r--r--keyboards/handwired/magicforce68/config.h5
-rw-r--r--keyboards/handwired/magicforce68/magicforce68.h29
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/config.h5
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h73
-rw-r--r--keyboards/handwired/nicekey/config.h5
-rw-r--r--keyboards/handwired/nicekey/nicekey.h9
-rw-r--r--keyboards/handwired/not_so_minidox/config.h5
-rw-r--r--keyboards/handwired/not_so_minidox/i2c.h5
-rw-r--r--keyboards/handwired/not_so_minidox/not_so_minidox.h37
-rw-r--r--keyboards/handwired/not_so_minidox/serial.h5
-rw-r--r--keyboards/handwired/not_so_minidox/split_util.h5
-rw-r--r--keyboards/handwired/numpad20/config.h5
-rw-r--r--keyboards/handwired/numpad20/numpad20.h27
-rw-r--r--keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c2
-rw-r--r--keyboards/handwired/onekey/keymaps/quine/rules.mk1
-rw-r--r--keyboards/handwired/onekey/readme.md2
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/chconf.h (renamed from quantum/visualizer/resources/resources.h)10
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/config.h (renamed from quantum/api/api_sysex.h)22
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/halconf.h23
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/mcuconf.h29
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/readme.md5
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/rules.mk11
-rw-r--r--keyboards/handwired/onekey/stm32f405_feather/config.h25
-rw-r--r--keyboards/handwired/onekey/stm32f405_feather/readme.md7
-rw-r--r--keyboards/handwired/onekey/stm32f405_feather/rules.mk8
-rw-r--r--keyboards/handwired/onekey/teensy_32/config.h4
-rw-r--r--keyboards/handwired/onekey/teensy_lc/config.h4
-rw-r--r--keyboards/handwired/ortho5x13/config.h5
-rw-r--r--keyboards/handwired/pilcrow/config.h5
-rw-r--r--keyboards/handwired/pilcrow/pilcrow.h8
-rw-r--r--keyboards/handwired/prime_exl/prime_exl.h38
-rw-r--r--keyboards/handwired/prkl30/feather/config.h3
-rw-r--r--keyboards/handwired/prkl30/feather/rules.mk4
-rw-r--r--keyboards/handwired/promethium/config.h30
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rules.mk2
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rules.mk2
-rw-r--r--keyboards/handwired/promethium/promethium.h36
-rw-r--r--keyboards/handwired/promethium/rules.mk4
-rw-r--r--keyboards/handwired/pterodactyl/config.h4
-rw-r--r--keyboards/handwired/pterodactyl/rules.mk4
-rw-r--r--keyboards/handwired/qc60/qc60.h9
-rwxr-xr-xkeyboards/handwired/reddot/config.h5
-rw-r--r--keyboards/handwired/retro_refit/config.h5
-rw-r--r--keyboards/handwired/slash/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/post_rules.mk2
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk3
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk3
-rw-r--r--keyboards/handwired/terminus_mini/config.h5
-rw-r--r--keyboards/handwired/terminus_mini/terminus_mini.h27
-rw-r--r--keyboards/handwired/trackpoint/config.h10
-rw-r--r--keyboards/handwired/unicomp_mini_m/info.json2
-rw-r--r--keyboards/handwired/xealous/rev1/config.h4
-rw-r--r--keyboards/handwired/xealous/rev1/rev1.h40
-rw-r--r--keyboards/helix/local_drivers/i2c.h5
-rw-r--r--keyboards/helix/local_drivers/serial.h5
-rw-r--r--keyboards/helix/local_drivers/ssd1306.h5
-rw-r--r--keyboards/helix/pico/keymaps/biacco/rules.mk4
-rw-r--r--keyboards/helix/pico/keymaps/default/rules.mk4
-rw-r--r--keyboards/helix/pico/keymaps/mtei/rules.mk4
-rw-r--r--keyboards/helix/pico/post_rules.mk (renamed from keyboards/helix/pico/local_features.mk)4
-rw-r--r--keyboards/helix/pico/rules.mk2
-rw-r--r--keyboards/helix/pico/split_util.h5
-rw-r--r--keyboards/helix/rev1/split_util.h5
-rw-r--r--keyboards/helix/rev2/keymaps/default/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/fraanrosi/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/froggy/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/froggy_106/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/led_test/rules.mk4
-rw-r--r--keyboards/helix/rev2/keymaps/yshrsmz/rules.mk4
-rw-r--r--keyboards/helix/rev2/post_rules.mk3
-rw-r--r--keyboards/helix/rev2/serial_config_simpleapi.h5
-rw-r--r--keyboards/helix/rev2/split_scomm.h5
-rw-r--r--keyboards/helix/rev2/split_util.h5
-rw-r--r--keyboards/hhkb/ansi/post_rules.mk18
-rw-r--r--keyboards/hhkb/ansi/rules.mk20
-rw-r--r--keyboards/hhkb/jp/post_rules.mk18
-rw-r--r--keyboards/hhkb/jp/rules.mk20
-rw-r--r--keyboards/hhkb/rn42/battery.h5
-rw-r--r--keyboards/hhkb/rn42/rn42.h5
-rw-r--r--keyboards/hhkb/rn42/rn42_task.h5
-rwxr-xr-xkeyboards/hid_liber/config.h5
-rw-r--r--keyboards/hs60/v1/v1.h47
-rw-r--r--keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk3
-rw-r--r--keyboards/idobo/idobo.h29
-rw-r--r--keyboards/jc65/v32a/v32a.h33
-rw-r--r--keyboards/jc65/v32u4/config.h5
-rw-r--r--keyboards/jc65/v32u4/v32u4.h30
-rw-r--r--keyboards/jd40/config.h5
-rw-r--r--keyboards/jd40/jd40.h45
-rw-r--r--keyboards/jd45/config.h5
-rw-r--r--keyboards/jd45/jd45.h23
-rw-r--r--keyboards/kapcave/arya/arya.c27
-rw-r--r--keyboards/kapcave/arya/arya.h43
-rw-r--r--keyboards/kapcave/arya/chconf.h25
-rw-r--r--keyboards/kapcave/arya/config.h68
-rw-r--r--keyboards/kapcave/arya/halconf.h23
-rw-r--r--keyboards/kapcave/arya/info.json77
-rw-r--r--keyboards/kapcave/arya/keymaps/default/keymap.c34
-rw-r--r--keyboards/kapcave/arya/keymaps/default/readme.md1
-rw-r--r--keyboards/kapcave/arya/keymaps/via/keymap.c56
-rw-r--r--keyboards/kapcave/arya/keymaps/via/readme.md1
-rw-r--r--keyboards/kapcave/arya/keymaps/via/rules.mk1
-rw-r--r--keyboards/kapcave/arya/mcuconf.h33
-rw-r--r--keyboards/kapcave/arya/readme.md23
-rw-r--r--keyboards/kapcave/arya/rules.mk25
-rwxr-xr-xkeyboards/kapcave/gskt00/config.h52
-rwxr-xr-xkeyboards/kapcave/gskt00/gskt00.c18
-rwxr-xr-xkeyboards/kapcave/gskt00/gskt00.h73
-rw-r--r--keyboards/kapcave/gskt00/info.json (renamed from keyboards/gskt00/info.json)4
-rw-r--r--keyboards/kapcave/gskt00/keymaps/default-poly/config.h39
-rwxr-xr-xkeyboards/kapcave/gskt00/keymaps/default-poly/keymap.c70
-rw-r--r--keyboards/kapcave/gskt00/keymaps/default-poly/readme.md1
-rw-r--r--keyboards/kapcave/gskt00/keymaps/default-poly/rules.mk2
-rwxr-xr-xkeyboards/kapcave/gskt00/keymaps/default/keymap.c (renamed from keyboards/gskt00/keymaps/default/keymap.c)33
-rw-r--r--keyboards/kapcave/gskt00/keymaps/default/readme.md1
-rwxr-xr-xkeyboards/kapcave/gskt00/keymaps/nachie/keymap.c (renamed from keyboards/gskt00/keymaps/nachie/keymap.c)0
-rwxr-xr-xkeyboards/kapcave/gskt00/keymaps/via/keymap.c57
-rw-r--r--keyboards/kapcave/gskt00/keymaps/via/readme.md1
-rw-r--r--keyboards/kapcave/gskt00/keymaps/via/rules.mk1
-rw-r--r--keyboards/kapcave/gskt00/readme.md23
-rwxr-xr-xkeyboards/kapcave/gskt00/rules.mk (renamed from keyboards/gskt00/rules.mk)2
-rwxr-xr-xkeyboards/kapcave/paladin64/config.h (renamed from keyboards/paladin64/config.h)51
-rw-r--r--keyboards/kapcave/paladin64/info.json (renamed from keyboards/paladin64/info.json)6
-rwxr-xr-xkeyboards/kapcave/paladin64/keymaps/default/keymap.c (renamed from keyboards/paladin64/keymaps/default/keymap.c)16
-rw-r--r--keyboards/kapcave/paladin64/keymaps/default/readme.md1
-rw-r--r--keyboards/kapcave/paladin64/keymaps/via/keymap.c59
-rw-r--r--keyboards/kapcave/paladin64/keymaps/via/readme.md1
-rw-r--r--keyboards/kapcave/paladin64/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/kapcave/paladin64/paladin64.c18
-rwxr-xr-xkeyboards/kapcave/paladin64/paladin64.h106
-rw-r--r--keyboards/kapcave/paladin64/readme.md24
-rwxr-xr-xkeyboards/kapcave/paladin64/rules.mk23
-rw-r--r--keyboards/kapcave/paladinpad/config.h46
-rw-r--r--keyboards/kapcave/paladinpad/info.json82
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/aek/keymap.c38
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/aek/readme.md1
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/default/keymap.c38
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/default/readme.md1
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c53
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/ortho/readme.md1
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/via/keymap.c59
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/via/rules.mk3
-rw-r--r--keyboards/kapcave/paladinpad/paladinpad.c17
-rw-r--r--keyboards/kapcave/paladinpad/paladinpad.h103
-rw-r--r--keyboards/kapcave/paladinpad/readme.md23
-rw-r--r--keyboards/kapcave/paladinpad/rev1/config.h44
-rw-r--r--keyboards/kapcave/paladinpad/rev1/rules.mk (renamed from keyboards/mechlovin/adelais/standard_led/rev2/rules.mk)0
-rw-r--r--keyboards/kapcave/paladinpad/rev2/config.h47
-rw-r--r--keyboards/kapcave/paladinpad/rev2/rules.mk (renamed from keyboards/mechlovin/adelais/standard_led/.noci)0
-rw-r--r--keyboards/kapcave/paladinpad/rules.mk24
-rw-r--r--keyboards/kbdfans/bella/rgb/config.h4
-rw-r--r--keyboards/kbdfans/bella/rgb_iso/config.h4
-rw-r--r--keyboards/kbdfans/boop65/rgb/config.h3
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/config.h4
-rw-r--r--keyboards/kbdfans/kbdmini/config.h6
-rw-r--r--keyboards/keebio/chocopad/config.h5
-rw-r--r--keyboards/keebio/dilly/config.h5
-rw-r--r--keyboards/keebio/dilly/dilly.h23
-rw-r--r--keyboards/keebio/iris/config.h5
-rw-r--r--keyboards/keebio/levinson/config.h5
-rw-r--r--keyboards/kinesis/alvicstep/alvicstep.h135
-rw-r--r--keyboards/kinesis/alvicstep/config.h6
-rw-r--r--keyboards/kinesis/config.h5
-rw-r--r--keyboards/kinesis/kinesis.h37
-rw-r--r--keyboards/kinesis/kint2pp/config.h4
-rw-r--r--keyboards/kinesis/kint36/config.h4
-rw-r--r--keyboards/kinesis/kint36/rules.mk4
-rw-r--r--keyboards/kinesis/kint41/config.h4
-rw-r--r--keyboards/kinesis/stapelberg/config.h5
-rw-r--r--keyboards/kinesis/stapelberg/stapelberg.h132
-rw-r--r--keyboards/kira75/config.h5
-rw-r--r--keyboards/kira75/kira75.h36
-rwxr-xr-xkeyboards/kmini/config.h6
-rwxr-xr-xkeyboards/kmini/kmini.h29
-rw-r--r--keyboards/knops/mini/config.h5
-rw-r--r--keyboards/knops/mini/mini.h9
-rw-r--r--keyboards/kona_classic/config.h5
-rw-r--r--keyboards/kona_classic/kona_classic.h187
-rw-r--r--keyboards/ktec/ergodone/config.h5
-rw-r--r--keyboards/ktec/ergodone/ergodone.h197
-rw-r--r--keyboards/ktec/ergodone/expander.h5
-rw-r--r--keyboards/laptreus/laptreus.h33
-rw-r--r--keyboards/laptreus/rules.mk4
-rw-r--r--keyboards/latin47ble/rules.mk4
-rw-r--r--keyboards/latin60rgb/config.h6
-rw-r--r--keyboards/latin64ble/rules.mk4
-rw-r--r--keyboards/latin6rgb/config.h7
-rw-r--r--keyboards/latinpadble/rules.mk4
-rw-r--r--keyboards/launchpad/config.h5
-rw-r--r--keyboards/launchpad/launchpad.h10
-rw-r--r--keyboards/launchpad/rev1/rev1.h26
-rwxr-xr-xkeyboards/lazydesigners/the60/rev2/info.json10
-rw-r--r--keyboards/lfkeyboards/issi.h5
-rw-r--r--keyboards/lfkeyboards/lfk65_hs/config.h5
-rw-r--r--keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h65
-rw-r--r--keyboards/lfkeyboards/lfk78/post_rules.mk14
-rw-r--r--keyboards/lfkeyboards/lfk78/rules.mk15
-rw-r--r--keyboards/lfkeyboards/lfk87/config.h5
-rw-r--r--keyboards/lfkeyboards/lfk87/lfk87.h151
-rw-r--r--keyboards/lfkeyboards/lfk87/post_rules.mk13
-rw-r--r--keyboards/lfkeyboards/lfk87/rules.mk15
-rw-r--r--keyboards/lfkeyboards/lfkpad/post_rules.mk7
-rw-r--r--keyboards/lfkeyboards/lfkpad/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lighting.h6
-rw-r--r--keyboards/lfkeyboards/mini1800/config.h5
-rw-r--r--keyboards/lfkeyboards/mini1800/mini1800.h44
-rw-r--r--keyboards/lfkeyboards/mini1800/post_rules.mk9
-rw-r--r--keyboards/lfkeyboards/mini1800/rules.mk9
-rw-r--r--keyboards/manta60/post_rules.mk3
-rw-r--r--keyboards/manta60/rules.mk4
-rw-r--r--keyboards/massdrop/alt/alt.h2
-rw-r--r--keyboards/massdrop/alt/config.h27
-rw-r--r--keyboards/massdrop/ctrl/config.h27
-rw-r--r--keyboards/massdrop/ctrl/ctrl.h2
-rw-r--r--keyboards/matrix/m20add/config.h4
-rw-r--r--keyboards/matrix/m20add/m20add.c8
-rw-r--r--keyboards/matrix/noah/config.h4
-rw-r--r--keyboards/mechlovin/adelais/adelais.h70
-rw-r--r--keyboards/mechlovin/adelais/config.h9
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/config.h21
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/readme.md16
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev1/config.h7
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h58
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/config.h7
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h58
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/config.h75
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h (renamed from keyboards/mechlovin/adelais/standard_led/halconf.h)1
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h (renamed from keyboards/mechlovin/adelais/standard_led/mcuconf.h)1
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c166
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/rev3.h78
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk5
-rw-r--r--keyboards/mechlovin/adelais/rules.mk4
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/.noci (renamed from keyboards/mechlovin/adelais/standard_led/rev2/.noci)0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/chconf.h24
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/config.h (renamed from keyboards/mechlovin/adelais/standard_led/config.h)8
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/halconf.h (renamed from keyboards/singa/keymaps/test/config.h)12
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/mcuconf.h29
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/readme.md (renamed from keyboards/mechlovin/adelais/standard_led/readme.md)2
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev2/.noci0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h (renamed from keyboards/mechlovin/adelais/standard_led/rev2/config.h)0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev2/rev2.h77
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev2/rules.mk0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h (renamed from keyboards/mechlovin/adelais/standard_led/rev3/config.h)0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev3/rev3.h77
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev3/rules.mk (renamed from keyboards/mechlovin/adelais/standard_led/rev3/rules.mk)0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/apm32f103/rules.mk5
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h (renamed from keyboards/mechlovin/adelais/standard_led/rev4/config.h)0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/readme.md16
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/rev4.h77
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/rules.mk (renamed from keyboards/mechlovin/adelais/standard_led/rev4/rules.mk)0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/stm32f303/rules.mk6
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rules.mk2
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/.noci0
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/readme.md (renamed from keyboards/mechlovin/adelais/standard_led/rev4/readme.md)6
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h67
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/matrix.c363
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/readme.md16
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/rev1.h77
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/rules.mk13
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rules.mk2
-rw-r--r--keyboards/mechlovin/adelais/standard_led/rules.mk8
-rw-r--r--keyboards/mechlovin/delphine/rgb_led/config.h3
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/config.h4
-rw-r--r--keyboards/mechmini/mechmini.h15
-rwxr-xr-xkeyboards/mechmini/v2/config.h6
-rwxr-xr-xkeyboards/mechmini/v2/v2.h71
-rw-r--r--keyboards/mehkee96/mehkee96.h35
-rw-r--r--keyboards/meira/config.h5
-rw-r--r--keyboards/meira/featherble/config.h5
-rw-r--r--keyboards/meira/featherble/rules.mk2
-rwxr-xr-xkeyboards/meira/issi.h5
-rwxr-xr-xkeyboards/meira/lighting.h5
-rw-r--r--keyboards/meira/promicro/config.h5
-rwxr-xr-xkeyboards/melgeek/mach80/rev1/config.h3
-rw-r--r--keyboards/melgeek/mj61/config.h1
-rw-r--r--keyboards/melgeek/mj61/rev1/config.h3
-rw-r--r--keyboards/melgeek/mj61/rev2/config.h3
-rw-r--r--keyboards/melgeek/mj63/config.h1
-rw-r--r--keyboards/melgeek/mj63/rev1/config.h3
-rw-r--r--keyboards/melgeek/mj63/rev2/config.h3
-rw-r--r--keyboards/melgeek/mj64/config.h1
-rw-r--r--keyboards/melgeek/mj64/rev1/config.h3
-rw-r--r--keyboards/melgeek/mj64/rev2/config.h3
-rw-r--r--keyboards/melgeek/mj64/rev3/config.h3
-rw-r--r--keyboards/melgeek/mj65/config.h1
-rw-r--r--keyboards/melgeek/mj65/rev3/config.h3
-rwxr-xr-xkeyboards/melgeek/mj6xy/info.json2
-rwxr-xr-xkeyboards/melgeek/mojo68/config.h1
-rwxr-xr-xkeyboards/melgeek/mojo68/rev1/config.h3
-rw-r--r--keyboards/melgeek/mojo75/config.h1
-rw-r--r--keyboards/melgeek/mojo75/rev1/config.h3
-rw-r--r--keyboards/melgeek/z70ultra/config.h4
-rw-r--r--keyboards/meme/config.h5
-rw-r--r--keyboards/meme/meme.h141
-rw-r--r--keyboards/miller/gm862/config.h6
-rw-r--r--keyboards/miniaxe/miniaxe.h35
-rw-r--r--keyboards/mitosis/config.h5
-rw-r--r--keyboards/mitosis/mitosis.h31
-rw-r--r--keyboards/miuni32/config.h5
-rw-r--r--keyboards/miuni32/miuni32.h35
-rw-r--r--keyboards/mschwingen/modelm/post_rules.mk3
-rw-r--r--keyboards/mschwingen/modelm/rules.mk4
-rw-r--r--keyboards/mt40/config.h5
-rw-r--r--keyboards/mt40/mt40.h29
-rw-r--r--keyboards/mt64rgb/config.h6
-rw-r--r--keyboards/mxss/config.h5
-rw-r--r--keyboards/mxss/rgblight.c4
-rw-r--r--keyboards/namecard2x4/namecard2x4.h10
-rw-r--r--keyboards/nek_type_a/mcp23017.h6
-rw-r--r--keyboards/nek_type_a/nek_type_a.h28
-rw-r--r--keyboards/nek_type_a/rules.mk4
-rw-r--r--keyboards/neson_design/n6/config.h3
-rw-r--r--keyboards/newgame40/newgame40.h24
-rw-r--r--keyboards/newgame40/post_rules.mk3
-rw-r--r--keyboards/newgame40/rules.mk4
-rw-r--r--keyboards/noxary/x268/x268.h28
-rw-r--r--keyboards/numatreus/post_rules.mk3
-rw-r--r--keyboards/numatreus/rules.mk4
-rw-r--r--keyboards/ok60/config.h5
-rw-r--r--keyboards/ok60/ok60.h108
-rw-r--r--keyboards/omnikey_bh/config.h5
-rw-r--r--keyboards/opendeck/32/rev1/config.h3
-rw-r--r--keyboards/org60/config.h5
-rw-r--r--keyboards/org60/org60.h47
-rw-r--r--keyboards/owlab/voice65/hotswap/config.h6
-rw-r--r--keyboards/owlab/voice65/soldered/config.h6
-rwxr-xr-xkeyboards/paladin64/paladin64.c2
-rwxr-xr-xkeyboards/paladin64/paladin64.h92
-rw-r--r--keyboards/paladin64/readme.md19
-rwxr-xr-xkeyboards/paladin64/rules.mk24
-rw-r--r--keyboards/percent/canoe/config.h5
-rw-r--r--keyboards/pinky/pinky.h16
-rw-r--r--keyboards/pizzakeyboards/pizza65/info.json1
-rw-r--r--keyboards/planck/config.h5
-rw-r--r--keyboards/planck/ez/config.h4
-rw-r--r--keyboards/planck/keymaps/aviator/config.h7
-rw-r--r--keyboards/planck/keymaps/cbbrowne/config.h8
-rw-r--r--keyboards/planck/keymaps/khord/config.h7
-rw-r--r--keyboards/planck/keymaps/pvc/config.h8
-rwxr-xr-xkeyboards/planck/keymaps/zrichard/config.h10
-rw-r--r--keyboards/planck/light/config.h6
-rw-r--r--keyboards/planck/light/light.h43
-rw-r--r--keyboards/planck/rev6/config.h5
-rw-r--r--keyboards/planck/rev6/rev6.h137
-rw-r--r--keyboards/playkbtw/pk60/config.h5
-rw-r--r--keyboards/playkbtw/pk60/pk60.h127
-rw-r--r--keyboards/preonic/config.h5
-rw-r--r--keyboards/preonic/keymaps/badger/keymap.c2
-rw-r--r--keyboards/preonic/rev1/config.h5
-rw-r--r--keyboards/preonic/rev2/config.h5
-rw-r--r--keyboards/preonic/rev3/config.h5
-rw-r--r--keyboards/primekb/prime_o/prime_o.h36
-rw-r--r--keyboards/primekb/prime_r/config.h5
-rw-r--r--keyboards/primekb/prime_r/prime_r.h28
-rw-r--r--keyboards/projectcain/vault45/info.json3
-rw-r--r--keyboards/puck/puck.h21
-rw-r--r--keyboards/rgbkb/zen/post_rules.mk14
-rw-r--r--keyboards/rgbkb/zen/rev2/post_rules.mk5
-rw-r--r--keyboards/rgbkb/zen/rev2/rules.mk6
-rw-r--r--keyboards/rgbkb/zen/rules.mk15
-rw-r--r--keyboards/sentraq/s65_plus/config.h5
-rw-r--r--keyboards/sentraq/s65_x/config.h5
-rw-r--r--keyboards/sidderskb/majbritt/rev2/info.json75
-rw-r--r--keyboards/sixkeyboard/config.h5
-rw-r--r--keyboards/sixkeyboard/sixkeyboard.h24
-rw-r--r--keyboards/smallkeyboard/config.h7
-rw-r--r--keyboards/spaceman/pancake/rev1/feather/config.h4
-rw-r--r--keyboards/spaceman/pancake/rev1/feather/rules.mk3
-rw-r--r--keyboards/spacey/info.json4
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/rules.mk1
-rw-r--r--keyboards/splitkb/kyria/readme.md22
-rw-r--r--keyboards/splitkb/kyria/rev1/config.h27
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/chconf.h22
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/halconf.h22
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h29
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/proton_c.c17
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/proton_c.h19
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/rev1/rev1.h3
-rw-r--r--keyboards/splitkb/zima/rules.mk7
-rw-r--r--keyboards/standaside/standaside.h34
-rw-r--r--keyboards/subatomic/config.h5
-rwxr-xr-xkeyboards/sx60/sx60.h87
-rw-r--r--keyboards/tanuki/config.h5
-rwxr-xr-xkeyboards/tetris/tetris.h27
-rw-r--r--keyboards/thevankeyboards/roadkit/config.h5
-rw-r--r--keyboards/thevankeyboards/roadkit/roadkit.h45
-rw-r--r--keyboards/toad/config.h5
-rw-r--r--keyboards/tokyokeyboard/alix40/config.h3
-rw-r--r--keyboards/tokyokeyboard/alix40/rules.mk4
-rw-r--r--keyboards/treasure/type9/type9.h23
-rw-r--r--keyboards/uk78/config.h5
-rw-r--r--keyboards/uk78/uk78.h96
-rw-r--r--keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk3
-rw-r--r--keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk4
-rw-r--r--keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk3
-rw-r--r--keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk3
-rw-r--r--keyboards/waldo/keymaps/default_split_shft_bck/config.h5
-rw-r--r--keyboards/westfoxtrot/aanzee/aanzee.h55
-rw-r--r--keyboards/westfoxtrot/cyclops/cyclops.h28
-rw-r--r--keyboards/whitefox/config.h5
-rw-r--r--keyboards/whitefox/gfxconf.h27
-rw-r--r--keyboards/whitefox/visualizer.c54
-rw-r--r--keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h19
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h18
-rw-r--r--keyboards/xbows/numpad/config.h3
-rw-r--r--keyboards/xelus/kangaroo/config.h4
-rw-r--r--keyboards/xelus/pachi/rgb/config.h9
-rw-r--r--keyboards/xelus/valor/rev2/config.h4
-rw-r--r--keyboards/xelus/valor_frl_tkl/config.h4
-rw-r--r--keyboards/xiudi/xd87/xd87.h81
-rw-r--r--keyboards/xmmx/config.h5
-rw-r--r--keyboards/xw60/rules.mk3
-rw-r--r--keyboards/yd68/yd68.h29
-rw-r--r--keyboards/yosino58/rev1/split_scomm.h5
-rw-r--r--keyboards/yosino58/rev1/split_util.h5
-rw-r--r--keyboards/yosino58/serial.h5
-rwxr-xr-xkeyboards/zlant/config.h5
-rwxr-xr-xkeyboards/zlant/zlant.h37
-rw-r--r--layouts/community/ergodox/333fred/keymap.c40
-rw-r--r--layouts/community/ergodox/333fred/rules.mk3
-rw-r--r--layouts/community/ergodox/333fred/visualizer.c39
-rw-r--r--layouts/community/ergodox/adnw_p_u_q/visualizer.c34
-rw-r--r--layouts/community/ergodox/belak/keymap.c35
-rw-r--r--layouts/community/ergodox/belak/visualizer.c49
-rw-r--r--layouts/community/ergodox/choromanski/visualizer.c62
-rw-r--r--layouts/community/ergodox/drashna/visualizer.c_old77
-rw-r--r--layouts/community/ergodox/jackhumbert/keymap.c5
-rw-r--r--layouts/community/ergodox/osx_neo2/visualizer.c47
-rw-r--r--layouts/community/ortho_4x12/drashna/rules.mk1
m---------lib/chibios-contrib0
-rw-r--r--lib/python/qmk/cli/__init__.py2
-rw-r--r--lib/python/qmk/cli/console.py303
-rw-r--r--lib/python/qmk/cli/doctor/check.py1
-rw-r--r--lib/python/qmk/cli/flash.py14
-rwxr-xr-xlib/python/qmk/cli/format/python.py6
-rwxr-xr-xlib/python/qmk/cli/generate/compilation_database.py133
-rw-r--r--lib/python/qmk/cli/lint.py145
-rw-r--r--lib/python/qmk/cli/pytest.py2
-rw-r--r--lib/python/qmk/commands.py16
-rw-r--r--lib/python/qmk/constants.py2
-rw-r--r--lib/python/qmk/info.py5
-rw-r--r--lib/python/qmk/tests/test_cli_commands.py2
m---------lib/ugfx0
-rw-r--r--platforms/arm_atsam/flash.mk11
-rw-r--r--platforms/avr/drivers/analog.c23
-rw-r--r--platforms/avr/drivers/analog.h1
-rw-r--r--platforms/avr/drivers/audio_pwm.h (renamed from quantum/audio/driver_avr_pwm.h)0
-rw-r--r--platforms/avr/drivers/audio_pwm_hardware.c (renamed from quantum/audio/driver_avr_pwm_hardware.c)0
-rw-r--r--platforms/avr/drivers/i2c_master.c56
-rw-r--r--platforms/avr/drivers/i2c_master.h2
-rw-r--r--platforms/avr/drivers/ps2/ps2_io.c51
-rw-r--r--platforms/avr/drivers/ps2/ps2_usart.c (renamed from tmk_core/protocol/ps2_usart.c)14
-rw-r--r--platforms/chibios/boards/GENERIC_STM32_F405XG/board/board.mk9
-rw-r--r--platforms/chibios/boards/GENERIC_STM32_F405XG/configs/board.h28
-rw-r--r--platforms/chibios/boards/GENERIC_STM32_F405XG/configs/config.h (renamed from drivers/qwiic/qwiic.h)19
-rw-r--r--platforms/chibios/boards/GENERIC_STM32_F405XG/configs/mcuconf.h355
-rw-r--r--platforms/chibios/boards/QMK_PROTON_C/configs/config.h9
-rw-r--r--platforms/chibios/boards/SIPEED_LONGAN_NANO/board/board.mk9
-rw-r--r--platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.h (renamed from quantum/visualizer/visualizer_keyframes.c)14
-rw-r--r--platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/mcuconf.h302
-rw-r--r--platforms/chibios/boards/common/ld/STM32F401xC.ld85
-rw-r--r--platforms/chibios/boards/common/ld/STM32F401xE.ld85
-rw-r--r--platforms/chibios/boards/common/ld/STM32F405xG.ld86
-rw-r--r--platforms/chibios/boards/common/ld/STM32F411xE.ld85
-rw-r--r--platforms/chibios/drivers/analog.c10
-rw-r--r--platforms/chibios/drivers/audio_dac.h (renamed from quantum/audio/driver_chibios_dac.h)0
-rw-r--r--platforms/chibios/drivers/audio_dac_additive.c (renamed from quantum/audio/driver_chibios_dac_additive.c)0
-rw-r--r--platforms/chibios/drivers/audio_dac_basic.c (renamed from quantum/audio/driver_chibios_dac_basic.c)0
-rw-r--r--platforms/chibios/drivers/audio_pwm.h (renamed from quantum/audio/driver_chibios_pwm.h)0
-rw-r--r--platforms/chibios/drivers/audio_pwm_hardware.c (renamed from quantum/audio/driver_chibios_pwm_hardware.c)4
-rw-r--r--platforms/chibios/drivers/audio_pwm_software.c (renamed from quantum/audio/driver_chibios_pwm_software.c)0
-rw-r--r--platforms/chibios/drivers/i2c_master.c37
-rw-r--r--platforms/chibios/drivers/i2c_master.h27
-rw-r--r--platforms/chibios/drivers/ps2/ps2_io.c55
-rw-r--r--platforms/chibios/drivers/serial.c2
-rw-r--r--platforms/chibios/drivers/serial_usart.c10
-rw-r--r--platforms/chibios/drivers/spi_master.c31
-rw-r--r--platforms/chibios/drivers/spi_master.h6
-rw-r--r--platforms/chibios/drivers/uart.c8
-rw-r--r--platforms/chibios/drivers/ws2812.c4
-rw-r--r--platforms/chibios/drivers/ws2812_pwm.c48
-rw-r--r--platforms/chibios/drivers/ws2812_spi.c27
-rw-r--r--platforms/chibios/flash.mk2
-rw-r--r--quantum/action.c5
-rw-r--r--quantum/api.c182
-rw-r--r--quantum/api.h55
-rw-r--r--quantum/api/api_sysex.c72
-rw-r--r--quantum/audio/audio.h13
-rw-r--r--quantum/audio/song_list.h8
-rw-r--r--quantum/backlight/backlight_chibios.c10
-rw-r--r--quantum/eeconfig.c11
-rw-r--r--quantum/eeconfig.h26
-rw-r--r--quantum/keyboard.c48
-rw-r--r--quantum/keymap_extras/keymap_turkish_f.h2
-rw-r--r--quantum/led_matrix/led_matrix.c32
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c133
-rw-r--r--quantum/matrix.c28
-rw-r--r--quantum/mcu_selection.mk70
-rw-r--r--quantum/process_keycode/process_haptic.c1
-rw-r--r--quantum/process_keycode/process_programmable_button.c31
-rw-r--r--quantum/process_keycode/process_programmable_button.h23
-rw-r--r--quantum/process_keycode/process_unicode_common.c47
-rw-r--r--quantum/programmable_button.c37
-rw-r--r--quantum/programmable_button.h30
-rw-r--r--quantum/quantum.c122
-rw-r--r--quantum/quantum.h6
-rw-r--r--quantum/quantum_keycodes.h70
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c32
-rw-r--r--quantum/rgb_matrix/rgb_matrix_drivers.c127
-rw-r--r--quantum/sequencer/tests/rules.mk2
-rw-r--r--quantum/serial_link/LICENSE19
-rw-r--r--quantum/serial_link/README.md1
-rw-r--r--quantum/serial_link/protocol/byte_stuffer.c135
-rw-r--r--quantum/serial_link/protocol/byte_stuffer.h34
-rw-r--r--quantum/serial_link/protocol/frame_router.c64
-rw-r--r--quantum/serial_link/protocol/frame_router.h35
-rw-r--r--quantum/serial_link/protocol/frame_validator.c57
-rw-r--r--quantum/serial_link/protocol/frame_validator.h31
-rw-r--r--quantum/serial_link/protocol/physical.h27
-rw-r--r--quantum/serial_link/protocol/transport.c121
-rw-r--r--quantum/serial_link/protocol/transport.h139
-rw-r--r--quantum/serial_link/protocol/triple_buffered_object.c77
-rw-r--r--quantum/serial_link/protocol/triple_buffered_object.h44
-rw-r--r--quantum/serial_link/system/serial_link.c250
-rw-r--r--quantum/serial_link/system/serial_link.h54
-rw-r--r--quantum/serial_link/tests/Makefile61
-rw-r--r--quantum/serial_link/tests/byte_stuffer_tests.cpp450
-rw-r--r--quantum/serial_link/tests/frame_router_tests.cpp204
-rw-r--r--quantum/serial_link/tests/frame_validator_tests.cpp100
-rw-r--r--quantum/serial_link/tests/rules.mk22
-rw-r--r--quantum/serial_link/tests/testlist.mk6
-rw-r--r--quantum/serial_link/tests/transport_tests.cpp184
-rw-r--r--quantum/serial_link/tests/triple_buffered_object_tests.cpp80
-rw-r--r--quantum/usb_device_state.c51
-rw-r--r--quantum/usb_device_state.h39
-rw-r--r--quantum/visualizer/LICENSE.md29
-rw-r--r--quantum/visualizer/common_gfxconf.h354
-rw-r--r--quantum/visualizer/default_animations.c177
-rw-r--r--quantum/visualizer/default_animations.h27
-rw-r--r--quantum/visualizer/lcd_backlight.c87
-rw-r--r--quantum/visualizer/lcd_backlight.h43
-rw-r--r--quantum/visualizer/lcd_backlight_keyframes.c69
-rw-r--r--quantum/visualizer/lcd_backlight_keyframes.h27
-rw-r--r--quantum/visualizer/lcd_keyframes.c184
-rw-r--r--quantum/visualizer/lcd_keyframes.h35
-rw-r--r--quantum/visualizer/led_backlight_keyframes.c143
-rw-r--r--quantum/visualizer/led_backlight_keyframes.h40
-rw-r--r--quantum/visualizer/readme.md18
-rw-r--r--quantum/visualizer/resources/lcd_logo.c45
-rw-r--r--quantum/visualizer/resources/lcd_logo.pngbin271 -> 0 bytes
-rw-r--r--quantum/visualizer/visualizer.c483
-rw-r--r--quantum/visualizer/visualizer.h154
-rw-r--r--quantum/visualizer/visualizer.mk123
-rw-r--r--quantum/visualizer/visualizer_keyframes.h23
-rw-r--r--shell.nix2
-rw-r--r--show_options.mk10
-rw-r--r--testlist.mk1
-rw-r--r--tmk_core/arm_atsam.mk2
-rw-r--r--tmk_core/avr.mk2
-rw-r--r--tmk_core/chibios.mk308
-rw-r--r--tmk_core/common.mk19
-rw-r--r--tmk_core/common/arm_atsam/eeprom.c94
-rw-r--r--tmk_core/common/arm_atsam/gpio.h8
-rw-r--r--tmk_core/common/avr/suspend.c98
-rw-r--r--tmk_core/common/chibios/_wait.h2
-rw-r--r--tmk_core/common/chibios/bootloader.c22
-rw-r--r--tmk_core/common/chibios/chibios_config.h62
-rw-r--r--tmk_core/common/chibios/eeprom_stm32.c57
-rw-r--r--tmk_core/common/chibios/eeprom_stm32_defs.h25
-rw-r--r--tmk_core/common/chibios/flash_stm32.c48
-rw-r--r--tmk_core/common/chibios/gd32v_compatibility.h120
-rw-r--r--tmk_core/common/chibios/suspend.c89
-rw-r--r--tmk_core/common/chibios/syscall-fallbacks.c6
-rw-r--r--tmk_core/common/host.c15
-rw-r--r--tmk_core/common/host.h2
-rw-r--r--tmk_core/common/host_driver.h1
-rw-r--r--tmk_core/common/report.h6
-rw-r--r--tmk_core/common/suspend.h2
-rw-r--r--tmk_core/common/sync_timer.c2
-rw-r--r--tmk_core/common/sync_timer.h2
-rw-r--r--tmk_core/common/test/rules.mk1
-rw-r--r--tmk_core/native.mk2
-rw-r--r--tmk_core/protocol.mk34
-rw-r--r--tmk_core/protocol/arm_atsam.mk7
-rw-r--r--tmk_core/protocol/arm_atsam/arm_atsam_protocol.h4
-rw-r--r--tmk_core/protocol/arm_atsam/i2c_master.c19
-rw-r--r--tmk_core/protocol/arm_atsam/i2c_master.h9
-rw-r--r--tmk_core/protocol/arm_atsam/main_arm_atsam.c4
-rw-r--r--tmk_core/protocol/arm_atsam/shift_register.c118
-rw-r--r--tmk_core/protocol/arm_atsam/shift_register.h (renamed from tmk_core/protocol/arm_atsam/spi.h)25
-rw-r--r--tmk_core/protocol/arm_atsam/spi.c92
-rw-r--r--tmk_core/protocol/arm_atsam/spi_master.c109
-rw-r--r--tmk_core/protocol/arm_atsam/spi_master.h48
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_hub.c (renamed from tmk_core/protocol/arm_atsam/usb/usb2422.c)98
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_hub.h51
-rw-r--r--tmk_core/protocol/chibios/chibios.c38
-rw-r--r--tmk_core/protocol/chibios/usb_main.c15
-rw-r--r--tmk_core/protocol/ibm4704.c185
-rw-r--r--tmk_core/protocol/ibm4704.h103
-rw-r--r--tmk_core/protocol/lufa.mk27
-rw-r--r--tmk_core/protocol/lufa/lufa.c48
-rw-r--r--tmk_core/protocol/lufa/lufa.h11
-rw-r--r--tmk_core/protocol/midi/qmk_midi.c41
-rw-r--r--tmk_core/protocol/news.c161
-rw-r--r--tmk_core/protocol/news.h48
-rw-r--r--tmk_core/protocol/next_kbd.c219
-rw-r--r--tmk_core/protocol/next_kbd.h60
-rw-r--r--tmk_core/protocol/ps2_io_avr.c58
-rw-r--r--tmk_core/protocol/ps2_io_chibios.c55
-rw-r--r--tmk_core/protocol/usb_descriptor.c19
-rw-r--r--tmk_core/protocol/usb_hid/parser.h5
-rw-r--r--tmk_core/protocol/usb_hid/usb_hid.h6
-rw-r--r--tmk_core/protocol/vusb/vusb.c36
-rw-r--r--tmk_core/readme.md11
-rw-r--r--tmk_core/rules.mk7
-rw-r--r--users/nstickney/rules.mk1
-rw-r--r--users/talljoe/visualizer.c21
-rw-r--r--users/wanleg/rules.mk4
-rwxr-xr-xutil/chibios_conf_updater.sh2
-rwxr-xr-xutil/install/arch.sh3
-rwxr-xr-xutil/install/debian.sh3
960 files changed, 11970 insertions, 17848 deletions
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 53921f7f95..41b2475f67 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -22,7 +22,6 @@ keymap:
via:
- keyboards/**/keymaps/via/*
cli:
- - bin/qmk
- requirements.txt
- lib/python/**/*
python:
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 7a8dc8540f..3bf9741ac7 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -8,7 +8,6 @@ on:
pull_request:
paths:
- 'lib/python/**'
- - 'bin/qmk'
- 'requirements.txt'
- '.github/workflows/cli.yml'
diff --git a/.gitignore b/.gitignore
index f3b76f7edf..768f40b191 100644
--- a/.gitignore
+++ b/.gitignore
@@ -86,3 +86,8 @@ __pycache__
# Allow to exist but don't include it in the repo
user_song_list.h
+
+# clangd
+compile_commands.json
+.clangd/
+.cache/
diff --git a/.gitmodules b/.gitmodules
index 324ef790d3..681693a5a4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -6,10 +6,6 @@
path = lib/chibios-contrib
url = https://github.com/qmk/ChibiOS-Contrib
branch = master
-[submodule "lib/ugfx"]
- path = lib/ugfx
- url = https://github.com/qmk/uGFX
- branch = master
[submodule "lib/googletest"]
path = lib/googletest
url = https://github.com/qmk/googletest
diff --git a/Makefile b/Makefile
index 5f25eef14b..a1741dd961 100644
--- a/Makefile
+++ b/Makefile
@@ -30,11 +30,7 @@ endif
endif
# Determine which qmk cli to use
-ifeq (,$(shell which qmk))
- QMK_BIN = bin/qmk
-else
- QMK_BIN = qmk
-endif
+QMK_BIN := qmk
# avoid 'Entering|Leaving directory' messages
MAKEFLAGS += --no-print-directory
@@ -58,8 +54,6 @@ BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred
-MAKEFILE_INCLUDED=yes
-
# Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will become the new head
@@ -97,31 +91,8 @@ distclean: clean
rm -f *.bin *.hex *.uf2
echo 'done.'
-#Compatibility with the old make variables, anything you specify directly on the command line
-# always overrides the detected folders
-ifdef keyboard
- KEYBOARD := $(keyboard)
-endif
-ifdef keymap
- KEYMAP := $(keymap)
-endif
-
-# Uncomment these for debugging
-# $(info Keyboard: $(KEYBOARD))
-# $(info Keymap: $(KEYMAP))
-
-# Set the default goal depending on where we are running make from
-# this handles the case where you run make without any arguments
.DEFAULT_GOAL := all:all
-ifneq ($(KEYMAP),)
- .DEFAULT_GOAL := $(KEYBOARD):$(KEYMAP)
-else ifneq ($(KEYBOARD),)
- # Inside a keyboard folder, build all keymaps for all subprojects
- # Note that this is different from the old behaviour, which would
- # build only the default keymap of the default keyboard
- .DEFAULT_GOAL := $(KEYBOARD):all
-endif
# Compare the start of the RULE variable with the first argument($1)
@@ -245,10 +216,6 @@ define PARSE_RULE
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell util/list_keyboards.sh | sort -u)),true)
KEYBOARD_RULE=$$(MATCHED_ITEM)
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
- # Otherwise use the KEYBOARD variable, which is determined either by
- # the current directory you run make from, or passed in as an argument
- else ifneq ($$(KEYBOARD),)
- $$(eval $$(call PARSE_KEYBOARD,$$(KEYBOARD)))
else
$$(info make: *** No rule to make target '$1'. Stop.)
$$(info |)
@@ -494,7 +461,6 @@ endef
ifndef SKIP_GIT
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi
if [ ! -e lib/chibios-contrib ]; then git submodule sync lib/chibios-contrib && git submodule update --depth 50 --init lib/chibios-contrib; fi
- if [ ! -e lib/ugfx ]; then git submodule sync lib/ugfx && git submodule update --depth 50 --init lib/ugfx; fi
if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 50 --init lib/lufa; fi
if [ ! -e lib/vusb ]; then git submodule sync lib/vusb && git submodule update --depth 50 --init lib/vusb; fi
if [ ! -e lib/printf ]; then git submodule sync lib/printf && git submodule update --depth 50 --init lib/printf; fi
diff --git a/bin/qmk b/bin/qmk
deleted file mode 100755
index 617f992826..0000000000
--- a/bin/qmk
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python3
-"""CLI wrapper for running QMK commands.
-"""
-import os
-import sys
-from pathlib import Path
-
-# Add the QMK python libs to our path
-script_dir = Path(os.path.realpath(__file__)).parent
-qmk_dir = script_dir.parent
-python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
-sys.path.append(str(python_lib_dir))
-
-# Setup the CLI
-import milc # noqa
-
-milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
-
-
-@milc.cli.entrypoint('QMK Helper Script')
-def qmk_main(cli):
- """The function that gets run when no subcommand is provided.
- """
- cli.print_help()
-
-
-def main():
- """Setup our environment and then call the CLI entrypoint.
- """
- # Change to the root of our checkout
- os.environ['ORIG_CWD'] = os.getcwd()
- os.environ['DEPRECATED_BIN_QMK'] = '1'
- os.chdir(qmk_dir)
-
- print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr)
-
- # Import the subcommands
- import milc.subcommand.config # noqa
- import qmk.cli # noqa
-
- # Execute
- return_code = milc.cli()
-
- if return_code is False:
- exit(1)
-
- elif return_code is not True and isinstance(return_code, int):
- if return_code < 0 or return_code > 255:
- milc.cli.log.error('Invalid return_code: %d', return_code)
- exit(255)
-
- exit(return_code)
-
- exit(0)
-
-
-if __name__ == '__main__':
- main()
diff --git a/bootloader.mk b/bootloader.mk
index 5ba118fb44..ccb92392d9 100644
--- a/bootloader.mk
+++ b/bootloader.mk
@@ -34,6 +34,8 @@
# stm32duino STM32Duino (STM32F103x8)
# stm32-dfu STM32 USB DFU in ROM
# apm32-dfu APM32 USB DFU in ROM
+# RISC-V:
+# gd32v-dfu GD32V USB DFU in ROM
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
@@ -125,6 +127,13 @@ ifeq ($(strip $(BOOTLOADER)), apm32-dfu)
DFU_ARGS ?= -d 314B:0106 -a 0 -s 0x08000000:leave
DFU_SUFFIX_ARGS ?= -v 314B -p 0106
endif
+ifeq ($(strip $(BOOTLOADER)), gd32v-dfu)
+ OPT_DEFS += -DBOOTLOADER_GD32V_DFU
+
+ # Options to pass to dfu-util when flashing
+ DFU_ARGS ?= -d 28E9:0189 -a 0 -s 0x08000000:leave
+ DFU_SUFFIX_ARGS ?= -v 28E9 -p 0189
+endif
ifeq ($(strip $(BOOTLOADER)), kiibohd)
OPT_DEFS += -DBOOTLOADER_KIIBOHD
ifeq ($(strip $(MCU_ORIG)), MK20DX128)
diff --git a/build_keyboard.mk b/build_keyboard.mk
index 37fa6852f8..c1f4f93381 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -32,20 +32,6 @@ endif
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
-# For split boards we need to set a master half.
-MASTER ?= left
-ifdef master
- MASTER = $(master)
-endif
-
-ifeq ($(MASTER),right)
- OPT_DEFS += -DMASTER_IS_ON_RIGHT
-else
- ifneq ($(MASTER),left)
-$(error MASTER does not have a valid value(left/right))
- endif
-endif
-
ifdef SKIP_VERSION
OPT_DEFS += -DSKIP_VERSION
endif
@@ -115,6 +101,7 @@ include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include build_json.mk
+# Pull in keymap level rules.mk
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
# Look through the possible keymap folders until we find a matching keymap.c
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
@@ -345,6 +332,7 @@ ifeq ("$(USER_NAME)","")
endif
USER_PATH := users/$(USER_NAME)
+# Pull in user level rules.mk
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
CONFIG_H += $(USER_PATH)/config.h
@@ -356,6 +344,23 @@ endif
# Disable features that a keyboard doesn't support
-include disable_features.mk
+# Pull in post_rules.mk files from all our subfolders
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_1)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_2)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_3)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_4)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_5)/post_rules.mk
+endif
+
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
@@ -380,6 +385,7 @@ VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
include common_features.mk
+include generic_features.mk
include $(TMK_PATH)/protocol.mk
include $(TMK_PATH)/common.mk
include bootloader.mk
@@ -410,26 +416,20 @@ PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
PROJECT_CONFIG := $(CONFIG_H)
-ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
- VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
- VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer
- include $(VISUALIZER_PATH)/visualizer.mk
-endif
-
CONFIG_H += $(POST_CONFIG_H)
ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H)
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
-$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
+$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
-$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
-$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS)
-$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC)
+$(KEYBOARD_OUTPUT)_SRC := $(PLATFORM_SRC)
+$(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS)
+$(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC)
$(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG)
# Default target.
diff --git a/build_test.mk b/build_test.mk
index 037577bf90..dd66a008ee 100644
--- a/build_test.mk
+++ b/build_test.mk
@@ -52,10 +52,10 @@ include tests/$(TEST)/rules.mk
endif
include common_features.mk
+include generic_features.mk
include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/debounce/tests/rules.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
-include $(QUANTUM_PATH)/serial_link/tests/rules.mk
include $(TMK_PATH)/common/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk
diff --git a/common_features.mk b/common_features.mk
index f4f79000b3..af538b696f 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -13,8 +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/>.
-SERIAL_PATH := $(QUANTUM_PATH)/serial_link
-
QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/send_string.c \
@@ -29,6 +27,7 @@ QUANTUM_SRC += \
$(QUANTUM_DIR)/keyboard.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
+ $(QUANTUM_DIR)/usb_device_state.c \
$(QUANTUM_DIR)/logging/debug.c \
$(QUANTUM_DIR)/logging/sendchar.c \
@@ -45,19 +44,6 @@ else ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), api)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
endif
-ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
- OPT_DEFS += -DAPI_SYSEX_ENABLE
- OPT_DEFS += -DAPI_ENABLE
- MIDI_ENABLE=yes
- SRC += $(QUANTUM_DIR)/api/api_sysex.c
- SRC += $(QUANTUM_DIR)/api.c
-endif
-
-ifeq ($(strip $(COMMAND_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/command.c
- OPT_DEFS += -DCOMMAND_ENABLE
-endif
-
AUDIO_ENABLE ?= no
ifeq ($(strip $(AUDIO_ENABLE)), yes)
ifeq ($(PLATFORM),CHIBIOS)
@@ -82,7 +68,7 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
SRC += $(QUANTUM_DIR)/audio/audio.c ## common audio code, hardware agnostic
- SRC += $(QUANTUM_DIR)/audio/driver_$(PLATFORM_KEY)_$(strip $(AUDIO_DRIVER)).c
+ SRC += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/audio_$(strip $(AUDIO_DRIVER)).c
SRC += $(QUANTUM_DIR)/audio/voices.c
SRC += $(QUANTUM_DIR)/audio/luts.c
endif
@@ -156,37 +142,18 @@ else
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
- ifeq ($(MCU_SERIES), STM32F3xx)
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F303xC
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
- else ifeq ($(MCU_SERIES), STM32F1xx)
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F103xB
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
- else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB)
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F072xB
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
- else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F042x6)
-
- # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced.
- # This ensures that the EEPROM page buffer fits into RAM
- USE_PROCESS_STACKSIZE = 0x600
- USE_EXCEPTIONS_STACKSIZE = 0x300
-
+ ifneq ($(filter STM32F3xx_% STM32F1xx_% %_STM32F401xC %_STM32F401xE %_STM32F405xG %_STM32F411xE %_STM32F072xB %_STM32F042x6 %_GD32VF103xB %_GD32VF103x8, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
+ OPT_DEFS += -DEEPROM_DRIVER
+ COMMON_VPATH += $(DRIVER_PATH)/eeprom
+ SRC += eeprom_driver.c
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
- OPT_DEFS += -DEEPROM_EMU_STM32F042x6
- OPT_DEFS += -DSTM32_EEPROM_ENABLE
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
OPT_DEFS += -DEEPROM_DRIVER
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
- SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
+ SRC += eeprom_driver.c
+ SRC += eeprom_stm32_L0_L1.c
else
# This will effectively work the same as "transient" if not supported by the chip
SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c
@@ -350,17 +317,6 @@ ifeq ($(strip $(PRINTING_ENABLE)), yes)
SRC += $(TMK_DIR)/protocol/serial_uart.c
endif
-ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
- SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
- SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
- SERIAL_DEFS += -DSERIAL_LINK_ENABLE
- COMMON_VPATH += $(SERIAL_PATH)
-
- SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
- OPT_DEFS += $(SERIAL_DEFS)
- VAPTH += $(SERIAL_PATH)
-endif
-
VARIABLE_TRACE ?= no
ifneq ($(strip $(VARIABLE_TRACE)),no)
SRC += $(QUANTUM_DIR)/variable_trace.c
@@ -370,10 +326,6 @@ ifneq ($(strip $(VARIABLE_TRACE)),no)
endif
endif
-ifeq ($(strip $(LCD_ENABLE)), yes)
- CIE1931_CURVE := yes
-endif
-
VALID_BACKLIGHT_TYPES := pwm timer software custom
BACKLIGHT_ENABLE ?= no
@@ -437,10 +389,6 @@ ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
SRC += apa102.c
endif
-ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
- CIE1931_CURVE := yes
-endif
-
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES := yes
@@ -456,21 +404,6 @@ ifeq ($(strip $(TERMINAL_ENABLE)), yes)
OPT_DEFS += -DUSER_PRINT
endif
-ifeq ($(strip $(WPM_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/wpm.c
- OPT_DEFS += -DWPM_ENABLE
-endif
-
-ifeq ($(strip $(ENCODER_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/encoder.c
- OPT_DEFS += -DENCODER_ENABLE
-endif
-
-ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
- OPT_DEFS += -DVELOCIKEY_ENABLE
- SRC += $(QUANTUM_DIR)/velocikey.c
-endif
-
ifeq ($(strip $(VIA_ENABLE)), yes)
DYNAMIC_KEYMAP_ENABLE := yes
RAW_ENABLE := yes
@@ -479,16 +412,6 @@ ifeq ($(strip $(VIA_ENABLE)), yes)
OPT_DEFS += -DVIA_ENABLE
endif
-ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
- OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE
- SRC += $(QUANTUM_DIR)/dynamic_keymap.c
-endif
-
-ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
- OPT_DEFS += -DDIP_SWITCH_ENABLE
- SRC += $(QUANTUM_DIR)/dip_switch.c
-endif
-
VALID_MAGIC_TYPES := yes lite
BOOTMAGIC_ENABLE ?= no
ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
@@ -568,23 +491,19 @@ ifeq ($(strip $(CRC_ENABLE)), yes)
SRC += crc.c
endif
-HAPTIC_ENABLE ?= no
-ifneq ($(strip $(HAPTIC_ENABLE)),no)
+ifeq ($(strip $(HAPTIC_ENABLE)),yes)
COMMON_VPATH += $(DRIVER_PATH)/haptic
- OPT_DEFS += -DHAPTIC_ENABLE
- SRC += $(QUANTUM_DIR)/haptic.c
- SRC += $(QUANTUM_DIR)/process_keycode/process_haptic.c
-endif
-ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
- SRC += DRV2605L.c
- QUANTUM_LIB_SRC += i2c_master.c
- OPT_DEFS += -DDRV2605L
-endif
+ ifneq ($(filter DRV2605L, $(HAPTIC_DRIVER)), )
+ SRC += DRV2605L.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ OPT_DEFS += -DDRV2605L
+ endif
-ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
- SRC += solenoid.c
- OPT_DEFS += -DSOLENOID_ENABLE
+ ifneq ($(filter SOLENOID, $(HAPTIC_DRIVER)), )
+ SRC += solenoid.c
+ OPT_DEFS += -DSOLENOID_ENABLE
+ endif
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
@@ -617,8 +536,6 @@ ifeq ($(strip $(ST7565_ENABLE)), yes)
SRC += st7565.c
endif
-include $(DRIVER_PATH)/qwiic/qwiic.mk
-
ifeq ($(strip $(UCIS_ENABLE)), yes)
OPT_DEFS += -DUCIS_ENABLE
UNICODE_COMMON := yes
@@ -641,60 +558,52 @@ ifeq ($(strip $(UNICODE_COMMON)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
endif
-SPACE_CADET_ENABLE ?= yes
-ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
- OPT_DEFS += -DSPACE_CADET_ENABLE
-endif
-
MAGIC_ENABLE ?= yes
ifeq ($(strip $(MAGIC_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c
OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
endif
-GRAVE_ESC_ENABLE ?= yes
-ifeq ($(strip $(GRAVE_ESC_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_grave_esc.c
- OPT_DEFS += -DGRAVE_ESC_ENABLE
-endif
-
-ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
- OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
+ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
+ OPT_DEFS += -DAUTO_SHIFT_ENABLE
+ ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
+ OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
+ endif
endif
-ifeq ($(strip $(COMBO_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
- OPT_DEFS += -DCOMBO_ENABLE
+ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_mouse.c
+ OPT_DEFS += -DPS2_MOUSE_ENABLE
+ OPT_DEFS += -DMOUSE_ENABLE
endif
-ifeq ($(strip $(KEY_OVERRIDE_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_key_override.c
- OPT_DEFS += -DKEY_OVERRIDE_ENABLE
+ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_busywait.c
+ SRC += ps2_io_avr.c
+ OPT_DEFS += -DPS2_USE_BUSYWAIT
endif
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
- OPT_DEFS += -DTAP_DANCE_ENABLE
+ifeq ($(strip $(PS2_USE_INT)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_interrupt.c
+ SRC += ps2_io.c
+ OPT_DEFS += -DPS2_USE_INT
endif
-ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
- OPT_DEFS += -DKEY_LOCK_ENABLE
+ifeq ($(strip $(PS2_USE_USART)), yes)
+ PS2_ENABLE := yes
+ SRC += ps2_usart.c
+ SRC += ps2_io.c
+ OPT_DEFS += -DPS2_USE_USART
endif
-ifeq ($(strip $(LEADER_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
- OPT_DEFS += -DLEADER_ENABLE
-endif
-
-ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
- OPT_DEFS += -DAUTO_SHIFT_ENABLE
- ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
- OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
- endif
+ifeq ($(strip $(PS2_ENABLE)), yes)
+ COMMON_VPATH += $(DRIVER_PATH)/ps2
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/ps2
+ OPT_DEFS += -DPS2_ENABLE
endif
JOYSTICK_ENABLE ?= no
@@ -717,11 +626,6 @@ ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
endif
endif
-DIGITIZER_ENABLE ?= no
-ifneq ($(strip $(DIGITIZER_ENABLE)), no)
- SRC += $(QUANTUM_DIR)/digitizer.c
-endif
-
USBPD_ENABLE ?= no
VALID_USBPD_DRIVER_TYPES = custom vendor
USBPD_DRIVER ?= vendor
@@ -745,3 +649,27 @@ ifeq ($(strip $(USBPD_ENABLE)), yes)
endif
endif
endif
+
+BLUETOOTH_ENABLE ?= no
+VALID_BLUETOOTH_DRIVER_TYPES := AdafruitBLE RN42 custom
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
+ ifeq ($(filter $(strip $(BLUETOOTH_DRIVER)),$(VALID_BLUETOOTH_DRIVER_TYPES)),)
+ $(error "$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type)
+ endif
+ OPT_DEFS += -DBLUETOOTH_ENABLE
+ NO_USB_STARTUP_CHECK := yes
+ COMMON_VPATH += $(DRIVER_PATH)/bluetooth
+ SRC += outputselect.c
+
+ ifeq ($(strip $(BLUETOOTH_DRIVER)), AdafruitBLE)
+ OPT_DEFS += -DMODULE_ADAFRUIT_BLE
+ SRC += analog.c
+ SRC += $(DRIVER_PATH)/bluetooth/adafruit_ble.cpp
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+
+ ifeq ($(strip $(BLUETOOTH_DRIVER)), RN42)
+ OPT_DEFS += -DMODULE_RN42
+ SRC += $(TMK_DIR)/protocol/serial_uart.c
+ endif
+endif
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 15f407fce4..65d44c94d2 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -13,7 +13,7 @@
},
"processor": {
"type": "string",
- "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L433", "STM32L443", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
+ "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L433", "STM32L443", "GD32VF103", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
@@ -56,7 +56,7 @@
},
"bootloader": {
"type": "string",
- "enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "unknown", "usbasploader", "USBasp", "tinyuf2"],
+ "enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"],
},
"bootloader_instructions": {
"type": "string",
diff --git a/disable_features.mk b/disable_features.mk
index 84d8316eac..090a9b5a11 100644
--- a/disable_features.mk
+++ b/disable_features.mk
@@ -1,7 +1,6 @@
# Unconditionally disable features that a keyboard advertises it doesn't support
FEATURE_NAMES :=
-FEATURE_NAMES += ADAFRUIT_BLE
FEATURE_NAMES += AUDIO
FEATURE_NAMES += BACKLIGHT
FEATURE_NAMES += BLUETOOTH
@@ -20,10 +19,8 @@ FEATURE_NAMES += PS2_MOUSE
FEATURE_NAMES += RGBLIGHT
FEATURE_NAMES += RGB_MATRIX
FEATURE_NAMES += SLEEP_LED
-FEATURE_NAMES += SERIAL_LINK
FEATURE_NAMES += STENO
FEATURE_NAMES += SWAP_HANDS
-FEATURE_NAMES += VISUALIZER
FEATURE_NAMES += WATCHDOG
FEATURE_NAMES += XT
diff --git a/docs/_summary.md b/docs/_summary.md
index 2f6309e41d..4b528d9967 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -72,6 +72,7 @@
* [Mod-Tap](mod_tap.md)
* [Macros](feature_macros.md)
* [Mouse Keys](feature_mouse_keys.md)
+ * [Programmable Button](feature_programmable_button.md)
* [Space Cadet Shift](feature_space_cadet.md)
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
diff --git a/docs/audio_driver.md b/docs/audio_driver.md
index 7cd5a98d9f..81c3390074 100644
--- a/docs/audio_driver.md
+++ b/docs/audio_driver.md
@@ -57,14 +57,14 @@ This driver needs one Timer per enabled/used DAC channel, to trigger conversion;
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:
-``` c
+```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
-``` c
+```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
@@ -93,14 +93,14 @@ only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; t
Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6:
-``` c
+```c
//halconf.h:
#define HAL_USE_DAC TRUE
#define HAL_USE_GPT TRUE
#include_next <halconf.h>
```
-``` c
+```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_DAC_USE_DAC1_CH1
@@ -153,7 +153,7 @@ This driver uses the ChibiOS-PWM system to produce a square-wave on specific out
The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.
A configuration example for the STM32F103C8 would be:
-``` c
+```c
//halconf.h:
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
@@ -161,7 +161,7 @@ A configuration example for the STM32F103C8 would be:
#include_next <halconf.h>
```
-``` c
+```c
// mcuconf.h:
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM1
@@ -177,7 +177,7 @@ If we now target pin A8, looking through the data-sheet of the STM32F103C8, for
- TIM1_CH4 = PA11
with all this information, the configuration would contain these lines:
-``` c
+```c
//config.h:
#define AUDIO_PIN A8
#define AUDIO_PWM_DRIVER PWMD1
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 8fa7ad41dc..1427b592f5 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -118,54 +118,6 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
-## `qmk console`
-
-This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
-
-**Usage**:
-
-```
-qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]
-```
-
-**Examples**:
-
-Connect to all available keyboards and show their console messages:
-
-```
-qmk console
-```
-
-List all devices:
-
-```
-qmk console -l
-```
-
-Show only messages from clueboard/66/rev3 keyboards:
-
-```
-qmk console -d C1ED:2370
-```
-
-Show only messages from the second clueboard/66/rev3:
-
-```
-qmk console -d C1ED:2370:2
-```
-
-Show timestamps and VID:PID instead of names:
-
-```
-qmk console -n -t
-```
-
-Disable bootloader messages:
-
-```
-qmk console --no-bootloaders
-```
-
## `qmk doctor`
This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to.
@@ -368,6 +320,33 @@ qmk format-c
qmk format-c -b branch_name
```
+## `qmk generate-compilation-database`
+
+**Usage**:
+
+```
+qmk generate-compilation-database [-kb KEYBOARD] [-km KEYMAP]
+```
+
+Creates a `compile_commands.json` file.
+
+Does your IDE/editor use a language server but doesn't _quite_ find all the necessary include files? Do you hate red squigglies? Do you wish your editor could figure out `#include QMK_KEYBOARD_H`? You might need a [compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html)! The qmk tool can build this for you.
+
+This command needs to know which keyboard and keymap to build. It uses the same configuration options as the `qmk compile` command: arguments, current directory, and config files.
+
+**Example:**
+
+```
+$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
+$ qmk generate-compilation-database
+Ψ Making clean
+Ψ Gathering build instructions from make -n gh60/satan:colemak
+Ψ Found 50 compile commands
+Ψ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json
+```
+
+Now open your dev environment and live a squiggly-free life.
+
## `qmk docs`
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
diff --git a/docs/cli_development.md b/docs/cli_development.md
index 0f4f401b33..62be3b3d8c 100644
--- a/docs/cli_development.md
+++ b/docs/cli_development.md
@@ -14,7 +14,7 @@ If you intend to maintain keyboards and/or contribute to QMK, you can enable the
This will allow you to see all available subcommands.
**Note:** You will have to install additional requirements:
-```bash
+```
python3 -m pip install -r requirements-dev.txt
```
diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md
index 2bf3b0ebb7..39e9061c20 100644
--- a/docs/compatible_microcontrollers.md
+++ b/docs/compatible_microcontrollers.md
@@ -27,6 +27,7 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
+ * [STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
@@ -42,7 +43,14 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
+ * [MK66FX1M0](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k66-180-mhz-dual-high-speed-full-speed-usbs-2mb-flash-microcontrollers-mcus-based-on-arm-cortex-m4-core:K66_180)
## Atmel ATSAM
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop).
+
+## RISC-V
+
+### GigaDevice
+
+[ChibiOS-Contrib](https://github.com/ChibiOS/ChibiOS-Contrib) has support for the GigaDevice [GD32VF103 series](https://www.gigadevice.com/products/microcontrollers/gd32/risc-v/mainstream-line/gd32vf103-series/) microcontrollers and provides configurations for the [SiPeed Longan Nano](https://longan.sipeed.com/en/) development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers. \ No newline at end of file
diff --git a/docs/configurator_default_keymaps.md b/docs/configurator_default_keymaps.md
index 30f9fa72f3..c52342cf16 100644
--- a/docs/configurator_default_keymaps.md
+++ b/docs/configurator_default_keymaps.md
@@ -20,7 +20,7 @@ Keymaps in this directory require four key-value pairs:
Additionally, most keymaps contain a `commit` key. This key is not consumed by the API that back-stops QMK Configurator, but is used by Configurator's maintainers to tell which version of a keymap was used to create the JSON keymap in this repository. The value is the SHA of the last commit to modify a board's default `keymap.c` in the `qmk_firmware` repository. The SHA is found by checking out [the `master` branch of the `qmk/qmk_firmware` repository](https://github.com/qmk/qmk_firmware/tree/master/) and running `git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c` (use `keymap.json` if the keyboard in question has this file instead), which should return something similar to:
-```shell
+```
f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
```
@@ -31,7 +31,7 @@ In this example, `f14629ed1cd7c7ec9089604d64f29a99981558e8` is the value that sh
If one wished to add a default keymap for the H87a by Hineybush, one would run the `git log` command above against the H87a's default keymap in `qmk_firmware`:
-```shell
+```
user ~/qmk_firmware (master)
$ git log -1 --pretty=oneline master -- keyboards/hineybush/h87a/keymaps/default/keymap.c
ef8878fba5d3786e3f9c66436da63a560cd36ac9 Hineybush h87a lock indicators (#8237)
diff --git a/docs/contributing.md b/docs/contributing.md
index 1d68d22d9f..eb033d167f 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -105,7 +105,7 @@ enum my_keycodes {
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
- ./bin/qmk docs
+ qmk docs
or if you only have Python 3 installed:
diff --git a/docs/custom_matrix.md b/docs/custom_matrix.md
index cfa900a33d..8f6878f94a 100644
--- a/docs/custom_matrix.md
+++ b/docs/custom_matrix.md
@@ -15,7 +15,7 @@ The reasons to use this feature include:
Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called `matrix.c`.
Add a new file to your keyboard directory:
-```text
+```
keyboards/<keyboard>/matrix.c
```
diff --git a/docs/de/cli.md b/docs/de/cli.md
index 7dc02d505b..259aeecf75 100644
--- a/docs/de/cli.md
+++ b/docs/de/cli.md
@@ -51,25 +51,6 @@ Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme
* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
-# Lokale CLI
-
-Wenn Du die globale CLI nicht verwenden möchtest, beinhaltet `qmk_firmware` auch eine lokale CLI. Du kannst sie hier finden: `qmk_firmware/bin/qmk`. Du kannst den `qmk`-Befehl aus irgendeinem Datei-Verzeichnis ausführen und es wird immer auf dieser Kopie von `qmk_firmware` arbeiten.
-
-**Beispiel**:
-
-```
-$ ~/qmk_firmware/bin/qmk hello
-Ψ Hello, World!
-```
-
-## Einschränkungen der lokalen CLI
-
-Hier ein Vergleich mit der globalen CLI:
-
-* Die lokale CLI unterstützt kein `qmk setup` oder `qmk clone`.
-* Die lokale CLI arbeitet immer innerhalb der selben `qmk_firmware`-Verzeichnisstruktur, auch wenn Du mehrere Repositories geklont hast.
-* Die lokale CLI läuft nicht in einer virtualenv. Daher ist es möglich, dass Abhängigkeiten (dependencies) miteinander in Konflikt kommen/stehen.
-
# CLI-Befehle
## `qmk compile`
diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md
index 9155e56e37..003629ba9a 100644
--- a/docs/driver_installation_zadig.md
+++ b/docs/driver_installation_zadig.md
@@ -93,6 +93,7 @@ The device name here is the name that appears in Zadig, and may not be what the
|`usbasploader`|USBasp |`16C0:05DC` |libusbK|
|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
+|`gd32v-dfu` |GD32V BOOTLOADER |`28E9:0189` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
|`qmk-hid` |(keyboard name) Bootloader |`03EB:2067` |HidUsb |
diff --git a/docs/es/hardware_drivers.md b/docs/es/hardware_drivers.md
index e0a9736068..788de2c5ef 100644
--- a/docs/es/hardware_drivers.md
+++ b/docs/es/hardware_drivers.md
@@ -18,10 +18,6 @@ Soporte para direccionar pines en el ProMicro por su nombre Arduino en lugar de
Soporte para pantallas OLED basadas en SSD1306. Para obtener más información consulta la página de [Característica de Controlador OLED](feature_oled_driver.md).
-## uGFX
-
-Puedes hacer uso de uGFX dentro de QMK para manejar LCDs de caracteres y gráficos, matrices de LED, OLED, TFT, y otras tecnologías de visualización. Esto necesita ser mejor documentado. Si estás tratando de hacer esto y leer el código no ayuda por favor [abre una issue](https://github.com/qmk/qmk_firmware/issues/new) y podemos ayudarte por el proceso.
-
## WS2812 (Solo AVR)
Soporte para LEDs WS2811/WS2812{a,b,c}. Para obtener más información consulta la página de [Luz RGB](feature_rgblight.md).
diff --git a/docs/es/hardware_keyboard_guidelines.md b/docs/es/hardware_keyboard_guidelines.md
index a505cc5ce1..298a3b7ce7 100644
--- a/docs/es/hardware_keyboard_guidelines.md
+++ b/docs/es/hardware_keyboard_guidelines.md
@@ -142,8 +142,6 @@ El año debe ser el primer año en que se crea el archivo. Si el trabajo se hizo
El núcleo de QMC está licenciado bajo la [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html). Si estás enviando binarios para los procesadores AVR puedes elegir cualquiera [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) o [GPLv3](https://www.gnu.org/licenses/gpl.html). Si estás enviando binarios para ARM procesadores debes elegir [GPL Versión 3](https://www.gnu.org/licenses/gpl.html) para cumplir con los [ChibiOS](https://www.chibios.org) licencia GPLv3.
-Si tu teclado hace uso de la [uGFX](https://gfx.io) características dentro de QMK debes cumplir con la [Licencia de uGFX](https://ugfx.io/license.html), que requiere una licencia comercial separada antes de vender un dispositivo que contiene uGFX.
-
## Detalles técnicos
Si estás buscando más información sobre cómo hacer que su teclado funcione con QMK, [echa un vistazo a la sección hardware](hardware.md)!
diff --git a/docs/faq_debug.md b/docs/faq_debug.md
index 1afa38a624..28b8c81759 100644
--- a/docs/faq_debug.md
+++ b/docs/faq_debug.md
@@ -62,7 +62,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
```
Example output
-```text
+```
Waiting for device:.......
Listening:
KL: kc: 169, col: 0, row: 0, pressed: 1
@@ -82,7 +82,7 @@ When testing performance issues, it can be useful to know the frequency at which
```
Example output
-```text
+```
> matrix scan frequency: 315
> matrix scan frequency: 313
> matrix scan frequency: 316
diff --git a/docs/faq_misc.md b/docs/faq_misc.md
index 9ab2b69a80..41d17906bf 100644
--- a/docs/faq_misc.md
+++ b/docs/faq_misc.md
@@ -36,7 +36,7 @@ Size after:
can retry, loading that one
- Some of the options you might specify in your keyboard's Makefile
consume extra memory; watch out for BOOTMAGIC_ENABLE,
- MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
+ MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE
- DFU tools do /not/ allow you to write into the bootloader (unless
you throw in an extra fruit salad of options), so there is little risk
there.
diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md
index d47ecc6824..79782cf564 100644
--- a/docs/feature_backlight.md
+++ b/docs/feature_backlight.md
@@ -8,7 +8,7 @@ The MCU can only supply so much current to its GPIO pins. Instead of powering th
Most keyboards have backlighting enabled by default if they support it, but if it is not working for you, check that your `rules.mk` includes the following:
-```makefile
+```make
BACKLIGHT_ENABLE = yes
```
@@ -54,7 +54,7 @@ If backlight breathing is enabled (see below), the following functions are also
To select which driver to use, configure your `rules.mk` with the following:
-```makefile
+```make
BACKLIGHT_DRIVER = software
```
@@ -87,7 +87,7 @@ This functionality is configured at the keyboard level with the `BACKLIGHT_ON_ST
The `pwm` driver is configured by default, however the equivalent setting within `rules.mk` would be:
-```makefile
+```make
BACKLIGHT_DRIVER = pwm
```
@@ -143,7 +143,7 @@ The breathing effect is the same as in the hardware PWM implementation.
While still in its early stages, ARM backlight support aims to eventually have feature parity with AVR. The `pwm` driver is configured by default, however the equivalent setting within `rules.mk` would be:
-```makefile
+```make
BACKLIGHT_DRIVER = pwm
```
@@ -167,7 +167,7 @@ Currently only hardware PWM is supported, not timer assisted, and does not provi
In this mode, PWM is "emulated" while running other keyboard tasks. It offers maximum hardware compatibility without extra platform configuration. The tradeoff is the backlight might jitter when the keyboard is busy. To enable, add this to your `rules.mk`:
-```makefile
+```make
BACKLIGHT_DRIVER = software
```
@@ -188,7 +188,7 @@ To activate multiple backlight pins, add something like this to your `config.h`,
If none of the above drivers apply to your board (for example, you are using a separate IC to control the backlight), you can implement a custom backlight driver using this simple API provided by QMK. To enable, add this to your `rules.mk`:
-```makefile
+```make
BACKLIGHT_DRIVER = custom
```
diff --git a/docs/feature_bluetooth.md b/docs/feature_bluetooth.md
index 08e5f24ac5..fdf19c1077 100644
--- a/docs/feature_bluetooth.md
+++ b/docs/feature_bluetooth.md
@@ -4,10 +4,10 @@
Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
-|Board |Bluetooth Protocol |Connection Type |rules.mk |Bluetooth Chip|
-|----------------------------------------------------------------|----------------------------|----------------|---------------------------|--------------|
-|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic | UART |`BLUETOOTH = RN42` | RN-42 |
-|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy | SPI |`BLUETOOTH = AdafruitBLE` | nRF51822 |
+|Board |Bluetooth Protocol |Connection Type|rules.mk |Bluetooth Chip|
+|----------------------------------------------------------------|--------------------|---------------|--------------------------------|--------------|
+|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic |UART |`BLUETOOTH_DRIVER = RN42` |RN-42 |
+|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = AdafruitBLE`|nRF51822 |
Not Supported Yet but possible:
* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
@@ -17,22 +17,23 @@ Not Supported Yet but possible:
### Adafruit BLE SPI Friend
Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF5182 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
-* #define AdafruitBleResetPin D4
-* #define AdafruitBleCSPin B4
-* #define AdafruitBleIRQPin E6
+* `#define ADAFRUIT_BLE_RST_PIN D4`
+* `#define ADAFRUIT_BLE_CS_PIN B4`
+* `#define ADAFRUIT_BLE_IRQ_PIN E6`
A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
-
<!-- FIXME: Document bluetooth support more completely. -->
## Bluetooth Rules.mk Options
The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](reference_glossary.md#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`.
-Use only one of these to enable Bluetooth:
-* BLUETOOTH_ENABLE = yes (Legacy Option)
-* BLUETOOTH = RN42
-* BLUETOOTH = AdafruitBLE
+Add the following to your `rules.mk`:
+
+```make
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE # or RN42
+```
## Bluetooth Keycodes
diff --git a/docs/feature_digitizer.md b/docs/feature_digitizer.md
index 9b6aeddbaa..ac2d64f977 100644
--- a/docs/feature_digitizer.md
+++ b/docs/feature_digitizer.md
@@ -4,7 +4,7 @@ The digitizer HID interface allows setting the mouse cursor position at absolute
To enable the digitizer interface, add the following line to your rules.mk:
-```makefile
+```make
DIGITIZER_ENABLE = yes
```
diff --git a/docs/feature_haptic_feedback.md b/docs/feature_haptic_feedback.md
index 1f36f5b054..4054c5d9b7 100644
--- a/docs/feature_haptic_feedback.md
+++ b/docs/feature_haptic_feedback.md
@@ -4,9 +4,12 @@
The following options are currently available for haptic feedback in `rules.mk`:
-`HAPTIC_ENABLE += DRV2605L`
+```
+HAPTIC_ENABLE = yes
-`HAPTIC_ENABLE += SOLENOID`
+HAPTIC_DRIVER += DRV2605L
+HAPTIC_DRIVER += SOLENOID
+```
## Known Supported Hardware
@@ -172,6 +175,7 @@ With the entry of `#define NO_HAPTIC_MOD` in config.h, the following keys will n
* Usual modifier keys such as Control/Shift/Alt/Gui (For example `KC_LCTRL`)
* `MO()` momentary keys. See also [Layers](feature_layers.md).
+* `LM()` momentary keys with mod active.
* `LT()` layer tap keys, when held to activate a layer. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered.
* `TT()` layer tap toggle keys, when held to activate a layer. However when tapped `TAPPING_TOGGLE` times to permanently toggle the layer, on the last tap haptic feedback is still triggered.
* `MT()` mod tap keys, when held to keep a usual modifier key pressed. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered. See also [Mod-Tap](mod_tap.md).
diff --git a/docs/feature_joystick.md b/docs/feature_joystick.md
index 95702d6a23..fe33517a16 100644
--- a/docs/feature_joystick.md
+++ b/docs/feature_joystick.md
@@ -15,7 +15,7 @@ or send gamepad reports based on values computed by the keyboard.
To use analog input you must first enable it in `rules.mk`:
-```makefile
+```make
JOYSTICK_ENABLE = yes
JOYSTICK_DRIVER = analog # or 'digital'
```
diff --git a/docs/feature_layouts.md b/docs/feature_layouts.md
index b34fd442d5..93d040b554 100644
--- a/docs/feature_layouts.md
+++ b/docs/feature_layouts.md
@@ -25,7 +25,7 @@ The `layouts/default/` and `layouts/community/` are two examples of layout "repo
Each layout folder is named (`[a-z0-9_]`) after the physical aspects of the layout, in the most generic way possible, and contains a `readme.md` with the layout to be defined by the keyboard:
-```md
+```markdown
# 60_ansi
LAYOUT_60_ansi
diff --git a/docs/feature_midi.md b/docs/feature_midi.md
index ab29d89db6..3da5c4940a 100644
--- a/docs/feature_midi.md
+++ b/docs/feature_midi.md
@@ -4,7 +4,7 @@
First, enable MIDI by adding the following to your `rules.mk`:
-```makefile
+```make
MIDI_ENABLE = yes
```
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index 905c2a8f95..badeadc12b 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -4,7 +4,7 @@ Pointing Device is a generic name for a feature intended to be generic: moving t
To enable Pointing Device, uncomment the following line in your rules.mk:
-```makefile
+```make
POINTING_DEVICE_ENABLE = yes
```
diff --git a/docs/feature_programmable_button.md b/docs/feature_programmable_button.md
new file mode 100644
index 0000000000..b1ef555d16
--- /dev/null
+++ b/docs/feature_programmable_button.md
@@ -0,0 +1,74 @@
+## Programmable Button
+
+Programmable button is a feature that can be used to send keys that have no
+predefined meaning.
+This means they can be processed on the host side by custom software without
+colliding without the operating system trying to interpret these keys.
+
+The keycodes are emitted according to the HID usage
+"Telephony Device Page" (0x0B), "Programmable button usage" (0x07).
+On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#`
+keycodes.
+(Up to `KEY_MACRO30`)
+
+### Enabling Programmable Button support
+
+To enable Programmable Button, add the following line to your keymap’s `rules.mk`:
+
+```c
+PROGRAMMABLE_BUTTON_ENABLE = yes
+```
+
+### Mapping
+
+In your keymap you can use the following keycodes to map key presses to Programmable Buttons:
+
+|Key |Description |
+|------------------------|----------------------|
+|`PROGRAMMABLE_BUTTON_1` |Programmable button 1 |
+|`PROGRAMMABLE_BUTTON_2` |Programmable button 2 |
+|`PROGRAMMABLE_BUTTON_3` |Programmable button 3 |
+|`PROGRAMMABLE_BUTTON_4` |Programmable button 4 |
+|`PROGRAMMABLE_BUTTON_5` |Programmable button 5 |
+|`PROGRAMMABLE_BUTTON_6` |Programmable button 6 |
+|`PROGRAMMABLE_BUTTON_7` |Programmable button 7 |
+|`PROGRAMMABLE_BUTTON_8` |Programmable button 8 |
+|`PROGRAMMABLE_BUTTON_9` |Programmable button 9 |
+|`PROGRAMMABLE_BUTTON_10`|Programmable button 10|
+|`PROGRAMMABLE_BUTTON_11`|Programmable button 11|
+|`PROGRAMMABLE_BUTTON_12`|Programmable button 12|
+|`PROGRAMMABLE_BUTTON_13`|Programmable button 13|
+|`PROGRAMMABLE_BUTTON_14`|Programmable button 14|
+|`PROGRAMMABLE_BUTTON_15`|Programmable button 15|
+|`PROGRAMMABLE_BUTTON_16`|Programmable button 16|
+|`PROGRAMMABLE_BUTTON_17`|Programmable button 17|
+|`PROGRAMMABLE_BUTTON_18`|Programmable button 18|
+|`PROGRAMMABLE_BUTTON_19`|Programmable button 19|
+|`PROGRAMMABLE_BUTTON_20`|Programmable button 20|
+|`PROGRAMMABLE_BUTTON_21`|Programmable button 21|
+|`PROGRAMMABLE_BUTTON_22`|Programmable button 22|
+|`PROGRAMMABLE_BUTTON_23`|Programmable button 23|
+|`PROGRAMMABLE_BUTTON_24`|Programmable button 24|
+|`PROGRAMMABLE_BUTTON_25`|Programmable button 25|
+|`PROGRAMMABLE_BUTTON_26`|Programmable button 26|
+|`PROGRAMMABLE_BUTTON_27`|Programmable button 27|
+|`PROGRAMMABLE_BUTTON_28`|Programmable button 28|
+|`PROGRAMMABLE_BUTTON_29`|Programmable button 29|
+|`PROGRAMMABLE_BUTTON_30`|Programmable button 30|
+|`PROGRAMMABLE_BUTTON_31`|Programmable button 31|
+|`PROGRAMMABLE_BUTTON_32`|Programmable button 32|
+|`PB_1` to `PB_32` |Aliases for keymaps |
+
+### API
+
+You can also use a dedicated API defined in `programmable_button.h` to interact with this feature:
+
+```
+void programmable_button_clear(void);
+void programmable_button_send(void);
+void programmable_button_on(uint8_t code);
+void programmable_button_off(uint8_t code);
+bool programmable_button_is_on(uint8_t code);
+uint32_t programmable_button_get_report(void);
+void programmable_button_set_report(uint32_t report);
+```
diff --git a/docs/feature_ps2_mouse.md b/docs/feature_ps2_mouse.md
index 776a33150e..c980705ae7 100644
--- a/docs/feature_ps2_mouse.md
+++ b/docs/feature_ps2_mouse.md
@@ -30,7 +30,7 @@ Note: This is not recommended, you may encounter jerky movement or unsent inputs
In rules.mk:
-```makefile
+```make
PS2_MOUSE_ENABLE = yes
PS2_USE_BUSYWAIT = yes
```
@@ -39,14 +39,8 @@ In your keyboard config.h:
```c
#ifdef PS2_USE_BUSYWAIT
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 1
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+# define PS2_CLOCK_PIN D1
+# define PS2_DATA_PIN D2
#endif
```
@@ -56,7 +50,7 @@ The following example uses D2 for clock and D5 for data. You can use any INT or
In rules.mk:
-```makefile
+```make
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
```
@@ -65,14 +59,8 @@ In your keyboard config.h:
```c
#ifdef PS2_USE_INT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 2
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 5
+#define PS2_CLOCK_PIN D2
+#define PS2_DATA_PIN D5
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC21) | \
@@ -102,8 +90,8 @@ PS2_USE_INT = yes
In your keyboard config.h:
```c
-#define PS2_CLOCK A8
-#define PS2_DATA A9
+#define PS2_CLOCK_PIN A8
+#define PS2_DATA_PIN A9
```
And in the chibios specifig halconf.h:
@@ -118,7 +106,7 @@ To use USART on the ATMega32u4, you have to use PD5 for clock and PD2 for data.
In rules.mk:
-```makefile
+```make
PS2_MOUSE_ENABLE = yes
PS2_USE_USART = yes
```
@@ -127,14 +115,8 @@ In your keyboard config.h:
```c
#ifdef PS2_USE_USART
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 5
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
diff --git a/docs/feature_rawhid.md b/docs/feature_rawhid.md
index 4a688fcba7..558a23a80f 100644
--- a/docs/feature_rawhid.md
+++ b/docs/feature_rawhid.md
@@ -15,7 +15,7 @@ RAW_ENABLE = yes
In your `keymap.c` include `"raw_hid.h"` and implement the following:
-```C
+```c
void raw_hid_receive(uint8_t *data, uint8_t length) {
// Your code goes here. data is the packet received from host.
}
@@ -23,7 +23,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
The `"raw_hid.h"` header also declares `void raw_hid_send(uint8_t *data, uint8_t length);` which allows sending packets from keyboard to host. As an example, it can also be used for debugging when building your host application by returning all data back to the host.
-```C
+```c
void raw_hid_receive(uint8_t *data, uint8_t length) {
raw_hid_send(data, length);
}
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 2dbd32fbdb..2660aad09b 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -10,7 +10,7 @@ If you want to use single color LED's you should use the [LED Matrix Subsystem](
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3731 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3731
```
@@ -71,7 +71,7 @@ Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet]
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3733 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3733
```
@@ -141,7 +141,7 @@ Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](
There is basic support for addressable RGB matrix lighting with the I2C IS31FL3737 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3737
```
@@ -206,7 +206,7 @@ Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
```
@@ -226,7 +226,7 @@ Configure the hardware via your `config.h`:
There is basic support for APA102 based addressable LED strands. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = APA102
```
@@ -246,7 +246,7 @@ Configure the hardware via your `config.h`:
### AW20216 :id=aw20216
There is basic support for addressable RGB matrix lighting with the SPI AW20216 RGB controller. To enable it, add this to your `rules.mk`:
-```makefile
+```make
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = AW20216
```
diff --git a/docs/feature_stenography.md b/docs/feature_stenography.md
index 8d66034d4b..a7c3f3d9ed 100644
--- a/docs/feature_stenography.md
+++ b/docs/feature_stenography.md
@@ -32,7 +32,7 @@ GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything
Firstly, enable steno in your keymap's Makefile. You may also need disable mousekeys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
-```makefile
+```make
STENO_ENABLE = yes
MOUSEKEY_ENABLE = no
```
diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md
index cbc574b6b8..b0239bb802 100644
--- a/docs/feature_swap_hands.md
+++ b/docs/feature_swap_hands.md
@@ -6,7 +6,7 @@ The swap-hands action allows support for one-handed typing without requiring a s
The configuration table is a simple 2-dimensional array to map from column/row to new column/row. Example `hand_swap_config` for Planck:
-```C
+```c
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md
index 8b001e3ce2..8c617fe33a 100644
--- a/docs/feature_userspace.md
+++ b/docs/feature_userspace.md
@@ -240,7 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the `rules.mk` in your userspace folder:
-```make
+```make
ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
OPT_DEFS += -DFLASH_BOOTLOADER
endif
@@ -252,4 +252,4 @@ Also, holding Shift will add the flash target (`:flash`) to the command. Holdin
And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add `FLASH_BOOTLOADER = yes` to the `rules.mk` of that keymap.
-?> This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely. And this doesn't support BootloadHID or mdloader.
+?> This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely.
diff --git a/docs/flashing_bootloadhid.md b/docs/flashing_bootloadhid.md
index 9879ec999e..213c7c1321 100644
--- a/docs/flashing_bootloadhid.md
+++ b/docs/flashing_bootloadhid.md
@@ -44,7 +44,7 @@ For native Windows flashing, the `bootloadHID.exe` can be used outside of the MS
### Linux Manual Installation
1. Install libusb development dependency:
- ```bash
+ ```
# This depends on OS - for Debian the following works
sudo apt-get install libusb-dev
```
diff --git a/docs/fr-fr/cli.md b/docs/fr-fr/cli.md
index bfa060f2ad..917a9315bc 100644
--- a/docs/fr-fr/cli.md
+++ b/docs/fr-fr/cli.md
@@ -48,25 +48,6 @@ Nous recherchons des gens pour créer et maintenir un paquet `qmk` pour plus de
* Installez en utilisant un virtualenv
* Expliquez à l'utilisateur de définir la variable d'environnement `QMK_Home` pour "check out" les sources du firmware à un autre endroit que `~/qmk_firmware`.
-# CLI locale
-
-Si vous ne voulez pas utiliser la CLI globale, il y a une CLI locale empaquetée avec `qmk_firmware`. Vous pouvez le trouver dans `qmk_firmware/bin/qmk`. Vous pouvez lancer la commande `qmk` depuis n'importe quel répertoire et elle fonctionnera toujours sur cette copie de `qmk_firmware`.
-
-**Exemple**:
-
-```
-$ ~/qmk_firmware/bin/qmk hello
-Ψ Hello, World!
-```
-
-## Limitations de la CLI locale
-
-Il y a quelques limitations à la CLI locale comparé à la globale:
-
-* La CLI locale ne supporte pas `qmk setup` ou `qmk clone`
-* La CLI locale n'opère pas sur le même arbre `qmk_firmware`, même si vous avez plusieurs dépôts clonés.
-* La CLI locale ne s'exécute pas dans un virtualenv, donc il y a des risques que des dépendances seront en conflit
-
# Les commandes CLI
## `qmk compile`
diff --git a/docs/fr-fr/getting_started_github.md b/docs/fr-fr/getting_started_github.md
index 0f3982ea29..522b09a03e 100644
--- a/docs/fr-fr/getting_started_github.md
+++ b/docs/fr-fr/getting_started_github.md
@@ -32,7 +32,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
Vous avez maintenant votre fork QMK sur votre machine locale, vous pouvez ajouter votre keymap, la compiler et la flasher sur votre board. Une fois heureux avec vos changements, vous pouvez les ajouter, commit, et pousser vers votre fork comme suit:
diff --git a/docs/getting_started_docker.md b/docs/getting_started_docker.md
index f9c3b366a4..c4da8af968 100644
--- a/docs/getting_started_docker.md
+++ b/docs/getting_started_docker.md
@@ -12,13 +12,13 @@ The main prerequisite is a working `docker` or `podman` install.
Acquire a local copy of the QMK's repository (including submodules):
-```bash
+```
git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
```
Run the following command to build a keymap:
-```bash
+```
util/docker_build.sh <keyboard>:<keymap>
# For example: util/docker_build.sh planck/rev6:default
```
@@ -27,14 +27,14 @@ This will compile the desired keyboard/keymap and leave the resulting `.hex` or
There is also support for building _and_ flashing the keyboard straight from Docker by specifying the `target` as well:
-```bash
+```
util/docker_build.sh keyboard:keymap:target
# For example: util/docker_build.sh planck/rev6:default:flash
```
You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:
-```bash
+```
util/docker_build.sh
# Reads parameters as input (leave blank for all keyboards/keymaps)
```
@@ -42,7 +42,7 @@ util/docker_build.sh
You can manually set which container runtime you want to use by setting the `RUNTIME` environment variable to it's name or path.
By default docker or podman are automatically detected and docker is preferred over podman.
-```bash
+```
RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
```
diff --git a/docs/getting_started_github.md b/docs/getting_started_github.md
index e3720b8869..9232bc6229 100644
--- a/docs/getting_started_github.md
+++ b/docs/getting_started_github.md
@@ -32,7 +32,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
You now have your QMK fork on your local machine, and you can add your keymap, compile it and flash it to your board. Once you're happy with your changes, you can add, commit, and push them to your fork like this:
diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md
index 70390a5105..deef7520e5 100644
--- a/docs/getting_started_make_guide.md
+++ b/docs/getting_started_make_guide.md
@@ -125,10 +125,6 @@ This allows you output audio on the C6 pin (needs abstracting). See the [audio p
Use this to debug changes to variable values, see the [tracing variables](unit_testing.md#tracing-variables) section of the Unit Testing page for more information.
-`API_SYSEX_ENABLE`
-
-This enables using the Quantum SYSEX API to send strings (somewhere?)
-
`KEY_LOCK_ENABLE`
This enables [key lock](feature_key_lock.md).
diff --git a/docs/getting_started_vagrant.md b/docs/getting_started_vagrant.md
index 114f875671..b5b5ce1539 100644
--- a/docs/getting_started_vagrant.md
+++ b/docs/getting_started_vagrant.md
@@ -31,26 +31,26 @@ The development environment is configured to run the QMK Docker image, `qmkfm/qm
### Why am I seeing issues under Virtualbox?
Certain versions of Virtualbox 5 appear to have an incompatibility with the Virtualbox extensions installed in the boxes in this Vagrantfile. If you encounter any issues with the /vagrant mount not succeeding, please upgrade your version of Virtualbox to at least 5.0.12. **Alternately, you can try running the following command:**
-```console
+```
vagrant plugin install vagrant-vbguest
```
### How do I remove an existing environment?
Finished with your environment? From anywhere inside the folder where you checked out this project, Execute:
-```console
+```
vagrant destroy
```
### What if I want to use Docker directly?
Want to benefit from the Vagrant workflow without a virtual machine? The Vagrantfile is configured to bypass running a virtual machine, and run the container directly. Execute the following when bringing up the environment to force the use of Docker:
-```console
+```
vagrant up --provider=docker
```
### How do I access the virtual machine instead of the Docker container?
Execute the following to bypass the `vagrant` user booting directly to the official qmk builder image:
-```console
+```
vagrant ssh -c 'sudo -i'
```
diff --git a/docs/hardware_drivers.md b/docs/hardware_drivers.md
index 7e89c0d2b9..a157501326 100644
--- a/docs/hardware_drivers.md
+++ b/docs/hardware_drivers.md
@@ -18,10 +18,6 @@ Support for addressing pins on the ProMicro by their Arduino name rather than th
Support for SSD1306 based OLED displays. For more information see the [OLED Driver Feature](feature_oled_driver.md) page.
-## uGFX
-
-You can make use of uGFX within QMK to drive character and graphic LCDs, LED arrays, OLED, TFT, and other display technologies. This needs to be better documented, if you are trying to do this and reading the code doesn't help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) and we can help you through the process.
-
## WS2812
Support for WS2811/WS2812{a,b,c} LED's. For more information see the [RGB Light](feature_rgblight.md) page.
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index 7630b44e0c..be55356b17 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -144,10 +144,38 @@ The `rules.mk` file can also be placed in a sub-folder, and its reading order is
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
* `users/a_user_folder/rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/sub_3/post_rules.mk`
+ * `keyboards/top_folder/sub_1/sub_2/post_rules.mk`
+ * `keyboards/top_folder/sub_1/post_rules.mk`
+* `keyboards/top_folder/post_rules.mk`
* `common_features.mk`
Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
+The `post_rules.mk` file can interpret `features` of a keyboard-level before `common_features.mk`. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the `post_rules.mk` makes it easier for the user to configure the `rules.mk`.
+
+* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
+ ```make
+ # Please set the following according to the selection of the hardware implementation option.
+ RGBLED_OPTION_TYPE = backlight ## none, backlight or underglow
+ ```
+* `keyboards/top_folder/post_rules.mk`
+ ```make
+ ifeq ($(filter $(strip $(RGBLED_OPTION_TYPE))x, nonex backlightx underglowx x),)
+ $(error unknown RGBLED_OPTION_TYPE value "$(RGBLED_OPTION_TYPE)")
+ endif
+
+ ifeq ($(strip $(RGBLED_OPTION_TYPE)),backlight)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_NUM=30
+ endif
+ ifeq ($(strip $(RGBLED_OPTION_TYPE)),underglow)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_NUM=6
+ endif
+ ```
+
?> See `build_keyboard.mk` and `common_features.mk` for more details.
### `<keyboard_name.c>`
@@ -227,8 +255,6 @@ The year should be the first year the file is created. If work was done to that
The core of QMK is licensed under the [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html). If you are shipping binaries for AVR processors you may choose either [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or [GPLv3](https://www.gnu.org/licenses/gpl.html). If you are shipping binaries for ARM processors you must choose [GPL Version 3](https://www.gnu.org/licenses/gpl.html) to comply with the [ChibiOS](https://www.chibios.org) GPLv3 license.
-If your keyboard makes use of the [uGFX](https://ugfx.io) features within QMK you must comply with the [uGFX License](https://ugfx.io/license.html), which requires a separate commercial license before selling a device containing uGFX.
-
## Technical Details
If you're looking for more information on making your keyboard work with QMK, [check out the hardware section](hardware.md)!
diff --git a/docs/he-il/getting_started_github.md b/docs/he-il/getting_started_github.md
index 900852effd..ca79e40f9a 100644
--- a/docs/he-il/getting_started_github.md
+++ b/docs/he-il/getting_started_github.md
@@ -35,7 +35,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
</div>
diff --git a/docs/how_keyboards_work.md b/docs/how_keyboards_work.md
index 3dcbc64522..36cbfb4d9a 100644
--- a/docs/how_keyboards_work.md
+++ b/docs/how_keyboards_work.md
@@ -9,7 +9,7 @@ firmware directly.
Whenever you type on 1 particular key, here is the chain of actions taking
place:
-``` text
+```
+------+ +-----+ +----------+ +----------+ +----+
| User |-------->| Key |------>| Firmware |----->| USB wire |---->| OS |
+------+ +-----+ +----------+ +----------+ +----+
diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md
index 3ec34a0f87..95c588af44 100644
--- a/docs/i2c_driver.md
+++ b/docs/i2c_driver.md
@@ -62,16 +62,13 @@ Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, fo
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
-|`config.h` Overrride |Description |Default|
-|------------------------|-------------------------------------------------------------------------------------------|-------|
-|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
-|`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`|
-|`I2C1_SCL_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL |`GPIOB`|
-|`I2C1_SCL` |The pin number for SCL (0-15) |`6` |
-|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
-|`I2C1_SDA_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA |`GPIOB`|
-|`I2C1_SDA` |The pin number for SDA (0-15) |`7` |
-|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
+|`config.h` Overrride |Description |Default|
+|------------------------|--------------------------------------------------------------|-------|
+|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
+|`I2C1_SCL_PIN` |The pin definition for SCL |`B6` |
+|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
+|`I2C1_SDA_PIN` |The pin definition for SDA |`B7` |
+|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
The following configuration values depend on the specific MCU in use.
@@ -190,7 +187,7 @@ Receive multiple bytes from the selected SPI device.
### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
-Writes to a register on the I2C device.
+Writes to a register with an 8-bit address on the I2C device.
#### Arguments
@@ -211,9 +208,32 @@ Writes to a register on the I2C device.
---
+### `i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
+
+Writes to a register with a 16-bit address (big endian) on the I2C device.
+
+#### Arguments
+
+ - `uint8_t devaddr`
+ The 7-bit I2C address of the device.
+ - `uint16_t regaddr`
+ The register address to write to.
+ - `uint8_t *data`
+ A pointer to the data to transmit.
+ - `uint16_t length`
+ The number of bytes to write. Take care not to overrun the length of `data`.
+ - `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`.
+
+---
+
### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
-Reads from a register on the I2C device.
+Reads from a register with an 8-bit address on the I2C device.
#### Arguments
@@ -232,6 +252,27 @@ Reads from a register on the I2C device.
---
+### `i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)`
+
+Reads from a register with a 16-bit address (big endian) on the I2C device.
+
+#### Arguments
+
+ - `uint8_t devaddr`
+ The 7-bit I2C address of the device.
+ - `uint16_t regaddr`
+ The register address to read from.
+ - `uint16_t length`
+ The number of bytes to read. Take care not to overrun the length of `data`.
+ - `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`.
+
+---
+
### `i2c_status_t i2c_stop(void)`
Stop the current I2C transaction.
diff --git a/docs/ja/compatible_microcontrollers.md b/docs/ja/compatible_microcontrollers.md
index 7a3484fa8c..23f32bbb60 100644
--- a/docs/ja/compatible_microcontrollers.md
+++ b/docs/ja/compatible_microcontrollers.md
@@ -32,6 +32,7 @@ QMK ã¯å分ãªå®¹é‡ã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ãƒ¡ãƒ¢ãƒªã‚’å‚™ãˆãŸ USB 対応 AVR ã¾
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
+* [STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
diff --git a/docs/ja/feature_haptic_feedback.md b/docs/ja/feature_haptic_feedback.md
index 1580797253..687788014a 100644
--- a/docs/ja/feature_haptic_feedback.md
+++ b/docs/ja/feature_haptic_feedback.md
@@ -9,9 +9,12 @@
ç¾åœ¨ã®ã¨ã“ã‚ã€`rules.mk` ã§è§¦è¦šãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ç”¨ã«ä»¥ä¸‹ã®ã‚ªãƒ—ションを利用å¯èƒ½ã§ã™:
-`HAPTIC_ENABLE += DRV2605L`
+```
+HAPTIC_ENABLE = yes
-`HAPTIC_ENABLE += SOLENOID`
+HAPTIC_DRIVER += DRV2605L
+HAPTIC_DRIVER += SOLENOID
+```
## サãƒãƒ¼ãƒˆã•ã‚Œã‚‹æ—¢çŸ¥ã®ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢
diff --git a/docs/ja/feature_ps2_mouse.md b/docs/ja/feature_ps2_mouse.md
index 3d69411307..569934c187 100644
--- a/docs/ja/feature_ps2_mouse.md
+++ b/docs/ja/feature_ps2_mouse.md
@@ -43,14 +43,8 @@ PS2_USE_BUSYWAIT = yes
```c
#ifdef PS2_USE_BUSYWAIT
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 1
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+# define PS2_CLOCK_PIN D1
+# define PS2_DATA_PIN D2
#endif
```
@@ -69,14 +63,8 @@ PS2_USE_INT = yes
```c
#ifdef PS2_USE_INT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 2
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 5
+#define PS2_CLOCK_PIN D2
+#define PS2_DATA_PIN D5
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC21) | \
@@ -107,14 +95,9 @@ PS2_USE_USART = yes
```c
#ifdef PS2_USE_USART
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 5
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 2
+#ifdef PS2_USE_USART
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* åŒæœŸã€å¥‡æ•°ãƒ‘リティã€1-bit ストップã€8-bit データã€ç«‹ã¡ä¸‹ãŒã‚Šã‚¨ãƒƒã‚¸ã§ã‚µãƒ³ãƒ—ル */
/* CLOCK ã® DDR を入力ã¨ã—ã¦ã‚¹ãƒ¬ãƒ¼ãƒ–ã«è¨­å®š */
diff --git a/docs/ja/getting_started_github.md b/docs/ja/getting_started_github.md
index 6d9b70c410..6407011488 100644
--- a/docs/ja/getting_started_github.md
+++ b/docs/ja/getting_started_github.md
@@ -37,7 +37,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
ローカルマシン㫠QMK ã®ãƒ•ã‚©ãƒ¼ã‚¯ãŒã§ãã‚‹ã®ã§ã€ã‚­ãƒ¼ãƒžãƒƒãƒ—ã®è¿½åŠ ã€ã‚³ãƒ³ãƒ‘イルã€ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã¸ã®æ›¸ãè¾¼ã¿ãŒã§ãã¾ã™ã€‚変更ã«æº€è¶³ã—ãŸã‚‰ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ãれらをフォークã¸è¿½åŠ ã€ã‚³ãƒŸãƒƒãƒˆãŠã‚ˆã³ãƒ—ッシュã™ã‚‹ã“ã¨ãŒã§ãã¾ã™:
diff --git a/docs/ja/hardware_drivers.md b/docs/ja/hardware_drivers.md
index f77b48ba8e..e0061cb328 100644
--- a/docs/ja/hardware_drivers.md
+++ b/docs/ja/hardware_drivers.md
@@ -24,10 +24,6 @@ ProMicro ã®ãƒ”ンを AVR ã®åå‰ã§ã¯ãªãã€Arduino ã®åå‰ã§æŒ‡å®šã§ã
SSD1306 ベース㮠OLED ディスプレイã®ã‚µãƒãƒ¼ãƒˆã€‚詳ã—ãã¯[OLED ドライãƒ](ja/feature_oled_driver.md)ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„。
-## uGFX
-
-QMK 内㧠uGFX を使用ã—ã¦ã€ã‚­ãƒ£ãƒ©ã‚¯ã‚¿ LCD やグラフィック LCDã€LED アレイã€OLED ディスプレイã€TFT 液晶や他ã®ãƒ‡ã‚£ã‚¹ãƒ—レイを制御ã§ãã¾ã™ã€‚ã“ã®éƒ¨åˆ†ã¯ã‚ˆã‚Šè©³ã—ã文書化ã•ã‚Œã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã‚‚ã—ã“れを使用ã—ãŸã„å ´åˆã«ã‚³ãƒ¼ãƒ‰ã‚’読んã§ã‚‚分ã‹ã‚‰ãªã„å ´åˆã€[issue ã‚’é–‹ã](https://github.com/qmk/qmk_firmware/issues/new)を通ã—ã¦åŠ©ã‘ã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
-
## WS2812
WS2811/WS2812{a,b,c} LED ã®ã‚µãƒãƒ¼ãƒˆã€‚ 詳ã—ã㯠[RGB ライト](ja/feature_rgblight.md)ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„。
diff --git a/docs/ja/hardware_keyboard_guidelines.md b/docs/ja/hardware_keyboard_guidelines.md
index 8a9127abc9..c0e7c18be0 100644
--- a/docs/ja/hardware_keyboard_guidelines.md
+++ b/docs/ja/hardware_keyboard_guidelines.md
@@ -234,8 +234,6 @@ QMK ãŒæä¾›ã™ã‚‹æ©Ÿèƒ½ã®é‡ã‚’考ãˆã‚Œã°ã€æ–°ã—ã„ユーザーãŒæ··ä¹±ã
QMK ã®ã‚³ã‚¢éƒ¨åˆ†ã¯ [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html) ã§ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã•ã‚Œã¾ã™ã€‚AVR マイコン用ã®ãƒã‚¤ãƒŠãƒªã‚’æä¾›ã™ã‚‹å ´åˆã¯ã€[GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) ã‹ã€[GPLv3](https://www.gnu.org/licenses/gpl.html) ã®ã©ã¡ã‚‰ã‹ã‹ã‚‰é¸æŠžå‡ºæ¥ã¾ã™ã€‚ARM マイコン用ã®ãƒã‚¤ãƒŠãƒªã‚’æä¾›ã™ã‚‹å ´åˆã¯ã€ [ChibiOS](https://www.chibios.org) ã® GPLv3 ライセンスã«æº–æ‹ ã™ã‚‹ãŸã‚ã€[GPL Version 3](https://www.gnu.org/licenses/gpl.html) ã‚’é¸æŠžã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。
-[uGFX](https://ugfx.io) を使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€[uGFX License](https://ugfx.io/license.html) ã«æº–æ‹ ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚uGFX を利用ã—ãŸãƒ‡ãƒã‚¤ã‚¹ã‚’販売ã™ã‚‹ã«ã¯å€‹åˆ¥ã«å•†ç”¨ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’å–å¾—ã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。
-
## 技術的ãªè©³ç´°
キーボードを QMK ã§å‹•ä½œã•ã›ã‚‹ãŸã‚ã®è©³ç´°ã¯[ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢](ja/hardware.md)ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„ï¼
diff --git a/docs/ja/i2c_driver.md b/docs/ja/i2c_driver.md
index 9d348d5803..1d8f70e163 100644
--- a/docs/ja/i2c_driver.md
+++ b/docs/ja/i2c_driver.md
@@ -79,13 +79,10 @@ ARM MCU 用ã®è¨­å®šã¯ã—ã°ã—ã°éžå¸¸ã«è¤‡é›‘ã§ã™ã€‚ã“ã‚Œã¯ã€å¤šãã®
STM32 MCU ã§ã¯ã€ä½¿ç”¨ã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ‰ãƒ©ã‚¤ãƒã«ã‚ˆã‚Šã€ã•ã¾ã–ã¾ãªãƒ”ンを I2C ピンã¨ã—ã¦è¨­å®šã§ãã¾ã™ã€‚標準ã§ã¯ `B6`, `B7` ピン㌠I2C 用ã®ãƒ”ンã§ã™ã€‚ I2C 用ã®ãƒ”ンを設定ã™ã‚‹ãŸã‚ã«æ¬¡ã®å®šç¾©ãŒä½¿ãˆã¾ã™ï¼š
-| 変数 | 説明 | 既定値 |
-|-----------------------|--------------------------------------------------------------------------------------------------|---------|
-| `I2C1_SCL_BANK` | SCL ã«ä½¿ã†ãƒ”ンã®ãƒãƒ³ã‚¯ (`GPIOA`, `GPIOB`, `GPIOC`) | `GPIOB` |
-| `I2C1_SDA_BANK` | SDA ã«ä½¿ã†ãƒ”ンã®ãƒãƒ³ã‚¯ (`GPIOA`, `GPIOB`, `GPIOC`) | `GPIOB` |
-| `I2C1_SCL` | SCL ã®ãƒ”ãƒ³ç•ªå· (0-15) | `6` |
-| `I2C1_SDA` | SDA ã®ãƒ”ãƒ³ç•ªå· (0-15) | `7` |
-| `I2C1_BANK`(éžæŽ¨å¥¨ï¼‰ | 使用ã™ã‚‹ãƒ”ンã®ãƒãƒ³ã‚¯ (`GPIOA`, `GPIOB`, `GPIOC`)。後継㯠`I2C1_SCL_BANK`, `I2C1_SDA_BANK` ã§ã™ã€‚ | `GPIOB` |
+| 変数 | 説明 | 既定値 |
+|-----------------------|-------------------------------------------------------------------------------------------|---------|
+| `I2C1_SCL_PIN` | SCL ã®ãƒ”ãƒ³ç•ªå· | `B6` |
+| `I2C1_SDA_PIN` | SDA ã®ãƒ”ãƒ³ç•ªå· | `B7` |
ChibiOS I2C ドライãƒã®è¨­å®šé …目㯠STM32 MCU ã®ç¨®é¡žã«ä¾å­˜ã—ã¾ã™ã€‚
diff --git a/docs/ja/understanding_qmk.md b/docs/ja/understanding_qmk.md
index 109876961b..1654f8e002 100644
--- a/docs/ja/understanding_qmk.md
+++ b/docs/ja/understanding_qmk.md
@@ -184,10 +184,6 @@ FIXME: This needs to be written
FIXME: This needs to be written
-#### Visualizer
-
-FIXME: This needs to be written
-
#### Keyboard state LEDs (Caps Lock, Num Lock, Scroll Lock)
FIXME: This needs to be written
diff --git a/docs/keycodes.md b/docs/keycodes.md
index a134c5a1b2..770a4525a5 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -677,6 +677,46 @@ See also: [One Shot Keys](one_shot_keys.md)
|`OS_OFF` |Turns One Shot keys off |
|`OS_TOGG` |Toggles One Shot keys status |
+## Programmable Button Support :id=programmable-button
+
+See also: [Programmable Button](feature_programmable_button.md)
+
+|Key |Description |
+|------------------------|----------------------|
+|`PROGRAMMABLE_BUTTON_1` |Programmable button 1 |
+|`PROGRAMMABLE_BUTTON_2` |Programmable button 2 |
+|`PROGRAMMABLE_BUTTON_3` |Programmable button 3 |
+|`PROGRAMMABLE_BUTTON_4` |Programmable button 4 |
+|`PROGRAMMABLE_BUTTON_5` |Programmable button 5 |
+|`PROGRAMMABLE_BUTTON_6` |Programmable button 6 |
+|`PROGRAMMABLE_BUTTON_7` |Programmable button 7 |
+|`PROGRAMMABLE_BUTTON_8` |Programmable button 8 |
+|`PROGRAMMABLE_BUTTON_9` |Programmable button 9 |
+|`PROGRAMMABLE_BUTTON_10`|Programmable button 10|
+|`PROGRAMMABLE_BUTTON_11`|Programmable button 11|
+|`PROGRAMMABLE_BUTTON_12`|Programmable button 12|
+|`PROGRAMMABLE_BUTTON_13`|Programmable button 13|
+|`PROGRAMMABLE_BUTTON_14`|Programmable button 14|
+|`PROGRAMMABLE_BUTTON_15`|Programmable button 15|
+|`PROGRAMMABLE_BUTTON_16`|Programmable button 16|
+|`PROGRAMMABLE_BUTTON_17`|Programmable button 17|
+|`PROGRAMMABLE_BUTTON_18`|Programmable button 18|
+|`PROGRAMMABLE_BUTTON_19`|Programmable button 19|
+|`PROGRAMMABLE_BUTTON_20`|Programmable button 20|
+|`PROGRAMMABLE_BUTTON_21`|Programmable button 21|
+|`PROGRAMMABLE_BUTTON_22`|Programmable button 22|
+|`PROGRAMMABLE_BUTTON_23`|Programmable button 23|
+|`PROGRAMMABLE_BUTTON_24`|Programmable button 24|
+|`PROGRAMMABLE_BUTTON_25`|Programmable button 25|
+|`PROGRAMMABLE_BUTTON_26`|Programmable button 26|
+|`PROGRAMMABLE_BUTTON_27`|Programmable button 27|
+|`PROGRAMMABLE_BUTTON_28`|Programmable button 28|
+|`PROGRAMMABLE_BUTTON_29`|Programmable button 29|
+|`PROGRAMMABLE_BUTTON_30`|Programmable button 30|
+|`PROGRAMMABLE_BUTTON_31`|Programmable button 31|
+|`PROGRAMMABLE_BUTTON_32`|Programmable button 32|
+|`PB_1` to `PB_32` |Aliases for keymaps |
+
## Space Cadet :id=space-cadet
See also: [Space Cadet](feature_space_cadet.md)
diff --git a/docs/newbs_git_resynchronize_a_branch.md b/docs/newbs_git_resynchronize_a_branch.md
index 3e7acdba7a..1d0e4dda16 100644
--- a/docs/newbs_git_resynchronize_a_branch.md
+++ b/docs/newbs_git_resynchronize_a_branch.md
@@ -8,7 +8,7 @@ Suppose you have committed to your `master` branch, and now need to update your
No one wants to lose work if it can be helped. If you want to save the changes you've already made to your `master` branch, the simplest way to do so is to simply create a duplicate of your "dirty" `master` branch:
-```sh
+```
git branch old_master master
```
@@ -18,7 +18,7 @@ Now you have a branch named `old_master` that is a duplicate of your `master` br
Now it's time to resynchronize your `master` branch. For this step, you'll want to have QMK's repository configured as a remote in Git. To check your configured remotes, run `git remote -v`, which should return something similar to:
-```sh
+```
QMKuser ~/qmk_firmware (master)
$ git remote -v
origin https://github.com/<your_username>/qmk_firmware.git (fetch)
@@ -29,7 +29,7 @@ upstream https://github.com/qmk/qmk_firmware.git (push)
If you only see one fork referenced:
-```sh
+```
QMKuser ~/qmk_firmware (master)
$ git remote -v
origin https://github.com/qmk/qmk_firmware.git (fetch)
@@ -38,31 +38,31 @@ origin https://github.com/qmk/qmk_firmware.git (push)
add a new remote with:
-```sh
+```
git remote add upstream https://github.com/qmk/qmk_firmware.git
```
Then, redirect the `origin` remote to your own fork with:
-```sh
+```
git remote set-url origin https://github.com/<your_username>/qmk_firmware.git
```
Now that you have both remotes configured, you need to update the references for the upstream repository, which is QMK's, by running:
-```sh
+```
git fetch upstream
```
At this point, resynchronize your branch to QMK's by running:
-```sh
+```
git reset --hard upstream/master
```
These steps will update the repository on your computer, but your GitHub fork will still be out of sync. To resynchronize your fork on GitHub, you need to push to your fork, instructing Git to override any remote changes that are not reflected in your local repository. To do this, run:
-```sh
+```
git push --force-with-lease
```
diff --git a/docs/ru-ru/getting_started_github.md b/docs/ru-ru/getting_started_github.md
index 120f3c24ec..7a70926f50 100644
--- a/docs/ru-ru/getting_started_github.md
+++ b/docs/ru-ru/getting_started_github.md
@@ -31,7 +31,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
Теперь у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ форк QMK на вашем локальном компьютере, и вы можете добавить Ñвою раÑкладку, Ñкомпилировать ее и прошить ей Ñвою клавиатуру. Как только вы будете довольны Ñвоими изменениÑми, еÑÑ‚ÑŒ возможноÑÑ‚ÑŒ добавить, зафикÑировать их и Ñделать коммит в Ñвой форк Ñледующим образом:
diff --git a/docs/understanding_qmk.md b/docs/understanding_qmk.md
index da622044c3..42a41fbe2a 100644
--- a/docs/understanding_qmk.md
+++ b/docs/understanding_qmk.md
@@ -29,7 +29,6 @@ Within `keyboard_task()` you'll find code to handle:
* [Matrix Scanning](#matrix-scanning)
* Mouse Handling
* Serial Link(s)
-* Visualizer
* Keyboard status LEDs (Caps Lock, Num Lock, Scroll Lock)
#### Matrix Scanning
@@ -180,10 +179,6 @@ FIXME: This needs to be written
FIXME: This needs to be written
-#### Visualizer
-
-FIXME: This needs to be written
-
#### Keyboard state LEDs (Caps Lock, Num Lock, Scroll Lock)
FIXME: This needs to be written
diff --git a/docs/unit_testing.md b/docs/unit_testing.md
index a0eef51cb6..47a1055796 100644
--- a/docs/unit_testing.md
+++ b/docs/unit_testing.md
@@ -20,12 +20,12 @@ One thing to remember, is that you have to append `extern "C"` around all of you
## Adding Tests for New or Existing Features
-If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure.
+If you want to unit test a feature, take a look at some of the existing tests, for example those in the `quantum/sequencer/tests` folder. Then follow the steps below to create a similar structure.
1. If it doesn't already exist, add a test subfolder to the folder containing the feature.
2. Create a `testlist.mk` and a `rules.mk` file in that folder.
3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively.
-4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
+4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the existing tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
5. Define the source files and required options in the `rules.mk` file.
* `_SRC` for source files
* `_DEFS` for additional defines
@@ -44,7 +44,7 @@ If there are problems with the tests, you can find the executable in the `./buil
To forward any [debug messages](unit_testing.md#debug-api) to `stderr`, the tests can run with `DEBUG=1`. For example
-```console
+```
make test:all DEBUG=1
```
diff --git a/docs/zh-cn/getting_started_github.md b/docs/zh-cn/getting_started_github.md
index 65994754b9..b4e8e9fa5d 100644
--- a/docs/zh-cn/getting_started_github.md
+++ b/docs/zh-cn/getting_started_github.md
@@ -32,7 +32,6 @@ Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca
Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-Submodule path 'lib/ugfx': checked out '3e97b74e03c93631cdd3ddb2ce43b963fdce19b2'
```
现在你本地计算机有QMK的分å‰äº†,ä½ å¯ä»¥æ·»åŠ ä½ çš„布局了, 为你的键盘编译并刷新固件å§ã€‚如果你觉得你的修改很ä¸é”™, ä½ å¯ä»¥æ·»åŠ ,æ交,然åŽæƒ³ä½ çš„分å‰æŽ¨å‡ºï¼ˆpull)你的改å˜ï¼Œåƒè¿™æ ·:
diff --git a/doxygen-todo b/doxygen-todo
index 643a0df1da..4151627e4a 100644
--- a/doxygen-todo
+++ b/doxygen-todo
@@ -6,22 +6,8 @@ tmk_core/protocol/midi/bytequeue
tmk_core/protocol/midi/Config
tmk_core/protocol/usb_hid
tmk_core/protocol/vusb
-tmk_core/tool
-tmk_core/tool/chibios
quantum
-quantum/api
quantum/audio
quantum/keymap_extras
quantum/process_keycode
-quantum/serial_link
-quantum/serial_link/protocol
-quantum/serial_link/system
-quantum/serial_link/tests
-quantum/tools
-quantum/visualizer
-quantum/visualizer/resources
drivers
-drivers/ugfx
-drivers/ugfx/gdisp
-drivers/ugfx/gdisp/is31fl3731c
-drivers/ugfx/gdisp/st7565
diff --git a/tmk_core/protocol/lufa/adafruit_ble.cpp b/drivers/bluetooth/adafruit_ble.cpp
index 3f2cc35734..34a780e9a5 100644
--- a/tmk_core/protocol/lufa/adafruit_ble.cpp
+++ b/drivers/bluetooth/adafruit_ble.cpp
@@ -16,24 +16,22 @@
// These are the pin assignments for the 32u4 boards.
// You may define them to something else in your config.h
// if yours is wired up differently.
-#ifndef AdafruitBleResetPin
-# define AdafruitBleResetPin D4
+#ifndef ADAFRUIT_BLE_RST_PIN
+# define ADAFRUIT_BLE_RST_PIN D4
#endif
-#ifndef AdafruitBleCSPin
-# define AdafruitBleCSPin B4
+#ifndef ADAFRUIT_BLE_CS_PIN
+# define ADAFRUIT_BLE_CS_PIN B4
#endif
-#ifndef AdafruitBleIRQPin
-# define AdafruitBleIRQPin E6
+#ifndef ADAFRUIT_BLE_IRQ_PIN
+# define ADAFRUIT_BLE_IRQ_PIN E6
#endif
-#ifndef AdafruitBleSpiClockSpeed
-# define AdafruitBleSpiClockSpeed 4000000UL // SCK frequency
+#ifndef ADAFRUIT_BLE_SCK_DIVISOR
+# define ADAFRUIT_BLE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
#endif
-#define SCK_DIVISOR (F_CPU / AdafruitBleSpiClockSpeed)
-
#define SAMPLE_BATTERY
#define ConnectionUpdateInterval 1000 /* milliseconds */
@@ -145,7 +143,7 @@ static bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool ver
// Send a single SDEP packet
static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
- spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
uint16_t timerStart = timer_read();
bool success = false;
bool ready = false;
@@ -159,7 +157,7 @@ static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
// Release it and let it initialize
spi_stop();
wait_us(SdepBackOff);
- spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
} while (timer_elapsed(timerStart) < timeout);
if (ready) {
@@ -192,7 +190,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
bool ready = false;
do {
- ready = readPin(AdafruitBleIRQPin);
+ ready = readPin(ADAFRUIT_BLE_IRQ_PIN);
if (ready) {
break;
}
@@ -200,7 +198,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
} while (timer_elapsed(timerStart) < timeout);
if (ready) {
- spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
do {
// Read the command type, waiting for the data to be ready
@@ -209,7 +207,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
// Release it and let it initialize
spi_stop();
wait_us(SdepBackOff);
- spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
+ spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
continue;
}
@@ -235,7 +233,7 @@ static void resp_buf_read_one(bool greedy) {
return;
}
- if (readPin(AdafruitBleIRQPin)) {
+ if (readPin(ADAFRUIT_BLE_IRQ_PIN)) {
struct sdep_msg msg;
again:
@@ -246,7 +244,7 @@ static void resp_buf_read_one(bool greedy) {
dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send));
}
- if (greedy && resp_buf.peek(last_send) && readPin(AdafruitBleIRQPin)) {
+ if (greedy && resp_buf.peek(last_send) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
goto again;
}
}
@@ -297,16 +295,16 @@ static bool ble_init(void) {
state.configured = false;
state.is_connected = false;
- setPinInput(AdafruitBleIRQPin);
+ setPinInput(ADAFRUIT_BLE_IRQ_PIN);
spi_init();
// Perform a hardware reset
- setPinOutput(AdafruitBleResetPin);
- writePinHigh(AdafruitBleResetPin);
- writePinLow(AdafruitBleResetPin);
+ setPinOutput(ADAFRUIT_BLE_RST_PIN);
+ writePinHigh(ADAFRUIT_BLE_RST_PIN);
+ writePinLow(ADAFRUIT_BLE_RST_PIN);
wait_ms(10);
- writePinHigh(AdafruitBleResetPin);
+ writePinHigh(ADAFRUIT_BLE_RST_PIN);
wait_ms(1000); // Give it a second to initialize
@@ -509,7 +507,7 @@ void adafruit_ble_task(void) {
resp_buf_read_one(true);
send_buf_send_one(SdepShortTimeout);
- if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(AdafruitBleIRQPin)) {
+ if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
// Must be an event update
if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) {
uint32_t mask = strtoul(resbuf, NULL, 16);
diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/drivers/bluetooth/adafruit_ble.h
index b43e0771d9..b43e0771d9 100644
--- a/tmk_core/protocol/lufa/adafruit_ble.h
+++ b/drivers/bluetooth/adafruit_ble.h
diff --git a/tmk_core/protocol/lufa/outputselect.c b/drivers/bluetooth/outputselect.c
index f758c65280..f758c65280 100644
--- a/tmk_core/protocol/lufa/outputselect.c
+++ b/drivers/bluetooth/outputselect.c
diff --git a/tmk_core/protocol/lufa/outputselect.h b/drivers/bluetooth/outputselect.h
index c4548e1122..c4548e1122 100644
--- a/tmk_core/protocol/lufa/outputselect.h
+++ b/drivers/bluetooth/outputselect.h
diff --git a/tmk_core/protocol/lufa/ringbuffer.hpp b/drivers/bluetooth/ringbuffer.hpp
index 70a3c4881d..70a3c4881d 100644
--- a/tmk_core/protocol/lufa/ringbuffer.hpp
+++ b/drivers/bluetooth/ringbuffer.hpp
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c
index 7396dc3c55..00e7eb4505 100644
--- a/drivers/led/apa102.c
+++ b/drivers/led/apa102.c
@@ -24,8 +24,8 @@
# elif defined(PROTOCOL_CHIBIOS)
# include "hal.h"
-# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
-# define APA102_NOPS (100 / (1000000000L / (STM32_SYSCLK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
+# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103)
+# define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
# else
# error("APA102_NOPS configuration required")
# define APA102_NOPS 0 // this just pleases the compile so the above error is easier to spot
diff --git a/tmk_core/protocol/ps2.h b/drivers/ps2/ps2.h
index f123192852..f123192852 100644
--- a/tmk_core/protocol/ps2.h
+++ b/drivers/ps2/ps2.h
diff --git a/tmk_core/protocol/ps2_busywait.c b/drivers/ps2/ps2_busywait.c
index 983194eea8..983194eea8 100644
--- a/tmk_core/protocol/ps2_busywait.c
+++ b/drivers/ps2/ps2_busywait.c
diff --git a/tmk_core/protocol/ps2_interrupt.c b/drivers/ps2/ps2_interrupt.c
index 780040d152..70debd02f7 100644
--- a/tmk_core/protocol/ps2_interrupt.c
+++ b/drivers/ps2/ps2_interrupt.c
@@ -73,17 +73,17 @@ static inline void pbuf_clear(void);
void ps2_interrupt_service_routine(void);
void palCallback(void *arg) { ps2_interrupt_service_routine(); }
-# define PS2_INT_INIT() \
- { palSetLineMode(PS2_CLOCK, PAL_MODE_INPUT); } \
+# define PS2_INT_INIT() \
+ { palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); } \
while (0)
-# define PS2_INT_ON() \
- { \
- palEnableLineEvent(PS2_CLOCK, PAL_EVENT_MODE_FALLING_EDGE); \
- palSetLineCallback(PS2_CLOCK, palCallback, NULL); \
- } \
+# define PS2_INT_ON() \
+ { \
+ palEnableLineEvent(PS2_CLOCK_PIN, PAL_EVENT_MODE_FALLING_EDGE); \
+ palSetLineCallback(PS2_CLOCK_PIN, palCallback, NULL); \
+ } \
while (0)
-# define PS2_INT_OFF() \
- { palDisableLineEvent(PS2_CLOCK); } \
+# define PS2_INT_OFF() \
+ { palDisableLineEvent(PS2_CLOCK_PIN); } \
while (0)
#endif // PROTOCOL_CHIBIOS
diff --git a/tmk_core/protocol/ps2_io.h b/drivers/ps2/ps2_io.h
index de93cb7a39..de93cb7a39 100644
--- a/tmk_core/protocol/ps2_io.h
+++ b/drivers/ps2/ps2_io.h
diff --git a/tmk_core/protocol/ps2_mouse.c b/drivers/ps2/ps2_mouse.c
index 39251a6434..8a6668b410 100644
--- a/tmk_core/protocol/ps2_mouse.c
+++ b/drivers/ps2/ps2_mouse.c
@@ -16,13 +16,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdbool.h>
-
-#if defined(__AVR__)
-# include <avr/io.h>
-#endif
-
#include "ps2_mouse.h"
#include "wait.h"
+#include "gpio.h"
#include "host.h"
#include "timer.h"
#include "print.h"
@@ -158,8 +154,8 @@ static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report)
#ifdef PS2_MOUSE_INVERT_BUTTONS
// swap left & right buttons
- uint8_t needs_left = mouse_report->buttons & PS2_MOUSE_BTN_RIGHT;
- uint8_t needs_right = mouse_report->buttons & PS2_MOUSE_BTN_LEFT;
+ uint8_t needs_left = mouse_report->buttons & PS2_MOUSE_BTN_RIGHT;
+ uint8_t needs_right = mouse_report->buttons & PS2_MOUSE_BTN_LEFT;
mouse_report->buttons = (mouse_report->buttons & ~(PS2_MOUSE_BTN_MASK)) | (needs_left ? PS2_MOUSE_BTN_LEFT : 0) | (needs_right ? PS2_MOUSE_BTN_RIGHT : 0);
#else
// remove sign and overflow flags
diff --git a/tmk_core/protocol/ps2_mouse.h b/drivers/ps2/ps2_mouse.h
index c97c6c893a..c97c6c893a 100644
--- a/tmk_core/protocol/ps2_mouse.h
+++ b/drivers/ps2/ps2_mouse.h
diff --git a/drivers/qwiic/micro_oled.c b/drivers/qwiic/micro_oled.c
deleted file mode 100644
index 8dfff6968f..0000000000
--- a/drivers/qwiic/micro_oled.c
+++ /dev/null
@@ -1,482 +0,0 @@
-/* Jim Lindblom @ SparkFun Electronics
- * October 26, 2014
- * https://github.com/sparkfun/Micro_OLED_Breakout/tree/master/Firmware/Arduino/libraries/SFE_MicroOLED
- *
- * Modified by:
- * Emil Varughese @ Edwin Robotics Pvt. Ltd.
- * July 27, 2015
- * https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
- *
- * This code was heavily based around the MicroView library, written by GeekAmmo
- * (https://github.com/geekammo/MicroView-Arduino-Library).
- *
- * Adapted for QMK by:
- * Jack Humbert <jack.humb@gmail.com>
- * October 11, 2018
- *
- * This program is free software: you can 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 "micro_oled.h"
-#include "print.h"
-#include <stdlib.h>
-#include "util/font5x7.h"
-#include "util/font8x16.h"
-#include <string.h>
-
-#define TOTALFONTS 2
-const unsigned char* fonts_pointer[] = {font5x7, font8x16};
-
-uint8_t foreColor, drawMode, fontWidth, fontHeight, fontType, fontStartChar, fontTotalChar, cursorX, cursorY;
-uint16_t fontMapWidth;
-
-#ifndef _BV
-# define _BV(x) (1 << (x))
-#endif
-
-#define swap(a, b) \
- { \
- uint8_t t = a; \
- a = b; \
- b = t; \
- }
-
-uint8_t micro_oled_transfer_buffer[20];
-static uint8_t micro_oled_screen_current[LCDWIDTH * LCDHEIGHT / 8] = {0};
-
-/* LCD Memory organised in 64 horizontal pixel and 6 rows of byte
- B B .............B -----
- y y .............y \
- t t .............t \
- e e .............e \
- 0 1 .............63 \
- \
- D0 D0.............D0 \
- D1 D1.............D1 / ROW 0
- D2 D2.............D2 /
- D3 D3.............D3 /
- D4 D4.............D4 /
- D5 D5.............D5 /
- D6 D6.............D6 /
- D7 D7.............D7 ----
- */
-#ifdef NO_LCD_SPLASH
-// do not initialize with a splash screen
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0};
-#else
-# if LCDWIDTH == 64
-# if LCDHEIGHT == 48
-static uint8_t micro_oled_screen_buffer[] = {
- // QMK Logo - generated at http://www.majer.ch/lcd/adf_bitmap.php
- // 64x48 image
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0xF8, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xF8, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, 0x8C, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x8C, 0x8C, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x31, 0x31, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF1, 0xE3, 0xE7, 0xCF, 0xCF, 0xCF, 0xCF, 0x00, 0x00, 0xCF, 0xCF, 0xCF, 0xC7, 0xE7, 0xE3, 0xF1, 0xF8, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x31, 0x31, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x1F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x1F, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-# endif
-# elif LCDWIDTH == 128
-# if LCDHEIGHT == 32
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {
- // 128x32 qmk image
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xFC, 0xFC, 0xE0, 0xFC, 0xFC, 0xE0, 0xF0, 0xFC, 0xE0, 0xE0, 0xFC, 0xE0, 0xE0, 0xFC, 0xFC, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, 0x30, 0xE0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xB2, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xB2, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x02, 0x02, 0x03, 0x01, 0x00, 0x06, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x06, 0x00, 0x03, 0x1E, 0x18, 0x0F, 0x01, 0x0F, 0x18, 0x1E, 0x01, 0x00, 0x0F, 0x1F, 0x12, 0x02, 0x12, 0x13, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x12, 0x02, 0x12, 0x13, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x4D, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF9, 0xF3, 0xF3, 0xC0, 0x80, 0xF3, 0xF3, 0xF3, 0xF9, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x4D, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0xC0, 0x00, 0x70, 0xC0, 0x00, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x1C, 0xF0, 0x00, 0x00, 0xFC, 0x0C, 0x38, 0xE0, 0x00, 0x00, 0xC0, 0x38, 0x0C, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0x60, 0x90, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x3F, 0x3F, 0x07, 0x3F, 0x3F, 0x07, 0x0F, 0x3F, 0x07, 0x07, 0x3F, 0x07, 0x07, 0x3F, 0x3F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x04, 0x04, 0x07, 0x01, 0x00, 0x00, 0x13, 0x1E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x07, 0x0D, 0x08, 0x00, 0x07, 0x00, 0x00, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x07, 0x00, 0x01, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-# elif LCDHEIGHT == 64
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xC0, 0xC0, 0xC0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0x7F, 0x7E, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x7F, 0x7F, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0x7E, 0x7F, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF3, 0xF3, 0xE7, 0xE7, 0x00, 0x00, 0xE7, 0xE7, 0xF3, 0xF3, 0xF0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x70, 0x88, 0x04, 0x04, 0x04, 0xF8, 0x00, 0x00, 0x3C, 0xE0, 0xC0, 0x38, 0x1C, 0xE0, 0x80, 0x70, 0x0C, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x3C, 0x30, 0x00, 0x00, 0xFC, 0x0C, 0x04, 0x00, 0xF8, 0xAC, 0x24, 0x24, 0x2C, 0x30, 0x00, 0x70, 0xDC, 0x04, 0x04, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x8C, 0x04, 0x04, 0xF8, 0x00, 0x04, 0x3C, 0xE0, 0x80, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x01, 0x01, 0x01, 0x81, 0xFE, 0x3C, 0x00, 0x00, 0xFF, 0x03, 0x0E, 0x70, 0xC0, 0xE0, 0x38, 0x06, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x18, 0x38, 0x66, 0xC3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-// TODO: generate bitmap of QMK logo here
-# endif
-# else
-// catchall for custom screen sizes
-static uint8_t micro_oled_screen_buffer[LCDWIDTH * LCDHEIGHT / 8] = {0};
-# endif
-#endif
-
-void micro_oled_init(void) {
- i2c_init();
-
-#ifdef __AVR__
- i2c_start(I2C_ADDRESS_SA0_1, 100);
-#else
- i2c_start(I2C_ADDRESS_SA0_1);
-#endif
-
- // Display Init sequence for 64x48 OLED module
- send_command(DISPLAYOFF); // 0xAE
-
- send_command(SETDISPLAYCLOCKDIV); // 0xD5
- send_command(0x80); // the suggested ratio 0x80
-
- send_command(SETMULTIPLEX); // 0xA8
- send_command(LCDHEIGHT - 1);
-
- send_command(SETDISPLAYOFFSET); // 0xD3
- send_command(0x00); // no offset
-
- send_command(SETSTARTLINE | 0x00); // line #0
-
- send_command(CHARGEPUMP); // enable charge pump
- send_command(0x14);
-
- send_command(NORMALDISPLAY); // 0xA6
- send_command(DISPLAYALLONRESUME); // 0xA4
-
- // display at regular orientation
- send_command(SEGREMAP | 0x1);
- send_command(COMSCANDEC);
-
-// rotate display 180
-#ifdef micro_oled_rotate_180
- send_command(SEGREMAP);
- send_command(COMSCANINC);
-#endif
-
- send_command(MEMORYMODE);
- send_command(0x02); // 0x02 = 10b, Page addressing mode
-
- send_command(SETCOMPINS); // 0xDA
- if (LCDHEIGHT > 32) {
- send_command(0x12);
- } else {
- send_command(0x02);
- }
- send_command(SETCONTRAST); // 0x81
- send_command(0x8F);
-
- send_command(SETPRECHARGE); // 0xd9
- send_command(0xF1);
-
- send_command(SETVCOMDESELECT); // 0xDB
- send_command(0x40);
-
- send_command(DISPLAYON); //--turn on oled panel
- clear_screen(); // Erase hardware memory inside the OLED controller to avoid random data in memory.
- send_buffer();
-}
-
-void send_command(uint8_t command) {
- micro_oled_transfer_buffer[0] = I2C_COMMAND;
- micro_oled_transfer_buffer[1] = command;
- i2c_transmit(I2C_ADDRESS_SA0_1 << 1, micro_oled_transfer_buffer, 2, 100);
-}
-
-void send_data(uint8_t data) {
- micro_oled_transfer_buffer[0] = I2C_DATA;
- micro_oled_transfer_buffer[1] = data;
- i2c_transmit(I2C_ADDRESS_SA0_1 << 1, micro_oled_transfer_buffer, 2, 100);
-}
-
-/** \brief Set SSD1306 page address.
- Send page address command and address to the SSD1306 OLED controller.
-*/
-void set_page_address(uint8_t address) {
- address = (0xB0 | address);
- send_command(address);
-}
-
-/** \brief Set SSD1306 column address.
- Send column address command and address to the SSD1306 OLED controller.
-*/
-void set_column_address(uint8_t address) {
- send_command((0x10 | (address >> 4)) + ((128 - LCDWIDTH) >> 8));
- send_command(0x0F & address);
-}
-
-/** \brief Clear SSD1306's memory.
- To clear GDRAM inside the LCD controller.
-*/
-void clear_screen(void) {
- for (int i = 0; i < 8; i++) {
- set_page_address(i);
- set_column_address(0);
- for (int j = 0; j < 0x80; j++) {
- send_data(0);
- }
- }
-
- memset(micro_oled_screen_current, 0, LCDWIDTH * LCDHEIGHT / 8);
-}
-
-/** \brief Clear SSD1306's memory.
- To clear GDRAM inside the LCD controller.
-*/
-void clear_buffer(void) {
- // 384
- memset(micro_oled_screen_buffer, 0, LCDWIDTH * LCDHEIGHT / 8);
-}
-
-/** \brief Invert display.
- The PIXEL_ON color of the display will turn to PIXEL_OFF and the PIXEL_OFF will turn to PIXEL_ON.
-*/
-void invert_screen(bool invert) {
- if (invert) {
- send_command(INVERTDISPLAY);
- } else {
- send_command(NORMALDISPLAY);
- }
-}
-
-/** \brief Set contrast.
- OLED contract value from 0 to 255. Note: Contrast level is not very obvious.
-*/
-void set_contrast(uint8_t contrast) {
- send_command(SETCONTRAST); // 0x81
- send_command(contrast);
-}
-
-/** \brief Transfer display buffer.
- Sends the updated buffer to the controller - the current status is checked before to save i2c exectution time
-*/
-void send_buffer(void) {
- uint8_t i, j;
-
- uint8_t page_addr = 0xFF;
- for (i = 0; i < LCDHEIGHT / 8; i++) {
- uint8_t col_addr = 0xFF;
- for (j = 0; j < LCDWIDTH; j++) {
- if (micro_oled_screen_buffer[i * LCDWIDTH + j] != micro_oled_screen_current[i * LCDWIDTH + j]) {
- if (page_addr != i) {
- set_page_address(i);
- page_addr = i;
- }
- if (col_addr != j) {
- set_column_address(j);
- col_addr = j + 1;
- }
- send_data(micro_oled_screen_buffer[i * LCDWIDTH + j]);
- micro_oled_screen_current[i * LCDWIDTH + j] = micro_oled_screen_buffer[i * LCDWIDTH + j];
- }
- }
- }
-}
-
-/** \brief Draw pixel with color and mode.
- Draw color pixel in the screen buffer's x,y position with NORM or XOR draw mode.
-*/
-void draw_pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode) {
- if ((x < 0) || (x >= LCDWIDTH) || (y < 0) || (y >= LCDHEIGHT)) return;
-
- if (mode == XOR) {
- if (color == PIXEL_ON) micro_oled_screen_buffer[x + (y / 8) * LCDWIDTH] ^= _BV((y % 8));
- } else {
- if (color == PIXEL_ON)
- micro_oled_screen_buffer[x + (y / 8) * LCDWIDTH] |= _BV((y % 8));
- else
- micro_oled_screen_buffer[x + (y / 8) * LCDWIDTH] &= ~_BV((y % 8));
- }
-}
-
-/** \brief Draw line with color and mode.
-Draw line using color and mode from x0,y0 to x1,y1 of the screen buffer.
-*/
-void draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode) {
- uint8_t steep = abs(y1 - y0) > abs(x1 - x0);
- if (steep) {
- swap(x0, y0);
- swap(x1, y1);
- }
-
- if (x0 > x1) {
- swap(x0, x1);
- swap(y0, y1);
- }
-
- uint8_t dx, dy;
- dx = x1 - x0;
- dy = abs(y1 - y0);
-
- int8_t err = dx / 2;
- int8_t ystep;
-
- if (y0 < y1) {
- ystep = 1;
- } else {
- ystep = -1;
- }
-
- for (; x0 < x1; x0++) {
- if (steep) {
- draw_pixel(y0, x0, color, mode);
- } else {
- draw_pixel(x0, y0, color, mode);
- }
- err -= dy;
- if (err < 0) {
- y0 += ystep;
- err += dx;
- }
- }
-}
-
-/** \brief Draw horizontal line with color and mode.
-Draw horizontal line using color and mode from x,y to x+width,y of the screen buffer.
-*/
-void draw_line_hori(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode) { draw_line(x, y, x + width, y, color, mode); }
-
-/** \brief Draw vertical line.
-Draw vertical line using current fore color and current draw mode from x,y to x,y+height of the screen buffer.
-*/
-void draw_line_vert(uint8_t x, uint8_t y, uint8_t height, bool color, uint8_t mode) { draw_line(x, y, x, y + height, color, mode); }
-
-/** \brief Draw rectangle with color and mode.
-Draw rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- uint8_t tempHeight;
-
- draw_line_hori(x, y, width, color, mode);
- draw_line_hori(x, y + height - 1, width, color, mode);
-
- tempHeight = height - 2;
-
- // skip drawing vertical lines to avoid overlapping of pixel that will
- // affect XOR plot if no pixel in between horizontal lines
- if (tempHeight < 1) return;
-
- draw_line_vert(x, y + 1, tempHeight, color, mode);
- draw_line_vert(x + width - 1, y + 1, tempHeight, color, mode);
-}
-
-/** \brief Draw rectangle with color and mode.
-Draw rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- uint8_t tempHeight;
-
- draw_line_hori(x + 1, y, width - 2, color, mode);
- draw_line_hori(x + 1, y + height - 1, width - 2, color, mode);
-
- tempHeight = height - 2;
-
- // skip drawing vertical lines to avoid overlapping of pixel that will
- // affect XOR plot if no pixel in between horizontal lines
- if (tempHeight < 1) return;
-
- draw_line_vert(x, y + 1, tempHeight, color, mode);
- draw_line_vert(x + width - 1, y + 1, tempHeight, color, mode);
-}
-
-/** \brief Draw filled rectangle with color and mode.
-Draw filled rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect_filled(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- // TODO - need to optimise the memory map draw so that this function will not call pixel one by one
- for (int i = x; i < x + width; i++) {
- draw_line_vert(i, y, height, color, mode);
- }
-}
-
-/** \brief Draw filled rectangle with color and mode.
-Draw filled rectangle using color and mode from x,y to x+width,y+height of the screen buffer.
-*/
-void draw_rect_filled_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode) {
- // TODO - need to optimise the memory map draw so that this function will not call pixel one by one
- for (int i = x; i < x + width; i++) {
- if (i == x || i == (x + width - 1))
- draw_line_vert(i, y + 1, height - 2, color, mode);
- else
- draw_line_vert(i, y, height, color, mode);
- }
-}
-
-/** \brief Draw character with color and mode.
- Draw character c using color and draw mode at x,y.
-*/
-void draw_char(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode, uint8_t font) {
- // TODO - New routine to take font of any height, at the moment limited to font height in multiple of 8 pixels
-
- uint8_t rowsToDraw, row, tempC;
- uint8_t i, j, temp;
- uint16_t charPerBitmapRow, charColPositionOnBitmap, charRowPositionOnBitmap, charBitmapStartPosition;
-
- if ((font >= TOTALFONTS) || (font < 0)) return;
-
- uint8_t fontType = font;
- uint8_t fontWidth = pgm_read_byte(fonts_pointer[fontType] + 0);
- uint8_t fontHeight = pgm_read_byte(fonts_pointer[fontType] + 1);
- uint8_t fontStartChar = pgm_read_byte(fonts_pointer[fontType] + 2);
- uint8_t fontTotalChar = pgm_read_byte(fonts_pointer[fontType] + 3);
- uint16_t fontMapWidth = (pgm_read_byte(fonts_pointer[fontType] + 4) * 100) + pgm_read_byte(fonts_pointer[fontType] + 5); // two bytes values into integer 16
-
- if ((c < fontStartChar) || (c > (fontStartChar + fontTotalChar - 1))) // no bitmap for the required c
- return;
-
- tempC = c - fontStartChar;
-
- // each row (in datasheet is call page) is 8 bits high, 16 bit high character will have 2 rows to be drawn
- rowsToDraw = fontHeight / 8; // 8 is LCD's page size, see SSD1306 datasheet
- if (rowsToDraw <= 1) rowsToDraw = 1;
-
- // the following draw function can draw anywhere on the screen, but SLOW pixel by pixel draw
- if (rowsToDraw == 1) {
- for (i = 0; i < fontWidth + 1; i++) {
- if (i == fontWidth) // this is done in a weird way because for 5x7 font, there is no margin, this code add a margin after col 5
- temp = 0;
- else
- temp = pgm_read_byte(fonts_pointer[fontType] + FONTHEADERSIZE + (tempC * fontWidth) + i);
-
- for (j = 0; j < 8; j++) { // 8 is the LCD's page height (see datasheet for explanation)
- if (temp & 0x1) {
- draw_pixel(x + i, y + j, color, mode);
- } else {
- draw_pixel(x + i, y + j, !color, mode);
- }
-
- temp >>= 1;
- }
- }
- return;
- }
-
- // font height over 8 bit
- // take character "0" ASCII 48 as example
- charPerBitmapRow = fontMapWidth / fontWidth; // 256/8 =32 char per row
- charColPositionOnBitmap = tempC % charPerBitmapRow; // =16
- charRowPositionOnBitmap = (int)(tempC / charPerBitmapRow); // =1
- charBitmapStartPosition = (charRowPositionOnBitmap * fontMapWidth * (fontHeight / 8)) + (charColPositionOnBitmap * fontWidth);
-
- // each row on LCD is 8 bit height (see datasheet for explanation)
- for (row = 0; row < rowsToDraw; row++) {
- for (i = 0; i < fontWidth; i++) {
- temp = pgm_read_byte(fonts_pointer[fontType] + FONTHEADERSIZE + (charBitmapStartPosition + i + (row * fontMapWidth)));
- for (j = 0; j < 8; j++) { // 8 is the LCD's page height (see datasheet for explanation)
- if (temp & 0x1) {
- draw_pixel(x + i, y + j + (row * 8), color, mode);
- } else {
- draw_pixel(x + i, y + j + (row * 8), !color, mode);
- }
- temp >>= 1;
- }
- }
- }
-}
-
-void draw_string(uint8_t x, uint8_t y, char* string, uint8_t color, uint8_t mode, uint8_t font) {
- if ((font >= TOTALFONTS) || (font < 0)) return;
-
- uint8_t fontType = font;
- uint8_t fontWidth = pgm_read_byte(fonts_pointer[fontType] + 0);
-
- uint8_t cur_x = x;
- for (int i = 0; i < strlen(string); i++) {
- draw_char(cur_x, y, string[i], color, mode, font);
- cur_x += fontWidth + 1;
- }
-}
diff --git a/drivers/qwiic/micro_oled.h b/drivers/qwiic/micro_oled.h
deleted file mode 100644
index 6f9106f581..0000000000
--- a/drivers/qwiic/micro_oled.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Jim Lindblom @ SparkFun Electronics
- * October 26, 2014
- * https://github.com/sparkfun/Micro_OLED_Breakout/tree/master/Firmware/Arduino/libraries/SFE_MicroOLED
- *
- * Modified by:
- * Emil Varughese @ Edwin Robotics Pvt. Ltd.
- * July 27, 2015
- * https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
- *
- * This code was heavily based around the MicroView library, written by GeekAmmo
- * (https://github.com/geekammo/MicroView-Arduino-Library).
- *
- * Adapted for QMK by:
- * Jack Humbert <jack.humb@gmail.com>
- * October 11, 2018
- *
- * This program is free software: you can 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
-
-#include "qwiic.h"
-
-void micro_oled_init(void);
-
-void send_command(uint8_t command);
-void send_data(uint8_t data);
-void set_page_address(uint8_t address);
-void set_column_address(uint8_t address);
-void clear_screen(void);
-void clear_buffer(void);
-void send_buffer(void);
-void draw_pixel(uint8_t x, uint8_t y, uint8_t color, uint8_t mode);
-void draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color, uint8_t mode);
-void draw_line_hori(uint8_t x, uint8_t y, uint8_t width, uint8_t color, uint8_t mode);
-void draw_line_vert(uint8_t x, uint8_t y, uint8_t height, bool color, uint8_t mode);
-void draw_rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_rect_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_rect_filled(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_rect_filled_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color, uint8_t mode);
-void draw_char(uint8_t x, uint8_t y, uint8_t c, uint8_t color, uint8_t mode, uint8_t font);
-void draw_string(uint8_t x, uint8_t y, char* string, uint8_t color, uint8_t mode, uint8_t font);
-
-#define I2C_ADDRESS_SA0_0 0b0111100
-#ifndef I2C_ADDRESS_SA0_1
-# define I2C_ADDRESS_SA0_1 0b0111101
-#endif
-#define I2C_COMMAND 0x00
-#define I2C_DATA 0x40
-#define PIXEL_OFF 0
-#define PIXEL_ON 1
-
-#ifndef LCDWIDTH
-# define LCDWIDTH 64
-#endif
-#ifndef LCDHEIGHT
-# define LCDHEIGHT 48
-#endif
-#define FONTHEADERSIZE 6
-
-#define NORM 0
-#define XOR 1
-
-#define PAGE 0
-#define ALL 1
-
-#define WIDGETSTYLE0 0
-#define WIDGETSTYLE1 1
-#define WIDGETSTYLE2 2
-
-#define SETCONTRAST 0x81
-#define DISPLAYALLONRESUME 0xA4
-#define DISPLAYALLON 0xA5
-#define NORMALDISPLAY 0xA6
-#define INVERTDISPLAY 0xA7
-#define DISPLAYOFF 0xAE
-#define DISPLAYON 0xAF
-#define SETDISPLAYOFFSET 0xD3
-#define SETCOMPINS 0xDA
-#define SETVCOMDESELECT 0xDB
-#define SETDISPLAYCLOCKDIV 0xD5
-#define SETPRECHARGE 0xD9
-#define SETMULTIPLEX 0xA8
-#define SETLOWCOLUMN 0x00
-#define SETHIGHCOLUMN 0x10
-#define SETSTARTLINE 0x40
-#define MEMORYMODE 0x20
-#define COMSCANINC 0xC0
-#define COMSCANDEC 0xC8
-#define SEGREMAP 0xA0
-#define CHARGEPUMP 0x8D
-#define EXTERNALVCC 0x01
-#define SWITCHCAPVCC 0x02
-
-// Scroll
-#define ACTIVATESCROLL 0x2F
-#define DEACTIVATESCROLL 0x2E
-#define SETVERTICALSCROLLAREA 0xA3
-#define RIGHTHORIZONTALSCROLL 0x26
-#define LEFT_HORIZONTALSCROLL 0x27
-#define VERTICALRIGHTHORIZONTALSCROLL 0x29
-#define VERTICALLEFTHORIZONTALSCROLL 0x2A
-
-typedef enum CMD {
- CMD_CLEAR, // 0
- CMD_INVERT, // 1
- CMD_CONTRAST, // 2
- CMD_DISPLAY, // 3
- CMD_SETCURSOR, // 4
- CMD_PIXEL, // 5
- CMD_LINE, // 6
- CMD_LINEH, // 7
- CMD_LINEV, // 8
- CMD_RECT, // 9
- CMD_RECTFILL, // 10
- CMD_CIRCLE, // 11
- CMD_CIRCLEFILL, // 12
- CMD_DRAWCHAR, // 13
- CMD_DRAWBITMAP, // 14
- CMD_GETLCDWIDTH, // 15
- CMD_GETLCDHEIGHT, // 16
- CMD_SETCOLOR, // 17
- CMD_SETDRAWMODE // 18
-} commCommand_t;
diff --git a/drivers/qwiic/qwiic.c b/drivers/qwiic/qwiic.c
deleted file mode 100644
index 316d6539cb..0000000000
--- a/drivers/qwiic/qwiic.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2018 Jack Humbert <jack.humb@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 "qwiic.h"
-
-void qwiic_init(void) {
-#ifdef QWIIC_JOYSTIIC_ENABLE
- joystiic_init();
-#endif
-#ifdef QWIIC_MICRO_OLED_ENABLE
- micro_oled_init();
-#endif
-}
-
-void qwiic_task(void) {
-#ifdef QWIIC_JOYSTIIC_ENABLE
- joystiic_task();
-#endif
-}
diff --git a/drivers/qwiic/qwiic.mk b/drivers/qwiic/qwiic.mk
deleted file mode 100644
index 164bd72108..0000000000
--- a/drivers/qwiic/qwiic.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-ifeq ($(strip $(QWIIC_ENABLE)),yes)
- COMMON_VPATH += $(DRIVER_PATH)/qwiic
- OPT_DEFS += -DQWIIC_ENABLE
- SRC += qwiic.c
- QUANTUM_LIB_SRC += i2c_master.c
-
-ifneq ($(filter JOYSTIIC, $(QWIIC_DRIVERS)),)
- OPT_DEFS += -DQWIIC_JOYSTIIC_ENABLE
- SRC += joystiic.c
-endif
-
-ifneq ($(filter MICRO_OLED, $(QWIIC_DRIVERS)),)
- OPT_DEFS += -DQWIIC_MICRO_OLED_ENABLE
- SRC += micro_oled.c
-endif
-
-endif
diff --git a/drivers/qwiic/util/font5x7.h b/drivers/qwiic/util/font5x7.h
deleted file mode 100644
index a641945aae..0000000000
--- a/drivers/qwiic/util/font5x7.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
-font5x7.h
-Definition for small font
-
-This file was imported from the MicroView library, written by GeekAmmo
-(https://github.com/geekammo/MicroView-Arduino-Library), and released 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/>.
-
-Modified by:
-Emil Varughese @ Edwin Robotics Pvt. Ltd.
-July 27, 2015
-https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
-
-******************************************************************************/
-#pragma once
-
-#include "progmem.h"
-
-// Standard ASCII 5x7 font
-static const unsigned char font5x7[] PROGMEM = {
- // first row defines - FONTWIDTH, FONTHEIGHT, ASCII START CHAR, TOTAL CHARACTERS, FONT MAP WIDTH HIGH, FONT MAP WIDTH LOW (2,56 meaning 256)
- 5, 8, 0, 255, 12, 75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x18, 0x3C, 0x18, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x18, 0x24, 0x18, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x26, 0x29, 0x79, 0x29, 0x26, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x60, 0x60, 0x60, 0x60, 0x60, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x30, 0x38, 0x3E, 0x38, 0x30,
- 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x80, 0x70, 0x30, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x41, 0x21, 0x11, 0x09, 0x07, 0x36, 0x49, 0x49, 0x49, 0x36, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02,
- 0x01, 0x59, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x26, 0x49, 0x49, 0x49, 0x32, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x03, 0x04, 0x78, 0x04, 0x03, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40,
- 0x40, 0x40, 0x40, 0x00, 0x03, 0x07, 0x08, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x38, 0x44, 0x44, 0x44, 0x28, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 0x54, 0x54, 0x54, 0x24, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x44, 0x28, 0x10, 0x28, 0x44, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x3C, 0x26, 0x23,
- 0x26, 0x3C, 0x1E, 0xA1, 0xA1, 0x61, 0x12, 0x3A, 0x40, 0x40, 0x20, 0x7A, 0x38, 0x54, 0x54, 0x55, 0x59, 0x21, 0x55, 0x55, 0x79, 0x41, 0x21, 0x54, 0x54, 0x78, 0x41, 0x21, 0x55, 0x54, 0x78, 0x40, 0x20, 0x54, 0x55, 0x79, 0x40, 0x0C, 0x1E, 0x52, 0x72, 0x12, 0x39, 0x55, 0x55, 0x55, 0x59, 0x39, 0x54, 0x54, 0x54, 0x59, 0x39, 0x55, 0x54, 0x54, 0x58, 0x00, 0x00, 0x45, 0x7C, 0x41, 0x00, 0x02, 0x45, 0x7D, 0x42, 0x00, 0x01, 0x45, 0x7C, 0x40, 0xF0, 0x29, 0x24, 0x29, 0xF0, 0xF0, 0x28, 0x25, 0x28, 0xF0, 0x7C, 0x54, 0x55, 0x45, 0x00, 0x20, 0x54, 0x54, 0x7C, 0x54, 0x7C, 0x0A, 0x09, 0x7F, 0x49, 0x32, 0x49, 0x49, 0x49, 0x32, 0x32, 0x48, 0x48, 0x48, 0x32, 0x32, 0x4A, 0x48, 0x48, 0x30, 0x3A, 0x41, 0x41, 0x21, 0x7A, 0x3A, 0x42, 0x40, 0x20, 0x78, 0x00, 0x9D, 0xA0, 0xA0, 0x7D, 0x39, 0x44, 0x44, 0x44, 0x39, 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x3C, 0x24, 0xFF, 0x24, 0x24, 0x48, 0x7E, 0x49, 0x43, 0x66, 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 0xFF, 0x09, 0x29, 0xF6, 0x20, 0xC0, 0x88, 0x7E, 0x09,
- 0x03, 0x20, 0x54, 0x54, 0x79, 0x41, 0x00, 0x00, 0x44, 0x7D, 0x41, 0x30, 0x48, 0x48, 0x4A, 0x32, 0x38, 0x40, 0x40, 0x22, 0x7A, 0x00, 0x7A, 0x0A, 0x0A, 0x72, 0x7D, 0x0D, 0x19, 0x31, 0x7D, 0x26, 0x29, 0x29, 0x2F, 0x28, 0x26, 0x29, 0x29, 0x29, 0x26, 0x30, 0x48, 0x4D, 0x40, 0x20, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 0x2F, 0x10, 0x28, 0x34, 0xFA, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 0x14, 0x08, 0xAA, 0x00, 0x55, 0x00, 0xAA, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x14, 0x14, 0x14, 0xFF, 0x00, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x14, 0x14, 0x14, 0xFC, 0x00, 0x14, 0x14, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x14, 0x14, 0xF4, 0x04, 0xFC, 0x14, 0x14, 0x17, 0x10, 0x1F, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0x1F, 0x00, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10,
- 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x14, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0x10, 0x17, 0x00, 0x00, 0xFC, 0x04, 0xF4, 0x14, 0x14, 0x17, 0x10, 0x17, 0x14, 0x14, 0xF4, 0x04, 0xF4, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xF7, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x17, 0x14, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0xF4, 0x14, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x00, 0xFC, 0x14, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x14, 0x14, 0x14, 0xFF, 0x14, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x38, 0x44, 0x44, 0x38, 0x44, 0x7C,
- 0x2A, 0x2A, 0x3E, 0x14, 0x7E, 0x02, 0x02, 0x06, 0x06, 0x02, 0x7E, 0x02, 0x7E, 0x02, 0x63, 0x55, 0x49, 0x41, 0x63, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x40, 0x7E, 0x20, 0x1E, 0x20, 0x06, 0x02, 0x7E, 0x02, 0x02, 0x99, 0xA5, 0xE7, 0xA5, 0x99, 0x1C, 0x2A, 0x49, 0x2A, 0x1C, 0x4C, 0x72, 0x01, 0x72, 0x4C, 0x30, 0x4A, 0x4D, 0x4D, 0x30, 0x30, 0x48, 0x78, 0x48, 0x30, 0xBC, 0x62, 0x5A, 0x46, 0x3D, 0x3E, 0x49, 0x49, 0x49, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x7E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x44, 0x44, 0x5F, 0x44, 0x44, 0x40, 0x51, 0x4A, 0x44, 0x40, 0x40, 0x44, 0x4A, 0x51, 0x40, 0x00, 0x00, 0xFF, 0x01, 0x03, 0xE0, 0x80, 0xFF, 0x00, 0x00, 0x08, 0x08, 0x6B, 0x6B, 0x08, 0x36, 0x12, 0x36, 0x24, 0x36, 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x30, 0x40, 0xFF, 0x01, 0x01, 0x00, 0x1F, 0x01, 0x01, 0x1E, 0x00, 0x19, 0x1D, 0x17, 0x12, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/drivers/qwiic/util/font8x16.h b/drivers/qwiic/util/font8x16.h
deleted file mode 100644
index 4d3c237866..0000000000
--- a/drivers/qwiic/util/font8x16.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/******************************************************************************
-font8x16.h
-Definition for medium font
-
-This file was imported from the MicroView library, written by GeekAmmo
-(https://github.com/geekammo/MicroView-Arduino-Library), and released 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/>.
-
-Modified by:
-Emil Varughese @ Edwin Robotics Pvt. Ltd.
-July 27, 2015
-https://github.com/emil01/SparkFun_Micro_OLED_Arduino_Library/
-******************************************************************************/
-#pragma once
-
-#include "progmem.h"
-
-static const unsigned char font8x16[] PROGMEM = {
- // first row defines - FONTWIDTH, FONTHEIGHT, ASCII START CHAR, TOTAL CHARACTERS, FONT MAP WIDTH HIGH, FONT MAP WIDTH LOW (2,56 meaning 256)
- 8, 16, 32, 96, 2, 56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xBE, 0x90, 0xD0, 0xBE, 0x90, 0x00, 0x00, 0x1C, 0x62, 0xFF, 0xC2, 0x80, 0x00, 0x00, 0x0C, 0x12, 0x92, 0x4C, 0xB0, 0x88, 0x06, 0x00, 0x80, 0x7C, 0x62, 0xB2, 0x1C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x24, 0x18, 0x7E, 0x18, 0x24, 0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0xF8, 0x04, 0xC2, 0x32, 0x0C, 0xF8, 0x00, 0x00, 0x00, 0x04, 0x04, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, 0x42, 0x22,
- 0x1C, 0x00, 0x00, 0x00, 0x02, 0x22, 0x22, 0x22, 0xDC, 0x00, 0x00, 0xC0, 0xA0, 0x98, 0x84, 0xFE, 0x80, 0x80, 0x00, 0x00, 0x1E, 0x12, 0x12, 0x22, 0xC2, 0x00, 0x00, 0xF8, 0x44, 0x22, 0x22, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x02, 0x02, 0xC2, 0x32, 0x0A, 0x06, 0x00, 0x00, 0x8C, 0x52, 0x22, 0x52, 0x8C, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x26, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x02, 0x82, 0x42, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0F, 0x04, 0x03, 0x00, 0x00, 0x04, 0x02, 0x01, 0x03, 0x04, 0x04, 0x03, 0x00,
- 0x03, 0x04, 0x04, 0x04, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10, 0x10, 0x08, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x04, 0x04,
- 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x04, 0x72, 0x8A, 0xFA, 0x84, 0x78, 0x00, 0x00, 0xC0, 0x38, 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0xFE, 0x22, 0x22, 0x22, 0xDC, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x00, 0x00, 0xFE, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0xFE, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x22, 0xE2, 0x00, 0x00, 0xFE, 0x20, 0x20, 0x20, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0x00, 0x00, 0xFE, 0x40, 0xB0, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xFE, 0x0C, 0x70, 0x80, 0x70, 0x0C, 0xFE, 0x00, 0xFE, 0x0C, 0x30, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x00, 0xFE, 0x42, 0x42, 0x42, 0x22, 0x1C, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x04, 0xF8, 0x00, 0x00, 0x00, 0xFE, 0x42, 0x42, 0xA2, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x42, 0x42, 0x80, 0x00, 0x00, 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x06, 0x38, 0xC0, 0x00, 0xC0, 0x38, 0x06, 0x00, 0x3E, 0xC0, 0xF0, 0x0E, 0xF0, 0xC0, 0x3E, 0x00, 0x00, 0x06, 0x98, 0x60, 0x98, 0x06, 0x00, 0x00, 0x00, 0x06, 0x18, 0xE0, 0x18, 0x06, 0x00, 0x00, 0x02, 0x02, 0xC2, 0x32, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x06, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x40, 0x30, 0x0C, 0x0C, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x02, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x04, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0C, 0x12, 0x11, 0x10, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04,
- 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xFE, 0x00, 0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0xE0, 0x00, 0x00, 0x00, 0x20, 0xFC, 0x22, 0x22, 0x22, 0x02,
- 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x10, 0x10, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x10, 0xF0, 0x20, 0x10, 0xF0, 0x00, 0x00, 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x10, 0x10, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x10, 0x10, 0x70, 0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x20, 0x00, 0x00, 0x00, 0x20, 0x20, 0xFC, 0x20, 0x20, 0x20, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x80, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xC0, 0x30, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x30, 0xC0, 0xC0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x80, 0x70, 0x00, 0x00, 0x00, 0x10,
- 0x10, 0x90, 0x50, 0x30, 0x00, 0x00, 0x00, 0x80, 0x80, 0x7E, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x7E, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x24, 0x24, 0x22, 0x1F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00,
- 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x3F, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x3F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x00, 0x00, 0x03, 0x04, 0x04, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x03, 0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x00, 0x01, 0x06, 0x01, 0x00, 0x00, 0x06, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x20, 0x20, 0x31, 0x0E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h b/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
deleted file mode 100644
index 0755ddf6c4..0000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@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/>.
-*/
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-static const I2CConfig i2ccfg = {
- 400000 // clock speed (Hz); 400kHz max for IS31
-};
-
-static const uint8_t led_mask[] = {
- 0xFF, 0x00, /* C1-1 -> C1-16 */
- 0xFF, 0x00, /* C2-1 -> C2-16 */
- 0xFF, 0x00, /* C3-1 -> C3-16 */
- 0xFF, 0x00, /* C4-1 -> C4-16 */
- 0x3F, 0x00, /* C5-1 -> C5-16 */
- 0x00, 0x00, /* C6-1 -> C6-16 */
- 0x00, 0x00, /* C7-1 -> C7-16 */
- 0x00, 0x00, /* C8-1 -> C8-16 */
- 0x00, 0x00, /* C9-1 -> C9-16 */
-};
-
-// The address of the LED
-#define LA(c, r) (c + r * 16)
-// Need to be an address that is not mapped, but inside the range of the controller matrix
-#define NA LA(8, 8)
-
-// The numbers in the comments are the led numbers DXX on the PCB
-// The mapping is taken from the schematic of left hand side
-static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
- // 45 44 43 42 41 40 39
- {LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
- // 52 51 50 49 48 47 46
- {LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2)},
- // 58 57 56 55 54 53 N/A
- {LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA},
- // 67 66 65 64 63 62 61
- {LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2)},
- // 76 75 74 73 72 60 59
- {LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0)},
- // N/A N/A N/A N/A N/A N/A 68
- {NA, NA, NA, NA, NA, NA, LA(5, 4)},
- // N/A N/A N/A N/A 71 70 69
- {NA, NA, NA, NA, LA(6, 2), LA(6, 1), LA(6, 0)},
-};
-
-#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
-#define IS31_TIMEOUT 5000
-
-static GFXINLINE void init_board(GDisplay* g) {
- (void)g;
- /* I2C pins */
- palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
- palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
- palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
- palClearPad(GPIOB, 16);
- /* start I2C */
- i2cStart(&I2CD1, &i2ccfg);
- // try high drive (from kiibohd)
- I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
- // try glitch fixing (from kiibohd)
- I2CD1.i2c->FLT = 4;
-}
-
-static GFXINLINE void post_init_board(GDisplay* g) { (void)g; }
-
-static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
- (void)g;
- return led_mask;
-}
-
-static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y) {
- (void)g;
- return led_mapping[y][x];
-}
-
-static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
- (void)g;
- if (!shutdown) {
- palSetPad(GPIOB, 16);
- } else {
- palClearPad(GPIOB, 16);
- }
-}
-
-static GFXINLINE void write_data(GDisplay* g, uint8_t* data, uint16_t length) {
- (void)g;
- i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, US2ST(IS31_TIMEOUT));
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/drivers/ugfx/gdisp/is31fl3731c/driver.mk b/drivers/ugfx/gdisp/is31fl3731c/driver.mk
deleted file mode 100644
index a53131bf33..0000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/driver.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-GFXINC += drivers/ugfx/gdisp/is31fl3731c
-GFXSRC += drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
-GDISP_DRIVER_LIST += GDISPVMT_IS31FL3731C_QMK
diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c b/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
deleted file mode 100644
index 7188244022..0000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@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 "gfx.h"
-
-#if GFX_USE_GDISP
-
-# define GDISP_DRIVER_VMT GDISPVMT_IS31FL3731C_QMK
-# define GDISP_SCREEN_HEIGHT LED_HEIGHT
-# define GDISP_SCREEN_WIDTH LED_WIDTH
-
-# include "gdisp_lld_config.h"
-# include "src/gdisp/gdisp_driver.h"
-
-# include "board_is31fl3731c.h"
-
-// Can't include led_tables from here
-extern const uint8_t CIE1931_CURVE[];
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-# ifndef GDISP_INITIAL_CONTRAST
-# define GDISP_INITIAL_CONTRAST 0
-# endif
-# ifndef GDISP_INITIAL_BACKLIGHT
-# define GDISP_INITIAL_BACKLIGHT 0
-# endif
-
-# define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER << 0)
-
-# define IS31_ADDR_DEFAULT 0x74
-
-# define IS31_REG_CONFIG 0x00
-// bits in reg
-# define IS31_REG_CONFIG_PICTUREMODE 0x00
-# define IS31_REG_CONFIG_AUTOPLAYMODE 0x08
-# define IS31_REG_CONFIG_AUDIOPLAYMODE 0x18
-// D2:D0 bits are starting frame for autoplay mode
-
-# define IS31_REG_PICTDISP 0x01 // D2:D0 frame select for picture mode
-
-# define IS31_REG_AUTOPLAYCTRL1 0x02
-// D6:D4 number of loops (000=infty)
-// D2:D0 number of frames to be used
-
-# define IS31_REG_AUTOPLAYCTRL2 0x03 // D5:D0 delay time (*11ms)
-
-# define IS31_REG_DISPLAYOPT 0x05
-# define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
-# define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8
-// D2:D0 bits blink period time (*0.27s)
-
-# define IS31_REG_AUDIOSYNC 0x06
-# define IS31_REG_AUDIOSYNC_ENABLE 0x1
-
-# define IS31_REG_FRAMESTATE 0x07
-
-# define IS31_REG_BREATHCTRL1 0x08
-// D6:D4 fade out time (26ms*2^i)
-// D2:D0 fade in time (26ms*2^i)
-
-# define IS31_REG_BREATHCTRL2 0x09
-# define IS31_REG_BREATHCTRL2_ENABLE 0x10
-// D2:D0 extinguish time (3.5ms*2^i)
-
-# define IS31_REG_SHUTDOWN 0x0A
-# define IS31_REG_SHUTDOWN_OFF 0x0
-# define IS31_REG_SHUTDOWN_ON 0x1
-
-# define IS31_REG_AGCCTRL 0x0B
-# define IS31_REG_ADCRATE 0x0C
-
-# define IS31_COMMANDREGISTER 0xFD
-# define IS31_FUNCTIONREG 0x0B // helpfully called 'page nine'
-# define IS31_FUNCTIONREG_SIZE 0xD
-
-# define IS31_FRAME_SIZE 0xB4
-
-# define IS31_PWM_REG 0x24
-# define IS31_PWM_SIZE 0x90
-
-# define IS31_LED_MASK_SIZE 0x12
-
-# define IS31
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-typedef struct {
- uint8_t write_buffer_offset;
- uint8_t write_buffer[IS31_FRAME_SIZE];
- uint8_t frame_buffer[GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH];
- uint8_t page;
-} __attribute__((__packed__)) PrivData;
-
-// Some common routines and macros
-# define PRIV(g) ((PrivData *)g->priv)
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-static GFXINLINE void write_page(GDisplay *g, uint8_t page) {
- uint8_t tx[2] __attribute__((aligned(2)));
- tx[0] = IS31_COMMANDREGISTER;
- tx[1] = page;
- write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_register(GDisplay *g, uint8_t page, uint8_t reg, uint8_t data) {
- uint8_t tx[2] __attribute__((aligned(2)));
- tx[0] = reg;
- tx[1] = data;
- write_page(g, page);
- write_data(g, tx, 2);
-}
-
-static GFXINLINE void write_ram(GDisplay *g, uint8_t page, uint16_t offset, uint16_t length) {
- PRIV(g)->write_buffer_offset = offset;
- write_page(g, page);
- write_data(g, (uint8_t *)PRIV(g), length + 1);
-}
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
- // The private area is the display surface.
- g->priv = gfxAlloc(sizeof(PrivData));
- __builtin_memset(PRIV(g), 0, sizeof(PrivData));
- PRIV(g)->page = 0;
-
- // Initialise the board interface
- init_board(g);
- gfxSleepMilliseconds(10);
-
- // zero function page, all registers (assuming full_page is all zeroes)
- write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
- set_hardware_shutdown(g, false);
- gfxSleepMilliseconds(10);
- // software shutdown
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- gfxSleepMilliseconds(10);
- // zero function page, all registers
- write_ram(g, IS31_FUNCTIONREG, 0, IS31_FUNCTIONREG_SIZE);
- gfxSleepMilliseconds(10);
-
- // zero all LED registers on all 8 pages, and enable the mask
- __builtin_memcpy(PRIV(g)->write_buffer, get_led_mask(g), IS31_LED_MASK_SIZE);
- for (uint8_t i = 0; i < 8; i++) {
- write_ram(g, i, 0, IS31_FRAME_SIZE);
- gfxSleepMilliseconds(1);
- }
-
- // software shutdown disable (i.e. turn stuff on)
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- gfxSleepMilliseconds(10);
-
- // Finish Init
- post_init_board(g);
-
- /* Initialise the GDISP structure */
- g->g.Width = GDISP_SCREEN_WIDTH;
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Orientation = GDISP_ROTATE_0;
- g->g.Powermode = powerOff;
- g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
- g->g.Contrast = GDISP_INITIAL_CONTRAST;
- return TRUE;
-}
-
-# if GDISP_HARDWARE_FLUSH
-LLDSPEC void gdisp_lld_flush(GDisplay *g) {
- // Don't flush if we don't need it.
- if (!(g->flags & GDISP_FLG_NEEDFLUSH)) return;
-
- PRIV(g)->page++;
- PRIV(g)->page %= 2;
- // TODO: some smarter algorithm for this
- // We should run only one physical page at a time
- // This way we don't need to send so much data, and
- // we could use slightly less memory
- uint8_t *src = PRIV(g)->frame_buffer;
- for (int y = 0; y < GDISP_SCREEN_HEIGHT; y++) {
- for (int x = 0; x < GDISP_SCREEN_WIDTH; x++) {
- uint8_t val = (uint16_t)*src * g->g.Backlight / 100;
- PRIV(g)->write_buffer[get_led_address(g, x, y)] = CIE1931_CURVE[val];
- ++src;
- }
- }
- write_ram(g, PRIV(g)->page, IS31_PWM_REG, IS31_PWM_SIZE);
- gfxSleepMilliseconds(1);
- write_register(g, IS31_FUNCTIONREG, IS31_REG_PICTDISP, PRIV(g)->page);
-
- g->flags &= ~GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_DRAWPIXEL
-LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = g->p.y;
- break;
- }
- PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x] = gdispColor2Native(g->p.color);
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_PIXELREAD
-LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = g->p.y;
- break;
- }
- return gdispNative2Color(PRIV(g)->frame_buffer[y * GDISP_SCREEN_WIDTH + x]);
-}
-# endif
-
-# if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-LLDSPEC void gdisp_lld_control(GDisplay *g) {
- switch (g->p.x) {
- case GDISP_CONTROL_POWER:
- if (g->g.Powermode == (powermode_t)g->p.ptr) return;
- switch ((powermode_t)g->p.ptr) {
- case powerOff:
- case powerSleep:
- case powerDeepSleep:
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_OFF);
- break;
- case powerOn:
- write_register(g, IS31_FUNCTIONREG, IS31_REG_SHUTDOWN, IS31_REG_SHUTDOWN_ON);
- break;
- default:
- return;
- }
- g->g.Powermode = (powermode_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_ORIENTATION:
- if (g->g.Orientation == (orientation_t)g->p.ptr) return;
- switch ((orientation_t)g->p.ptr) {
- /* Rotation is handled by the drawing routines */
- case GDISP_ROTATE_0:
- case GDISP_ROTATE_180:
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Width = GDISP_SCREEN_WIDTH;
- break;
- case GDISP_ROTATE_90:
- case GDISP_ROTATE_270:
- g->g.Height = GDISP_SCREEN_WIDTH;
- g->g.Width = GDISP_SCREEN_HEIGHT;
- break;
- default:
- return;
- }
- g->g.Orientation = (orientation_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_BACKLIGHT:
- if (g->g.Backlight == (unsigned)g->p.ptr) return;
- unsigned val = (unsigned)g->p.ptr;
- g->g.Backlight = val > 100 ? 100 : val;
- g->flags |= GDISP_FLG_NEEDFLUSH;
- return;
- }
-}
-# endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h b/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
deleted file mode 100644
index 403c6b0409..0000000000
--- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@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/>.
-*/
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support. */
-/*===========================================================================*/
-
-# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
-# define GDISP_HARDWARE_DRAWPIXEL GFXON
-# define GDISP_HARDWARE_PIXELREAD GFXON
-# define GDISP_HARDWARE_CONTROL GFXON
-
-# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_GRAY256
-
-#endif /* GFX_USE_GDISP */
-
-#endif /* _GDISP_LLD_CONFIG_H */
diff --git a/drivers/ugfx/gdisp/st7565/board_st7565_template.h b/drivers/ugfx/gdisp/st7565/board_st7565_template.h
deleted file mode 100644
index 875ed9e65c..0000000000
--- a/drivers/ugfx/gdisp/st7565/board_st7565_template.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-#include "quantum.h"
-
-#define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-#define ST7565_COM_SCAN ST7565_COM_SCAN_DEC
-#define ST7565_PAGE_ORDER 0, 1, 2, 3
-/*
- * Custom page order for several LCD boards, e.g. HEM12864-99
- * #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3
- */
-
-#define ST7565_A0_PIN C7
-#define ST7565_RST_PIN C8
-#define ST7565_MOSI_PIN C6
-#define ST7565_SCLK_PIN C5
-#define ST7565_SS_PIN C4
-
-// DSPI Clock and Transfer Attributes
-// Frame Size: 8 bits
-// MSB First
-// CLK Low by default
-static const SPIConfig spi1config = {
- // Operation complete callback or @p NULL.
- .end_cb = NULL,
- // The chip select line port - when not using pcs.
- .ssport = PAL_PORT(ST7565_SS_PIN),
- // brief The chip select line pad number - when not using pcs.
- .sspad = PAL_PAD(ST7565_SS_PIN),
- // SPI initialization data.
- .tar0 = SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
- | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
- | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
- | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
- | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
- | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
-};
-
-static GFXINLINE void acquire_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to acquire
- // spiAcquireBus(&SPID1);
- spiSelect(&SPID1);
-}
-
-static GFXINLINE void release_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to release
- // spiReleaseBus(&SPID1);
- spiUnselect(&SPID1);
-}
-
-static GFXINLINE void init_board(GDisplay *g) {
- (void)g;
- setPinOutput(ST7565_A0_PIN);
- writePinHigh(ST7565_A0_PIN);
- setPinOutput(ST7565_RST_PIN);
- writePinHigh(ST7565_RST_PIN);
- setPinOutput(ST7565_SS_PIN);
-
- palSetPadMode(PAL_PORT(ST7565_MOSI_PIN), PAL_PAD(ST7565_MOSI_PIN), PAL_MODE_ALTERNATIVE_2);
- palSetPadMode(PAL_PORT(ST7565_SCLK_PIN), PAL_PAD(ST7565_SCLK_PIN), PAL_MODE_ALTERNATIVE_2);
-
- spiInit();
- spiStart(&SPID1, &spi1config);
- release_bus(g);
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) { (void)g; }
-
-static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
- (void)g;
- writePin(ST7565_RST_PIN, !state);
-}
-
-static GFXINLINE void write_cmd(GDisplay *g, gU8 cmd) {
- (void)g;
- writePinLow(ST7565_A0_PIN);
- spiSend(&SPID1, 1, &cmd);
-}
-
-static GFXINLINE void write_data(GDisplay *g, gU8 *data, gU16 length) {
- (void)g;
- writePinHigh(ST7565_A0_PIN);
- spiSend(&SPID1, length, data);
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/drivers/ugfx/gdisp/st7565/driver.mk b/drivers/ugfx/gdisp/st7565/driver.mk
deleted file mode 100644
index 799a986b0a..0000000000
--- a/drivers/ugfx/gdisp/st7565/driver.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-GFXINC += drivers/ugfx/gdisp/st7565
-GFXSRC += drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
-GDISP_DRIVER_LIST += GDISPVMT_ST7565_QMK
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c b/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
deleted file mode 100644
index f586f97e38..0000000000
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#include "gfx.h"
-
-#if GFX_USE_GDISP
-
-# define GDISP_DRIVER_VMT GDISPVMT_ST7565_QMK
-# include "gdisp_lld_config.h"
-# include "src/gdisp/gdisp_driver.h"
-
-# include "board_st7565.h"
-
-/*===========================================================================*/
-/* Driver local definitions. */
-/*===========================================================================*/
-
-# ifndef GDISP_SCREEN_HEIGHT
-# define GDISP_SCREEN_HEIGHT LCD_HEIGHT
-# endif
-# ifndef GDISP_SCREEN_WIDTH
-# define GDISP_SCREEN_WIDTH LCD_WIDTH
-# endif
-# ifndef GDISP_INITIAL_CONTRAST
-# define GDISP_INITIAL_CONTRAST 35
-# endif
-# ifndef GDISP_INITIAL_BACKLIGHT
-# define GDISP_INITIAL_BACKLIGHT 100
-# endif
-
-# define GDISP_FLG_NEEDFLUSH (GDISP_FLG_DRIVER << 0)
-
-# include "st7565.h"
-
-/*===========================================================================*/
-/* Driver config defaults for backward compatibility. */
-/*===========================================================================*/
-# ifndef ST7565_LCD_BIAS
-# define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-# endif
-# ifndef ST7565_ADC
-# define ST7565_ADC ST7565_ADC_NORMAL
-# endif
-# ifndef ST7565_COM_SCAN
-# define ST7565_COM_SCAN ST7565_COM_SCAN_INC
-# endif
-# ifndef ST7565_PAGE_ORDER
-# define ST7565_PAGE_ORDER 0, 1, 2, 3, 4, 5, 6, 7
-# endif
-
-/*===========================================================================*/
-/* Driver local functions. */
-/*===========================================================================*/
-
-// Some common routines and macros
-# define RAM(g) ((gU8 *)g->priv)
-# define write_cmd2(g, cmd1, cmd2) \
- { \
- write_cmd(g, cmd1); \
- write_cmd(g, cmd2); \
- }
-# define write_cmd3(g, cmd1, cmd2, cmd3) \
- { \
- write_cmd(g, cmd1); \
- write_cmd(g, cmd2); \
- write_cmd(g, cmd3); \
- }
-
-// Some common routines and macros
-# define delay(us) gfxSleepMicroseconds(us)
-# define delay_ms(ms) gfxSleepMilliseconds(ms)
-
-# define xyaddr(x, y) ((x) + ((y) >> 3) * GDISP_SCREEN_WIDTH)
-# define xybit(y) (1 << ((y)&7))
-
-/*===========================================================================*/
-/* Driver exported functions. */
-/*===========================================================================*/
-
-/*
- * As this controller can't update on a pixel boundary we need to maintain the
- * the entire display surface in memory so that we can do the necessary bit
- * operations. Fortunately it is a small display in monochrome.
- * 64 * 128 / 8 = 1024 bytes.
- */
-
-LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
- // The private area is the display surface.
- g->priv = gfxAlloc(GDISP_SCREEN_HEIGHT * GDISP_SCREEN_WIDTH / 8);
- if (!g->priv) {
- return gFalse;
- }
-
- // Initialise the board interface
- init_board(g);
-
- // Hardware reset
- setpin_reset(g, TRUE);
- gfxSleepMilliseconds(20);
- setpin_reset(g, FALSE);
- gfxSleepMilliseconds(20);
- acquire_bus(g);
-
- write_cmd(g, ST7565_LCD_BIAS);
- write_cmd(g, ST7565_ADC);
- write_cmd(g, ST7565_COM_SCAN);
-
- write_cmd(g, ST7565_START_LINE | 0);
-
- write_cmd2(g, ST7565_CONTRAST, GDISP_INITIAL_CONTRAST * 64 / 101);
- write_cmd(g, ST7565_RESISTOR_RATIO | 0x1);
-
- // turn on voltage converter (VC=1, VR=0, VF=0)
- write_cmd(g, ST7565_POWER_CONTROL | 0x04);
- delay_ms(50);
-
- // turn on voltage regulator (VC=1, VR=1, VF=0)
- write_cmd(g, ST7565_POWER_CONTROL | 0x06);
- delay_ms(50);
-
- // turn on voltage follower (VC=1, VR=1, VF=1)
- write_cmd(g, ST7565_POWER_CONTROL | 0x07);
- delay_ms(50);
-
- write_cmd(g, ST7565_DISPLAY_ON);
- write_cmd(g, ST7565_ALLON_NORMAL);
- write_cmd(g, ST7565_INVERT_DISPLAY); // Disable Inversion of display.
-
- write_cmd(g, ST7565_RMW);
-
- // Finish Init
- post_init_board(g);
-
- // Release the bus
- release_bus(g);
-
- /* Initialise the GDISP structure */
- g->g.Width = GDISP_SCREEN_WIDTH;
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Orientation = GDISP_ROTATE_0;
- g->g.Powermode = powerOff;
- g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
- g->g.Contrast = GDISP_INITIAL_CONTRAST;
- return TRUE;
-}
-
-# if GDISP_HARDWARE_FLUSH
-LLDSPEC void gdisp_lld_flush(GDisplay *g) {
- unsigned p;
-
- // Don't flush if we don't need it.
- if (!(g->flags & GDISP_FLG_NEEDFLUSH)) return;
-
- acquire_bus(g);
- gU8 pagemap[] = {ST7565_PAGE_ORDER};
- for (p = 0; p < sizeof(pagemap); p++) {
- write_cmd(g, ST7565_PAGE | pagemap[p]);
- write_cmd(g, ST7565_COLUMN_MSB | 0);
- write_cmd(g, ST7565_COLUMN_LSB | 0);
- write_cmd(g, ST7565_RMW);
- write_data(g, RAM(g) + (p * GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH);
- }
- release_bus(g);
-
- g->flags &= ~GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_DRAWPIXEL
-LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_90:
- x = g->p.y;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.x;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- break;
- case GDISP_ROTATE_270:
- x = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- y = g->p.x;
- break;
- }
- if (gdispColor2Native(g->p.color) != Black)
- RAM(g)[xyaddr(x, y)] |= xybit(y);
- else
- RAM(g)[xyaddr(x, y)] &= ~xybit(y);
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_HARDWARE_PIXELREAD
-LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
- coord_t x, y;
-
- switch (g->g.Orientation) {
- default:
- case GDISP_ROTATE_0:
- x = g->p.x;
- y = g->p.y;
- break;
- case GDISP_ROTATE_90:
- x = g->p.y;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.x;
- break;
- case GDISP_ROTATE_180:
- x = GDISP_SCREEN_WIDTH - 1 - g->p.x;
- y = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- break;
- case GDISP_ROTATE_270:
- x = GDISP_SCREEN_HEIGHT - 1 - g->p.y;
- y = g->p.x;
- break;
- }
- return (RAM(g)[xyaddr(x, y)] & xybit(y)) ? White : Black;
-}
-# endif
-
-# if GDISP_HARDWARE_BITFILLS
-LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
- uint8_t *buffer = (uint8_t *)g->p.ptr;
- int linelength = g->p.cx;
- for (int i = 0; i < g->p.cy; i++) {
- unsigned dstx = g->p.x;
- unsigned dsty = g->p.y + i;
- unsigned srcx = g->p.x1;
- unsigned srcy = g->p.y1 + i;
- unsigned srcbit = srcy * g->p.x2 + srcx;
- for (int j = 0; j < linelength; j++) {
- uint8_t src = buffer[srcbit / 8];
- uint8_t bit = 7 - (srcbit % 8);
- uint8_t bitset = (src >> bit) & 1;
- uint8_t *dst = &(RAM(g)[xyaddr(dstx, dsty)]);
- if (bitset) {
- *dst |= xybit(dsty);
- } else {
- *dst &= ~xybit(dsty);
- }
- dstx++;
- srcbit++;
- }
- }
- g->flags |= GDISP_FLG_NEEDFLUSH;
-}
-# endif
-
-# if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
-LLDSPEC void gdisp_lld_control(GDisplay *g) {
- switch (g->p.x) {
- case GDISP_CONTROL_POWER:
- if (g->g.Powermode == (powermode_t)g->p.ptr) return;
- switch ((powermode_t)g->p.ptr) {
- case powerOff:
- case powerSleep:
- case powerDeepSleep:
- acquire_bus(g);
- write_cmd(g, ST7565_DISPLAY_OFF);
- release_bus(g);
- break;
- case powerOn:
- acquire_bus(g);
- write_cmd(g, ST7565_DISPLAY_ON);
- release_bus(g);
- break;
- default:
- return;
- }
- g->g.Powermode = (powermode_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_ORIENTATION:
- if (g->g.Orientation == (orientation_t)g->p.ptr) return;
- switch ((orientation_t)g->p.ptr) {
- /* Rotation is handled by the drawing routines */
- case GDISP_ROTATE_0:
- case GDISP_ROTATE_180:
- g->g.Height = GDISP_SCREEN_HEIGHT;
- g->g.Width = GDISP_SCREEN_WIDTH;
- break;
- case GDISP_ROTATE_90:
- case GDISP_ROTATE_270:
- g->g.Height = GDISP_SCREEN_WIDTH;
- g->g.Width = GDISP_SCREEN_HEIGHT;
- break;
- default:
- return;
- }
- g->g.Orientation = (orientation_t)g->p.ptr;
- return;
-
- case GDISP_CONTROL_CONTRAST:
- if ((unsigned)g->p.ptr > 100) g->p.ptr = (void *)100;
- acquire_bus(g);
- write_cmd2(g, ST7565_CONTRAST, ((((unsigned)g->p.ptr) << 6) / 101) & 0x3F);
- release_bus(g);
- g->g.Contrast = (unsigned)g->p.ptr;
- return;
- }
-}
-# endif // GDISP_NEED_CONTROL
-
-#endif // GFX_USE_GDISP
diff --git a/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h b/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
deleted file mode 100644
index 6052058ec2..0000000000
--- a/drivers/ugfx/gdisp/st7565/gdisp_lld_config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_CONFIG_H
-#define _GDISP_LLD_CONFIG_H
-
-#if GFX_USE_GDISP
-
-/*===========================================================================*/
-/* Driver hardware support. */
-/*===========================================================================*/
-
-# define GDISP_HARDWARE_FLUSH GFXON // This controller requires flushing
-# define GDISP_HARDWARE_DRAWPIXEL GFXON
-# define GDISP_HARDWARE_PIXELREAD GFXON
-# define GDISP_HARDWARE_CONTROL GFXON
-# define GDISP_HARDWARE_BITFILLS GFXON
-
-# define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO
-
-#endif /* GFX_USE_GDISP */
-
-#endif /* _GDISP_LLD_CONFIG_H */
diff --git a/drivers/ugfx/gdisp/st7565/st7565.h b/drivers/ugfx/gdisp/st7565/st7565.h
deleted file mode 100644
index 3c77a88569..0000000000
--- a/drivers/ugfx/gdisp/st7565/st7565.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _ST7565_H
-#define _ST7565_H
-
-#define ST7565_CONTRAST 0x81
-#define ST7565_ALLON_NORMAL 0xA4
-#define ST7565_ALLON 0xA5
-#define ST7565_POSITIVE_DISPLAY 0xA6
-#define ST7565_INVERT_DISPLAY 0xA7
-#define ST7565_DISPLAY_OFF 0xAE
-#define ST7565_DISPLAY_ON 0xAF
-
-#define ST7565_LCD_BIAS_7 0xA3
-#define ST7565_LCD_BIAS_9 0xA2
-
-#define ST7565_ADC_NORMAL 0xA0
-#define ST7565_ADC_REVERSE 0xA1
-
-#define ST7565_COM_SCAN_INC 0xC0
-#define ST7565_COM_SCAN_DEC 0xC8
-
-#define ST7565_START_LINE 0x40
-#define ST7565_PAGE 0xB0
-#define ST7565_COLUMN_MSB 0x10
-#define ST7565_COLUMN_LSB 0x00
-#define ST7565_RMW 0xE0
-
-#define ST7565_RESISTOR_RATIO 0x20
-#define ST7565_POWER_CONTROL 0x28
-
-#define ST7565_RESET 0xE2
-
-#endif /* _ST7565_H */
diff --git a/tmk_core/protocol/arm_atsam/usb/usb2422.h b/drivers/usb2422.c
index b4830b5bc8..62b919093b 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb2422.h
+++ b/drivers/usb2422.c
@@ -1,32 +1,25 @@
-/*
-Copyright 2018 Massdrop Inc.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _USB2422_H_
-#define _USB2422_H_
-
-#define REV_USB2422 0x100
-
-#define USB2422_ADDR 0x58 // I2C device address, one instance
-
-#define USB2422_HUB_ACTIVE_GROUP 0 // PA
-#define USB2422_HUB_ACTIVE_PIN 18 // 18
+/* 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 <string.h>
+#include "usb2422.h"
+#include "i2c_master.h"
+#include "wait.h"
+#include "gpio.h"
/* -------- USB2422_VID : (USB2422L Offset: 0x00) (R/W 16) Vendor ID -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint16_t VID_LSB : 8;
@@ -34,10 +27,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint16_t reg; /*!< Type used for register access */
} USB2422_VID_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PID : (USB2422L Offset: 0x02) (R/W 16) Product ID -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint16_t PID_LSB : 8;
@@ -45,10 +36,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint16_t reg; /*!< Type used for register access */
} USB2422_PID_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_DID : (USB2422L Offset: 0x04) (R/W 16) Device ID -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint16_t DID_LSB : 8;
@@ -56,10 +45,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint16_t reg; /*!< Type used for register access */
} USB2422_DID_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_CFG1 : (USB2422L Offset: 0x06) (R/W 8) Configuration Data Byte 1-------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t PORT_PWR : 1;
@@ -72,10 +59,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_CFG1_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_CFG2 : (USB2422L Offset: 0x07) (R/W 8) Configuration Data Byte 2-------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t : 3;
@@ -86,10 +71,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_CFG2_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_CFG3 : (USB2422L Offset: 0x08) (R/W 16) Configuration Data Byte 3-------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t STRING_EN : 1;
@@ -99,10 +82,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_CFG3_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_NRD : (USB2422L Offset: 0x09) (R/W 8) Non Removable Device -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t : 5;
@@ -112,10 +93,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_NRD_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PDS : (USB2422L Offset: 0x0A) (R/W 8) Port Diable for Self-Powered Operation -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t : 1;
@@ -125,10 +104,9 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_PDS_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PDB : (USB2422L Offset: 0x0B) (R/W 8) Port Diable for Bus-Powered Operation -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
+
typedef union {
struct {
uint8_t : 1;
@@ -138,125 +116,98 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_PDB_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_MAXPS : (USB2422L Offset: 0x0C) (R/W 8) Max Power for Self-Powered Operation -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t MAX_PWR_SP : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_MAXPS_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_MAXPB : (USB2422L Offset: 0x0D) (R/W 8) Max Power for Bus-Powered Operation -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t MAX_PWR_BP : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_MAXPB_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_HCMCS : (USB2422L Offset: 0x0E) (R/W 8) Hub Controller Max Current for Self-Powered Operation -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t HC_MAX_C_SP : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_HCMCS_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_HCMCB : (USB2422L Offset: 0x0F) (R/W 8) Hub Controller Max Current for Bus-Powered Operation -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t HC_MAX_C_BP : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_HCMCB_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PWRT : (USB2422L Offset: 0x10) (R/W 8) Power On Time -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t POWER_ON_TIME : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_PWRT_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_LANGID LSB : (USB2422L Offset: 0x11) (R/W 16) Language ID -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t LANGID_LSB : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_LANGID_LSB_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_LANGID MSB : (USB2422L Offset: 0x12) (R/W 16) Language ID -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t LANGID_MSB : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_LANGID_MSB_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_MFRSL : (USB2422L Offset: 0x13) (R/W 8) Manufacturer String Length -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t MFR_STR_LEN : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_MFRSL_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PRDSL : (USB2422L Offset: 0x14) (R/W 8) Product String Length -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t PRD_STR_LEN : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_PRDSL_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_SERSL : (USB2422L Offset: 0x15) (R/W 8) Serial String Length -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t SER_STR_LEN : 8;
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_SERSL_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_MFRSTR : (USB2422L Offset: 0x16-53) (R/W 8) Maufacturer String -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef uint16_t USB2422_MFRSTR_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PRDSTR : (USB2422L Offset: 0x54-91) (R/W 8) Product String -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef uint16_t USB2422_PRDSTR_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_SERSTR : (USB2422L Offset: 0x92-CF) (R/W 8) Serial String -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef uint16_t USB2422_SERSTR_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_BCEN : (USB2422L Offset: 0xD0) (R/W 8) Battery Charging Enable -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
+
typedef union {
struct {
uint8_t : 1;
@@ -266,10 +217,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_BCEN_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_BOOSTUP : (USB2422L Offset: 0xF6) (R/W 8) Boost Upstream -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t BOOST : 2;
@@ -277,10 +226,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_BOOSTUP_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_BOOSTDOWN : (USB2422L Offset: 0xF8) (R/W 8) Boost Downstream -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t BOOST1 : 2;
@@ -289,10 +236,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_BOOSTDOWN_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PRTSP : (USB2422L Offset: 0xFA) (R/W 8) Port Swap -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t : 1;
@@ -302,10 +247,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_PRTSP_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/* -------- USB2422_PRTR12 : (USB2422L Offset: 0xFB) (R/W 8) Port 1/2 Remap -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t PORT1_REMAP : 4;
@@ -313,7 +256,7 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_PRTR12_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
+
#define USB2422_PRTR12_DISABLE 0
#define USB2422_PRT12_P2TOL1 1
#define USB2422_PRT12_P2XTOL2 2
@@ -321,7 +264,6 @@ typedef union {
#define USB2422_PRT12_P1XTOL2 2
/* -------- USB2422_STCD : (USB2422L Offset: 0xFF) (R/W 8) Status Command -------- */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef union {
struct {
uint8_t USB_ATTACH : 1;
@@ -331,10 +273,8 @@ typedef union {
} bit; /*!< Structure used for bit access */
uint8_t reg; /*!< Type used for register access */
} USB2422_STCD_Type;
-#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
/** \brief USB2422 device hardware registers */
-#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
typedef struct {
USB2422_VID_Type VID; /**< \brief Offset: 0x00*/
USB2422_PID_Type PID; /**< \brief Offset: 0x02*/
@@ -368,35 +308,95 @@ typedef struct {
USB2422_PRTR12_Type PRTR12; /**< \brief Offset: 0xFB*/
uint8_t Reserved4[0x3];
USB2422_STCD_Type STCD; /**< \brief Offset: 0xFF*/
-} Usb2422;
-#endif
+} Usb2422_t;
+
+// ***************************************************************
+
+static Usb2422_t config;
-#define PORT_DETECT_RETRY_INTERVAL 2000
+// ***************************************************************
-#define USB_EXTRA_ADC_THRESHOLD 900
+/** \brief Handle the conversion to allow simple strings
+ */
+static void USB2422_strcpy(const char* str, USB2422_MFRSTR_Type* dest, uint8_t len) {
+ for (uint8_t i = 0; i < len; i++) {
+ dest[i] = str[i];
+ }
+}
-#define USB_EXTRA_STATE_DISABLED 0
-#define USB_EXTRA_STATE_ENABLED 1
-#define USB_EXTRA_STATE_UNKNOWN 2
-#define USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG 3
+/** \brief Handle the conversion to allow simple strings
+ */
+static void USB2422_write_block(void) {
+ static unsigned char i2c0_buf[34];
-#define USB_HOST_PORT_1 0
-#define USB_HOST_PORT_2 1
-#define USB_HOST_PORT_UNKNOWN 2
+ unsigned char* dest = i2c0_buf;
+ unsigned char* src;
+ unsigned char* base = (unsigned char*)&config;
-extern uint8_t usb_host_port;
-extern uint8_t usb_extra_state;
-extern uint8_t usb_extra_manual;
-extern uint8_t usb_gcr_auto;
+ for (src = base; src < base + 256; src += 32) {
+ dest[0] = src - base;
+ dest[1] = 32;
+ memcpy(&dest[2], src, 32);
+ i2c_transmit(USB2422_ADDRESS, dest, 34, 50000);
+ wait_us(100);
+ }
+}
-void USB2422_init(void);
-void USB_reset(void);
-void USB_configure(void);
-uint16_t USB_active(void);
-void USB_set_host_by_voltage(void);
-uint16_t adc_get(uint8_t muxpos);
-uint8_t USB2422_Port_Detect_Init(void);
-void USB_HandleExtraDevice(void);
-void USB_ExtraSetState(uint8_t state);
+// ***************************************************************
-#endif //_USB2422_H_
+void USB2422_init() {
+#ifdef USB2422_RESET_PIN
+ setPinOutput(USB2422_RESET_PIN);
+#endif
+#ifdef USB2422_ACTIVE_PIN
+ setPinInput(USB2422_ACTIVE_PIN);
+#endif
+
+ i2c_init(); // IC2 clk must be high at USB2422 reset release time to signal SMB configuration
+}
+
+void USB2422_configure() {
+ static const char SERNAME[] = "Unavailable";
+
+ memset(&config, 0, sizeof(Usb2422_t));
+
+ // configure Usb2422 registers
+ config.VID.reg = USB2422_VENDOR_ID;
+ config.PID.reg = USB2422_PRODUCT_ID;
+ config.DID.reg = USB2422_DEVICE_VER; // BCD format, eg 01.01
+ config.CFG1.bit.SELF_BUS_PWR = 1; // self powered for now
+ config.CFG1.bit.HS_DISABLE = 1; // full or high speed
+ // config.CFG2.bit.COMPOUND = 0; // compound device
+ config.CFG3.bit.STRING_EN = 1; // strings enabled
+ // config.NRD.bit.PORT2_NR = 0; // MCU is non-removable
+ config.MAXPB.reg = 20; // 0mA
+ config.HCMCB.reg = 20; // 0mA
+ config.MFRSL.reg = sizeof(USB2422_MANUFACTURER);
+ config.PRDSL.reg = sizeof(USB2422_PRODUCT);
+ config.SERSL.reg = sizeof(SERNAME);
+ USB2422_strcpy(USB2422_MANUFACTURER, config.MFRSTR, sizeof(USB2422_MANUFACTURER));
+ USB2422_strcpy(USB2422_PRODUCT, config.PRDSTR, sizeof(USB2422_PRODUCT));
+ USB2422_strcpy(SERNAME, config.SERSTR, sizeof(SERNAME));
+ // config.BOOSTUP.bit.BOOST=3; //upstream port
+ // config.BOOSTDOWN.bit.BOOST1=0; // extra port
+ // config.BOOSTDOWN.bit.BOOST2=2; //MCU is close
+ config.STCD.bit.USB_ATTACH = 1;
+
+ USB2422_write_block();
+}
+
+void USB2422_reset() {
+#ifdef USB2422_RESET_PIN
+ writePinLow(USB2422_RESET_PIN);
+ wait_us(2);
+ writePinHigh(USB2422_RESET_PIN);
+#endif
+}
+
+bool USB2422_active() {
+#ifdef USB2422_ACTIVE_PIN
+ return readPin(USB2422_ACTIVE_PIN);
+#else
+ return 1;
+#endif
+}
diff --git a/drivers/usb2422.h b/drivers/usb2422.h
new file mode 100644
index 0000000000..2e435b02bc
--- /dev/null
+++ b/drivers/usb2422.h
@@ -0,0 +1,59 @@
+/* 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
+
+#include <stdbool.h>
+
+#ifndef USB2422_ADDRESS
+# define USB2422_ADDRESS 0x58
+#endif
+
+#ifndef USB2422_VENDOR_ID
+# define USB2422_VENDOR_ID 0xFEED
+#endif
+#ifndef USB2422_PRODUCT_ID
+# define USB2422_PRODUCT_ID 0x0001
+#endif
+#ifndef USB2422_DEVICE_VER
+# define USB2422_DEVICE_VER 0x0001
+#endif
+
+#ifndef USB2422_MANUFACTURER
+# define USB2422_MANUFACTURER "QMK"
+#endif
+#ifndef USB2422_PRODUCT
+# define USB2422_PRODUCT "QMK Hub"
+#endif
+
+/** \brief Initialises the dependent subsystems */
+void USB2422_init(void);
+
+/** \brief Push configuration to the USB2422 device */
+void USB2422_configure(void);
+
+/** \brief Reset the chip (RESET_N)
+ *
+ * NOTE:
+ * Depends on a valid USB2422_RESET_PIN configuration
+ */
+void USB2422_reset(void);
+
+/** \brief Indicates the USB state of the hub (SUSP_IND)
+ *
+ * NOTE:
+ * Depends on a valid USB2422_ACTIVE_PIN configuration
+ */
+bool USB2422_active(void);
diff --git a/generic_features.mk b/generic_features.mk
new file mode 100644
index 0000000000..ff02d56bbe
--- /dev/null
+++ b/generic_features.mk
@@ -0,0 +1,49 @@
+# 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/>.
+
+SPACE_CADET_ENABLE ?= yes
+GRAVE_ESC_ENABLE ?= yes
+
+GENERIC_FEATURES = \
+ COMBO \
+ COMMAND \
+ DIGITIZER \
+ DIP_SWITCH \
+ DYNAMIC_KEYMAP \
+ DYNAMIC_MACRO \
+ ENCODER \
+ GRAVE_ESC \
+ HAPTIC \
+ KEY_LOCK \
+ KEY_OVERRIDE \
+ LEADER \
+ PROGRAMMABLE_BUTTON \
+ SPACE_CADET \
+ TAP_DANCE \
+ VELOCIKEY \
+ WPM \
+
+define HANDLE_GENERIC_FEATURE
+ # $$(info "Processing: $1_ENABLE $2.c")
+ SRC += $$(wildcard $$(QUANTUM_DIR)/process_keycode/process_$2.c)
+ SRC += $$(wildcard $$(QUANTUM_DIR)/$2.c)
+ OPT_DEFS += -D$1_ENABLE
+endef
+
+$(foreach F,$(GENERIC_FEATURES),\
+ $(if $(filter yes, $(strip $($(F)_ENABLE))),\
+ $(eval $(call HANDLE_GENERIC_FEATURE,$(F),$(shell echo $(F) | tr '[:upper:]' '[:lower:]'))) \
+ ) \
+)
diff --git a/keyboards/10bleoledhub/rules.mk b/keyboards/10bleoledhub/rules.mk
index 1e036e660c..700f7e8f77 100644
--- a/keyboards/10bleoledhub/rules.mk
+++ b/keyboards/10bleoledhub/rules.mk
@@ -21,9 +21,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
index 2a4ff658cf..160b3684b3 100644
--- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
+++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
@@ -4,5 +4,6 @@ F_CPU = 8000000
# Build Options
# change yes to no to disable
#
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
BACKLIGHT_ENABLE = no
diff --git a/keyboards/40percentclub/ut47/post_rules.mk b/keyboards/40percentclub/ut47/post_rules.mk
new file mode 100644
index 0000000000..7051ee413d
--- /dev/null
+++ b/keyboards/40percentclub/ut47/post_rules.mk
@@ -0,0 +1,4 @@
+ifeq ($(strip $(LED_ENABLE)), yes)
+ OPT_DEFS += -DLED_ENABLE
+ SRC += led.c
+endif
diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk
index 5253dcbdbd..f0c4e8e3a9 100644
--- a/keyboards/40percentclub/ut47/rules.mk
+++ b/keyboards/40percentclub/ut47/rules.mk
@@ -22,8 +22,3 @@ AUDIO_ENABLE = no # Audio output
# custom matrix setup
CUSTOM_MATRIX = yes
SRC += matrix.c protocol/serial_uart.c
-
-ifeq ($(strip $(LED_ENABLE)), yes)
- OPT_DEFS += -DLED_ENABLE
- SRC += led.c
-endif
diff --git a/keyboards/6ball/6ball.h b/keyboards/6ball/6ball.h
index 234235341d..ef73a72053 100644
--- a/keyboards/6ball/6ball.h
+++ b/keyboards/6ball/6ball.h
@@ -1,14 +1,10 @@
-#ifndef SIXBALL_H
-#define SIXBALL_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- k01, k02, k03, \
- k04, k05, k06 \
-) \
-{ \
- { k02, k03, k06, k05, k04, k01 } \
-}
-
-#endif
+ k05, k00, k01, \
+ k04, k03, k02 \
+) { \
+ { k00, k01, k02, k03, k04, k05 } \
+}
diff --git a/keyboards/6ball/config.h b/keyboards/6ball/config.h
index c7d4d3354a..cc496d675a 100644
--- a/keyboards/6ball/config.h
+++ b/keyboards/6ball/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -46,5 +45,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/9key/9key.h b/keyboards/9key/9key.h
index b60dc53c00..ad809da4b8 100644
--- a/keyboards/9key/9key.h
+++ b/keyboards/9key/9key.h
@@ -1,17 +1,13 @@
-#ifndef NINEKEY_H
-#define NINEKEY_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- k00, k01, k02, \
- k10, k11, k12, \
- k20, k21, k22 \
-) \
-{ \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22 \
+) { \
{ k00, k01, k02 }, \
{ k10, k11, k12 }, \
{ k20, k21, k22 } \
-}
-
-#endif
+}
diff --git a/keyboards/9key/config.h b/keyboards/9key/config.h
index 3c7b4e0ad6..b0462eb50f 100644
--- a/keyboards/9key/config.h
+++ b/keyboards/9key/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/aeboards/constellation/rev2/config.h b/keyboards/aeboards/constellation/rev2/config.h
index 0780c9bf93..de42885b47 100755
--- a/keyboards/aeboards/constellation/rev2/config.h
+++ b/keyboards/aeboards/constellation/rev2/config.h
@@ -47,8 +47,8 @@
#define LOCKING_RESYNC_ENABLE
// I2C setup
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h
index 778fc3ea6c..498e345ad7 100644
--- a/keyboards/aeboards/ext65/rev2/config.h
+++ b/keyboards/aeboards/ext65/rev2/config.h
@@ -56,8 +56,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define WS2812_EXTERNAL_PULLUP
// I2C OLED defines
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
diff --git a/keyboards/ai03/orbit/orbit.h b/keyboards/ai03/orbit/orbit.h
index 2ada881f3f..39f1ebb0e3 100644
--- a/keyboards/ai03/orbit/orbit.h
+++ b/keyboards/ai03/orbit/orbit.h
@@ -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/>.
*/
-#ifndef ORBIT_H
-#define ORBIT_H
+
+#pragma once
#include "quantum.h"
@@ -35,29 +35,27 @@
#endif
#endif
+#define XXX KC_NO
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45 \
-) \
-{ \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { KC_NO, L41, L42, L43, L44, L45, L46 }, \
- { R00, R01, R02, R03, R04, R05, R06 }, \
- { R10, R11, R12, R13, R14, R15, R16 }, \
- { R20, R21, R22, R23, R24, R25, R26 }, \
- { R30, R31, R32, R33, R34, R35, R36 }, \
- { R40, R41, R42, R43, R44, R45, KC_NO } \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { XXX, L41, L42, L43, L44, L45, L46 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, XXX } \
}
extern void led_toggle(int id, bool on);
void set_all_leds(bool leds[6]);
extern void set_layer_indicators(uint8_t layer);
-
-#endif
diff --git a/keyboards/alf/dc60/dc60.h b/keyboards/alf/dc60/dc60.h
index db5154a28c..710ae703ed 100644
--- a/keyboards/alf/dc60/dc60.h
+++ b/keyboards/alf/dc60/dc60.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef DC60_H
-#define DC60_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments representing the physical
@@ -25,18 +27,15 @@
// The second converts the arguments into a two-dimensional array which
// represents the switch matrix.
#define LAYOUT_all( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KOD, KOE, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K42, K43, K45, K47, K48, K4A, K4B, K4C, K4D, K4E \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KOD, KOE }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, K43, KC_NO, K45, KC_NO, K47, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k42, k43, k45, k47, k48, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, XXX, k42, k43, XXX, k45, XXX, k47, k48, XXX, k4A, k4B, k4C, k4D, k4E } \
}
-
-#endif
diff --git a/keyboards/alf/x2/config.h b/keyboards/alf/x2/config.h
index 2e545f1a5b..a6f4958b05 100644
--- a/keyboards/alf/x2/config.h
+++ b/keyboards/alf/x2/config.h
@@ -19,31 +19,33 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ALF
-#define PRODUCT X2
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER ALF
+#define PRODUCT X2
/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 15
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
/* key matrix pins */
-#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
-#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
+#define MATRIX_ROW_PINS \
+ { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS \
+ { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
#define UNUSED_PINS
/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
+#define DIODE_DIRECTION COL2ROW
#define LED_CAPS_LOCK_PIN B2
-#define LED_PIN_ON_STATE 0
+#define LED_PIN_ON_STATE 0
/* number of backlight levels */
-#define BACKLIGHT_PIN B6
+#define BACKLIGHT_PIN B6
#ifdef BACKLIGHT_PIN
-#define BACKLIGHT_LEVELS 3
+# define BACKLIGHT_LEVELS 3
#endif
/* Set 0 if debouncing isn't needed */
@@ -57,9 +59,9 @@
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 4
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_ANIMATIONS
+# define RGBLED_NUM 4
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
#endif
diff --git a/keyboards/alpha/alpha.h b/keyboards/alpha/alpha.h
index 025a3ac5fb..204e03822b 100755
--- a/keyboards/alpha/alpha.h
+++ b/keyboards/alpha/alpha.h
@@ -1,16 +1,15 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
- K200, K201, K202, K203, K205, K207, K208, K209 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k25, k27, k28, k29 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109 }, \
- { K200, K201, K202, K203, KC_NO, K205, KC_NO, K207, K208, K209 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, XXX, k25, XXX, k27, k28, k29 } \
}
-
-#endif
diff --git a/keyboards/alpha/config.h b/keyboards/alpha/config.h
index 8c7edd5798..ae1c69656b 100755
--- a/keyboards/alpha/config.h
+++ b/keyboards/alpha/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/amj96/amj96.h b/keyboards/amj96/amj96.h
index 9fcd07d5de..bd4e688360 100644
--- a/keyboards/amj96/amj96.h
+++ b/keyboards/amj96/amj96.h
@@ -34,5 +34,5 @@
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
{ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
- { K60, K61, K62, K63, K64, K65, K66, XXX, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F } \
+ { K60, K61, K62, K63, K64, K65, K66, XXX, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F } \
}
diff --git a/keyboards/amjpad/amjpad.h b/keyboards/amjpad/amjpad.h
index d9a0516215..976a7ab041 100644
--- a/keyboards/amjpad/amjpad.h
+++ b/keyboards/amjpad/amjpad.h
@@ -1,5 +1,4 @@
-#ifndef AMJPAD_H
-#define ADMJPAD_H
+#pragma once
#include "quantum.h"
@@ -24,40 +23,36 @@
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_numpad_6x4( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, k23, \
- k40, k41, k42, \
- k50, k52, k43 \
-) \
-{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, XXX}, \
- {k40, k41, k42, k43}, \
- {k50, XXX, k52, XXX} \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k23, \
+ k40, k41, k42, \
+ k50, k52, k43 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, XXX }, \
+ { k40, k41, k42, k43 }, \
+ { k50, XXX, k52, XXX } \
}
#define LAYOUT_ortho_6x4( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, k23, \
- k30, k31, k32, k33, \
- k40, k41, k42, k43, \
- k50, k51, k52, k53 \
-) \
-{ \
- {k00, k01, k02, k03}, \
- {k10, k11, k12, k13}, \
- {k20, k21, k22, k23}, \
- {k30, k31, k32, k33}, \
- {k40, k41, k42, k43}, \
- {k50, k51, k52, k53} \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 }, \
+ { k40, k41, k42, k43 }, \
+ { k50, k51, k52, k53 } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
-
-#endif
diff --git a/keyboards/amjpad/config.h b/keyboards/amjpad/config.h
index 6bac897e73..f1d57592b5 100644
--- a/keyboards/amjpad/config.h
+++ b/keyboards/amjpad/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -87,5 +86,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/atreus/feather/rules.mk b/keyboards/atreus/feather/rules.mk
index 35d7431539..ad0b4a5046 100644
--- a/keyboards/atreus/feather/rules.mk
+++ b/keyboards/atreus/feather/rules.mk
@@ -10,5 +10,6 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
CONSOLE_ENABLE = no
diff --git a/keyboards/atreus62/config.h b/keyboards/atreus62/config.h
index 2d4ab99c62..31baef145f 100644
--- a/keyboards/atreus62/config.h
+++ b/keyboards/atreus62/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -71,5 +70,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/baguette/baguette.h b/keyboards/baguette/baguette.h
index e3945bea7e..70440f7627 100644
--- a/keyboards/baguette/baguette.h
+++ b/keyboards/baguette/baguette.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BAGUETTE_H
-#define BAGUETTE_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -27,33 +29,29 @@
* represents the switch matrix.
*/
#define LAYOUT_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K42, K43, K47, K4B, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \
- { KC_NO, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k42, k43, k47, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_iso( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K42, K43, K47, K4B, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, KC_NO, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \
- { KC_NO, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k42, k43, k47, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4B, k4C, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/bantam44/bantam44.h b/keyboards/bantam44/bantam44.h
index 38afbbdde7..f680f9eac2 100644
--- a/keyboards/bantam44/bantam44.h
+++ b/keyboards/bantam44/bantam44.h
@@ -1,23 +1,21 @@
-#ifndef BANTAM44_H
-#define BANTAM44_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38 \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, K2A }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
- { K30, K31, K32, KC_NO, K33, KC_NO, K34, KC_NO, K35, K36, K37, K38 } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k34, k36, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/keyboards/bantam44/config.h b/keyboards/bantam44/config.h
index b468b28ccb..6cff8b2899 100644
--- a/keyboards/bantam44/config.h
+++ b/keyboards/bantam44/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bfake/bfake.h b/keyboards/bfake/bfake.h
index 599ea0f870..59a40de2f8 100644
--- a/keyboards/bfake/bfake.h
+++ b/keyboards/bfake/bfake.h
@@ -15,43 +15,42 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BFAKE_H
-#define BFAKE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_all( \
- K61, K71, K72, K73, K74, K64, K65, K75, K76, K77, K78, K68, K66, K10, K60,\
- K11, K01, K02, K03, K04, K14, K15, K05, K06, K07, K08, K18, K16, K20, \
- K12, K21, K22, K23, K24, K34, K35, K25, K26, K27, K28, K38, K40, \
- K19, K13, K41, K42, K43, K44, K54, K55, K45, K46, K47, K58, K49, K50,\
- K09, K00, K39, K30, K59, K69, K57, K29\
-){ \
- { KC_NO, K01, K02, K03, K04, K05, K06, K07, K08, K09, K00}, \
- { KC_NO, K11, K12, K13, K14, K15, K16, KC_NO, K18, K19, K10}, \
- { KC_NO, K21, K22, K23, K24, K25, K26, K27, K28, K29, K20}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K34, K35, KC_NO, KC_NO, K38, K39, K30}, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49, K40}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K54, K55, KC_NO, K57, K58, K59, K50}, \
- { KC_NO, K61, KC_NO, KC_NO, K64, K65, K66, KC_NO, K68, K69, K60}, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, KC_NO, KC_NO}, \
+ k61, k71, k72, k73, k74, k64, k65, k75, k76, k77, k78, k68, k66, k1A, k6A,\
+ k11, k01, k02, k03, k04, k14, k15, k05, k06, k07, k08, k18, k16, k2A, \
+ k12, k21, k22, k23, k24, k34, k35, k25, k26, k27, k28, k38, k4A, \
+ k19, k13, k41, k42, k43, k44, k54, k55, k45, k46, k47, k58, k49, k5A, \
+ k09, k0A, k39, k3A, k59, k69, k57, k29 \
+) { \
+ { XXX, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { XXX, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1A }, \
+ { XXX, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { XXX, XXX, XXX, XXX, k34, k35, XXX, XXX, k38, k39, k3A }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, XXX, k49, k4A }, \
+ { XXX, XXX, XXX, XXX, k54, k55, XXX, k57, k58, k59, k5A }, \
+ { XXX, k61, XXX, XXX, k64, k65, k66, XXX, k68, k69, k6A }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77, k78, XXX, XXX } \
}
#define LAYOUT_60_ansi( \
- K61, K71, K72, K73, K74, K64, K65, K75, K76, K77, K78, K68, K66, K60,\
- K11, K01, K02, K03, K04, K14, K15, K05, K06, K07, K08, K18, K16, K20, \
- K12, K21, K22, K23, K24, K34, K35, K25, K26, K27, K28, K38, K40, \
- K19, K41, K42, K43, K44, K54, K55, K45, K46, K47, K58, K49, \
- K09, K00, K39, K30, K59, K69, K57, K29\
-){ \
- { KC_NO, K01, K02, K03, K04, K05, K06, K07, K08, K09, K00}, \
- { KC_NO, K11, K12, KC_NO, K14, K15, K16, KC_NO, K18, K19, KC_NO}, \
- { KC_NO, K21, K22, K23, K24, K25, K26, K27, K28, K29, K20}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K34, K35, KC_NO, KC_NO, K38, K39, K30}, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49, K40}, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K54, K55, KC_NO, K57, K58, K59, KC_NO}, \
- { KC_NO, K61, KC_NO, KC_NO, K64, K65, K66, KC_NO, K68, K69, K60}, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77, K78, KC_NO, KC_NO}, \
+ k61, k71, k72, k73, k74, k64, k65, k75, k76, k77, k78, k68, k66, k6A, \
+ k11, k01, k02, k03, k04, k14, k15, k05, k06, k07, k08, k18, k16, k2A, \
+ k12, k21, k22, k23, k24, k34, k35, k25, k26, k27, k28, k38, k4A, \
+ k19, k41, k42, k43, k44, k54, k55, k45, k46, k47, k58, k49, \
+ k09, k0A, k39, k3A, k59, k69, k57, k29 \
+) { \
+ { XXX, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { XXX, k11, k12, XXX, k14, k15, k16, XXX, k18, k19, XXX }, \
+ { XXX, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { XXX, XXX, XXX, XXX, k34, k35, XXX, XXX, k38, k39, k3A }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, XXX, k49, k4A }, \
+ { XXX, XXX, XXX, XXX, k54, k55, XXX, k57, k58, k59, XXX }, \
+ { XXX, k61, XXX, XXX, k64, k65, k66, XXX, k68, k69, k6A }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77, k78, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/bigseries/1key/1key.h b/keyboards/bigseries/1key/1key.h
index 3441407798..6e5ddcc760 100755
--- a/keyboards/bigseries/1key/1key.h
+++ b/keyboards/bigseries/1key/1key.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00 \
+ k00 \
) { \
- { K00 } \
+ { k00 } \
}
-
-#endif
diff --git a/keyboards/bigseries/1key/config.h b/keyboards/bigseries/1key/config.h
index f26b242128..f31a7fc057 100755
--- a/keyboards/bigseries/1key/config.h
+++ b/keyboards/bigseries/1key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/bigseries/2key/2key.h b/keyboards/bigseries/2key/2key.h
index dcbf2f764c..eff82fef93 100755
--- a/keyboards/bigseries/2key/2key.h
+++ b/keyboards/bigseries/2key/2key.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01 \
+ k00, k01 \
) { \
- { K00, K01 } \
+ { k00, k01 } \
}
-
-#endif
diff --git a/keyboards/bigseries/2key/config.h b/keyboards/bigseries/2key/config.h
index 4f75e28470..53866a15d1 100755
--- a/keyboards/bigseries/2key/config.h
+++ b/keyboards/bigseries/2key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/bigseries/3key/3key.h b/keyboards/bigseries/3key/3key.h
index 6aa843c263..caee1e4551 100755
--- a/keyboards/bigseries/3key/3key.h
+++ b/keyboards/bigseries/3key/3key.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02 \
+ k00, k01, k02 \
) { \
- { K00, K01, K02 } \
+ { k00, k01, k02 } \
}
-
-#endif
diff --git a/keyboards/bigseries/3key/config.h b/keyboards/bigseries/3key/config.h
index a4a3694542..4a474cc3d1 100755
--- a/keyboards/bigseries/3key/config.h
+++ b/keyboards/bigseries/3key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/bigseries/4key/4key.h b/keyboards/bigseries/4key/4key.h
index 21373fdeda..7e9ff7a793 100755
--- a/keyboards/bigseries/4key/4key.h
+++ b/keyboards/bigseries/4key/4key.h
@@ -14,17 +14,15 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, \
- K10, K11 \
+ k00, k01, \
+ k10, k11 \
) { \
- { K00, K01 }, \
- { K10, K11 } \
+ { k00, k01 }, \
+ { k10, k11 } \
}
-
-#endif
diff --git a/keyboards/bigseries/4key/config.h b/keyboards/bigseries/4key/config.h
index 3e96535799..c1635022de 100755
--- a/keyboards/bigseries/4key/config.h
+++ b/keyboards/bigseries/4key/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -55,5 +55,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define RGBLIGHT_LIMIT_VAL 128
#endif
-
-#endif
diff --git a/keyboards/blockey/blockey.h b/keyboards/blockey/blockey.h
index fa7624be76..7b007a2e97 100644
--- a/keyboards/blockey/blockey.h
+++ b/keyboards/blockey/blockey.h
@@ -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/>.
*/
-#ifndef BLOCKEY_H
-#define BLOCKEY_H
+
+#pragma once
#include "quantum.h"
@@ -26,23 +26,20 @@
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, \
- k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, \
- k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, \
- k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, \
- k55, k56, k57, k58, k59, k60, k61, k62 \
-) \
-{ \
- { k01, k02, k03, k04, k05, k06, k07 }, \
- { k15, k16, k17, k18, k19, k20, k21 }, \
- { k29, k30, k31, k32, k33, k34, k35 }, \
- { k42, k43, k44, k45, k46, k47, k48 }, \
- { k55, k56, k57, k58, XXX, XXX, k59 }, \
- { k08, k09, k10, k11, k12, k13, k14 }, \
- { k22, k23, k24, k25, k26, k27, k28 }, \
- { k36, k37, k38, k39, k40, k41, XXX }, \
- { k49, k50, k51, k52, k53, k54, XXX }, \
- { XXX, XXX, XXX, k60, k61, k62, XXX }, \
+ k00, k01, k02, k03, k04, k05, k06, k50, k51, k52, k53, k54, k55, k56, \
+ k10, k11, k12, k13, k14, k15, k16, k60, k61, k62, k63, k64, k65, k66, \
+ k20, k21, k22, k23, k24, k25, k26, k70, k71, k72, k73, k74, k75, \
+ k30, k31, k32, k33, k34, k35, k36, k80, k81, k82, k83, k84, k85, \
+ k40, k41, k42, k43, k46, k93, k94, k95 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06 }, \
+ { k10, k11, k12, k13, k14, k15, k16 }, \
+ { k20, k21, k22, k23, k24, k25, k26 }, \
+ { k30, k31, k32, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, XXX, XXX, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, k74, k75, XXX }, \
+ { k80, k81, k82, k83, k84, k85, XXX }, \
+ { XXX, XXX, XXX, k93, k94, k95, XXX } \
}
-
-#endif
diff --git a/keyboards/blockey/config.h b/keyboards/blockey/config.h
index 61a7b96c24..7ad3311c71 100644
--- a/keyboards/blockey/config.h
+++ b/keyboards/blockey/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -113,5 +112,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/boston_meetup/2019/2019.c b/keyboards/boston_meetup/2019/2019.c
index fd283b087a..7428f1ccf6 100644
--- a/keyboards/boston_meetup/2019/2019.c
+++ b/keyboards/boston_meetup/2019/2019.c
@@ -14,9 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "2019.h"
-#include "qwiic.h"
-#include "action_layer.h"
-#include "haptic.h"
#ifdef RGB_MATRIX_ENABLE
#include "rgb_matrix.h"
@@ -33,184 +30,69 @@ led_config_t g_led_config = { {
} };
#endif
-uint8_t *o_fb;
-
-uint16_t counterst = 0;
-
-
-
-#ifdef QWIIC_MICRO_OLED_ENABLE
-
-/* screen off after this many milliseconds */
-#include "timer.h"
-#define ScreenOffInterval 60000 /* milliseconds */
-static uint16_t last_flush;
-
-volatile uint8_t led_numlock = false;
-volatile uint8_t led_capslock = false;
-volatile uint8_t led_scrolllock = false;
-
-static uint8_t layer;
-static bool queue_for_send = false;
-static uint8_t encoder_value = 32;
-
+#ifdef OLED_ENABLE
__attribute__ ((weak))
-void draw_ui(void) {
- clear_buffer();
- last_flush = timer_read();
- send_command(DISPLAYON);
-
-/* Boston MK title is 55 x 10 pixels */
-#define NAME_X 0
-#define NAME_Y 0
-
- draw_string(NAME_X + 1, NAME_Y + 2, "BOSTON MK", PIXEL_ON, NORM, 0);
-
-/* Layer indicator is 41 x 10 pixels */
-#define LAYER_INDICATOR_X 60
-#define LAYER_INDICATOR_Y 0
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
- draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0);
- draw_rect_filled_soft(LAYER_INDICATOR_X + 32, LAYER_INDICATOR_Y + 1, 9, 9, PIXEL_ON, NORM);
- draw_char(LAYER_INDICATOR_X + 34, LAYER_INDICATOR_Y + 2, layer + 0x30, PIXEL_ON, XOR, 0);
+__attribute__ ((weak))
+void oled_task_user(void) {
+ oled_write_P(PSTR("BOSTON MK LAYER"), false);
+ oled_advance_char();
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(18, 0);
+ oled_write_P(PSTR("NUM"), led_state.num_lock);
+ oled_set_cursor(18, 1);
+ oled_write_P(PSTR("CAP"), led_state.caps_lock);
+ oled_set_cursor(18, 2);
+ oled_write_P(PSTR("SCR"), led_state.scroll_lock);
+
+ uint8_t mod_state = get_mods();
+ oled_set_cursor(10, 3);
+ oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT);
+ oled_advance_char();
+ oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL);
+ oled_advance_char();
+ oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT);
+ oled_advance_char();
+ oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI);
+ oled_advance_char();
/* Matrix display is 12 x 12 pixels */
#define MATRIX_DISPLAY_X 8
#define MATRIX_DISPLAY_Y 16
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- for (uint8_t y = 0; y < MATRIX_COLS; y++) {
- draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- draw_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- draw_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 3,(matrix_get_row(x) & (1 << y)) > 0, NORM);
-
- }
- }
- draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 12, 12, PIXEL_ON, NORM);
- /* hadron oled location on thumbnail */
- draw_rect_filled_soft(MATRIX_DISPLAY_X + 5, MATRIX_DISPLAY_Y + 2, 6, 2, PIXEL_ON, NORM);
-/*
- draw_rect_soft(0, 13, 64, 6, PIXEL_ON, NORM);
- draw_line_vert(encoder_value, 13, 6, PIXEL_ON, NORM);
-
-*/
-
-/* Mod display is 41 x 16 pixels */
-#define MOD_DISPLAY_X 60
-#define MOD_DISPLAY_Y 20
-
- uint8_t mods = get_mods();
- if (mods & MOD_LSFT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LCTL) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LALT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LGUI) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0);
- }
+ // matrix
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ bool on = (matrix_get_row(x) & (1 << y)) > 0;
-/* Lock display is 23 x 32 */
-#define LOCK_DISPLAY_X 104
-#define LOCK_DISPLAY_Y 0
+ // force on for oled location
+ if((x == 0) && (y >= (MATRIX_COLS - 2))) on = 1;
- if (led_numlock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_OFF, NORM, 0);
- } else if (led_numlock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_ON, NORM, 0);
- }
- if (led_capslock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_ON, NORM, 0);
- }
-
- if (led_scrolllock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 22, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_OFF, NORM, 0);
- } else if (led_scrolllock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_ON, NORM, 0);
- }
- send_buffer();
-}
-
-void led_set_user(uint8_t usb_led) {
- if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
- if (led_numlock == false){led_numlock = true;}
- } else {
- if (led_numlock == true){led_numlock = false;}
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 2, on);
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 2, on);
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 2, MATRIX_DISPLAY_Y + x + x + 3, on);
+ oled_write_pixel(MATRIX_DISPLAY_X + y + y + 3, MATRIX_DISPLAY_Y + x + x + 3, on);
+ }
}
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- if (led_capslock == false){led_capslock = true;}
- } else {
- if (led_capslock == true){led_capslock = false;}
+
+ // outline
+ for (uint8_t x = 0; x < 12; x++) {
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y + 12, true);
}
- if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
- if (led_scrolllock == false){led_scrolllock = true;}
- } else {
- if (led_scrolllock == true){led_scrolllock = false;}
+ for (uint8_t y = 0; y < 12; y++) {
+ oled_write_pixel(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y+y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + 12, MATRIX_DISPLAY_Y+y, true);
}
-}
-
-uint32_t layer_state_set_kb(uint32_t state) {
- state = layer_state_set_user(state);
- layer = biton32(state);
- queue_for_send = true;
- return state;
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- queue_for_send = true;
- return process_record_user(keycode, record);
-}
-bool encoder_update_kb(uint8_t index, bool clockwise) {
- encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
- queue_for_send = true;
- return true;
-}
-
-#endif
-
-void matrix_init_kb(void) {
- queue_for_send = true;
- matrix_init_user();
+ // bodge for layer number left hand side
+ for (uint8_t y = 0; y < 8; y++) {
+ oled_write_pixel(95, 0 + y, true);
+ }
}
-
-void matrix_scan_kb(void) {
-if (queue_for_send) {
-#ifdef QWIIC_MICRO_OLED_ENABLE
- draw_ui();
#endif
- queue_for_send = false;
- }
-#ifdef QWIIC_MICRO_OLED_ENABLE
- if (timer_elapsed(last_flush) > ScreenOffInterval) {
- send_command(DISPLAYOFF); /* 0xAE */
- }
-#endif
- if (counterst == 0) {
- //testPatternFB(o_fb);
- }
- counterst = (counterst + 1) % 1024;
- //rgblight_task();
- matrix_scan_user();
-}
diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h
index a1f4fc456d..80896242e0 100644
--- a/keyboards/boston_meetup/2019/config.h
+++ b/keyboards/boston_meetup/2019/config.h
@@ -46,16 +46,9 @@
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
#endif
-//configure qwiic micro_oled driver for the 128x32 oled
-#ifdef QWIIC_MICRO_OLED_ENABLE
+// configure oled driver for the 128x32 oled
+#define OLED_UPDATE_INTERVAL 33 // ~30fps
-#undef I2C_ADDRESS_SA0_1
-#define I2C_ADDRESS_SA0_1 0b0111100
-#define LCDWIDTH 128
-#define LCDHEIGHT 32
-#define micro_oled_rotate_180
-
-#endif
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/boston_meetup/2019/keymaps/default/keymap.c b/keyboards/boston_meetup/2019/keymaps/default/keymap.c
index 6375599455..666624b18c 100644
--- a/keyboards/boston_meetup/2019/keymaps/default/keymap.c
+++ b/keyboards/boston_meetup/2019/keymaps/default/keymap.c
@@ -13,10 +13,8 @@ enum custom_layers {
};
enum custom_keycodes {
- BASE = SAFE_RANGE,
- LOWER,
+ LOWER = SAFE_RANGE,
RAISE,
- KC_DEMOMACRO
};
// Custom macros
@@ -27,7 +25,6 @@ enum custom_keycodes {
// Requires KC_TRNS/_______ for the trigger key in the destination layer
#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor
#define LT_RAI(kc) LT(_RAISE, kc) // L-ayer T-ap to Raise
-#define DEMOMACRO KC_DEMOMACRO // Sample for macros
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -115,14 +112,6 @@ layer_state_t layer_state_set_user(layer_state_t state) {
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case KC_DEMOMACRO:
- if (record->event.pressed) {
- // when keycode KC_DEMOMACRO is pressed
- SEND_STRING("QMK is the best thing ever!");
- } else {
- // when keycode KC_DEMOMACRO is released
- }
- break;
case LOWER:
if (record->event.pressed) {
//not sure how to have keyboard check mode and set it to a variable, so my work around
diff --git a/keyboards/boston_meetup/2019/keymaps/readme.md b/keyboards/boston_meetup/2019/keymaps/readme.md
deleted file mode 100644
index c10a49f7d0..0000000000
--- a/keyboards/boston_meetup/2019/keymaps/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of 2019 keymaps
-
-* **default** default 2019 macropad layout \ No newline at end of file
diff --git a/keyboards/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk
index 236f28c4e5..6468f47b7d 100644
--- a/keyboards/boston_meetup/2019/rules.mk
+++ b/keyboards/boston_meetup/2019/rules.mk
@@ -8,19 +8,21 @@ BOOTLOADER = stm32-dfu
# Build Options
# comment out to disable the options.
#
-BACKLIGHT_ENABLE = no
-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
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
-AUDIO_ENABLE = yes
+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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
-HAPTIC_ENABLE += DRV2605L
-QWIIC_ENABLE = yes
-QWIIC_DRIVERS += MICRO_OLED
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h
index bcd34b022c..1a337b111f 100644
--- a/keyboards/bpiphany/frosty_flake/config.h
+++ b/keyboards/bpiphany/frosty_flake/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -94,5 +93,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/kitten_paw/config.h b/keyboards/bpiphany/kitten_paw/config.h
index 5aebe080ef..7dbf027699 100644
--- a/keyboards/bpiphany/kitten_paw/config.h
+++ b/keyboards/bpiphany/kitten_paw/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -108,5 +107,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/kitten_paw/kitten_paw.h b/keyboards/bpiphany/kitten_paw/kitten_paw.h
index 38b2a94334..d4a9a16656 100644
--- a/keyboards/bpiphany/kitten_paw/kitten_paw.h
+++ b/keyboards/bpiphany/kitten_paw/kitten_paw.h
@@ -1,8 +1,9 @@
-#ifndef KITTEN_PAW_H
-#define KITTEN_PAW_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
@@ -26,41 +27,37 @@
*/
#define LAYOUT( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
- {KC_NO, KB0, KC0, KD0,KC_NO, KF0, KG0,KC_NO,KC_NO,KC_NO, KK0, KL0,KC_NO,KC_NO, KO0,KC_NO, KQ0, KR0}, \
- { KA1, KB1,KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1,KC_NO,KC_NO,KC_NO,KC_NO, KQ1,KC_NO}, \
- {KC_NO, KB2,KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2,KC_NO, KN2,KC_NO, KP2, KQ2, KR2}, \
- {KC_NO, KB3,KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3,KC_NO, KQ3, KR3}, \
- { KA4, KB4,KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4,KC_NO,KC_NO, KO4,KC_NO, KQ4, KR4}, \
- { KA5,KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5,KC_NO,KC_NO, KO5,KC_NO, KQ5, KR5}, \
- {KC_NO, KB6, KC6,KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6,KC_NO,KC_NO, KO6,KC_NO, KQ6, KR6}, \
- { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7,KC_NO,KC_NO,KC_NO,KC_NO, KO7,KC_NO, KQ7, KR7} \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
#define LAYOUT_fullsize_ansi( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
- {KC_NO, KB0, KC0, KD0,KC_NO, KF0, KG0,KC_NO,KC_NO,KC_NO, KK0, KL0,KC_NO,KC_NO, KO0,KC_NO, KQ0, KR0}, \
- { KA1, KB1,KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1,KC_NO,KC_NO,KC_NO,KC_NO, KQ1,KC_NO}, \
- {KC_NO, KB2,KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2,KC_NO, KN2,KC_NO, KP2, KQ2, KR2}, \
- {KC_NO, KB3,KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3,KC_NO, KQ3, KR3}, \
- { KA4, KB4,KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4,KC_NO,KC_NO, KO4,KC_NO, KQ4, KR4}, \
- { KA5,KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5,KC_NO,KC_NO, KO5,KC_NO, KQ5, KR5}, \
- {KC_NO, KB6, KC6,KC_NO, KE6, KF6, KG6, KH6, KC_NO,KJ6, KK6, KL6,KC_NO,KC_NO, KO6,KC_NO, KQ6, KR6}, \
- { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7,KC_NO,KC_NO,KC_NO,KC_NO, KO7,KC_NO, KQ7, KR7} \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, XXX, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
-
-#endif
diff --git a/keyboards/bpiphany/sixshooter/sixshooter.h b/keyboards/bpiphany/sixshooter/sixshooter.h
index e8fc68f5c9..33ac9335e6 100644
--- a/keyboards/bpiphany/sixshooter/sixshooter.h
+++ b/keyboards/bpiphany/sixshooter/sixshooter.h
@@ -1,15 +1,13 @@
-#ifndef SIXSHOOTER_H
-#define SIXSHOOTER_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02, \
- K03, K04, K05 \
-) \
-{ \
- { K00, K01, K02 }, \
- { K03, K04, K05 } \
+ k00, k01, k02, \
+ k10, k11, k12 \
+) { \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 } \
}
inline void sixshooter_led_0_on(void) { DDRB |= (1<<6); PORTB |= (1<<6); }
@@ -42,5 +40,3 @@ inline void sixshooter_led_all_off(void) {
sixshooter_led_4_off();
sixshooter_led_5_off();
}
-
-#endif
diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h
index bedbd9ea74..54a1c2e7f4 100644
--- a/keyboards/bpiphany/tiger_lily/config.h
+++ b/keyboards/bpiphany/tiger_lily/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -99,5 +98,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/tiger_lily/tiger_lily.h b/keyboards/bpiphany/tiger_lily/tiger_lily.h
index 65e4d91564..b1a872e215 100644
--- a/keyboards/bpiphany/tiger_lily/tiger_lily.h
+++ b/keyboards/bpiphany/tiger_lily/tiger_lily.h
@@ -1,8 +1,9 @@
-#ifndef TIGER_LILY_H
-#define TIGER_LILY_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
@@ -27,45 +28,37 @@
`-------------------------------------------------------------------------' `--------------' `-------------------'
*/
#define LAYOUT( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \
-/* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \
-/* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \
-/* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \
-/* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
#define LAYOUT_fullsize_ansi( \
- KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
- KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
- KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
- KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
- KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
- KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \
-/* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \
-/* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \
-/* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KC_NO, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \
-/* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+) { \
+ { XXX, KB0, KC0, KD0, XXX, KF0, KG0, XXX, XXX, XXX, KK0, KL0, XXX, XXX, KO0, XXX, KQ0, KR0 }, \
+ { KA1, KB1, XXX, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, XXX, XXX, XXX, XXX, KQ1, XXX }, \
+ { XXX, KB2, XXX, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, XXX, KN2, XXX, KP2, KQ2, KR2 }, \
+ { XXX, KB3, XXX, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, KQ3, KR3 }, \
+ { KA4, KB4, XXX, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, XXX, XXX, KO4, XXX, KQ4, KR4 }, \
+ { KA5, XXX, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, XXX, XXX, KO5, XXX, KQ5, KR5 }, \
+ { XXX, KB6, KC6, XXX, KE6, KF6, KG6, KH6, XXX, KJ6, KK6, KL6, XXX, XXX, KO6, XXX, KQ6, KR6 }, \
+ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, XXX, XXX, XXX, XXX, KO7, XXX, KQ7, KR7 } \
}
-
-#endif
diff --git a/keyboards/bpiphany/unloved_bastard/config.h b/keyboards/bpiphany/unloved_bastard/config.h
index ab8f178a9d..a6589be4a1 100644
--- a/keyboards/bpiphany/unloved_bastard/config.h
+++ b/keyboards/bpiphany/unloved_bastard/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -92,5 +91,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/bpiphany/unloved_bastard/unloved_bastard.h b/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
index d444fd0d8a..26fce8749a 100644
--- a/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
+++ b/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
@@ -13,74 +13,65 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef UNLOVED_BASTARD_H
-#define UNLOVED_BASTARD_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_all( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
- KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KC_NO, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, KC_NO, KC_NO, KC_NO }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
-/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
-/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO,KN6, KO6, KC_NO, KQ6, KC_NO }, \
-/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
+ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
+ KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
+ KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
+ KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
+ KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
+ KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
+) { \
+ { XXX, XXX, KC0, XXX, XXX, KF0, XXX, XXX, XXX, KJ0, KK0, XXX, KM0, KN0, KO0, XXX, KQ0, KR0 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, XXX, KO1, KP1, XXX, XXX }, \
+ { XXX, KB2, XXX, XXX, XXX, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, XXX, XXX, XXX }, \
+ { XXX, KB3, XXX, XXX, XXX, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, XXX, XXX }, \
+ { XXX, XXX, KC4, XXX, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, XXX, KO4, KP4, KQ4, KR4 }, \
+ { XXX, XXX, KC5, XXX, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, XXX, XXX }, \
+ { XXX, XXX, KC6, XXX, XXX, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, KN6, KO6, XXX, KQ6, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, XXX, KP7, XXX, XXX } \
}
#define LAYOUT_tkl_ansi( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
- KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KC_NO, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, KC_NO, KC_NO, KC_NO }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
-/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
-/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO,KN6, KO6, KC_NO, KQ6, KC_NO }, \
-/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
+ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
+ KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
+ KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
+ KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
+ KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
+ KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
+) { \
+ { XXX, XXX, KC0, XXX, XXX, KF0, XXX, XXX, XXX, KJ0, KK0, XXX, KM0, KN0, KO0, XXX, KQ0, KR0 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, XXX, KO1, KP1, XXX, XXX }, \
+ { XXX, KB2, XXX, XXX, XXX, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, XXX, XXX, XXX }, \
+ { XXX, KB3, XXX, XXX, XXX, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, XXX, XXX }, \
+ { XXX, XXX, KC4, XXX, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, XXX, KO4, KP4, KQ4, KR4 }, \
+ { XXX, XXX, KC5, XXX, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, XXX, XXX }, \
+ { XXX, XXX, KC6, XXX, XXX, KF6, KG6, XXX, KI6, KJ6, KK6, KL6, XXX, KN6, KO6, XXX, KQ6, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, XXX, KP7, XXX, XXX } \
}
#define LAYOUT_tkl_iso( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO3, KO1, \
- KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/* A B C D E F G H I J K L M N O P Q R */ \
-/* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
-/* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
-/* 2 */ { KC_NO, KB2, KC_NO, KC_NO, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, KC_NO, KC_NO, KC_NO }, \
-/* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
-/* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
-/* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO,KN6, KO6, KC_NO, KQ6, KC_NO }, \
-/* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
+ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
+ KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
+ KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KQ4, KC5, KE5, \
+ KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO3, KO1, \
+ KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
+ KP4, KN2, KN6, KQ6, KN0, KN3, KM0, KP1, KC0, KQ0, KR0 \
+) { \
+ { XXX, XXX, KC0, XXX, XXX, KF0, XXX, XXX, XXX, KJ0, KK0, XXX, KM0, KN0, KO0, XXX, KQ0, KR0 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, XXX, KO1, KP1, XXX, XXX }, \
+ { XXX, KB2, XXX, XXX, XXX, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KN2, KO2, XXX, XXX, XXX }, \
+ { XXX, KB3, XXX, XXX, XXX, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, XXX, XXX, XXX }, \
+ { XXX, XXX, KC4, XXX, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, XXX, KO4, KP4, KQ4, KR4 }, \
+ { XXX, XXX, KC5, XXX, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, XXX, XXX }, \
+ { XXX, XXX, KC6, XXX, XXX, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, XXX, KN6, KO6, XXX, KQ6, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, XXX, KP7, XXX, XXX } \
}
#define LAYOUT LAYOUT_all
-
-#endif
diff --git a/keyboards/bthlabs/geekpad/geekpad.h b/keyboards/bthlabs/geekpad/geekpad.h
index c9f1ac9d4f..4dc6800fe5 100644
--- a/keyboards/bthlabs/geekpad/geekpad.h
+++ b/keyboards/bthlabs/geekpad/geekpad.h
@@ -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/>.
*/
-#ifndef GEEKPAD_H
-#define GEEKPAD_H
+
+#pragma once
#include "quantum.h"
@@ -27,14 +27,11 @@
* represents the switch matrix.
*/
#define LAYOUT( \
- K00, K01, K02, \
- K10, K11, K12, \
- K20, K21, K22 \
-) \
-{ \
- { K00, K01, K02 }, \
- { K10, K11, K12 }, \
- { K20, K21, K22 } \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22 \
+) { \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 }, \
+ { k20, k21, k22 } \
}
-
-#endif
diff --git a/keyboards/c39/keymaps/drashna/rules.mk b/keyboards/c39/keymaps/drashna/rules.mk
index c05f6a4be4..0e5a4cbebd 100644
--- a/keyboards/c39/keymaps/drashna/rules.mk
+++ b/keyboards/c39/keymaps/drashna/rules.mk
@@ -13,6 +13,7 @@ COMMAND_ENABLE = yes
NKRO_ENABLE = yes
AUDIO_ENABLE = yes
UNICODE_ENABLE = yes
-HAPTIC_ENABLE = SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
RGBLIGHT_STARTUP_ANIMATION = yes
diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h
index e100cc99b1..53e4c18e5e 100644
--- a/keyboards/cannonkeys/satisfaction75/config.h
+++ b/keyboards/cannonkeys/satisfaction75/config.h
@@ -53,9 +53,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// I2C config
#define I2C_DRIVER I2CD1
-#define I2C1_SCL_BANK GPIOB
-#define I2C1_SCL 6
-#define I2C1_SDA 7
+#define I2C1_SCL_PIN B6
+#define I2C1_SDA_PIN B7
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
#define I2C1_TIMINGR_PRESC 0x00U
@@ -72,14 +71,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#ifdef QWIIC_MICRO_OLED_ENABLE
+// configure oled driver for the 128x32 oled
+#define OLED_UPDATE_INTERVAL 66 // ~15fps
-#undef I2C_ADDRESS_SA0_1
-#define I2C_ADDRESS_SA0_1 0b0111100
-#define LCDWIDTH 128
-#define LCDHEIGHT 32
+// OLED_TIMEOUT is incompatible with the OLED_OFF mode
+#define OLED_TIMEOUT 0
-#endif
+// OLED timeout reimplemented in the keyboard-specific code
+#define CUSTOM_OLED_TIMEOUT 60000
// Custom config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk
index 3f0f8cda7c..51f1dc52f5 100644
--- a/keyboards/cannonkeys/satisfaction75/rules.mk
+++ b/keyboards/cannonkeys/satisfaction75/rules.mk
@@ -23,10 +23,9 @@ CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
ENCODER_ENABLE = yes
-QWIIC_ENABLE = yes
-QWIIC_DRIVERS += MICRO_OLED
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
#BACKLIGHT_ENABLE = yes
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
index 682805f321..8b5016437c 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
@@ -5,11 +5,6 @@
#include <ch.h>
#include <hal.h>
-#ifdef QWIIC_MICRO_OLED_ENABLE
-#include "micro_oled.h"
-#include "qwiic.h"
-#endif
-
#include "timer.h"
#include "raw_hid.h"
@@ -20,18 +15,17 @@
/* Artificial delay added to get media keys to work in the encoder*/
#define MEDIA_KEY_DELAY 10
-uint16_t last_flush;
-
volatile uint8_t led_numlock = false;
volatile uint8_t led_capslock = false;
volatile uint8_t led_scrolllock = false;
uint8_t layer;
-bool queue_for_send = false;
bool clock_set_mode = false;
uint8_t oled_mode = OLED_DEFAULT;
-bool oled_sleeping = false;
+bool oled_repaint_requested = false;
+bool oled_wakeup_requested = false;
+uint32_t oled_sleep_timer;
uint8_t encoder_value = 32;
uint8_t encoder_mode = ENC_MODE_VOLUME;
@@ -167,7 +161,7 @@ void raw_hid_receive_kb( uint8_t *data, uint8_t length )
case id_oled_mode:
{
oled_mode = command_data[1];
- draw_ui();
+ oled_request_wakeup();
break;
}
case id_encoder_modes:
@@ -247,18 +241,17 @@ void read_host_led_state(void) {
layer_state_t layer_state_set_kb(layer_state_t state) {
state = layer_state_set_user(state);
layer = biton32(state);
- queue_for_send = true;
+ oled_request_wakeup();
return state;
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- queue_for_send = true;
+ oled_request_wakeup();
switch (keycode) {
case OLED_TOGG:
if(!clock_set_mode){
if (record->event.pressed) {
oled_mode = (oled_mode + 1) % _NUM_OLED_MODES;
- draw_ui();
}
}
return false;
@@ -302,8 +295,8 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
+ oled_request_wakeup();
encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
- queue_for_send = true;
if (index == 0) {
if (layer == 0){
uint16_t mapped_code = 0;
@@ -376,9 +369,9 @@ void matrix_init_kb(void)
#endif // VIA_ENABLE
rtcGetTime(&RTCD1, &last_timespec);
- queue_for_send = true;
backlight_init_ports();
matrix_init_user();
+ oled_request_wakeup();
}
@@ -388,22 +381,8 @@ void housekeeping_task_kb(void) {
if (minutes_since_midnight != last_minute){
last_minute = minutes_since_midnight;
- if(!oled_sleeping){
- queue_for_send = true;
- }
+ oled_request_repaint();
}
-#ifdef QWIIC_MICRO_OLED_ENABLE
- if (queue_for_send && oled_mode != OLED_OFF) {
- oled_sleeping = false;
- read_host_led_state();
- draw_ui();
- queue_for_send = false;
- }
- if (timer_elapsed(last_flush) > ScreenOffInterval && !oled_sleeping) {
- send_command(DISPLAYOFF); /* 0xAE */
- oled_sleeping = true;
- }
-#endif
}
//
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.h b/keyboards/cannonkeys/satisfaction75/satisfaction75.h
index 13aaf68882..c6dbc31f1b 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.h
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.h
@@ -14,9 +14,6 @@
#define EEPROM_DEFAULT_OLED (VIA_EEPROM_CUSTOM_CONFIG_ADDR+2)
#define EEPROM_CUSTOM_ENCODER (VIA_EEPROM_CUSTOM_CONFIG_ADDR+3)
-/* screen off after this many milliseconds */
-#define ScreenOffInterval 60000 /* milliseconds */
-
typedef union {
uint8_t raw;
struct {
@@ -74,10 +71,10 @@ extern volatile uint8_t led_scrolllock;
extern uint8_t layer;
// OLED Behavior
-extern uint16_t last_flush;
-extern bool queue_for_send;
extern uint8_t oled_mode;
-extern bool oled_sleeping;
+extern bool oled_repaint_requested;
+extern bool oled_wakeup_requested;
+extern uint32_t oled_sleep_timer;
// Encoder Behavior
extern uint8_t encoder_value;
@@ -113,10 +110,9 @@ void set_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior, uint16_t n
void update_time_config(int8_t increment);
-__attribute__ ((weak))
-void draw_ui(void);
-void draw_default(void);
-void draw_clock(void);
+void oled_request_wakeup(void);
+void oled_request_repaint(void);
+bool oled_task_needs_to_repaint(void);
void backlight_init_ports(void);
void backlight_set(uint8_t level);
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c
index 8fcd720e2f..cefdbc5f9c 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c
@@ -125,7 +125,6 @@ uint16_t handle_encoder_clockwise(){
#endif
case ENC_MODE_CLOCK_SET:
update_time_config(1);
- queue_for_send = true;
break;
}
return mapped_code;
@@ -171,7 +170,6 @@ uint16_t handle_encoder_ccw(){
case ENC_MODE_CLOCK_SET:
update_time_config(-1);
- queue_for_send = true;
break;
}
return mapped_code;
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
index 6553bd1300..443482eace 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
@@ -1,271 +1,265 @@
#include "satisfaction75.h"
-#include "micro_oled.h"
-
-__attribute__ ((weak))
-void draw_ui() {
-#ifdef QWIIC_MICRO_OLED_ENABLE
- clear_buffer();
- last_flush = timer_read();
- send_command(DISPLAYON);
- if(clock_set_mode){
- draw_clock();
- return;
- }
- switch (oled_mode){
- default:
- case OLED_DEFAULT:
- draw_default();
- break;
- case OLED_TIME:
- draw_clock();
- break;
- case OLED_OFF:
- send_command(DISPLAYOFF);
- break;
- }
-#endif
+
+void draw_default(void);
+void draw_clock(void);
+
+#ifdef OLED_ENABLE
+
+__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; }
+
+__attribute__((weak)) void oled_task_user(void) {
+ if (!oled_task_needs_to_repaint()) {
+ return;
+ }
+ oled_clear();
+ if (clock_set_mode) {
+ draw_clock();
+ return;
+ }
+ switch (oled_mode) {
+ default:
+ case OLED_DEFAULT:
+ draw_default();
+ break;
+ case OLED_TIME:
+ draw_clock();
+ break;
+ }
}
-void draw_encoder(int8_t startX, int8_t startY, bool show_legend){
- if(show_legend){
- draw_string(startX + 1, startY + 2, "ENC", PIXEL_ON, NORM, 0);
- } else {
- startX -= 22;
- }
- draw_rect_filled_soft(startX + 22, startY + 1, 3 + (3 * 6), 9, PIXEL_ON, NORM);
- char* mode_string = "";
- switch(encoder_mode){
- default:
- case ENC_MODE_VOLUME:
- mode_string = "VOL";
- break;
- case ENC_MODE_MEDIA:
- mode_string = "MED";
- break;
- case ENC_MODE_SCROLL:
- mode_string = "SCR";
- break;
- case ENC_MODE_BRIGHTNESS:
- mode_string = "BRT";
- break;
- case ENC_MODE_BACKLIGHT:
- mode_string = "BKL";
- break;
- case ENC_MODE_CLOCK_SET:
- mode_string = "CLK";
- break;
- case ENC_MODE_CUSTOM0:
- mode_string = "CS0";
- break;
- case ENC_MODE_CUSTOM1:
- mode_string = "CS1";
- break;
- case ENC_MODE_CUSTOM2:
- mode_string = "CS2";
- break;
- }
- draw_string(startX + 24, startY + 2, mode_string, PIXEL_ON, XOR, 0);
+// Request a repaint of the OLED image without resetting the OLED sleep timer.
+// Used for things like clock updates that should not keep the OLED turned on
+// if there is no other activity.
+void oled_request_repaint(void) {
+ if (is_oled_on()) {
+ oled_repaint_requested = true;
+ }
}
-void draw_layer_section(int8_t startX, int8_t startY, bool show_legend){
- if(show_legend){
- draw_string(startX + 1, startY + 2, "LAYER", PIXEL_ON, NORM, 0);
- } else {
- startX -= 32;
- }
- draw_rect_filled_soft(startX + 32, startY + 1, 9, 9, PIXEL_ON, NORM);
- draw_char(startX + 34, startY + 2, layer + 0x30, PIXEL_ON, XOR, 0);
+// Request a repaint of the OLED image and reset the OLED sleep timer.
+// Needs to be called after any activity that should keep the OLED turned on.
+void oled_request_wakeup(void) {
+ oled_wakeup_requested = true;
}
-void draw_default(){
- uint8_t hour = last_minute / 60;
- uint16_t minute = last_minute % 60;
+// Check whether oled_task_user() needs to repaint the OLED image. This
+// function should be called at the start of oled_task_user(); it also handles
+// the OLED sleep timer and the OLED_OFF mode.
+bool oled_task_needs_to_repaint(void) {
+ // In the OLED_OFF mode the OLED is kept turned off; any wakeup requests
+ // are ignored.
+ if ((oled_mode == OLED_OFF) && !clock_set_mode) {
+ oled_wakeup_requested = false;
+ oled_repaint_requested = false;
+ oled_off();
+ return false;
+ }
- if(encoder_mode == ENC_MODE_CLOCK_SET){
- hour = hour_config;
- minute = minute_config;
- }
+ // If OLED wakeup was requested, reset the sleep timer and do a repaint.
+ if (oled_wakeup_requested) {
+ oled_wakeup_requested = false;
+ oled_repaint_requested = false;
+ oled_sleep_timer = timer_read32() + CUSTOM_OLED_TIMEOUT;
+ oled_on();
+ return true;
+ }
- bool is_pm = (hour / 12) > 0;
- hour = hour % 12;
- if (hour == 0){
- hour = 12;
- }
- char hour_str[3] = "";
- char min_str[3] = "";
+ // If OLED repaint was requested, just do a repaint without touching the
+ // sleep timer.
+ if (oled_repaint_requested) {
+ oled_repaint_requested = false;
+ return true;
+ }
- sprintf(hour_str, "%02d", hour);
- sprintf(min_str, "%02d", minute);
+ // If the OLED is currently off, skip the repaint (which would turn the
+ // OLED on if the image is changed in any way).
+ if (!is_oled_on()) {
+ return false;
+ }
- uint8_t mods = get_mods();
+ // If the sleep timer has expired while the OLED was on, turn the OLED off.
+ if (timer_expired32(timer_read32(), oled_sleep_timer)) {
+ oled_off();
+ return false;
+ }
-/* Layer indicator is 41 x 10 pixels */
- draw_layer_section(0,0,true);
+ // Always perform a repaint if the OLED is currently on. (This can
+ // potentially be optimized to avoid unneeded repaints if all possible
+ // state changes are covered by oled_request_repaint() or
+ // oled_request_wakeup(), but then any missed calls to these functions
+ // would result in displaying a stale image.)
+ return true;
+}
-#define ENCODER_INDICATOR_X 45
-#define ENCODER_INDICATOR_Y 0
- draw_encoder(ENCODER_INDICATOR_X, ENCODER_INDICATOR_Y, true);
-/* Matrix display is 19 x 9 pixels */
-#define MATRIX_DISPLAY_X 0
-#define MATRIX_DISPLAY_Y 18
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- for (uint8_t y = 0; y < MATRIX_COLS; y++) {
- draw_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
+static void draw_line_h(uint8_t x, uint8_t y, uint8_t len) {
+ for (uint8_t i = 0; i < len; i++) {
+ oled_write_pixel(i + x, y, true);
}
- }
- draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 19, 9, PIXEL_ON, NORM);
- /* hadron oled location on thumbnail */
- draw_rect_filled_soft(MATRIX_DISPLAY_X + 14, MATRIX_DISPLAY_Y + 2, 3, 1, PIXEL_ON, NORM);
-
-/* Mod display is 41 x 16 pixels */
-#define MOD_DISPLAY_X 30
-#define MOD_DISPLAY_Y 18
-
- if (mods & MOD_LSFT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LCTL) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LALT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LGUI) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0);
- }
-
-/* Lock display is 23 x 21 */
-#define LOCK_DISPLAY_X 100
-#define LOCK_DISPLAY_Y 0
-
- if (led_capslock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y +1, "CAP", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y +1, "CAP", PIXEL_ON, NORM, 0);
- }
-
- if (led_scrolllock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "SCR", PIXEL_OFF, NORM, 0);
- } else if (led_scrolllock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "SCR", PIXEL_ON, NORM, 0);
- }
-
-#define TIME_DISPLAY_X 82
-#define TIME_DISPLAY_Y 22
- draw_string(TIME_DISPLAY_X, TIME_DISPLAY_Y, hour_str, PIXEL_ON, NORM, 0);
- draw_string(TIME_DISPLAY_X + 11, TIME_DISPLAY_Y, ":", PIXEL_ON, NORM, 0);
- draw_string(TIME_DISPLAY_X + 15, TIME_DISPLAY_Y, min_str, PIXEL_ON, NORM, 0);
- if(is_pm){
- draw_string(TIME_DISPLAY_X + 27, TIME_DISPLAY_Y, "pm", PIXEL_ON, NORM, 0);
- } else{
- draw_string(TIME_DISPLAY_X + 27, TIME_DISPLAY_Y, "am", PIXEL_ON, NORM, 0);
- }
-
- send_buffer();
}
-void draw_clock(){
- int8_t hour = last_minute / 60;
- int16_t minute = last_minute % 60;
- int16_t year = last_timespec.year + 1980;
- int8_t month = last_timespec.month;
- int8_t day = last_timespec.day;
-
- if(encoder_mode == ENC_MODE_CLOCK_SET){
- hour = hour_config;
- minute = minute_config;
- year = year_config + 1980;
- month = month_config;
- day = day_config;
- }
-
- bool is_pm = (hour / 12) > 0;
- hour = hour % 12;
- if (hour == 0){
- hour = 12;
- }
- char hour_str[3] = "";
- char min_str[3] = "";
- char year_str[5] = "";
- char month_str[3] = "";
- char day_str[3] = "";
-
- sprintf(hour_str, "%02d", hour);
- sprintf(min_str, "%02d", minute);
- sprintf(year_str, "%d", year);
- sprintf(month_str, "%02d", month);
- sprintf(day_str, "%02d", day);
-
-
-#define DATE_DISPLAY_X 6
-#define DATE_DISPLAY_Y 0
- draw_string(DATE_DISPLAY_X, DATE_DISPLAY_Y, year_str, PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 25, DATE_DISPLAY_Y, "-", PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 31, DATE_DISPLAY_Y, month_str, PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 44, DATE_DISPLAY_Y, "-", PIXEL_ON, NORM, 0);
- draw_string(DATE_DISPLAY_X + 50, DATE_DISPLAY_Y, day_str, PIXEL_ON, NORM, 0);
-
-#define CLOCK_DISPLAY_X 6
-#define CLOCK_DISPLAY_Y 14
- draw_string(CLOCK_DISPLAY_X, CLOCK_DISPLAY_Y, hour_str, PIXEL_ON, NORM, 1);
- draw_string(CLOCK_DISPLAY_X + 17, CLOCK_DISPLAY_Y, ":", PIXEL_ON, NORM, 1);
- draw_string(CLOCK_DISPLAY_X + 25, CLOCK_DISPLAY_Y, min_str, PIXEL_ON, NORM, 1);
- if(is_pm){
- draw_string(CLOCK_DISPLAY_X + 41, CLOCK_DISPLAY_Y, "pm", PIXEL_ON, NORM, 1);
- } else{
- draw_string(CLOCK_DISPLAY_X + 41, CLOCK_DISPLAY_Y, "am", PIXEL_ON, NORM, 1);
- }
-
- if(clock_set_mode){
- switch(time_config_idx){
- case 0: // hour
- default:
- draw_line(CLOCK_DISPLAY_X, CLOCK_DISPLAY_Y + 17, CLOCK_DISPLAY_X + 16, CLOCK_DISPLAY_Y + 17, PIXEL_ON, NORM);
- break;
- case 1: // minute
- draw_line(CLOCK_DISPLAY_X + 25, CLOCK_DISPLAY_Y + 17, CLOCK_DISPLAY_X + 41, CLOCK_DISPLAY_Y + 17, PIXEL_ON, NORM);
- break;
- case 2: // year
- draw_line(DATE_DISPLAY_X, DATE_DISPLAY_Y + 9, DATE_DISPLAY_X + 23, DATE_DISPLAY_Y + 9, PIXEL_ON, NORM);
- break;
- case 3: // month
- draw_line(DATE_DISPLAY_X + 31, DATE_DISPLAY_Y + 9, DATE_DISPLAY_X + 43, DATE_DISPLAY_Y + 9, PIXEL_ON, NORM);
- break;
- case 4: //day
- draw_line(DATE_DISPLAY_X + 50, DATE_DISPLAY_Y + 9, DATE_DISPLAY_X + 61, DATE_DISPLAY_Y + 9,PIXEL_ON, NORM);
- break;
+static void draw_line_v(uint8_t x, uint8_t y, uint8_t len) {
+ for (uint8_t i = 0; i < len; i++) {
+ oled_write_pixel(x, i + y, true);
}
- }
+}
- draw_encoder(80, 0, true);
- draw_layer_section(80, 11, true);
+static char* get_enc_mode(void) {
+ switch (encoder_mode) {
+ default:
+ case ENC_MODE_VOLUME:
+ return "VOL";
+ case ENC_MODE_MEDIA:
+ return "MED";
+ case ENC_MODE_SCROLL:
+ return "SCR";
+ case ENC_MODE_BRIGHTNESS:
+ return "BRT";
+ case ENC_MODE_BACKLIGHT:
+ return "BKL";
+ case ENC_MODE_CLOCK_SET:
+ return "CLK";
+ case ENC_MODE_CUSTOM0:
+ return "CS0";
+ case ENC_MODE_CUSTOM1:
+ return "CS1";
+ case ENC_MODE_CUSTOM2:
+ return "CS2";
+ }
+}
-#define CAPS_DISPLAY_X 86
-#define CAPS_DISPLAY_Y 22
+static char* get_time(void) {
+ uint8_t hour = last_minute / 60;
+ uint16_t minute = last_minute % 60;
- if (led_capslock == true) {
- draw_rect_filled_soft(CAPS_DISPLAY_X, CAPS_DISPLAY_Y, 5 + (4 * 6), 9, PIXEL_ON, NORM);
- draw_string(CAPS_DISPLAY_X + 3, CAPS_DISPLAY_Y +1, "CAPS", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(CAPS_DISPLAY_X + 3, CAPS_DISPLAY_Y +1, "CAPS", PIXEL_ON, NORM, 0);
- }
+ if (encoder_mode == ENC_MODE_CLOCK_SET) {
+ hour = hour_config;
+ minute = minute_config;
+ }
+ bool is_pm = (hour / 12) > 0;
+ hour = hour % 12;
+ if (hour == 0) {
+ hour = 12;
+ }
- send_buffer();
+ static char time_str[8] = "";
+ sprintf(time_str, "%02d:%02d%s", hour, minute, is_pm ? "pm" : "am");
+ return time_str;
}
+
+static char* get_date(void) {
+ int16_t year = last_timespec.year + 1980;
+ int8_t month = last_timespec.month;
+ int8_t day = last_timespec.day;
+
+ if (encoder_mode == ENC_MODE_CLOCK_SET) {
+ year = year_config + 1980;
+ month = month_config;
+ day = day_config;
+ }
+
+ static char date_str[11] = "";
+ sprintf(date_str, "%04d-%02d-%02d", year, month, day);
+
+ return date_str;
+}
+
+void draw_default() {
+ oled_write_P(PSTR("LAYER "), false);
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ oled_write_P(PSTR(" ENC "), false);
+ oled_write(get_enc_mode(), true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(18, 0);
+ oled_write_P(PSTR("CAP"), led_state.caps_lock);
+ oled_set_cursor(18, 1);
+ oled_write_P(PSTR("SCR"), led_state.scroll_lock);
+
+ uint8_t mod_state = get_mods();
+ oled_set_cursor(6, 3);
+ oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT);
+ oled_advance_char();
+ oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL);
+ oled_advance_char();
+ oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT);
+ oled_advance_char();
+ oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI);
+ oled_advance_char();
+
+ oled_write(get_time(), false);
+
+/* Matrix display is 12 x 12 pixels */
+#define MATRIX_DISPLAY_X 0
+#define MATRIX_DISPLAY_Y 18
+
+ // matrix
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ bool on = (matrix_get_row(x) & (1 << y)) > 0;
+ oled_write_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2, on);
+ }
+ }
+
+ // outline
+ draw_line_h(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 19);
+ draw_line_h(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y + 9, 19);
+ draw_line_v(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 9);
+ draw_line_v(MATRIX_DISPLAY_X + 19, MATRIX_DISPLAY_Y, 9);
+
+ // oled location
+ draw_line_h(MATRIX_DISPLAY_X + 14, MATRIX_DISPLAY_Y + 2, 3);
+
+ // bodge extra lines for invert layer and enc mode
+ draw_line_v(35, 0, 8);
+ draw_line_v(71, 0, 8);
+}
+
+void draw_clock() {
+ oled_set_cursor(0, 0);
+ oled_write(get_date(), false);
+ oled_set_cursor(0, 2);
+ oled_write(get_time(), false);
+
+ oled_set_cursor(12, 0);
+ oled_write_P(PSTR(" ENC "), false);
+ oled_write(get_enc_mode(), true);
+
+ oled_set_cursor(13, 1);
+ oled_write_P(PSTR("LAYER "), false);
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(15, 3);
+ oled_write_P(PSTR("CAPS"), led_state.caps_lock);
+
+ if (clock_set_mode) {
+ switch (time_config_idx) {
+ case 0: // hour
+ default:
+ draw_line_h(0, 25, 10);
+ break;
+ case 1: // minute
+ draw_line_h(18, 25, 10);
+ break;
+ case 2: // year
+ draw_line_h(0, 9, 24);
+ break;
+ case 3: // month
+ draw_line_h(30, 9, 10);
+ break;
+ case 4: // day
+ draw_line_h(48, 9, 10);
+ break;
+ }
+ }
+
+ // bodge extra lines for invert layer and enc mode
+ draw_line_v(101, 0, 8);
+ draw_line_v(113, 8, 8);
+}
+
+#endif
diff --git a/keyboards/chimera_ergo/chimera_ergo.h b/keyboards/chimera_ergo/chimera_ergo.h
index 32d02886c4..b8897ac14e 100644
--- a/keyboards/chimera_ergo/chimera_ergo.h
+++ b/keyboards/chimera_ergo/chimera_ergo.h
@@ -1,5 +1,4 @@
-#ifndef CHIMERA_ERGO_H
-#define CHIMERA_ERGO_H
+#pragma once
#include "quantum.h"
@@ -43,22 +42,21 @@
#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
*/
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \
- k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \
- k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, \
- k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, \
- k48, k49, k50, k51 \
-) \
-{ \
- { KC_NO, KC_NO, k26, k15, k28, k01, k42, k31, k20, k33, KC_NO, KC_NO }, \
- { k00, KC_NO, k14, k27, k16, k36, k47, k19, k32, k21, KC_NO, k11 }, \
- { k12, k25, k02, k39, k17, k49, k50, k18, k44, k09, k34, k23 }, \
- { k24, k13, k38, k04, k05, k48, k51, k06, k07, k45, k22, k35 }, \
- { k29, k41, k03, k40, k37, KC_NO, k30, k43, k08, k10, k46, KC_NO }, \
+ k10, k05, k22, k42, k33, k34, k37, k38, k48, k29, k49, k1B, \
+ k20, k31, k12, k03, k14, k24, k27, k17, k08, k19, k3A, k2B, \
+ k30, k21, k02, k13, k04, k40, k46, k07, k18, k09, k2A, k3B, \
+ k15, k44, k32, k23, k43, k41, k06, k47, k28, k39, k4A, k16, \
+ k35, k25, k26, k36 \
+) { \
+ { XXX, XXX, k02, k03, k04, k05, k06, k07, k08, k09, XXX, XXX }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
+ { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4A, XXX } \
}
-
-#endif
diff --git a/keyboards/chimera_ergo/config.h b/keyboards/chimera_ergo/config.h
index 4021cdcd50..0767a218b5 100644
--- a/keyboards/chimera_ergo/config.h
+++ b/keyboards/chimera_ergo/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/chimera_ls/chimera_ls.h b/keyboards/chimera_ls/chimera_ls.h
index 45c91acc3d..7d67d573db 100644
--- a/keyboards/chimera_ls/chimera_ls.h
+++ b/keyboards/chimera_ls/chimera_ls.h
@@ -1,5 +1,4 @@
-#ifndef CHIMERA_LETS_SPLIT_H
-#define CHIMERA_LETS_SPLIT_H
+#pragma once
#include "quantum.h"
@@ -43,22 +42,21 @@
#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
*/
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT_ortho_4x12( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \
- k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \
- k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, \
- k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 \
- ) { \
- { k43, k45, k34, k11, k23, k40, k38, k25, k00, k12 }, \
- { k31, k44, k46, k35, k22, k28, k39, k37, k24, k13 }, \
- { k30, k32, k33, k47, k09, k29, k27, k26, k36, k02 }, \
- { k19, k20, k21, k42, k18, k16, k15, k14, k41, k17 }, \
- { k06, k07, k08, k10, KC_NO, k05, k04, k03, k01, KC_NO } \
+ k08, k48, k29, k47, k46, k45, k40, k41, k42, k24, k43, k03, \
+ k09, k19, k37, k36, k35, k39, k34, k30, k31, k32, k14, k04, \
+ k18, k07, k27, k26, k15, k25, k20, k10, k21, k22, k02, k13, \
+ k28, k17, k06, k16, k05, k38, k33, k00, k11, k01, k12, k23 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
+ { k40, k41, k42, k43, XXX, k45, k46, k47, k48, XXX } \
}
-
-
-#endif
diff --git a/keyboards/chimera_ls/config.h b/keyboards/chimera_ls/config.h
index d9c14a3fce..2eb028471d 100644
--- a/keyboards/chimera_ls/config.h
+++ b/keyboards/chimera_ls/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/chimera_ortho/chimera_ortho.h b/keyboards/chimera_ortho/chimera_ortho.h
index ec893990a3..03384c9b28 100644
--- a/keyboards/chimera_ortho/chimera_ortho.h
+++ b/keyboards/chimera_ortho/chimera_ortho.h
@@ -1,5 +1,4 @@
-#ifndef CHIMERA_ORTHO_H
-#define CHIMERA_ORTHO_H
+#pragma once
#include "quantum.h"
@@ -43,21 +42,20 @@
#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
*/
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
- k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, \
- k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42, k43, k44, \
- k45, k46, k47, k48 \
-) \
-{ \
- { k01, k02, k03, k04, k05, k08, k09, k10, k11, k12 }, \
- { k15, k16, k17, k18, k19, k22, k23, k24, k25, k26 }, \
- { k29, k31, k32, k33, k34, k37, k38, k41, k42, k43 }, \
- { KC_NO, k06, k20, k35, k46, k47, k36, k21, k07, KC_NO }, \
- { KC_NO, k28, k14, k00, k45, k48, k13, k27, k44, KC_NO } \
+ k43, k00, k01, k02, k03, k04, k31, k38, k05, k06, k07, k08, k09, k46, \
+ k42, k10, k11, k12, k13, k14, k32, k37, k15, k16, k17, k18, k19, k47, \
+ k41, k20, k21, k22, k23, k24, k33, k36, k25, k26, k27, k28, k29, k48, \
+ k44, k34, k35, k45 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37, k38, XXX }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, k48, XXX } \
}
-
-#endif
diff --git a/keyboards/chimera_ortho/config.h b/keyboards/chimera_ortho/config.h
index b103589879..974502525c 100644
--- a/keyboards/chimera_ortho/config.h
+++ b/keyboards/chimera_ortho/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/christmas_tree/V2017/V2017.h b/keyboards/christmas_tree/V2017/V2017.h
index a82a1e82f4..f779c0ed47 100644
--- a/keyboards/christmas_tree/V2017/V2017.h
+++ b/keyboards/christmas_tree/V2017/V2017.h
@@ -1,6 +1,3 @@
-#ifndef V2017_H
-#define V2017_H
+#pragma once
#include "christmas_tree.h"
-
-#endif \ No newline at end of file
diff --git a/keyboards/christmas_tree/V2017/config.h b/keyboards/christmas_tree/V2017/config.h
index ebe3d3bf1e..abc94749a8 100644
--- a/keyboards/christmas_tree/V2017/config.h
+++ b/keyboards/christmas_tree/V2017/config.h
@@ -1,8 +1,5 @@
-#ifndef V2017_CONFIG_H
-#define V2017_CONFIG_H
+#pragma once
#include "config_common.h"
#define DEVICE_VER 0x2017
-
-#endif \ No newline at end of file
diff --git a/keyboards/christmas_tree/christmas_tree.h b/keyboards/christmas_tree/christmas_tree.h
index 11063c9152..68eefca6a8 100644
--- a/keyboards/christmas_tree/christmas_tree.h
+++ b/keyboards/christmas_tree/christmas_tree.h
@@ -1,20 +1,14 @@
-#ifndef CHRISTMAS_TREE_H
-#define CHRISTMAS_TREE_H
-#include "quantum.h"
+#pragma once
+#include "quantum.h"
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05 \
-) \
-{ \
- { k00 }, \
- { k01 }, \
- { k02 }, \
- { k03 }, \
- { k04 }, \
- { k05 } \
+ k00, k10, k20, k30, k40, k50 \
+) { \
+ { k00 }, \
+ { k10 }, \
+ { k20 }, \
+ { k30 }, \
+ { k40 }, \
+ { k50 } \
}
-
-
-
-#endif
diff --git a/keyboards/christmas_tree/config.h b/keyboards/christmas_tree/config.h
index 05e5bdb2b4..531c5996d2 100644
--- a/keyboards/christmas_tree/config.h
+++ b/keyboards/christmas_tree/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -53,5 +52,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#endif
diff --git a/keyboards/ckeys/nakey/config.h b/keyboards/ckeys/nakey/config.h
index 728eb8f132..26ba86e146 100644
--- a/keyboards/ckeys/nakey/config.h
+++ b/keyboards/ckeys/nakey/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -108,5 +107,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/ckeys/nakey/nakey.h b/keyboards/ckeys/nakey/nakey.h
index bbf531fb68..bdb26afa26 100644
--- a/keyboards/ckeys/nakey/nakey.h
+++ b/keyboards/ckeys/nakey/nakey.h
@@ -13,27 +13,27 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef NAKEY_H
-#define NAKEY_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_numpad_5x4( \
k00, k01, k02, k03, \
- k10, k11, k12, \
+ k10, k11, k12, \
k20, k21, k22, k13, \
- k30, k31, k32, \
- k40, k41, k33 \
+ k30, k31, k32, \
+ k40, k41, k33 \
) { \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, KC_NO }, \
- { k30, k31, k32, k33 }, \
- { k40, KC_NO, k41, KC_NO }, \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, XXX }, \
+ { k30, k31, k32, k33 }, \
+ { k40, XXX, k41, XXX } \
}
-
-#endif
diff --git a/keyboards/ckeys/obelus/config.h b/keyboards/ckeys/obelus/config.h
index 45bbd27ecc..00e224c206 100644
--- a/keyboards/ckeys/obelus/config.h
+++ b/keyboards/ckeys/obelus/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -109,5 +108,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define AUDIO_PIN C6
#define STARTUP_SONG SONG(STARTUP_SOUND)
#endif
-
-#endif
diff --git a/keyboards/ckeys/obelus/obelus.h b/keyboards/ckeys/obelus/obelus.h
index 371b79df20..76ff4f1a9f 100644
--- a/keyboards/ckeys/obelus/obelus.h
+++ b/keyboards/ckeys/obelus/obelus.h
@@ -1,5 +1,4 @@
-#ifndef OBELUS_H
-#define OBELUS_H
+#pragma once
#include "quantum.h"
@@ -12,12 +11,9 @@
k10, k11, k12, k13, \
k20, k21, k22, k23, \
k30, k31, k32, k33 \
-) \
-{ \
+) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, k23 }, \
{ k30, k31, k32, k33 } \
}
-
-#endif
diff --git a/keyboards/clueboard/17/17.h b/keyboards/clueboard/17/17.h
index ebf2083862..ef5b3f3e04 100644
--- a/keyboards/clueboard/17/17.h
+++ b/keyboards/clueboard/17/17.h
@@ -1,6 +1,3 @@
-#ifndef CLUEPAD_H
-#define CLUEPAD_H
+#pragma once
#include "quantum.h"
-
-#endif
diff --git a/keyboards/clueboard/17/config.h b/keyboards/clueboard/17/config.h
index 877f478690..e2d0d1a23e 100644
--- a/keyboards/clueboard/17/config.h
+++ b/keyboards/clueboard/17/config.h
@@ -15,12 +15,9 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
/* Number of backlighting levels */
#define BACKLIGHT_LEVELS 3
-
-#endif
diff --git a/keyboards/clueboard/2x1800/2018/2018.h b/keyboards/clueboard/2x1800/2018/2018.h
index c6e152ad44..6e2d3b3831 100644
--- a/keyboards/clueboard/2x1800/2018/2018.h
+++ b/keyboards/clueboard/2x1800/2018/2018.h
@@ -13,9 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef TWOX1800_H
-#define TWOX1800_H
-#include "quantum.h"
+#pragma once
-#endif
+#include "quantum.h"
diff --git a/keyboards/clueboard/60/60.h b/keyboards/clueboard/60/60.h
index 0345f419fa..9a019ccf6d 100644
--- a/keyboards/clueboard/60/60.h
+++ b/keyboards/clueboard/60/60.h
@@ -13,9 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CLUEBOARD60_H
-#define CLUEBOARD60_H
-#include "quantum.h"
+#pragma once
-#endif
+#include "quantum.h"
diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h
index 7e53e0a011..a6205b27bb 100644
--- a/keyboards/clueboard/66_hotswap/gen1/config.h
+++ b/keyboards/clueboard/66_hotswap/gen1/config.h
@@ -77,8 +77,8 @@
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define LED_DRIVER_ADDR_1 0b1110100
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define LED_DRIVER_COUNT 1
#define DRIVER_LED_TOTAL 71
diff --git a/keyboards/coarse/vinta/vinta.h b/keyboards/coarse/vinta/vinta.h
index 03a815c065..18f51cd434 100644
--- a/keyboards/coarse/vinta/vinta.h
+++ b/keyboards/coarse/vinta/vinta.h
@@ -1,55 +1,49 @@
-#ifndef VINTA_H
-#define VINTA_H
-
-#define XXX KC_NO
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
#define LAYOUT_69_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3E, K3F, \
- K40, K41, K42, K45, K49, K4A, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, XXX, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, XXX, K3E, K3F }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3E, k3F, \
+ k40, k41, k42, k45, k49, k4A, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_68_tada( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3E, K3F, \
- K40, K41, K42, K45, K49, K4A, K4C, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, XXX, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, XXX, K3E, K3F }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, XXX, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3E, k3F, \
+ k40, k41, k42, k45, k49, k4A, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, XXX, XXX, k4D, k4E, k4F } \
}
#define LAYOUT_65_ansi_blocker( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3E, K3F, \
- K40, K41, K42, K45, K49, K4A, K4D, K4E, K4F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, XXX, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, XXX, K3E, K3F }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, XXX, K4D, K4E, K4F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3E, k3F, \
+ k40, k41, k42, k45, k49, k4A, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, XXX, XXX, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/comet46/comet46.h b/keyboards/comet46/comet46.h
index c108d4193b..094d960e20 100644
--- a/keyboards/comet46/comet46.h
+++ b/keyboards/comet46/comet46.h
@@ -1,22 +1,21 @@
-#ifndef COMET46_H
-#define COMET46_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11,\
- k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25,\
- k26, k27, k28, k29, k31, k32, k33, k34, k35, k36, k37, k38, k41, k42,\
- k43, k44, k45, k46, k47, k48 \
-) \
-{ \
- { k13, k01, k26, k12, k00, k11, k25, k42, k10, k24}, \
- { k03, k28, k14, k02, k27, k41, k09, k23, k38, k08}, \
- { k31, k16, k04, k29, k15, k22, k37, k07, k21, k36}, \
- { KC_NO, k32, k17, k05, k43, k48, k06, k20, k35, KC_NO }, \
- { KC_NO, k45, k33, k18, k44, k47, k19, k34, k46, KC_NO }, \
+ k04, k01, k13, k10, k22, k33, k36, k27, k19, k16, k08, k05, \
+ k03, k00, k12, k24, k21, k32, k43, k46, k37, k28, k25, k17, k09, k06, \
+ k02, k14, k11, k23, k20, k31, k42, k47, k38, k29, k26, k18, k15, k07, \
+ k34, k44, k41, k48, k45, k35 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37, k38, XXX }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, k48, XXX } \
}
-#endif
diff --git a/keyboards/comet46/config.h b/keyboards/comet46/config.h
index 5ae026f923..067dabb103 100644
--- a/keyboards/comet46/config.h
+++ b/keyboards/comet46/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/comet46/i2c.h b/keyboards/comet46/i2c.h
index 47cf6bd1b2..710662c7ab 100644
--- a/keyboards/comet46/i2c.h
+++ b/keyboards/comet46/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include <stdint.h>
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/contra/config.h b/keyboards/contra/config.h
index 8dc565546b..499517f984 100755
--- a/keyboards/contra/config.h
+++ b/keyboards/contra/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/contra/contra.h b/keyboards/contra/contra.h
index 74aad77d0b..27a8dd2956 100755
--- a/keyboards/contra/contra.h
+++ b/keyboards/contra/contra.h
@@ -1,30 +1,27 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_4x12( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT_planck_mit( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K305, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/tmk_core/protocol/adb.c b/keyboards/converter/adb_usb/adb.c
index 367f1b09fa..28f14c9fe8 100644
--- a/tmk_core/protocol/adb.c
+++ b/keyboards/converter/adb_usb/adb.c
@@ -84,10 +84,6 @@ bool adb_host_psw(void) { return psw_in(); }
uint16_t adb_host_kbd_recv(void) { return adb_host_talk(ADB_ADDR_KEYBOARD, ADB_REG_0); }
#ifdef ADB_MOUSE_ENABLE
-__attribute__((weak)) void adb_mouse_init(void) { return; }
-
-__attribute__((weak)) void adb_mouse_task(void) { return; }
-
uint16_t adb_host_mouse_recv(void) { return adb_host_talk(ADB_ADDR_MOUSE, ADB_REG_0); }
#endif
diff --git a/tmk_core/protocol/adb.h b/keyboards/converter/adb_usb/adb.h
index fe8becc2d5..fe8becc2d5 100644
--- a/tmk_core/protocol/adb.h
+++ b/keyboards/converter/adb_usb/adb.h
diff --git a/keyboards/converter/adb_usb/adb_usb.h b/keyboards/converter/adb_usb/adb_usb.h
index 3db303b039..ddbbd71564 100644
--- a/keyboards/converter/adb_usb/adb_usb.h
+++ b/keyboards/converter/adb_usb/adb_usb.h
@@ -17,11 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
Ported to QMK by Peter Roe <pete@13bit.me>
*/
-#ifndef ADB_USB_H
-#define ADB_USB_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* M0115/M3501 Apple Extended Keyboard ANSI
* ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
* |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|
@@ -39,29 +40,29 @@ Ported to QMK by Peter Roe <pete@13bit.me>
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_ext_ansi( \
- K35, K7A,K78,K63,K76,K60,K61,K62,K64,K65,K6D,K67,K6F, K69,K6B,K71, K7F, \
- K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K75,K77,K79, K59,K5B,K5C,K4E, \
- K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K45, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \
- K36,K3A,K37, K31, K7C,K7D, K3B,K3D,K3C, K52, K41,K4C \
+ k35, k7A, k78, k63, k76, k60, k61, k62, k64, k65, k6D, k67, k6F, k69, k6B, k71, k7F, \
+ k32, k12, k13, k14, k15, k17, k16, k1A, k1C, k19, k1D, k1B, k18, k33, k72, k73, k74, k47, k51, k4B, k43, \
+ k30, k0C, k0D, k0E, k0F, k11, k10, k20, k22, k1F, k23, k21, k1E, k2A, k75, k77, k79, k59, k5B, k5C, k4E, \
+ k39, k00, k01, k02, k03, k05, k04, k26, k28, k25, k29, k27, k24, k56, k57, k58, k45, \
+ k38, k06, k07, k08, k09, k0B, k2D, k2E, k2B, k2F, k2C, k7B, k3E, k53, k54, k55,\
+ k36, k3A, k37, k31, k7C, k7D, k3B, k3D, k3C, k52, k41, k4C \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, KC_NO, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, KC_NO, K35, K36, K37 }, \
- { K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO, }, \
- { KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \
- { KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO, }, \
- { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO, }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
- { KC_NO, K69, KC_NO, K6B, KC_NO, K6D, KC_NO, K6F }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 }, \
- { K78, K79, K7A, K7B, K7C, K7D, KC_NO, K7F } \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k08, k09, XXX, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, XXX, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, k41, XXX, k43, XXX, k45, XXX, k47 }, \
+ { XXX, XXX, XXX, k4B, k4C, XXX, k4E, XXX }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, XXX, k5B, k5C, XXX, XXX, XXX }, \
+ { k60, k61, k62, k63, k64, k65, XXX, k67 }, \
+ { XXX, k69, XXX, k6B, XXX, k6D, XXX, k6F }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k78, k79, k7A, k7B, k7C, k7D, XXX, k7F } \
}
/* M0116 Apple Standard Keyboard ANSI
@@ -81,29 +82,27 @@ Ported to QMK by Peter Roe <pete@13bit.me>
* +---------------------------------------------------------+ +-------+---+---+
*/
#define LAYOUT_m0116_ansi( \
- K7F, \
- K35,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K51,K4B,K43, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K45, \
- K36,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K4E, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K53,K54,K55, \
- K39,K3A,K37,K32, K31, K2A,K3B,K3C,K3D,K3E, K52, K41,K4C \
+ k7F, \
+ k35, k12, k13, k14, k15, k17, k16, k1A, k1C, k19, k1D, k1B, k18, k33, k47, k51, k4B, k43, \
+ k30, k0C, k0D, k0E, k0F, k11, k10, k20, k22, k1F, k23, k21, k1E, k59, k5B, k5C, k45, \
+ k36, k00, k01, k02, k03, k05, k04, k26, k28, k25, k29, k27, k24, k56, k57, k58, k4E, \
+ k38, k06, k07, k08, k09, k0B, k2D, k2E, k2B, k2F, k2C, k7B, k53, k54, k55, \
+ k39, k3A, k37, k32, k31, k2A, k3B, k3C, k3D, k3E, k52, k41, k4C \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, KC_NO, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, KC_NO, K35, K36, K37 }, \
- { K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \
- { KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \
- { KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO }, \
- { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, 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, K7B, KC_NO, KC_NO, KC_NO, K7F } \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k08, k09, XXX, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, XXX, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { XXX, k41, XXX, k43, XXX, k45, XXX, k47 }, \
+ { XXX, XXX, XXX, k4B, k4C, XXX, k4E, XXX }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, XXX, k5B, k5C, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, k7B, XXX, XXX, XXX, k7F } \
}
-
-#endif
diff --git a/keyboards/converter/adb_usb/matrix.c b/keyboards/converter/adb_usb/matrix.c
index 9e5399de5d..e6a4921960 100644
--- a/keyboards/converter/adb_usb/matrix.c
+++ b/keyboards/converter/adb_usb/matrix.c
@@ -31,6 +31,10 @@ Ported to QMK by Peter Roe <pete@13bit.me>
#include "led.h"
#include "timer.h"
+#ifndef ADB_MOUSE_MAXACC
+# define ADB_MOUSE_MAXACC 8
+#endif
+
static bool is_iso_layout = false;
// matrix state buffer(1:on, 0:off)
@@ -84,6 +88,10 @@ void matrix_init(void)
static report_mouse_t mouse_report = {};
+void housekeeping_task_kb(void) {
+ adb_mouse_task();
+}
+
void adb_mouse_task(void)
{
uint16_t codes;
diff --git a/keyboards/converter/adb_usb/rules.mk b/keyboards/converter/adb_usb/rules.mk
index 56967770b3..8f4649f556 100644
--- a/keyboards/converter/adb_usb/rules.mk
+++ b/keyboards/converter/adb_usb/rules.mk
@@ -16,7 +16,9 @@ NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
EXTRAKEY_ENABLE = yes
USB_HID_ENABLE = yes
BACKLIGHT_ENABLE = no
-#BLUETOOTH = AdafruitBLE # For Adafruit Feather 32U4 BLE support, uncomment this line
CUSTOM_MATRIX = yes
SRC = matrix.c adb.c led.c
+
+# ADB_MOUSE_ENABLE
+# OPT_DEFS += -DADB_MOUSE_ENABLE -DMOUSE_ENABLE
diff --git a/keyboards/converter/ibm_terminal/config.h b/keyboards/converter/ibm_terminal/config.h
index 5d8e5f8135..2cd36c5fb0 100644
--- a/keyboards/converter/ibm_terminal/config.h
+++ b/keyboards/converter/ibm_terminal/config.h
@@ -16,9 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
-
+#pragma once
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6535
@@ -47,15 +45,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef PS2_USE_USART
/* XCK for clock line */
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 5
-/* RXD for data line */
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
@@ -95,15 +86,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef PS2_USE_INT
/* uses INT1 for clock line(ATMega32U4) */
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 1
-
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 0
+#define PS2_CLOCK_PIN D1
+#define PS2_DATA_PIN D0
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC11) | \
@@ -123,15 +107,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* PS/2 Busywait configuration
*/
#ifdef PS2_USE_BUSYWAIT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 1
-
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 0
-#endif
-
+#define PS2_CLOCK_PIN D1
+#define PS2_DATA_PIN D0
#endif
diff --git a/keyboards/converter/ibm_terminal/ibm_terminal.h b/keyboards/converter/ibm_terminal/ibm_terminal.h
index adf048206e..ce50e5f437 100644
--- a/keyboards/converter/ibm_terminal/ibm_terminal.h
+++ b/keyboards/converter/ibm_terminal/ibm_terminal.h
@@ -1,8 +1,9 @@
-#ifndef IBM_TERMINAL_H
-#define IBM_TERMINAL_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
void matrix_init_user(void);
/*
@@ -20,63 +21,61 @@ void matrix_init_user(void);
* +---------+
*/
#define LAYOUT( \
- K08,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F, \
- K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, \
- \
- K05,K06, K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
- K04,K0C, K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \
- K03,K0B, K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K53,K5A, K63, K6B,K73,K74,K7B, \
- K83,K0A, K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K61,K62,K6A, K69,K72,K7A,K79, \
- K01,K09, K11, K19, K29, K39, K58, K60, K68,K70,K71,K78 \
+ k08, k10, k18, k20, k28, k30, k38, k40, k48, k50, k57, k5F, \
+ k07, k0F, k17, k1F, k27, k2F, k37, k3F, k47, k4F, k56, k5E, \
+\
+ k05, k06, k0E, k16, k1E, k26, k25, k2E, k36, k3D, k3E, k46, k45, k4E, k55, k5D, k66, k67, k6E, k6F, k76, k77, k7E, k84, \
+ k04, k0C, k0D, k15, k1D, k24, k2D, k2C, k35, k3C, k43, k44, k4D, k54, k5B, k5C, k64, k65, k6D, k6C, k75, k7D, k7C, \
+ k03, k0B, k14, k1C, k1B, k23, k2B, k34, k33, k3B, k42, k4B, k4C, k52, k53, k5A, k63, k6B, k73, k74, k7B, \
+ k83, k0A, k12, k13, k1A, k22, k21, k2A, k32, k31, k3A, k41, k49, k4A, k51, k59, k61, k62, k6A, k69, k72, k7A, k79, \
+ k01, k09, k11, k19, k29, k39, k58, k60, k68, k70, k71, k78 \
) { \
- { KC_NO, K01, KC_NO, K03, K04, K05, K06, K07 }, \
- { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 }, \
- { K78, K79, K7A, K7B, K7C, K7D, K7E, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, K83, K84, KC_NO, KC_NO, KC_NO } \
+ { XXX, k01, XXX, k03, k04, k05, k06, k07 }, \
+ { k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k78, k79, k7A, k7B, k7C, k7D, k7E, XXX }, \
+ { XXX, XXX, XXX, k83, k84, XXX, XXX, XXX } \
}
/*
* IBM Terminal keyboard 1399625, 101-key
*/
#define LAYOUT_101( \
- K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \
- \
- K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
- K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D, \
- K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7C, \
- K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \
- K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \
+ k08, k07, k0F, k17, k1F, k27, k2F, k37, k3F, k47, k4F, k56, k5E, k57, k5F, k62, \
+\
+ k0E, k16, k1E, k26, k25, k2E, k36, k3D, k3E, k46, k45, k4E, k55, k66, k67, k6E, k6F, k76, k77, k7E, k84, \
+ k0D, k15, k1D, k24, k2D, k2C, k35, k3C, k43, k44, k4D, k54, k5B, k5C, k64, k65, k6D, k6C, k75, k7D, \
+ k14, k1C, k1B, k23, k2B, k34, k33, k3B, k42, k4B, k4C, k52, k5A, k6B, k73, k74, k7C, \
+ k12, k1A, k22, k21, k2A, k32, k31, k3A, k41, k49, k4A, k59, k63, k69, k72, k7A, \
+ k11, k19, k29, k39, k58, k61, k60, k6A, k70, k71, k79 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K07 }, \
- { K08, KC_NO, KC_NO, KC_NO, KC_NO, K0D, K0E, K0F }, \
- { KC_NO, K11, K12, KC_NO, K14, K15, K16, K17 }, \
- { KC_NO, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { KC_NO, K21, K22, K23, K24, K25, K26, K27 }, \
- { KC_NO, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { KC_NO, K31, K32, K33, K34, K35, K36, K37 }, \
- { KC_NO, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47 }, \
- { KC_NO, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
- { KC_NO, KC_NO, K52, KC_NO, K54, K55, K56, K57 }, \
- { K58, K59, K5A, K5B, K5C, KC_NO, K5E, K5F }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 }, \
- { KC_NO, K79, K7A, KC_NO, K7C, K7D, K7E, KC_NO }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K84, KC_NO, KC_NO, KC_NO } \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, k07 }, \
+ { k08, XXX, XXX, XXX, XXX, k0D, k0E, k0F }, \
+ { XXX, k11, k12, XXX, k14, k15, k16, k17 }, \
+ { XXX, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { XXX, k21, k22, k23, k24, k25, k26, k27 }, \
+ { XXX, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37 }, \
+ { XXX, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47 }, \
+ { XXX, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { XXX, XXX, k52, XXX, k54, k55, k56, k57 }, \
+ { k58, k59, k5A, k5B, k5C, XXX, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 }, \
+ { XXX, k79, k7A, XXX, k7C, k7D, k7E, XXX }, \
+ { XXX, XXX, XXX, XXX, k84, XXX, XXX, XXX } \
}
-
-#endif
diff --git a/tmk_core/protocol/m0110.c b/keyboards/converter/m0110_usb/m0110.c
index 64f2fa50ab..64f2fa50ab 100644
--- a/tmk_core/protocol/m0110.c
+++ b/keyboards/converter/m0110_usb/m0110.c
diff --git a/tmk_core/protocol/m0110.h b/keyboards/converter/m0110_usb/m0110.h
index 63ff3e90ec..63ff3e90ec 100644
--- a/tmk_core/protocol/m0110.h
+++ b/keyboards/converter/m0110_usb/m0110.h
diff --git a/keyboards/converter/m0110_usb/m0110_usb.h b/keyboards/converter/m0110_usb/m0110_usb.h
index 88e74024fc..944296afdc 100644
--- a/keyboards/converter/m0110_usb/m0110_usb.h
+++ b/keyboards/converter/m0110_usb/m0110_usb.h
@@ -16,12 +16,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
Ported to QMK by Techsock <info@techsock.com>
*/
-#ifndef M0110_USB_H
-#define M0110_USB_H
-#endif
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* Common layout for M0110 and M0110A
* This keymap works with both keyboards. As you can see, the M0110A is
* a superset of M0110 keyboard, only one exception is 'Enter'(34) of M0110
@@ -67,26 +67,26 @@ Ported to QMK by Techsock <info@techsock.com>
* Two right and left keys of 38 and 3A are identical, you cannot discriminate those two.
*/
#define LAYOUT_ansi( \
- K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K68,K6D,K62, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K4E, \
- K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K66, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K4D, K53,K54,K55,K4C, \
- K3A,K37, K31, K34,K2A,K46,K42,K48, K52, K41 \
+ K32, K12, K13, K14, K15, K17, K16, K1A, K1C, K19, K1D, K1B, K18, K33, K47, K68, K6D, K62, \
+ K30, K0C, K0D, K0E, K0F, K11, K10, K20, K22, K1F, K23, K21, K1E, K59, K5B, K5C, K4E, \
+ K39, K00, K01, K02, K03, K05, K04, K26, K28, K25, K29, K27, K24, K56, K57, K58, K66, \
+ K38, K06, K07, K08, K09, K0B, K2D, K2E, K2B, K2F, K2C, K4D, K53, K54, K55, K4C, \
+ K3A, K37, K31, K34, K2A, K46, K42, K48, K52, K41 \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, KC_NO, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, K34, KC_NO, KC_NO, K37 }, \
- { K38, K39, K3A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, K46, K47 }, \
- { K48, KC_NO, KC_NO, KC_NO, K4C, K4D, K4E, KC_NO }, \
- { KC_NO, KC_NO, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, K62, KC_NO, KC_NO, KC_NO, K66, KC_NO }, \
- { K68, KC_NO, KC_NO, KC_NO, KC_NO, K6D, KC_NO, KC_NO }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, XXX, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, XXX, XXX, K37 }, \
+ { K38, K39, K3A, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, K41, K42, XXX, XXX, XXX, K46, K47 }, \
+ { K48, XXX, XXX, XXX, K4C, K4D, K4E, XXX }, \
+ { XXX, XXX, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, XXX, K5B, K5C, XXX, XXX, XXX }, \
+ { XXX, XXX, K62, XXX, XXX, XXX, K66, XXX }, \
+ { K68, XXX, XXX, XXX, XXX, K6D, XXX, XXX } \
}
/* International keyboard layout for M0110 + M0120
@@ -108,24 +108,24 @@ Ported to QMK by Techsock <info@techsock.com>
* Two right and left keys of 38 and 3A are identical, you cannot discriminate those two.
*/
#define LAYOUT_iso( \
- K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K68,K6D,K62, \
- K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K59,K5B,K5C,K4E, \
- K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,K24, K56,K57,K58,K66, \
- K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C,K0A, K53,K54,K55,K4C, \
- K3A,K37, K34, K31, K52, K41 \
+ K32, K12, K13, K14, K15, K17, K16, K1A, K1C, K19, K1D, K1B, K18, K33, K47, K68, K6D, K62, \
+ K30, K0C, K0D, K0E, K0F, K11, K10, K20, K22, K1F, K23, K21, K1E, K2A, K59, K5B, K5C, K4E, \
+ K39, K00, K01, K02, K03, K05, K04, K26, K28, K25, K29, K27, K24, K56, K57, K58, K66, \
+ K38, K06, K07, K08, K09, K0B, K2D, K2E, K2B, K2F, K2C, K0A, K53, K54, K55, K4C, \
+ K3A, K37, K34, K31, K52, K41 \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, K31, K32, K33, K34, KC_NO, KC_NO, K37 }, \
- { K38, K39, K3A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, K41, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K47 }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, K4C, KC_NO, K4E, KC_NO }, \
- { KC_NO, KC_NO, K52, K53, K54, K55, K56, K57 }, \
- { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, K62, KC_NO, KC_NO, KC_NO, K66, KC_NO }, \
- { K68, KC_NO, KC_NO, KC_NO, KC_NO, K6D, KC_NO, KC_NO }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, XXX, XXX, K37 }, \
+ { K38, K39, K3A, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, K41, XXX, XXX, XXX, XXX, XXX, K47 }, \
+ { XXX, XXX, XXX, XXX, K4C, XXX, K4E, XXX }, \
+ { XXX, XXX, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, XXX, K5B, K5C, XXX, XXX, XXX }, \
+ { XXX, XXX, K62, XXX, XXX, XXX, K66, XXX }, \
+ { K68, XXX, XXX, XXX, XXX, K6D, XXX, XXX } \
}
diff --git a/keyboards/converter/m0110_usb/rules.mk b/keyboards/converter/m0110_usb/rules.mk
index f59530ce46..288b1729f0 100644
--- a/keyboards/converter/m0110_usb/rules.mk
+++ b/keyboards/converter/m0110_usb/rules.mk
@@ -19,7 +19,6 @@ NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
EXTRAKEY_ENABLE = yes
USB_HID_ENABLE = yes
BACKLIGHT_ENABLE = no
-#BLUETOOTH = AdafruitBLE # For Adafruit Feather 32U4 BLE support, uncomment this line
CUSTOM_MATRIX = yes
SRC = matrix.c m0110.c
diff --git a/keyboards/converter/palm_usb/post_rules.mk b/keyboards/converter/palm_usb/post_rules.mk
new file mode 100644
index 0000000000..9c11076701
--- /dev/null
+++ b/keyboards/converter/palm_usb/post_rules.mk
@@ -0,0 +1,7 @@
+ifdef HARDWARE_SERIAL
+ # Untested with palm_usb
+ SRC += protocol/serial_uart.c
+ OPT_DEFS += -DHARDWARE_SERIAL
+else
+ SRC += protocol/serial_soft.c
+endif
diff --git a/keyboards/converter/palm_usb/rules.mk b/keyboards/converter/palm_usb/rules.mk
index e7bedd4add..f83a18afd6 100644
--- a/keyboards/converter/palm_usb/rules.mk
+++ b/keyboards/converter/palm_usb/rules.mk
@@ -23,12 +23,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC += matrix.c
-ifdef HARDWARE_SERIAL
- # Untested with palm_usb
- SRC += protocol/serial_uart.c
- OPT_DEFS += -DHARDWARE_SERIAL
-else
- SRC += protocol/serial_soft.c
-endif
DEFAULT_FOLDER = converter/palm_usb/stowaway
diff --git a/keyboards/converter/sun_usb/config.h b/keyboards/converter/sun_usb/config.h
index f073e61e44..c67ae5ebae 100644
--- a/keyboards/converter/sun_usb/config.h
+++ b/keyboards/converter/sun_usb/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3333
@@ -81,5 +80,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* idle */ \
SERIAL_SOFT_TXD_ON(); \
} while (0)
-
-#endif
diff --git a/keyboards/converter/sun_usb/post_rules.mk b/keyboards/converter/sun_usb/post_rules.mk
new file mode 100644
index 0000000000..2ea1f0a5bf
--- /dev/null
+++ b/keyboards/converter/sun_usb/post_rules.mk
@@ -0,0 +1,6 @@
+ifdef HARDWARE_SERIAL
+ SRC += protocol/serial_uart.c
+ OPT_DEFS += -DHARDWARE_SERIAL
+else
+ SRC += protocol/serial_soft.c
+endif
diff --git a/keyboards/converter/sun_usb/rules.mk b/keyboards/converter/sun_usb/rules.mk
index 1decefe519..0f53fde80e 100644
--- a/keyboards/converter/sun_usb/rules.mk
+++ b/keyboards/converter/sun_usb/rules.mk
@@ -23,11 +23,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC += matrix.c led.c
-ifdef HARDWARE_SERIAL
- SRC += protocol/serial_uart.c
- OPT_DEFS += -DHARDWARE_SERIAL
-else
- SRC += protocol/serial_soft.c
-endif
DEFAULT_FOLDER = converter/sun_usb/type5
diff --git a/keyboards/converter/sun_usb/type3/type3.h b/keyboards/converter/sun_usb/type3/type3.h
index f6f14f4eff..b84a703d6b 100644
--- a/keyboards/converter/sun_usb/type3/type3.h
+++ b/keyboards/converter/sun_usb/type3/type3.h
@@ -15,11 +15,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/>.
*/
-#ifndef TYPE3_H
-#define TYPE3_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* Sun type 3 keyboard
,-------. ,-----------------------------------------------------------. ,-----------.
| 01| 03| | 05| 06| 08| 0A| 0C| 0E| 10| 11| 12| 2B| | 15| 16| 17|
@@ -35,32 +36,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
| 77 | 78 | 79 | 7A | 13 |
`-----------------------------------------------------------'
*/
-
-
-#define LAYOUT( \
- K01,K03, K05,K06, K08, K0A, K0C, K0E, K10,K11,K12,K2B, K15,K16,K17, \
- K19,K1A, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2D,K2E,K2F, \
- K31,K33, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K42, K44,K45,K46, \
- K48,K49, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K5F,K61, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E,K6F, K70,K71,K72, \
- K77,K78, K79, K7A,K13 \
+#define LAYOUT( \
+ k01, k03, k05, k06, k08, k0A, k0C, k0E, k10, k11, k12, k2B, k15, k16, k17, \
+ k19, k1A, k1D, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k58, k2A, k2D, k2E, k2F, \
+ k31, k33, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k44, k45, k46, \
+ k48, k49, k4C, k4D, k4E, k4F, k50, k51, k52, k53, k54, k55, k56, k57, k59, k5B, k5C, k5D, \
+ k5F, k61, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, k70, k71, k72, \
+ k77, k78, k79, k7A, k13 \
) { \
- { KC_NO, K01 , KC_NO, K03 , KC_NO, K05 , K06 , KC_NO }, \
- { K08 , KC_NO, K0A , KC_NO, K0C , KC_NO, K0E , KC_NO }, \
- { K10 , K11 , K12 , K13 , KC_NO, K15 , K16 , K17 }, \
- { KC_NO, K19 , K1A , KC_NO, KC_NO, K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , KC_NO, K2D , K2E , K2F }, \
- { KC_NO, K31 , KC_NO, K33 , KC_NO, K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , KC_NO, K44 , K45 , K46 , KC_NO }, \
- { K48 , K49 , KC_NO, KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , KC_NO, K5B , K5C , K5D , KC_NO, K5F }, \
- { KC_NO, K61 , KC_NO, K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , K6F }, \
- { K70 , K71 , K72 , KC_NO, KC_NO, KC_NO, KC_NO, K77 }, \
- { K78 , K79 , K7A , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+ { XXX, k01, XXX, k03, XXX, k05, k06, XXX }, \
+ { k08, XXX, k0A, XXX, k0C, XXX, k0E, XXX }, \
+ { k10, k11, k12, k13, XXX, k15, k16, k17 }, \
+ { XXX, k19, k1A, XXX, XXX, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k28, k29, k2A, k2B, XXX, k2D, k2E, k2F }, \
+ { XXX, k31, XXX, k33, XXX, k35, k36, k37 }, \
+ { k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, XXX, k44, k45, k46, XXX }, \
+ { k48, k49, XXX, XXX, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k58, k59, XXX, k5B, k5C, k5D, XXX, k5F }, \
+ { XXX, k61, XXX, k63, k64, k65, k66, k67 }, \
+ { k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, XXX, XXX, XXX, XXX, k77 }, \
+ { k78, k79, k7A, XXX, XXX, XXX, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/converter/sun_usb/type5/type5.h b/keyboards/converter/sun_usb/type5/type5.h
index da66d80abc..d4c9cc267c 100644
--- a/keyboards/converter/sun_usb/type5/type5.h
+++ b/keyboards/converter/sun_usb/type5/type5.h
@@ -15,11 +15,12 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef TYPE5_H
-#define TYPE5_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* sun type 5 keyboard, JP Unix-style
,-------. ,---, ,---------------. ,---------------. ,---------------. ,-----------. ,---------------.
| 76 | | 0F| | 05| 06| 08| 0A| | 0C| 0E| 10| 11| | 12| 07| 09| 0B| | 16| 17| 15| | 2D| 02| 04| 30|
@@ -36,30 +37,30 @@
| 5F| 61| | 77 | 13| 78 |*73 | 79 |*74 |*75| 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| |
`-------' `-----------------------------------------------------------' `-----------' `---------------'
*/
-#define LAYOUT_jp_unix( \
- K76, K0F, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \
- K01,K03, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2C,K34,K60, K62,K2E,K2F,K47, \
- K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, K42,K4A,K7B, K44,K45,K46,K7D, \
- K31,K33, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \
- K5F,K61, K77,K13, K78, K73, K79, K74, K75, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \
+#define LAYOUT_jp_unix( \
+ K76, K0F, K05, K06, K08, K0A, K0C, K0E, K10, K11, K12, K07, K09, K0B, K16, K17, K15, K2D, K02, K04, K30, \
+ K01, K03, K1D, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K58, K2A, K2C, K34, K60, K62, K2E, K2F, K47, \
+ K19, K1A, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K2B, K42, K4A, K7B, K44, K45, K46, K7D, \
+ K31, K33, K4C, K4D, K4E, K4F, K50, K51, K52, K53, K54, K55, K56, K57, K59, K5B, K5C, K5D, \
+ K48, K49, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K14, K70, K71, K72, K5A, \
+ K5F, K61, K77, K13, K78, K73, K79, K74, K75, K7A, K43, K0D, K18, K1B, K1C, K5E, K32 \
) { \
- { KC_NO, K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
- { K08 , K09 , K0A , K0B , K0C , K0D , K0E , K0F ,}, \
- { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
- { K18 , K19 , K1A , K1B , K1C , K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , K2C , K2D , K2E , K2F }, \
- { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
- { K48 , K49 , K4A , KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , K5A , K5B , K5C , K5D , K5E , K5F }, \
- { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , KC_NO }, \
- { K70 , K71 , K72 , K73 , K74 , K75 , K76 , K77 }, \
- { K78 , K79 , K7A , K7B , KC_NO, K7D , KC_NO, KC_NO } \
+ { XXX, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K48, K49, K4A, XXX, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
+ { K70, K71, K72, K73, K74, K75, K76, K77 }, \
+ { K78, K79, K7A, K7B, XXX, K7D, XXX, XXX } \
}
/* Sun type 5 keyboard, US Unix-style
@@ -78,30 +79,30 @@
| 5F| 61| | 77 | 13| 78 | 79 | 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| |
`-------' `-----------------------------------------------------------' `-----------' `---------------'
*/
-#define LAYOUT_us_unix( \
- K76, K0F, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \
- K01,K03, K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A, K2C,K34,K60, K62,K2E,K2F,K47, \
- K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K2B, K42,K4A,K7B, K44,K45,K46,K7D, \
- K31,K33, K4C, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \
- K5F,K61, K77,K13, K78, K79, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \
+#define LAYOUT_us_unix( \
+ K76, K0F, K05, K06, K08, K0A, K0C, K0E, K10, K11, K12, K07, K09, K0B, K16, K17, K15, K2D, K02, K04, K30, \
+ K01, K03, K1D, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K58, K2A, K2C, K34, K60, K62, K2E, K2F, K47, \
+ K19, K1A, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K2B, K42, K4A, K7B, K44, K45, K46, K7D, \
+ K31, K33, K4C, K4D, K4E, K4F, K50, K51, K52, K53, K54, K55, K56, K57, K59, K5B, K5C, K5D, \
+ K48, K49, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K14, K70, K71, K72, K5A, \
+ K5F, K61, K77, K13, K78, K79, K7A, K43, K0D, K18, K1B, K1C, K5E, K32 \
) { \
- { KC_NO, K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
- { K08 , K09 , K0A , K0B , K0C , K0D , K0E , K0F ,}, \
- { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
- { K18 , K19 , K1A , K1B , K1C , K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , K2C , K2D , K2E , K2F }, \
- { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
- { K48 , K49 , K4A , KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , K5A , K5B , K5C , K5D , K5E , K5F }, \
- { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , KC_NO }, \
- { K70 , K71 , K72 , KC_NO, KC_NO, KC_NO, K76 , K77 }, \
- { K78 , K79 , K7A , K7B , KC_NO, K7D , KC_NO, KC_NO } \
+ { XXX, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K48, K49, K4A, XXX, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
+ { K70, K71, K72, XXX, XXX, XXX, K76, K77 }, \
+ { K78, K79, K7A, K7B, XXX, K7D, XXX, XXX } \
}
/* Sun type 5 keyboard, US ANSI-style
@@ -120,29 +121,28 @@
| 5F| 61| | 4C | 13| 78 | 79 | 7A | 43| 0D| | 18| 1B| 1C| | 5E | 32| |
`-------' `-----------------------------------------------------------' `-----------' `---------------'
*/
-#define LAYOUT_ansi( \
- K76, K1D, K05,K06,K08,K0A, K0C,K0E,K10,K11, K12,K07,K09,K0B, K16,K17,K15, K2D,K02,K04,K30, \
- K01,K03, K2A,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29, K2B, K2C,K34,K60, K62,K2E,K2F,K47, \
- K19,K1A, K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41, K58, K42,K4A,K7B, K44,K45,K46,K7D, \
- K31,K33, K77, K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57, K59, K5B,K5C,K5D, \
- K48,K49, K63, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D, K6E, K14, K70,K71,K72,K5A, \
- K5F,K61, K4C,K13, K78, K79, K7A, K43, K0D, K18,K1B,K1C, K5E, K32 \
+#define LAYOUT_ansi( \
+ K76, K1D, K05, K06, K08, K0A, K0C, K0E, K10, K11, K12, K07, K09, K0B, K16, K17, K15, K2D, K02, K04, K30, \
+ K01, K03, K2A, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2B, K2C, K34, K60, K62, K2E, K2F, K47, \
+ K19, K1A, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K58, K42, K4A, K7B, K44, K45, K46, K7D, \
+ K31, K33, K77, K4D, K4E, K4F, K50, K51, K52, K53, K54, K55, K56, K57, K59, K5B, K5C, K5D, \
+ K48, K49, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K14, K70, K71, K72, K5A, \
+ K5F, K61, K4C, K13, K78, K79, K7A, K43, K0D, K18, K1B, K1C, K5E, K32 \
) { \
- { KC_NO, K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
- { K08 , K09 , K0A , K0B , K0C , K0D , K0E , KC_NO,}, \
- { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
- { K18 , K19 , K1A , K1B , K1C , K1D , K1E , K1F }, \
- { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
- { K28 , K29 , K2A , K2B , K2C , K2D , K2E , K2F }, \
- { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
- { K38 , K39 , K3A , K3B , K3C , K3D , K3E , K3F }, \
- { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
- { K48 , K49 , K4A , KC_NO, K4C , K4D , K4E , K4F }, \
- { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
- { K58 , K59 , K5A , K5B , K5C , K5D , K5E , K5F }, \
- { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
- { K68 , K69 , K6A , K6B , K6C , K6D , K6E , KC_NO }, \
- { K70 , K71 , K72 , KC_NO, KC_NO, KC_NO, K76 , K77 }, \
- { K78 , K79 , K7A , K7B , KC_NO, K7D , KC_NO, KC_NO } \
+ { XXX, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K08, K09, K0A, K0B, K0C, K0D, K0E, XXX }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K48, K49, K4A, XXX, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
+ { K70, K71, K72, XXX, XXX, XXX, K76, K77 }, \
+ { K78, K79, K7A, K7B, XXX, K7D, XXX, XXX } \
}
-#endif
diff --git a/keyboards/converter/usb_usb/ble/ble.h b/keyboards/converter/usb_usb/ble/ble.h
index d28629643a..3dccc23a41 100644
--- a/keyboards/converter/usb_usb/ble/ble.h
+++ b/keyboards/converter/usb_usb/ble/ble.h
@@ -1,6 +1,3 @@
-#ifndef BLE_H
-#define BLE_H
+#pragma once
#include QMK_KEYBOARD_H
-
-#endif
diff --git a/keyboards/converter/usb_usb/ble/rules.mk b/keyboards/converter/usb_usb/ble/rules.mk
index 438dec834a..ad4d206a51 100644
--- a/keyboards/converter/usb_usb/ble/rules.mk
+++ b/keyboards/converter/usb_usb/ble/rules.mk
@@ -12,9 +12,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
-ADAFRUIT_BLE_ENABLE = yes
+
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
EXTRAFLAGS += -flto
diff --git a/keyboards/converter/usb_usb/config.h b/keyboards/converter/usb_usb/config.h
index 7ff8ceeebd..d2488336a5 100644
--- a/keyboards/converter/usb_usb/config.h
+++ b/keyboards/converter/usb_usb/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -46,5 +45,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/converter/usb_usb/hasu/hasu.h b/keyboards/converter/usb_usb/hasu/hasu.h
index d5e7855860..3dccc23a41 100644
--- a/keyboards/converter/usb_usb/hasu/hasu.h
+++ b/keyboards/converter/usb_usb/hasu/hasu.h
@@ -1,6 +1,3 @@
-#ifndef HASU_H
-#define HASU_H
+#pragma once
#include QMK_KEYBOARD_H
-
-#endif
diff --git a/keyboards/converter/usb_usb/pro_micro/pro_micro.h b/keyboards/converter/usb_usb/pro_micro/pro_micro.h
index 566df9f20f..3dccc23a41 100644
--- a/keyboards/converter/usb_usb/pro_micro/pro_micro.h
+++ b/keyboards/converter/usb_usb/pro_micro/pro_micro.h
@@ -1,6 +1,3 @@
-#ifndef PRO_MICRO_H
-#define PRO_MICRO_H
+#pragma once
#include QMK_KEYBOARD_H
-
-#endif
diff --git a/keyboards/converter/usb_usb/usb_usb.h b/keyboards/converter/usb_usb/usb_usb.h
index 1d1b6770d1..3acd67634a 100644
--- a/keyboards/converter/usb_usb/usb_usb.h
+++ b/keyboards/converter/usb_usb/usb_usb.h
@@ -15,11 +15,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/>.
*/
-#ifndef USB_USB_H
-#define USB_USB_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define ______ KC_TRNS
/* ,---------------. ,---------------. ,---------------.
@@ -63,46 +64,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* TODO: use same keycode to pass through instead of KC_NO?
*/
#define LAYOUT_all( \
- K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73, \
- K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, K81,K80,K7F,K66, K75, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A, K49,K4A,K4B, K53,K54,K55,K56, K78,K79, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K31, K4C,K4D,K4E, K5F,K60,K61,K57, K76,K7A, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K32,K28, K5C,K5D,K5E,K85, K77,K7C, \
- KE1,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K87,KE5, K52, K59,K5A,K5B,K67, K74,K7D, \
- KE0,KE3,KE2,K8B,K91, K2C, K90,K8A,K88,KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63,K58, K7E,K7B \
+ k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, k70, k71, k72, k73, \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, k81, k80, k7F, k66, k75, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k89, k2A, k49, k4A, k4B, k53, k54, k55, k56, k78, k79, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k31, k4C, k4D, k4E, k5F, k60, k61, k57, k76, k7A, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k32, k28, k5C, k5D, k5E, k85, k77, k7C, \
+ kE1, k64, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, k87, kE5, k52, k59, k5A, k5B, k67, k74, k7D, \
+ kE0, kE3, kE2, k8B, k91, k2C, k90, k8A, k88, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63, k58, k7E, k7B \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, K32, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, K64, K65, K66, K67, /* 60-67 */ \
- K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, /* 68-6F */ \
- { K70, K71, K72, K73, K74, K75, K76, K77, /* 70-77 */ \
- K78, K79, K7A, K7B, K7C, K7D, K7E, K7F }, /* 78-7F */ \
- { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87, /* 80-87 */ \
- K88, K89, K8A, K8B, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { K90, K91, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7A, k7B, k7C, k7D, k7E, k7F }, \
+ { k80, k81, XXX, XXX, XXX, k85, XXX, k87, k88, k89, k8A, k8B, XXX, XXX, XXX, XXX }, \
+ { k90, k91, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
/* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
@@ -121,45 +107,30 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_ansi( \
- K29,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K2A, K49,K4A,K4B, K53,K54,K55,K56, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,K31, K4C,K4D,K4E, K5F,K60,K61, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34, K28, K5C,K5D,K5E,K57, \
- KE1,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, KE5, K52, K59,K5A,K5B, \
- KE0,KE3,KE2, K2C, KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63,K58 \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k2A, k49, k4A, k4B, k53, k54, k55, k56, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k31, k4C, k4D, k4E, k5F, k60, k61, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k28, k5C, k5D, k5E, k57, \
+ kE1, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, kE5, k52, k59, k5A, k5B, \
+ kE0, kE3, kE2, k2C, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63, k58 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, KC_NO, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, KC_NO, K65, KC_NO, KC_NO, /* 60-67 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 68-6F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 70-77 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 78-7F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 80-87 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, XXX, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, XXX, k65, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
/* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
@@ -178,45 +149,30 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_iso( \
- K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K2A, K49,K4A,K4B, K53,K54,K55,K56, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,K28, K4C,K4D,K4E, K5F,K60,K61,K57, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,K32, K5C,K5D,K5E, \
- KE1,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, KE5, K52, K59,K5A,K5B,K58, \
- KE0,KE3,KE2, K2C, KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63 \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k2A, k49, k4A, k4B, k53, k54, k55, k56, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k28, k4C, k4D, k4E, k5F, k60, k61, k57, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k32, k5C, k5D, k5E, \
+ kE1, k64, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, kE5, k52, k59, k5A, k5B, k58, \
+ kE0, kE3, kE2, k2C, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, K32, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, /* 60-67 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 68-6F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 70-77 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 78-7F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 80-87 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
/* ,---. ,---------------. ,---------------. ,---------------. ,-----------.
@@ -235,44 +191,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* `-----------------------------------------------------------' `-----------' `---------------'
*/
#define LAYOUT_jis( \
- K29, K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45, K46,K47,K48, \
- K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A, K49,K4A,K4B, K53,K54,K55,K56, \
- K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30, K28, K4C,K4D,K4E, K5F,K60,K61,K57, \
- K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,K32, K5C,K5D,K5E, \
- KE1,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38, K87,KE5, K52, K59,K5A,K5B,K58, \
- KE0,KE3,KE2,K8B, K2C, K8A,K88,KE6,KE7,K65,KE4, K50,K51,K4F, K62, K63 \
+ k29, k3A, k3B, k3C, k3D, k3E, k3F, k40, k41, k42, k43, k44, k45, k46, k47, k48, \
+\
+ k35, k1E, k1F, k20, k21, k22, k23, k24, k25, k26, k27, k2D, k2E, k89, k2A, k49, k4A, k4B, k53, k54, k55, k56, \
+ k2B, k14, k1A, k08, k15, k17, k1C, k18, k0C, k12, k13, k2F, k30, k28, k4C, k4D, k4E, k5F, k60, k61, k57, \
+ k39, k04, k16, k07, k09, k0A, k0B, k0D, k0E, k0F, k33, k34, k32, k5C, k5D, k5E, \
+ kE1, k1D, k1B, k06, k19, k05, k11, k10, k36, k37, k38, k87, kE5, k52, k59, k5A, k5B, k58, \
+ kE0, kE3, kE2, k8B, k2C, k8A, k88, kE6, kE7, k65, kE4, k50, k51, k4F, k62, k63 \
) { \
- { KC_NO, KC_NO, KC_NO, KC_NO, K04, K05, K06, K07, /* 00-07 */ \
- K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, /* 08-0F */ \
- { K10, K11, K12, K13, K14, K15, K16, K17, /* 10-17 */ \
- K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, /* 18-1F */ \
- { K20, K21, K22, K23, K24, K25, K26, K27, /* 20-27 */ \
- K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, /* 28-2F */ \
- { K30, K31, K32, K33, K34, K35, K36, K37, /* 30-37 */ \
- K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, /* 38-3F */ \
- { K40, K41, K42, K43, K44, K45, K46, K47, /* 40-47 */ \
- K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, /* 48-4F */ \
- { K50, K51, K52, K53, K54, K55, K56, K57, /* 50-57 */ \
- K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, /* 58-5F */ \
- { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, /* 60-67 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 68-6F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 70-77 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, /* 78-7F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87, /* 80-87 */ \
- K88, K89, K8A, K8B, KC_NO, KC_NO, KC_NO, KC_NO }, /* 88-8F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* 90-97 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* 98-9F */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* A0-A7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* A8-AF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* B0-B7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* B8-BF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* C0-C7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* C8-CF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* D0-D7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* D8-DF */ \
- { KE0, KE1, KE2, KE3, KE4, KE5, KE6, KE7, /* E0-E7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* E8-EF */ \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* F0-F7 */ \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, /* F8-FF */ \
+ { XXX, XXX, XXX, XXX, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, k64, k65, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,}, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, k87, k88, k89, k8A, k8B, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, kE6, kE7, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
-#endif
diff --git a/keyboards/converter/xt_usb/rules.mk b/keyboards/converter/xt_usb/rules.mk
index 519d76f4d4..8033614447 100644
--- a/keyboards/converter/xt_usb/rules.mk
+++ b/keyboards/converter/xt_usb/rules.mk
@@ -19,7 +19,6 @@ NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-XT_ENABLE = yes
CUSTOM_MATRIX = yes
-SRC += matrix.c
+SRC += matrix.c xt_interrupt.c
diff --git a/tmk_core/protocol/xt.h b/keyboards/converter/xt_usb/xt.h
index 538ff0e459..538ff0e459 100644
--- a/tmk_core/protocol/xt.h
+++ b/keyboards/converter/xt_usb/xt.h
diff --git a/tmk_core/protocol/xt_interrupt.c b/keyboards/converter/xt_usb/xt_interrupt.c
index ba9d71848f..ba9d71848f 100644
--- a/tmk_core/protocol/xt_interrupt.c
+++ b/keyboards/converter/xt_usb/xt_interrupt.c
diff --git a/keyboards/cu24/config.h b/keyboards/cu24/config.h
index 78dcabb0c8..a2a4e727ff 100644
--- a/keyboards/cu24/config.h
+++ b/keyboards/cu24/config.h
@@ -14,8 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -111,5 +110,3 @@
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/cu24/cu24.h b/keyboards/cu24/cu24.h
index d329182d23..8e3daa4758 100644
--- a/keyboards/cu24/cu24.h
+++ b/keyboards/cu24/cu24.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CU24_H
-#define CU24_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
@@ -28,34 +30,28 @@
k20, k21, k22, k23, \
k30, k31, k32, k33, \
k40, k41, k42, k43, \
- k50, k51, k52, k53 \
-) \
-{ \
+ k50, k51, k52, k53 \
+) { \
{ k00, k01, k02, k03 }, \
{ k10, k11, k12, k13 }, \
{ k20, k21, k22, k23 }, \
{ k30, k31, k32, k33 }, \
{ k40, k41, k42, k43 }, \
- { k50, k51, k52, k53 } \
+ { k50, k51, k52, k53 } \
}
#define LAYOUT_numpad( \
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, k23, \
- k30, k31, k32, \
+ k30, k31, k32, \
k40, k41, k42, k43, \
- k51, k52 \
-) \
-{ \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, k23 }, \
- { k30, k31, k32, KC_NO }, \
- { k40, k41, k42, k43 }, \
- { KC_NO, k51, k52, KC_NO } \
+ k51, k52 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, XXX }, \
+ { k40, k41, k42, k43 }, \
+ { XXX, k51, k52, XXX } \
}
-
-
-
-#endif
diff --git a/keyboards/cu75/config.h b/keyboards/cu75/config.h
index a45cc654f6..cfcb08cce1 100644
--- a/keyboards/cu75/config.h
+++ b/keyboards/cu75/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -93,5 +92,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/cu75/cu75.h b/keyboards/cu75/cu75.h
index 7774187b4f..444c8daaec 100644
--- a/keyboards/cu75/cu75.h
+++ b/keyboards/cu75/cu75.h
@@ -1,5 +1,4 @@
-#ifndef CU75_H
-#define CU75_H
+#pragma once
#include "quantum.h"
#include "matrix.h"
@@ -40,71 +39,71 @@ enum action_functions {
void reset_keyboard_kb(void);
void click(uint16_t freq, uint16_t duration);
+#define XXX KC_NO
+
/* Vanilla Keymap */
// This a shortcut to help you visually see your layout.
/*
* ,-------------------------------------------------------------------------------.
-* | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | 0G |
+* | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
* |-------------------------------------------------------------------------------|
-* | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1G |
+* | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1F |
* |-------------------------------------------------------------------------------|
-* | 21 | 22 |23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E | 2F |
+* | 20 | 21 |22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2E |
* |-------------------------------------------------------------------------------|
-* | 31 | 32 |33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3D | 3F |
+* | 30 | 31 |32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3E |
* |-------------------------------------------------------------------------------|
-* | 41 | 42 |43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F |
+* | 40 | 42 |43 | 44 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E |
* |-------------------------------------------------------------------------------|
-* | 51 | 52 | 53 | 54 | 57 | 59 | 5A | 5B | 5C | 5D | 5E | 5F |
+* | 50 | 51 | 52 | 53 | 56 | 58 | 59 | 5A | 5B | 5C | 5D | 5E |
* `-------------------------------------------------------------------------------'
*/
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
- k41, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
- k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, \
+ k50, k51, k52, k53, k56, k58, k59, k5A, k5B, k5C, k5D, k5E \
) { \
- {k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
- {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO, k1G}, \
- {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
- {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, KC_NO, k3F, KC_NO}, \
- {k41, KC_NO, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
- {k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E, XXX }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, XXX }, \
+ { k50, k51, k52, k53, XXX, XXX, k56, XXX, k58, k59, k5A, k5B, k5C, k5D, k5E, XXX } \
}
#define LAYOUT_all( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
- k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, \
+ k50, k51, k52, k53, k56, k58, k59, k5A, k5B, k5C, k5D, k5E \
) { \
- {k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
- {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G}, \
- {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
- {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, KC_NO}, \
- {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
- {k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, XXX }, \
+ { k50, k51, k52, k53, XXX, XXX, k56, XXX, k58, k59, k5A, k5B, k5C, k5D, k5E, XXX } \
}
#define LAYOUT_iso( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
- k51, k52, k53, k54, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, \
+ k50, k51, k52, k53, k56, k58, k59, k5A, k5B, k5C, k5D, k5E \
) { \
- {k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G}, \
- {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO, k1G}, \
- {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, KC_NO}, \
- {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, KC_NO, k3F, KC_NO}, \
- {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO}, \
- {k51, k52, k53, k54, KC_NO, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, k5F, KC_NO}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, XXX }, \
+ { k50, k51, k52, k53, XXX, XXX, k56, XXX, k58, k59, k5A, k5B, k5C, k5D, k5E, XXX } \
}
-
-#endif //CU75_H
diff --git a/keyboards/dc01/left/i2c.h b/keyboards/dc01/left/i2c.h
index 25e876658b..0d93e4ecaa 100644
--- a/keyboards/dc01/left/i2c.h
+++ b/keyboards/dc01/left/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include <stdint.h>
@@ -27,5 +26,3 @@ uint8_t i2c_master_write(uint8_t data);
uint8_t i2c_master_read(int);
void i2c_reset_state(void);
void i2c_slave_init(uint8_t address);
-
-#endif
diff --git a/keyboards/dekunukem/duckypad/config.h b/keyboards/dekunukem/duckypad/config.h
index 2f1b2ef32c..59c6826662 100644
--- a/keyboards/dekunukem/duckypad/config.h
+++ b/keyboards/dekunukem/duckypad/config.h
@@ -46,8 +46,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
diff --git a/keyboards/dichotomy/config.h b/keyboards/dichotomy/config.h
index 0cdaf776b4..03e19b1388 100644
--- a/keyboards/dichotomy/config.h
+++ b/keyboards/dichotomy/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/dichotomy/dichotomy.h b/keyboards/dichotomy/dichotomy.h
index 2023259b11..37372d6496 100755
--- a/keyboards/dichotomy/dichotomy.h
+++ b/keyboards/dichotomy/dichotomy.h
@@ -1,5 +1,4 @@
-#ifndef DICHOTOMY_H
-#define DICHOTOMY_H
+#pragma once
#include "report.h"
#include "pointing_device.h"
@@ -25,22 +24,21 @@
#define set_led_cyan() red_led_off(); grn_led_on(); blu_led_on()
#define set_led_white() red_led_on(); grn_led_on(); blu_led_on()
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
- k33, k34, k35, k36, k37, k38, \
- k42, k43, k44, k45, k46, k47, k48, k49 \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
- { KC_NO, KC_NO, KC_NO, k33, k34, k35, k36, k37, k38, KC_NO, KC_NO, KC_NO }, \
- { KC_NO, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, KC_NO, KC_NO } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k33, k34, k35, k36, k37, k38, \
+ k42, k43, k44, k45, k46, k47, k48, k49 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { XXX, XXX, XXX, k33, k34, k35, k36, k37, k38, XXX, XXX, XXX }, \
+ { XXX, XXX, k42, k43, k44, k45, k46, k47, k48, k49, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/diverge3/diverge3.h b/keyboards/diverge3/diverge3.h
index 53364213f6..c668bb29ef 100644
--- a/keyboards/diverge3/diverge3.h
+++ b/keyboards/diverge3/diverge3.h
@@ -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/>.
*/
-#ifndef DIVERGE3_H
-#define DIVERGE3_H
+
+#pragma once
#include "quantum.h"
@@ -26,24 +26,25 @@
#endif
#endif
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, LT0, LT1, LT2, RT2, RT1, RT0, R40, R41, R42, R43, R44 \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, LT0, LT1, LT2, RT2, RT1, RT0, R40, R41, R42, R43, R44 \
) { \
- { L00, L01, L02, L03, L04, L05, L06, KC_NO }, \
- { L10, L11, L12, L13, L14, L15, L16, KC_NO }, \
- { L20, L21, L22, L23, L24, L25, L26, KC_NO }, \
- { L30, L31, L32, L33, L34, L35, L36, KC_NO }, \
- { L40, L41, L42, L43, L44, LT0, LT1, LT2 }, \
- { R06, R05, R04, R03, R02, R01, R00, KC_NO }, \
- { R16, R15, R14, R13, R12, R11, R10, KC_NO }, \
- { R26, R25, R24, R23, R22, R21, R20, KC_NO }, \
- { R36, R35, R34, R33, R32, R31, R30, KC_NO }, \
- { R44, R43, R42, R41, R40, RT0, RT1, RT2 } \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, L16, XXX }, \
+ { L20, L21, L22, L23, L24, L25, L26, XXX }, \
+ { L30, L31, L32, L33, L34, L35, L36, XXX }, \
+ { L40, L41, L42, L43, L44, LT0, LT1, LT2 }, \
+ { R06, R05, R04, R03, R02, R01, R00, XXX }, \
+ { R16, R15, R14, R13, R12, R11, R10, XXX }, \
+ { R26, R25, R24, R23, R22, R21, R20, XXX }, \
+ { R36, R35, R34, R33, R32, R31, R30, XXX }, \
+ { R44, R43, R42, R41, R40, RT0, RT1, RT2 } \
}
-#endif
diff --git a/keyboards/dm9records/ergoinu/post_rules.mk b/keyboards/dm9records/ergoinu/post_rules.mk
new file mode 100644
index 0000000000..02aa48104c
--- /dev/null
+++ b/keyboards/dm9records/ergoinu/post_rules.mk
@@ -0,0 +1,9 @@
+ifneq ($(strip $(ERGOINU)),)
+ ifeq ($(findstring promicroled, $(ERGOINU)), promicroled)
+ DISABLE_PROMICRO_LEDs = no
+ endif
+endif
+
+ifeq ($(strip $(DISABLE_PROMICRO_LEDs)), yes)
+ OPT_DEFS += -DDISABLE_PROMICRO_LEDs
+endif
diff --git a/keyboards/dm9records/ergoinu/rules.mk b/keyboards/dm9records/ergoinu/rules.mk
index 04884050dc..895ce253d7 100644
--- a/keyboards/dm9records/ergoinu/rules.mk
+++ b/keyboards/dm9records/ergoinu/rules.mk
@@ -27,13 +27,3 @@ SRC += matrix.c serial.c split_util.c
# ergoinu configs
DISABLE_PROMICRO_LEDs = yes
-
-ifneq ($(strip $(ERGOINU)),)
- ifeq ($(findstring promicroled, $(ERGOINU)), promicroled)
- DISABLE_PROMICRO_LEDs = no
- endif
-endif
-
-ifeq ($(strip $(DISABLE_PROMICRO_LEDs)), yes)
- OPT_DEFS += -DDISABLE_PROMICRO_LEDs
-endif
diff --git a/keyboards/do60/config.h b/keyboards/do60/config.h
index f3ee1ed045..8a0f324aa2 100644
--- a/keyboards/do60/config.h
+++ b/keyboards/do60/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -75,5 +74,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/dtisaac/dosa40rgb/config.h b/keyboards/dtisaac/dosa40rgb/config.h
index c2d4a17056..62c8c6e22c 100644
--- a/keyboards/dtisaac/dosa40rgb/config.h
+++ b/keyboards/dtisaac/dosa40rgb/config.h
@@ -30,11 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
-/* AdafruitBle Pin */
-#define AdafruitBleResetPin D4
-#define AdafruitBleCSPin B4
-#define AdafruitBleIRQPin E6
-
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/dtisaac/dosa40rgb/rules.mk b/keyboards/dtisaac/dosa40rgb/rules.mk
index bf7cde9a55..a76047eb26 100644
--- a/keyboards/dtisaac/dosa40rgb/rules.mk
+++ b/keyboards/dtisaac/dosa40rgb/rules.mk
@@ -20,7 +20,8 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE # Enable Bluetooth
+BLUETOOTH_ENABLE = yes # Enable Bluetooth
+BLUETOOTH_DRIVER = AdafruitBLE
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/dztech/dz60rgb/v1/config.h b/keyboards/dztech/dz60rgb/v1/config.h
index f6ee7c4e2f..b4b23a6213 100644
--- a/keyboards/dztech/dz60rgb/v1/config.h
+++ b/keyboards/dztech/dz60rgb/v1/config.h
@@ -46,8 +46,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 63
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 63
#endif
diff --git a/keyboards/dztech/dz60rgb/v2/config.h b/keyboards/dztech/dz60rgb/v2/config.h
index 6108e99034..338575ee9a 100644
--- a/keyboards/dztech/dz60rgb/v2/config.h
+++ b/keyboards/dztech/dz60rgb/v2/config.h
@@ -56,8 +56,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 63
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 63
#endif
diff --git a/keyboards/dztech/dz60rgb/v2_1/config.h b/keyboards/dztech/dz60rgb/v2_1/config.h
index 06d504e393..e6c08eab42 100644
--- a/keyboards/dztech/dz60rgb/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb/v2_1/config.h
@@ -72,8 +72,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 63
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 63
#endif
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/config.h b/keyboards/dztech/dz60rgb_ansi/v1/config.h
index dc2a6f4bc0..7341c1c02c 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v1/config.h
@@ -46,8 +46,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 61
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 61
#endif
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/config.h b/keyboards/dztech/dz60rgb_ansi/v2/config.h
index 6c1e006821..7e6842d8d6 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2/config.h
@@ -56,8 +56,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 61
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 61
#endif
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/config.h b/keyboards/dztech/dz60rgb_wkl/v1/config.h
index 12317c2d35..c242401f6b 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v1/config.h
@@ -46,8 +46,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h
index 945b591ce6..45ccf6c9f7 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h
@@ -56,8 +56,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
index 76b0b6ea52..0e5bb8f67b 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
@@ -72,8 +72,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
index d872587317..9de86be2d1 100644
--- a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
+++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md
@@ -3,13 +3,13 @@
Run commands in the root directory of this repository.
```
-./bin/qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
+qmk compile && sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash ./dztech_dz65rgb_v2_jumper149.hex && sudo dfu-programmer atmega32u4 reset
```
## build
```
-./bin/qmk compile
+qmk compile
```
## flash
diff --git a/keyboards/dztech/dz65rgb/v3/config.h b/keyboards/dztech/dz65rgb/v3/config.h
index dbf2f5b3ce..053b06fae1 100755
--- a/keyboards/dztech/dz65rgb/v3/config.h
+++ b/keyboards/dztech/dz65rgb/v3/config.h
@@ -49,9 +49,7 @@
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b0110000
-# define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
# define DRIVER_COUNT 1
-# define DRIVER_1_LED_TOTAL 68
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_LED_TOTAL 68
# define DRIVER_INDICATOR_LED_TOTAL 0
#endif
diff --git a/keyboards/eco/config.h b/keyboards/eco/config.h
index db1c61ab4f..e5258e3a0b 100644
--- a/keyboards/eco/config.h
+++ b/keyboards/eco/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -68,5 +67,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef SUBPROJECT_rev2
#include "rev2/config.h"
#endif
-
-#endif
diff --git a/keyboards/eco/eco.h b/keyboards/eco/eco.h
index 211e41fe8f..885bf982d7 100644
--- a/keyboards/eco/eco.h
+++ b/keyboards/eco/eco.h
@@ -1,13 +1,9 @@
-#ifndef ECO_H
-#define ECO_H
+#pragma once
-#ifdef KEYBOARD_eco_rev1
- #include "rev1.h"
-#endif
-#ifdef KEYBOARD_eco_rev2
- #include "rev2.h"
+#if defined(KEYBOARD_eco_rev1)
+# include "rev1.h"
+#elif defined(KEYBOARD_eco_rev2)
+# include "rev2.h"
#endif
#include "quantum.h"
-
-#endif
diff --git a/keyboards/eco/rev1/config.h b/keyboards/eco/rev1/config.h
index 1e97a703d1..65cb050d6c 100644
--- a/keyboards/eco/rev1/config.h
+++ b/keyboards/eco/rev1/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
#include "../config.h"
@@ -26,5 +25,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B1, B6, B2, B3 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
#define UNUSED_PINS
-
-#endif
diff --git a/keyboards/eco/rev1/rev1.h b/keyboards/eco/rev1/rev1.h
index 132760fbe8..a6ceafb815 100644
--- a/keyboards/eco/rev1/rev1.h
+++ b/keyboards/eco/rev1/rev1.h
@@ -1,21 +1,17 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "../eco.h"
#include "quantum.h"
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 \
- ) \
- { \
- { k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014 }, \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114 }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214 }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 } \
- }
-
-#endif
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D } \
+}
diff --git a/keyboards/eco/rev2/config.h b/keyboards/eco/rev2/config.h
index 83f2defc9e..bbc0492e06 100644
--- a/keyboards/eco/rev2/config.h
+++ b/keyboards/eco/rev2/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV2_CONFIG_H
-#define REV2_CONFIG_H
+#pragma once
#include "../config.h"
@@ -26,5 +25,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D7, B5, B4, E6 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, B6, B2, B3, B1, F7, F6, F5, F4, D2, D3 }
#define UNUSED_PINS
-
-#endif
diff --git a/keyboards/eco/rev2/rev2.h b/keyboards/eco/rev2/rev2.h
index 881bcc77b9..a6ceafb815 100644
--- a/keyboards/eco/rev2/rev2.h
+++ b/keyboards/eco/rev2/rev2.h
@@ -1,21 +1,17 @@
-#ifndef REV2_H
-#define REV2_H
+#pragma once
#include "../eco.h"
#include "quantum.h"
#define LAYOUT( \
- k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014, \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 \
- ) \
- { \
- { k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014 }, \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114 }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214 }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 } \
- }
-
-#endif
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D } \
+}
diff --git a/keyboards/ep/40/40.h b/keyboards/ep/40/40.h
index 30f3d15b4f..1ac39a278d 100644
--- a/keyboards/ep/40/40.h
+++ b/keyboards/ep/40/40.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef EP40_H
-#define EP40_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -26,19 +28,14 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define xxx KC_NO
-
-#define LAYOUT(\
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b,\
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1b,\
- k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,\
- k30, k31, k32, k34, k36, k38, k39, k3a, k3b \
-) \
-{ \
- {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b},\
- {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, xxx, k1b},\
- {k20, xxx, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b},\
- {k30, k31, k32, xxx, k34, xxx, k36, xxx, k38, k39, k3a, k3b} \
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1B, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k34, k36, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, XXX, k34, XXX, k36, XXX, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/keyboards/ep/96/96.h b/keyboards/ep/96/96.h
index 1887eb472c..1117256cdc 100644
--- a/keyboards/ep/96/96.h
+++ b/keyboards/ep/96/96.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef EP96_H
-#define EP96_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -26,22 +28,19 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define xxxx KC_NO
#define LAYOUT( \
- K000, K001, K002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017, k018, \
- K100, K101, K102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, k116, k117, k118, \
- K200, K202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k216, k217, \
- K300, K302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, k316, k317, k318, \
- K400, K401, K402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k413, k414, k415, k416, k417, \
- K500, K501, K502, k506, k511, k512, k513, k514, k515, k516, k517, k518) \
-{ \
- {K000, K001, K002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017, k018}, \
- {K100, K101, K102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, xxxx, k114, k115, k116, k117, k118}, \
- {K200, xxxx, K202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, xxxx, k215, k216, k217, xxxx}, \
- {K300, xxxx, K302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, k316, k317, k318}, \
- {K400, K401, K402, k403, k404, k405, k406, k407, k408, k409, k410, k411, xxxx, k413, k414, k415, k416, k417, xxxx}, \
- {K500, K501, K502, xxxx, xxxx, xxxx, k506, xxxx, xxxx, xxxx, xxxx, k511, k512, k513, k514, k515, k516, k517, k518} \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, k1G, k1H, k1I, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4E, k4F, k4G, k4H, \
+ k50, k51, k52, k56, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F, k1G, k1H, k1I }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F, k2G, k2H, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H, XXX }, \
+ { k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, XXX, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I } \
}
-
-#endif
diff --git a/keyboards/ergodash/config.h b/keyboards/ergodash/config.h
index c910d8f24f..cfb6bf4ffc 100644
--- a/keyboards/ergodash/config.h
+++ b/keyboards/ergodash/config.h
@@ -16,9 +16,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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
-
-#endif
diff --git a/keyboards/ergodash/mini/mini.h b/keyboards/ergodash/mini/mini.h
index d565c6168f..4aca15775b 100644
--- a/keyboards/ergodash/mini/mini.h
+++ b/keyboards/ergodash/mini/mini.h
@@ -1,5 +1,4 @@
-#ifndef MINI_H
-#define MINI_H
+#pragma once
#include "ergodash.h"
@@ -16,41 +15,37 @@
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- }
+# define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 } \
+}
#else
// Keymap with right side flipped
// (TRRS jack on both halves are to the right)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
- L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { R00, R01, R02, R03, R04, R05, R06 }, \
- { R10, R11, R12, R13, R14, R15, R16 }, \
- { R20, R21, R22, R23, R24, R25, R26 }, \
- { R30, R31, R32, R33, R34, R35, R36 }, \
- }
-#endif
-
+# define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 } \
+}
#endif
diff --git a/keyboards/ergodash/rev1/rev1.h b/keyboards/ergodash/rev1/rev1.h
index eaabf7cc5f..7f094534cc 100644
--- a/keyboards/ergodash/rev1/rev1.h
+++ b/keyboards/ergodash/rev1/rev1.h
@@ -1,5 +1,4 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "ergodash.h"
@@ -13,135 +12,128 @@
#endif
#endif
+#define XXX KC_NO
+
#ifndef FLIP_HALF
// Standard Keymap
// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
-#define LAYOUT_4key( \
+# define LAYOUT_4key( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
// Just defined for configurator support, the matrix is identical to LAYOUT_4key
-#define LAYOUT_4key_2u_inner( \
+# define LAYOUT_4key_2u_inner( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
-#define LAYOUT_3key_2us( \
+# define LAYOUT_3key_2us( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, KC_NO }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, KC_NO }, \
- { R46, R45, R44, R43, R42, R41, R40 } \
- }
-
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, XXX }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, XXX }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
-#define LAYOUT_3key_1us( \
+# define LAYOUT_3key_1us( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, R30 }, \
- { R46, R45, R44, R43, R42, R41, KC_NO } \
- }
+ L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, XXX }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, XXX } \
+}
-#define LAYOUT_2key( \
+# define LAYOUT_2key( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, KC_NO }, \
- { L40, L41, L42, L43, L44, L45, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R36, R35, R34, R33, R32, R31, KC_NO }, \
- { R46, R45, R44, R43, R42, R41, KC_NO } \
- }
+ L40, L41, L42, L43, L44, L45, R41, R42, R43, R44, R45, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, XXX }, \
+ { L40, L41, L42, L43, L44, L45, XXX }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, XXX }, \
+ { R46, R45, R44, R43, R42, R41, XXX } \
+}
#define LAYOUT LAYOUT_4key
#else
// Keymap with right side flipped
// (TRRS jack on both halves are to the right)
-#define LAYOUT( \
+# define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, L36 }, \
- { L40, L41, L42, L43, L44, L45, L46 }, \
- { R00, R01, R02, R03, R04, R05, R06 }, \
- { R10, R11, R12, R13, R14, R15, R16 }, \
- { R20, R21, R22, R23, R24, R25, R26 }, \
- { R30, R31, R32, R33, R34, R35, R36 }, \
- { R40, R41, R42, R43, R44, R45, R46 } \
- }
-#endif
-
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 } \
+}
#endif
diff --git a/keyboards/ergodox_infinity/board_is31fl3731c.h b/keyboards/ergodox_infinity/board_is31fl3731c.h
deleted file mode 100644
index b2ed2b0031..0000000000
--- a/keyboards/ergodox_infinity/board_is31fl3731c.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@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/>.
-*/
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-static const I2CConfig i2ccfg = {
- 400000 // clock speed (Hz); 400kHz max for IS31
-};
-
-static const uint8_t led_mask[] = {
- 0xFF, 0x00, /* C1-1 -> C1-16 */
- 0xFF, 0x00, /* C2-1 -> C2-16 */
- 0xFF, 0x00, /* C3-1 -> C3-16 */
- 0xFF, 0x00, /* C4-1 -> C4-16 */
- 0x3F, 0x00, /* C5-1 -> C5-16 */
- 0x00, 0x00, /* C6-1 -> C6-16 */
- 0x00, 0x00, /* C7-1 -> C7-16 */
- 0x00, 0x00, /* C8-1 -> C8-16 */
- 0x00, 0x00, /* C9-1 -> C9-16 */
-};
-
-// The address of the LED
-#define LA(c, r) (c + r * 16 )
-// Need to be an address that is not mapped, but inside the range of the controller matrix
-#define NA LA(8, 8)
-
-// The numbers in the comments are the led numbers DXX on the PCB
-// The mapping is taken from the schematic of left hand side
-static const uint8_t led_mapping[GDISP_SCREEN_HEIGHT][GDISP_SCREEN_WIDTH] = {
-// 45 44 43 42 41 40 39
- { LA(1, 1), LA(1, 0), LA(0, 4), LA(0, 3), LA(0, 2), LA(0, 1), LA(0, 0)},
-// 52 51 50 49 48 47 46
- { LA(2, 3), LA(2, 2), LA(2, 1), LA(2, 0), LA(1, 4), LA(1, 3), LA(1, 2) },
-// 58 57 56 55 54 53 N/A
- { LA(3, 4), LA(3, 3), LA(3, 2), LA(3, 1), LA(3, 0), LA(2, 4), NA },
-// 67 66 65 64 63 62 61
- { LA(5, 3), LA(5, 2), LA(5, 1), LA(5, 0), LA(4, 4), LA(4, 3), LA(4, 2) },
-// 76 75 74 73 72 60 59
- { LA(7, 3), LA(7, 2), LA(7, 1), LA(7, 0), LA(6, 3), LA(4, 1), LA(4, 0) },
-// N/A N/A N/A N/A N/A N/A 68
- { NA, NA, NA, NA, NA, NA, LA(5, 4) },
-// N/A N/A N/A N/A 71 70 69
- { NA, NA, NA, NA, LA(6, 2), LA(6, 1), LA(6, 0) },
-};
-
-
-#define IS31_ADDR_DEFAULT 0x74 // AD connected to GND
-#define IS31_TIMEOUT 5000
-
-static GFXINLINE void init_board(GDisplay *g) {
- (void) g;
- /* I2C pins */
- palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATIVE_2); // PTB0/I2C0/SCL
- palSetPadMode(GPIOB, 1, PAL_MODE_ALTERNATIVE_2); // PTB1/I2C0/SDA
- palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
- palClearPad(GPIOB, 16);
- /* start I2C */
- i2cStart(&I2CD1, &i2ccfg);
- // try high drive (from kiibohd)
- I2CD1.i2c->C2 |= I2Cx_C2_HDRS;
- // try glitch fixing (from kiibohd)
- I2CD1.i2c->FLT = 4;
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) {
- (void) g;
-}
-
-static GFXINLINE const uint8_t* get_led_mask(GDisplay* g) {
- (void) g;
- return led_mask;
-}
-
-static GFXINLINE uint8_t get_led_address(GDisplay* g, uint16_t x, uint16_t y)
-{
- (void) g;
- return led_mapping[y][x];
-}
-
-static GFXINLINE void set_hardware_shutdown(GDisplay* g, bool shutdown) {
- (void) g;
- if(!shutdown) {
- palSetPad(GPIOB, 16);
- }
- else {
- palClearPad(GPIOB, 16);
- }
-}
-
-static GFXINLINE void write_data(GDisplay *g, uint8_t* data, uint16_t length) {
- (void) g;
- i2cMasterTransmitTimeout(&I2CD1, IS31_ADDR_DEFAULT, data, length, 0, 0, TIME_US2I(IS31_TIMEOUT));
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox_infinity/board_st7565.h b/keyboards/ergodox_infinity/board_st7565.h
deleted file mode 100644
index 875ed9e65c..0000000000
--- a/keyboards/ergodox_infinity/board_st7565.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * This file is subject to the terms of the GFX License. If a copy of
- * the license was not distributed with this file, you can obtain one at:
- *
- * http://ugfx.org/license.html
- */
-
-#ifndef _GDISP_LLD_BOARD_H
-#define _GDISP_LLD_BOARD_H
-
-#include "quantum.h"
-
-#define ST7565_LCD_BIAS ST7565_LCD_BIAS_7
-#define ST7565_COM_SCAN ST7565_COM_SCAN_DEC
-#define ST7565_PAGE_ORDER 0, 1, 2, 3
-/*
- * Custom page order for several LCD boards, e.g. HEM12864-99
- * #define ST7565_PAGE_ORDER 4,5,6,7,0,1,2,3
- */
-
-#define ST7565_A0_PIN C7
-#define ST7565_RST_PIN C8
-#define ST7565_MOSI_PIN C6
-#define ST7565_SCLK_PIN C5
-#define ST7565_SS_PIN C4
-
-// DSPI Clock and Transfer Attributes
-// Frame Size: 8 bits
-// MSB First
-// CLK Low by default
-static const SPIConfig spi1config = {
- // Operation complete callback or @p NULL.
- .end_cb = NULL,
- // The chip select line port - when not using pcs.
- .ssport = PAL_PORT(ST7565_SS_PIN),
- // brief The chip select line pad number - when not using pcs.
- .sspad = PAL_PAD(ST7565_SS_PIN),
- // SPI initialization data.
- .tar0 = SPIx_CTARn_FMSZ(7) // Frame size = 8 bytes
- | SPIx_CTARn_ASC(1) // After SCK Delay Scaler (min 50 ns) = 55.56ns
- | SPIx_CTARn_DT(0) // Delay After Transfer Scaler (no minimum)= 27.78ns
- | SPIx_CTARn_CSSCK(0) // PCS to SCK Delay Scaler (min 20 ns) = 27.78ns
- | SPIx_CTARn_PBR(0) // Baud Rate Prescaler = 2
- | SPIx_CTARn_BR(0) // Baud rate (min 50ns) = 55.56ns
-};
-
-static GFXINLINE void acquire_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to acquire
- // spiAcquireBus(&SPID1);
- spiSelect(&SPID1);
-}
-
-static GFXINLINE void release_bus(GDisplay *g) {
- (void)g;
- // Only the LCD is using the SPI bus, so no need to release
- // spiReleaseBus(&SPID1);
- spiUnselect(&SPID1);
-}
-
-static GFXINLINE void init_board(GDisplay *g) {
- (void)g;
- setPinOutput(ST7565_A0_PIN);
- writePinHigh(ST7565_A0_PIN);
- setPinOutput(ST7565_RST_PIN);
- writePinHigh(ST7565_RST_PIN);
- setPinOutput(ST7565_SS_PIN);
-
- palSetPadMode(PAL_PORT(ST7565_MOSI_PIN), PAL_PAD(ST7565_MOSI_PIN), PAL_MODE_ALTERNATIVE_2);
- palSetPadMode(PAL_PORT(ST7565_SCLK_PIN), PAL_PAD(ST7565_SCLK_PIN), PAL_MODE_ALTERNATIVE_2);
-
- spiInit();
- spiStart(&SPID1, &spi1config);
- release_bus(g);
-}
-
-static GFXINLINE void post_init_board(GDisplay *g) { (void)g; }
-
-static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) {
- (void)g;
- writePin(ST7565_RST_PIN, !state);
-}
-
-static GFXINLINE void write_cmd(GDisplay *g, gU8 cmd) {
- (void)g;
- writePinLow(ST7565_A0_PIN);
- spiSend(&SPID1, 1, &cmd);
-}
-
-static GFXINLINE void write_data(GDisplay *g, gU8 *data, gU16 length) {
- (void)g;
- writePinHigh(ST7565_A0_PIN);
- spiSend(&SPID1, length, data);
-}
-
-#endif /* _GDISP_LLD_BOARD_H */
diff --git a/keyboards/ergodox_infinity/config.h b/keyboards/ergodox_infinity/config.h
index 4bee8c3d93..5dcc707a5d 100644
--- a/keyboards/ergodox_infinity/config.h
+++ b/keyboards/ergodox_infinity/config.h
@@ -15,9 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef INFINITY_ERGODOX_CONFIG_H
-#define INFINITY_ERGODOX_CONFIG_H
-
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0x1c11
@@ -85,9 +83,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define I2C1_CLOCK_SPEED 400000
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-#define I2C1_BANK GPIOB
-#define I2C1_SCL 0
-#define I2C1_SDA 1
+#define I2C1_SCL_PIN B0
+#define I2C1_SDA_PIN B1
#ifdef ST7565_ENABLE
/* LCD driver */
@@ -115,8 +112,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-#define VISUALIZER_USER_DATA_SIZE 16
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
@@ -134,5 +129,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/ergodox_infinity/ergodox_infinity.c b/keyboards/ergodox_infinity/ergodox_infinity.c
index 8f5b068a72..88028d3638 100644
--- a/keyboards/ergodox_infinity/ergodox_infinity.c
+++ b/keyboards/ergodox_infinity/ergodox_infinity.c
@@ -3,10 +3,6 @@
#include <hal.h>
#include <string.h>
#include "eeconfig.h"
-#include "serial_link/system/serial_link.h"
-#ifdef VISUALIZER_ENABLE
-# include "lcd_backlight.h"
-#endif
#define RED_PIN 1
#define GREEN_PIN 2
@@ -87,11 +83,7 @@ static uint16_t cie_lightness(uint16_t v) {
return y * 65535.0f;
}
-#ifdef VISUALIZER_ENABLE
-void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
-#else
void ergodox_infinity_lcd_color(uint16_t r, uint16_t g, uint16_t b) {
-#endif
CHANNEL_RED.CnV = cie_lightness(r);
CHANNEL_GREEN.CnV = cie_lightness(g);
CHANNEL_BLUE.CnV = cie_lightness(b);
@@ -108,12 +100,10 @@ void keyboard_pre_init_kb() {
setPinOutput(B16);
writePinHigh(B16);
#endif
-#ifndef VISUALIZER_ENABLE
// The backlight always has to be initialized, otherwise it will stay lit
lcd_backlight_hal_init();
-# ifdef ST7565_ENABLE
+#ifdef ST7565_ENABLE
ergodox_infinity_lcd_color(UINT16_MAX / 2, UINT16_MAX / 2, UINT16_MAX / 2);
-# endif
#endif
keyboard_pre_init_user();
}
diff --git a/keyboards/ergodox_infinity/ergodox_infinity.h b/keyboards/ergodox_infinity/ergodox_infinity.h
index 81ac1f338a..b9636b69be 100644
--- a/keyboards/ergodox_infinity/ergodox_infinity.h
+++ b/keyboards/ergodox_infinity/ergodox_infinity.h
@@ -1,5 +1,4 @@
-#ifndef KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
-#define KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
+#pragma once
#include "quantum.h"
@@ -80,85 +79,75 @@ inline void ergodox_led_all_set(uint8_t n) {
ergodox_right_led_3_set(n);
}
-#ifndef VISUALIZER_ENABLE
void ergodox_infinity_lcd_color(uint16_t r, uint16_t g, uint16_t b);
-#endif
-/*
- * LEFT HAND: LINES 88-95
- * RIGHT HAND: LINES 97-104
- */
+#define XXX KC_NO
+
#define LAYOUT_ergodox( \
- A80, A70, A60, A50, A40, A30, A20, \
- A81, A71, A61, A51, A41, A31, A21, \
- A82, A72, A62, A52, A42, A32, \
- A83, A73, A63, A53, A43, A33, A23, \
- A84, A74, A64, A54, A44, \
+ A80, A70, A60, A50, A40, A30, A20, \
+ A81, A71, A61, A51, A41, A31, A21, \
+ A82, A72, A62, A52, A42, A32, \
+ A83, A73, A63, A53, A43, A33, A23, \
+ A84, A74, A64, A54, A44, \
A13, A03, \
A04, \
A34, A24, A14, \
- \
+\
B20, B30, B40, B50, B60, B70, B80, \
B21, B31, B41, B51, B61, B71, B81, \
B32, B42, B52, B62, B72, B82, \
B23, B33, B43, B53, B63, B73, B83, \
B44, B54, B64, B74, B84, \
- B03, B13, \
- B04, \
+ B03, B13, \
+ B04, \
B14, B24, B34 \
) { \
- { KC_NO, KC_NO, KC_NO, A03, A04 }, \
- { KC_NO, KC_NO, KC_NO, A13, A14 }, \
- { A20, A21, KC_NO, A23, A24 }, \
- { A30, A31, A32, A33, A34 }, \
- { A40, A41, A42, A43, A44 }, \
- { A50, A51, A52, A53, A54 }, \
- { A60, A61, A62, A63, A64 }, \
- { A70, A71, A72, A73, A74 }, \
- { A80, A81, A82, A83, A84 }, \
- { KC_NO, KC_NO, KC_NO, B03, B04 }, \
- { KC_NO, KC_NO, KC_NO, B13, B14 }, \
- { B20, B21, KC_NO, B23, B24 }, \
- { B30, B31, B32, B33, B34 }, \
- { B40, B41, B42, B43, B44 }, \
- { B50, B51, B52, B53, B54 }, \
- { B60, B61, B62, B63, B64 }, \
- { B70, B71, B72, B73, B74 }, \
- { B80, B81, B82, B83, B84 } \
+ { XXX, XXX, XXX, A03, A04 }, \
+ { XXX, XXX, XXX, A13, A14 }, \
+ { A20, A21, XXX, A23, A24 }, \
+ { A30, A31, A32, A33, A34 }, \
+ { A40, A41, A42, A43, A44 }, \
+ { A50, A51, A52, A53, A54 }, \
+ { A60, A61, A62, A63, A64 }, \
+ { A70, A71, A72, A73, A74 }, \
+ { A80, A81, A82, A83, A84 }, \
+ { XXX, XXX, XXX, B03, B04 }, \
+ { XXX, XXX, XXX, B13, B14 }, \
+ { B20, B21, XXX, B23, B24 }, \
+ { B30, B31, B32, B33, B34 }, \
+ { B40, B41, B42, B43, B44 }, \
+ { B50, B51, B52, B53, B54 }, \
+ { B60, B61, B62, B63, B64 }, \
+ { B70, B71, B72, B73, B74 }, \
+ { B80, B81, B82, B83, B84 } \
}
-/* -------------- LEFT HAND -------------- -------------- RIGHT HAND -------------- */
-#define LAYOUT_ergodox_pretty( \
- \
- A80, A70, A60, A50, A40, A30, A20, B20, B30, B40, B50, B60, B70, B80, \
- A81, A71, A61, A51, A41, A31, A21, B21, B31, B41, B51, B61, B71, B81, \
- A82, A72, A62, A52, A42, A32, B32, B42, B52, B62, B72, B82, \
- A83, A73, A63, A53, A43, A33, A23, B23, B33, B43, B53, B63, B73, B83, \
- A84, A74, A64, A54, A44, B44, B54, B64, B74, B84, \
- A13, A03, B03, B13, \
- A04, B04, \
- A34, A24, A14, B14, B24, B34 ) \
- \
- /* matrix positions */ \
- { \
- { KC_NO, KC_NO, KC_NO, A03, A04 }, \
- { KC_NO, KC_NO, KC_NO, A13, A14 }, \
- { A20, A21, KC_NO, A23, A24 }, \
- { A30, A31, A32, A33, A34 }, \
- { A40, A41, A42, A43, A44 }, \
- { A50, A51, A52, A53, A54 }, \
- { A60, A61, A62, A63, A64 }, \
- { A70, A71, A72, A73, A74 }, \
- { A80, A81, A82, A83, A84 }, \
- { KC_NO, KC_NO, KC_NO, B03, B04 }, \
- { KC_NO, KC_NO, KC_NO, B13, B14 }, \
- { B20, B21, KC_NO, B23, B24 }, \
- { B30, B31, B32, B33, B34 }, \
- { B40, B41, B42, B43, B44 }, \
- { B50, B51, B52, B53, B54 }, \
- { B60, B61, B62, B63, B64 }, \
- { B70, B71, B72, B73, B74 }, \
- { B80, B81, B82, B83, B84 } \
+#define LAYOUT_ergodox_pretty( \
+ A80, A70, A60, A50, A40, A30, A20, B20, B30, B40, B50, B60, B70, B80, \
+ A81, A71, A61, A51, A41, A31, A21, B21, B31, B41, B51, B61, B71, B81, \
+ A82, A72, A62, A52, A42, A32, B32, B42, B52, B62, B72, B82, \
+ A83, A73, A63, A53, A43, A33, A23, B23, B33, B43, B53, B63, B73, B83, \
+ A84, A74, A64, A54, A44, B44, B54, B64, B74, B84, \
+ A13, A03, B03, B13, \
+ A04, B04, \
+ A34, A24, A14, B14, B24, B34 \
+) { \
+ { XXX, XXX, XXX, A03, A04 }, \
+ { XXX, XXX, XXX, A13, A14 }, \
+ { A20, A21, XXX, A23, A24 }, \
+ { A30, A31, A32, A33, A34 }, \
+ { A40, A41, A42, A43, A44 }, \
+ { A50, A51, A52, A53, A54 }, \
+ { A60, A61, A62, A63, A64 }, \
+ { A70, A71, A72, A73, A74 }, \
+ { A80, A81, A82, A83, A84 }, \
+ { XXX, XXX, XXX, B03, B04 }, \
+ { XXX, XXX, XXX, B13, B14 }, \
+ { B20, B21, XXX, B23, B24 }, \
+ { B30, B31, B32, B33, B34 }, \
+ { B40, B41, B42, B43, B44 }, \
+ { B50, B51, B52, B53, B54 }, \
+ { B60, B61, B62, B63, B64 }, \
+ { B70, B71, B72, B73, B74 }, \
+ { B80, B81, B82, B83, B84 } \
}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_ */
diff --git a/keyboards/ergodox_infinity/gfxconf.h b/keyboards/ergodox_infinity/gfxconf.h
deleted file mode 100644
index ca338399d3..0000000000
--- a/keyboards/ergodox_infinity/gfxconf.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * This file has a different license to the rest of the uGFX system.
- * You can copy, modify and distribute this file as you see fit.
- * You do not need to publish your source modifications to this file.
- * The only thing you are not permitted to do is to relicense it
- * under a different license.
- */
-
-/**
- * Copy this file into your project directory and rename it as gfxconf.h
- * Edit your copy to turn on the uGFX features you want to use.
- * The values below are the defaults.
- *
- * Only remove the comments from lines where you want to change the
- * default value. This allows definitions to be included from
- * driver makefiles when required and provides the best future
- * compatibility for your project.
- *
- * Please use spaces instead of tabs in this file.
- */
-
-#ifndef _GFXCONF_H
-#define _GFXCONF_H
-
-#include "common_gfxconf.h"
-
-#endif /* _GFXCONF_H */
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h
index 161958233e..9dcf8a7f43 100644
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h
@@ -6,6 +6,4 @@
#include "../../config.h"
#include "dudeofawesome.h"
-#include "./visualizer.h"
-
#endif
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
index c3ea48654d..675b56edec 100644
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
+++ b/keyboards/ergodox_infinity/keymaps/dudeofawesome/keymap.c
@@ -471,8 +471,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_init_user() {
- backlight_enable();
- backlight_level(BACKLIGHT_LEVELS);
+ led_matrix_enable_noeeprom();
+ led_matrix_set_val_noeeprom(UINT8_MAX);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h
deleted file mode 100644
index 9213e99f42..0000000000
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-static keyframe_animation_t lcd_layer_display = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
- .num_frames = 2,
- .loop = false,
- // Note that there's a 200 ms no-operation frame,
- // this prevents the color from changing when activating the layer
- // momentarily
- .frame_lengths = {gfxMillisecondsToTicks(1), gfxMillisecondsToTicks(5)},
- .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- uint32_t prev_color = state->target_lcd_color;
- const char* prev_layer_text = state->layer_text;
-
- get_visualizer_layer_and_color(state);
-
- if (initial_update || prev_color != state->target_lcd_color) {
- start_keyframe_animation(&color_animation);
- }
-
- if (initial_update || prev_layer_text != state->layer_text) {
- start_keyframe_animation(&lcd_layer_display);
- }
- // You can also stop existing animations, and start your custom ones here
- // remember that you should normally have only one animation for the LCD
- // and one for the background. But you can also combine them if you want.
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c
deleted file mode 100644
index 54fc2363c7..0000000000
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "./simple_visualizer.h"
-#include "util.h"
-#include "layers.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- switch(biton32(default_layer_state)) {
- case _QWERTY:
- state->layer_text = "QWERTY";
- state->target_lcd_color = LCD_COLOR(0, 255, 128);
- break;
- case _WORKMAN:
- state->layer_text = "Workman";
- state->target_lcd_color = LCD_COLOR(80, 255, 128);
- break;
- case _DVORAK:
- state->layer_text = "Dvorak";
- state->target_lcd_color = LCD_COLOR(194, 255, 128);
- break;
- case _COLEMAK:
- state->layer_text = "Colemak";
- state->target_lcd_color = LCD_COLOR(18, 255, 128);
- break;
- }
-
- switch(biton32(state->status.layer)) {
- case _LOWER:
- state->layer_text = "Lower";
- state->target_lcd_color = LCD_COLOR(141, 255, 255);
- break;
- case _RAISE:
- state->layer_text = "Raise";
- state->target_lcd_color = LCD_COLOR(18, 255, 255);
- break;
- case _ADJUST:
- state->layer_text = "Adjust";
- state->target_lcd_color = LCD_COLOR(194, 255, 255);
- break;
- case _NUM:
- state->layer_text = "Numpad";
- state->target_lcd_color = LCD_COLOR(80, 255, 255);
- break;
- case _MOUSE:
- state->layer_text = "Mouse";
- state->target_lcd_color = LCD_COLOR(300, 255, 255);
- break;
- case _GAME:
- state->layer_text = "Game";
- state->target_lcd_color = LCD_COLOR(300, 255, 255);
- break;
- case _QWERTY: case _WORKMAN: case _DVORAK: case _COLEMAK:
- break;
- default:
- state->layer_text = "NONE";
- state->target_lcd_color = LCD_COLOR(0, 255, 255);
- break;
- }
-}
diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h
deleted file mode 100644
index 740a951ec8..0000000000
--- a/keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef VISUALIZER_H_
-#define VISUALIZER_H_
-
-#include "visualizer.h"
-#include "led.h"
-
-void ergodox_led_lower_on (void);
-void ergodox_led_raise_on (void);
-void ergodox_led_adjust_on (void);
-
-void ergodox_led_lower_off (void);
-void ergodox_led_raise_off (void);
-void ergodox_led_adjust_off (void);
-
-void ergodox_led_lower_set (uint8_t n);
-void ergodox_led_raise_set (uint8_t n);
-void ergodox_led_adjust_set (uint8_t n);
-
-#endif /* VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c b/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c
deleted file mode 100644
index 61a724c63f..0000000000
--- a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "visualizer.h"
-#include "gfx.h"
-#include "math.h"
-#include "default_animations.h"
-#include "led_backlight_keyframes.h"
-
-#define NUM_ROWS LED_HEIGHT
-#define NUM_COLS LED_WIDTH
-
-#define ONESIDESCAN 10
-#define BOTHSIDESCAN 20
-#define FULL_ON LUMA2COLOR(255)
-#define THREE_QUARTER LUMA2COLOR(200)
-#define HALF_ON LUMA2COLOR(150)
-#define ONE_QUARTER LUMA2COLOR(50)
-
-#define CROSSFADE_TIME 500
-#define GRADIENT_TIME 3000
-bool led_backlight_keyframe_one_period_sweep(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_half_period_sweep_to_on(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_half_period_sweep_to_off(keyframe_animation_t* animation, visualizer_state_t* state);
-keyframe_animation_t Fade_in_all_leds = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {
- CROSSFADE_TIME,
- },
- .frame_functions = {
- led_backlight_keyframe_fade_in_all,
- },
-};
-keyframe_animation_t decreasing_gradient = {
- .num_frames = 8,
- .loop = true,
- .frame_lengths = {
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_normal_orientation,
-
- },
-};
-
-
-
-static uint8_t off_on_off_gradient(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index-M_PI;
- if((1*M_PI) < x && x < (3*M_PI))
- {
- float v = 0.5 * (cosf(x) + 1.0f);
- return (uint8_t)(255.0f * v);
- }
- else
- {
- return 0;
- }
-}
-static uint8_t off_on_gradient(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index-M_PI;
- float v;
- if((1*M_PI) < x && x < (2*M_PI))
- {
- v = 0.5 * (cosf(x) + 1.0f);
- }
- else if(x >= (2*M_PI))
- {
- v = 1;
- }
- else
- {
- v = 0;
- }
- return (uint8_t)(255.0f * v);
-}
-static uint8_t on_off_gradient(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index-M_PI;
- float v;
- if((2*M_PI) < x && x < (3*M_PI))
- {
- v = 0.5 * (cosf(x) + 1.0f);
-
- }
- else if(x >= (3*M_PI))
- {
- v = 0;
- }
- else
- {
- v = 1;
- }
- return (uint8_t)(255.0f * v);
-}
-
-bool led_backlight_keyframe_one_period_sweep(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i=0; i< NUM_COLS; i++) {
- uint8_t color = off_on_off_gradient(t*2, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-
-bool led_backlight_keyframe_half_period_sweep_to_on(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i=0; i< NUM_COLS; i++) {
- uint8_t color = off_on_gradient(t*2, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-bool led_backlight_keyframe_half_period_sweep_to_off(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i=0; i< NUM_COLS; i++) {
- uint8_t color = on_off_gradient(t*2, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-
-
-/*
- +---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
-| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | phase |
-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-| 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
-| 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
-| 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 |
-| 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 |
-| 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
-| 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 |
-| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 7 |
-| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 8 |
-| 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 0 | 9 |
-| 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 0 | 10 |
-| 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 0 | 11 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 0 | 12 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 13 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 14 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 15 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 16 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 3 | 17 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 18 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 19 |
-| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 20 |
-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-------+
-*/
-
-#ifdef MASTER_IS_ON_RIGHT /*right side*/
-keyframe_animation_t sweep_on_sweep_off_left_and_right = {
- .num_frames = 12,
- .loop = true,
- .frame_lengths = {
- 0,
- 1,
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_mirror_orientation,
- led_backlight_keyframe_fade_out_all,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- led_backlight_keyframe_normal_orientation,
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- keyframe_no_operation,
- led_backlight_keyframe_mirror_orientation,
-
- },
-};
-keyframe_animation_t both_sides_fade_across = {
- .num_frames = 10,
- .loop = true,
- .frame_lengths = {
- 0,
- 1,
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_mirror_orientation,
- led_backlight_keyframe_fade_out_all,
- keyframe_no_operation,
- keyframe_no_operation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_normal_orientation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- keyframe_no_operation,
- },
-};
-
-#else /*left side*/
-keyframe_animation_t sweep_on_sweep_off_left_and_right = {
- .num_frames = 10,
- .loop = true,
- .frame_lengths = {
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // right on
- gfxMillisecondsToTicks(GRADIENT_TIME), // left on
- gfxMillisecondsToTicks(GRADIENT_TIME), // right off
- gfxMillisecondsToTicks(GRADIENT_TIME), // left off
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- keyframe_no_operation,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_on,
- keyframe_no_operation,
- led_backlight_keyframe_half_period_sweep_to_off,
- led_backlight_keyframe_normal_orientation,
-
- },
-};
-keyframe_animation_t both_sides_fade_across = {
- .num_frames = 8,
- .loop = true,
- .frame_lengths = {
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- 0, // mirror leds
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- 0, // normal leds
- },
- .frame_functions = {
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_mirror_orientation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- keyframe_no_operation,
- led_backlight_keyframe_one_period_sweep,
- led_backlight_keyframe_normal_orientation,
-
- },
-};
-
-
-#endif
-
-#define RED 0
-#define ORANGE 21
-#define YELLOW 42
-#define SPRING_GREEN 64
-#define GREEN 85
-#define TURQUOISE 107
-#define CYAN 127
-#define OCEAN 149
-#define BLUE 170
-#define VIOLET 192
-#define MAGENTA 212
-#define RASPBERRY 234
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- uint8_t saturation = 255;
- /* if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
- saturation = 255;
- } */
-
- if (state->status.layer & 0x400) {
- state->target_lcd_color = LCD_COLOR(OCEAN, saturation, 0xFF);
- state->layer_text = "STENOGRAPHY";
- }
- else if (state->status.layer & 0x200) {
- state->target_lcd_color = LCD_COLOR(GREEN, saturation, 0xFF);
- state->layer_text = "FUNCTION";
- }
- else if (state->status.layer & 0x100) {
- state->target_lcd_color = LCD_COLOR(MAGENTA, saturation, 0xFF);
- state->layer_text = "Shortcuts Layer";
- stop_keyframe_animation(&sweep_on_sweep_off_left_and_right);
- start_keyframe_animation(&led_test_animation);
- }
- else if (state->status.layer & 0x80) {
- state->target_lcd_color = LCD_COLOR(VIOLET, saturation, 0xFF);
- state->layer_text = "Plover";
- }
- else if (state->status.layer & 0x40) {
- state->target_lcd_color = LCD_COLOR(RASPBERRY, saturation, 0xFF);
- state->layer_text = "Mirrored Symbols";
- }
- else if (state->status.layer & 0x20) {
- state->target_lcd_color = LCD_COLOR(RED, saturation, 0xFF);
- state->layer_text = "Symbols";
- }
- else if (state->status.layer & 0x8) {
- state->target_lcd_color = LCD_COLOR(OCEAN, saturation, 0xFF);
- state->layer_text = "Mirrored Dvorak";
- }
- else if (state->status.layer & 0x4) {
- state->target_lcd_color = LCD_COLOR(BLUE, saturation, 0xFF);
- state->layer_text = "Dvorak";
- stop_keyframe_animation(&led_test_animation);
- start_keyframe_animation(&sweep_on_sweep_off_left_and_right);
- }
- else if (state->status.layer & 0x2) {
- state->target_lcd_color = LCD_COLOR(ORANGE, saturation, 0xFF);
- state->layer_text = "Mirrored Qwerty";
- }
- else {
- state->target_lcd_color = LCD_COLOR(YELLOW, saturation, 0xFF);
- state->layer_text = "Qwerty";
- stop_keyframe_animation(&led_test_animation);
- start_keyframe_animation(&Fade_in_all_leds);
- }
-}
diff --git a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h b/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h
deleted file mode 100644
index c97a7a22a5..0000000000
--- a/keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef VISUALIZER_H_
-#define VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-extern keyframe_animation_t KITT_Scanner_animation;
-
-static keyframe_animation_t lcd_layer_display = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
- .num_frames = 2,
- .loop = false,
- // Note that there's a 200 ms no-operation frame,
- // this prevents the color from changing when activating the layer
- // momentarily
- .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
- .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- uint32_t prev_color = state->target_lcd_color;
- const char* prev_layer_text = state->layer_text;
-
- get_visualizer_layer_and_color(state);
-
- if (initial_update || prev_color != state->target_lcd_color) {
- start_keyframe_animation(&color_animation);
- }
-
- if (initial_update || prev_layer_text != state->layer_text) {
- start_keyframe_animation(&lcd_layer_display);
- }
- // You can also stop existing animations, and start your custom ones here
- // remember that you should normally have only one animation for the LCD
- // and one for the background. But you can also combine them if you want.
-
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/readme.md b/keyboards/ergodox_infinity/readme.md
index 73ee3bc1df..c51bdd7c82 100644
--- a/keyboards/ergodox_infinity/readme.md
+++ b/keyboards/ergodox_infinity/readme.md
@@ -13,18 +13,16 @@ for the left and right halves seperately. To flash them:
- Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util`
- - Build right hand firmware with `make ergodox_infinity:keymapname MASTER=right`
-
- Plug in the right hand keyboard only.
- Press the program button (back of keyboard, above thumb pad).
- - Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util MASTER=right`
+ - Install the firmware with `sudo make ergodox_infinity:keymapname:dfu-util`
More information on the Infinity firmware is available in the [TMK/chibios for
Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
-## Infinity Master/Two Halves
+## Infinity Two Halves
The Infinity is two completely independent keyboards, that can connect together.
You have a few options in how you flash the firmware:
@@ -32,21 +30,10 @@ You have a few options in how you flash the firmware:
- Add `#define EE_HANDS` to your config.h, initialize the EEPROM values (see below),
and then flash the same firmware to both halves.
-- Flash the left half, rebuild the firmware with "MASTER=right" and then flash
- the right half. This allows you to plug in either half directly to the
- computer and is what the above instructions do.
-
-- Flash the left half, then flash the same firmware on the right. This only
- works when the left half is plugged directly to the computer and the keymap
- is mirrored. It saves the small extra step of rebuilding with
- "MASTER=right".
-
-- The same as the previous one but with "MASTER=right" when you build the
- firmware, then flash the same firmware to both halves. You just have to
- directly connect the right half to the computer.
+- Flash with the instructions above, which assume the left hand is connected to USB.
- For minor changes such as changing only the keymap without having updated
- any part of the firmware code itself, you can program only the MASTER half,
+ any part of the firmware code itself, you can program only the half connected to USB,
but it is safest to program both halves.
### EE_HANDS initialization
@@ -74,7 +61,6 @@ They only need to be done once, unless you reset the EEPROM later.
- Add `#define EE_HANDS` to the config.h file of your keymap, and build your firmware using
`make ergodox_infinity:keymapname`.
- - After this, you can flash both halves with the same firmware, _without_ having to rebuild with
- "MASTER=right" or risking a mirrored keyboard when connected the wrong way.
+ - After this, you can flash both halves with the same firmware, _without_ risking a mirrored keyboard when connected the wrong way.
If you reset your EEPROM later, you'll have to follow these steps again, though.
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk
index 06b62f547d..b6922e1ee6 100644
--- a/keyboards/ergodox_infinity/rules.mk
+++ b/keyboards/ergodox_infinity/rules.mk
@@ -34,11 +34,4 @@ ST7565_ENABLE = yes
LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = IS31FL3731
-# Config for Visualizer (set VISUALIZER_ENABLE = yes and ST7565_ENABLE = no to use)
-LCD_ENABLE = yes
-LCD_BACKLIGHT_ENABLE = yes
-LCD_DRIVER = st7565
-LCD_WIDTH = 128
-LCD_HEIGHT = 32
-
LAYOUTS = ergodox
diff --git a/keyboards/ergodox_infinity/simple_visualizer.h b/keyboards/ergodox_infinity/simple_visualizer.h
deleted file mode 100644
index 73d0e08870..0000000000
--- a/keyboards/ergodox_infinity/simple_visualizer.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-#define KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "system/serial_link.h"
-#include "led.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-static keyframe_animation_t lcd_layer_display = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_and_led_states}
-};
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t color_animation = {
- .num_frames = 2,
- .loop = false,
- // Note that there's a 200 ms no-operation frame,
- // this prevents the color from changing when activating the layer
- // momentarily
- .frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
- .frame_functions = {keyframe_no_operation, lcd_backlight_keyframe_animate_color},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state);
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- uint32_t prev_color = state->target_lcd_color;
- const char* prev_layer_text = state->layer_text;
-
- get_visualizer_layer_and_color(state);
-
- if (initial_update || prev_color != state->target_lcd_color) {
- start_keyframe_animation(&color_animation);
- }
-
- if (initial_update || prev_layer_text != state->layer_text) {
- start_keyframe_animation(&lcd_layer_display);
- }
- // You can also stop existing animations, and start your custom ones here
- // remember that you should normally have only one animation for the LCD
- // and one for the background. But you can also combine them if you want.
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-#endif /* KEYBOARDS_ERGODOX_INFINITY_SIMPLE_VISUALIZER_H_ */
diff --git a/keyboards/ergodox_infinity/visualizer.c b/keyboards/ergodox_infinity/visualizer.c
deleted file mode 100644
index 1ea891e830..0000000000
--- a/keyboards/ergodox_infinity/visualizer.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
-Copyright 2016 Fred Sundvik <fsundvik@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/>.
-*/
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "lcd_keyframes.h"
-#include "lcd_backlight_keyframes.h"
-#include "default_animations.h"
-
-static const uint32_t logo_background_color = LCD_COLOR(0x00, 0x00, 0xFF);
-static const uint32_t initial_color = LCD_COLOR(0, 0, 0);
-
-static const uint32_t led_emulation_colors[4] = {
- LCD_COLOR(0, 0, 0),
- LCD_COLOR(255, 255, 255),
- LCD_COLOR(84, 255, 255),
- LCD_COLOR(168, 255, 255),
-};
-
-static uint32_t next_led_target_color = 0;
-
-typedef enum {
- LCD_STATE_INITIAL,
- LCD_STATE_LAYER_BITMAP,
- LCD_STATE_BITMAP_AND_LEDS,
-} lcd_state_t;
-
-static lcd_state_t lcd_state = LCD_STATE_INITIAL;
-
-typedef struct {
- uint8_t led_on;
- uint8_t led1;
- uint8_t led2;
- uint8_t led3;
-} visualizer_user_data_t;
-
-// Don't access from visualization function, use the visualizer state instead
-static visualizer_user_data_t user_data_keyboard = {
- .led_on = 0,
- .led1 = LED_BRIGHTNESS_HI,
- .led2 = LED_BRIGHTNESS_HI,
- .led3 = LED_BRIGHTNESS_HI,
-};
-
-_Static_assert(sizeof(visualizer_user_data_t) <= VISUALIZER_USER_DATA_SIZE,
- "Please increase the VISUALIZER_USER_DATA_SIZE");
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t one_led_color = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_backlight_keyframe_set_color},
-};
-
-bool swap_led_target_color(keyframe_animation_t* animation, visualizer_state_t* state) {
- uint32_t temp = next_led_target_color;
- next_led_target_color = state->target_lcd_color;
- state->target_lcd_color = temp;
- return false;
-}
-
-// The color animation animates the LCD color when you change layers
-static keyframe_animation_t two_led_colors = {
- .num_frames = 2,
- .loop = true,
- .frame_lengths = {gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_backlight_keyframe_set_color, swap_led_target_color},
-};
-
-// The LCD animation alternates between the layer name display and a
-// bitmap that displays all active layers
-static keyframe_animation_t lcd_bitmap_animation = {
- .num_frames = 1,
- .loop = false,
- .frame_lengths = {gfxMillisecondsToTicks(0)},
- .frame_functions = {lcd_keyframe_display_layer_bitmap},
-};
-
-static keyframe_animation_t lcd_bitmap_leds_animation = {
- .num_frames = 2,
- .loop = true,
- .frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)},
- .frame_functions = {lcd_keyframe_display_layer_bitmap, lcd_keyframe_display_led_states},
-};
-
-void initialize_user_visualizer(visualizer_state_t* state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- lcd_backlight_brightness(130);
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- lcd_state = LCD_STATE_INITIAL;
- start_keyframe_animation(&default_startup_animation);
-}
-
-static inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
- return user_data->led_on & (1u << num);
-}
-
-static uint8_t get_led_index_master(visualizer_user_data_t* user_data) {
- for (int i=0; i < 3; i++) {
- if (is_led_on(user_data, i)) {
- return i + 1;
- }
- }
- return 0;
-}
-
-static uint8_t get_led_index_slave(visualizer_user_data_t* user_data) {
- uint8_t master_index = get_led_index_master(user_data);
- if (master_index!=0) {
- for (int i=master_index; i < 3; i++) {
- if (is_led_on(user_data, i)) {
- return i + 1;
- }
- }
- }
-
- return 0;
-}
-
-static uint8_t get_secondary_led_index(visualizer_user_data_t* user_data) {
- if (is_led_on(user_data, 0) &&
- is_led_on(user_data, 1) &&
- is_led_on(user_data, 2)) {
- return 3;
- }
- return 0;
-}
-
-static uint8_t get_brightness(visualizer_user_data_t* user_data, uint8_t index) {
- switch (index) {
- case 1:
- return user_data->led1;
- case 2:
- return user_data->led2;
- case 3:
- return user_data->led3;
- }
- return 0;
-}
-
-static void update_emulated_leds(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- visualizer_user_data_t* user_data_new = (visualizer_user_data_t*)state->status.user_data;
- visualizer_user_data_t* user_data_old = (visualizer_user_data_t*)prev_status->user_data;
-
- uint8_t new_index;
- uint8_t old_index;
-
- if (is_keyboard_master()) {
- new_index = get_led_index_master(user_data_new);
- old_index = get_led_index_master(user_data_old);
- }
- else {
- new_index = get_led_index_slave(user_data_new);
- old_index = get_led_index_slave(user_data_old);
- }
- uint8_t new_secondary_index = get_secondary_led_index(user_data_new);
- uint8_t old_secondary_index = get_secondary_led_index(user_data_old);
-
- uint8_t old_brightness = get_brightness(user_data_old, old_index);
- uint8_t new_brightness = get_brightness(user_data_new, new_index);
-
- uint8_t old_secondary_brightness = get_brightness(user_data_old, old_secondary_index);
- uint8_t new_secondary_brightness = get_brightness(user_data_new, new_secondary_index);
-
- if (lcd_state == LCD_STATE_INITIAL ||
- new_index != old_index ||
- new_secondary_index != old_secondary_index ||
- new_brightness != old_brightness ||
- new_secondary_brightness != old_secondary_brightness) {
-
- if (new_secondary_index != 0) {
- state->target_lcd_color = change_lcd_color_intensity(
- led_emulation_colors[new_index], new_brightness);
- next_led_target_color = change_lcd_color_intensity(
- led_emulation_colors[new_secondary_index], new_secondary_brightness);
-
- stop_keyframe_animation(&one_led_color);
- start_keyframe_animation(&two_led_colors);
- } else {
- state->target_lcd_color = change_lcd_color_intensity(
- led_emulation_colors[new_index], new_brightness);
- stop_keyframe_animation(&two_led_colors);
- start_keyframe_animation(&one_led_color);
- }
- }
-}
-
-static void update_lcd_text(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- if (state->status.leds) {
- if (lcd_state != LCD_STATE_BITMAP_AND_LEDS ||
- state->status.leds != prev_status->leds ||
- state->status.layer != prev_status->layer ||
- state->status.default_layer != prev_status->default_layer) {
-
- // NOTE: that it doesn't matter if the animation isn't playing, stop will do nothing in that case
- stop_keyframe_animation(&lcd_bitmap_animation);
-
- lcd_state = LCD_STATE_BITMAP_AND_LEDS;
- // For information:
- // The logic in this function makes sure that this doesn't happen, but if you call start on an
- // animation that is already playing it will be restarted.
- start_keyframe_animation(&lcd_bitmap_leds_animation);
- }
- } else {
- if (lcd_state != LCD_STATE_LAYER_BITMAP ||
- state->status.layer != prev_status->layer ||
- state->status.default_layer != prev_status->default_layer) {
-
- stop_keyframe_animation(&lcd_bitmap_leds_animation);
-
- lcd_state = LCD_STATE_LAYER_BITMAP;
- start_keyframe_animation(&lcd_bitmap_animation);
- }
- }
-}
-
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status) {
- // Check the status here to start and stop animations
- // You might have to save some state, like the current animation here so that you can start the right
- // This function is called every time the status changes
-
- // NOTE that this is called from the visualizer thread, so don't access anything else outside the status
- // This is also important because the slave won't have access to the active layer for example outside the
- // status.
-
- update_emulated_leds(state, prev_status);
- update_lcd_text(state, prev_status);
-
-}
-
-void user_visualizer_suspend(visualizer_state_t* state) {
- state->layer_text = "Suspending...";
- uint8_t hue = LCD_HUE(state->current_lcd_color);
- uint8_t sat = LCD_SAT(state->current_lcd_color);
- state->target_lcd_color = LCD_COLOR(hue, sat, 0);
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t* state) {
- state->current_lcd_color = initial_color;
- state->target_lcd_color = logo_background_color;
- lcd_state = LCD_STATE_INITIAL;
- start_keyframe_animation(&default_startup_animation);
-}
-
-void ergodox_board_led_on(void){
- // No board led support
-}
-
-void ergodox_right_led_1_on(void){
- user_data_keyboard.led_on |= (1u << 0);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_on(void){
- user_data_keyboard.led_on |= (1u << 1);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_on(void){
- user_data_keyboard.led_on |= (1u << 2);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_board_led_off(void){
- // No board led support
-}
-
-void ergodox_right_led_1_off(void){
- user_data_keyboard.led_on &= ~(1u << 0);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_off(void){
- user_data_keyboard.led_on &= ~(1u << 1);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_off(void){
- user_data_keyboard.led_on &= ~(1u << 2);
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_1_set(uint8_t n) {
- user_data_keyboard.led1 = n;
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_2_set(uint8_t n) {
- user_data_keyboard.led2 = n;
- visualizer_set_user_data(&user_data_keyboard);
-}
-
-void ergodox_right_led_3_set(uint8_t n) {
- user_data_keyboard.led3 = n;
- visualizer_set_user_data(&user_data_keyboard);
-}
diff --git a/keyboards/ergotaco/post_rules.mk b/keyboards/ergotaco/post_rules.mk
new file mode 100644
index 0000000000..0db3171b33
--- /dev/null
+++ b/keyboards/ergotaco/post_rules.mk
@@ -0,0 +1,8 @@
+
+# A bunch of stuff that you shouldn't touch unless you
+# know what you're doing.
+#
+# No touchy, capiche?
+ifeq ($(strip $(DEBUG_MATRIX)), yes)
+ OPT_DEFS += -DDEBUG_MATRIX
+endif
diff --git a/keyboards/ergotaco/rules.mk b/keyboards/ergotaco/rules.mk
index 9fe0992ffd..db236477b0 100644
--- a/keyboards/ergotaco/rules.mk
+++ b/keyboards/ergotaco/rules.mk
@@ -14,6 +14,3 @@ COMMAND_ENABLE = yes
#
# No touchy, capiche?
SRC += matrix.c i2c_master.c
-ifeq ($(strip $(DEBUG_MATRIX)), yes)
- OPT_DEFS += -DDEBUG_MATRIX
-endif
diff --git a/keyboards/ergotravel/rev1/rev1.h b/keyboards/ergotravel/rev1/rev1.h
index 5907617ef3..2973f4d9f3 100644
--- a/keyboards/ergotravel/rev1/rev1.h
+++ b/keyboards/ergotravel/rev1/rev1.h
@@ -1,5 +1,4 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "ergotravel.h"
@@ -13,21 +12,20 @@
#endif
#endif
+#define XXX KC_NO
+
#define LAYOUT( \
L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05, L06 }, \
- { L10, L11, L12, L13, L14, L15, L16 }, \
- { L20, L21, L22, L23, L24, L25, L26 }, \
- { L30, L31, L32, L33, L34, L35, KC_NO }, \
- { R06, R05, R04, R03, R02, R01, R00 }, \
- { R16, R15, R14, R13, R12, R11, R10 }, \
- { R26, R25, R24, R23, R22, R21, R20 }, \
- { R35, R34, R33, R32, R31, R30, KC_NO } \
- }
-
-#endif
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, XXX }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R35, R34, R33, R32, R31, R30, XXX } \
+}
diff --git a/keyboards/evil80/evil80.h b/keyboards/evil80/evil80.h
index a880de98f5..90d4f6564b 100644
--- a/keyboards/evil80/evil80.h
+++ b/keyboards/evil80/evil80.h
@@ -1,23 +1,21 @@
-#ifndef EVIL80_H
-#define EVIL80_H
+#pragma once
#include "quantum.h"
-#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
- K500, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
- K501, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
- K502, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
- K503, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K414, \
- K504, K505, K506, K507, K509, K510, K511, K512, K513, K514, K515 \
-) \
-{ \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K414, KC_NO }, \
- { K500, K501, K502, K503, K504, K505, K506, K507, KC_NO, K509, K510, K511, K512, K513, K514, K515 } \
-}
+#define XXX KC_NO
-#endif
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k50, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k51, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k52, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k53, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4E, \
+ k54, k55, k56, k57, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, XXX, k4E, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, XXX, k59, k5A, k5B, k5C, k5D, k5E, k5F } \
+}
diff --git a/keyboards/evyd13/atom47/rev3/info.json b/keyboards/evyd13/atom47/rev3/info.json
index 0deaa7103c..fc602f699b 100644
--- a/keyboards/evyd13/atom47/rev3/info.json
+++ b/keyboards/evyd13/atom47/rev3/info.json
@@ -99,10 +99,11 @@
{"x":10.75, "y":2, "w":1.25},
{"x":12, "y":2},
- {"x":0, "y":3, "w":1.25},
- {"x":1.25, "y":3, "w":1.25},
- {"x":2.5, "y":3, "w":1.25},
- {"x":3.75, "y":3, "w":6.25},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3, "w":6},
+ {"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3}
diff --git a/keyboards/evyd13/atom47/rev4/info.json b/keyboards/evyd13/atom47/rev4/info.json
index a48b413588..d0fbf98742 100644
--- a/keyboards/evyd13/atom47/rev4/info.json
+++ b/keyboards/evyd13/atom47/rev4/info.json
@@ -99,10 +99,11 @@
{"x":10.75, "y":2, "w":1.25},
{"x":12, "y":2},
- {"x":0, "y":3, "w":1.25},
- {"x":1.25, "y":3, "w":1.25},
- {"x":2.5, "y":3, "w":1.25},
- {"x":3.75, "y":3, "w":6.25},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3, "w":6},
+ {"x":9, "y":3},
{"x":10, "y":3},
{"x":11, "y":3},
{"x":12, "y":3}
diff --git a/keyboards/evyd13/atom47/rev5/config.h b/keyboards/evyd13/atom47/rev5/config.h
index f1f8eacfa4..07252537ac 100644
--- a/keyboards/evyd13/atom47/rev5/config.h
+++ b/keyboards/evyd13/atom47/rev5/config.h
@@ -157,8 +157,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// ADDR2 represents A3:A2 of the 7-bit address.
// The result is: 0b101(ADDR2)(ADDR1)
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 64
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL \ No newline at end of file
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 64
diff --git a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h
index 44ac7dcd03..b77ac95d7d 100644
--- a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h
+++ b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h
@@ -17,14 +17,8 @@
#pragma once
#ifdef PS2_USE_USART
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 5
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
diff --git a/keyboards/exclusive/e6_rgb/config.h b/keyboards/exclusive/e6_rgb/config.h
index b1b8b1bed7..fd221f1765 100644
--- a/keyboards/exclusive/e6_rgb/config.h
+++ b/keyboards/exclusive/e6_rgb/config.h
@@ -31,8 +31,6 @@
#define RGBLIGHT_VAL_STEP 8
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 63
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 63
diff --git a/keyboards/exclusive/e6v2/le/config.h b/keyboards/exclusive/e6v2/le/config.h
index 8fc91e504c..f9295145ec 100644
--- a/keyboards/exclusive/e6v2/le/config.h
+++ b/keyboards/exclusive/e6v2/le/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -57,5 +56,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-
-#endif
diff --git a/keyboards/exclusive/e6v2/le/le.h b/keyboards/exclusive/e6v2/le/le.h
index d52560dfbe..41992a185e 100644
--- a/keyboards/exclusive/e6v2/le/le.h
+++ b/keyboards/exclusive/e6v2/le/le.h
@@ -1,36 +1,35 @@
-#ifndef LE_H
-#define LE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0D, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K42, K43, K44, K47, K49, K4A, K4B, K4C, K4D, K4E \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, K43, K44, KC_NO, KC_NO, K47, KC_NO, K49, K4A, K4B, K4C, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0D, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k42, k43, k44, k47, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, XXX, k42, k43, k44, XXX, XXX, k47, XXX, k49, k4A, k4B, k4C, k4D, k4E } \
}
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K42, K43, K47, K4A, K4B, K4D, K4E \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO }, \
- { K40, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k42, k43, k47, k4A, k4B, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \
+ { k40, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, k4A, k4B, XXX, k4D, k4E } \
}
/* LAYOUT_60_hhkb
@@ -47,18 +46,15 @@
* └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
*/
#define LAYOUT_60_hhkb( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0D, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
- K42, K43, K47, K4B, K4D \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E }, \
- { KC_NO, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, KC_NO, K4D, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0D, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, \
+ k42, k43, k47, k4B, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E }, \
+ { XXX, XXX, k42, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4B, XXX, k4D, XXX } \
}
-
-#endif
diff --git a/keyboards/exclusive/e6v2/oe/config.h b/keyboards/exclusive/e6v2/oe/config.h
index 13be6ccad6..d9362cfc03 100644
--- a/keyboards/exclusive/e6v2/oe/config.h
+++ b/keyboards/exclusive/e6v2/oe/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -54,5 +53,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-
-#endif
diff --git a/keyboards/exclusive/e6v2/oe/oe.h b/keyboards/exclusive/e6v2/oe/oe.h
index 0746039fe7..21daaa2aa9 100644
--- a/keyboards/exclusive/e6v2/oe/oe.h
+++ b/keyboards/exclusive/e6v2/oe/oe.h
@@ -1,66 +1,61 @@
-#ifndef OE_H
-#define OE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, KC_NO }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_hhkb( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K41, K42, K46, K4B, K4C \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
- { KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k41, k42, k46, k4B, k4C \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { XXX, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, XXX, XXX } \
}
#define LAYOUT_hhkb_splits( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K41, K42, K46, K4B, K4C \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
- { KC_NO, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, KC_NO }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k41, k42, k46, k4B, k4C \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { XXX, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/eyeohdesigns/sprh/info.json b/keyboards/eyeohdesigns/sprh/info.json
index ed05558614..7c99615965 100644
--- a/keyboards/eyeohdesigns/sprh/info.json
+++ b/keyboards/eyeohdesigns/sprh/info.json
@@ -1,13 +1,148 @@
{
- "keyboard_name": "sprh",
- "url": "",
- "maintainer": "eye oh designs",
+ "keyboard_name": "sprh",
+ "maintainer": "eye oh designs",
+ "url": "",
"layouts": {
- "LAYOUT_default": {
- "layout": [{"label":"Encd", "x":0.5, "y":0}, {"label":"Esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"Backspace", "x":14.5, "y":0, "w":2}, {"label":"Tab", "x":1, "y":1, "w":1.5}, {"label":"Q", "x":2.5, "y":1}, {"label":"W", "x":3.5, "y":1}, {"label":"E", "x":4.5, "y":1}, {"label":"R", "x":5.5, "y":1}, {"label":"T", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"U", "x":8.5, "y":1}, {"label":"I", "x":9.5, "y":1}, {"label":"O", "x":10.5, "y":1}, {"label":"P", "x":11.5, "y":1}, {"label":"[", "x":12.5, "y":1}, {"label":"]", "x":13.5, "y":1}, {"label":"\\", "x":14.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75}, {"label":"A", "x":2.5, "y":2}, {"label":"S", "x":3.5, "y":2}, {"label":"D", "x":4.5, "y":2}, {"label":"F", "x":5.5, "y":2}, {"label":"G", "x":6.5, "y":2}, {"label":"H", "x":7.5, "y":2}, {"label":"J", "x":8.5, "y":2}, {"label":"K", "x":9.5, "y":2}, {"label":"L", "x":10.5, "y":2}, {"label":";", "x":11.5, "y":2}, {"label":"'", "x":12.5, "y":2}, {"label":"Enter", "x":13.5, "y":2, "w":2.25}, {"label":"Shift", "x":0.25, "y":3, "w":2.25}, {"label":"Z", "x":2.5, "y":3}, {"label":"X", "x":3.5, "y":3}, {"label":"C", "x":4.5, "y":3}, {"label":"V", "x":5.5, "y":3}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}, {"label":",", "x":9.5, "y":3}, {"label":".", "x":10.5, "y":3}, {"label":"/", "x":11.5, "y":3}, {"label":"Shift", "x":12.5, "y":3, "w":2.75}, {"label":"\u2191", "x":15.25, "y":3}, {"label":"Super", "x":0, "y":4, "w":1.25}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.37, "y":4, "w":1.25}, {"x":4.62, "y":4, "w":6.25}, {"label":"Alt", "x":10.87, "y":4, "w":1.25}, {"label":"Function", "x":12.12, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4}, {"label":"\u2193", "x":15.25, "y":4}, {"label":"\u2192", "x":16.25, "y":4}]
+ "LAYOUT_default": {
+ "layout": [
+ { "label": "Encd", "x": 0.5, "y": 0 },
+ { "label": "Esc", "x": 1.5, "y": 0 },
+ { "label": "1", "x": 2.5, "y": 0 },
+ { "label": "2", "x": 3.5, "y": 0 },
+ { "label": "3", "x": 4.5, "y": 0 },
+ { "label": "4", "x": 5.5, "y": 0 },
+ { "label": "5", "x": 6.5, "y": 0 },
+ { "label": "6", "x": 7.5, "y": 0 },
+ { "label": "7", "x": 8.5, "y": 0 },
+ { "label": "8", "x": 9.5, "y": 0 },
+ { "label": "9", "x": 10.5, "y": 0 },
+ { "label": "0", "x": 11.5, "y": 0 },
+ { "label": "_", "x": 12.5, "y": 0 },
+ { "label": "+", "x": 13.5, "y": 0 },
+ { "label": "Backspace", "w": 2, "x": 14.5, "y": 0 },
+ { "label": "Tab", "w": 1.5, "x": 1, "y": 1 },
+ { "label": "Q", "x": 2.5, "y": 1 },
+ { "label": "W", "x": 3.5, "y": 1 },
+ { "label": "E", "x": 4.5, "y": 1 },
+ { "label": "R", "x": 5.5, "y": 1 },
+ { "label": "T", "x": 6.5, "y": 1 },
+ { "label": "Y", "x": 7.5, "y": 1 },
+ { "label": "U", "x": 8.5, "y": 1 },
+ { "label": "I", "x": 9.5, "y": 1 },
+ { "label": "O", "x": 10.5, "y": 1 },
+ { "label": "P", "x": 11.5, "y": 1 },
+ { "label": "[", "x": 12.5, "y": 1 },
+ { "label": "]", "x": 13.5, "y": 1 },
+ { "label": "\\", "w": 1.5, "x": 14.5, "y": 1 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0.75, "y": 2 },
+ { "label": "A", "x": 2.5, "y": 2 },
+ { "label": "S", "x": 3.5, "y": 2 },
+ { "label": "D", "x": 4.5, "y": 2 },
+ { "label": "F", "x": 5.5, "y": 2 },
+ { "label": "G", "x": 6.5, "y": 2 },
+ { "label": "H", "x": 7.5, "y": 2 },
+ { "label": "J", "x": 8.5, "y": 2 },
+ { "label": "K", "x": 9.5, "y": 2 },
+ { "label": "L", "x": 10.5, "y": 2 },
+ { "label": ";", "x": 11.5, "y": 2 },
+ { "label": "'", "x": 12.5, "y": 2 },
+ { "label": "Enter", "w": 2.25, "x": 13.5, "y": 2 },
+ { "label": "Shift", "w": 2.25, "x": 0.25, "y": 3 },
+ { "label": "Z", "x": 2.5, "y": 3 },
+ { "label": "X", "x": 3.5, "y": 3 },
+ { "label": "C", "x": 4.5, "y": 3 },
+ { "label": "V", "x": 5.5, "y": 3 },
+ { "label": "B", "x": 6.5, "y": 3 },
+ { "label": "N", "x": 7.5, "y": 3 },
+ { "label": "M", "x": 8.5, "y": 3 },
+ { "label": ",", "x": 9.5, "y": 3 },
+ { "label": ".", "x": 10.5, "y": 3 },
+ { "label": "/", "x": 11.5, "y": 3 },
+ { "label": "Shift", "w": 2.75, "x": 12.5, "y": 3 },
+ { "label": "\u2191", "x": 15.25, "y": 3 },
+ { "label": "Super", "w": 1.25, "x": 0, "y": 4 },
+ { "label": "Ctrl", "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 3.37, "y": 4 },
+ { "w": 6.25, "x": 4.62, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 10.87, "y": 4 },
+ { "label": "Function", "w": 1.25, "x": 12.12, "y": 4 },
+ { "label": "\u2190", "x": 14.25, "y": 4 },
+ { "label": "\u2193", "x": 15.25, "y": 4 },
+ { "label": "\u2192", "x": 16.25, "y": 4 }
+ ]
},
- "LAYOUT_split": {
- "layout": [{"label":"Encd", "x":0.5, "y":0}, {"label":"Esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"\u2190", "x":14.5, "y":0}, {"label":"Del", "x":15.5, "y":0}, {"label":"Tab", "x":1, "y":1, "w":1.5}, {"label":"Q", "x":2.5, "y":1}, {"label":"W", "x":3.5, "y":1}, {"label":"E", "x":4.5, "y":1}, {"label":"R", "x":5.5, "y":1}, {"label":"T", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"U", "x":8.5, "y":1}, {"label":"I", "x":9.5, "y":1}, {"label":"O", "x":10.5, "y":1}, {"label":"P", "x":11.5, "y":1}, {"label":"[", "x":12.5, "y":1}, {"label":"]", "x":13.5, "y":1}, {"label":"\\", "x":14.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75}, {"label":"A", "x":2.5, "y":2}, {"label":"S", "x":3.5, "y":2}, {"label":"D", "x":4.5, "y":2}, {"label":"F", "x":5.5, "y":2}, {"label":"G", "x":6.5, "y":2}, {"label":"H", "x":7.5, "y":2}, {"label":"J", "x":8.5, "y":2}, {"label":"K", "x":9.5, "y":2}, {"label":"L", "x":10.5, "y":2}, {"label":";", "x":11.5, "y":2}, {"label":"'", "x":12.5, "y":2}, {"label":"Enter", "x":13.5, "y":2, "w":2.25}, {"label":"Shift", "x":0.25, "y":3, "w":2.25}, {"label":"Z", "x":2.5, "y":3}, {"label":"X", "x":3.5, "y":3}, {"label":"C", "x":4.5, "y":3}, {"label":"V", "x":5.5, "y":3}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}, {"label":",", "x":9.5, "y":3}, {"label":".", "x":10.5, "y":3}, {"label":"/", "x":11.5, "y":3}, {"label":"Shift", "x":12.5, "y":3, "w":1.75}, {"label":"Fn", "x":14.25, "y":3}, {"label":"\u2191", "x":15.25, "y":3}, {"label":"Super", "x":0, "y":4, "w":1.25}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.37, "y":4, "w":1.25}, {"x":4.62, "y":4, "w":2.75}, {"x":7.37, "y":4, "w":2.25}, {"x":9.62, "y":4, "w":1.25}, {"label":"Alt", "x":10.87, "y":4, "w":1.25}, {"label":"Function", "x":12.12, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4}, {"label":"\u2193", "x":15.25, "y":4}, {"label":"\u2192", "x":16.25, "y":4}]
+ "LAYOUT_split": {
+ "layout": [
+ { "label": "Encd", "x": 0.5, "y": 0 },
+ { "label": "Esc", "x": 1.5, "y": 0 },
+ { "label": "1", "x": 2.5, "y": 0 },
+ { "label": "2", "x": 3.5, "y": 0 },
+ { "label": "3", "x": 4.5, "y": 0 },
+ { "label": "4", "x": 5.5, "y": 0 },
+ { "label": "5", "x": 6.5, "y": 0 },
+ { "label": "6", "x": 7.5, "y": 0 },
+ { "label": "7", "x": 8.5, "y": 0 },
+ { "label": "8", "x": 9.5, "y": 0 },
+ { "label": "9", "x": 10.5, "y": 0 },
+ { "label": "0", "x": 11.5, "y": 0 },
+ { "label": "_", "x": 12.5, "y": 0 },
+ { "label": "+", "x": 13.5, "y": 0 },
+ { "label": "\u2190", "x": 14.5, "y": 0 },
+ { "label": "Del", "x": 15.5, "y": 0 },
+ { "label": "Tab", "w": 1.5, "x": 1, "y": 1 },
+ { "label": "Q", "x": 2.5, "y": 1 },
+ { "label": "W", "x": 3.5, "y": 1 },
+ { "label": "E", "x": 4.5, "y": 1 },
+ { "label": "R", "x": 5.5, "y": 1 },
+ { "label": "T", "x": 6.5, "y": 1 },
+ { "label": "Y", "x": 7.5, "y": 1 },
+ { "label": "U", "x": 8.5, "y": 1 },
+ { "label": "I", "x": 9.5, "y": 1 },
+ { "label": "O", "x": 10.5, "y": 1 },
+ { "label": "P", "x": 11.5, "y": 1 },
+ { "label": "[", "x": 12.5, "y": 1 },
+ { "label": "]", "x": 13.5, "y": 1 },
+ { "label": "\\", "w": 1.5, "x": 14.5, "y": 1 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0.75, "y": 2 },
+ { "label": "A", "x": 2.5, "y": 2 },
+ { "label": "S", "x": 3.5, "y": 2 },
+ { "label": "D", "x": 4.5, "y": 2 },
+ { "label": "F", "x": 5.5, "y": 2 },
+ { "label": "G", "x": 6.5, "y": 2 },
+ { "label": "H", "x": 7.5, "y": 2 },
+ { "label": "J", "x": 8.5, "y": 2 },
+ { "label": "K", "x": 9.5, "y": 2 },
+ { "label": "L", "x": 10.5, "y": 2 },
+ { "label": ";", "x": 11.5, "y": 2 },
+ { "label": "'", "x": 12.5, "y": 2 },
+ { "label": "Enter", "w": 2.25, "x": 13.5, "y": 2 },
+ { "label": "CapsLock", "x": 0.25, "y": 3 },
+ { "label": "Shift", "w": 1.25, "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.5, "y": 3 },
+ { "label": "X", "x": 3.5, "y": 3 },
+ { "label": "C", "x": 4.5, "y": 3 },
+ { "label": "V", "x": 5.5, "y": 3 },
+ { "label": "B", "x": 6.5, "y": 3 },
+ { "label": "N", "x": 7.5, "y": 3 },
+ { "label": "M", "x": 8.5, "y": 3 },
+ { "label": ",", "x": 9.5, "y": 3 },
+ { "label": ".", "x": 10.5, "y": 3 },
+ { "label": "/", "x": 11.5, "y": 3 },
+ { "label": "Shift", "w": 1.75, "x": 12.5, "y": 3 },
+ { "label": "Fn", "x": 14.25, "y": 3 },
+ { "label": "\u2191", "x": 15.25, "y": 3 },
+ { "label": "Super", "w": 1.25, "x": 0, "y": 4 },
+ { "label": "Ctrl", "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 3.37, "y": 4 },
+ { "w": 2.75, "x": 4.62, "y": 4 },
+ { "w": 2.25, "x": 7.37, "y": 4 },
+ { "w": 1.25, "x": 9.62, "y": 4 },
+ { "label": "Alt", "w": 1.25, "x": 10.87, "y": 4 },
+ { "label": "Function", "w": 1.25, "x": 12.12, "y": 4 },
+ { "label": "\u2190", "x": 14.25, "y": 4 },
+ { "label": "\u2193", "x": 15.25, "y": 4 },
+ { "label": "\u2192", "x": 16.25, "y": 4 }
+ ]
}
}
}
diff --git a/keyboards/ez_maker/directpins/teensy_32/config.h b/keyboards/ez_maker/directpins/teensy_32/config.h
index 861ae70e41..c487a84ab1 100644
--- a/keyboards/ez_maker/directpins/teensy_32/config.h
+++ b/keyboards/ez_maker/directpins/teensy_32/config.h
@@ -17,7 +17,7 @@
#pragma once
// i2c_master defines
-#define I2C1_SCL 0 // A2 on pinout = B0
-#define I2C1_SDA 1 // A3 on pinout = B1
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // A3 on pinout = B1
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/ez_maker/directpins/teensy_lc/config.h b/keyboards/ez_maker/directpins/teensy_lc/config.h
index 861ae70e41..c487a84ab1 100644
--- a/keyboards/ez_maker/directpins/teensy_lc/config.h
+++ b/keyboards/ez_maker/directpins/teensy_lc/config.h
@@ -17,7 +17,7 @@
#pragma once
// i2c_master defines
-#define I2C1_SCL 0 // A2 on pinout = B0
-#define I2C1_SDA 1 // A3 on pinout = B1
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // A3 on pinout = B1
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/fc660c/actuation_point.h b/keyboards/fc660c/actuation_point.h
index f7066d92c1..e02832186c 100644
--- a/keyboards/fc660c/actuation_point.h
+++ b/keyboards/fc660c/actuation_point.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef ACTUATION_POINT_H
-#define ACTUATION_POINT_H
+#pragma once
#include <stdint.h>
@@ -28,5 +27,3 @@ void actuation_point_down(void);
// be careful with this.
void adjust_actuation_point(int offset);
-
-#endif
diff --git a/keyboards/fc660c/config.h b/keyboards/fc660c/config.h
index e979daf331..460881cb17 100644
--- a/keyboards/fc660c/config.h
+++ b/keyboards/fc660c/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -80,5 +79,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// test all keys before further adjustment.
// this should probably stay in the range +/-5.
// #define ACTUATION_DEPTH_ADJUSTMENT 0
-
-#endif
diff --git a/keyboards/fc660c/fc660c.h b/keyboards/fc660c/fc660c.h
index e3621570dd..fca02dc0e9 100644
--- a/keyboards/fc660c/fc660c.h
+++ b/keyboards/fc660c/fc660c.h
@@ -14,38 +14,23 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef FC660C_H
-#define FC660C_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
#define LAYOUT( \
- K13, K10, K11, K12, K14, K16, K17, K15, K1B, K18, K19, K1A, K1C, K1E, K1F, \
- K03, K00, K01, K02, K04, K06, K07, K05, K0B, K08, K09, K0A, K0C, K0E, K0F, \
- K43, K40, K41, K42, K44, K46, K47, K45, K4B, K48, K49, K4A, K4E, \
- K33, K31, K32, K34, K36, K37, K35, K3B, K38, K39, K3A, K3C, K3D, \
- K23, K21, K22, K27, K28, K2A, K2C, K2E, K2D, K2F \
+ k13, k10, k11, k12, k14, k16, k17, k15, k1B, k18, k19, k1A, k1C, k1E, k1F, \
+ k03, k00, k01, k02, k04, k06, k07, k05, k0B, k08, k09, k0A, k0C, k0E, k0F, \
+ k43, k40, k41, k42, k44, k46, k47, k45, k4B, k48, k49, k4A, k4E, \
+ k33, k31, k32, k34, k36, k37, k35, k3B, k38, k39, k3A, k3C, k3D, \
+ k23, k21, k22, k27, k28, k2A, k2C, k2E, k2D, k2F \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, \
- K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, \
- K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \
- { KC_NO, K21, K22, K23, KC_NO, KC_NO, KC_NO, K27, \
- K28, KC_NO, K2A, KC_NO, K2C, K2D, K2E, K2F }, \
- { KC_NO, K31, K32, K33, K34, K35, K36, K37, \
- K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, \
- K48, K49, K4A, K4B, KC_NO, KC_NO, K4E, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { XXX, k21, k22, k23, XXX, XXX, XXX, k27, k28, XXX, k2A, XXX, k2C, k2D, k2E, k2F }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, XXX, XXX, k4E, XXX } \
}
-/*
-KEYMAP(
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
- _______,_______,_______, _______, _______,_______,_______, _______,_______,_______
- )
-*/
-
-#endif
diff --git a/keyboards/fc660c/i2c.h b/keyboards/fc660c/i2c.h
index c15b6bc506..8910e70f10 100644
--- a/keyboards/fc660c/i2c.h
+++ b/keyboards/fc660c/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include <stdint.h>
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/fc980c/actuation_point.h b/keyboards/fc980c/actuation_point.h
index f7066d92c1..e02832186c 100644
--- a/keyboards/fc980c/actuation_point.h
+++ b/keyboards/fc980c/actuation_point.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef ACTUATION_POINT_H
-#define ACTUATION_POINT_H
+#pragma once
#include <stdint.h>
@@ -28,5 +27,3 @@ void actuation_point_down(void);
// be careful with this.
void adjust_actuation_point(int offset);
-
-#endif
diff --git a/keyboards/fc980c/config.h b/keyboards/fc980c/config.h
index b74ca64a5c..b0bffef760 100644
--- a/keyboards/fc980c/config.h
+++ b/keyboards/fc980c/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -87,5 +86,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// test all keys before further adjustment.
// this should probably stay in the range +/-5.
// #define ACTUATION_DEPTH_ADJUSTMENT 0
-
-#endif
diff --git a/keyboards/fc980c/i2c.h b/keyboards/fc980c/i2c.h
index c15b6bc506..8910e70f10 100644
--- a/keyboards/fc980c/i2c.h
+++ b/keyboards/fc980c/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include <stdint.h>
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/ferris/0_2/config.h b/keyboards/ferris/0_2/config.h
index 89eac7ed16..f51e5dd8f1 100644
--- a/keyboards/ferris/0_2/config.h
+++ b/keyboards/ferris/0_2/config.h
@@ -67,10 +67,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* i2c settings */
#define I2C_DRIVER I2CD2
-#define I2C1_SCL_BANK GPIOB
-#define I2C1_SCL 10
-#define I2C1_SDA_BANK GPIOB
-#define I2C1_SDA 11
+#define I2C1_SCL_PIN B10
+#define I2C1_SDA_PIN B11
#define I2C1_TIMINGR_PRESC 2U
#define I2C1_TIMINGR_SCLDEL 1U
#define I2C1_TIMINGR_SDADEL 0U
diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c
index afa8a344cd..ff0e66d65c 100644
--- a/keyboards/ferris/0_2/matrix.c
+++ b/keyboards/ferris/0_2/matrix.c
@@ -59,11 +59,6 @@ extern i2c_status_t mcp23017_status;
bool i2c_initialized = 0;
i2c_status_t mcp23017_status = I2C_ADDR;
-#define I2C2_SCL_BANK GPIOB
-#define I2C2_SCL 10
-#define I2C2_SDA_BANK GPIOB
-#define I2C2_SDA 11
-
uint8_t init_mcp23017(void) {
print("init mcp23017\n");
mcp23017_status = I2C_ADDR;
diff --git a/keyboards/flehrad/bigswitch/bigswitch.h b/keyboards/flehrad/bigswitch/bigswitch.h
index ea3d51a1f3..c6c2f026d5 100644
--- a/keyboards/flehrad/bigswitch/bigswitch.h
+++ b/keyboards/flehrad/bigswitch/bigswitch.h
@@ -14,15 +14,13 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef BIGSWITCH_H
-#define BIGSWITCH_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00 \
+ k00 \
) { \
- { K00 } \
+ { k00 } \
}
-
-#endif
diff --git a/keyboards/flehrad/bigswitch/config.h b/keyboards/flehrad/bigswitch/config.h
index b6fb15d3b7..c0f73366a7 100644
--- a/keyboards/flehrad/bigswitch/config.h
+++ b/keyboards/flehrad/bigswitch/config.h
@@ -14,8 +14,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -52,5 +52,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 8
#endif
-
-#endif
diff --git a/keyboards/fleuron/config.h b/keyboards/fleuron/config.h
index 21500d0e9e..fae7d941ae 100644
--- a/keyboards/fleuron/config.h
+++ b/keyboards/fleuron/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -112,5 +111,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN E6 // The pin the LED strip is connected to
#define RGBLED_NUM 18 // Number of LEDs in your strip
#define RGBLIGHT_ANIMATIONS
-
-#endif
diff --git a/keyboards/fleuron/fleuron.h b/keyboards/fleuron/fleuron.h
index abdccf2371..38f6bb38bf 100644
--- a/keyboards/fleuron/fleuron.h
+++ b/keyboards/fleuron/fleuron.h
@@ -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/>.
*/
-#ifndef FLEURON_H
-#define FLEURON_H
+
+#pragma once
#include "quantum.h"
@@ -23,22 +23,19 @@
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_ortho_6x16( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, \
- k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, \
- k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5e, k5f \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \
- { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f }, \
- { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5e, k5f } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F } \
}
#define LAYOUT_fleuron_grid LAYOUT_ortho_6x16
-
-#endif
diff --git a/keyboards/four_banger/config.h b/keyboards/four_banger/config.h
index 30e2bd21ac..7ad7a5c369 100644
--- a/keyboards/four_banger/config.h
+++ b/keyboards/four_banger/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/four_banger/four_banger.h b/keyboards/four_banger/four_banger.h
index a6da8dd0b7..1d735a1f0f 100644
--- a/keyboards/four_banger/four_banger.h
+++ b/keyboards/four_banger/four_banger.h
@@ -1,14 +1,11 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_2x2( \
- K00, K01, \
- K10, K11 \
+ k00, k01, \
+ k10, k11 \
) { \
- { K00, K01 }, \
- { K10, K11 } \
+ { k00, k01 }, \
+ { k10, k11 } \
}
-
-#endif
diff --git a/keyboards/fractal/config.h b/keyboards/fractal/config.h
index 5d4e0d49e3..b9aeac3855 100755
--- a/keyboards/fractal/config.h
+++ b/keyboards/fractal/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/gh80_3000/config.h b/keyboards/gh80_3000/config.h
index 68a405c8d9..71adb3e249 100644
--- a/keyboards/gh80_3000/config.h
+++ b/keyboards/gh80_3000/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/gh80_3000/gh80_3000.h b/keyboards/gh80_3000/gh80_3000.h
index 803d30ece5..9c58d6fe58 100644
--- a/keyboards/gh80_3000/gh80_3000.h
+++ b/keyboards/gh80_3000/gh80_3000.h
@@ -1,138 +1,143 @@
-#ifndef GH80_3000
-#define GH80_3000
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// default keymap: all 117 keys with ANSI Enter
#define LAYOUT( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, K007, K008, K009, K010, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K510, K204, K205, K206, K207, K208, K209, K210, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K610, K807, K808, K809, K810, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K710, K906, K907, K908, K909, K910, \
- KA00, KA01, KA02, KA03, K804, K805, K806, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA08, KA09, KA10 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, k07, k08, k09, k0A, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k5A, k24, k25, k26, k27, k28, k29, k2A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k6A, k87, k88, k89, k8A, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k7A, k96, k97, k98, k99, k9A, \
+ kA0, kA1, kA2, kA3, k84, k85, k86, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA8, kA9, kAA \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, K710 }, \
- { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, K904, K905, K906, K907, K908, K909, K910 }, \
- { KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, k7A }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9A }, \
+ { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kAA } \
}
// default ISO keymap: all 117 keys with ISO Enter
#define LAYOUT_iso( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, K007, K008, K009, K010, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K204, K205, K206, K207, K208, K209, K210, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K510, K610, K807, K808, K809, K810, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K710, K906, K907, K908, K909, K910, \
- KA00, KA01, KA02, KA03, K804, K805, K806, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA08, KA09, KA10 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, k07, k08, k09, k0A, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k24, k25, k26, k27, k28, k29, k2A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k5A, k6A, k87, k88, k89, k8A, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k7A, k96, k97, k98, k99, k9A, \
+ kA0, kA1, kA2, kA3, k84, k85, k86, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA8, kA9, kAA \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, K710 }, \
- { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, K904, K905, K906, K907, K908, K909, K910 }, \
- { KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, k7A }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, k9A }, \
+ { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kAA } \
}
// Standard ANSI Keyboard
#define LAYOUT_fullsize_ansi( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K510, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K610, K807, K808, K809, \
- K900, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA01, KA02, K805, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k5A, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k6A, k87, k88, k89, \
+ k90, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA1, kA2, k85, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, KC_NO, K902, K903, K904, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KA01, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, XXX, k92, k93, k94, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
// Standard ISO Keyboard
#define LAYOUT_fullsize_iso( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K510, K610, K807, K808, K809, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA01, KA02, K805, K604, K605, K904, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k5A, k6A, k87, k88, k89, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA1, kA2, k85, k64, k65, k94, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, K904, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KA01, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
// Winkeyless ANSI Keyboard
#define LAYOUT_fullsize_ansi_wkl( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K510, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K610, K807, K808, K809, \
- K900, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA02, K805, K605, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k5A, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k6A, k87, k88, k89, \
+ k90, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA2, k85, k65, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, KC_NO, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, KC_NO, K902, K903, KC_NO, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KC_NO, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, XXX, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, XXX, k92, k93, XXX, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, XXX, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
// Winkeyless ISO Keyboard
#define LAYOUT_fullsize_iso_wkl( \
- K000, K001, K002, K003, K300, K301, K302, K303, K306, K307, K308, K309, K310, K004, K005, K006, \
- K100, K101, K102, K103, K400, K401, K402, K403, K404, K405, K406, K407, K408, K410, K104, K105, K106, K107, K108, K109, K110, \
- K200, K201, K202, K203, K500, K501, K502, K503, K505, K506, K507, K508, K509, K204, K205, K206, K207, K208, K209, K810, \
- K800, K801, K802, K803, K600, K601, K602, K603, K606, K607, K608, K609, K510, K610, K807, K808, K809, \
- K900, K901, K902, K903, K700, K701, K702, K703, K705, K706, K707, K708, K709, K906, K907, K908, K909, KA10, \
- KA00, KA02, K805, K605, K905, KA04, KA05, KA06, KA07, KA09 \
+ k00, k01, k02, k03, k30, k31, k32, k33, k36, k37, k38, k39, k3A, k04, k05, k06, \
+\
+ k10, k11, k12, k13, k40, k41, k42, k43, k44, k45, k46, k47, k48, k4A, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k50, k51, k52, k53, k55, k56, k57, k58, k59, k24, k25, k26, k27, k28, k29, k8A, \
+ k80, k81, k82, k83, k60, k61, k62, k63, k66, k67, k68, k69, k5A, k6A, k87, k88, k89, \
+ k90, k91, k92, k93, k70, k71, k72, k73, k75, k76, k77, k78, k79, k96, k97, k98, k99, kAA, \
+ kA0, kA2, k85, k65, k95, kA4, kA5, kA6, kA7, kA9 \
) { \
- { K000, K001, K002, K003, K004, K005, K006, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
- { K300, K301, K302, K303, KC_NO, KC_NO, K306, K307, K308, K309, K310 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, KC_NO, K410 }, \
- { K500, K501, K502, K503, KC_NO, K505, K506, K507, K508, K509, K510 }, \
- { K600, K601, K602, K603, KC_NO, K605, K606, K607, K608, K609, K610 }, \
- { K700, K701, K702, K703, KC_NO, K705, K706, K707, K708, K709, KC_NO }, \
- { K800, K801, K802, K803, KC_NO, K805, KC_NO, K807, K808, K809, K810 }, \
- { K900, K901, K902, K903, KC_NO, K905, K906, K907, K908, K909, KC_NO }, \
- { KA00, KC_NO, KA02, KC_NO, KA04, KA05, KA06, KA07, KC_NO, KA09, KA10 } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, k36, k37, k38, k39, k3A }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A }, \
+ { k50, k51, k52, k53, XXX, k55, k56, k57, k58, k59, k5A }, \
+ { k60, k61, k62, k63, XXX, k65, k66, k67, k68, k69, k6A }, \
+ { k70, k71, k72, k73, XXX, k75, k76, k77, k78, k79, XXX }, \
+ { k80, k81, k82, k83, XXX, k85, XXX, k87, k88, k89, k8A }, \
+ { k90, k91, k92, k93, XXX, k95, k96, k97, k98, k99, XXX }, \
+ { kA0, XXX, kA2, XXX, kA4, kA5, kA6, kA7, XXX, kA9, kAA } \
}
-
-#endif
diff --git a/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c
index 834727827c..5f3e3f5fd8 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c
+++ b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c
@@ -20,7 +20,7 @@ enum userspace_layers {
};
//custom keycodes
-#define MODS_ALT_MASK (MOD_BIT(KC_LALT)) // Make ALT layer for encoder use
+#define MODS_ALT_MASK (MOD_BIT(KC_LALT)) // Make ALT layer for encoder use
#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)) // Make CTRL layer for encoder use
#define SWAP_L SGUI(KC_LEFT) // Swap application to left display
#define SWAP_R SGUI(KC_RGHT) // Swap application to right display
diff --git a/keyboards/gray_studio/cod67/cod67.h b/keyboards/gray_studio/cod67/cod67.h
index ed4a729971..85ebbab61b 100644
--- a/keyboards/gray_studio/cod67/cod67.h
+++ b/keyboards/gray_studio/cod67/cod67.h
@@ -13,24 +13,21 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef COD67_H
-#define COD67_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K48, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K40, K41, K42, K43, K44, K45, K46, K47, K0D, K49, K4A, K4B, K4C, K4D \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k48, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k0D, k49, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D } \
}
-
-#endif
diff --git a/keyboards/gskt00/config.h b/keyboards/gskt00/config.h
deleted file mode 100755
index 8ab0583cc8..0000000000
--- a/keyboards/gskt00/config.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER inachie
-#define PRODUCT GSKT00
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 8
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { F1, D1, D2, D4, D6, F7, B0, F4 }
-#define MATRIX_COL_PINS { F6, D7, F5, C7, B4, C6, B6, B5 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/gskt00/gskt00.c b/keyboards/gskt00/gskt00.c
deleted file mode 100755
index 89a0040ff3..0000000000
--- a/keyboards/gskt00/gskt00.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "gskt00.h"
-
diff --git a/keyboards/gskt00/gskt00.h b/keyboards/gskt00/gskt00.h
deleted file mode 100755
index 90e9a1ad5a..0000000000
--- a/keyboards/gskt00/gskt00.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef GSKT00_H
-#define GSKT00_H
-
-#include "quantum.h"
-
-#define LAYOUT_all( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
- K30, K40, K50, K60, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_60_iso_tsangan( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K24, K23, /* enter */ \
- K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { KC_NO, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_60_ansi_tsangan( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, KC_NO, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { KC_NO, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#endif
diff --git a/keyboards/gskt00/readme.md b/keyboards/gskt00/readme.md
deleted file mode 100644
index ad03ac819f..0000000000
--- a/keyboards/gskt00/readme.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# GSKT-00 PCB
-
-Firmware for the GSKT-00 PCB
-
-Keyboard Maintainer: [/u/iNachie](https://github.com/nachie)
-Hardware Supported: GSKT-00 PCB
-Hardware Availability: [/u/iNachie](https://www.reddit.com/user/inachie/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make gskt00:default
-
-Or to make and flash:
-
- make gskt00: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/hadron/hadron.h b/keyboards/hadron/hadron.h
index c11774729f..349311270e 100644
--- a/keyboards/hadron/hadron.h
+++ b/keyboards/hadron/hadron.h
@@ -1,33 +1,27 @@
-#ifndef HADRON_H
-#define HADRON_H
+#pragma once
#include "quantum.h"
-#ifdef KEYBOARD_hadron_ver0
- #include "ver0.h"
-#endif
-#ifdef KEYBOARD_hadron_ver2
- #include "ver2.h"
-#endif
-#ifdef KEYBOARD_hadron_ver3
- #include "ver3.h"
+#if defined(KEYBOARD_hadron_ver0)
+# include "ver0.h"
+#elif defined(KEYBOARD_hadron_ver2)
+# include "ver2.h"
+#elif defined(KEYBOARD_hadron_ver3)
+# include "ver3.h"
#endif
+#define XXX KC_NO
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
- ) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, KC_NO, KC_NO, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E } \
}
-
-
-#endif
diff --git a/keyboards/hadron/i2c.c b/keyboards/hadron/i2c.c
deleted file mode 100644
index cd2b835d50..0000000000
--- a/keyboards/hadron/i2c.c
+++ /dev/null
@@ -1,166 +0,0 @@
-#include <util/twi.h>
-#include <avr/io.h>
-#include <stdlib.h>
-#include <avr/interrupt.h>
-#include <util/twi.h>
-#include <stdbool.h>
-#include "i2c.h"
-
-#ifdef USE_I2C
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-
- // easier way, but will wait slightly longer
- // _delay_us(100);
-}
-
-// Setup twi to run at 100kHz
-void i2c_master_init(void) {
- // no prescaler
- TWSR = 0;
- // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
-
- i2c_delay();
-
- // check that we started successfully
- if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
- return 1;
-
- // send device address
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
- return 1; // slave did not acknowledge
- else
- return 0; // success
-}
-
-
-// Finish the i2c transaction.
-void i2c_master_stop(void) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-}
-
-// Write one byte to the i2c slave.
-// returns 0 => slave ACK
-// 1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
- TWDR = data;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- // check if the slave acknowledged us
- return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
-}
-
-// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
-// if ack=0 the acknowledge bit is not set.
-// returns: byte read from i2c device
-uint8_t i2c_master_read(int ack) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
-
- i2c_delay();
- return TWDR;
-}
-
-void i2c_reset_state(void) {
- TWCR = 0;
-}
-
-void i2c_slave_init(uint8_t address) {
- TWAR = address << 0; // slave i2c address
- // TWEN - twi enable
- // TWEA - enable address acknowledgement
- // TWINT - twi interrupt flag
- // TWIE - enable the twi interrupt
- TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
-}
-
-ISR(TWI_vect);
-
-ISR(TWI_vect) {
- uint8_t ack = 1;
- switch(TW_STATUS) {
- case TW_SR_SLA_ACK:
- // this device has been addressed as a slave receiver
- slave_has_register_set = false;
- break;
-
- case TW_SR_DATA_ACK:
- // this device has received data as a slave receiver
- // The first byte that we receive in this transaction sets the location
- // of the read/write location of the slaves memory that it exposes over
- // i2c. After that, bytes will be written at slave_buffer_pos, incrementing
- // slave_buffer_pos after each write.
- if(!slave_has_register_set) {
- slave_buffer_pos = TWDR;
- // don't acknowledge the master if this memory loctaion is out of bounds
- if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
- ack = 0;
- slave_buffer_pos = 0;
- }
- slave_has_register_set = true;
- } else {
- i2c_slave_buffer[slave_buffer_pos] = TWDR;
- BUFFER_POS_INC();
- }
- break;
-
- case TW_ST_SLA_ACK:
- case TW_ST_DATA_ACK:
- // master has addressed this device as a slave transmitter and is
- // requesting data.
- TWDR = i2c_slave_buffer[slave_buffer_pos];
- BUFFER_POS_INC();
- break;
-
- case TW_BUS_ERROR: // something went wrong, reset twi state
- TWCR = 0;
- default:
- break;
- }
- // Reset everything, so we are ready for the next TWI interrupt
- TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
-}
-
-
-
-#endif
diff --git a/keyboards/hadron/i2c.h b/keyboards/hadron/i2c.h
deleted file mode 100644
index 2bd7f40968..0000000000
--- a/keyboards/hadron/i2c.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef I2C_H
-#define I2C_H
-
-#include <stdint.h>
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency
-#define SCL_CLOCK 800000L
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
-
-
-static inline unsigned char i2c_start_read(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_READ);
-}
-
-static inline unsigned char i2c_start_write(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_WRITE);
-}
-
-// from SSD1306 scrips
-extern unsigned char i2c_rep_start(unsigned char addr);
-extern void i2c_start_wait(unsigned char addr);
-extern unsigned char i2c_readAck(void);
-extern unsigned char i2c_readNak(void);
-extern unsigned char i2c_read(unsigned char ack);
-
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/hadron/ver2/config.h b/keyboards/hadron/ver2/config.h
index e051db209c..c992f7fe33 100644
--- a/keyboards/hadron/ver2/config.h
+++ b/keyboards/hadron/ver2/config.h
@@ -28,10 +28,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F6, F7, D6, C7, F5, F4, F1, F0, D2, D3, D5, B3, B2, B1, B0 }
#define UNUSED_PINS
-
-#define USE_I2C
-#define SSD1306OLED
-#define OLED_ROTATE180
+// configure oled driver for the 128x32 oled
+#define OLED_UPDATE_INTERVAL 33 // ~30fps
/* ws2812 RGB LED*/
#define RGB_DI_PIN D4
diff --git a/keyboards/hadron/ver2/keymaps/default/keymap.c b/keyboards/hadron/ver2/keymaps/default/keymap.c
index 8e3d50d3d7..f24239aa22 100644
--- a/keyboards/hadron/ver2/keymaps/default/keymap.c
+++ b/keyboards/hadron/ver2/keymaps/default/keymap.c
@@ -1,10 +1,4 @@
#include QMK_KEYBOARD_H
-#ifdef USE_I2C
-#include "i2c.h"
-#endif
-#ifdef SSD1306OLED
-#include "ssd1306.h"
-#endif
//Following line allows macro to read current RGB settings
extern rgblight_config_t rgblight_config;
@@ -18,8 +12,8 @@ extern rgblight_config_t rgblight_config;
#define _DVORAK 2
#define _LOWER 3
#define _RAISE 4
-#define _MOUSECURSOR 8
-#define _ADJUST 16
+#define _MOUSECURSOR 5
+#define _ADJUST 6
enum preonic_keycodes {
QWERTY = SAFE_RANGE,
@@ -307,115 +301,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
-//Functions for ver2
-#ifdef KEYBOARD_hadron_ver2
-#include <LUFA/Drivers/Peripheral/TWI.h>
void matrix_init_user(void) {
- #ifdef USE_I2C
- i2c_master_init();
- #ifdef SSD1306OLED
- // calls code for the SSD1306 OLED
- _delay_ms(400);
- TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
- iota_gfx_init(); // turns on the display
- #endif
- #endif
- #ifdef AUDIO_ENABLE
- startup_user();
- #endif
-}
-
-
-void matrix_scan_user(void) {
- #ifdef SSD1306OLED
- iota_gfx_task(); // this is what updates the display continuously
- #endif
-}
-
-void matrix_update(struct CharacterMatrix *dest,
- const struct CharacterMatrix *source) {
- if (memcmp(dest->display, source->display, sizeof(dest->display))) {
- memcpy(dest->display, source->display, sizeof(dest->display));
- dest->dirty = true;
- }
-}
-//assign the right code to your layers for OLED display
-#define L_BASE 0
-#define L_LOWER 8
-#define L_RAISE 16
-#define L_FNLAYER 64
-#define L_NUMLAY 128
-#define L_NLOWER 136
-#define L_NFNLAYER 192
-#define L_MOUSECURSOR 256
-#define L_ADJUST 65560
-
-void iota_gfx_task_user(void) {
-#if DEBUG_TO_SCREEN
- if (debug_enable) {
- return;
- }
-#endif
-
- struct CharacterMatrix matrix;
-
- matrix_clear(&matrix);
- matrix_write_P(&matrix, PSTR("USB: "));
-#ifdef PROTOCOL_LUFA
- switch (USB_DeviceState) {
- case DEVICE_STATE_Unattached:
- matrix_write_P(&matrix, PSTR("Unattached"));
- break;
- case DEVICE_STATE_Suspended:
- matrix_write_P(&matrix, PSTR("Suspended"));
- break;
- case DEVICE_STATE_Configured:
- matrix_write_P(&matrix, PSTR("Connected"));
- break;
- case DEVICE_STATE_Powered:
- matrix_write_P(&matrix, PSTR("Powered"));
- break;
- case DEVICE_STATE_Default:
- matrix_write_P(&matrix, PSTR("Default"));
- break;
- case DEVICE_STATE_Addressed:
- matrix_write_P(&matrix, PSTR("Addressed"));
- break;
- default:
- matrix_write_P(&matrix, PSTR("Invalid"));
- }
+#ifdef AUDIO_ENABLE
+ startup_user();
#endif
-
-// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
-
- char buf[40];
- snprintf(buf,sizeof(buf), "Undef-%ld", layer_state);
- matrix_write_P(&matrix, PSTR("\n\nLayer: "));
- switch (layer_state) {
- case L_BASE:
- matrix_write_P(&matrix, PSTR("Default"));
- break;
- case L_RAISE:
- matrix_write_P(&matrix, PSTR("Raise"));
- break;
- case L_LOWER:
- matrix_write_P(&matrix, PSTR("Lower"));
- break;
- case L_ADJUST:
- matrix_write_P(&matrix, PSTR("ADJUST"));
- break;
- default:
- matrix_write(&matrix, buf);
- }
-
- // Host Keyboard LED Status
- char led[40];
- snprintf(led, sizeof(led), "\n%s %s %s",
- (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
- (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
- (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
- matrix_write(&matrix, led);
- matrix_update(&display, &matrix);
}
-
-#endif
diff --git a/keyboards/hadron/ver2/keymaps/readme.md b/keyboards/hadron/ver2/keymaps/readme.md
deleted file mode 100644
index 2f7641d185..0000000000
--- a/keyboards/hadron/ver2/keymaps/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of Planck keymaps
-
-* **default** default Planck layout
diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
index c63ae93855..74f95b4b75 100644
--- a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
+++ b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
@@ -1,15 +1,4 @@
#include QMK_KEYBOARD_H
-#include <LUFA/Drivers/Peripheral/TWI.h>
-#ifdef AUDIO_ENABLE
- #include "audio.h"
-#endif
-#ifdef USE_I2C
-#include "i2c.h"
-#endif
-#ifdef SSD1306OLED
-#include "ssd1306.h"
-#endif
-extern keymap_config_t keymap_config;
//Following line allows macro to read current RGB settings
extern rgblight_config_t rgblight_config;
@@ -19,12 +8,12 @@ extern rgblight_config_t rgblight_config;
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QWERTY 0
-#define _LOWER 3
-#define _RAISE 4
-#define _FNLAYER 6
-#define _NUMLAY 7
-#define _MOUSECURSOR 8
-#define _ADJUST 16
+#define _LOWER 1
+#define _RAISE 2
+#define _FNLAYER 3
+#define _NUMLAY 4
+#define _MOUSECURSOR 5
+#define _ADJUST 6
enum preonic_keycodes {
QWERTY = SAFE_RANGE,
@@ -41,10 +30,7 @@ enum preonic_keycodes {
RGBLED_DECREASE_SAT,
RGBLED_INCREASE_VAL,
RGBLED_DECREASE_VAL,
-};
-
-enum macro_keycodes {
- KC_DEMOMACRO,
+ DEMOMACRO,
};
// Custom macros
@@ -57,7 +43,6 @@ enum macro_keycodes {
#define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor
#define LT_RAI(kc) LT(_RAISE, kc) // L-ayer T-ap to Raise
#define TG_NUMLAY TG(_NUMLAY) //Toggle for layer _NUMLAY
-#define DEMOMACRO M(KC_DEMOMACRO) // My login macros
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -322,29 +307,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
+ case DEMOMACRO:
+ if (record->event.pressed) {
+ SEND_STRING("hello world");
+ }
+ return false;
+ break;
}
return true;
}
void matrix_init_user(void) {
- #ifdef USE_I2C
- i2c_master_init();
- #ifdef SSD1306OLED
- // calls code for the SSD1306 OLED
- _delay_ms(400);
- TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
- iota_gfx_init(); // turns on the display
- #endif
- #endif
- #ifdef AUDIO_ENABLE
- startup_user();
- #endif
-}
-
-void matrix_scan_user(void) {
- #ifdef SSD1306OLED
- iota_gfx_task(); // this is what updates the display continuously
- #endif
+#ifdef AUDIO_ENABLE
+ startup_user();
+#endif
}
#ifdef AUDIO_ENABLE
@@ -373,109 +349,3 @@ void music_scale_user(void)
}
#endif
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
-
- switch (id) {
- case KC_DEMOMACRO:
- if (record->event.pressed){
- return MACRO (I(1), T(H),T(E),T(L), T(L), T(O), T(SPACE), T(W), T(O), T(R), T(L), T(D), END);
- }
- }
-
- return MACRO_NONE;
-}
-
-void matrix_update(struct CharacterMatrix *dest,
- const struct CharacterMatrix *source) {
- if (memcmp(dest->display, source->display, sizeof(dest->display))) {
- memcpy(dest->display, source->display, sizeof(dest->display));
- dest->dirty = true;
- }
-}
-
-//assign the right code to your layers for OLED display
-#define L_BASE 0
-#define L_LOWER 8
-#define L_RAISE 16
-#define L_FNLAYER 64
-#define L_NUMLAY 128
-#define L_NLOWER 136
-#define L_NFNLAYER 192
-#define L_MOUSECURSOR 256
-#define L_ADJUST 65560
-
-void iota_gfx_task_user(void) {
-#if DEBUG_TO_SCREEN
- if (debug_enable) {
- return;
- }
-#endif
-
- struct CharacterMatrix matrix;
-
- matrix_clear(&matrix);
- matrix_write_P(&matrix, PSTR("USB: "));
-#ifdef PROTOCOL_LUFA
- switch (USB_DeviceState) {
- case DEVICE_STATE_Unattached:
- matrix_write_P(&matrix, PSTR("Unattached"));
- break;
- case DEVICE_STATE_Suspended:
- matrix_write_P(&matrix, PSTR("Suspended"));
- break;
- case DEVICE_STATE_Configured:
- matrix_write_P(&matrix, PSTR("Connected"));
- break;
- case DEVICE_STATE_Powered:
- matrix_write_P(&matrix, PSTR("Powered"));
- break;
- case DEVICE_STATE_Default:
- matrix_write_P(&matrix, PSTR("Default"));
- break;
- case DEVICE_STATE_Addressed:
- matrix_write_P(&matrix, PSTR("Addressed"));
- break;
- default:
- matrix_write_P(&matrix, PSTR("Invalid"));
- }
-#endif
-
-// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
-
- char buf[40];
- snprintf(buf,sizeof(buf), "Undef-%ld", layer_state);
- matrix_write_P(&matrix, PSTR("\n\nLayer: "));
- switch (layer_state) {
- case L_BASE:
- matrix_write_P(&matrix, PSTR("Default"));
- break;
- case L_RAISE:
- matrix_write_P(&matrix, PSTR("Raise"));
- break;
- case L_LOWER:
- matrix_write_P(&matrix, PSTR("Lower"));
- break;
- case L_ADJUST:
- matrix_write_P(&matrix, PSTR("ADJUST"));
- break;
- default:
- matrix_write(&matrix, buf);
- }
-
- // Host Keyboard LED Status
- char led[40];
- snprintf(led, sizeof(led), "\n%s %s %s",
- (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
- (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
- (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
- matrix_write(&matrix, led);
- matrix_update(&display, &matrix);
-}
diff --git a/keyboards/hadron/ver2/rules.mk b/keyboards/hadron/ver2/rules.mk
index e9200d1066..1d28cc0714 100644
--- a/keyboards/hadron/ver2/rules.mk
+++ b/keyboards/hadron/ver2/rules.mk
@@ -5,26 +5,19 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
+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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
+COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-
-EXTRAFLAGS += -flto
-
-
-SRC = i2c.c \
- ssd1306.c
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/hadron/ver2/ver2.c b/keyboards/hadron/ver2/ver2.c
index f00b4f26d6..ca13427497 100644
--- a/keyboards/hadron/ver2/ver2.c
+++ b/keyboards/hadron/ver2/ver2.c
@@ -1 +1,65 @@
#include "ver2.h"
+
+#ifdef OLED_ENABLE
+__attribute__ ((weak))
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+__attribute__ ((weak))
+void oled_task_user(void) {
+ oled_write_P(PSTR("LAYER "), false);
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(18, 0);
+ oled_write_P(PSTR("NUM"), led_state.num_lock);
+ oled_set_cursor(18, 1);
+ oled_write_P(PSTR("CAP"), led_state.caps_lock);
+ oled_set_cursor(18, 2);
+ oled_write_P(PSTR("SCR"), led_state.scroll_lock);
+
+ uint8_t mod_state = get_mods();
+ oled_set_cursor(10, 3);
+ oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT);
+ oled_advance_char();
+ oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL);
+ oled_advance_char();
+ oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT);
+ oled_advance_char();
+ oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI);
+ oled_advance_char();
+
+/* Matrix display is 12 x 12 pixels */
+#define MATRIX_DISPLAY_X 5
+#define MATRIX_DISPLAY_Y 18
+
+ // matrix
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ bool on = (matrix_get_row(x) & (1 << y)) > 0;
+ oled_write_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2, on);
+ }
+ }
+
+ // outline
+ for (uint8_t x = 0; x < 19; x++) {
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y + 9, true);
+ }
+ for (uint8_t y = 0; y < 9; y++) {
+ oled_write_pixel(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y+y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + 19, MATRIX_DISPLAY_Y+y, true);
+ }
+
+ // oled location
+ for (uint8_t x = 0; x < 3; x++) {
+ oled_write_pixel(MATRIX_DISPLAY_X + 14 + x, MATRIX_DISPLAY_Y + 2, true);
+ }
+
+ // bodge for layer number left hand side
+ for (uint8_t y = 0; y < 8; y++) {
+ oled_write_pixel(35, 0 + y, true);
+ }
+}
+#endif
diff --git a/keyboards/hadron/ver2/ver2.h b/keyboards/hadron/ver2/ver2.h
index 54e141ffac..8127b497f7 100644
--- a/keyboards/hadron/ver2/ver2.h
+++ b/keyboards/hadron/ver2/ver2.h
@@ -1,6 +1,3 @@
-#ifndef VER2_H
-#define VER2_H
+#pragma once
-#include "../hadron.h"
-
-#endif \ No newline at end of file
+#include "hadron.h"
diff --git a/keyboards/hadron/ver3/config.h b/keyboards/hadron/ver3/config.h
index 574dc6b016..54fab6662d 100644
--- a/keyboards/hadron/ver3/config.h
+++ b/keyboards/hadron/ver3/config.h
@@ -15,8 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV3_CONFIG_H
-#define REV3_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define DEVICE_VER 0x0003
@@ -70,16 +69,8 @@
#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
#endif
-//configure qwiic micro_oled driver for the 128x32 oled
-#ifdef QWIIC_MICRO_OLED_ENABLE
-
-#undef I2C_ADDRESS_SA0_1
-#define I2C_ADDRESS_SA0_1 0b0111100
-#define LCDWIDTH 128
-#define LCDHEIGHT 32
-#define micro_oled_rotate_180
-
-#endif
+// configure oled driver for the 128x32 oled
+#define OLED_UPDATE_INTERVAL 33 // ~30fps
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
// #define DEBOUNCE 6
@@ -186,5 +177,3 @@
// #define RGB_MATRIX_KEYPRESSES
#define SOLENOID_PIN A14
-
-#endif
diff --git a/keyboards/hadron/ver3/keymaps/default/config.h b/keyboards/hadron/ver3/keymaps/default/config.h
deleted file mode 100644
index 6f70f09bee..0000000000
--- a/keyboards/hadron/ver3/keymaps/default/config.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/keyboards/hadron/ver3/keymaps/default/keymap.c b/keyboards/hadron/ver3/keymaps/default/keymap.c
index cec43e95d4..b897ffcab1 100644
--- a/keyboards/hadron/ver3/keymaps/default/keymap.c
+++ b/keyboards/hadron/ver3/keymaps/default/keymap.c
@@ -9,8 +9,8 @@
#define _DVORAK 2
#define _LOWER 3
#define _RAISE 4
-#define _MOUSECURSOR 8
-#define _ADJUST 16
+#define _MOUSECURSOR 5
+#define _ADJUST 6
enum preonic_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/hadron/ver3/keymaps/readme.md b/keyboards/hadron/ver3/keymaps/readme.md
deleted file mode 100644
index 66bf06b711..0000000000
--- a/keyboards/hadron/ver3/keymaps/readme.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of Hadron keymaps
-
-* **default** default Hadron layout
-* **ishtob** ishtob's Hadron layout
-* **sebaslayout** sebaslayout's Hadron layout \ No newline at end of file
diff --git a/keyboards/hadron/ver3/rules.mk b/keyboards/hadron/ver3/rules.mk
index f3cc14b17d..c8681a1418 100644
--- a/keyboards/hadron/ver3/rules.mk
+++ b/keyboards/hadron/ver3/rules.mk
@@ -21,7 +21,8 @@ AUDIO_ENABLE = yes
RGBLIGHT_ENABLE = yes
RGB_MATRIX_ENABLE = no # once arm_rgb is implemented
RGB_MATRIX_DRIVER = WS2812
-HAPTIC_ENABLE += DRV2605L
-QWIIC_ENABLE = yes
-QWIIC_DRIVERS += MICRO_OLED
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
ENCODER_ENABLER = yes
diff --git a/keyboards/hadron/ver3/ver3.c b/keyboards/hadron/ver3/ver3.c
index 0664bf4b0e..40bc57c20e 100644
--- a/keyboards/hadron/ver3/ver3.c
+++ b/keyboards/hadron/ver3/ver3.c
@@ -14,9 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ver3.h"
-#include "qwiic.h"
-#include "action_layer.h"
-#include "haptic.h"
#ifdef RGB_MATRIX_ENABLE
@@ -36,185 +33,66 @@ led_config_t g_led_config = { {
#endif
-uint8_t *o_fb;
-
-uint16_t counterst = 0;
-
-
-
-#ifdef QWIIC_MICRO_OLED_ENABLE
-
-/* screen off after this many milliseconds */
-#include "timer.h"
-#define ScreenOffInterval 60000 /* milliseconds */
-static uint16_t last_flush;
-
-volatile uint8_t led_numlock = false;
-volatile uint8_t led_capslock = false;
-volatile uint8_t led_scrolllock = false;
-
-static uint8_t layer;
-static bool queue_for_send = false;
-static uint8_t encoder_value = 32;
-
+#ifdef OLED_ENABLE
__attribute__ ((weak))
-void draw_ui(void) {
- clear_buffer();
- last_flush = timer_read();
- send_command(DISPLAYON);
-
-/* Layer indicator is 41 x 10 pixels */
-#define LAYER_INDICATOR_X 5
-#define LAYER_INDICATOR_Y 0
-
- draw_string(LAYER_INDICATOR_X + 1, LAYER_INDICATOR_Y + 2, "LAYER", PIXEL_ON, NORM, 0);
- draw_rect_filled_soft(LAYER_INDICATOR_X + 32, LAYER_INDICATOR_Y + 1, 9, 9, PIXEL_ON, NORM);
- draw_char(LAYER_INDICATOR_X + 34, LAYER_INDICATOR_Y + 2, layer + 0x30, PIXEL_ON, XOR, 0);
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
-/* Matrix display is 19 x 9 pixels */
+__attribute__ ((weak))
+void oled_task_user(void) {
+ oled_write_P(PSTR("LAYER"), false);
+ oled_advance_char();
+ oled_write_char(get_highest_layer(layer_state) + 0x30, true);
+
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(18, 0);
+ oled_write_P(PSTR("NUM"), led_state.num_lock);
+ oled_set_cursor(18, 1);
+ oled_write_P(PSTR("CAP"), led_state.caps_lock);
+ oled_set_cursor(18, 2);
+ oled_write_P(PSTR("SCR"), led_state.scroll_lock);
+
+ uint8_t mod_state = get_mods();
+ oled_set_cursor(10, 3);
+ oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT);
+ oled_advance_char();
+ oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL);
+ oled_advance_char();
+ oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT);
+ oled_advance_char();
+ oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI);
+ oled_advance_char();
+
+/* Matrix display is 12 x 12 pixels */
#define MATRIX_DISPLAY_X 5
#define MATRIX_DISPLAY_Y 18
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- for (uint8_t y = 0; y < MATRIX_COLS; y++) {
- draw_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2,(matrix_get_row(x) & (1 << y)) > 0, NORM);
- }
- }
- draw_rect_soft(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y, 19, 9, PIXEL_ON, NORM);
- /* hadron oled location on thumbnail */
- draw_rect_filled_soft(MATRIX_DISPLAY_X + 14, MATRIX_DISPLAY_Y + 2, 3, 1, PIXEL_ON, NORM);
-/*
- draw_rect_soft(0, 13, 64, 6, PIXEL_ON, NORM);
- draw_line_vert(encoder_value, 13, 6, PIXEL_ON, NORM);
-
-*/
-
-/* Mod display is 41 x 16 pixels */
-#define MOD_DISPLAY_X 30
-#define MOD_DISPLAY_Y 18
-
- uint8_t mods = get_mods();
- if (mods & MOD_LSFT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 0, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 3, MOD_DISPLAY_Y + 2, "S", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LCTL) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 10, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 13, MOD_DISPLAY_Y + 2, "C", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LALT) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 20, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 23, MOD_DISPLAY_Y + 2, "A", PIXEL_ON, NORM, 0);
- }
- if (mods & MOD_LGUI) {
- draw_rect_filled_soft(MOD_DISPLAY_X + 30, MOD_DISPLAY_Y, 5 + (1 * 6), 11, PIXEL_ON, NORM);
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_OFF, NORM, 0);
- } else {
- draw_string(MOD_DISPLAY_X + 33, MOD_DISPLAY_Y + 2, "G", PIXEL_ON, NORM, 0);
- }
-
-/* Lock display is 23 x 32 */
-#define LOCK_DISPLAY_X 100
-#define LOCK_DISPLAY_Y 0
+ // matrix
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ for (uint8_t y = 0; y < MATRIX_COLS; y++) {
+ bool on = (matrix_get_row(x) & (1 << y)) > 0;
- if (led_numlock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X, LOCK_DISPLAY_Y, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_OFF, NORM, 0);
- } else if (led_numlock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 1, "NUM", PIXEL_ON, NORM, 0);
- }
- if (led_capslock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 11, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_OFF, NORM, 0);
- } else if (led_capslock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 11 +1, "CAP", PIXEL_ON, NORM, 0);
- }
+ // force on for oled location
+ if((x == 0) && (y >= (MATRIX_COLS - 3))) on = 1;
- if (led_scrolllock == true) {
- draw_rect_filled_soft(LOCK_DISPLAY_X + 0, LOCK_DISPLAY_Y + 22, 5 + (3 * 6), 9, PIXEL_ON, NORM);
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_OFF, NORM, 0);
- } else if (led_scrolllock == false) {
- draw_string(LOCK_DISPLAY_X + 3, LOCK_DISPLAY_Y + 22 +1, "SCR", PIXEL_ON, NORM, 0);
- }
- send_buffer();
-}
-
-void read_host_led_state(void) {
- uint8_t leds = host_keyboard_leds();
- if (leds & (1 << USB_LED_NUM_LOCK)) {
- if (led_numlock == false){
- led_numlock = true;}
- } else {
- if (led_numlock == true){
- led_numlock = false;}
+ oled_write_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2, on);
+ }
}
- if (leds & (1 << USB_LED_CAPS_LOCK)) {
- if (led_capslock == false){
- led_capslock = true;}
- } else {
- if (led_capslock == true){
- led_capslock = false;}
+
+ // outline
+ for (uint8_t x = 0; x < 19; x++) {
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + x, MATRIX_DISPLAY_Y + 9, true);
}
- if (leds & (1 << USB_LED_SCROLL_LOCK)) {
- if (led_scrolllock == false){
- led_scrolllock = true;}
- } else {
- if (led_scrolllock == true){
- led_scrolllock = false;}
+ for (uint8_t y = 0; y < 9; y++) {
+ oled_write_pixel(MATRIX_DISPLAY_X, MATRIX_DISPLAY_Y+y, true);
+ oled_write_pixel(MATRIX_DISPLAY_X + 19, MATRIX_DISPLAY_Y+y, true);
}
-}
-
-uint32_t layer_state_set_kb(uint32_t state) {
- state = layer_state_set_user(state);
- layer = biton32(state);
- queue_for_send = true;
- return state;
-}
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- queue_for_send = true;
- return process_record_user(keycode, record);
-}
-
-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;
- encoder_value = (encoder_value + (clockwise ? 1 : -1)) % 64;
- queue_for_send = true;
- return true;
-}
-
-#endif
-
-void matrix_init_kb(void) {
- queue_for_send = true;
- matrix_init_user();
+ // bodge for layer number left hand side
+ for (uint8_t y = 0; y < 8; y++) {
+ oled_write_pixel(35, 0 + y, true);
+ }
}
-
-void matrix_scan_kb(void) {
-if (queue_for_send) {
-#ifdef QWIIC_MICRO_OLED_ENABLE
- read_host_led_state();
- draw_ui();
#endif
- queue_for_send = false;
- }
-#ifdef QWIIC_MICRO_OLED_ENABLE
- if (timer_elapsed(last_flush) > ScreenOffInterval) {
- send_command(DISPLAYOFF); /* 0xAE */
- }
-#endif
- if (counterst == 0) {
- //testPatternFB(o_fb);
- }
- counterst = (counterst + 1) % 1024;
- //rgblight_task();
- matrix_scan_user();
-}
diff --git a/keyboards/handwired/108key_trackpoint/config.h b/keyboards/handwired/108key_trackpoint/config.h
index b1ac790d76..b5bf98271a 100644
--- a/keyboards/handwired/108key_trackpoint/config.h
+++ b/keyboards/handwired/108key_trackpoint/config.h
@@ -12,14 +12,8 @@
#define MATRIX_COLS 23
#ifdef PS2_USE_USART
- #define PS2_CLOCK_PORT PORTD
- #define PS2_CLOCK_PIN PIND
- #define PS2_CLOCK_DDR DDRD
- #define PS2_CLOCK_BIT 5
- #define PS2_DATA_PORT PORTD
- #define PS2_DATA_PIN PIND
- #define PS2_DATA_DDR DDRD
- #define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
diff --git a/keyboards/handwired/412_64/412_64.h b/keyboards/handwired/412_64/412_64.h
index 27a32f15aa..9601f1257c 100644
--- a/keyboards/handwired/412_64/412_64.h
+++ b/keyboards/handwired/412_64/412_64.h
@@ -1,29 +1,23 @@
-
-#ifndef FOURx16_H
-#define FOURx16_H
+#pragma once
#include "quantum.h"
-#define ___ KC_NO
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_ortho_4x16( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K31, \
- K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, \
- K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, K62, K63 \
-) \
-{ \
- { K00, K02, K04, K06, K08, K10, K12, K14 }, \
- { K01, K03, K05, K07, K09, K11, K13, K15 }, \
- { K16, K18, K20, K22, K24, K26, K28, K30 }, \
- { K17, K19, K21, K23, K25, K27, K29, K31 }, \
- { K32, K34, K36, K38, K40, K42, K44, K46 }, \
- { K33, K35, K37, K39, K41, K43, K45, K47 }, \
- { K48, K50, K52, K54, K56, K58, K60, K62 }, \
- { K49, K51, K53, K55, K57, K59, K61, K63 } \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
}
-
-#endif
diff --git a/keyboards/handwired/42/rules.mk b/keyboards/handwired/42/rules.mk
index 3a6f75b2e3..72d7ebf915 100644
--- a/keyboards/handwired/42/rules.mk
+++ b/keyboards/handwired/42/rules.mk
@@ -23,4 +23,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/arrow_pad/arrow_pad.h b/keyboards/handwired/arrow_pad/arrow_pad.h
index b93fd113f2..2d677beb5c 100644
--- a/keyboards/handwired/arrow_pad/arrow_pad.h
+++ b/keyboards/handwired/arrow_pad/arrow_pad.h
@@ -1,5 +1,4 @@
-#ifndef ARROW_PAD_H
-#define ARROW_PAD_H
+#pragma once
#include "quantum.h"
#include "matrix.h"
@@ -10,34 +9,34 @@
#include <avr/io.h>
#include <stddef.h>
+#define XXX KC_NO
+
// This is the 21-key keypad to 4x6 element matrix mapping
#define LAYOUT( \
- KM_ESC, KM_TAB, KM_BSL, KM_ARR, \
- KM_NUM, KM_FSL, KM_AST, KM_MIN, \
- KM___7, KM___8, KM___9, KM_EQU, \
- KM___4, KM___5, KM___6, KM_PLS, \
- KM___1, KM___2, KM___3, ___ENT, \
- KM___0, _____0, KM_DOT, KM_ENT \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53 \
) { \
- { KM_ESC, KM_TAB, KM_BSL, KM_ARR }, \
- { KM_NUM, KM_FSL, KM_AST, KM_MIN }, \
- { KM___7, KM___8, KM___9, KM_EQU }, \
- { KM___4, KM___5, KM___6, KM_PLS }, \
- { KM___1, KM___2, KM___3, KC_NO }, \
- { KM___0, KC_NO, KM_DOT, KM_ENT } \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 }, \
+ { k40, k41, k42, k43 }, \
+ { k50, k51, k52, k53 } \
}
// This is the 21-key keypad to 2x11 element matrix mapping
#define LAYOUT_pad21( \
- KM_ESC, KM_TAB, KM_BSL, KM_ARR, \
- KM_NUM, KM_FSL, KM_AST, KM_MIN, \
- KM___7, KM___8, KM___9, \
- KM___4, KM___5, KM___6, KM_PLS, \
- KM___1, KM___2, KM___3, \
- KM___0, KM_DOT, KM_ENT \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k04, k05, k06, \
+ k14, k15, k16, k07, \
+ k08, k09, k0A, \
+ k19, k1A, k17 \
) { \
- { KM_ESC, KM_TAB, KM_BSL, KM_ARR, KM___7, KM___8, KM___9, KM_PLS, KM___1, KM___2, KM___3, }, \
- { KM_NUM, KM_FSL, KM_AST, KM_MIN, KM___4, KM___5, KM___6, KM_ENT, KC_NO, KM___0, KM_DOT, }, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, XXX, k19, k1A } \
}
-
-#endif
diff --git a/keyboards/handwired/arrow_pad/config.h b/keyboards/handwired/arrow_pad/config.h
index b23c5db8f0..dcbdef2fcc 100644
--- a/keyboards/handwired/arrow_pad/config.h
+++ b/keyboards/handwired/arrow_pad/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -102,5 +101,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h
index a53c267424..710292a187 100644
--- a/keyboards/handwired/atreus50/atreus50.h
+++ b/keyboards/handwired/atreus50/atreus50.h
@@ -1,23 +1,21 @@
-#ifndef ATREUS50_H
-#define ATREUS50_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, km0, km1, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, km0, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, km1, k36, k37, k38, k39, k3a, k3b } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, kM0, kM1, k36, k37, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, XXX, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, XXX, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, kM0, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, kM1, k36, k37, k38, k39, k3A, k3B } \
}
#define KC_ KC_TRNS
-
-#endif
diff --git a/keyboards/handwired/atreus50/config.h b/keyboards/handwired/atreus50/config.h
index 062892347c..4a385c35cf 100644
--- a/keyboards/handwired/atreus50/config.h
+++ b/keyboards/handwired/atreus50/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -102,5 +101,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/bdn9_ble/rules.mk b/keyboards/handwired/bdn9_ble/rules.mk
index c73855bdee..79dba772f3 100644
--- a/keyboards/handwired/bdn9_ble/rules.mk
+++ b/keyboards/handwired/bdn9_ble/rules.mk
@@ -21,6 +21,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH = AdafruitBLE # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = no
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/cmd60/cmd60.h b/keyboards/handwired/cmd60/cmd60.h
index 2e0baa9997..5c196e899f 100644
--- a/keyboards/handwired/cmd60/cmd60.h
+++ b/keyboards/handwired/cmd60/cmd60.h
@@ -1,20 +1,19 @@
-#ifndef CMD60_H
-#define CMD60_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3D, \
- K40, K41, K42, K45, K4A, K4B, K4C, K4D \
- ) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D }, \
- { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3D, \
+ k40, k41, k42, k45, k4A, k4B, k4C, k4D \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, XXX, k3D }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4A, k4B, k4C, k4D } \
}
-
-#endif
diff --git a/keyboards/handwired/cmd60/config.h b/keyboards/handwired/cmd60/config.h
index 80f37055f2..ba54cab247 100644
--- a/keyboards/handwired/cmd60/config.h
+++ b/keyboards/handwired/cmd60/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/dactyl/config.h b/keyboards/handwired/dactyl/config.h
index 10c43d1307..29a008f0c6 100644
--- a/keyboards/handwired/dactyl/config.h
+++ b/keyboards/handwired/dactyl/config.h
@@ -17,8 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef DACTYL_CONFIG_H
-#define DACTYL_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -64,5 +63,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DEBOUNCE 15
#define USB_MAX_POWER_CONSUMPTION 500
-
-#endif
diff --git a/keyboards/handwired/dactyl/dactyl.h b/keyboards/handwired/dactyl/dactyl.h
index a6a043496c..b901b67673 100644
--- a/keyboards/handwired/dactyl/dactyl.h
+++ b/keyboards/handwired/dactyl/dactyl.h
@@ -1,5 +1,4 @@
-#ifndef DACTYL_H
-#define DACTYL_H
+#pragma once
#include "quantum.h"
#include <stdint.h>
@@ -25,39 +24,31 @@ extern bool i2c_initialized;
void init_dactyl(void);
void init_expander(void);
-/*
- * LEFT HAND: LINES 38-45
- * RIGHT HAND: LINES 47-54
- */
-#define LAYOUT_dactyl( \
- \
- k00,k01,k02,k03,k04,k05, \
- k10,k11,k12,k13,k14,k15, \
- k20,k21,k22,k23,k24,k25, \
- k30,k31,k32,k33,k34,k35, \
- k40,k41,k42,k43,k44, \
- k55,k50, \
- k54, \
- k53,k52,k51, \
- \
- k06,k07,k08,k09,k0A,k0B, \
- k16,k17,k18,k19,k1A,k1B, \
- k26,k27,k28,k29,k2A,k2B, \
- k36,k37,k38,k39,k3A,k3B, \
- k47,k48,k49,k4A,k4B, \
- k5B,k56, \
- k57, \
- k5A,k59,k58 ) \
- \
- /* matrix positions */ \
- { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
- { k40, k41, k42, k43, k44, KC_NO, KC_NO, k47, k48, k49, k4A, k4B }, \
- { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B }, \
- }
+#define XXX KC_NO
-
-#endif
+#define LAYOUT_dactyl( \
+ k00, k01, k02, k03, k04, k05, \
+ k10, k11, k12, k13, k14, k15, \
+ k20, k21, k22, k23, k24, k25, \
+ k30, k31, k32, k33, k34, k35, \
+ k40, k41, k42, k43, k44, \
+ k55, k50, \
+ k54, \
+ k53, k52, k51, \
+\
+ k06, k07, k08, k09, k0A, k0B, \
+ k16, k17, k18, k19, k1A, k1B, \
+ k26, k27, k28, k29, k2A, k2B, \
+ k36, k37, k38, k39, k3A, k3B, \
+ k47, k48, k49, k4A, k4B, \
+ k5B, k56, \
+ k57, \
+ k5A, k59, k58 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
+ { k40, k41, k42, k43, k44, XXX, XXX, k47, k48, k49, k4A, k4B }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B } \
+}
diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h
index 79ea625d9e..cb147654ba 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h
@@ -34,9 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// // right half adafruit feather
// #define MATRIX_COL_PINS { F1, F0, B1, B2, B3, D2 }
// #define MATRIX_ROW_PINS { D6, B7, B6, B5, D7, C6 }
-// #define AdafruitBleResetPin D4
-// #define AdafruitBleCSPin B4
-// #define AdafruitBleIRQPin E6
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/fivethirteen/config.h b/keyboards/handwired/fivethirteen/config.h
index fc7c3a7e7a..45b459a0ad 100644
--- a/keyboards/handwired/fivethirteen/config.h
+++ b/keyboards/handwired/fivethirteen/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/fivethirteen/fivethirteen.h b/keyboards/handwired/fivethirteen/fivethirteen.h
index 6d14b7f1c0..ffa0bd59d5 100644
--- a/keyboards/handwired/fivethirteen/fivethirteen.h
+++ b/keyboards/handwired/fivethirteen/fivethirteen.h
@@ -1,21 +1,19 @@
-#ifndef FIVETHIRTEEN_H
-#define FIVETHIRTEEN_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, \
- k40, k41, k42, k43, k44, k46, k47, k48, k49, k410, k411, k412 \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012 }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112 }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212 }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312 }, \
- { k40, k41, k42, k43, k44, KC_NO, k46, k47, k48, k49, k410, k411, k412 } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k43, k44, k46, k47, k48, k49, k4A, k4B, k4C \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C }, \
+ { k40, k41, k42, k43, k44, XXX, k46, k47, k48, k49, k4A, k4B, k4C } \
}
-
-#endif
diff --git a/keyboards/handwired/fruity60/rules.mk b/keyboards/handwired/fruity60/rules.mk
index a5ab76a314..855bd38313 100644
--- a/keyboards/handwired/fruity60/rules.mk
+++ b/keyboards/handwired/fruity60/rules.mk
@@ -21,8 +21,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
LAYOUTS = 60_tsangan_hhkb
diff --git a/keyboards/handwired/gamenum/config.h b/keyboards/handwired/gamenum/config.h
index 13a14c7cf8..1be44a1156 100644
--- a/keyboards/handwired/gamenum/config.h
+++ b/keyboards/handwired/gamenum/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/gamenum/gamenum.h b/keyboards/handwired/gamenum/gamenum.h
index 3a1429ff8c..48883b1185 100644
--- a/keyboards/handwired/gamenum/gamenum.h
+++ b/keyboards/handwired/gamenum/gamenum.h
@@ -1,21 +1,19 @@
-#ifndef GAMENUM_H
-#define GAMENUM_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- k00, k01, k02, k03, \
- k10, k11, k12, k13, \
- k20, k21, k22, \
- k30, k31, k32, \
- k41, k42, k43 \
-) \
-{ \
- { k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
- { k20, k21, k22, KC_NO }, \
- { k30, k31, k32, KC_NO }, \
- { KC_NO, k41, k42, k43 } \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, \
+ k41, k42, k43 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, XXX }, \
+ { k30, k31, k32, XXX }, \
+ { XXX, k41, k42, k43 } \
}
-
-#endif
diff --git a/keyboards/handwired/hacked_motospeed/rules.mk b/keyboards/handwired/hacked_motospeed/rules.mk
index 79bfe8a86a..6a8ad8fe82 100644
--- a/keyboards/handwired/hacked_motospeed/rules.mk
+++ b/keyboards/handwired/hacked_motospeed/rules.mk
@@ -18,7 +18,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
-BLUETOOTH = RN42
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = RN42
diff --git a/keyboards/handwired/jn68m/jn68m.h b/keyboards/handwired/jn68m/jn68m.h
index d47f9f6c9c..a5500824bb 100644
--- a/keyboards/handwired/jn68m/jn68m.h
+++ b/keyboards/handwired/jn68m/jn68m.h
@@ -13,37 +13,37 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef JN68M_H
-#define JN68M_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K1 , K2 , K3 , K4 , K5 , K6 , K7 , K8 , K9 , K10, K11, K12, K13, K14, K67, K68,\
- K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K69, K70,\
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, \
- K43, K44, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, \
- K56, K57, K58, K59, K60, K61, K63, K64, K65, K66 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3B, k3C, k3E, \
+ k40, k41, k42, k45, k49, k4B, k4C, k4D, k4E, k4F \
) { \
- { K1 , K2 , K3 , K4 , K5 , K6 , K7 , K8 , K9 , K10, K11, K12, K13, K14, K67, K68 }, \
- { K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K69, K70 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42,KC_NO,KC_NO,KC_NO}, \
- { K43, K44, K45, K46, K47, K48, K49, K50, K51, K52,KC_NO,K53, K54,KC_NO,K55,KC_NO}, \
- { K56, K57, K58,KC_NO,KC_NO,K59,KC_NO,KC_NO,KC_NO,K60,KC_NO,K61, K63, K64, K65, K66} \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, XXX, k3B, k3C, XXX, k3E, XXX }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, XXX, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_splitbs( \
- K1 , K2 , K3 , K4 , K5 , K6 , K7 , K8 , K9 , K10, K11, K12, K13, K14, K15, K67, K68,\
- K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K69, K70,\
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, \
- K43, K44, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, \
- K56, K57, K58, K59, K60, K61, K63, K64, K65, K66 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k2D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3B, k3C, k3E, \
+ k40, k41, k42, k45, k49, k4B, k4C, k4D, k4E, k4F \
) { \
- { K1 , K2 , K3 , K4 , K5 , K6 , K7 , K8 , K9 , K10, K11, K12, K13, K14, K67, K68 }, \
- { K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K69, K70 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K15,KC_NO,KC_NO}, \
- { K43, K44, K45, K46, K47, K48, K49, K50, K51, K52,KC_NO,K53, K54,KC_NO,K55,KC_NO}, \
- { K56, K57, K58,KC_NO,KC_NO,K59,KC_NO,KC_NO,KC_NO,K60,KC_NO,K61, K63, K64, K65, K66} \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, XXX, k3B, k3C, XXX, k3E, XXX }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, XXX, k4B, k4C, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/handwired/kbod/kbod.h b/keyboards/handwired/kbod/kbod.h
index 5d9dbd05b3..86ff0e8ead 100644
--- a/keyboards/handwired/kbod/kbod.h
+++ b/keyboards/handwired/kbod/kbod.h
@@ -1,21 +1,22 @@
-#ifndef KBOD_H
-#define KBOD_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
- k40, k41, k42, k43, k44, k45, k46, k47 \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07 }, { k08, k09, k0A, k0B, k0C, k0D, KC_NO, KC_NO }, \
- { k10, k11, k12, k13, k14, k15, k16, k17 }, { k18, k19, k1A, k1B, k1C, k1D, KC_NO, k3B }, \
- { k20, k21, k22, k23, k24, k25, k26, k27 }, { k28, k29, k2A, k2B, k2C, k38, k39, k3A }, \
- { k30, k31, k32, k33, k34, k35, k36, k37 }, \
- { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k10, k11, k12, k13, k14, k15, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k30, k31, k32, k33, k34, k35, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k50, k51, k52, k53, k54, \
+ k60, k61, k62, k63, k64, k65, k66, k67, k55, k56, k57, k37, \
+ k70, k71, k72, k73, k74, k75, k76, k77 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, XXX, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, XXX, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
}
-
-#endif
diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h
index 9df39f4406..8ad3269d56 100644
--- a/keyboards/handwired/magicforce68/config.h
+++ b/keyboards/handwired/magicforce68/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/magicforce68/magicforce68.h b/keyboards/handwired/magicforce68/magicforce68.h
index 949507fef7..829e5932b5 100644
--- a/keyboards/handwired/magicforce68/magicforce68.h
+++ b/keyboards/handwired/magicforce68/magicforce68.h
@@ -1,20 +1,19 @@
-#ifndef MAGICFORCE68_H
-#define MAGICFORCE68_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K2E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K3E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, \
- K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4E \
- ) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
- { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D, K4E } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k2E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k3E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3C, k3D, \
+ k40, k41, k42, k45, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, XXX, k3C, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4A, k4B, k4C, k4D, k4E } \
}
-
-#endif
diff --git a/keyboards/handwired/ms_sculpt_mobile/config.h b/keyboards/handwired/ms_sculpt_mobile/config.h
index 1b61d8712a..c3c2a0962e 100644
--- a/keyboards/handwired/ms_sculpt_mobile/config.h
+++ b/keyboards/handwired/ms_sculpt_mobile/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -85,5 +84,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h b/keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h
index cfa07c92ef..64d4f7bbc4 100644
--- a/keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h
+++ b/keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h
@@ -1,48 +1,43 @@
-#ifndef MICROSOFT_SCULPT_MOBILE_H
-#define MICROSOFT_SCULPT_MOBILE_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
#define LAYOUT( \
- k7Q, k6O, k6P, k6Q, k5O, k5P, k5Q, k7A, k7B, k7C, k7D, k7E, k7F, k1O, k1K, k1L, \
- k5A, k5K, k5L, k5M, k5N, k5H, k5I, k2A, k2B, k2C, k2D, k5B, k5C, k5J, k2E, \
- k6R, k6D, k6E, k6F, k7I, k7J, k4A, k4B, k4C, k4D, k3A, k3B, k3C, k3D, \
- k0J, k6A, k6B, k6C, k7H, k1A, k1B, k5D, k5E, k5F, k5G, k1C, k7P, k2G, \
- k2P, k7K, k7L, k7M, k7O, k0A, k0B, k0C, k0D, k0E, k0F, k2L, k6G, k1P,\
- k1Q, k4N, k3O,k6N, k3K, k0R, k1M, k6H, k6I, k6J \
-) \
-{ \
- {k0A, k0B, k0C, k0D, k0E, k0F, KC_NO, KC_NO, KC_NO, k0J, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, k0R},\
- {k1A, k1B, k1C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k1K, k1L, k1M, KC_NO, k1O, k1P, k1Q, KC_NO},\
- {k2A, k2B, k2C, k2D, k2E, KC_NO, k2G, KC_NO, KC_NO, KC_NO, KC_NO, k2L, KC_NO, KC_NO, KC_NO, k2P, KC_NO, KC_NO},\
- {k3A, k3B, k3C, k3D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k3K, KC_NO, KC_NO, KC_NO, k3O, KC_NO, KC_NO, KC_NO},\
- {k4A, k4B, k4C, k4D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k4N, KC_NO,KC_NO, KC_NO, KC_NO},\
- {k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q, KC_NO },\
- {k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6J, KC_NO, KC_NO, KC_NO, k6N, k6O, k6P, k6Q, k6R},\
- {k7A, k7B, k7C, k7D, k7E, k7F, KC_NO, k7H, k7I, k7J, k7K, k7L, k7M, KC_NO, k7O, k7P, k7Q, KC_NO},\
+ k7G, k6E, k6F, k6G, k5E, k5F, k5G, k70, k71, k72, k73, k74, k75, k1E, k1A, k1B, \
+ k50, k5A, k5B, k5C, k5D, k57, k58, k20, k21, k22, k23, k51, k52, k59, k24, \
+ k6H, k63, k64, k65, k78, k79, k40, k41, k42, k43, k30, k31, k32, k33, \
+ k09, k60, k61, k62, k77, k10, k11, k53, k54, k55, k56, k12, k7F, k26, \
+ k2F, k7A, k7B, k7C, k7E, k00, k01, k02, k03, k04, k05, k2B, k66, k1F, \
+ k1G, k4D, k3E, k6D, k3A, k0H, k1C, k67, k68, k69 \
+) { \
+ { k00, k01, k02, k03, k04, k05, XXX, XXX, XXX, k09, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k0H }, \
+ { k10, k11, k12, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k1A, k1B, k1C, XXX, k1E, k1F, k1G, XXX }, \
+ { k20, k21, k22, k23, k24, XXX, k26, XXX, XXX, XXX, XXX, k2B, XXX, XXX, XXX, k2F, XXX, XXX }, \
+ { k30, k31, k32, k33, XXX, XXX, XXX, XXX, XXX, XXX, k3A, XXX, XXX, XXX, k3E, XXX, XXX, XXX }, \
+ { k40, k41, k42, k43, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k4D, XXX, XXX, XXX, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F, k5G, XXX }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, XXX, XXX, XXX, k6D, k6E, k6F, k6G, k6H }, \
+ { k70, k71, k72, k73, k74, k75, XXX, k77, k78, k79, k7A, k7B, k7C, XXX, k7E, k7F, k7G, XXX } \
}
-
#define MATRIX_TESTING_LAYOUT( \
- k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0, k0J, k0K, k0L, k0M, k0N, k0O, k0P, k0Q,\
- k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1, k1J, k1K, k1L, k1M, k1N, k1O, k1P, k1Q,\
- k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2, k2J, k2K, k2L, k2M, k2N, k2O, k2P, k2Q,\
- k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3, k3J, k3K, k3L, k3M, k3N, k3O, k3P, k3Q,\
- k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4, k4J, k4K, k4L, k4M, k4N, k4O, k4P, k4Q,\
- k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q,\
- k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6, k6J, k6K, k6L, k6M, k6N, k6O, k6P, k6Q,\
- k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H, k7I, k7, k7J, k7K, k7L, k7M, k7N, k7O, k7P, k7Q\
-) \
-{ \
- {k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0, k0J, k0K, k0L, k0M, k0N, k0O, k0P, k0Q},\
- {k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1, k1J, k1K, k1L, k1M, k1N, k1O, k1P, k1Q},\
- {k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2, k2J, k2K, k2L, k2M, k2N, k2O, k2P, k2Q},\
- {k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3, k3J, k3K, k3L, k3M, k3N, k3O, k3P, k3Q},\
- {k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4, k4J, k4K, k4L, k4M, k4N, k4O, k4P, k4Q},\
- {k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q},\
- {k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6, k6J, k6K, k6L, k6M, k6N, k6O, k6P, k6Q},\
- {k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H, k7I, k7, k7J, k7K, k7L, k7M, k7N, k7O, k7P, k7Q},\
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, \
+ k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, \
+ k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H } \
}
-
-#endif
diff --git a/keyboards/handwired/nicekey/config.h b/keyboards/handwired/nicekey/config.h
index d1b18cc282..19e707c1fc 100644
--- a/keyboards/handwired/nicekey/config.h
+++ b/keyboards/handwired/nicekey/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -65,5 +64,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/nicekey/nicekey.h b/keyboards/handwired/nicekey/nicekey.h
index ee5bcfd6be..f008be168e 100644
--- a/keyboards/handwired/nicekey/nicekey.h
+++ b/keyboards/handwired/nicekey/nicekey.h
@@ -1,12 +1,9 @@
-#ifndef NICEKEY_H
-#define NICEKEY_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
k00 \
- ) { \
- { k00 } \
+) { \
+ { k00 } \
}
-
-#endif
diff --git a/keyboards/handwired/not_so_minidox/config.h b/keyboards/handwired/not_so_minidox/config.h
index 9d2174b532..de9286eda5 100644
--- a/keyboards/handwired/not_so_minidox/config.h
+++ b/keyboards/handwired/not_so_minidox/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/not_so_minidox/i2c.h b/keyboards/handwired/not_so_minidox/i2c.h
index c15b6bc506..8910e70f10 100644
--- a/keyboards/handwired/not_so_minidox/i2c.h
+++ b/keyboards/handwired/not_so_minidox/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include <stdint.h>
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/handwired/not_so_minidox/not_so_minidox.h b/keyboards/handwired/not_so_minidox/not_so_minidox.h
index c24a515e43..7c80dc9b3b 100644
--- a/keyboards/handwired/not_so_minidox/not_so_minidox.h
+++ b/keyboards/handwired/not_so_minidox/not_so_minidox.h
@@ -1,24 +1,21 @@
-#ifndef NOSOTMINIDOX_H
-#define NOSOTMINIDOX_H
-
+#pragma once
#include "quantum.h"
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
- L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \
- L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, \
- LT1, LT2, LT3, RT3, RT2, RT1 \
- ) \
- { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { KC_NO, KC_NO, KC_NO, LT1, LT2, LT3 }, \
- { R00, R01, R02, R03, R04, R05 }, \
- { R10, R11, R12, R13, R14, R15 }, \
- { R20, R21, R22, R23, R24, R25 }, \
- { KC_NO, KC_NO, KC_NO, RT1, RT2, RT3 }, \
- }
+#define XXX KC_NO
-#endif
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, \
+ LT1, LT2, LT3, RT3, RT2, RT1 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, XXX, LT1, LT2, LT3 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { XXX, XXX, XXX, RT1, RT2, RT3 } \
+}
diff --git a/keyboards/handwired/not_so_minidox/serial.h b/keyboards/handwired/not_so_minidox/serial.h
index 15fe4db7b4..28fcc56ce7 100644
--- a/keyboards/handwired/not_so_minidox/serial.h
+++ b/keyboards/handwired/not_so_minidox/serial.h
@@ -1,5 +1,4 @@
-#ifndef MY_SERIAL_H
-#define MY_SERIAL_H
+#pragma once
#include "config.h"
#include <stdbool.h>
@@ -22,5 +21,3 @@ void serial_master_init(void);
void serial_slave_init(void);
int serial_update_buffers(void);
bool serial_slave_data_corrupt(void);
-
-#endif
diff --git a/keyboards/handwired/not_so_minidox/split_util.h b/keyboards/handwired/not_so_minidox/split_util.h
index 595a0659e1..807412cd38 100644
--- a/keyboards/handwired/not_so_minidox/split_util.h
+++ b/keyboards/handwired/not_so_minidox/split_util.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
+#pragma once
#include <stdbool.h>
#include "eeconfig.h"
@@ -16,5 +15,3 @@ bool has_usb(void);
void keyboard_slave_loop(void);
void matrix_master_OLED_init (void);
-
-#endif
diff --git a/keyboards/handwired/numpad20/config.h b/keyboards/handwired/numpad20/config.h
index d94e23b21d..dba74f43bd 100644
--- a/keyboards/handwired/numpad20/config.h
+++ b/keyboards/handwired/numpad20/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/numpad20/numpad20.h b/keyboards/handwired/numpad20/numpad20.h
index c15aa9ac70..03fdd6d923 100644
--- a/keyboards/handwired/numpad20/numpad20.h
+++ b/keyboards/handwired/numpad20/numpad20.h
@@ -1,20 +1,17 @@
-#ifndef NUMPAD20_H
-#define NUMPAD20_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, \
- K30, K31, K32, K33, \
- K40, K41, K42, K43 \
- ) { \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, K23 }, \
- { K30, K31, K32, K33 }, \
- { K40, K41, K42, K43 } \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 }, \
+ { k40, k41, k42, k43 } \
}
-
-#endif
diff --git a/keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c b/keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c
index 956932329c..1287614a8b 100644
--- a/keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c
+++ b/keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c
@@ -17,7 +17,7 @@
#include QMK_KEYBOARD_H
void board_init(void) {
- // B9 is configured as I2C1_SDA in the board file; that function must be
+ // B9 is configured as I2C1_SDA_PIN in the board file; that function must be
// disabled before using B7 as I2C1_SDA.
setPinInputHigh(B9);
}
diff --git a/keyboards/handwired/onekey/keymaps/quine/rules.mk b/keyboards/handwired/onekey/keymaps/quine/rules.mk
deleted file mode 100644
index 4c2b0289a2..0000000000
--- a/keyboards/handwired/onekey/keymaps/quine/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-BOOTLOADER = atmel-dfu
diff --git a/keyboards/handwired/onekey/readme.md b/keyboards/handwired/onekey/readme.md
index b630b11748..2973b7d873 100644
--- a/keyboards/handwired/onekey/readme.md
+++ b/keyboards/handwired/onekey/readme.md
@@ -3,7 +3,7 @@
Custom handwired one key keyboard. **See each individual board for pin information.**
* Keyboard Maintainer: QMK Community
-* Hardware Supported: bluepill, Elite-C, Pro Micro, Proton C, Teensy 2.0, Teensy++ 2.0, Teensy LC, Teensy 3.2
+* Hardware Supported: Blackpill F401/F411, Bluepill, Elite-C, Pro Micro, Proton C, Sipeed Longan Nano, STM32F0 Disco, Teensy 2.0, Teensy++ 2.0, Teensy LC, Teensy 3.2
* Hardware Availability: *n/a*
Make example for this keyboard (after setting up your build environment):
diff --git a/quantum/visualizer/resources/resources.h b/keyboards/handwired/onekey/sipeed_longan_nano/chconf.h
index 5178fbe55a..b1eb18de78 100644
--- a/quantum/visualizer/resources/resources.h
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/chconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2017 Fred Sundvik
+/* 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
@@ -16,8 +16,8 @@
#pragma once
-#include <stdint.h>
+#define CH_CFG_ST_RESOLUTION 16
-#ifdef LCD_ENABLE
-extern const uint8_t resource_lcd_logo[];
-#endif
+#define CH_CFG_ST_FREQUENCY 10000
+
+#include_next <chconf.h>
diff --git a/quantum/api/api_sysex.h b/keyboards/handwired/onekey/sipeed_longan_nano/config.h
index eb0a18848d..1825b936d8 100644
--- a/quantum/api/api_sysex.h
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2016 Jack Humbert
+/* 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
@@ -16,10 +16,22 @@
#pragma once
-#include "api.h"
+#include "config_common.h"
-#define API_SYSEX_MAX_SIZE 32
+#define MATRIX_COL_PINS \
+ { B0 }
+#define MATRIX_ROW_PINS \
+ { A7 }
+#define UNUSED_PINS
-void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t* bytes, uint16_t length);
+#define BACKLIGHT_PIN A1 /* Green LED. */
+#define BACKLIGHT_PWM_DRIVER PWMD5 /* GD32 numbering scheme starts from 0, TIMER4 on GD32 boards is TIMER5 on STM32 boards. */
+#define BACKLIGHT_PWM_CHANNEL 2 /* GD32 numbering scheme starts from 0, Channel 1 on GD32 boards is Channel 2 on STM32 boards. */
-#define SEND_BYTES(mt, dt, b, l) send_bytes_sysex(mt, dt, b, l)
+#define RGB_DI_PIN A2
+#define RGB_CI_PIN B13
+
+#define ADC_PIN A0
+
+#define I2C1_CLOCK_SPEED 1000000 /* GD32VF103 supports fast mode plus. */
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/halconf.h b/keyboards/handwired/onekey/sipeed_longan_nano/halconf.h
new file mode 100644
index 0000000000..2579c58747
--- /dev/null
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/halconf.h
@@ -0,0 +1,23 @@
+/* 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_PWM TRUE
+#define HAL_USE_ADC TRUE
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/mcuconf.h b/keyboards/handwired/onekey/sipeed_longan_nano/mcuconf.h
new file mode 100644
index 0000000000..eba0dd9eeb
--- /dev/null
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/mcuconf.h
@@ -0,0 +1,29 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2021 Stefan Kerkmann
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef GD32_ADC_USE_ADC0
+#define GD32_ADC_USE_ADC0 TRUE
+
+#undef GD32_I2C_USE_I2C0
+#define GD32_I2C_USE_I2C0 TRUE
+
+#undef GD32_PWM_USE_TIM4
+#define GD32_PWM_USE_TIM4 TRUE
diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/readme.md b/keyboards/handwired/onekey/sipeed_longan_nano/readme.md
new file mode 100644
index 0000000000..0a3a291576
--- /dev/null
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/readme.md
@@ -0,0 +1,5 @@
+# Sipeed Longan Nano onekey
+
+Supported Hardware: *GD32VF103CB Sipeed Longan Nano*.
+
+To trigger keypress, short together pins *B0* and *A7*. \ No newline at end of file
diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/rules.mk b/keyboards/handwired/onekey/sipeed_longan_nano/rules.mk
new file mode 100644
index 0000000000..aef4fee6b2
--- /dev/null
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/rules.mk
@@ -0,0 +1,11 @@
+# MCU name
+MCU = GD32VF103
+BOARD = SIPEED_LONGAN_NANO
+
+# Bootloader selection
+BOOTLOADER = gd32v-dfu
+
+# Build Options
+# change yes to no to disable
+#
+KEYBOARD_SHARED_EP = yes
diff --git a/keyboards/handwired/onekey/stm32f405_feather/config.h b/keyboards/handwired/onekey/stm32f405_feather/config.h
new file mode 100644
index 0000000000..32d7807975
--- /dev/null
+++ b/keyboards/handwired/onekey/stm32f405_feather/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2019
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 "config_common.h"
+
+#define PRODUCT Onekey Adafruit Feather STM32F405
+
+#define MATRIX_COL_PINS { C2 }
+#define MATRIX_ROW_PINS { C3 }
+#define UNUSED_PINS
diff --git a/keyboards/handwired/onekey/stm32f405_feather/readme.md b/keyboards/handwired/onekey/stm32f405_feather/readme.md
new file mode 100644
index 0000000000..49a05725d5
--- /dev/null
+++ b/keyboards/handwired/onekey/stm32f405_feather/readme.md
@@ -0,0 +1,7 @@
+# Adafruit Feather STM32F405 Express onekey
+
+* Supported Hardware: [Adafruit Feather STM32F405 Express](https://www.adafruit.com/product/4382)
+
+To trigger keypress, short together pins *GPIO 12 / PC2* and *GPIO 11 / PC3*.
+
+https://learn.adafruit.com/adafruit-stm32f405-feather-express/dfu-bootloader-details#enabling-dfu-bootloader-mode-3045622-2 \ No newline at end of file
diff --git a/keyboards/handwired/onekey/stm32f405_feather/rules.mk b/keyboards/handwired/onekey/stm32f405_feather/rules.mk
new file mode 100644
index 0000000000..bff7a7e297
--- /dev/null
+++ b/keyboards/handwired/onekey/stm32f405_feather/rules.mk
@@ -0,0 +1,8 @@
+# MCU name
+MCU = STM32F405
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/onekey/teensy_32/config.h b/keyboards/handwired/onekey/teensy_32/config.h
index 180f324875..e388b01af8 100644
--- a/keyboards/handwired/onekey/teensy_32/config.h
+++ b/keyboards/handwired/onekey/teensy_32/config.h
@@ -26,7 +26,7 @@
#define UNUSED_PINS
// i2c_master defines
-#define I2C1_SCL 0 // A2 on pinout = B0
-#define I2C1_SDA 1 // A3 on pinout = B1
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // A3 on pinout = B1
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/handwired/onekey/teensy_lc/config.h b/keyboards/handwired/onekey/teensy_lc/config.h
index ad30f969f5..4e594e7d7e 100644
--- a/keyboards/handwired/onekey/teensy_lc/config.h
+++ b/keyboards/handwired/onekey/teensy_lc/config.h
@@ -26,7 +26,7 @@
#define UNUSED_PINS
// i2c_master defines
-#define I2C1_SCL 0 // A2 on pinout = B0
-#define I2C1_SDA 1 // A3 on pinout = B1
+#define I2C1_SCL_PIN B0 // A2 on pinout = B0
+#define I2C1_SDA_PIN B1 // A3 on pinout = B1
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/handwired/ortho5x13/config.h b/keyboards/handwired/ortho5x13/config.h
index bab42593d0..d831940b8d 100644
--- a/keyboards/handwired/ortho5x13/config.h
+++ b/keyboards/handwired/ortho5x13/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/pilcrow/config.h b/keyboards/handwired/pilcrow/config.h
index 735a52f61b..15f487082b 100644
--- a/keyboards/handwired/pilcrow/config.h
+++ b/keyboards/handwired/pilcrow/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/pilcrow/pilcrow.h b/keyboards/handwired/pilcrow/pilcrow.h
index 37d2914f24..30576e85c0 100644
--- a/keyboards/handwired/pilcrow/pilcrow.h
+++ b/keyboards/handwired/pilcrow/pilcrow.h
@@ -1,5 +1,4 @@
-#ifndef PILCROW_H
-#define PILCROW_H
+#pragma once
#include "quantum.h"
@@ -12,12 +11,9 @@
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \
-) \
-{ \
+) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 } \
}
-
-#endif
diff --git a/keyboards/handwired/prime_exl/prime_exl.h b/keyboards/handwired/prime_exl/prime_exl.h
index 03524da3c2..1c9a8060fc 100644
--- a/keyboards/handwired/prime_exl/prime_exl.h
+++ b/keyboards/handwired/prime_exl/prime_exl.h
@@ -13,28 +13,28 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-//#ifndef PRIME_EXL_H
-//#define PRIME_EXL_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, K058, \
- K030, K060, K031, K061, K032, K062, K033, K063, K034, K064, K035, K065, K036, K066, K037, K067, K038, K068, \
- K020, K070, K021, K071, K022, K072, K023, K073, K024, K074, K025, K075, K085, K026, K076, K027, K077, K028, K078, \
- K010, K080, K011, K081, K012, K082, K013, K083, K014, K084, K015, K016, K086, K017, K087, K018, \
- K000, K090, K001, K091, K002, K092 \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k58, \
+ k30, k60, k31, k61, k32, k62, k33, k63, k34, k64, k35, k65, k36, k66, k37, k67, k38, k68, \
+ k20, k70, k21, k71, k22, k72, k23, k73, k24, k74, k25, k75, k85, k26, k76, k27, k77, k28, k78, \
+ k10, k80, k11, k81, k12, k82, k13, k83, k14, k84, k15, k16, k86, k17, k87, k18, \
+ k00, k90, k01, k91, k02, k92 \
) { \
- { K000, K001, K002, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
- { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
- { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
- { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
- { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \
- { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
- { K070, K071, K072, K073, K074, K075, K076, K077, K078 }, \
- { K080, K081, K082, K083, K084, K085, K086, K087, KC_NO }, \
- { K090, K091, K092, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+ { k00, k01, k02, XXX, XXX, XXX, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77, k78 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, XXX }, \
+ { k90, k91, k92, XXX, XXX, XXX, XXX, XXX, XXX } \
}
-
-//#endif \ No newline at end of file
diff --git a/keyboards/handwired/prkl30/feather/config.h b/keyboards/handwired/prkl30/feather/config.h
index 6a9bce38cd..875b3d7401 100644
--- a/keyboards/handwired/prkl30/feather/config.h
+++ b/keyboards/handwired/prkl30/feather/config.h
@@ -35,9 +35,6 @@
#define ENCODERS_PAD_A { F7 }
#define ENCODERS_PAD_B { F6 }
#define ENCODER_RESOLUTION 4
-#define AdafruitBleResetPin D4
-#define AdafruitBleCSPin B4
-#define AdafruitBleIRQPin E6
#define UNUSED_PINS
/* RGB Light Configuration */
diff --git a/keyboards/handwired/prkl30/feather/rules.mk b/keyboards/handwired/prkl30/feather/rules.mk
index 6357015126..df2aa7f1db 100644
--- a/keyboards/handwired/prkl30/feather/rules.mk
+++ b/keyboards/handwired/prkl30/feather/rules.mk
@@ -10,7 +10,6 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BLUETOOTH = AdafruitBLE
BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
ENCODER_ENABLE = yes
MOUSEKEY_ENABLE = no # Mouse keys
@@ -22,3 +21,6 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
+
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h
index b146767d65..612675c63a 100644
--- a/keyboards/handwired/promethium/config.h
+++ b/keyboards/handwired/promethium/config.h
@@ -224,27 +224,15 @@ enum led_sequence {
/* PS/2 mouse */
#ifdef PS2_USE_BUSYWAIT
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 3
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+# define PS2_CLOCK_PIN D3
+# define PS2_DATA_PIN D2
#endif
/* PS/2 mouse interrupt version */
#ifdef PS2_USE_INT
/* uses INT1 for clock line(ATMega32U4) */
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 3
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+# define PS2_CLOCK_PIN D3
+# define PS2_DATA_PIN D2
# define PS2_INT_INIT() \
do { \
@@ -264,14 +252,8 @@ enum led_sequence {
/* PS/2 mouse USART version */
#ifdef PS2_USE_USART
/* XCK for clock line and RXD for data line */
-# define PS2_CLOCK_PORT PORTD
-# define PS2_CLOCK_PIN PIND
-# define PS2_CLOCK_DDR DDRD
-# define PS2_CLOCK_BIT 5
-# define PS2_DATA_PORT PORTD
-# define PS2_DATA_PIN PIND
-# define PS2_DATA_DDR DDRD
-# define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
diff --git a/keyboards/handwired/promethium/keymaps/default/rules.mk b/keyboards/handwired/promethium/keymaps/default/rules.mk
index 4fd8baae27..45b3332456 100644
--- a/keyboards/handwired/promethium/keymaps/default/rules.mk
+++ b/keyboards/handwired/promethium/keymaps/default/rules.mk
@@ -13,11 +13,9 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: ht
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODEMAP_ENABLE = yes
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
-BLUETOOTH = AdafruitBLE
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rules.mk b/keyboards/handwired/promethium/keymaps/priyadi/rules.mk
index 4fd9b656b6..96db4fcbbc 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/rules.mk
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rules.mk
@@ -15,11 +15,9 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
UNICODE_ENABLE = no # Unicode
UNICODEMAP_ENABLE = yes
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
-BLUETOOTH = AdafruitBLE
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h
index f35e5429bd..c4c90176b5 100644
--- a/keyboards/handwired/promethium/promethium.h
+++ b/keyboards/handwired/promethium/promethium.h
@@ -1,5 +1,4 @@
-#ifndef PROMETHIUM_H
-#define PROMETHIUM_H
+#pragma once
#include <stdint.h>
@@ -7,23 +6,22 @@ void battery_poll(uint8_t level);
void led_set_kb(uint8_t usb_led);
void led_set_user(uint8_t usb_led);
+#define XXX KC_NO
+
#define LAYOUT( \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, \
+ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+ k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+ k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+ k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75, \
tp1, tp2, tp3 \
-) \
-{ \
- {k11, k12, k13, k14, k15, k16}, \
- {k21, k22, k23, k24, k25, k26}, \
- {k31, k32, k33, k34, k35, k36}, \
- {k41, k42, k43, k44, k45, k46}, \
- {k17, k18, k19, k1a, k1b, k1c}, \
- {k27, k28, k29, k2a, k2b, k2c}, \
- {k37, k38, k39, k3a, k3b, k3c}, \
- {k47, k48, k49, k4a, k4b, k4c}, \
- {tp1, tp2, tp3, KC_NO, KC_NO, KC_NO} \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { k70, k71, k72, k73, k74, k75 }, \
+ { tp1, tp2, tp3, XXX, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index bd3b04a2d7..106f30759a 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -19,12 +19,12 @@ 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 = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
CUSTOM_MATRIX = yes
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/pterodactyl/config.h b/keyboards/handwired/pterodactyl/config.h
index 9f5f1412b8..044fa12f78 100644
--- a/keyboards/handwired/pterodactyl/config.h
+++ b/keyboards/handwired/pterodactyl/config.h
@@ -60,7 +60,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 0
-
-#define AdafruitBleResetPin D4
-#define AdafruitBleCSPin B4
-#define AdafruitBleIRQPin E6
diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk
index 56f83265d9..7c8e3c3386 100644
--- a/keyboards/handwired/pterodactyl/rules.mk
+++ b/keyboards/handwired/pterodactyl/rules.mk
@@ -21,11 +21,11 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
UNICODE_ENABLE = yes
CUSTOM_MATRIX = yes
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/handwired/qc60/qc60.h b/keyboards/handwired/qc60/qc60.h
index 944ec10f5e..e26811ae72 100644
--- a/keyboards/handwired/qc60/qc60.h
+++ b/keyboards/handwired/qc60/qc60.h
@@ -1,10 +1,7 @@
-#ifndef QC60_H
-#define QC60_H
+#pragma once
#include "quantum.h"
-#ifdef KEYBOARD_handwired_qc60_proto
- #include "proto.h"
-#endif
-
+#if defined(KEYBOARD_handwired_qc60_proto)
+# include "proto.h"
#endif
diff --git a/keyboards/handwired/reddot/config.h b/keyboards/handwired/reddot/config.h
index 95dcde3261..196f08f6f5 100755
--- a/keyboards/handwired/reddot/config.h
+++ b/keyboards/handwired/reddot/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -101,5 +100,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/retro_refit/config.h b/keyboards/handwired/retro_refit/config.h
index 089e56bb01..74cebfb825 100644
--- a/keyboards/handwired/retro_refit/config.h
+++ b/keyboards/handwired/retro_refit/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -88,5 +87,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/slash/rules.mk b/keyboards/handwired/slash/rules.mk
index 82ebd5c103..8688504f63 100644
--- a/keyboards/handwired/slash/rules.mk
+++ b/keyboards/handwired/slash/rules.mk
@@ -21,5 +21,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH = AdafruitBLE
AUDIO_ENABLE = no # Audio output
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/symmetric70_proto/post_rules.mk b/keyboards/handwired/symmetric70_proto/post_rules.mk
new file mode 100644
index 0000000000..e2d35d60ab
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/post_rules.mk
@@ -0,0 +1,2 @@
+KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
+include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
index de489fcabd..fbc1c3bb38 100644
--- a/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_fast/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
index 0b2b707ef8..73192f4ff7 100644
--- a/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_debug/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
index de489fcabd..fbc1c3bb38 100644
--- a/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_fast/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
index 0b2b707ef8..73192f4ff7 100644
--- a/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
@@ -1,6 +1,3 @@
CUSTOM_MATRIX = yes
SRC += matrix_common.c
SRC += matrix_debug/matrix.c
-
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
-include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/terminus_mini/config.h b/keyboards/handwired/terminus_mini/config.h
index e3b0c41999..e1d77d55e2 100644
--- a/keyboards/handwired/terminus_mini/config.h
+++ b/keyboards/handwired/terminus_mini/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -109,5 +108,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/handwired/terminus_mini/terminus_mini.h b/keyboards/handwired/terminus_mini/terminus_mini.h
index 27fb450981..f498313cbb 100644
--- a/keyboards/handwired/terminus_mini/terminus_mini.h
+++ b/keyboards/handwired/terminus_mini/terminus_mini.h
@@ -13,28 +13,27 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef TERMINUS_MINI_H
-#define TERMINUS_MINI_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Terminus Mini layout
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, KC_NO, k35, KC_NO, k37, k38, k39, k3a, k3b } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k35, k37, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, XXX, k35, XXX, k37, k38, k39, k3A, k3B } \
}
#define KC_ KC_TRNS
-
-#endif \ No newline at end of file
diff --git a/keyboards/handwired/trackpoint/config.h b/keyboards/handwired/trackpoint/config.h
index 1429136f40..cf8b5605f4 100644
--- a/keyboards/handwired/trackpoint/config.h
+++ b/keyboards/handwired/trackpoint/config.h
@@ -12,14 +12,8 @@
#define MATRIX_COLS 3
#ifdef PS2_USE_USART
- #define PS2_CLOCK_PORT PORTD
- #define PS2_CLOCK_PIN PIND
- #define PS2_CLOCK_DDR DDRD
- #define PS2_CLOCK_BIT 5
- #define PS2_DATA_PORT PORTD
- #define PS2_DATA_PIN PIND
- #define PS2_DATA_DDR DDRD
- #define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
/* set DDR of CLOCK as input to be slave */
diff --git a/keyboards/handwired/unicomp_mini_m/info.json b/keyboards/handwired/unicomp_mini_m/info.json
index e2438eaeeb..d1a0558aa2 100644
--- a/keyboards/handwired/unicomp_mini_m/info.json
+++ b/keyboards/handwired/unicomp_mini_m/info.json
@@ -1,7 +1,7 @@
{
"keyboard_name": "Unicomp Mini M",
- "url": "",
"maintainer": "stevendlander",
+ "url": "",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/xealous/rev1/config.h b/keyboards/handwired/xealous/rev1/config.h
index 946b0cb489..8bd5b464a4 100644
--- a/keyboards/handwired/xealous/rev1/config.h
+++ b/keyboards/handwired/xealous/rev1/config.h
@@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -81,4 +80,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#define IGNORE_MOD_TAP_INTERRUPT
-#endif
diff --git a/keyboards/handwired/xealous/rev1/rev1.h b/keyboards/handwired/xealous/rev1/rev1.h
index 0d8913b2ea..88e5ef376e 100644
--- a/keyboards/handwired/xealous/rev1/rev1.h
+++ b/keyboards/handwired/xealous/rev1/rev1.h
@@ -1,30 +1,26 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "quantum.h"
#define XXX KC_NO
#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
- L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
- L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
- L30, L31, L32, L33, L34, L35, R35, R34, R33, R32, R31, R30, \
- L40, L41, L42, L43, L44, R44, R43, R42, R41, R40 \
- ) \
- { \
- { XXX, L06, L05, L04, L03, L02, L01, L00 }, \
- { XXX, XXX, L15, L14, L13, L12, L11, L10 }, \
- { XXX, XXX, L25, L24, L23, L22, L21, L20 }, \
- { XXX, XXX, L35, L34, L33, L32, L31, L30 }, \
- { XXX, XXX, XXX, L44, L43, L42, L41, L40 }, \
- { R00, R01, R02, R03, R04, R05, R06, XXX }, \
- { R10, R11, R12, R13, R14, R15, R16, R17 }, \
- { R20, R21, R22, R23, R24, R25, R26, XXX }, \
- { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
- { R40, R41, R42, R43, R44, XXX, XXX, XXX } \
- }
+ L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
+ L30, L31, L32, L33, L34, L35, R35, R34, R33, R32, R31, R30, \
+ L40, L41, L42, L43, L44, R44, R43, R42, R41, R40 \
+) { \
+ { XXX, L06, L05, L04, L03, L02, L01, L00 }, \
+ { XXX, XXX, L15, L14, L13, L12, L11, L10 }, \
+ { XXX, XXX, L25, L24, L23, L22, L21, L20 }, \
+ { XXX, XXX, L35, L34, L33, L32, L31, L30 }, \
+ { XXX, XXX, XXX, L44, L43, L42, L41, L40 }, \
+ { R00, R01, R02, R03, R04, R05, R06, XXX }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
+ { R40, R41, R42, R43, R44, XXX, XXX, XXX } \
+}
#define LAYOUT_split60 LAYOUT
-
-#endif
diff --git a/keyboards/helix/local_drivers/i2c.h b/keyboards/helix/local_drivers/i2c.h
index 47cf6bd1b2..710662c7ab 100644
--- a/keyboards/helix/local_drivers/i2c.h
+++ b/keyboards/helix/local_drivers/i2c.h
@@ -1,5 +1,4 @@
-#ifndef I2C_H
-#define I2C_H
+#pragma once
#include <stdint.h>
@@ -45,5 +44,3 @@ extern unsigned char i2c_readNak(void);
extern unsigned char i2c_read(unsigned char ack);
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
-
-#endif
diff --git a/keyboards/helix/local_drivers/serial.h b/keyboards/helix/local_drivers/serial.h
index 2e53928df2..b4dcdafe57 100644
--- a/keyboards/helix/local_drivers/serial.h
+++ b/keyboards/helix/local_drivers/serial.h
@@ -1,5 +1,4 @@
-#ifndef SOFT_SERIAL_H
-#define SOFT_SERIAL_H
+#pragma once
#include <stdbool.h>
@@ -85,5 +84,3 @@ int soft_serial_transaction(int sstd_index);
#ifdef SERIAL_USE_MULTI_TRANSACTION
int soft_serial_get_and_clean_status(int sstd_index);
#endif
-
-#endif /* SOFT_SERIAL_H */
diff --git a/keyboards/helix/local_drivers/ssd1306.h b/keyboards/helix/local_drivers/ssd1306.h
index bcb30f8859..a7527f4ebc 100644
--- a/keyboards/helix/local_drivers/ssd1306.h
+++ b/keyboards/helix/local_drivers/ssd1306.h
@@ -1,5 +1,4 @@
-#ifndef SSD1306_H
-#define SSD1306_H
+#pragma once
#include <stdbool.h>
#include <stdio.h>
@@ -88,5 +87,3 @@ void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
void matrix_render(struct CharacterMatrix *matrix);
bool process_record_gfx(uint16_t keycode, keyrecord_t *record);
-
-#endif
diff --git a/keyboards/helix/pico/keymaps/biacco/rules.mk b/keyboards/helix/pico/keymaps/biacco/rules.mk
index 37e49977c5..993ade2673 100644
--- a/keyboards/helix/pico/keymaps/biacco/rules.mk
+++ b/keyboards/helix/pico/keymaps/biacco/rules.mk
@@ -18,7 +18,3 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = no # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk
index fcf92e6717..8a4a0df28e 100644
--- a/keyboards/helix/pico/keymaps/default/rules.mk
+++ b/keyboards/helix/pico/keymaps/default/rules.mk
@@ -18,7 +18,3 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/keymaps/mtei/rules.mk b/keyboards/helix/pico/keymaps/mtei/rules.mk
index 165233f5fe..05a60f67d5 100644
--- a/keyboards/helix/pico/keymaps/mtei/rules.mk
+++ b/keyboards/helix/pico/keymaps/mtei/rules.mk
@@ -18,7 +18,3 @@ LTO_ENABLE = no # if firmware size over limit, try this option
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/local_features.mk b/keyboards/helix/pico/post_rules.mk
index be5c739f97..38573d75a5 100644
--- a/keyboards/helix/pico/local_features.mk
+++ b/keyboards/helix/pico/post_rules.mk
@@ -1,12 +1,10 @@
#
-# local_features.mk contains post-processing rules for the Helix keyboard.
+# post_rules.mk contains post-processing rules for the Helix keyboard.
#
# Post-processing rules convert keyboard-specific shortcuts (that represent
# combinations of standard options) into QMK standard options.
#
-KEYBOARD_LOCAL_FEATURES_MK :=
-
define HELIX_CUSTOMISE_MSG
$(info Helix Spacific Build Options)
$(info - OLED_ENABLE = $(OLED_ENABLE))
diff --git a/keyboards/helix/pico/rules.mk b/keyboards/helix/pico/rules.mk
index cb9a70e00e..12caec37ef 100644
--- a/keyboards/helix/pico/rules.mk
+++ b/keyboards/helix/pico/rules.mk
@@ -1,5 +1,3 @@
-KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))local_features.mk
-
# Helix Spacific Build Options default values
OLED_ENABLE = no # OLED_ENABLE
LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
diff --git a/keyboards/helix/pico/split_util.h b/keyboards/helix/pico/split_util.h
index c0ecdb0974..b839ce6e3e 100644
--- a/keyboards/helix/pico/split_util.h
+++ b/keyboards/helix/pico/split_util.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
+#pragma once
#include <stdbool.h>
#include "eeconfig.h"
@@ -15,5 +14,3 @@ void split_keyboard_setup(void);
bool is_helix_master(void);
void matrix_master_OLED_init (void);
-
-#endif
diff --git a/keyboards/helix/rev1/split_util.h b/keyboards/helix/rev1/split_util.h
index 595a0659e1..807412cd38 100644
--- a/keyboards/helix/rev1/split_util.h
+++ b/keyboards/helix/rev1/split_util.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
+#pragma once
#include <stdbool.h>
#include "eeconfig.h"
@@ -16,5 +15,3 @@ bool has_usb(void);
void keyboard_slave_loop(void);
void matrix_master_OLED_init (void);
-
-#endif
diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk
index c16f3e2b87..58b43a6bda 100644
--- a/keyboards/helix/rev2/keymaps/default/rules.mk
+++ b/keyboards/helix/rev2/keymaps/default/rules.mk
@@ -29,7 +29,3 @@ OLED_SELECT = core
ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index 0012f657ab..8a091605ac 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -106,7 +106,3 @@ endif
ifeq ($(strip $(CUSTOM_DELAY)),yes)
SRC += matrix_output_unselect_delay.c
endif
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
index d44382f86a..7c4a7b6045 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
@@ -17,7 +17,3 @@ HELIX_ROWS = 5 # Helix Rows is 4 or 5
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk b/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk
index 462a83f6e7..98585b0d60 100644
--- a/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk
+++ b/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk
@@ -22,7 +22,3 @@ LED_ANIMATIONS = yes # LED animations
LED_BACK_ENABLE = no
LED_UNDERGLOW_ENABLE = yes
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/froggy/rules.mk b/keyboards/helix/rev2/keymaps/froggy/rules.mk
index 5a0fd9a2b1..2d01c43fe7 100644
--- a/keyboards/helix/rev2/keymaps/froggy/rules.mk
+++ b/keyboards/helix/rev2/keymaps/froggy/rules.mk
@@ -17,7 +17,3 @@ LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/froggy_106/rules.mk b/keyboards/helix/rev2/keymaps/froggy_106/rules.mk
index 5a0fd9a2b1..2d01c43fe7 100644
--- a/keyboards/helix/rev2/keymaps/froggy_106/rules.mk
+++ b/keyboards/helix/rev2/keymaps/froggy_106/rules.mk
@@ -17,7 +17,3 @@ LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/led_test/rules.mk b/keyboards/helix/rev2/keymaps/led_test/rules.mk
index 8b590eee86..3ab27acfc2 100644
--- a/keyboards/helix/rev2/keymaps/led_test/rules.mk
+++ b/keyboards/helix/rev2/keymaps/led_test/rules.mk
@@ -23,7 +23,3 @@ ifeq ($(strip $(OLED_ENABLE)), yes)
SRC += oled_display.c
endif
SRC += led_test_init.c
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
index 83dcc9b3b8..cd436cd9a3 100644
--- a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
+++ b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk
@@ -17,7 +17,3 @@ OLED_ENABLE = yes # OLED_ENABLE
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = no # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
-
-# convert Helix-specific options (that represent combinations of standard options)
-# into QMK standard options.
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/rev2/post_rules.mk b/keyboards/helix/rev2/post_rules.mk
new file mode 100644
index 0000000000..4c671d4515
--- /dev/null
+++ b/keyboards/helix/rev2/post_rules.mk
@@ -0,0 +1,3 @@
+ifneq ($(strip $(KEYBOARD_LOCAL_FEATURES_MK)),)
+ include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
+endif
diff --git a/keyboards/helix/rev2/serial_config_simpleapi.h b/keyboards/helix/rev2/serial_config_simpleapi.h
index e2d22a41e7..0e1dd9e4ac 100644
--- a/keyboards/helix/rev2/serial_config_simpleapi.h
+++ b/keyboards/helix/rev2/serial_config_simpleapi.h
@@ -1,8 +1,5 @@
-#ifndef SERIAL_CONFIG_SIMPLEAPI_H
-#define SERIAL_CONFIG_SIMPLEAPI_H
+#pragma once
#undef SERIAL_USE_MULTI_TRANSACTION
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
-
-#endif // SERIAL_CONFIG_SIMPLEAPI_H
diff --git a/keyboards/helix/rev2/split_scomm.h b/keyboards/helix/rev2/split_scomm.h
index 873d8939d8..16887eb74f 100644
--- a/keyboards/helix/rev2/split_scomm.h
+++ b/keyboards/helix/rev2/split_scomm.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_COMM_H
-#define SPLIT_COMM_H
+#pragma once
#ifndef SERIAL_USE_MULTI_TRANSACTION
/* --- USE Simple API (OLD API, compatible with let's split serial.c) --- */
@@ -20,5 +19,3 @@ void serial_slave_init(void);
int serial_update_buffers(int master_changed);
#endif
-
-#endif /* SPLIT_COMM_H */
diff --git a/keyboards/helix/rev2/split_util.h b/keyboards/helix/rev2/split_util.h
index c0ecdb0974..b839ce6e3e 100644
--- a/keyboards/helix/rev2/split_util.h
+++ b/keyboards/helix/rev2/split_util.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
+#pragma once
#include <stdbool.h>
#include "eeconfig.h"
@@ -15,5 +14,3 @@ void split_keyboard_setup(void);
bool is_helix_master(void);
void matrix_master_OLED_init (void);
-
-#endif
diff --git a/keyboards/hhkb/ansi/post_rules.mk b/keyboards/hhkb/ansi/post_rules.mk
new file mode 100644
index 0000000000..bc6ad5cd4c
--- /dev/null
+++ b/keyboards/hhkb/ansi/post_rules.mk
@@ -0,0 +1,18 @@
+ifeq ($(strip $(HHKB_RN42_ENABLE)), yes)
+
+OPT_DEFS += -DHHKB_RN42_ENABLE
+
+# Support for the RN42 Bluetooth module. This is the BT module in Hasu's BT
+# HHKB Alt controller.
+RN42_DIR = ../rn42
+
+SRC += serial_uart.c \
+ ../rn42/suart.S \
+ ../rn42/rn42.c \
+ ../rn42/rn42_task.c \
+ ../rn42/battery.c \
+ ../rn42/main.c
+
+VPATH += $(RN42_DIR)
+
+endif
diff --git a/keyboards/hhkb/ansi/rules.mk b/keyboards/hhkb/ansi/rules.mk
index 6e2e81b0cf..71e8198b4a 100644
--- a/keyboards/hhkb/ansi/rules.mk
+++ b/keyboards/hhkb/ansi/rules.mk
@@ -30,26 +30,6 @@ CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
# project specific files
SRC = matrix.c
-ifeq ($(strip $(HHKB_RN42_ENABLE)), yes)
-
-OPT_DEFS += -DHHKB_RN42_ENABLE
-
-# Support for the RN42 Bluetooth module. This is the BT module in Hasu's BT
-# HHKB Alt controller.
-RN42_DIR = ../rn42
-
-SRC += serial_uart.c \
- ../rn42/suart.S \
- ../rn42/rn42.c \
- ../rn42/rn42_task.c \
- ../rn42/battery.c \
- ../rn42/main.c
-
-VPATH += $(RN42_DIR)
-
-endif
-
-
# debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION
# debug-on: all
diff --git a/keyboards/hhkb/jp/post_rules.mk b/keyboards/hhkb/jp/post_rules.mk
new file mode 100644
index 0000000000..bc6ad5cd4c
--- /dev/null
+++ b/keyboards/hhkb/jp/post_rules.mk
@@ -0,0 +1,18 @@
+ifeq ($(strip $(HHKB_RN42_ENABLE)), yes)
+
+OPT_DEFS += -DHHKB_RN42_ENABLE
+
+# Support for the RN42 Bluetooth module. This is the BT module in Hasu's BT
+# HHKB Alt controller.
+RN42_DIR = ../rn42
+
+SRC += serial_uart.c \
+ ../rn42/suart.S \
+ ../rn42/rn42.c \
+ ../rn42/rn42_task.c \
+ ../rn42/battery.c \
+ ../rn42/main.c
+
+VPATH += $(RN42_DIR)
+
+endif
diff --git a/keyboards/hhkb/jp/rules.mk b/keyboards/hhkb/jp/rules.mk
index 56187bb331..8eb11940b3 100644
--- a/keyboards/hhkb/jp/rules.mk
+++ b/keyboards/hhkb/jp/rules.mk
@@ -30,26 +30,6 @@ CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
# project specific files
SRC = matrix.c
-ifeq ($(strip $(HHKB_RN42_ENABLE)), yes)
-
-OPT_DEFS += -DHHKB_RN42_ENABLE
-
-# Support for the RN42 Bluetooth module. This is the BT module in Hasu's BT
-# HHKB Alt controller.
-RN42_DIR = ../rn42
-
-SRC += serial_uart.c \
- ../rn42/suart.S \
- ../rn42/rn42.c \
- ../rn42/rn42_task.c \
- ../rn42/battery.c \
- ../rn42/main.c
-
-VPATH += $(RN42_DIR)
-
-endif
-
-
# debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION
# debug-on: all
diff --git a/keyboards/hhkb/rn42/battery.h b/keyboards/hhkb/rn42/battery.h
index 180d4dcfaa..c7f96d09a3 100644
--- a/keyboards/hhkb/rn42/battery.h
+++ b/keyboards/hhkb/rn42/battery.h
@@ -1,5 +1,4 @@
-#ifndef POWER_H
-#define POWER_H
+#pragma once
#include <stdint.h>
#include <stdbool.h>
@@ -31,5 +30,3 @@ battery_status_t battery_status(void);
// ADC offset:16, resolution:5mV
#define BATTERY_ADC_OFFSET 16
#define BATTERY_ADC_RESOLUTION 5
-
-#endif
diff --git a/keyboards/hhkb/rn42/rn42.h b/keyboards/hhkb/rn42/rn42.h
index dee214cc84..76bcef99bb 100644
--- a/keyboards/hhkb/rn42/rn42.h
+++ b/keyboards/hhkb/rn42/rn42.h
@@ -1,5 +1,4 @@
-#ifndef RN42_H
-#define RN42_H
+#pragma once
#include <stdbool.h>
#include "host_driver.h"
@@ -26,5 +25,3 @@ void rn42_send_str(const char *str);
void rn42_print_response(void);
#define SEND_STR(str) rn42_send_str(PSTR(str))
#define SEND_COMMAND(cmd) rn42_send_command(PSTR(cmd))
-
-#endif
diff --git a/keyboards/hhkb/rn42/rn42_task.h b/keyboards/hhkb/rn42/rn42_task.h
index ee00669ee5..05e80e9be2 100644
--- a/keyboards/hhkb/rn42/rn42_task.h
+++ b/keyboards/hhkb/rn42/rn42_task.h
@@ -1,5 +1,4 @@
-#ifndef RN42_TASK_H
-#define RN42_TASK_H
+#pragma once
#include <stdbool.h>
#include "rn42.h"
@@ -10,5 +9,3 @@ bool rn42_nkro_last;
void rn42_task_init(void);
void rn42_task(void);
-
-#endif
diff --git a/keyboards/hid_liber/config.h b/keyboards/hid_liber/config.h
index 1e263649e5..1664b9e314 100755
--- a/keyboards/hid_liber/config.h
+++ b/keyboards/hid_liber/config.h
@@ -15,8 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -91,5 +90,3 @@
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/hs60/v1/v1.h b/keyboards/hs60/v1/v1.h
index 4de781e5fa..4c81e90612 100644
--- a/keyboards/hs60/v1/v1.h
+++ b/keyboards/hs60/v1/v1.h
@@ -13,40 +13,39 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef HS60_H
-#define HS60_H
-#define XXX KC_NO
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
#define LAYOUT_60_iso( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
- { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D } \
}
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, XXX }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
- { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D } \
}
-#endif \ No newline at end of file
diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk
index 507f4fcd37..7837adcbd3 100644
--- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk
+++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk
@@ -22,4 +22,5 @@ ENCODER_ENABLE = no # Enable rotary encoder support
AUDIO_ENABLE = no # Audio output
KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra
-HAPTIC_ENABLE += SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
diff --git a/keyboards/idobo/idobo.h b/keyboards/idobo/idobo.h
index 386fcee1a9..9643a1efd3 100644
--- a/keyboards/idobo/idobo.h
+++ b/keyboards/idobo/idobo.h
@@ -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/>.
*/
-#ifndef IDOBO_H
-#define IDOBO_H
+
+#pragma once
#include "quantum.h"
@@ -27,18 +27,15 @@
* represents the switch matrix.
*/
#define LAYOUT_ortho_5x15( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E } \
}
-
-#endif
diff --git a/keyboards/jc65/v32a/v32a.h b/keyboards/jc65/v32a/v32a.h
index 4e24420913..91e6164ae2 100644
--- a/keyboards/jc65/v32a/v32a.h
+++ b/keyboards/jc65/v32a/v32a.h
@@ -15,25 +15,24 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef V32A_H
-#define V32A_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K04,K14,K24,K34,K44,K54,K16,KB6,KB7,K17,KA4,KB4,KC4,KD4,KE4,KD0, \
- K03,K13,K23,K33,K43,K53,K26,KC6,KC7,K27,KA3,KB3,KC3, KD3,K67, \
- K02,K12,K22,K32,K42,K52,K36,KD6,KD7,K37,KA2,KB2,KC2, KD2,K87, \
- K01,K30,K11,K21,K31,K41,K51,K46,KE6,KE7,K47,KA1, KB1,K86,K77, \
- K00,K10,K20, K40,K56,K50, K57,KB0,KC0,K96,K76,K66 \
-){ \
- { K00, K10, K20, K30, K40, K50,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO, KB0, KC0, KD0,KC_NO }, \
- { K01, K11, K21, K31, K41, K51,KC_NO,KC_NO,KC_NO,KC_NO, KA1, KB1,KC_NO,KC_NO,KC_NO }, \
- { K02, K12, K22, K32, K42, K52,KC_NO,KC_NO,KC_NO,KC_NO, KA2, KB2, KC2, KD2,KC_NO }, \
- { K03, K13, K23, K33, K43, K53,KC_NO,KC_NO,KC_NO,KC_NO, KA3, KB3, KC3, KD3,KC_NO }, \
- { K04, K14, K24, K34, K44, K54,KC_NO,KC_NO,KC_NO,KC_NO, KA4, KB4, KC4, KD4, KE4 }, \
- { KC_NO, K16, K26, K36, K46, K56, K66, K76, K86, K96,KC_NO, KB6, KC6, KD6, KE6 }, \
- { KC_NO, K17, K27, K37, K47, K57, K67, K77, K87,KC_NO,KC_NO, KB7, KC7, KD7, KE7 } \
+ k40, k41, k42, k43, k44, k45, k61, k6B, k7B, k71, k4A, k4B, k4C, k4D, k4E, k0D, \
+ k30, k31, k32, k33, k34, k35, k62, k6C, k7C, k72, k3A, k3B, k3C, k3D, k76, \
+ k20, k21, k22, k23, k24, k25, k63, k6D, k7D, k73, k2A, k2B, k2C, k2D, k78, \
+ k10, k03, k11, k12, k13, k14, k15, k64, k6E, k7E, k74, k1A, k1B, k68, k77, \
+ k00, k01, k02, k04, k65, k05, k75, k0B, k0C, k69, k67, k66 \
+) { \
+ { k00, k01, k02, k03, k04, k05, XXX, XXX, XXX, XXX, XXX, k0B, k0C, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, XXX, XXX, XXX, XXX, k1A, k1B, XXX, XXX, XXX }, \
+ { k20, k21, k22, k23, k24, k25, XXX, XXX, XXX, XXX, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, XXX, XXX, XXX, XXX, k3A, k3B, k3C, k3D, XXX }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX, XXX, XXX, k4A, k4B, k4C, k4D, k4E }, \
+ { XXX, k61, k62, k63, k64, k65, k66, k67, k68, k69, XXX, k6B, k6C, k6D, k6E }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77, k78, XXX, XXX, k7B, k7C, k7D, k7E } \
}
-
-#endif
diff --git a/keyboards/jc65/v32u4/config.h b/keyboards/jc65/v32u4/config.h
index 314bfbf259..108e4126be 100644
--- a/keyboards/jc65/v32u4/config.h
+++ b/keyboards/jc65/v32u4/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -55,5 +54,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
-
-#endif
diff --git a/keyboards/jc65/v32u4/v32u4.h b/keyboards/jc65/v32u4/v32u4.h
index 866e6cc689..8bab085b11 100644
--- a/keyboards/jc65/v32u4/v32u4.h
+++ b/keyboards/jc65/v32u4/v32u4.h
@@ -1,21 +1,19 @@
-#ifndef V32U4_H
-#define V32U4_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
- K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E, K4F \
-)\
-{\
- {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F}, \
- {K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F}, \
- {K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F}, \
- {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F}, \
- {K40, K41, KC_NO, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F}, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \
+ k40, k41, k43, k44, k46, k48, k4A, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \
+ { k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, k4C, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/jd40/config.h b/keyboards/jd40/config.h
index 027aacfd58..dd6984f108 100644
--- a/keyboards/jd40/config.h
+++ b/keyboards/jd40/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -68,5 +67,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
-
-#endif
diff --git a/keyboards/jd40/jd40.h b/keyboards/jd40/jd40.h
index 4426fd7629..41ec860e8f 100644
--- a/keyboards/jd40/jd40.h
+++ b/keyboards/jd40/jd40.h
@@ -1,43 +1,18 @@
-#ifndef JD40_H
-#define JD40_H
+#pragma once
#include "quantum.h"
#include "led.h"
-/* GH60 LEDs
- * GPIO pads
- * 0 F7 WASD LEDs
- * 1 F6 ESC LED
- * 2 F5 FN LED
- * 3 F4 POKER Arrow LEDs
- * B2 Capslock LED
- * B0 not connected
- */
-
- /*
-inline void gh60_caps_led_on(void) { DDRB |= (1<<2); PORTB &= ~(1<<2); }
-inline void gh60_poker_leds_on(void) { DDRF |= (1<<4); PORTF &= ~(1<<4); }
-inline void gh60_fn_led_on(void) { DDRF |= (1<<5); PORTF &= ~(1<<5); }
-inline void gh60_esc_led_on(void) { DDRF |= (1<<6); PORTF &= ~(1<<6); }
-inline void gh60_wasd_leds_on(void) { DDRF |= (1<<7); PORTF &= ~(1<<7); }
-
-inline void gh60_caps_led_off(void) { DDRB &= ~(1<<2); PORTB &= ~(1<<2); }
-inline void gh60_poker_leds_off(void) { DDRF &= ~(1<<4); PORTF &= ~(1<<4); }
-inline void gh60_fn_led_off(void) { DDRF &= ~(1<<5); PORTF &= ~(1<<5); }
-inline void gh60_esc_led_off(void) { DDRF &= ~(1<<6); PORTF &= ~(1<<6); }
-inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); }
-*/
+#define XXX KC_NO
#define LAYOUT( \
- K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
- K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, \
- K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, \
- K35, K36, K37, K38, K39, K40, K41, K42, K43, K44 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, \
+ k30, k31, k32, k33, k34, k36, k37, k38, k39, k3A \
) { \
- { K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12 }, \
- { K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, KC_NO }, \
- { K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, KC_NO }, \
- { K35, K36, K37, K38, K39, KC_NO, K40, K41, K42, K43, K44, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, XXX }, \
+ { k30, k31, k32, k33, k34, XXX, k36, k37, k38, k39, k3A, XXX } \
}
-
-#endif
diff --git a/keyboards/jd45/config.h b/keyboards/jd45/config.h
index 4cc46c646c..be2f0963ac 100644
--- a/keyboards/jd45/config.h
+++ b/keyboards/jd45/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/jd45/jd45.h b/keyboards/jd45/jd45.h
index a0603d4e43..ab560e742c 100644
--- a/keyboards/jd45/jd45.h
+++ b/keyboards/jd45/jd45.h
@@ -1,20 +1,19 @@
-#ifndef JD45_H
-#define JD45_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* JD45 keymap definition macro
*/
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3b \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k36, k38, k39, k3A, k3B \
) { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, KC_NO }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO }, \
- { k30, k31, k32, k33, k34, KC_NO, k36, KC_NO, k38, k39, k3a, k3b, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX }, \
+ { k30, k31, k32, k33, k34, XXX, k36, XXX, k38, k39, k3A, k3B, XXX } \
}
-
-#endif
diff --git a/keyboards/kapcave/arya/arya.c b/keyboards/kapcave/arya/arya.c
new file mode 100644
index 0000000000..af5d19be4f
--- /dev/null
+++ b/keyboards/kapcave/arya/arya.c
@@ -0,0 +1,27 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "arya.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
diff --git a/keyboards/kapcave/arya/arya.h b/keyboards/kapcave/arya/arya.h
new file mode 100644
index 0000000000..ea1d1916c3
--- /dev/null
+++ b/keyboards/kapcave/arya/arya.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 LAYOUT_alice_split_bs( \
+ K81, K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
+ K80, K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
+ K82, K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
+ K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
+ K30, K40, K50, K60, K00, K10, K20 \
+) \
+{ \
+ { K00 , K01 , K02 , K03 , K04 , K05 , K06 , K07 }, \
+ { K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 }, \
+ { K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 }, \
+ { K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 }, \
+ { K40 , K41 , K42 , K43 , K44 , K45 , K46 , K47 }, \
+ { K50 , K51 , K52 , K53 , K54 , K55 , K56 , K57 }, \
+ { K60 , K61 , K62 , K63 , K64 , K65 , K66 , K67 }, \
+ { KC_NO , K71 , K72 , K73 , K74 , K75 , K76 , K77 }, \
+ { K80 , K81 , K82 , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} \
+}
+
+
+
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/kapcave/arya/chconf.h b/keyboards/kapcave/arya/chconf.h
new file mode 100644
index 0000000000..d5c78af075
--- /dev/null
+++ b/keyboards/kapcave/arya/chconf.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 CH_CFG_ST_RESOLUTION 16
+
+#define CH_CFG_INTERVALS_SIZE 16
+
+#include_next <chconf.h>
+
diff --git a/keyboards/kapcave/arya/config.h b/keyboards/kapcave/arya/config.h
new file mode 100644
index 0000000000..62df795ff5
--- /dev/null
+++ b/keyboards/kapcave/arya/config.h
@@ -0,0 +1,68 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B43
+#define PRODUCT_ID 0x4152
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KapCave
+#define PRODUCT Arya
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 8
+
+#define MATRIX_COL_PINS { B0, B5, B4, B2, C13, F1, F0, A14}
+#define MATRIX_ROW_PINS { B8, A13, B1, A15, B9, B10, B11, A0, A8 }
+#define DIODE_DIRECTION COL2ROW
+
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define ENCODERS_PAD_A { B12, B14, C15 }
+#define ENCODERS_PAD_B { B13, B15, C14 }
+
+#define ENCODER_RESOLUTION 2
+#define TAP_CODE_DELAY 25
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/kapcave/arya/halconf.h b/keyboards/kapcave/arya/halconf.h
new file mode 100644
index 0000000000..dffa322d19
--- /dev/null
+++ b/keyboards/kapcave/arya/halconf.h
@@ -0,0 +1,23 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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>
+
diff --git a/keyboards/kapcave/arya/info.json b/keyboards/kapcave/arya/info.json
new file mode 100644
index 0000000000..fb220aa070
--- /dev/null
+++ b/keyboards/kapcave/arya/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "Arya",
+ "url": "https://kapcave.com/products/arya",
+ "maintainer": "nachie",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":2.75, "y":5.9},
+ {"label":"\u00ac", "x":4, "y":6.0},
+ {"label":"!", "x":5, "y":6.0},
+ {"label":"\"", "x":6, "y":6.0},
+ {"label":"_", "x":15.25, "y":6.0},
+ {"label":"+", "x":16.25, "y":6.0},
+ {"label":"", "x":17.25, "y":6.0},
+ {"label":"", "x":18.25, "y":6.0},
+ {"label":"Pg Up", "x":2.5, "y":6.9},
+ {"label":"Tab", "x":3.75, "y":7.0, "w":1.5},
+ {"label":"Q", "x":5.25, "y":7.0},
+ {"label":"P", "x":15, "y":7.0},
+ {"label":"{", "x":16, "y":7.0},
+ {"label":"}", "x":17, "y":7.0},
+ {"label":"|", "x":18, "y":7.0, "w":1.5},
+ {"label":"Pg Dn", "x":2.25, "y":7.9},
+ {"label":"Caps Lock", "x":3.5, "y":8.0, "w":1.75},
+ {"label":"A", "x":5.25, "y":8.0},
+ {"label":":", "x":15.5, "y":8.0},
+ {"label":"\"", "x":16.5, "y":8.0},
+ {"label":"Enter", "x":17.5, "y":8.0, "w":2.25},
+ {"label":"Shift", "x":3.25, "y":9.0, "w":2.25},
+ {"label":"Z", "x":5.5, "y":9.0},
+ {"label":">", "x":15.25, "y":9.0},
+ {"label":"?", "x":16.25, "y":9.0},
+ {"label":"Shift", "x":17.25, "y":9.0, "w":1.75},
+ {"label":"Fn", "x":19, "y":9.0},
+ {"label":"Ctrl", "x":3.25, "y":10.0, "w":1.5},
+ {"label":"Ctrl", "x":18.25, "y":10.0, "w":1.5},
+ {"label":"\u00a3", "x":8.25, "y":4.5},
+ {"label":"$", "x":9.25, "y":4.5},
+ {"label":"%", "x":10.25, "y":4.5},
+ {"label":"^", "x":11.25, "y":4.5},
+ {"label":"W", "x":7.75, "y":5.5},
+ {"label":"E", "x":8.75, "y":5.5},
+ {"label":"R", "x":9.75, "y":5.5},
+ {"label":"T", "x":10.75, "y":5.5},
+ {"label":"S", "x":8, "y":6.5},
+ {"label":"D", "x":9, "y":6.5},
+ {"label":"F", "x":10, "y":6.5},
+ {"label":"G", "x":11, "y":6.5},
+ {"label":"X", "x":8.5, "y":7.5},
+ {"label":"C", "x":9.5, "y":7.5},
+ {"label":"V", "x":10.5, "y":7.5},
+ {"label":"B", "x":11.5, "y":7.5},
+ {"label":"Alt", "x":8.25, "y":8.5, "w":1.5},
+ {"label":"", "x":9.75, "y":8.5, "w":2},
+ {"label":"Fn", "x":11.75, "y":8.5, "w":1.25},
+ {"label":"&", "x":9.5, "y":9.0},
+ {"label":"*", "x":10.5, "y":9.0},
+ {"label":"(", "x":11.5, "y":9.0},
+ {"label":")", "x":12.5, "y":9.0},
+ {"label":"Y", "x":9, "y":10.0},
+ {"label":"U", "x":10, "y":10.0},
+ {"label":"I", "x":11, "y":10.0},
+ {"label":"O", "x":12, "y":10.0},
+ {"label":"H", "x":9.25, "y":11.0},
+ {"label":"J", "x":10.25, "y":11.0},
+ {"label":"K", "x":11.25, "y":11.0},
+ {"label":"L", "x":12.25, "y":11.0},
+ {"label":"Fn", "x":8.75, "y":12.0},
+ {"label":"N", "x":9.75, "y":12.0},
+ {"label":"M", "x":10.75, "y":12.0},
+ {"label":"<", "x":11.75, "y":12.0},
+ {"label":"Shift", "x":8.75, "y":13.0, "w":2.75},
+ {"label":"Alt", "x":11.5, "y":13.0, "w":1.5}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/kapcave/arya/keymaps/default/keymap.c b/keyboards/kapcave/arya/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b8300b1f4a
--- /dev/null
+++ b/keyboards/kapcave/arya/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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] = {
+ LAYOUT_alice_split_bs(
+ KC_ESC, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ 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_BSPC,
+ KC_PGDN, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL
+ ),
+ LAYOUT_alice_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/kapcave/arya/keymaps/default/readme.md b/keyboards/kapcave/arya/keymaps/default/readme.md
new file mode 100644
index 0000000000..9d9894862a
--- /dev/null
+++ b/keyboards/kapcave/arya/keymaps/default/readme.md
@@ -0,0 +1 @@
+The default layout for the KapCave Arya \ No newline at end of file
diff --git a/keyboards/kapcave/arya/keymaps/via/keymap.c b/keyboards/kapcave/arya/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4b98707da7
--- /dev/null
+++ b/keyboards/kapcave/arya/keymaps/via/keymap.c
@@ -0,0 +1,56 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 layer_names {
+ _BASE, // Default Layer
+ _FN, // Fn Layer 1
+ _FN2, // Fn Layer 2
+ _FN3 // Fn Layer 3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY */
+ [_BASE] = LAYOUT_alice_split_bs(
+ KC_ESC, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ 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_BSPC,
+ KC_PGDN, 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL
+ ),
+
+ /* FUNCTION */
+ [_FN] = LAYOUT_alice_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN2] = LAYOUT_alice_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+
+};
+
diff --git a/keyboards/kapcave/arya/keymaps/via/readme.md b/keyboards/kapcave/arya/keymaps/via/readme.md
new file mode 100644
index 0000000000..dcf12fbffd
--- /dev/null
+++ b/keyboards/kapcave/arya/keymaps/via/readme.md
@@ -0,0 +1 @@
+The VIA Keymap for the KapCave Arya \ No newline at end of file
diff --git a/keyboards/kapcave/arya/keymaps/via/rules.mk b/keyboards/kapcave/arya/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kapcave/arya/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kapcave/arya/mcuconf.h b/keyboards/kapcave/arya/mcuconf.h
new file mode 100644
index 0000000000..5c161dbe3c
--- /dev/null
+++ b/keyboards/kapcave/arya/mcuconf.h
@@ -0,0 +1,33 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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>
+
+/* enable TIM1, used for backlight PWM */
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+
+/* enable TIM2, used for underglow PWM driver */
+#undef STM32_PWM_USE_TIM2
+#define STM32_PWM_USE_TIM2 TRUE
+
+/* move system from TIM2 (default) to TIM3 (since TIM2 is needed for underglow) */
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 FALSE
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 3
diff --git a/keyboards/kapcave/arya/readme.md b/keyboards/kapcave/arya/readme.md
new file mode 100644
index 0000000000..12fe9684a5
--- /dev/null
+++ b/keyboards/kapcave/arya/readme.md
@@ -0,0 +1,23 @@
+# KapCave Arya
+
+Firmware for the KapCave Arya Keyboard
+
+* Keyboard Maintainer: [KapCave](https://github.com/nachie)
+* Hardware Supported: Arya PCB
+* Hardware Availability: [KapCave](https://kapcave.com/products/arya-pcb)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kapcave/arya:default
+
+Or to make and flash:
+
+ make kapcave/arya: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
+
+* **Bootmagic reset**: Hold down Right Space key and plug in the keyboard
+* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
diff --git a/keyboards/kapcave/arya/rules.mk b/keyboards/kapcave/arya/rules.mk
new file mode 100644
index 0000000000..4732327713
--- /dev/null
+++ b/keyboards/kapcave/arya/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/kapcave/gskt00/config.h b/keyboards/kapcave/gskt00/config.h
new file mode 100755
index 0000000000..91c34182e7
--- /dev/null
+++ b/keyboards/kapcave/gskt00/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B43
+#define PRODUCT_ID 0x6061
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KapCave
+#define PRODUCT GSKT00
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F1, D1, D2, D4, D6, F7, B0, F4 }
+#define MATRIX_COL_PINS { F6, D7, F5, C7, B4, C6, B6, B5 }
+#define UNUSED_PINS
+
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+
diff --git a/keyboards/kapcave/gskt00/gskt00.c b/keyboards/kapcave/gskt00/gskt00.c
new file mode 100755
index 0000000000..c2c2d823f9
--- /dev/null
+++ b/keyboards/kapcave/gskt00/gskt00.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "gskt00.h"
+
diff --git a/keyboards/kapcave/gskt00/gskt00.h b/keyboards/kapcave/gskt00/gskt00.h
new file mode 100755
index 0000000000..d0ac51acd7
--- /dev/null
+++ b/keyboards/kapcave/gskt00/gskt00.h
@@ -0,0 +1,73 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 XXX KC_NO
+
+#define LAYOUT_all( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k26, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k41, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, k22, \
+ k30, k40, k50, k60, k00, k10, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
+#define LAYOUT_60_iso_tsangan( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k24, k23, \
+ k31, k41, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, \
+ k30, k40, k50, k60, k00, k10, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { XXX, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, XXX, k23, k24, k25, XXX, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
+#define LAYOUT_60_ansi_tsangan( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, \
+ k30, k40, k50, k60, k00, k10, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, XXX, k23, k24, k25, XXX, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 } \
+}
diff --git a/keyboards/gskt00/info.json b/keyboards/kapcave/gskt00/info.json
index 0b81c58514..ba1455fae9 100644
--- a/keyboards/gskt00/info.json
+++ b/keyboards/kapcave/gskt00/info.json
@@ -1,6 +1,6 @@
{
- "keyboard_name": "gskt00",
- "url": "",
+ "keyboard_name": "GSKT-00",
+ "url": "https://kapcave.com/products/gskt-00-pcb-usb-c",
"maintainer": "nachie",
"layouts": {
"LAYOUT_60_ansi_tsangan": {
diff --git a/keyboards/kapcave/gskt00/keymaps/default-poly/config.h b/keyboards/kapcave/gskt00/keymaps/default-poly/config.h
new file mode 100644
index 0000000000..2db5749cb5
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/default-poly/config.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 ENCODERS_PAD_A { D5 }
+#define ENCODERS_PAD_B { D3 }
+
+#define RGB_DI_PIN D0
+#ifdef RGB_DI_PIN
+#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 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 12
+#endif
+
diff --git a/keyboards/kapcave/gskt00/keymaps/default-poly/keymap.c b/keyboards/kapcave/gskt00/keymaps/default-poly/keymap.c
new file mode 100755
index 0000000000..8c7e9720db
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/default-poly/keymap.c
@@ -0,0 +1,70 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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] = {
+
+ /* QWERTY */
+ LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ MO(3), 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_SLSH, KC_LSFT, MO(3),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_LCTL),
+
+ /* DVORAK */
+ LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC,
+ MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, MO(3),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
+
+ /* COLEMAK */
+ LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC,
+ MO(3), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(3),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
+
+ /* FUNCTION */
+ LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSPC,
+ KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG)
+
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) { /* Second encoder */
+ if (clockwise) {
+ tap_code(KC_UP);
+ } else {
+ tap_code(KC_DOWN);
+ }
+ }
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/kapcave/gskt00/keymaps/default-poly/readme.md b/keyboards/kapcave/gskt00/keymaps/default-poly/readme.md
new file mode 100644
index 0000000000..1f6d7bcd38
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/default-poly/readme.md
@@ -0,0 +1 @@
+There was a private run of Polycarbonate cases. This keymap supports the underglow PCBs that shipped out with those, in addition to future underglow pcbs. These PCBs also had encoder support which is reflected in the keymap. \ No newline at end of file
diff --git a/keyboards/kapcave/gskt00/keymaps/default-poly/rules.mk b/keyboards/kapcave/gskt00/keymaps/default-poly/rules.mk
new file mode 100644
index 0000000000..53c9db2bd2
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/default-poly/rules.mk
@@ -0,0 +1,2 @@
+RGBLIGHT_ENABLE = yes
+ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gskt00/keymaps/default/keymap.c b/keyboards/kapcave/gskt00/keymaps/default/keymap.c
index 225d0224ea..0d8d6dad6b 100755
--- a/keyboards/gskt00/keymaps/default/keymap.c
+++ b/keyboards/kapcave/gskt00/keymaps/default/keymap.c
@@ -1,3 +1,19 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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] = {
@@ -10,22 +26,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LSFT, MO(3),
KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(3)),
- /* DVORAK */
- LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_GRV, KC_BSLS,
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSPC,
- MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT,
- KC_LSFT, KC_NUBS, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LSFT, MO(3),
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
-
- /* COLEMAK */
- LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC,
- MO(3), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(3),
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL),
-
/* FUNCTION */
LAYOUT_all(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
@@ -35,3 +35,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG)
};
+
diff --git a/keyboards/kapcave/gskt00/keymaps/default/readme.md b/keyboards/kapcave/gskt00/keymaps/default/readme.md
new file mode 100644
index 0000000000..042b07d148
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/default/readme.md
@@ -0,0 +1 @@
+The default keymap for the GSKT-00 PCB. \ No newline at end of file
diff --git a/keyboards/gskt00/keymaps/nachie/keymap.c b/keyboards/kapcave/gskt00/keymaps/nachie/keymap.c
index 8606d24841..8606d24841 100755
--- a/keyboards/gskt00/keymaps/nachie/keymap.c
+++ b/keyboards/kapcave/gskt00/keymaps/nachie/keymap.c
diff --git a/keyboards/kapcave/gskt00/keymaps/via/keymap.c b/keyboards/kapcave/gskt00/keymaps/via/keymap.c
new file mode 100755
index 0000000000..95bc131422
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 layer_names {
+ _BASE, // Default Layer
+ _FN, // Fn Layer 1
+ _FN2, // Fn Layer 2
+ _FN3 // Fn Layer 3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY */
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_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_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(3),
+ KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(3)),
+
+ /* FUNCTION */
+ [_FN] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_PAUS, KC_DEL,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/kapcave/gskt00/keymaps/via/readme.md b/keyboards/kapcave/gskt00/keymaps/via/readme.md
new file mode 100644
index 0000000000..c5c3db7e3b
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/via/readme.md
@@ -0,0 +1 @@
+The via keymap for the GSKT-00 PCB. \ No newline at end of file
diff --git a/keyboards/kapcave/gskt00/keymaps/via/rules.mk b/keyboards/kapcave/gskt00/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/kapcave/gskt00/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kapcave/gskt00/readme.md b/keyboards/kapcave/gskt00/readme.md
new file mode 100644
index 0000000000..d1a90ca583
--- /dev/null
+++ b/keyboards/kapcave/gskt00/readme.md
@@ -0,0 +1,23 @@
+# GSKT-00 PCB
+
+Firmware for the GSKT-00 PCB
+
+* Keyboard Maintainer: [KapCave](https://github.com/nachie)
+* Hardware Supported: GSKT-00 PCB
+* Hardware Availability: [KapCave](https://kapcave.com/products/gskt-00-pcb-usb-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kapcave/gskt00:default
+
+Or to make and flash:
+
+ make kapcave/gskt00: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
+
+* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard
+* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
diff --git a/keyboards/gskt00/rules.mk b/keyboards/kapcave/gskt00/rules.mk
index 4e262e042f..0c803ec2e2 100755
--- a/keyboards/gskt00/rules.mk
+++ b/keyboards/kapcave/gskt00/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
diff --git a/keyboards/paladin64/config.h b/keyboards/kapcave/paladin64/config.h
index fa588ee354..7c3d1a0fa1 100755
--- a/keyboards/paladin64/config.h
+++ b/keyboards/kapcave/paladin64/config.h
@@ -1,28 +1,41 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#define VENDOR_ID 0x4B43
+#define PRODUCT_ID 0x5036
#define DEVICE_VER 0x0001
-#define MANUFACTURER inachie
+#define MANUFACTURER KapCave
#define PRODUCT paladin64
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 6
+
+/* Only required if you add in a trackpoint hardware to the pcb */
#ifdef PS2_USE_USART
- #define PS2_CLOCK_PORT PORTD
- #define PS2_CLOCK_PIN PIND
- #define PS2_CLOCK_DDR DDRD
- #define PS2_CLOCK_BIT 5
- #define PS2_DATA_PORT PORTD
- #define PS2_DATA_PIN PIND
- #define PS2_DATA_DDR DDRD
- #define PS2_DATA_BIT 2
+#define PS2_CLOCK_PIN D5
+#define PS2_DATA_PIN D2
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling
* edge */
@@ -58,14 +71,8 @@
#endif
#ifdef PS2_USE_INT
-#define PS2_CLOCK_PORT PORTD
-#define PS2_CLOCK_PIN PIND
-#define PS2_CLOCK_DDR DDRD
-#define PS2_CLOCK_BIT 2
-#define PS2_DATA_PORT PORTD
-#define PS2_DATA_PIN PIND
-#define PS2_DATA_DDR DDRD
-#define PS2_DATA_BIT 5
+#define PS2_CLOCK_PIN D2
+#define PS2_DATA_PIN D5
#define PS2_INT_INIT() do { \
EICRA |= ((1<<ISC21) | \
@@ -112,5 +119,3 @@
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 12
#endif
-
-#endif
diff --git a/keyboards/paladin64/info.json b/keyboards/kapcave/paladin64/info.json
index 628b1c8c8d..207010c24e 100644
--- a/keyboards/paladin64/info.json
+++ b/keyboards/kapcave/paladin64/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "paladin64",
- "url": "",
- "maintainer": "qmk",
+ "keyboard_name": "Paladin64",
+ "url": "https://kapcave.com/products/paladin64-pcb",
+ "maintainer": "nachie",
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/paladin64/keymaps/default/keymap.c b/keyboards/kapcave/paladin64/keymaps/default/keymap.c
index 15c5858a81..ed906909fe 100755
--- a/keyboards/paladin64/keymaps/default/keymap.c
+++ b/keyboards/kapcave/paladin64/keymaps/default/keymap.c
@@ -1,3 +1,19 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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] = {
diff --git a/keyboards/kapcave/paladin64/keymaps/default/readme.md b/keyboards/kapcave/paladin64/keymaps/default/readme.md
new file mode 100644
index 0000000000..11248150d9
--- /dev/null
+++ b/keyboards/kapcave/paladin64/keymaps/default/readme.md
@@ -0,0 +1 @@
+The default keymap for Paladin64 \ No newline at end of file
diff --git a/keyboards/kapcave/paladin64/keymaps/via/keymap.c b/keyboards/kapcave/paladin64/keymaps/via/keymap.c
new file mode 100644
index 0000000000..7ce94a5ef4
--- /dev/null
+++ b/keyboards/kapcave/paladin64/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 layer_names {
+ _BASE, // Default Layer
+ _FN, // Fn Layer 1
+ _FN2, // Fn Layer 2
+ _FN3 // Fn Layer 3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY */
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ MO(3), 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_SLSH, KC_LSFT, MO(3),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_APP, KC_RGUI, KC_RALT, KC_LCTL),
+
+ /* FUNCTION */
+ [_FN] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSPC,
+ KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______)
+
+};
+
diff --git a/keyboards/kapcave/paladin64/keymaps/via/readme.md b/keyboards/kapcave/paladin64/keymaps/via/readme.md
new file mode 100644
index 0000000000..2cf66cd4cb
--- /dev/null
+++ b/keyboards/kapcave/paladin64/keymaps/via/readme.md
@@ -0,0 +1 @@
+Via layout for the paladin64 pcb \ No newline at end of file
diff --git a/keyboards/kapcave/paladin64/keymaps/via/rules.mk b/keyboards/kapcave/paladin64/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/kapcave/paladin64/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kapcave/paladin64/paladin64.c b/keyboards/kapcave/paladin64/paladin64.c
new file mode 100755
index 0000000000..88dd1fdff2
--- /dev/null
+++ b/keyboards/kapcave/paladin64/paladin64.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "paladin64.h"
+
diff --git a/keyboards/kapcave/paladin64/paladin64.h b/keyboards/kapcave/paladin64/paladin64.h
new file mode 100755
index 0000000000..b578c18540
--- /dev/null
+++ b/keyboards/kapcave/paladin64/paladin64.h
@@ -0,0 +1,106 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 XXX KC_NO
+
+#define LAYOUT_all( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k26, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k41, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, k22, \
+ k30, k40, k50, k60, k70, k00, k10, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
+#define LAYOUT_iso( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k41, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, \
+ k30, k40, k50, k60, k70, k00, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { XXX, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, XXX, k23, k24, k25, XXX, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
+#define LAYOUT_60_ansi( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, \
+ k30, k40, k50, k60, k70, k00, k10, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, XXX, k23, k24, k25, XXX, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
+#define LAYOUT_infinity( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k26, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, k22, \
+ k30, k40, k50, k60, k70, k00, k10, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
+#define LAYOUT_aek_103( \
+ k36, k37, k46, k47, k56, k57, k66, k67, k76, k77, k06, k07, k17, k27, \
+ k34, k35, k44, k45, k54, k55, k64, k65, k75, k05, k15, k16, k25, k24, \
+ k32, k33, k43, k52, k53, k63, k73, k74, k03, k04, k13, k14, k23, \
+ k31, k42, k51, k61, k62, k71, k72, k01, k02, k11, k12, k21, \
+ k30, k40, k50, k60, k70, k00, k20 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { XXX, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, XXX, k23, k24, k25, XXX, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
+}
diff --git a/keyboards/kapcave/paladin64/readme.md b/keyboards/kapcave/paladin64/readme.md
new file mode 100644
index 0000000000..cc4a9b67e3
--- /dev/null
+++ b/keyboards/kapcave/paladin64/readme.md
@@ -0,0 +1,24 @@
+# Paladin64 ALPS PCB
+
+Firmware for the Paladin64 ALPS64 PCB, with underglow and an optional
+trackpoint module.
+
+* Keyboard Maintainer: [KapCave](https://github.com/nachie)
+* Hardware Supported: Paladin64 ALPS PCB
+* Hardware Availability: [KapCave](https://kapcave.com/products/paladin64-pcb)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kapcave/paladin64:default
+
+Or to make and flash:
+
+ make kapcave/paladin64: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
+
+* **Bootmagic reset**: Hold down ESC key (top left) and plug in the keyboard
+* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
diff --git a/keyboards/kapcave/paladin64/rules.mk b/keyboards/kapcave/paladin64/rules.mk
new file mode 100755
index 0000000000..f526755d4b
--- /dev/null
+++ b/keyboards/kapcave/paladin64/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# 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 = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 60_ansi
diff --git a/keyboards/kapcave/paladinpad/config.h b/keyboards/kapcave/paladinpad/config.h
new file mode 100644
index 0000000000..9b3c9a4ca0
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/config.h
@@ -0,0 +1,46 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B43
+#define PRODUCT_ID 0x5050
+#define MANUFACTURER KapCave
+#define PRODUCT paladinpad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* prevent stuck modifiers */
+#define PREVENT_STUCK_MODIFIERS
+
+
diff --git a/keyboards/kapcave/paladinpad/info.json b/keyboards/kapcave/paladinpad/info.json
new file mode 100644
index 0000000000..7d1afccf60
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "PaladinPad",
+ "url": "https://kapcave.com/products/paladinpad-pcb",
+ "maintainer": "nachie",
+ "layouts": {
+ "LAYOUT_ortho_5x4": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+ {"x":3, "y":4}
+ ]
+ },
+ "LAYOUT_numpad_aek": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+
+ {"x":0, "y":4, "w":2},
+ {"x":2, "y":4},
+ {"x":3, "y":3, "h":2}
+ ]
+ },
+ "LAYOUT_numpad_5x4": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":1, "h":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+
+ {"x":0, "y":4, "w":2},
+ {"x":2, "y":4},
+ {"x":3, "y":3, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c b/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c
new file mode 100644
index 0000000000..79c3baae44
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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] = {
+
+ /* DEFAULT */
+ LAYOUT_numpad_aek(
+ MO(1), KC_PEQL, KC_PSLS, KC_PAST,
+ KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT),
+
+ /* FUNCTION */
+ LAYOUT_numpad_aek(
+ KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RESET, KC_NLCK)
+};
+
diff --git a/keyboards/kapcave/paladinpad/keymaps/aek/readme.md b/keyboards/kapcave/paladinpad/keymaps/aek/readme.md
new file mode 100644
index 0000000000..44b106fa6b
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/aek/readme.md
@@ -0,0 +1 @@
+The keymap for PaladinPad which resembles the AEK Numpad \ No newline at end of file
diff --git a/keyboards/kapcave/paladinpad/keymaps/default/keymap.c b/keyboards/kapcave/paladinpad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..30dd1b9c00
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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] = {
+
+ /* DEFAULT */
+ LAYOUT_numpad_5x4(
+ MO(1), KC_PAST, KC_PSLS, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT),
+
+ /* FUNCTION */
+ LAYOUT_numpad_5x4(
+ KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS,
+ RGB_HUI, RGB_SAI, RGB_VAI,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RESET, KC_NLCK)
+};
+
diff --git a/keyboards/kapcave/paladinpad/keymaps/default/readme.md b/keyboards/kapcave/paladinpad/keymaps/default/readme.md
new file mode 100644
index 0000000000..2ade4edf38
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/default/readme.md
@@ -0,0 +1 @@
+The default keymap for PaladinPad which resembles the AEK Numpad \ No newline at end of file
diff --git a/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c b/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c
new file mode 100644
index 0000000000..a65b53b341
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 {
+ DBLZERO = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* DEFAULT */
+ LAYOUT_ortho_5x4(
+ MO(1), KC_PSLS, KC_PAST, KC_BSPC,
+ KC_P7, KC_P8, KC_P9, KC_MINS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_EQL,
+ DBLZERO, KC_P0, KC_PDOT, KC_PENT),
+
+ /* FUNCTION */
+ LAYOUT_ortho_5x4(
+ KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET, KC_NLCK)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case DBLZERO:
+ if (record->event.pressed) {
+ SEND_STRING("00");
+ }
+ break;
+ }
+ return true;
+}
+
+
diff --git a/keyboards/kapcave/paladinpad/keymaps/ortho/readme.md b/keyboards/kapcave/paladinpad/keymaps/ortho/readme.md
new file mode 100644
index 0000000000..4dc98d30f4
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/ortho/readme.md
@@ -0,0 +1 @@
+The ortho keymap for PaladinPad which makes it a 5x4 ortho pad \ No newline at end of file
diff --git a/keyboards/kapcave/paladinpad/keymaps/via/keymap.c b/keyboards/kapcave/paladinpad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2315da4ace
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 layer_names {
+ _BASE, // Default Layer
+ _FN, // Fn Layer 1
+ _FN2, // Fn Layer 2
+ _FN3 // Fn Layer 3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* DEFAULT */
+ [_BASE] = LAYOUT_ortho_5x4(
+ MO(1), KC_PSLS, KC_PAST, KC_BSPC,
+ KC_P7, KC_P8, KC_P9, KC_MINS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_EQL,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+ /* FUNCTION */
+ [_FN] = LAYOUT_ortho_5x4(
+ KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET, KC_NLCK),
+
+ /* FUNCTION */
+ [_FN2] = LAYOUT_ortho_5x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______),
+
+ /* FUNCTION */
+ [_FN3] = LAYOUT_ortho_5x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______)
+};
diff --git a/keyboards/kapcave/paladinpad/keymaps/via/rules.mk b/keyboards/kapcave/paladinpad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..600f7d16a7
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+# Not enough space on ATMega32u4 for RGB + Audio + Via
+AUDIO_ENABLE = no \ No newline at end of file
diff --git a/keyboards/kapcave/paladinpad/paladinpad.c b/keyboards/kapcave/paladinpad/paladinpad.c
new file mode 100644
index 0000000000..063e49c872
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/paladinpad.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "paladinpad.h"
diff --git a/keyboards/kapcave/paladinpad/paladinpad.h b/keyboards/kapcave/paladinpad/paladinpad.h
new file mode 100644
index 0000000000..54b320c424
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/paladinpad.h
@@ -0,0 +1,103 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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"
+
+/*
+ * ┌─────┬─────┬─────┬─────â”
+ * │Num1 │ Eq │Slsh │Star │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 7 │ 8 │ 9 │ │
+ * ├─────┼─────┼─────┤Plus │
+ * │ 4 │ 5 │ 6 │ │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 1 │ 2 │ 3 │ │
+ * ├─────┴─────┼─────┤ Ent │
+ * │ 0 │ . │ │
+ * └───────────┴─────┴─────┘
+ */
+
+#define LAYOUT_numpad_5x4( \
+ K_NUM1, K_SLSH, K_STAR, K_MINUS, \
+ K_7, K_8, K_9, \
+ K_4, K_5, K_6, K_PLUS, \
+ K_1, K_2, K_3, \
+ K_0, K_DOT, K_ENT \
+) { \
+ { K_NUM1, K_SLSH, K_STAR, K_MINUS }, \
+ { K_7, K_8, K_9, KC_NO }, \
+ { K_4, K_5, K_6, K_PLUS }, \
+ { K_1, K_2, K_3, K_ENT }, \
+ { K_0, K_DOT, KC_NO, KC_NO } \
+}
+
+/*
+ * ┌─────┬─────┬─────┬─────â”
+ * │Num1 │Eql │Slsh │Star │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 7 │ 8 │ 9 │Minus│
+ * ├─────┼─────┼─────┼─────┤
+ * │ 4 │ 5 │ 6 │Plus │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 1 │ 2 │ 3 │ │
+ * ├─────┼─────┼─────┤ Ent │
+ * │ 0 │ 10 │ . │ │
+ * └─────┴─────┴─────┴─────┘
+ */
+
+#define LAYOUT_numpad_aek( \
+ K_NUM1, K_EQ1, K_SLSH1, K_STAR1, \
+ K_7, K_8, K_9, K_MINUS1, \
+ K_4, K_5, K_6, K_PLUS, \
+ K_1, K_2, K_3, \
+ K_0, K_DOT1, K_ENT \
+) { \
+ { K_NUM1, K_EQ1, K_SLSH1, K_STAR1 }, \
+ { K_7, K_8, K_9, K_MINUS1 }, \
+ { K_4, K_5, K_6, K_PLUS }, \
+ { K_1, K_2, K_3, K_ENT }, \
+ { K_0, K_DOT1, KC_NO, KC_NO } \
+}
+
+/*
+ * ┌─────┬─────┬─────┬─────â”
+ * │Num1 │ Eq │Slsh │Star │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 7 │ 8 │ 9 │Minus│
+ * ├─────┼─────┼─────┼─────┤
+ * │ 4 │ 5 │ 6 │Plus │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 1 │ 2 │ 3 │ 11 │
+ * ├─────┼─────┼─────┼─────┤
+ * │ 0 │ 10 │ . │ Ent │
+ * └─────┴─────┴─────┴─────┘
+ */
+
+#define LAYOUT_ortho_5x4( \
+ K_NUM1, K_EQ1, K_SLSH1, K_STAR1, \
+ K_7, K_8, K_9, K_MINUS1, \
+ K_4, K_5, K_6, K_PLUS, \
+ K_1, K_2, K_3, K_11, \
+ K_0, K_10, K_DOT1, K_ENT \
+) { \
+ { K_NUM1, K_EQ1, K_SLSH1, K_STAR1 }, \
+ { K_7, K_8, K_9, K_MINUS1 }, \
+ { K_4, K_5, K_6, K_PLUS }, \
+ { K_1, K_2, K_3, K_ENT }, \
+ { K_0, K_DOT1, K_10, K_11 } \
+}
diff --git a/keyboards/kapcave/paladinpad/readme.md b/keyboards/kapcave/paladinpad/readme.md
new file mode 100644
index 0000000000..f21c43d783
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/readme.md
@@ -0,0 +1,23 @@
+# PaladinPad PCB
+
+Firmware for the PaladinPad, with underglow.
+
+* Keyboard Maintainer: [KapCave](https://github.com/nachie)
+* Hardware Supported: PaladinPad
+* Hardware Availability: [KapCave](https://kapcave.com/products/paladinpad-pcb)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kapcave/paladinpad:default
+
+Or to make and flash:
+
+ make kapcave/paladinpad: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
+
+* **Bootmagic reset**: Hold down NumLock (Top Left) and plug in the keyboard
+* **Physical reset button**: Briefly press the button labeled "SW_RST1" on the back of the PCB
diff --git a/keyboards/kapcave/paladinpad/rev1/config.h b/keyboards/kapcave/paladinpad/rev1/config.h
new file mode 100644
index 0000000000..84af56ec25
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/rev1/config.h
@@ -0,0 +1,44 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "config_common.h"
+
+#define DEVICE_VER 0x0001
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { C7, B6, B4, D7, D6 }
+#define MATRIX_COL_PINS { D4, D5, D3, B7 }
+
+#define RGB_DI_PIN D0
+
+#ifdef RGB_DI_PIN
+#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 8
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 12
+#endif
diff --git a/keyboards/mechlovin/adelais/standard_led/rev2/rules.mk b/keyboards/kapcave/paladinpad/rev1/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev2/rules.mk
+++ b/keyboards/kapcave/paladinpad/rev1/rules.mk
diff --git a/keyboards/kapcave/paladinpad/rev2/config.h b/keyboards/kapcave/paladinpad/rev2/config.h
new file mode 100644
index 0000000000..a27ac03ab1
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/rev2/config.h
@@ -0,0 +1,47 @@
+/*
+Copyright 2021 KapCave
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "config_common.h"
+
+#define DEVICE_VER 0x0002
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F4, F6, D7, B4, D6 }
+#define MATRIX_COL_PINS { F7, F5, D3, B7 }
+
+#define AUDIO_PIN C6
+
+#define RGB_DI_PIN D0
+
+#ifdef RGB_DI_PIN
+#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 7
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 12
+#endif
+
diff --git a/keyboards/mechlovin/adelais/standard_led/.noci b/keyboards/kapcave/paladinpad/rev2/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/mechlovin/adelais/standard_led/.noci
+++ b/keyboards/kapcave/paladinpad/rev2/rules.mk
diff --git a/keyboards/kapcave/paladinpad/rules.mk b/keyboards/kapcave/paladinpad/rules.mk
new file mode 100644
index 0000000000..bb918b188d
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+DEFAULT_FOLDER = kapcave/paladinpad/rev2
+LAYOUTS = numpad_5x4 ortho_5x4
diff --git a/keyboards/kbdfans/bella/rgb/config.h b/keyboards/kbdfans/bella/rgb/config.h
index 07594a34ab..7d93ecb8d7 100644
--- a/keyboards/kbdfans/bella/rgb/config.h
+++ b/keyboards/kbdfans/bella/rgb/config.h
@@ -48,10 +48,8 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 108
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 108
#define DRIVER_INDICATOR_LED_TOTAL 0
#endif
#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/kbdfans/bella/rgb_iso/config.h b/keyboards/kbdfans/bella/rgb_iso/config.h
index 4fda998677..9d931cbe85 100644
--- a/keyboards/kbdfans/bella/rgb_iso/config.h
+++ b/keyboards/kbdfans/bella/rgb_iso/config.h
@@ -48,10 +48,8 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 109
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 109
#define DRIVER_INDICATOR_LED_TOTAL 0
#endif
#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/kbdfans/boop65/rgb/config.h b/keyboards/kbdfans/boop65/rgb/config.h
index 71db0f8b57..ba9c627c15 100644
--- a/keyboards/kbdfans/boop65/rgb/config.h
+++ b/keyboards/kbdfans/boop65/rgb/config.h
@@ -54,8 +54,7 @@
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
# define DRIVER_ADDR_1 0b0110000
# define DRIVER_COUNT 1
-# define DRIVER_1_LED_TOTAL 83
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_LED_TOTAL 83
# define DRIVER_INDICATOR_LED_TOTAL 0
#endif
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
index 1ee83cdc94..7111bd5faf 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
@@ -67,9 +67,7 @@
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 67
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 67
#define DRIVER_INDICATOR_LED_TOTAL 0
#endif
diff --git a/keyboards/kbdfans/kbdmini/config.h b/keyboards/kbdfans/kbdmini/config.h
index fc65f43411..beb0637adc 100644
--- a/keyboards/kbdfans/kbdmini/config.h
+++ b/keyboards/kbdfans/kbdmini/config.h
@@ -54,10 +54,8 @@
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define DISABLE_RGB_MATRIX_DIGITAL_RAIN
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 52
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 52
#endif
/* disable these deprecated features by default */
diff --git a/keyboards/keebio/chocopad/config.h b/keyboards/keebio/chocopad/config.h
index 08e62f034f..e07bd5da5b 100644
--- a/keyboards/keebio/chocopad/config.h
+++ b/keyboards/keebio/chocopad/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -42,5 +41,3 @@
#endif
#define RGB_DI_PIN D3
#define RGBLED_NUM 4
-
-#endif
diff --git a/keyboards/keebio/dilly/config.h b/keyboards/keebio/dilly/config.h
index 835498f25e..9d7b08509d 100644
--- a/keyboards/keebio/dilly/config.h
+++ b/keyboards/keebio/dilly/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -46,5 +45,3 @@
#define RGB_DI_PIN D3
#define RGBLED_NUM 10
-
-#endif
diff --git a/keyboards/keebio/dilly/dilly.h b/keyboards/keebio/dilly/dilly.h
index 229c6cd954..e0f13bae5e 100644
--- a/keyboards/keebio/dilly/dilly.h
+++ b/keyboards/keebio/dilly/dilly.h
@@ -1,19 +1,16 @@
-#ifndef DILLY_H
-#define DILLY_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_3x10( \
- A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, \
- B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, \
- C1, C2, C3, C4, C5, C6, C7, C8, C9, C10 \
+ k00, k01, k02, k03, k04, k34, k33, k32, k31, k30, \
+ k10, k11, k12, k13, k14, k44, k43, k42, k41, k40, \
+ k20, k21, k22, k23, k24, k54, k53, k52, k51, k50 \
) { \
- { A1, A2, A3, A4, A5 }, \
- { B1, B2, B3, B4, B5 }, \
- { C1, C2, C3, C4, C5 }, \
- { A10, A9, A8, A7, A6 }, \
- { B10, B9, B8, B7, B6 }, \
- { C10, C9, C8, C7, C6 } \
+ { k00, k01, k02, k03, k04 }, \
+ { k10, k11, k12, k13, k14 }, \
+ { k20, k21, k22, k23, k24 }, \
+ { k30, k31, k32, k33, k34 }, \
+ { k40, k41, k42, k43, k44 }, \
+ { k50, k51, k52, k53, k54 } \
}
-
-#endif
diff --git a/keyboards/keebio/iris/config.h b/keyboards/keebio/iris/config.h
index 863722d7d0..6868dc1354 100644
--- a/keyboards/keebio/iris/config.h
+++ b/keyboards/keebio/iris/config.h
@@ -15,9 +15,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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
-
-#endif // CONFIG_H
diff --git a/keyboards/keebio/levinson/config.h b/keyboards/keebio/levinson/config.h
index ca0c79e554..4a3def7cc8 100644
--- a/keyboards/keebio/levinson/config.h
+++ b/keyboards/keebio/levinson/config.h
@@ -17,9 +17,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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
-
-#endif
diff --git a/keyboards/kinesis/alvicstep/alvicstep.h b/keyboards/kinesis/alvicstep/alvicstep.h
index 169012faf5..053698770a 100644
--- a/keyboards/kinesis/alvicstep/alvicstep.h
+++ b/keyboards/kinesis/alvicstep/alvicstep.h
@@ -1,80 +1,77 @@
-#ifndef KINESIS_ALVICSTEP_H
-#define KINESIS_ALVICSTEP_H
+#pragma once
#include "../kinesis.h"
#define ___ KC_NO
-#define LAYOUT( \
- k02, k22, k12, k01, k21, k11, k00, k20, k10, \
- k80, k70, k60, k50, k40, k30, \
- k81, k71, k61, k51, k41, k31, \
- k82, k72, k62, k52, k42, k32, \
- k83, k73, k63, k53, k43, k33, \
- k74, k64, k54, k34, \
- k36, k35, \
- k55, \
- k56, k46, k75, \
- \
- k03, k23, k13, k04, k24, k14, k05, k85, k84, \
- k94, kA4, kB4, kD4, kE4, kF4, \
- k95, kA5, kB5, kD5, kE5, kF5, \
- k96, kA6, kB6, kD6, kE6, kF6, \
- k97, kA7, kB7, kD7, kE7, kF7, \
- k93, kB3, kD3, kE3, \
- k47, k66, \
- k67, \
- k87, k76, k86 \
-) { \
- { k00, k01, k02, k03, k04, k05, ___, ___ }, \
- { k10, k11, k12, k13, k14, ___, ___, ___ }, \
- { k20, k21, k22, k23, k24, ___, ___, ___ }, \
- { k30, k31, k32, k33, k34, k35, k36, ___ }, \
- { k40, k41, k42, k43, ___, ___, k46, k47 }, \
- { k50, k51, k52, k53, k54, k55, k56, ___ }, \
- { k60, k61, k62, k63, k64, ___, k66, k67 }, \
- { k70, k71, k72, k73, k74, k75, k76, ___ }, \
- { k80, k81, k82, k83, k84, k85, k86, k87 }, \
- { ___, ___, ___, k93, k94, k95, k96, k97 }, \
- { ___, ___, ___, ___, kA4, kA5, kA6, kA7 }, \
- { ___, ___, ___, kB3, kB4, kB5, kB6, kB7 }, \
- { ___, ___, ___, ___, ___, ___, ___, ___ }, \
- { ___, ___, ___, kD3, kD4, kD5, kD6, kD7 }, \
- { ___, ___, ___, kE3, kE4, kE5, kE6, kE7 }, \
- { ___, ___, ___, ___, kF4, kF5, kF6, kF7 } \
+#define LAYOUT( \
+ k02, k22, k12, k01, k21, k11, k00, k20, k10, \
+ k80, k70, k60, k50, k40, k30, \
+ k81, k71, k61, k51, k41, k31, \
+ k82, k72, k62, k52, k42, k32, \
+ k83, k73, k63, k53, k43, k33, \
+ k74, k64, k54, k34, \
+ k36, k35, \
+ k55, \
+ k56, k46, k75, \
+\
+ k03, k23, k13, k04, k24, k14, k05, k85, k84, \
+ k94, kA4, kB4, kD4, kE4, kF4, \
+ k95, kA5, kB5, kD5, kE5, kF5, \
+ k96, kA6, kB6, kD6, kE6, kF6, \
+ k97, kA7, kB7, kD7, kE7, kF7, \
+ k93, kB3, kD3, kE3, \
+ k47, k66, \
+ k67, \
+ k87, k76, k86 \
+) { \
+ { k00, k01, k02, k03, k04, k05, ___, ___ }, \
+ { k10, k11, k12, k13, k14, ___, ___, ___ }, \
+ { k20, k21, k22, k23, k24, ___, ___, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, ___ }, \
+ { k40, k41, k42, k43, ___, ___, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, ___ }, \
+ { k60, k61, k62, k63, k64, ___, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87 }, \
+ { ___, ___, ___, k93, k94, k95, k96, k97 }, \
+ { ___, ___, ___, ___, kA4, kA5, kA6, kA7 }, \
+ { ___, ___, ___, kB3, kB4, kB5, kB6, kB7 }, \
+ { ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, kD3, kD4, kD5, kD6, kD7 }, \
+ { ___, ___, ___, kE3, kE4, kE5, kE6, kE7 }, \
+ { ___, ___, ___, ___, kF4, kF5, kF6, kF7 } \
}
-/* ---------------- LEFT HAND ----------------- ---------------- RIGHT HAND ---------------- */
-#define LAYOUT_pretty( \
- k02, k22, k12, k01, k21, k11, k00, k20, k10, k03, k23, k13, k04, k24, k14, k05, k85, k84, \
- k80, k70, k60, k50, k40, k30, k94, kA4, kB4, kD4, kE4, kF4, \
- k81, k71, k61, k51, k41, k31, k95, kA5, kB5, kD5, kE5, kF5, \
- k82, k72, k62, k52, k42, k32, k96, kA6, kB6, kD6, kE6, kF6, \
- k83, k73, k63, k53, k43, k33, k97, kA7, kB7, kD7, kE7, kF7, \
- k74, k64, k54, k34, k93, kB3, kD3, kE3, \
- k36, k35, k47, k66, \
- k55, k67, \
- k56, k46, k75, k87, k76, k86 \
-) { \
- { k00, k01, k02, k03, k04, k05, ___, ___ }, \
- { k10, k11, k12, k13, k14, ___, ___, ___ }, \
- { k20, k21, k22, k23, k24, ___, ___, ___ }, \
- { k30, k31, k32, k33, k34, k35, k36, ___ }, \
- { k40, k41, k42, k43, ___, ___, k46, k47 }, \
- { k50, k51, k52, k53, k54, k55, k56, ___ }, \
- { k60, k61, k62, k63, k64, ___, k66, k67 }, \
- { k70, k71, k72, k73, k74, k75, k76, ___ }, \
- { k80, k81, k82, k83, k84, k85, k86, k87 }, \
- { ___, ___, ___, k93, k94, k95, k96, k97 }, \
- { ___, ___, ___, ___, kA4, kA5, kA6, kA7 }, \
- { ___, ___, ___, kB3, kB4, kB5, kB6, kB7 }, \
- { ___, ___, ___, ___, ___, ___, ___, ___ }, \
- { ___, ___, ___, kD3, kD4, kD5, kD6, kD7 }, \
- { ___, ___, ___, kE3, kE4, kE5, kE6, kE7 }, \
- { ___, ___, ___, ___, kF4, kF5, kF6, kF7 } \
+#define LAYOUT_pretty( \
+ k02, k22, k12, k01, k21, k11, k00, k20, k10, k03, k23, k13, k04, k24, k14, k05, k85, k84, \
+ k80, k70, k60, k50, k40, k30, k94, kA4, kB4, kD4, kE4, kF4, \
+ k81, k71, k61, k51, k41, k31, k95, kA5, kB5, kD5, kE5, kF5, \
+ k82, k72, k62, k52, k42, k32, k96, kA6, kB6, kD6, kE6, kF6, \
+ k83, k73, k63, k53, k43, k33, k97, kA7, kB7, kD7, kE7, kF7, \
+ k74, k64, k54, k34, k93, kB3, kD3, kE3, \
+ k36, k35, k47, k66, \
+ k55, k67, \
+ k56, k46, k75, k87, k76, k86 \
+) { \
+ { k00, k01, k02, k03, k04, k05, ___, ___ }, \
+ { k10, k11, k12, k13, k14, ___, ___, ___ }, \
+ { k20, k21, k22, k23, k24, ___, ___, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, ___ }, \
+ { k40, k41, k42, k43, ___, ___, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, ___ }, \
+ { k60, k61, k62, k63, k64, ___, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87 }, \
+ { ___, ___, ___, k93, k94, k95, k96, k97 }, \
+ { ___, ___, ___, ___, kA4, kA5, kA6, kA7 }, \
+ { ___, ___, ___, kB3, kB4, kB5, kB6, kB7 }, \
+ { ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, kD3, kD4, kD5, kD6, kD7 }, \
+ { ___, ___, ___, kE3, kE4, kE5, kE6, kE7 }, \
+ { ___, ___, ___, ___, kF4, kF5, kF6, kF7 } \
}
-
/*
Row pin configuration
@@ -97,5 +94,3 @@
PB6 col6 | | | | LCtrl | Delete | Bksp | RCtrl | Enter | Space | H | J | K | | L | ;: | '"
PB7 col7 | | | | | RGUI | | PageUp | | PageDn | N | M | ,< | | .> | /? | RShift
*/
-
-#endif
diff --git a/keyboards/kinesis/alvicstep/config.h b/keyboards/kinesis/alvicstep/config.h
index 02c7725cec..8a656264ee 100644
--- a/keyboards/kinesis/alvicstep/config.h
+++ b/keyboards/kinesis/alvicstep/config.h
@@ -1,5 +1,4 @@
-#ifndef ALVICSTEP_CONFIG_H
-#define ALVICSTEP_CONFIG_H
+#pragma once
#include "../config.h"
#include "config_common.h"
@@ -31,6 +30,3 @@
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
-
-
-#endif
diff --git a/keyboards/kinesis/config.h b/keyboards/kinesis/config.h
index ecedf9bbff..b04d325903 100644
--- a/keyboards/kinesis/config.h
+++ b/keyboards/kinesis/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
@@ -78,5 +77,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/kinesis/kinesis.h b/keyboards/kinesis/kinesis.h
index 1635c34436..54cf6b81a7 100644
--- a/keyboards/kinesis/kinesis.h
+++ b/keyboards/kinesis/kinesis.h
@@ -1,35 +1,24 @@
-#ifndef KINESIS_H
-#define KINESIS_H
+#pragma once
-#ifdef KEYBOARD_kinesis_alvicstep
- #include "alvicstep.h"
-#endif
-#ifdef KEYBOARD_kinesis_stapelberg
- #include "stapelberg.h"
-#endif
-#ifdef KEYBOARD_kinesis_kint2pp
- #include "kint2pp.h"
-#endif
-#ifdef KEYBOARD_kinesis_nguyenvietyen
- #include "nguyenvietyen.h"
-#endif
-#ifdef KEYBOARD_kinesis_kint36
- #include "kint36.h"
-#endif
-#ifdef KEYBOARD_kinesis_kint41
- #include "kint41.h"
+#if defined(KEYBOARD_kinesis_alvicstep)
+# include "alvicstep.h"
+#elif defined(KEYBOARD_kinesis_stapelberg)
+# include "stapelberg.h"
+#elif defined(KEYBOARD_kinesis_kint2pp)
+# include "kint2pp.h"
+#elif defined(KEYBOARD_kinesis_nguyenvietyen)
+# include "nguyenvietyen.h"
+#elif defined(KEYBOARD_kinesis_kint36)
+# include "kint36.h"
+#elif defined(KEYBOARD_kinesis_kint41)
+# include "kint41.h"
#endif
#include "quantum.h"
-
void all_led_off(void);
void all_led_on(void);
void num_lock_led_on(void);
void caps_lock_led_on(void);
void scroll_lock_led_on(void);
void keypad_led_on(void);
-
-
-
-#endif
diff --git a/keyboards/kinesis/kint2pp/config.h b/keyboards/kinesis/kint2pp/config.h
index a5530bc2f7..4191446e68 100644
--- a/keyboards/kinesis/kint2pp/config.h
+++ b/keyboards/kinesis/kint2pp/config.h
@@ -44,3 +44,7 @@
// Reduce input latency by lowering the USB polling interval
// from its 10ms default to the 1ms minimum that USB 1.x (Full Speed) allows:
#define USB_POLLING_INTERVAL_MS 1
+
+// The Teensy 2++ consumes about 60 mA of current at its full speed of 16 MHz as
+// per https://www.pjrc.com/teensy/low_power.html
+#define USB_MAX_POWER_CONSUMPTION 100
diff --git a/keyboards/kinesis/kint36/config.h b/keyboards/kinesis/kint36/config.h
index ab34daa7b8..3738629ea7 100644
--- a/keyboards/kinesis/kint36/config.h
+++ b/keyboards/kinesis/kint36/config.h
@@ -63,6 +63,10 @@
// from its 10ms default to the 1ms minimum that USB 1.x (Full Speed) allows:
#define USB_POLLING_INTERVAL_MS 1
+// The Teensy 3.6 consumes about 80 mA of current at its full speed of 180 MHz:
+// https://forum.pjrc.com/threads/47256-What-is-the-power-consumption-of-the-Teensy-3-6
+#define USB_MAX_POWER_CONSUMPTION 100
+
#define LED_PIN_ON_STATE 0
#define LED_NUM_LOCK_PIN A14
#define LED_CAPS_LOCK_PIN C7
diff --git a/keyboards/kinesis/kint36/rules.mk b/keyboards/kinesis/kint36/rules.mk
index 4f33583124..c50225ad8a 100644
--- a/keyboards/kinesis/kint36/rules.mk
+++ b/keyboards/kinesis/kint36/rules.mk
@@ -1,5 +1,5 @@
-BOARD = PJRC_TEENSY_3_6
-MCU = MK66F18
+# MCU name
+MCU = MK66FX1M0
# Debounce eagerly (report change immediately), keep per-key timers. We can use
# this because the kinT does not have to deal with noise.
diff --git a/keyboards/kinesis/kint41/config.h b/keyboards/kinesis/kint41/config.h
index 349d3ee364..7d87b8dd76 100644
--- a/keyboards/kinesis/kint41/config.h
+++ b/keyboards/kinesis/kint41/config.h
@@ -90,6 +90,10 @@
// from its 10ms default to the 125μs minimum that USB 2.x (High Speed) allows:
#define USB_POLLING_INTERVAL_MS 1
+// The Teensy 4.1 consumes about 100 mA of current at its full speed of 600 MHz
+// as per https://www.pjrc.com/store/teensy41.html
+#define USB_MAX_POWER_CONSUMPTION 100
+
/* We use the i.MX RT1060 high-speed GPIOs (GPIO6-9) which are connected to the
* AHB bus (AHB_CLK_ROOT), which runs at the same speed as the ARM Core Clock,
* i.e. 600 MHz. See MIMXRT1062, page 949, 12.1 Chip-specific GPIO information.
diff --git a/keyboards/kinesis/stapelberg/config.h b/keyboards/kinesis/stapelberg/config.h
index 8f920c19c1..fe44131adb 100644
--- a/keyboards/kinesis/stapelberg/config.h
+++ b/keyboards/kinesis/stapelberg/config.h
@@ -1,5 +1,4 @@
-#ifndef STAPELBERG_CONFIG_H
-#define STAPELBERG_CONFIG_H
+#pragma once
#include "../config.h"
#include "config_common.h"
@@ -46,5 +45,3 @@
*/
#define IGNORE_MOD_TAP_INTERRUPT
-
-#endif
diff --git a/keyboards/kinesis/stapelberg/stapelberg.h b/keyboards/kinesis/stapelberg/stapelberg.h
index e35e2f5db8..f478c493fd 100644
--- a/keyboards/kinesis/stapelberg/stapelberg.h
+++ b/keyboards/kinesis/stapelberg/stapelberg.h
@@ -1,5 +1,4 @@
-#ifndef KINESIS_STAPELBERG_H
-#define KINESIS_STAPELBERG_H
+#pragma once
#include "quantum.h"
@@ -9,71 +8,70 @@
// The first section contains all of the arguments as on the physical keyboard
// The second converts the arguments into the 2-D scanned array
-#define LAYOUT( \
- kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, \
- k00, k10, k20, k30, k40, k50, \
- k01, k11, k21, k31, k41, k51, \
- k02, k12, k22, k32, k42, k52, \
- k03, k13, k23, k33, k43, k53, \
- k14, k24, k34, k54, \
- k56, k55, \
- k35, \
- k36, k46, k25, \
- \
- kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
- k60, k70, k80, k90, kA0, kB0, \
- k61, k71, k81, k91, kA1, kB1, \
- k62, k72, k82, k92, kA2, kB2, \
- k63, k73, k83, k93, kA3, kB3, \
- k64, k84, k94, kA4, \
- k96, k85, \
- k86, \
- k66, k75, k65 \
-) { \
- { k00, k01, k02, k03, ___, ___, ___ }, \
- { k10, k11, k12, k13, k14, ___, ___ }, \
- { k20, k21, k22, k23, k24, k25, ___ }, \
- { k30, k31, k32, k33, k34, k35, k36 }, \
- { k40, k41, k42, k43, ___, ___, k46 }, \
- { k50, k51, k52, k53, k54, k55, k56 }, \
- { k60, k61, k62, k63, k64, k65, k66 }, \
- { k70, k71, k72, k73, ___, k75, ___ }, \
- { k80, k81, k82, k83, k84, k85, k86 }, \
- { k90, k91, k92, k93, k94, ___, k96 }, \
- { kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
- { kB0, kB1, kB2, kB3, ___, ___, ___ }, \
- { kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
- { kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
- { kE0, kE1, kE2, kE3, kE4, kE5, ___ } \
+#define LAYOUT( \
+ kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, \
+ k00, k10, k20, k30, k40, k50, \
+ k01, k11, k21, k31, k41, k51, \
+ k02, k12, k22, k32, k42, k52, \
+ k03, k13, k23, k33, k43, k53, \
+ k14, k24, k34, k54, \
+ k56, k55, \
+ k35, \
+ k36, k46, k25, \
+\
+ kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
+ k60, k70, k80, k90, kA0, kB0, \
+ k61, k71, k81, k91, kA1, kB1, \
+ k62, k72, k82, k92, kA2, kB2, \
+ k63, k73, k83, k93, kA3, kB3, \
+ k64, k84, k94, kA4, \
+ k96, k85, \
+ k86, \
+ k66, k75, k65 \
+) { \
+ { k00, k01, k02, k03, ___, ___, ___ }, \
+ { k10, k11, k12, k13, k14, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, ___, ___, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, ___, k75, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86 }, \
+ { k90, k91, k92, k93, k94, ___, k96 }, \
+ { kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
+ { kB0, kB1, kB2, kB3, ___, ___, ___ }, \
+ { kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
+ { kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, ___ } \
}
-/* ---------------- LEFT HAND ----------------- ---------------- RIGHT HAND ---------------- */
-#define LAYOUT_pretty( \
- kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
- k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, kA0, kB0, \
- k01, k11, k21, k31, k41, k51, k61, k71, k81, k91, kA1, kB1, \
- k02, k12, k22, k32, k42, k52, k62, k72, k82, k92, kA2, kB2, \
- k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, kA3, kB3, \
- k14, k24, k34, k54, k64, k84, k94, kA4, \
- k56, k55, k96, k85, \
- k35, k86, \
- k36, k46, k25, k66, k75, k65 \
-) { \
- { k00, k01, k02, k03, ___, ___, ___ }, \
- { k10, k11, k12, k13, k14, ___, ___ }, \
- { k20, k21, k22, k23, k24, k25, ___ }, \
- { k30, k31, k32, k33, k34, k35, k36 }, \
- { k40, k41, k42, k43, ___, ___, k46 }, \
- { k50, k51, k52, k53, k54, k55, k56 }, \
- { k60, k61, k62, k63, k64, k65, k66 }, \
- { k70, k71, k72, k73, ___, k75, ___ }, \
- { k80, k81, k82, k83, k84, k85, k86 }, \
- { k90, k91, k92, k93, k94, ___, k96 }, \
- { kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
- { kB0, kB1, kB2, kB3, ___, ___, ___ }, \
- { kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
- { kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
- { kE0, kE1, kE2, kE3, kE4, kE5, ___ } \
+#define LAYOUT_pretty( \
+ kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
+ k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, kA0, kB0, \
+ k01, k11, k21, k31, k41, k51, k61, k71, k81, k91, kA1, kB1, \
+ k02, k12, k22, k32, k42, k52, k62, k72, k82, k92, kA2, kB2, \
+ k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, kA3, kB3, \
+ k14, k24, k34, k54, k64, k84, k94, kA4, \
+ k56, k55, k96, k85, \
+ k35, k86, \
+ k36, k46, k25, k66, k75, k65 \
+) { \
+ { k00, k01, k02, k03, ___, ___, ___ }, \
+ { k10, k11, k12, k13, k14, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, ___, ___, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, ___, k75, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86 }, \
+ { k90, k91, k92, k93, k94, ___, k96 }, \
+ { kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
+ { kB0, kB1, kB2, kB3, ___, ___, ___ }, \
+ { kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
+ { kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, ___ } \
}
/*
@@ -98,7 +96,3 @@ PC4 kCx Row: ESC F3 F6 F9 F12 PAU --
PC5 kDx Row: F1 F4 F7 F10 PRT PRG --
PC6 kEx Row: F2 F5 F8 F11 SLK KEY --
*/
-
-
-
-#endif
diff --git a/keyboards/kira75/config.h b/keyboards/kira75/config.h
index db42c36cc3..373c3e4f0b 100644
--- a/keyboards/kira75/config.h
+++ b/keyboards/kira75/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -115,5 +114,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/kira75/kira75.h b/keyboards/kira75/kira75.h
index 8c564f2082..27fdab02db 100644
--- a/keyboards/kira75/kira75.h
+++ b/keyboards/kira75/kira75.h
@@ -13,11 +13,10 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KIRA75_H
-#define KIRA75_H
-#include "quantum.h"
+#pragma once
+#include "quantum.h"
// Functions for setting LEDs on toggle keys
inline void caps_led_on(void) { DDRD |= (1<<7); PORTD &= ~(1<<7); }
@@ -26,25 +25,24 @@ inline void caps_led_off(void) { DDRD &= ~(1<<7); PORTD &= ~(1<<7); }
inline void num_led_on(void) { DDRD |= (1<<6); PORTD &= ~(1<<6); }
inline void num_led_off(void) { DDRD &= ~(1<<6); PORTD &= ~(1<<6); }
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
- K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K4F, \
- K50, K51, K53, K56, K5A, K5B, K5D, K5E, K5F \
-) \
-{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F }, \
- { KC_NO, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
- { K50, K51, KC_NO, K53, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, KC_NO, K5D, K5E, K5F } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
+ k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4E, k4F, \
+ k50, k51, k53, k56, k5A, k5B, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX, k1F }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, XXX, k4D, k4E, k4F }, \
+ { k50, k51, XXX, k53, XXX, XXX, k56, XXX, XXX, XXX, k5A, k5B, XXX, k5D, k5E, k5F } \
}
-
-#endif
diff --git a/keyboards/kmini/config.h b/keyboards/kmini/config.h
index a0592b4ecf..c242aff0d0 100755
--- a/keyboards/kmini/config.h
+++ b/keyboards/kmini/config.h
@@ -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/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -48,5 +48,3 @@
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
-
-#endif
diff --git a/keyboards/kmini/kmini.h b/keyboards/kmini/kmini.h
index 3d54c39d1f..e32ad5a0f9 100755
--- a/keyboards/kmini/kmini.h
+++ b/keyboards/kmini/kmini.h
@@ -13,24 +13,23 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KMINI_H
-#define KMINI_H
-#define ___ KC_NO
+
+#pragma once
#include "quantum.h"
+#define ___ KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, K3G, \
- K40, K41, K42, K43, K44, K47, K4C, K4E, K4F, K4G \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, k3G, \
+ k40, k41, k42, k43, k44, k47, k4C, k4E, k4F, k4G \
) { \
- {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G}, \
- {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G}, \
- {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F, K2G}, \
- {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F, K3G}, \
- {K40, K41, K42, K43, K44, ___, ___, K47, ___, ___, ___, ___, K4C, ___, K4E, K4F, K4G}, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, k3E, k3F, k3G }, \
+ { k40, k41, k42, k43, k44, ___, ___, k47, ___, ___, ___, ___, k4C, ___, k4E, k4F, k4G } \
}
-
-#endif
diff --git a/keyboards/knops/mini/config.h b/keyboards/knops/mini/config.h
index 28db6ae8d9..eca8b8b4a8 100644
--- a/keyboards/knops/mini/config.h
+++ b/keyboards/knops/mini/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -106,5 +105,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/knops/mini/mini.h b/keyboards/knops/mini/mini.h
index e2d6c546b0..e028dea6d7 100644
--- a/keyboards/knops/mini/mini.h
+++ b/keyboards/knops/mini/mini.h
@@ -13,18 +13,17 @@
* 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"
-#ifndef KNOPS_MINI_H
-#define KNOPS_MINI_H
+#pragma once
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05 \
+ k00, k01, k02, k03, k04, k05 \
) { \
- { K00, K01, K02, K03, K04, K05 }, \
+ { k00, k01, k02, k03, k04, k05 } \
}
-#endif \ No newline at end of file
diff --git a/keyboards/kona_classic/config.h b/keyboards/kona_classic/config.h
index 1a99fa1265..c6dc3a0318 100644
--- a/keyboards/kona_classic/config.h
+++ b/keyboards/kona_classic/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -105,5 +104,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/kona_classic/kona_classic.h b/keyboards/kona_classic/kona_classic.h
index 98eed3b3c2..66757fc9c4 100644
--- a/keyboards/kona_classic/kona_classic.h
+++ b/keyboards/kona_classic/kona_classic.h
@@ -13,139 +13,136 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KONACLASSIC_H
-#define KONACLASSIC_H
+
+#pragma once
#include "quantum.h"
// readability
#define ___ KC_NO
-
#define LAYOUT_all( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- KA8, KA9, K40, K41, K42, K44, K46, K47, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k46, k48, k49, k4B, k4C, k4D, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { KA8, KA9, K40, K41, K42, ___, K44, ___, K46, K47, ___, K49, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, ___, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_ansi( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- KA8, KA9, K40, K41, K42, K46, K49, K4A, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k48, k4B, k4C, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
- { KA8, KA9, K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, ___, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, ___, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, ___ }, \
+ { k40, k41, k42, k43, k44, ___, ___, ___, k48, ___, ___, k4B, k4C, ___, k4E, k4F } \
}
#define LAYOUT_ansi_arrows( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- KA8, KA9, K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k48, k4B, k4C, k4D, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { KA8, KA9, K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, ___, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, ___, ___, ___, k48, ___, ___, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_ansi_split( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- KA8, KA9, K40, K41, K42, K44, K46, K47, K49, K4A, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k46, k48, k49, k4B, k4C, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
- { KA8, KA9, K40, K41, K42, ___, K44, ___, K46, K47, ___, K49, K4A, ___, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, ___, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, ___ }, \
+ { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, ___, k4B, k4C, ___, k4E, k4F } \
}
#define LAYOUT_ansi_split_arrows( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- KA8, KA9, K40, K41, K42, K44, K46, K47, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k46, k48, k49, k4B, k4C, k4D, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { KA8, KA9, K40, K41, K42, ___, K44, ___, K46, K47, ___, K49, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, ___, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, ___, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_iso( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- KA8, KA9, K40, K41, K42, K46, K49, K4A, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k48, k4B, k4C, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
- { KA8, KA9, K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, ___, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, ___ }, \
+ { k40, k41, k42, k43, k44, ___, ___, ___, k48, ___, ___, k4B, k4C, ___, k4E, k4F } \
}
#define LAYOUT_iso_arrows( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- KA8, KA9, K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k48, k4B, k4C, k4D, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { KA8, KA9, K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, ___, ___, ___, k48, ___, ___, k4B, k4C, k4D, k4E, k4F } \
}
#define LAYOUT_iso_split( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
- KA8, KA9, K40, K41, K42, K44, K46, K47, K49, K4A, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k46, k48, k49, k4B, k4C, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
- { KA8, KA9, K40, K41, K42, ___, K44, ___, K46, K47, ___, K49, K4A, ___, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, ___ }, \
+ { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, ___, k4B, k4C, ___, k4E, k4F } \
}
#define LAYOUT_iso_split_arrows( \
- KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- KA8, KA9, K40, K41, K42, K44, K46, K47, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k41, k42, k43, k44, k46, k48, k49, k4B, k4C, k4D, k4E, k4F \
) { \
- { KA0, KA1, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { KA2, KA3, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { KA4, KA5, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
- { KA6, KA7, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { KA8, KA9, K40, K41, K42, ___, K44, ___, K46, K47, ___, K49, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, k43, k44, ___, k46, ___, k48, k49, ___, k4B, k4C, k4D, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/ktec/ergodone/config.h b/keyboards/ktec/ergodone/config.h
index 39e0ae8c75..db626ab808 100644
--- a/keyboards/ktec/ergodone/config.h
+++ b/keyboards/ktec/ergodone/config.h
@@ -1,5 +1,4 @@
-#ifndef ERGODOX_ERGODONE_CONFIG_H
-#define ERGODOX_ERGODONE_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -77,5 +76,3 @@
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
//#define DEBUG_MATRIX_SCAN_RATE
-
-#endif
diff --git a/keyboards/ktec/ergodone/ergodone.h b/keyboards/ktec/ergodone/ergodone.h
index 89edb8a0b5..77e4968543 100644
--- a/keyboards/ktec/ergodone/ergodone.h
+++ b/keyboards/ktec/ergodone/ergodone.h
@@ -1,5 +1,4 @@
-#ifndef ERGODOX_ERGODONE_H
-#define ERGODOX_ERGODONE_H
+#pragma once
#include "quantum.h"
#include <stdint.h>
@@ -64,116 +63,94 @@ inline void ergodox_right_led_3_set(uint8_t n) {}
inline void ergodox_right_led_set(uint8_t l, uint8_t n) {}
inline void ergodox_led_all_set(uint8_t n) {}
-/*
- * LEFT HAND: LINES 76-83
- * RIGHT HAND: LINES 85-92
- */
-#define LAYOUT_ergodox( \
- \
- k00,k01,k02,k03,k04,k05,k06, \
- k10,k11,k12,k13,k14,k15,k16, \
- k20,k21,k22,k23,k24,k25, \
- k30,k31,k32,k33,k34,k35,k36, \
- k40,k41,k42,k43,k44, \
- k55,k56, \
- k54, \
- k53,k52,k51, \
- \
- k07,k08,k09,k0A,k0B,k0C,k0D, \
- k17,k18,k19,k1A,k1B,k1C,k1D, \
- k28,k29,k2A,k2B,k2C,k2D, \
- k37,k38,k39,k3A,k3B,k3C,k3D, \
- k49,k4A,k4B,k4C,k4D, \
- k57,k58, \
- k59, \
- k5C,k5B,k5A ) \
- \
- /* matrix positions */ \
- { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
- { k20, k21, k22, k23, k24, k25, KC_NO, KC_NO, k28, k29, k2A, k2B, k2C, k2D }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
- { k40, k41, k42, k43, k44, KC_NO, KC_NO, KC_NO, KC_NO, k49, k4A, k4B, k4C, k4D }, \
- { KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, KC_NO } \
- }
+#define XXX KC_NO
-/*
- * LEFT HAND: LINES 110-117
- * RIGHT HAND: LINES 119-126
- */
-#define LAYOUT_ergodox_80( \
- \
- k00,k01,k02,k03,k04,k05,k06, \
- k10,k11,k12,k13,k14,k15,k16, \
- k20,k21,k22,k23,k24,k25, \
- k30,k31,k32,k33,k34,k35,k36, \
- k40,k41,k42,k43,k44, \
- k55,k56, \
- k45,k46,k54, \
- k53,k52,k51, \
- \
- k07,k08,k09,k0A,k0B,k0C,k0D, \
- k17,k18,k19,k1A,k1B,k1C,k1D, \
- k28,k29,k2A,k2B,k2C,k2D, \
- k37,k38,k39,k3A,k3B,k3C,k3D, \
- k49,k4A,k4B,k4C,k4D, \
- k57,k58, \
- k59,k47,k48, \
- k5C,k5B,k5A ) \
- \
- /* matrix positions */ \
- { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
- { k20, k21, k22, k23, k24, k25, KC_NO, KC_NO, k28, k29, k2A, k2B, k2C, k2D }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
- { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D }, \
- { KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, KC_NO } \
- }
+#define LAYOUT_ergodox( \
+ k00, k01, k02, k03, k04, k05, k06, \
+ k10, k11, k12, k13, k14, k15, k16, \
+ k20, k21, k22, k23, k24, k25, \
+ k30, k31, k32, k33, k34, k35, k36, \
+ k40, k41, k42, k43, k44, \
+ k55, k56, \
+ k54, \
+ k53, k52, k51, \
+\
+ k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k28, k29, k2A, k2B, k2C, k2D, \
+ k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k49, k4A, k4B, k4C, k4D, \
+ k57, k58, \
+ k59, \
+ k5C, k5B, k5A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, XXX, XXX, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
+ { k40, k41, k42, k43, k44, XXX, XXX, XXX, XXX, k49, k4A, k4B, k4C, k4D }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, XXX } \
+}
-/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
-#define LAYOUT_ergodox_pretty( \
- \
- L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
- L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
- L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
- L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
- L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
- L55,L56, R50,R51, \
- L54, R52, \
- L53,L52,L51, R55,R54,R53 ) \
- \
- /* matrix positions */ \
- { \
- { L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06 }, \
- { L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16 }, \
- { L20,L21,L22,L23,L24,L25,KC_NO, KC_NO,R21,R22,R23,R24,R25,R26 }, \
- { L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36 }, \
- { L40,L41,L42,L43,L44,KC_NO,KC_NO, KC_NO,KC_NO,R42,R43,R44,R45,R46 }, \
- { KC_NO,L51,L52,L53,L54,L55,L56, R50,R51,R52,R53,R54,R55,KC_NO } \
+#define LAYOUT_ergodox_80( \
+ k00, k01, k02, k03, k04, k05, k06, \
+ k10, k11, k12, k13, k14, k15, k16, \
+ k20, k21, k22, k23, k24, k25, \
+ k30, k31, k32, k33, k34, k35, k36, \
+ k40, k41, k42, k43, k44, \
+ k55, k56, \
+ k45, k46, k54, \
+ k53, k52, k51, \
+\
+ k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k28, k29, k2A, k2B, k2C, k2D, \
+ k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k49, k4A, k4B, k4C, k4D, \
+ k57, k58, \
+ k59, k47, k48, \
+ k5C, k5B, k5A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, XXX, XXX, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, XXX } \
}
-/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
-#define LAYOUT_ergodox_pretty_80( \
- \
- L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
- L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
- L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
- L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
- L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
- L55,L56, R50,R51, \
- L45,L46,L54, R52,R40,R41, \
- L53,L52,L51, R55,R54,R53 ) \
- \
- /* matrix positions */ \
- { \
- { L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06 }, \
- { L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16 }, \
- { L20,L21,L22,L23,L24,L25,KC_NO, KC_NO,R21,R22,R23,R24,R25,R26 }, \
- { L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36 }, \
- { L40,L41,L42,L43,L44,L45,L46, R40,R41,R42,R43,R44,R45,R46 }, \
- { KC_NO,L51,L52,L53,L54,L55,L56, R50,R51,R52,R53,R54,R55,KC_NO } \
- }
+#define LAYOUT_ergodox_pretty( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
+ L55, L56, R50, R51, \
+ L54, R52, \
+ L53, L52, L51, R55, R54, R53 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06 }, \
+ { L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16 }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX, R21, R22, R23, R24, R25, R26 }, \
+ { L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 }, \
+ { L40, L41, L42, L43, L44, XXX, XXX, XXX, XXX, R42, R43, R44, R45, R46 }, \
+ { XXX, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, XXX } \
+}
-#endif
+#define LAYOUT_ergodox_pretty_80( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
+ L55, L56, R50, R51, \
+ L45, L46, L54, R52, R40, R41, \
+ L53, L52, L51, R55, R54, R53 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06 }, \
+ { L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16 }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX, R21, R22, R23, R24, R25, R26 }, \
+ { L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36 }, \
+ { L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, XXX } \
+}
diff --git a/keyboards/ktec/ergodone/expander.h b/keyboards/ktec/ergodone/expander.h
index 8676fed693..071570c408 100644
--- a/keyboards/ktec/ergodone/expander.h
+++ b/keyboards/ktec/ergodone/expander.h
@@ -1,5 +1,4 @@
-#ifndef EXPANDER_H
-#define EXPANDER_H
+#pragma once
#include <stdint.h>
#include "matrix.h"
@@ -44,5 +43,3 @@ uint8_t expander_get_col(uint8_t col);
matrix_row_t expander_read_row(void);
void expander_unselect_rows(void);
void expander_select_row(uint8_t row);
-
-#endif
diff --git a/keyboards/laptreus/laptreus.h b/keyboards/laptreus/laptreus.h
index f367c13dc3..2e7932e494 100644
--- a/keyboards/laptreus/laptreus.h
+++ b/keyboards/laptreus/laptreus.h
@@ -1,26 +1,19 @@
-#ifndef LAPTREUS_H
-#define LAPTREUS_H
+#pragma once
#include "quantum.h"
#include "outputselect.h"
-/*
-// This a shortcut to help you visually see your layout.
-// The first section contains all of the arguments
-// The second converts the arguments into a two-dimensional array
-*/
+#define XXX KC_NO
+
#define LAYOUT( \
- A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, \
- B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, \
- C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, \
- D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 \
-) \
-{ \
- {A2, A3, A4, A5, A6, A7, A8, A9, A10, A11}, \
- {B2, B3, B4, B5, B6, B7, B8, B9, B10, B11}, \
- {C2, C3, C4, C5, C6, C7, C8, C9, C10, C11}, \
- {D2, D3, D4, D5, D6, D7, D8, D9, D10, D11}, \
- {A1, B1, C1, D1, KC_NO, KC_NO, D12, C12, B12, A12} \
+ k40, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k49, \
+ k41, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k48, \
+ k42, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k47, \
+ k43, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k46 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
+ { k40, k41, k42, k43, XXX, XXX, k46, k47, k48, k49 } \
}
-
-#endif
diff --git a/keyboards/laptreus/rules.mk b/keyboards/laptreus/rules.mk
index 5fb166761f..b48040df35 100644
--- a/keyboards/laptreus/rules.mk
+++ b/keyboards/laptreus/rules.mk
@@ -23,5 +23,5 @@ KEY_LOCK_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-BLUETOOTH_ENABLE = no # Legacy bluetooth support
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/latin47ble/rules.mk b/keyboards/latin47ble/rules.mk
index 5a3f1069a3..61d3be26e6 100644
--- a/keyboards/latin47ble/rules.mk
+++ b/keyboards/latin47ble/rules.mk
@@ -21,8 +21,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
LAYOUTS = planck_mit
diff --git a/keyboards/latin60rgb/config.h b/keyboards/latin60rgb/config.h
index 97b4812910..5a4b639ab2 100644
--- a/keyboards/latin60rgb/config.h
+++ b/keyboards/latin60rgb/config.h
@@ -72,8 +72,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 60
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 60
#endif
diff --git a/keyboards/latin64ble/rules.mk b/keyboards/latin64ble/rules.mk
index b4d726a60d..ba3f750117 100644
--- a/keyboards/latin64ble/rules.mk
+++ b/keyboards/latin64ble/rules.mk
@@ -21,6 +21,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/latin6rgb/config.h b/keyboards/latin6rgb/config.h
index 174c23c30c..fa9abbea6c 100644
--- a/keyboards/latin6rgb/config.h
+++ b/keyboards/latin6rgb/config.h
@@ -84,14 +84,9 @@
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define DRIVER_ADDR_1 0b1110100
-//#define DRIVER_ADDR_2 0b1110110
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 6
-//#define DRIVER_1_LED_TOTAL 25
-//#define DRIVER_2_LED_TOTAL 24
-//#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 6
#endif
//#define RGB_DI_PIN B7
//#ifdef RGB_DI_PIN
diff --git a/keyboards/latinpadble/rules.mk b/keyboards/latinpadble/rules.mk
index b36d9a88cb..eca33fc0a0 100644
--- a/keyboards/latinpadble/rules.mk
+++ b/keyboards/latinpadble/rules.mk
@@ -21,10 +21,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
diff --git a/keyboards/launchpad/config.h b/keyboards/launchpad/config.h
index e9a13a3bdf..327d67016b 100644
--- a/keyboards/launchpad/config.h
+++ b/keyboards/launchpad/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -65,5 +64,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef SUBPROJECT_rev1
#include "rev1/config.h"
#endif
-
-#endif
diff --git a/keyboards/launchpad/launchpad.h b/keyboards/launchpad/launchpad.h
index 85432de0ad..59cf64afec 100644
--- a/keyboards/launchpad/launchpad.h
+++ b/keyboards/launchpad/launchpad.h
@@ -1,11 +1,7 @@
-#ifndef LAUNCHPAD_H
-#define LAUNCHPAD_H
+#pragma once
-#ifdef KEYBOARD_launchpad_rev1
- #include "rev1.h"
+#if defined(KEYBOARD_launchpad_rev1)
+# include "rev1.h"
#endif
#include "quantum.h"
-
-
-#endif
diff --git a/keyboards/launchpad/rev1/rev1.h b/keyboards/launchpad/rev1/rev1.h
index 6644db8300..2ea6e7e775 100644
--- a/keyboards/launchpad/rev1/rev1.h
+++ b/keyboards/launchpad/rev1/rev1.h
@@ -1,21 +1,17 @@
-#ifndef REV1_H
-#define REV1_H
+#pragma once
#include "../launchpad.h"
#include "quantum.h"
#define LAYOUT( \
- K00, K01, \
- K10, K11, \
- K20, K21, \
- K30, K31 \
- ) \
- { \
- { K00, K01 }, \
- { K10, K11 }, \
- { K20, K21 }, \
- { K30, K31 } \
- }
-
-#endif
+ k00, k01, \
+ k10, k11, \
+ k20, k21, \
+ k30, k31 \
+) { \
+ { k00, k01 }, \
+ { k10, k11 }, \
+ { k20, k21 }, \
+ { k30, k31 } \
+}
diff --git a/keyboards/lazydesigners/the60/rev2/info.json b/keyboards/lazydesigners/the60/rev2/info.json
index bba03844bc..05540cd308 100755
--- a/keyboards/lazydesigners/the60/rev2/info.json
+++ b/keyboards/lazydesigners/the60/rev2/info.json
@@ -261,7 +261,10 @@
{"label":"Shift", "x":13.25, "y":3, "w":1.75},
{"label":"Ctrl", "x":0, "y":4, "w":1.5},
{"label":"Alt", "x":2.5, "y":4, "w":1.5},
- {"label":"Space","x":4, "y":4, "w":7},
+ {"label":"Space","x":4, "y":4, "w":2},
+ {"label":"Space","x":6, "y":4, "w":1.5},
+ {"label":"Space","x":7.5, "y":4, "w":1.5},
+ {"label":"Space","x":9, "y":4, "w":2},
{"label":"Win", "x":11, "y":4, "w":1.5},
{"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
]
@@ -326,7 +329,10 @@
{"label":"Shift", "x":13.25, "y":3, "w":1.75},
{"label":"Win", "x":1.5, "y":4},
{"label":"Alt", "x":2.5, "y":4, "w":1.5},
- {"label":"Space","x":4, "y":4, "w":7},
+ {"label":"Space","x":4, "y":4, "w":2},
+ {"label":"Space","x":6, "y":4, "w":1.5},
+ {"label":"Space","x":7.5, "y":4, "w":1.5},
+ {"label":"Space","x":9, "y":4, "w":2},
{"label":"Win", "x":11, "y":4, "w":1.5},
{"label":"Menu", "x":12.5, "y":4}
]
diff --git a/keyboards/lfkeyboards/issi.h b/keyboards/lfkeyboards/issi.h
index 51777f6ee3..74379ddbc8 100644
--- a/keyboards/lfkeyboards/issi.h
+++ b/keyboards/lfkeyboards/issi.h
@@ -1,6 +1,6 @@
+#pragma once
+
#ifdef ISSI_ENABLE
-#ifndef ISSI_H
-#define ISSI_H
typedef struct ISSIDeviceStruct{
uint8_t fn_dirty; // function registers need to be resent
@@ -37,4 +37,3 @@ void activateLED(uint8_t matrix, uint8_t cx, uint8_t cy, uint8_t pwm);
void update_issi(uint8_t device_addr, uint8_t blocking);
#endif
-#endif \ No newline at end of file
diff --git a/keyboards/lfkeyboards/lfk65_hs/config.h b/keyboards/lfkeyboards/lfk65_hs/config.h
index adedaa3427..0adc0b3f56 100644
--- a/keyboards/lfkeyboards/lfk65_hs/config.h
+++ b/keyboards/lfkeyboards/lfk65_hs/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -83,5 +82,3 @@
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h
index 3256451658..6ba3a63e88 100644
--- a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h
+++ b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h
@@ -1,5 +1,4 @@
-#ifndef LFK65_HS_H
-#define LFK65_HS_H
+#pragma once
#include "quantum.h"
#include "matrix.h"
@@ -13,58 +12,56 @@ void reset_keyboard_kb(void);
/* All Keymap - contains every possible switch
* ,-------------------------------------------------------------------------------.
-* | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | 1G |
+* | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
* |-------------------------------------------------------------------------------|
-* | 21 | 22 |23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2F | 2G |
+* | 10 | 11 |12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1E | 1F |
* |-------------------------------------------------------------------------------|
-* | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3F | 3G |
+* | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2E | 2F |
* |-------------------------------------------------------------------------------|
-* | 41 | 42 | 43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4F | 4G |
+* | 30 |31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3E | 3F |
* |-------------------------------------------------------------------------------|
-* | 51 | 52 | 53 | 57 | 5A | 5B | 5C | 5D | 5E | 3E | 4E |
+* | 40 | 41 | 42 | 46 | 4A | 4B | 4C | 4D | 2D | 3D |
* `-------------------------------------------------------------------------------'
*/
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define LAYOUT_all( \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, k3G, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4F, k4G, \
- k51, k52, k53, k57, k5B, k5C, k5D, k5E, k3E, k4E \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k2D, k3D \
) { \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___, k2F, k2G }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G }, \
- { k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G }, \
- { k51, k52, k53, ___, ___, ___, k57, ___, ___, ___, k5B, k5C, k5D, k5E, ___, ___ } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, ___, ___ } \
}
/* ANSI Keymap
* ,-------------------------------------------------------------------------------.
-* | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1G |
+* | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0E | 0F |
* |-------------------------------------------------------------------------------|
-* | 21 | 22 |23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2C | 2D | 2F | 2G |
+* | 10 | 11 |12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1A | 1B | 1C | 1E | 1F |
* |-------------------------------------------------------------------------------|
-* | 31 | 32 |33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3F | 3G |
+* | 20 | 21 |22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 2A | 2B | 2E | 2F |
* |-------------------------------------------------------------------------------|
-* | 41 | 42 |43 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4F | 4G |
+* | 30 | 32 |33 | 34 | 35 | 36 | 37 | 38 | 39 | 3A | 3B | 3C | 3E | 3F |
* |-------------------------------------------------------------------------------|
-* | 51 | 52 | 53 | 57 | 5A | 5B | 5C | 5D | 5E | 3E | 4E |
+* | 40 | 41 | 42 | 46 | 4A | 4B | 4C | 4D | 2D | 3D |
* `-------------------------------------------------------------------------------'
*/
#define LAYOUT_ansi( \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3F, k3G, \
- k41, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4F, k4G, \
- k51, k52, k53, k57, k5B, k5C, k5D, k5E, k3E, k4E \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k2D, k3D \
) { \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___, k1F, k1G }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___, k2F, k2G }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, k3E, k3F, k3G }, \
- { k41, ___, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G }, \
- { k51, k52, k53, ___, ___, ___, k57, ___, ___, ___, k5B, k5C, k5D, k5E, ___, ___ } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, k2E, k2F }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, ___, ___ } \
}
-
-#endif //LFK65_HS_H
diff --git a/keyboards/lfkeyboards/lfk78/post_rules.mk b/keyboards/lfkeyboards/lfk78/post_rules.mk
new file mode 100644
index 0000000000..03f975b9df
--- /dev/null
+++ b/keyboards/lfkeyboards/lfk78/post_rules.mk
@@ -0,0 +1,14 @@
+# Extra source files for IS3731 lighting
+SRC += TWIlib.c issi.c lighting.c
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+ifeq ($(strip $(CAPSLOCK_LED)), yes)
+ TMK_COMMON_DEFS += -DCAPSLOCK_LED
+endif
diff --git a/keyboards/lfkeyboards/lfk78/rules.mk b/keyboards/lfkeyboards/lfk78/rules.mk
index 7919543734..9422978d11 100644
--- a/keyboards/lfkeyboards/lfk78/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/rules.mk
@@ -21,19 +21,4 @@ ISSI_ENABLE = yes # If the I2C pullup resistors aren't install thi
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
CAPSLOCK_LED = no # Toggle back light LED of Caps Lock
-# Extra source files for IS3731 lighting
-SRC = TWIlib.c issi.c lighting.c
-
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- TMK_COMMON_DEFS += -DISSI_ENABLE
-endif
-
-ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
- TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
-endif
-
-ifeq ($(strip $(CAPSLOCK_LED)), yes)
- TMK_COMMON_DEFS += -DCAPSLOCK_LED
-endif
-
DEFAULT_FOLDER = lfkeyboards/lfk78/revj
diff --git a/keyboards/lfkeyboards/lfk87/config.h b/keyboards/lfkeyboards/lfk87/config.h
index d5b17005e5..387c58851c 100644
--- a/keyboards/lfkeyboards/lfk87/config.h
+++ b/keyboards/lfkeyboards/lfk87/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -114,5 +113,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/lfkeyboards/lfk87/lfk87.h b/keyboards/lfkeyboards/lfk87/lfk87.h
index 5c1fba6bab..1b1368659b 100644
--- a/keyboards/lfkeyboards/lfk87/lfk87.h
+++ b/keyboards/lfkeyboards/lfk87/lfk87.h
@@ -1,5 +1,4 @@
-#ifndef LFK87_H
-#define LFK87_H
+#pragma once
#include "quantum.h"
#include "matrix.h"
@@ -44,85 +43,75 @@ void click(uint16_t freq, uint16_t duration);
#define ___ KC_NO
#ifdef LFK_TKL_REV_A
- #ifndef LAYOUT_tkl_ansi
- #define LAYOUT_tkl_ansi( \
- k11, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g, k3h, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, \
- k51, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5g, \
- k61, k62, k63, k67, k6b, k6c, k6d, k6e, k6f, k6g, k6h \
- ) \
- { \
- { k11, ___, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g, k3h }, \
- { k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, ___, ___, ___ }, \
- { k51, ___, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, ___, ___, k5g, ___ }, \
- { k61, k62, k63, ___, ___, ___, k67, ___, ___, ___, k6b, k6c, k6d, k6e, k6f, k6g, k6h }, \
- }
-
+# ifndef LAYOUT_tkl_ansi
+# define LAYOUT_tkl_ansi( \
+ k00, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4F, \
+ k50, k51, k52, k56, k5A, k5B, k5C, k5D, k5E, k5F, k5G \
+) { \
+ { k00, ___, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, ___, ___, ___ }, \
+ { k40, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, ___, ___, k4F, ___ }, \
+ { k50, k51, k52, ___, ___, ___, k56, ___, ___, ___, k5A, k5B, k5C, k5D, k5E, k5F, k5G } \
+}
#endif // !LAYOUT_tkl_ansi
- #ifndef LAYOUT_tkl_iso
- #define LAYOUT_tkl_iso( \
- k11, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h, \
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3f, k3g, k3h, \
- k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k3e, \
- k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5g, \
- k61, k62, k63, k67, k6b, k6c, k6d, k6e, k6f, k6g, k6h \
- ) \
- { \
- { k11, ___, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g, k3h }, \
- { k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, ___, ___, ___ }, \
- { k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, ___, ___, k5g, ___ }, \
- { k61, k62, k63, ___, ___, ___, k67, ___, ___, ___, k6b, k6c, k6d, k6e, k6f, k6g, k6h }, \
- }
-
- #endif // !LAYOUT_tkl_iso
+# ifndef LAYOUT_tkl_iso
+# define LAYOUT_tkl_iso( \
+ k00, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, k2F, k2G, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k2D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4F, \
+ k50, k51, k52, k56, k5A, k5B, k5C, k5D, k5E, k5F, k5G \
+) { \
+ { k00, ___, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, ___, ___, ___ }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, ___, ___, k4F, ___ }, \
+ { k50, k51, k52, ___, ___, ___, k56, ___, ___, ___, k5A, k5B, k5C, k5D, k5E, k5F, k5G } \
+}
+# endif // !LAYOUT_tkl_iso
#else // RevC+ keymaps
- #ifndef LAYOUT_tkl_ansi
- #define LAYOUT_tkl_ansi( \
- k71, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, k1g, \
- k72, k73, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k2f, k2g, \
- k74, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g, \
- k61, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, \
- k62, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5f, \
- k63, k64, k65, k67, k6a, k6b, k6c, k6d, k6e, k6f, k6g \
- ) \
- { \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, k1e, k1f, k1g }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, ___, k2e, k2f, k2g }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g }, \
- { k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, ___, ___ }, \
- { ___, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, ___, ___, k5f, ___ }, \
- { k61, k62, k63, k64, k65, ___, k67, ___, ___, k6a, k6b, k6c, k6d, k6e, k6f, k6g }, \
- { k71, k72, k73, k74, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
- }
-
- #endif // !LAYOUT_tkl_ansi
- #ifndef LAYOUT_tkl_iso
- #define LAYOUT_tkl_iso( \
- k71, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, k1g, \
- k72, k73, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k2f, k2g, \
- k74, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, k3f, k3g, \
- k61, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k3d, \
- k62, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5f, \
- k63, k64, k65, k67, k6a, k6b, k6c, k6d, k6e, k6f, k6g \
- ) \
- { \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, ___, k1e, k1f, k1g }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, ___, k2e, k2f, k2g }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g }, \
- { k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, ___, ___ }, \
- { k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, ___, ___, k5f, ___ }, \
- { k61, k62, k63, k64, k65, ___, k67, ___, ___, k6a, k6b, k6c, k6d, k6e, k6f, k6g }, \
- { k71, k72, k73, k74, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
- }
-
- #endif // !LAYOUT_tkl_iso
+# ifndef LAYOUT_tkl_ansi
+# define LAYOUT_tkl_ansi( \
+ k60, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0D, k0E, k0F, \
+ k61, k62, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1D, k1E, k1F, \
+ k63, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k50, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
+ k51, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4E, \
+ k52, k53, k54, k56, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, ___, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, ___, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, ___, ___, ___, ___ }, \
+ { ___, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, ___, ___, k4E, ___ }, \
+ { k50, k51, k52, k53, k54, ___, k56, ___, ___, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \
+}
+# endif // !LAYOUT_tkl_ansi
+# ifndef LAYOUT_tkl_iso
+# define LAYOUT_tkl_iso( \
+ k60, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0D, k0E, k0F, \
+ k61, k62, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1D, k1E, k1F, \
+ k63, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, k2F, \
+ k50, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k2C, \
+ k51, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4E, \
+ k52, k53, k54, k56, k59, k5A, k5B, k5C, k5D, k5E, k5F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, ___, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, ___, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, ___, ___, ___, ___ }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, ___, ___, k4E, ___ }, \
+ { k50, k51, k52, k53, k54, ___, k56, ___, ___, k59, k5A, k5B, k5C, k5D, k5E, k5F }, \
+ { k60, k61, k62, k63, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \
+}
+# endif // !LAYOUT_tkl_iso
#endif //Rev
-
-#endif //LFK87_H
diff --git a/keyboards/lfkeyboards/lfk87/post_rules.mk b/keyboards/lfkeyboards/lfk87/post_rules.mk
new file mode 100644
index 0000000000..563462dd99
--- /dev/null
+++ b/keyboards/lfkeyboards/lfk87/post_rules.mk
@@ -0,0 +1,13 @@
+ifeq ($(LFK_REV), A)
+ MCU = at90usb1286
+else
+ MCU = at90usb646
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+ OPT_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+ OPT_DEFS += -DWATCHDOG_ENABLE
+endif
diff --git a/keyboards/lfkeyboards/lfk87/rules.mk b/keyboards/lfkeyboards/lfk87/rules.mk
index afe1aef59d..1289cf133d 100644
--- a/keyboards/lfkeyboards/lfk87/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/rules.mk
@@ -6,11 +6,6 @@
#
LFK_REV = C
-ifeq ($(LFK_REV), A)
- MCU = at90usb1286
-else
- MCU = at90usb646
-endif
BOOTLOADER = atmel-dfu
OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV)
@@ -39,13 +34,3 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
-
-
-
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- OPT_DEFS += -DISSI_ENABLE
-endif
-
-ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
- OPT_DEFS += -DWATCHDOG_ENABLE
-endif
diff --git a/keyboards/lfkeyboards/lfkpad/post_rules.mk b/keyboards/lfkeyboards/lfkpad/post_rules.mk
new file mode 100644
index 0000000000..ad997587b2
--- /dev/null
+++ b/keyboards/lfkeyboards/lfkpad/post_rules.mk
@@ -0,0 +1,7 @@
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
diff --git a/keyboards/lfkeyboards/lfkpad/rules.mk b/keyboards/lfkeyboards/lfkpad/rules.mk
index 3499ebb519..733c8b8606 100644
--- a/keyboards/lfkeyboards/lfkpad/rules.mk
+++ b/keyboards/lfkeyboards/lfkpad/rules.mk
@@ -26,12 +26,4 @@ WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan() isn't run every
SRC = TWIlib.c issi.c lighting.c
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- TMK_COMMON_DEFS += -DISSI_ENABLE
-endif
-
-ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
- TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
-endif
-
LAYOUTS = numpad_6x4
diff --git a/keyboards/lfkeyboards/lighting.h b/keyboards/lfkeyboards/lighting.h
index 69e63268dd..cb07755c53 100644
--- a/keyboards/lfkeyboards/lighting.h
+++ b/keyboards/lfkeyboards/lighting.h
@@ -1,6 +1,4 @@
-#ifndef LIGHTING_H
-#define LIGHTING_H
-
+#pragma once
// rgb_sequence[RGBLED_NUM]
//
@@ -49,5 +47,3 @@ void set_backlight(uint8_t level);
void set_underglow(uint8_t red, uint8_t green, uint8_t blue);
void set_rgb(uint8_t rgb_led, uint8_t red, uint8_t green, uint8_t blue);
void set_backlight_by_keymap(uint8_t col, uint8_t row);
-
-#endif \ No newline at end of file
diff --git a/keyboards/lfkeyboards/mini1800/config.h b/keyboards/lfkeyboards/mini1800/config.h
index 598f08a6f1..1504a95cb4 100644
--- a/keyboards/lfkeyboards/mini1800/config.h
+++ b/keyboards/lfkeyboards/mini1800/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -101,5 +100,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/lfkeyboards/mini1800/mini1800.h b/keyboards/lfkeyboards/mini1800/mini1800.h
index c007d7f76a..3e460c8a11 100644
--- a/keyboards/lfkeyboards/mini1800/mini1800.h
+++ b/keyboards/lfkeyboards/mini1800/mini1800.h
@@ -1,5 +1,4 @@
-#ifndef LFK87_H
-#define LFK87_H
+#pragma once
#include "quantum.h"
#include "matrix.h"
@@ -43,33 +42,18 @@ void click(uint16_t freq, uint16_t duration);
#define ___ KC_NO
- // a = 10
- // b = 11
- // c = 12
- // d = 13
- // e = 14
- // f = 15
- // g = 16
- // h = 17
- // i = 18
- // j = 19
-
#ifndef LAYOUT
- #define LAYOUT( \
- k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, k1i, k1j,\
- k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2g, k2h, k2i, k2j,\
- k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k2f, k3g, k3h, k3i, k3j,\
- k41, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, k4g, k4h, k4i, k4j,\
- k51, k52, k53, k56, k5b, k5c, k5d, k5f, k5g, k5h, k5i, k5j \
- ) \
- { \
- { k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, ___, k1f, k1g, k1h, k1i, k1j }, \
- { k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h, k2i, k2j }, \
- { k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, ___, ___, ___, k3g, k3h, k3i, k3j }, \
- { k41, ___, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, k4f, k4g, k4h, k4i, k4j }, \
- { k51, k52, k53, ___, ___, k56, ___, ___, ___, ___, k5b, k5c, k5d, ___, k5f, k5g, k5h, k5i, k5j }, \
- }
-
+# define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, k0G, k0H, k0I, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, k1H, k1I, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1E, k2F, k2G, k2H, k2I, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, k3G, k3H, k3I, \
+ k40, k41, k42, k45, k4A, k4B, k4C, k4E, k4F, k4G, k4H, k4I \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E, k0F, k0G, k0H, k0I }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, ___, ___, k2F, k2G, k2H, k2I }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, k3E, k3F, k3G, k3H, k3I }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, ___, k4A, k4B, k4C, ___, k4E, k4F, k4G, k4H, k4I } \
+}
#endif // !LAYOUT #endif
-
-#endif //LFK87_H
diff --git a/keyboards/lfkeyboards/mini1800/post_rules.mk b/keyboards/lfkeyboards/mini1800/post_rules.mk
new file mode 100644
index 0000000000..f04e10e4a3
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/post_rules.mk
@@ -0,0 +1,9 @@
+ifeq ($(LFK_REV), A)
+ MCU = at90usb1286
+else
+ MCU = at90usb646
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+ # TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
diff --git a/keyboards/lfkeyboards/mini1800/rules.mk b/keyboards/lfkeyboards/mini1800/rules.mk
index a9c29c4b91..c9a9b01054 100644
--- a/keyboards/lfkeyboards/mini1800/rules.mk
+++ b/keyboards/lfkeyboards/mini1800/rules.mk
@@ -7,21 +7,12 @@
# Set to A or C
LFK_REV = C
-ifeq ($(LFK_REV), A)
- MCU = at90usb1286
-else
- MCU = at90usb646
-endif
BOOTLOADER = atmel-dfu
OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV)
# Extra source files for IS3731 lighting
SRC = TWIlib.c issi.c lighting.c
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- # TMK_COMMON_DEFS += -DISSI_ENABLE
-endif
-
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/manta60/post_rules.mk b/keyboards/manta60/post_rules.mk
new file mode 100644
index 0000000000..e26b52df30
--- /dev/null
+++ b/keyboards/manta60/post_rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+endif
diff --git a/keyboards/manta60/rules.mk b/keyboards/manta60/rules.mk
index 1b715cd40f..f714527243 100644
--- a/keyboards/manta60/rules.mk
+++ b/keyboards/manta60/rules.mk
@@ -22,7 +22,3 @@ AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad, iPhone)
-
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-endif
diff --git a/keyboards/massdrop/alt/alt.h b/keyboards/massdrop/alt/alt.h
index 0396095450..c3761bee8b 100644
--- a/keyboards/massdrop/alt/alt.h
+++ b/keyboards/massdrop/alt/alt.h
@@ -7,7 +7,7 @@
#include "i2c_master.h"
#include "md_rgb_matrix.h" //For led keycodes
#include "usb/udi_cdc.h"
-#include "usb/usb2422.h"
+#include "usb/usb_hub.h"
#define LAYOUT_65_ansi_blocker( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \
diff --git a/keyboards/massdrop/alt/config.h b/keyboards/massdrop/alt/config.h
index d28094c492..c37949a74b 100644
--- a/keyboards/massdrop/alt/config.h
+++ b/keyboards/massdrop/alt/config.h
@@ -50,22 +50,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* This Shift Register expands available hardware output lines to control additional peripherals */
/* It uses four lines from the MCU to provide 16 output lines */
/* Shift Register Clock configuration (MCU to ShiftRegister.RCLK) */
-#define SR_EXP_RCLK_PORT PB
-#define SR_EXP_RCLK_PIN 14
+#define SR_EXP_RCLK_PIN B14
/* Shift Register Output Enable configuration (MCU to ShiftRegister.OE_N) */
-#define SR_EXP_OE_N_PORT PB
-#define SR_EXP_OE_N_PIN 15
+#define SR_EXP_OE_PIN B15
/* SERCOM port to use for Shift Register SPI */
/* DATAOUT and SCLK must be configured to use hardware pins of this port */
-#define SR_EXP_SERCOM SERCOM2
+#define SPI_SERCOM SERCOM2
/* Shift Register SPI Data Out configuration (MCU.SERCOMx.PAD[0] to ShiftRegister.SER) */
-#define SR_EXP_DATAOUT_PORT PA
-#define SR_EXP_DATAOUT_PIN 12
-#define SR_EXP_DATAOUT_MUX 2
+#define SPI_DATAOUT_PIN A12
+#define SPI_DATAOUT_MUX 2
/* Shift Register SPI Serial Clock configuration (MCU.SERCOMx.PAD[1] to ShiftRegister.SRCLK) */
-#define SR_EXP_SCLK_PORT PA
-#define SR_EXP_SCLK_PIN 13
-#define SR_EXP_SCLK_MUX 2
+#define SPI_SCLK_PIN A13
+#define SPI_SCLK_MUX 2
/* Debug LED (Small LED Located near MCU) */
#define DEBUG_LED_ENABLE 1
@@ -94,6 +90,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DEBUG_BOOT_TRACING_PORT PB
#define DEBUG_BOOT_TRACING_PIN 23
+/* USB2422 config */
+#define USB2422_ADDRESS 0x58
+#define USB2422_VENDOR_ID 0x04D8
+#define USB2422_PRODUCT_ID 0xEEC5
+#define USB2422_DEVICE_VER 0x0101
+#define USB2422_MANUFACTURER "Massdrop Inc."
+#define USB2422_PRODUCT "Massdrop Hub"
+#define USB2422_ACTIVE_PIN A18
+
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/massdrop/ctrl/config.h b/keyboards/massdrop/ctrl/config.h
index 3dbd9b8877..fe8b600234 100644
--- a/keyboards/massdrop/ctrl/config.h
+++ b/keyboards/massdrop/ctrl/config.h
@@ -49,22 +49,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* This Shift Register expands available hardware output lines to control additional peripherals */
/* It uses four lines from the MCU to provide 16 output lines */
/* Shift Register Clock configuration (MCU to ShiftRegister.RCLK) */
-#define SR_EXP_RCLK_PORT PB
-#define SR_EXP_RCLK_PIN 14
+#define SR_EXP_RCLK_PIN B14
/* Shift Register Output Enable configuration (MCU to ShiftRegister.OE_N) */
-#define SR_EXP_OE_N_PORT PB
-#define SR_EXP_OE_N_PIN 15
+#define SR_EXP_OE_PIN B15
/* SERCOM port to use for Shift Register SPI */
/* DATAOUT and SCLK must be configured to use hardware pins of this port */
-#define SR_EXP_SERCOM SERCOM2
+#define SPI_SERCOM SERCOM2
/* Shift Register SPI Data Out configuration (MCU.SERCOMx.PAD[0] to ShiftRegister.SER) */
-#define SR_EXP_DATAOUT_PORT PA
-#define SR_EXP_DATAOUT_PIN 12
-#define SR_EXP_DATAOUT_MUX 2
+#define SPI_DATAOUT_PIN A12
+#define SPI_DATAOUT_MUX 2
/* Shift Register SPI Serial Clock configuration (MCU.SERCOMx.PAD[1] to ShiftRegister.SRCLK) */
-#define SR_EXP_SCLK_PORT PA
-#define SR_EXP_SCLK_PIN 13
-#define SR_EXP_SCLK_MUX 2
+#define SPI_SCLK_PIN A13
+#define SPI_SCLK_MUX 2
/* Debug LED (Small LED Located near MCU) */
#define DEBUG_LED_ENABLE 1
@@ -93,6 +89,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DEBUG_BOOT_TRACING_PORT PB
#define DEBUG_BOOT_TRACING_PIN 23
+/* USB2422 config */
+#define USB2422_ADDRESS 0x58
+#define USB2422_VENDOR_ID 0x04D8
+#define USB2422_PRODUCT_ID 0xEEC5
+#define USB2422_DEVICE_VER 0x0101
+#define USB2422_MANUFACTURER "Massdrop Inc."
+#define USB2422_PRODUCT "Massdrop Hub"
+#define USB2422_ACTIVE_PIN A18
+
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/massdrop/ctrl/ctrl.h b/keyboards/massdrop/ctrl/ctrl.h
index 1650beb9a4..a3d66ba775 100644
--- a/keyboards/massdrop/ctrl/ctrl.h
+++ b/keyboards/massdrop/ctrl/ctrl.h
@@ -7,7 +7,7 @@
#include "i2c_master.h"
#include "md_rgb_matrix.h" //For led keycodes
#include "usb/udi_cdc.h"
-#include "usb/usb2422.h"
+#include "usb/usb_hub.h"
#define LAYOUT( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \
diff --git a/keyboards/matrix/m20add/config.h b/keyboards/matrix/m20add/config.h
index 3df5d78d55..5d615dbad6 100644
--- a/keyboards/matrix/m20add/config.h
+++ b/keyboards/matrix/m20add/config.h
@@ -82,8 +82,8 @@
#define DEBOUNCE 5
// i2c setting
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
diff --git a/keyboards/matrix/m20add/m20add.c b/keyboards/matrix/m20add/m20add.c
index b38dad27cd..21f4f9b1ba 100644
--- a/keyboards/matrix/m20add/m20add.c
+++ b/keyboards/matrix/m20add/m20add.c
@@ -64,12 +64,12 @@ void i2c_init(void)
}
// Try releasing special pins for a short time
- palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT);
- palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
+ palSetLineMode(I2C1_SCL_PIN, PAL_MODE_INPUT);
+ palSetLineMode(I2C1_SDA_PIN, PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
- palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
- palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
+ palSetLineMode(I2C1_SCL_PIN, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
+ palSetLineMode(I2C1_SDA_PIN, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
}
#define REBOOT_MAGIC 0x41544B42
diff --git a/keyboards/matrix/noah/config.h b/keyboards/matrix/noah/config.h
index f41cad94ce..e5fa4959c8 100644
--- a/keyboards/matrix/noah/config.h
+++ b/keyboards/matrix/noah/config.h
@@ -26,8 +26,8 @@
#define DEBOUNCE 5
// i2c setting
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
#define PAL_MODE_STM32_ALTERNATE_OPENDRAIN (PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN)
diff --git a/keyboards/mechlovin/adelais/adelais.h b/keyboards/mechlovin/adelais/adelais.h
index a6bd2477a3..6c3980a090 100644
--- a/keyboards/mechlovin/adelais/adelais.h
+++ b/keyboards/mechlovin/adelais/adelais.h
@@ -18,58 +18,18 @@
#include "quantum.h"
-#define LAYOUT_alice_split_bs( \
- K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
- K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
- K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
- K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
- K40, K42, K44, K46, K48, K4A, K4E \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
-}
-
-#define LAYOUT_alice( \
- K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
- K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
- K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
- K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
- K40, K42, K44, K46, K48, K4A, K4E \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
-}
-
-#define LAYOUT_alice_split_bs_full_rshift( \
- K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
- K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
- K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
- K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, \
- K40, K42, K44, K46, K48, K4A, K4E \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
-}
-
-#define LAYOUT_alice_full_rshift( \
- K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
- K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
- K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
- K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, \
- K40, K42, K44, K46, K48, K4A, K4E \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
-}
+#ifdef KEYBOARD_mechlovin_adelais_rgb_led_rev1
+ #include "rev1.h"
+#elif KEYBOARD_mechlovin_adelais_rgb_led_rev2
+ #include "rev2.h"
+#elif KEYBOARD_mechlovin_adelais_rgb_led_rev3
+ #include "rev3.h"
+#elif KEYBOARD_mechlovin_adelais_standard_led_arm_rev2
+ #include "rev2.h"
+#elif KEYBOARD_mechlovin_adelais_standard_led_arm_rev3
+ #include "rev3.h"
+#elif KEYBOARD_mechlovin_adelais_standard_led_arm_rev4
+ #include "rev4.h"
+#elif KEYBOARD_mechlovin_adelais_standard_led_avr_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/mechlovin/adelais/config.h b/keyboards/mechlovin/adelais/config.h
index 3ec5c49132..035ffa8032 100644
--- a/keyboards/mechlovin/adelais/config.h
+++ b/keyboards/mechlovin/adelais/config.h
@@ -26,11 +26,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix size */
#define MATRIX_ROWS 5
-#define MATRIX_COLS 15
-
-/* COL2ROW, ROW2COL*/
-#define DIODE_DIRECTION COL2ROW
-
-#define LED_NUM_LOCK_PIN C15
-#define LED_CAPS_LOCK_PIN B2
-#define LED_SCROLL_LOCK_PIN B9
+#define MATRIX_COLS 15 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/config.h b/keyboards/mechlovin/adelais/rgb_led/config.h
new file mode 100644
index 0000000000..2ec0afd47b
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2020 Team 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
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/adelais/rgb_led/readme.md b/keyboards/mechlovin/adelais/rgb_led/readme.md
deleted file mode 100644
index f58ca7aa29..0000000000
--- a/keyboards/mechlovin/adelais/rgb_led/readme.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Adelais En Ciel
-
-![adelais](https://i.imgur.com/6U1IfZe.png)
-
-Compatible with TGR Alice and all clone variants.
-`rgb_led` (Adelais En Ciel) comes with per-key RGB LEDs pre-soldered, rev.2 and rev.3 support a rotary encoder.
-
-* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
-* Hardware Supported: Adelais En Ciel
-* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-en-ciel-alice-compatible-rgb-pcb?variant=33937050828939)
-
-Make example for this keyboard (after setting up your build environment):
-
- make mechlovin/adelais/rgb_led: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/mechlovin/adelais/rgb_led/rev1/config.h b/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
index d75cbd3f2a..97092e25e0 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
@@ -13,7 +13,12 @@
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#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_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_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
+
+
+#define LED_NUM_LOCK_PIN C15
+#define LED_CAPS_LOCK_PIN B2
+#define LED_SCROLL_LOCK_PIN B9 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h b/keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h
index 16cdf9ed85..45d48fac46 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h
@@ -17,3 +17,61 @@
#pragma once
#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
index c830edce26..9c71c537b7 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
@@ -31,7 +31,7 @@
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#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_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_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
@@ -43,3 +43,8 @@
#define ENCODER_RESOLUTION 4
#define TAP_CODE_DELAY 10
+
+
+#define LED_NUM_LOCK_PIN C15
+#define LED_CAPS_LOCK_PIN B2
+#define LED_SCROLL_LOCK_PIN B9 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h
index 16cdf9ed85..45d48fac46 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h
@@ -17,3 +17,61 @@
#pragma once
#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
new file mode 100644
index 0000000000..5b3a8e8250
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
@@ -0,0 +1,75 @@
+/*
+Copyright 2021 Mechlovin' Studio
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 PRODUCT_ID 0xAEC3
+#define PRODUCT Adelais En Ciel Rev3
+
+#define MATRIX_ROW_PINS { A4, A3, C13, A1, A2}
+#define MATRIX_COL_PINS { B10, B11, B2, B1, B0, A6, A5, A14, A13, A15, B3, B4, B5, B8, B9 }
+
+#define RGB_DI_PIN A7
+#define WS2812_SPI 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
+#define RGBLED_NUM 23
+#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_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+//rgb matrix setting
+// 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:
+// 0b1110100 AD <-> GND
+// 0b1110111 AD <-> VCC
+// 0b1110101 AD <-> SCL
+// 0b1110110 AD <-> SDA
+#define DRIVER_ADDR_1 0b0110010
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 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_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_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_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
+
+#define RGB_MATRIX_DISABLE_KEYCODES
+
+#define ENCODERS_PAD_A { B12 }
+#define ENCODERS_PAD_B { B13 }
+#define ENCODER_RESOLUTION 4
+
+#define TAP_CODE_DELAY 10
+
+
+#define LED_NUM_LOCK_PIN A0
+#define LED_CAPS_LOCK_PIN C14
+#define LED_SCROLL_LOCK_PIN C15 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/halconf.h b/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h
index 01d02f71c3..d001829d03 100644
--- a/keyboards/mechlovin/adelais/standard_led/halconf.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h
@@ -14,7 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#pragma once
#define HAL_USE_I2C TRUE
diff --git a/keyboards/mechlovin/adelais/standard_led/mcuconf.h b/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h
index b7ecee0204..20d2a82c27 100644
--- a/keyboards/mechlovin/adelais/standard_led/mcuconf.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h
@@ -14,7 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#pragma once
#include_next <mcuconf.h>
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
new file mode 100644
index 0000000000..7631bc8505
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
@@ -0,0 +1,166 @@
+/* Copyright 2021 Team 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 "rev3.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+ {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 */
+ {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* D73-K02-03 */
+ {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* D75-K03-04 */
+ {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* D77-K04-05 */
+ {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* D79-K05-06 */
+ {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* D81-K06-07 */
+ {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* D83-K07-08 */
+ {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* D85-K08-09 */
+ {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* D87-K09-10 */
+ {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* D90-K0A-11 */
+ {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* D93-K0B-12 */
+ {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* D95-K0C-13 */
+ {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* D98-K0D-14 */
+ {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* D100-K0E-15 */
+ {0, CS3_SW4, CS2_SW4, CS1_SW4}, /* D94-K41-16 */
+ {0, CS6_SW4, CS5_SW4, CS4_SW4}, /* D92-K10-17 */
+ {0, CS6_SW6, CS5_SW6, CS4_SW6}, /* D89-K11-18 */
+ {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* D86-K12-19 */
+ {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* D84-K13-20 */
+ {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* D82-K14-21 */
+ {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* D80-K15-22 */
+ {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* D78-K16-23 */
+ {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* D76-K17-24 */
+ {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* D74-K18-25 */
+ {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* D72-K19-26 */
+ {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* D51-K1A-27 */
+ {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* D10-K1B-28 */
+ {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* D101-K1C-29 */
+ {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* D104-K1D-30 */
+ {0, CS3_SW3, CS2_SW3, CS1_SW3}, /* D108-K43-31 */
+ {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* D111-K20-32 */
+ {0, CS6_SW7, CS5_SW7, CS4_SW7}, /* D114-K21-33 */
+ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* D117-K22-34 */
+ {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* D120-K23-35 */
+ {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* D123-K24-36 */
+ {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* D126-K25-37 */
+ {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* D129-K26-38 */
+ {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* D133-K27-39 */
+ {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* D142-K28-40 */
+ {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* D146-K29-41 */
+ {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* D160-K2A-42 */
+ {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* D167-K2B-43 */
+ {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* D168-K2D-44 */
+
+ {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* D163-K30-45 */
+ {0, CS6_SW8, CS5_SW8, CS4_SW8}, /* D147-K31-46 */
+ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* D144-K32-47 */
+ {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* D137-K33-48 */
+ {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* D130-K34-49 */
+ {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* D127-K35-50 */
+ {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* D124-K36-51 */
+ {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* D121-K37-52 */
+ {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* D118-K38-53 */
+ {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* D115-K39-54 */
+ {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* D112-K3A-55 */
+ {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* D109-K3B-56 */
+ {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* D105-K3D-57 */
+ {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* D103-K3E-58 */
+
+ {0, CS3_SW1, CS2_SW1, CS1_SW1}, /* D163-K40-59 */
+ {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* D147-K42-60 */
+ {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* D137-K44-61 */
+ {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* D127-K46-62 */
+ {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* D121-K48-63 */
+ {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* D115-K4A-64 */
+ {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* D103-K4E-65 */
+};
+
+led_config_t g_led_config = {
+ {
+ // Key Matrix to LED Index
+ { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
+ {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, NO_LED},
+ {32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, NO_LED, 44, NO_LED},
+ {45, NO_LED, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58},
+ {59, NO_LED, 60, NO_LED, 61, NO_LED, 62, NO_LED, 63, NO_LED, 64, NO_LED, NO_LED, NO_LED, 65},
+ }, {
+ //LED Index to Physical Positon
+ {0,0}, { 17, 0}, { 34, 0 }, { 51, 0 }, { 69, 0}, { 86, 0}, {100, 0}, {103, 0}, { 120, 0}, { 138, 0}, { 155, 0}, { 172, 0}, { 189, 0}, {207, 0}, {215, 0}, {224, 0},
+ {0,16}, { 17, 16}, { 34,16 }, { 51,16 }, { 69,16}, { 86,16}, {103,16}, { 120,16}, { 138,16}, { 155,16}, { 172,16}, { 189,16}, {207, 16}, {215, 16}, {224,16},
+ {0,32}, { 17, 32}, { 34,32 }, { 51,32 }, { 69,32}, { 86,32}, {103,32}, { 120,32}, { 138,32}, { 155,32}, { 172,32}, { 189,32}, {207, 32}, {224,32},
+ { 17, 48}, { 34,48 }, { 51,48 }, { 69,48}, { 86,48}, {103,48}, { 120,48}, { 138,48}, { 155,48}, { 172,48}, { 189,48}, {207, 48}, {215, 48}, {224,48},
+ { 17, 64}, { 51,64 }, { 86,64}, { 103,64}, { 138,64}, { 172,64}, {224, 64},
+ }, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ }
+};
+
+__attribute__((weak)) void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(32, 255, 255, 255);
+ }
+}
+
+
+#endif
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch(keycode) {
+ #ifdef RGBLIGHT_ENABLE
+ #ifdef RGB_MATRIX_ENABLE
+ case KC_F13: // toggle rgb matrix
+ rgb_matrix_toggle();
+ return false;
+ case KC_F14:
+ rgb_matrix_step();
+ return false;
+ case KC_F15:
+ rgb_matrix_increase_speed();
+ return false;
+ case KC_F16:
+ rgb_matrix_decrease_speed();
+ return false;
+ case KC_F17:
+ rgb_matrix_increase_hue();
+ return false;
+ case KC_F18:
+ rgb_matrix_decrease_hue();
+ return false;
+ case KC_F19:
+ rgb_matrix_increase_sat();
+ return false;
+ case KC_F20:
+ rgb_matrix_decrease_sat();
+ return false;
+ case KC_F21:
+ rgb_matrix_increase_val();
+ return false;
+ case KC_F22:
+ rgb_matrix_decrease_val();
+ return false;
+ #endif
+ #endif
+ default:
+ break;
+ }
+ }
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.h b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.h
new file mode 100644
index 0000000000..28c373ad85
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.h
@@ -0,0 +1,78 @@
+/* Copyright 2021 Team 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
+
+#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K31, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K41, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K43, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3C, K3D, K3E,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice( \
+ K31, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D,\
+ K41, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K43, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3C, K3D, K3E,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K31, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K41, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K43, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
+ { K40, K41, K42, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K31, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K41, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K43, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
+ { K40, K41, K42, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
+
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk b/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk
new file mode 100644
index 0000000000..904d20877b
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk
@@ -0,0 +1,5 @@
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3741
+RGBLIGHT_ENABLE = yes
+ENCODER_ENABLE = yes
+WS2812_DRIVER = spi
diff --git a/keyboards/mechlovin/adelais/rules.mk b/keyboards/mechlovin/adelais/rules.mk
index a3531ff091..8b6c9a433e 100644
--- a/keyboards/mechlovin/adelais/rules.mk
+++ b/keyboards/mechlovin/adelais/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
@@ -21,4 +21,4 @@ AUDIO_ENABLE = no # Audio output
LAYOUTS = alice alice_split_bs
-DEFAULT_FOLDER = mechlovin/adelais/standard_led/rev2
+DEFAULT_FOLDER = mechlovin/adelais/standard_led/arm/rev2
diff --git a/keyboards/mechlovin/adelais/standard_led/rev2/.noci b/keyboards/mechlovin/adelais/standard_led/arm/.noci
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev2/.noci
+++ b/keyboards/mechlovin/adelais/standard_led/arm/.noci
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/chconf.h b/keyboards/mechlovin/adelais/standard_led/arm/chconf.h
new file mode 100644
index 0000000000..fe716d6552
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/chconf.h
@@ -0,0 +1,24 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/mechlovin/adelais/standard_led/config.h b/keyboards/mechlovin/adelais/standard_led/arm/config.h
index 4580e56d5a..4377405fc6 100644
--- a/keyboards/mechlovin/adelais/standard_led/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/config.h
@@ -23,6 +23,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A15 }
#define UNUSED_PINS
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
#define BACKLIGHT_PIN B0
#define BACKLIGHT_BREATHING
#define BACKLIGHT_PWM_DRIVER PWMD3
@@ -32,3 +35,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_NUM 23
#define RGBLIGHT_LIMIT_VAL 255
#define RGBLIGHT_ANIMATIONS
+
+
+#define LED_NUM_LOCK_PIN C15
+#define LED_CAPS_LOCK_PIN B2
+#define LED_SCROLL_LOCK_PIN B9
diff --git a/keyboards/singa/keymaps/test/config.h b/keyboards/mechlovin/adelais/standard_led/arm/halconf.h
index e176ed3479..aca546705d 100644
--- a/keyboards/singa/keymaps/test/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/halconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2018 amnesia0287
+/* 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
@@ -14,11 +14,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
-#include "config_common.h"
+#define HAL_USE_PWM TRUE
-// place overrides here
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
-#endif
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/mcuconf.h b/keyboards/mechlovin/adelais/standard_led/arm/mcuconf.h
new file mode 100644
index 0000000000..ac5a23c70e
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/mcuconf.h
@@ -0,0 +1,29 @@
+/* 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/>.
+ */
+
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+
+
diff --git a/keyboards/mechlovin/adelais/standard_led/readme.md b/keyboards/mechlovin/adelais/standard_led/arm/readme.md
index a7c76beb49..9011ff3a88 100644
--- a/keyboards/mechlovin/adelais/standard_led/readme.md
+++ b/keyboards/mechlovin/adelais/standard_led/arm/readme.md
@@ -11,6 +11,6 @@ Compatible with TGR Alice and all clone variants.
Make example for this keyboard (after setting up your build environment):
- make mechlovin/adelais/standard_led:default
+ make mechlovin/adelais/standard_led/arm: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/mechlovin/adelais/standard_led/arm/rev2/.noci b/keyboards/mechlovin/adelais/standard_led/arm/rev2/.noci
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev2/.noci
diff --git a/keyboards/mechlovin/adelais/standard_led/rev2/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h
index 7c2c63ea21..7c2c63ea21 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev2/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev2/rev2.h b/keyboards/mechlovin/adelais/standard_led/arm/rev2/rev2.h
new file mode 100644
index 0000000000..45d48fac46
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev2/rev2.h
@@ -0,0 +1,77 @@
+/* Copyright 2020 Team 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
+
+#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev2/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rev2/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev2/rules.mk
diff --git a/keyboards/mechlovin/adelais/standard_led/rev3/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h
index 4d56fedf05..4d56fedf05 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev3/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev3/rev3.h b/keyboards/mechlovin/adelais/standard_led/arm/rev3/rev3.h
new file mode 100644
index 0000000000..45d48fac46
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev3/rev3.h
@@ -0,0 +1,77 @@
+/* Copyright 2020 Team 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
+
+#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/mechlovin/adelais/standard_led/rev3/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rev3/rules.mk
index 5af1ba8536..5af1ba8536 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev3/rules.mk
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev3/rules.mk
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/apm32f103/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rev4/apm32f103/rules.mk
new file mode 100644
index 0000000000..34cbe43495
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/apm32f103/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+BOOTLOADER = stm32duino
diff --git a/keyboards/mechlovin/adelais/standard_led/rev4/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h
index ca793f1fec..ca793f1fec 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev4/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/readme.md b/keyboards/mechlovin/adelais/standard_led/arm/rev4/readme.md
new file mode 100644
index 0000000000..8035195b0f
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/readme.md
@@ -0,0 +1,16 @@
+# Adelais rev.4
+
+![adelais](https://i.imgur.com/6U1IfZe.png)
+
+Compatible with TGR Alice and all clone variants.
+`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered. Adelais rev.4 support 3 rotary encoder, USB TypeC both side and reset footprint.
+
+* Keyboard Maintainer: [Team Mechlovin'](https://mechlovin.studio)
+* Hardware Supported: Adelais rev. 4
+* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-tgr-alice-clones-compatible-pcb?variant=34140335472779)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/adelais/standard_led/rev4: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/mechlovin/adelais/standard_led/arm/rev4/rev4.h b/keyboards/mechlovin/adelais/standard_led/arm/rev4/rev4.h
new file mode 100644
index 0000000000..45d48fac46
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/rev4.h
@@ -0,0 +1,77 @@
+/* Copyright 2020 Team 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
+
+#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K3D, K3C, K4D,\
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, K4D, K4E }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, KC_NO, KC_NO, K4E }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/mechlovin/adelais/standard_led/rev4/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rev4/rules.mk
index 5af1ba8536..5af1ba8536 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev4/rules.mk
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/rules.mk
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/stm32f303/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rev4/stm32f303/rules.mk
new file mode 100644
index 0000000000..7a846816d1
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/stm32f303/rules.mk
@@ -0,0 +1,6 @@
+# MCU name
+MCU = STM32F303
+BOARD = QMK_PROTON_C
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rules.mk
new file mode 100644
index 0000000000..2a0951eabd
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rules.mk
@@ -0,0 +1,2 @@
+WS2812_DRIVER = spi
+DEFAULT_FOLDER = mechlovin/adelais/standard_led/arm/rev2 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/.noci b/keyboards/mechlovin/adelais/standard_led/avr/.noci
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/.noci
diff --git a/keyboards/mechlovin/adelais/standard_led/rev4/readme.md b/keyboards/mechlovin/adelais/standard_led/avr/readme.md
index 333efbacdb..aaae225efb 100644
--- a/keyboards/mechlovin/adelais/standard_led/rev4/readme.md
+++ b/keyboards/mechlovin/adelais/standard_led/avr/readme.md
@@ -1,16 +1,16 @@
-# Adelais rev.4
+# Adelais AVR
![adelais](https://i.imgur.com/6U1IfZe.png)
Compatible with TGR Alice and all clone variants.
`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered. Adelais rev.4 support 3 rotary encoder, USB TypeC both side and reset footprint.
-* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
+* Keyboard Maintainer: [Team Mechlovin'](https://mechlovin.studio)
* Hardware Supported: Adelais
* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-tgr-alice-clones-compatible-pcb?variant=34140335472779)
Make example for this keyboard (after setting up your build environment):
- make mechlovin/adelais/standard_led:default
+ make mechlovin/adelais/standard_led/avr: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/mechlovin/adelais/standard_led/avr/rev1/config.h b/keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h
new file mode 100644
index 0000000000..9093d262e4
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h
@@ -0,0 +1,67 @@
+/*
+Copyright 2021 Mechlovin' Studio
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 PRODUCT_ID 0xAD04
+#define PRODUCT Adelais AVR
+/*
+ * 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 { B0, B1, B2, B3, B4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+#define LED_NUM_LOCK_PIN D7
+#define LED_CAPS_LOCK_PIN E6
+#define LED_SCROLL_LOCK_PIN F7
+#define LED_PIN_ON_STATE 1
+
+#define BACKLIGHT_PIN B5
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN E2
+#define RGBLED_NUM 23
+#define RGBLIGHT_LIMIT_VAL 255
+#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 ENCODERS_PAD_A { D3, D5, C7 }
+#define ENCODERS_PAD_B { D2, B6, C6 }
+#define ENCODER_RESOLUTION 4
+
+#define TAP_CODE_DELAY 10
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/rev1/matrix.c b/keyboards/mechlovin/adelais/standard_led/avr/rev1/matrix.c
new file mode 100644
index 0000000000..37046790fe
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/matrix.c
@@ -0,0 +1,363 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+Copyright 2019 Evy Dekkers
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "util.h"
+#include "matrix.h"
+#include "debounce.h"
+#include "quantum.h"
+
+#ifdef DIRECT_PINS
+static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS;
+#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+//static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif
+
+// matrix code
+
+#ifdef DIRECT_PINS
+
+static void init_pins(void) {
+ for (int row = 0; row < MATRIX_ROWS; row++) {
+ for (int col = 0; col < MATRIX_COLS; col++) {
+ pin_t pin = direct_pins[row][col];
+ if (pin != NO_PIN) {
+ setPinInputHigh(pin);
+ }
+ }
+ }
+}
+
+static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
+ matrix_row_t last_row_value = current_matrix[current_row];
+ current_matrix[current_row] = 0;
+
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+ pin_t pin = direct_pins[current_row][col_index];
+ if (pin != NO_PIN) {
+ current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
+ }
+ }
+
+ return (last_row_value != current_matrix[current_row]);
+}
+
+#elif (DIODE_DIRECTION == ROW2COL)
+
+/* Cols 0 - 14
+ * These columns use two 74HC138 3 to 8 bit demultiplexer. B0, F1 is the enable pin, must be set high (1) to use it.
+ *
+ * col / pin: PF4 PF1 PF0 PF5 PF6
+ * 0: 0 ── 0 ── 1 1 ── 0
+ * ─────────────────────────────────────
+ * 1: 0 ── 1 ── 0 1 ── 0
+ * ─────────────────────────────────────
+ * 2: 0 ── 1 ── 1 1 ── 0
+ * ─────────────────────────────────────
+ * 3: 1 ── 0 ── 0 1 ── 0
+ * ─────────────────────────────────────
+ * 4: 1 ── 0 ── 1 1 ── 0
+ * ─────────────────────────────────────
+ * 5: 1 ── 1 ── 1 1 ── 0
+ * ─────────────────────────────────────
+ * 6: 1 ── 1 ── 1 0 ── 1
+ * ─────────────────────────────────────
+ * 7: 0 ── 0 ── 0 0 ── 1
+ * ─────────────────────────────────────
+ * 8: 0 ── 0 ── 1 0 ── 1
+ * ─────────────────────────────────────
+ * 9: 0 ── 1 ── 0 0 ── 1
+ * ─────────────────────────────────────
+ *10: 0 ── 1 ── 1 0 ── 1
+ * ─────────────────────────────────────
+ *11: 1 ── 0 ── 0 0 ── 1
+ * ─────────────────────────────────────
+ *12: 1 ── 0 ── 1 0 ── 1
+ * ─────────────────────────────────────
+ *13: 1 ── 1 ── 0 0 ── 1
+ * ─────────────────────────────────────
+ *14: 0 ── 0 ── 0 1 ── 0
+ *
+ */
+static void select_col(uint8_t col) {
+ switch (col) {
+ case 0:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinHigh(F5);
+ break;
+ case 1:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinHigh(F5);
+ break;
+ case 2:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinHigh(F5);
+ break;
+ case 3:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinHigh(F5);
+ break;
+ case 4:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinHigh(F5);
+ break;
+ case 5:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinHigh(F5);
+ break;
+ case 6:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinHigh(F6);
+ break;
+ case 7:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinHigh(F6);
+ break;
+ case 8:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinHigh(F6);
+ break;
+ case 9:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinHigh(F6);
+ break;
+ case 10:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinHigh(F6);
+ break;
+ case 11:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinHigh(F6);
+ break;
+ case 12:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinHigh(F6);
+ break;
+ case 13:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinHigh(F6);
+ break;
+ case 14:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinHigh(F5);
+ break;
+ }
+}
+
+static void unselect_col(uint8_t col) {
+ switch (col) {
+ case 0:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinLow(F5);
+ break;
+ case 1:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinLow(F5);
+ break;
+ case 2:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinLow(F5);
+ break;
+ case 3:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinLow(F5);
+ break;
+ case 4:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinLow(F5);
+ break;
+ case 5:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinLow(F5);
+ break;
+ case 6:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinLow(F6);
+ break;
+ case 7:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinLow(F6);
+ break;
+ case 8:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinLow(F6);
+ break;
+ case 9:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinLow(F6);
+ break;
+ case 10:
+ writePinHigh(F4);
+ writePinLow(F1);
+ writePinLow(F0);
+ writePinLow(F6);
+ break;
+ case 11:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinLow(F6);
+ break;
+ case 12:
+ writePinLow(F4);
+ writePinHigh(F1);
+ writePinLow(F0);
+ writePinLow(F6);
+ break;
+ case 13:
+ writePinLow(F4);
+ writePinLow(F1);
+ writePinHigh(F0);
+ writePinLow(F6);
+ break;
+ case 14:
+ writePinHigh(F4);
+ writePinHigh(F1);
+ writePinHigh(F0);
+ writePinLow(F5);
+ break;
+ }
+}
+
+static void unselect_cols(void) {
+
+ //Demultiplexer
+ writePinHigh(F0);
+ writePinHigh(F1);
+ writePinHigh(F4);
+ writePinLow(F5);
+ writePinLow(F6);
+}
+
+static void init_pins(void) {
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+ setPinOutput(F0);
+ setPinOutput(F1);
+ setPinOutput(F4);
+ setPinOutput(F5);
+ setPinOutput(F6);
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
+ bool matrix_changed = false;
+
+ // Select col and wait for col selecton to stabilize
+ select_col(current_col);
+ wait_us(30);
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[row_index];
+
+ // Check row pin state
+ if (readPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
+ }
+
+ // Determine if the matrix changed state
+ if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) {
+ matrix_changed = true;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+
+ return matrix_changed;
+}
+
+#endif
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool changed = false;
+
+#if defined(DIRECT_PINS) || (DIODE_DIRECTION == ROW2COL)
+ // Set col, read rows
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+ changed |= read_rows_on_col(current_matrix, current_col);
+ }
+#endif
+
+ return changed;
+}
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/rev1/readme.md b/keyboards/mechlovin/adelais/standard_led/avr/rev1/readme.md
new file mode 100644
index 0000000000..9d7d7dbf20
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/readme.md
@@ -0,0 +1,16 @@
+# Adelais AVR rev. 1
+
+![adelais](https://i.imgur.com/6U1IfZe.png)
+
+Compatible with TGR Alice and all clone variants.
+`standard_led` (Adelais) comes with backlight and RGB underglow LEDs pre-soldered. Adelais rev.5 support 3 rotary encoder, USB TypeC both side and reset button.
+
+* Keyboard Maintainer: [Team Mechlovin'](mechlovin.studio)
+* Hardware Supported: Adelais
+* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio/collections/pcb/products/adelais-tgr-alice-clones-compatible-pcb?variant=34140335472779)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/adelais/standard_led/avr/rev1: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/mechlovin/adelais/standard_led/avr/rev1/rev1.h b/keyboards/mechlovin/adelais/standard_led/avr/rev1/rev1.h
new file mode 100644
index 0000000000..7cc7add2c6
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/rev1.h
@@ -0,0 +1,77 @@
+/* Copyright 2020 Team 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
+
+#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D, K0E,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K4C, K3C, K3D,\
+ K40, K42, K44, K46, K48, K4A, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, KC_NO }, \
+}
+
+#define LAYOUT_alice( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07,K08,K09, K0A, K0B, K0C, K0D,\
+ K2E, K10, K11, K12, K13, K14, K15, K16,K17,K18, K19, K1A, K1B, K1C, K1D,\
+ K3E, K20, K21, K22, K23, K24, K25, K26,K27,K28, K29, K2A, K2B, K2D,\
+ K30, K32, K33, K34, K35, K36, K37,K38,K39, K3A, K3B, K4C, K3C, K3D,\
+ K40, K42, K44, K46, K48, K4A, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, KC_NO }, \
+}
+
+#define LAYOUT_alice_split_bs_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K4C, K3C, \
+ K40, K42, K44, K46, K48, K4A, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, KC_NO }, \
+}
+
+#define LAYOUT_alice_full_rshift( \
+ K1E, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K2E, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K3E, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K4C, K3C, K3D, \
+ K40, K42, K44, K46, K48, K4A, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E }, \
+ { K40, KC_NO, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, KC_NO }, \
+}
+
+#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/rev1/rules.mk b/keyboards/mechlovin/adelais/standard_led/avr/rev1/rules.mk
new file mode 100644
index 0000000000..0bba0b6eaf
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/rules.mk
@@ -0,0 +1,13 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/rules.mk b/keyboards/mechlovin/adelais/standard_led/avr/rules.mk
new file mode 100644
index 0000000000..f33198890d
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rules.mk
@@ -0,0 +1,2 @@
+
+DEFAULT_FOLDER = mechlovin/adelais/standard_led/avr/rev1 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/rules.mk b/keyboards/mechlovin/adelais/standard_led/rules.mk
index b4523dbf37..b3c522ca06 100644
--- a/keyboards/mechlovin/adelais/standard_led/rules.mk
+++ b/keyboards/mechlovin/adelais/standard_led/rules.mk
@@ -1,3 +1,5 @@
-RGBLIGHT_ENABLE = yes
-WS2812_DRIVER = spi
-DEFAULT_FOLDER = mechlovin/adelais/standard_led/rev2 \ No newline at end of file
+
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+DEFAULT_FOLDER = mechlovin/adelais/standard_led/arm/rev2
diff --git a/keyboards/mechlovin/delphine/rgb_led/config.h b/keyboards/mechlovin/delphine/rgb_led/config.h
index 9a653d7595..edb476ecb7 100644
--- a/keyboards/mechlovin/delphine/rgb_led/config.h
+++ b/keyboards/mechlovin/delphine/rgb_led/config.h
@@ -33,10 +33,7 @@
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define DRIVER_ADDR_1 0b1110110
-#define DRIVER_ADDR_2 0b1110100
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 25
-#define DRIVER_2_LED_TOTAL 0
#define DRIVER_LED_TOTAL 25
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/config.h b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
index 76c6e0db73..8cef83f897 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/config.h
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
@@ -44,8 +44,6 @@
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define DRIVER_ADDR_1 0b0110010
-#define DRIVER_ADDR_2 0b0110010 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 91
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 91
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/mechmini/mechmini.h b/keyboards/mechmini/mechmini.h
index 637021cd20..cbd405285f 100644
--- a/keyboards/mechmini/mechmini.h
+++ b/keyboards/mechmini/mechmini.h
@@ -14,17 +14,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef MECHMINI_H
-#define MECHMINI_H
+#pragma once
#include "quantum.h"
-#ifdef KEYBOARD_mechmini_v1
- #include "v1.h"
-#endif
-
-#ifdef KEYBOARD_mechmini_v2
- #include "v2.h"
-#endif
-
+#if defined(KEYBOARD_mechmini_v1)
+# include "v1.h"
+#elif defined(KEYBOARD_mechmini_v2)
+# include "v2.h"
#endif
diff --git a/keyboards/mechmini/v2/config.h b/keyboards/mechmini/v2/config.h
index c19e030bf4..7936caef00 100755
--- a/keyboards/mechmini/v2/config.h
+++ b/keyboards/mechmini/v2/config.h
@@ -12,8 +12,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/>.
*/
-#ifndef V2_CONFIG_H
-#define V2_CONFIG_H
+
+#pragma once
#include "config_common.h"
@@ -62,5 +62,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/mechmini/v2/v2.h b/keyboards/mechmini/v2/v2.h
index 67a13abbb5..a0a620675e 100755
--- a/keyboards/mechmini/v2/v2.h
+++ b/keyboards/mechmini/v2/v2.h
@@ -13,57 +13,56 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef V2_H
-#define V2_H
+#pragma once
#include "../mechmini.h"
+#define XXX KC_NO
+
#define LAYOUT_ortho( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT_625_space( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K111, \
- K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K306, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1B, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k36, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO, K111 }, \
- { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, KC_NO, KC_NO, KC_NO, K306, KC_NO, KC_NO, KC_NO, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, XXX, XXX, XXX, k36, XXX, XXX, XXX, k3A, k3B } \
}
#define LAYOUT_split_space( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K111, \
- K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K304, K307, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1B, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k34, k37, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO, K111 }, \
- { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, KC_NO, K304, KC_NO, KC_NO, K307, KC_NO, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1B }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, XXX, k34, XXX, XXX, k37, XXX, k39, k3A, k3B } \
}
#define LAYOUT_2u_space_ortho( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K305, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3A, k3B } \
}
-
-#endif
diff --git a/keyboards/mehkee96/mehkee96.h b/keyboards/mehkee96/mehkee96.h
index 1e1eb44a64..a92e7ffe0f 100644
--- a/keyboards/mehkee96/mehkee96.h
+++ b/keyboards/mehkee96/mehkee96.h
@@ -1,24 +1,23 @@
-#ifndef KEYMAP_COMMON_H
-#define KEYMAP_COMMON_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE2, KD0, K67, K87, K97, \
- K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, K64, K74, K84, K94, \
- K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K63, K73, K83, K93, \
- K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, K62, K72, K82, K92, \
- K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, K86, K61, K71, K81, K91, \
- K00, K10, K20, K56, K57, KA0, KB0, K66, K76, K96, K60, K80, K90 \
+ k50, k52, k53, k54, k55, k60, k6A, k7A, k70, k5B, k5C, k5D, k5E, k1D, k2E, k0D, k76, k78, k79, \
+ k40, k41, k42, k43, k44, k45, k61, k6B, k7B, k71, k4A, k4B, k4C, k4E, k46, k47, k48, k49, \
+ k30, k31, k32, k33, k34, k35, k62, k6C, k7C, k72, k3A, k3B, k3C, k3D, k36, k37, k38, k39, \
+ k20, k21, k22, k23, k24, k25, k63, k6D, k7D, k73, k2A, k2B, k2D, k26, k27, k28, k29, \
+ k10, k11, k12, k13, k14, k15, k64, k6E, k7E, k74, k1A, k1B, k68, k16, k17, k18, k19, \
+ k00, k01, k02, k65, k75, k0A, k0B, k66, k67, k69, k06, k08, k09 \
) { \
- { K00, K10, K20, KC_NO, KC_NO, KC_NO, K60, KC_NO, K80, K90, KA0, KB0, KC_NO, KD0, KC_NO }, \
- { K01, K11, K21, K31, K41, K51, K61, K71, K81, K91, KA1, KB1, KC_NO, KD1, KC_NO }, \
- { K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC_NO, KD2, KE2 }, \
- { K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3, KC_NO }, \
- { K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4, KB4, KC4, KC_NO, KE4 }, \
- { K05, KC_NO, K25, K35, K45, K55, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KB5, KC5, KD5, KE5 }, \
- { K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6, KE6 }, \
- { K07, K17, K27, K37, K47, K57, K67, KC_NO,K87, K97, KA7, KB7, KC7, KD7, KE7 } \
+ { k00, k01, k02, XXX, XXX, XXX, k06, XXX, k08, k09, k0A, k0B, XXX, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, XXX, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, XXX, k4E }, \
+ { k50, XXX, k52, k53, k54, k55, XXX, XXX, XXX, XXX, XXX, k5B, k5C, k5D, k5E }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E }, \
+ { k70, k71, k72, k73, k74, k75, k76, XXX, k78, k79, k7A, k7B, k7C, k7D, k7E } \
}
-
-#endif
diff --git a/keyboards/meira/config.h b/keyboards/meira/config.h
index 4d864a8a76..999ab1bf8a 100644
--- a/keyboards/meira/config.h
+++ b/keyboards/meira/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_NUM 15 // Number of LEDs
#endif
-
-#endif
diff --git a/keyboards/meira/featherble/config.h b/keyboards/meira/featherble/config.h
index 61f90d46a0..94bef3b330 100644
--- a/keyboards/meira/featherble/config.h
+++ b/keyboards/meira/featherble/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef FEATHERBLECONFIG_H
-#define FEATHERBLECONFIG_H
+#pragma once
#include "config_common.h"
@@ -96,5 +95,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/meira/featherble/rules.mk b/keyboards/meira/featherble/rules.mk
index b0295ced77..d3e985e8c2 100644
--- a/keyboards/meira/featherble/rules.mk
+++ b/keyboards/meira/featherble/rules.mk
@@ -2,4 +2,4 @@
F_CPU = 8000000
BLUETOOTH_ENABLE = yes
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/meira/issi.h b/keyboards/meira/issi.h
index 51777f6ee3..74379ddbc8 100755
--- a/keyboards/meira/issi.h
+++ b/keyboards/meira/issi.h
@@ -1,6 +1,6 @@
+#pragma once
+
#ifdef ISSI_ENABLE
-#ifndef ISSI_H
-#define ISSI_H
typedef struct ISSIDeviceStruct{
uint8_t fn_dirty; // function registers need to be resent
@@ -37,4 +37,3 @@ void activateLED(uint8_t matrix, uint8_t cx, uint8_t cy, uint8_t pwm);
void update_issi(uint8_t device_addr, uint8_t blocking);
#endif
-#endif \ No newline at end of file
diff --git a/keyboards/meira/lighting.h b/keyboards/meira/lighting.h
index dc55b70ef9..42fee8ac92 100755
--- a/keyboards/meira/lighting.h
+++ b/keyboards/meira/lighting.h
@@ -1,9 +1,6 @@
-#ifndef LIGHTING_H
-#define LIGHTING_H
+#pragma once
void led_test(void);
void force_issi_refresh(void);
void set_backlight(uint8_t level);
void set_backlight_by_keymap(uint8_t col, uint8_t row);
-
-#endif
diff --git a/keyboards/meira/promicro/config.h b/keyboards/meira/promicro/config.h
index 4682a4104c..bbdaa9dbd8 100644
--- a/keyboards/meira/promicro/config.h
+++ b/keyboards/meira/promicro/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PROMICROCONFIG_H
-#define PROMICROCONFIG_H
+#pragma once
#include "config_common.h"
@@ -87,5 +86,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/melgeek/mach80/rev1/config.h b/keyboards/melgeek/mach80/rev1/config.h
index e3ae4de76d..868832d808 100755
--- a/keyboards/melgeek/mach80/rev1/config.h
+++ b/keyboards/melgeek/mach80/rev1/config.h
@@ -34,8 +34,7 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
-#define DRIVER_1_LED_TOTAL 97
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 97
#define DRIVER_INDICATOR_LED_TOTAL 3
diff --git a/keyboards/melgeek/mj61/config.h b/keyboards/melgeek/mj61/config.h
index 6ba19dd757..313c4473bc 100644
--- a/keyboards/melgeek/mj61/config.h
+++ b/keyboards/melgeek/mj61/config.h
@@ -47,5 +47,4 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
diff --git a/keyboards/melgeek/mj61/rev1/config.h b/keyboards/melgeek/mj61/rev1/config.h
index 9586a6930d..9d73a4fe96 100644
--- a/keyboards/melgeek/mj61/rev1/config.h
+++ b/keyboards/melgeek/mj61/rev1/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 63
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 63
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj61/rev2/config.h b/keyboards/melgeek/mj61/rev2/config.h
index e6c6e9610e..616426df65 100644
--- a/keyboards/melgeek/mj61/rev2/config.h
+++ b/keyboards/melgeek/mj61/rev2/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 71
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 71
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj63/config.h b/keyboards/melgeek/mj63/config.h
index 46d3b0fb7b..0292fa6461 100644
--- a/keyboards/melgeek/mj63/config.h
+++ b/keyboards/melgeek/mj63/config.h
@@ -47,5 +47,4 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
diff --git a/keyboards/melgeek/mj63/rev1/config.h b/keyboards/melgeek/mj63/rev1/config.h
index 1f6914f661..75f7da43a6 100644
--- a/keyboards/melgeek/mj63/rev1/config.h
+++ b/keyboards/melgeek/mj63/rev1/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 65
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 65
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj63/rev2/config.h b/keyboards/melgeek/mj63/rev2/config.h
index e6c6e9610e..616426df65 100644
--- a/keyboards/melgeek/mj63/rev2/config.h
+++ b/keyboards/melgeek/mj63/rev2/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 71
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 71
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/config.h b/keyboards/melgeek/mj64/config.h
index 920d34acd5..c3741bc062 100644
--- a/keyboards/melgeek/mj64/config.h
+++ b/keyboards/melgeek/mj64/config.h
@@ -47,5 +47,4 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
diff --git a/keyboards/melgeek/mj64/rev1/config.h b/keyboards/melgeek/mj64/rev1/config.h
index fb45ef3582..db846cb011 100644
--- a/keyboards/melgeek/mj64/rev1/config.h
+++ b/keyboards/melgeek/mj64/rev1/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 64
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 64
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/rev2/config.h b/keyboards/melgeek/mj64/rev2/config.h
index 8af6833b21..fbe170f18e 100644
--- a/keyboards/melgeek/mj64/rev2/config.h
+++ b/keyboards/melgeek/mj64/rev2/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 66
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 66
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/rev3/config.h b/keyboards/melgeek/mj64/rev3/config.h
index 26909d5598..dfde77f24a 100644
--- a/keyboards/melgeek/mj64/rev3/config.h
+++ b/keyboards/melgeek/mj64/rev3/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 72
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 72
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj65/config.h b/keyboards/melgeek/mj65/config.h
index 399c243ac6..bf8ca7c2c3 100644
--- a/keyboards/melgeek/mj65/config.h
+++ b/keyboards/melgeek/mj65/config.h
@@ -47,5 +47,4 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
diff --git a/keyboards/melgeek/mj65/rev3/config.h b/keyboards/melgeek/mj65/rev3/config.h
index 7955f4be97..d9a8c5a815 100644
--- a/keyboards/melgeek/mj65/rev3/config.h
+++ b/keyboards/melgeek/mj65/rev3/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 76
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 76
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj6xy/info.json b/keyboards/melgeek/mj6xy/info.json
index 7465ed7304..712b97295c 100755
--- a/keyboards/melgeek/mj6xy/info.json
+++ b/keyboards/melgeek/mj6xy/info.json
@@ -3266,7 +3266,6 @@
{"x": 10.5, "y": 1},
{"x": 11.5, "y": 1},
{"x": 12.5, "y": 1},
- {"x": 13.5, "y": 1, "w": 1.5},
{"x": 0, "y": 2, "w": 1.75},
{"x": 1.75, "y": 2},
@@ -3413,7 +3412,6 @@
{"x": 10.5, "y": 1},
{"x": 11.5, "y": 1},
{"x": 12.5, "y": 1},
- {"x": 13.5, "y": 1, "w": 1.5},
{"x": 0, "y": 2, "w": 1.75},
{"x": 1.75, "y": 2},
diff --git a/keyboards/melgeek/mojo68/config.h b/keyboards/melgeek/mojo68/config.h
index c4c1dbb0b7..923c15b06a 100755
--- a/keyboards/melgeek/mojo68/config.h
+++ b/keyboards/melgeek/mojo68/config.h
@@ -47,5 +47,4 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
diff --git a/keyboards/melgeek/mojo68/rev1/config.h b/keyboards/melgeek/mojo68/rev1/config.h
index aed2a45c37..74a7e3dc26 100755
--- a/keyboards/melgeek/mojo68/rev1/config.h
+++ b/keyboards/melgeek/mojo68/rev1/config.h
@@ -34,6 +34,5 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 68
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 68
#define DRIVER_INDICATOR_LED_TOTAL 3
diff --git a/keyboards/melgeek/mojo75/config.h b/keyboards/melgeek/mojo75/config.h
index d5bb4b4547..34f64e844e 100644
--- a/keyboards/melgeek/mojo75/config.h
+++ b/keyboards/melgeek/mojo75/config.h
@@ -48,5 +48,4 @@
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
diff --git a/keyboards/melgeek/mojo75/rev1/config.h b/keyboards/melgeek/mojo75/rev1/config.h
index c841c96fde..eaac850b6d 100644
--- a/keyboards/melgeek/mojo75/rev1/config.h
+++ b/keyboards/melgeek/mojo75/rev1/config.h
@@ -34,7 +34,6 @@
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
-#define DRIVER_1_LED_TOTAL 92
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 92
#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/z70ultra/config.h b/keyboards/melgeek/z70ultra/config.h
index e4530e2eaa..d01d0222ce 100644
--- a/keyboards/melgeek/z70ultra/config.h
+++ b/keyboards/melgeek/z70ultra/config.h
@@ -46,8 +46,6 @@
//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 69
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 69
#define DRIVER_INDICATOR_LED_TOTAL 6
diff --git a/keyboards/meme/config.h b/keyboards/meme/config.h
index 34624d2b6a..0757846f57 100644
--- a/keyboards/meme/config.h
+++ b/keyboards/meme/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -108,5 +107,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/meme/meme.h b/keyboards/meme/meme.h
index 4c4b29a046..36c533ea9d 100644
--- a/keyboards/meme/meme.h
+++ b/keyboards/meme/meme.h
@@ -13,90 +13,85 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef MEME_H
-#define MEME_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_spicy( \
- K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K76, K67, K77, \
- K80, K90, K81, K92, K85, K95, K86, K96, K87, K97 \
-)\
-{\
- {K00, K01, K02, K03, K04, K05, K06, K07}, \
- {K10, K11, K12, K13, K14, K15, K16, K17}, \
- {K20, K21, K22, K23, K24, K25, K26, KC_NO}, \
- {K30, K31, K32, K33, K34, K35, K36, K37}, \
- {K40, K41, K42, K43, K44, K45, KC_NO, KC_NO}, \
- {K50, K51, K52, K53, K54, K55, K56, K57}, \
- {K60, K61, K62, K63, K64, K65, KC_NO, K67}, \
- {K70, K71, K72, K73, K74, KC_NO, K76, K77}, \
- {K80, K81, KC_NO, KC_NO, KC_NO, K85, K86, K87}, \
- {K90, KC_NO, K92, KC_NO, KC_NO, K95, K96, K97}, \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k57, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k76, k67, k77, \
+ k80, k90, k81, k92, k85, k95, k86, k96, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, XXX, k67 }, \
+ { k70, k71, k72, k73, k74, XXX, k76, k77 }, \
+ { k80, k81, XXX, XXX, XXX, k85, k86, k87 }, \
+ { k90, XXX, k92, XXX, XXX, k95, k96, k97 } \
}
#define LAYOUT_normie( \
- K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K07, K17, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K76, K67, K77, \
- K80, K90, K81, K92, K85, K95, K86, K96, K87, K97 \
-)\
-{\
- {K00, K01, K02, K03, K04, K05, K06, K07}, \
- {K10, K11, K12, K13, K14, K15, KC_NO, K17}, \
- {K20, K21, K22, K23, K24, K25, K26, KC_NO}, \
- {K30, K31, K32, K33, K34, K35, K36, K37}, \
- {K40, K41, K42, K43, K44, K45, KC_NO, KC_NO}, \
- {K50, K51, K52, K53, K54, K55, K56, K57}, \
- {K60, K61, K62, K63, K64, K65, KC_NO, K67}, \
- {K70, K71, K72, K73, K74, KC_NO, K76, K77}, \
- {K80, K81, KC_NO, KC_NO, KC_NO, K85, K86, K87}, \
- {K90, KC_NO, K92, KC_NO, KC_NO, K95, K96, K97}, \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k07, k17, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k57, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k76, k67, k77, \
+ k80, k90, k81, k92, k85, k95, k86, k96, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, XXX, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, XXX, k67 }, \
+ { k70, k71, k72, k73, k74, XXX, k76, k77 }, \
+ { k80, k81, XXX, XXX, XXX, k85, k86, k87 }, \
+ { k90, XXX, k92, XXX, XXX, k95, k96, k97 } \
}
#define LAYOUT_dank( \
- K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K07, K17, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K76, K67, K77, \
- K80, K90, K81, K92, K85, K86, K96, K87, K97 \
-)\
-{\
- {K00, K01, K02, K03, K04, K05, K06, K07}, \
- {K10, K11, K12, K13, K14, K15, KC_NO, K17}, \
- {K20, K21, K22, K23, K24, K25, K26, KC_NO}, \
- {K30, K31, K32, K33, K34, K35, K36, K37}, \
- {K40, K41, K42, K43, K44, K45, KC_NO, KC_NO}, \
- {K50, K51, K52, K53, K54, K55, K56, K57}, \
- {K60, K61, K62, K63, K64, K65, KC_NO, K67}, \
- {K70, K71, K72, K73, K74, KC_NO, K76, K77}, \
- {K80, K81, KC_NO, KC_NO, KC_NO, K85, K86, K87}, \
- {K90, KC_NO, K92, KC_NO, KC_NO, KC_NO, K96, K97}, \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k07, k17, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k57, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k76, k67, k77, \
+ k80, k90, k81, k92, k85, k86, k96, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, XXX, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, XXX, k67 }, \
+ { k70, k71, k72, k73, k74, XXX, k76, k77 }, \
+ { k80, k81, XXX, XXX, XXX, k85, k86, k87 }, \
+ { k90, XXX, k92, XXX, XXX, XXX, k96, k97 } \
}
#define LAYOUT_meme( \
- K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K76, K67, K77, \
- K80, K90, K81, K92, K85, K86, K96, K87, K97 \
-)\
-{\
- {K00, K01, K02, K03, K04, K05, K06, K07}, \
- {K10, K11, K12, K13, K14, K15, K16, K17}, \
- {K20, K21, K22, K23, K24, K25, K26, KC_NO}, \
- {K30, K31, K32, K33, K34, K35, K36, K37}, \
- {K40, K41, K42, K43, K44, K45, KC_NO, KC_NO}, \
- {K50, K51, K52, K53, K54, K55, K56, K57}, \
- {K60, K61, K62, K63, K64, K65, KC_NO, K67}, \
- {K70, K71, K72, K73, K74, KC_NO, K76, K77}, \
- {K80, K81, KC_NO, KC_NO, KC_NO, K85, K86, K87}, \
- {K90, KC_NO, K92, KC_NO, KC_NO, KC_NO, K96, K97}, \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k56, k57, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k76, k67, k77, \
+ k80, k90, k81, k92, k85, k86, k96, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, XXX, k67 }, \
+ { k70, k71, k72, k73, k74, XXX, k76, k77 }, \
+ { k80, k81, XXX, XXX, XXX, k85, k86, k87 }, \
+ { k90, XXX, k92, XXX, XXX, XXX, k96, k97 } \
}
-
-
-#endif
diff --git a/keyboards/miller/gm862/config.h b/keyboards/miller/gm862/config.h
index e6e1b4c1df..7c4bfacd43 100644
--- a/keyboards/miller/gm862/config.h
+++ b/keyboards/miller/gm862/config.h
@@ -55,8 +55,6 @@
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 62
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 62
#endif
diff --git a/keyboards/miniaxe/miniaxe.h b/keyboards/miniaxe/miniaxe.h
index b6a6051123..fc23865c36 100644
--- a/keyboards/miniaxe/miniaxe.h
+++ b/keyboards/miniaxe/miniaxe.h
@@ -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/>.
*/
-#ifndef MINIAXE_H
-#define MINIAXE_H
+
+#pragma once
#include "quantum.h"
@@ -31,22 +31,19 @@
#define ___ KC_NO
#define LAYOUT_split_3x5_3( \
- L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
- L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
- L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
- L16, L17, L18, R16, R17, R18 \
- ) \
- { \
- { L01, L02, L03, L04, L05 }, \
- { L06, L07, L08, L09, L10 }, \
- { L11, L12, L13, L14, L15 }, \
- { L16, L17, L18, ___, ___ }, \
- { R01, R02, R03, R04, R05 }, \
- { R06, R07, R08, R09, R10 }, \
- { R11, R12, R13, R14, R15 }, \
- { R16, R17, R18, ___, ___ } \
- }
-
-#endif
+ L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
+ L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
+ L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
+ L16, L17, L18, R16, R17, R18 \
+) { \
+ { L01, L02, L03, L04, L05 }, \
+ { L06, L07, L08, L09, L10 }, \
+ { L11, L12, L13, L14, L15 }, \
+ { L16, L17, L18, ___, ___ }, \
+ { R01, R02, R03, R04, R05 }, \
+ { R06, R07, R08, R09, R10 }, \
+ { R11, R12, R13, R14, R15 }, \
+ { R16, R17, R18, ___, ___ } \
+}
#define LAYOUT LAYOUT_split_3x5_3
diff --git a/keyboards/mitosis/config.h b/keyboards/mitosis/config.h
index 0e089269e8..94e84e680e 100644
--- a/keyboards/mitosis/config.h
+++ b/keyboards/mitosis/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -66,5 +65,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
UCSR1B = _BV(TXEN1) | _BV(RXEN1); \
/* 8-bit data */ \
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
-
-#endif
diff --git a/keyboards/mitosis/mitosis.h b/keyboards/mitosis/mitosis.h
index 80476e71c8..4b7d3a60c4 100644
--- a/keyboards/mitosis/mitosis.h
+++ b/keyboards/mitosis/mitosis.h
@@ -1,5 +1,4 @@
-#ifndef MITOSIS_H
-#define MITOSIS_H
+#pragma once
#include "quantum.h"
@@ -43,21 +42,21 @@
#define set_led_white PORTF |= (1<<LED_B) | (1<<LED_R) | (1<<LED_G)
*/
+#define XXX KC_NO
+
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
- k31, k32, k33, k34, k35, k36, k37, k38, \
- k41, k42, k43, k44, k45, k46, k47, k48 \
-) \
- { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
- { KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, KC_NO }, \
- { KC_NO, k41, k42, k43, k44, k45, k46, k47, k48, KC_NO } \
- }
-#endif
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
+ k31, k32, k33, k34, k35, k36, k37, k38, \
+ k41, k42, k43, k44, k45, k46, k47, k48 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37, k38, XXX }, \
+ { XXX, k41, k42, k43, k44, k45, k46, k47, k48, XXX } \
+}
diff --git a/keyboards/miuni32/config.h b/keyboards/miuni32/config.h
index d2b98a9284..c25dfcaf99 100644
--- a/keyboards/miuni32/config.h
+++ b/keyboards/miuni32/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -110,5 +109,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
-
-#endif
diff --git a/keyboards/miuni32/miuni32.h b/keyboards/miuni32/miuni32.h
index ff74675450..c95a37e2e8 100644
--- a/keyboards/miuni32/miuni32.h
+++ b/keyboards/miuni32/miuni32.h
@@ -1,28 +1,27 @@
-#ifndef MIUNI32_H
-#define MIUNI32_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
- K20, K21, K22, K23, K25, K26, K27, K28, K29, K2A \
- ) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A }, \
- { K20, K21, K22, K23, KC_NO, K25, K26, K27, K28, K29, K2A } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k25, k26, k27, k28, k29, k2A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, XXX, k25, k26, k27, k28, k29, k2A } \
}
#define LAYOUT_ortho_3x11( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
- ) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A } \
}
#define LAYOUT_all LAYOUT_ortho_3x11
-
-#endif
diff --git a/keyboards/mschwingen/modelm/post_rules.mk b/keyboards/mschwingen/modelm/post_rules.mk
new file mode 100644
index 0000000000..a1c2040f4c
--- /dev/null
+++ b/keyboards/mschwingen/modelm/post_rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(UART_DEBUG)), yes)
+ OPT_DEFS += -DUART_DEBUG
+endif
diff --git a/keyboards/mschwingen/modelm/rules.mk b/keyboards/mschwingen/modelm/rules.mk
index 11282805cf..5e88410862 100644
--- a/keyboards/mschwingen/modelm/rules.mk
+++ b/keyboards/mschwingen/modelm/rules.mk
@@ -35,8 +35,4 @@ OPT_DEFS += -DSLEEP_LED_ENABLE # we need our own sleep callbacks to turn of WS28
LTO_ENABLE = yes
-ifeq ($(strip $(UART_DEBUG)), yes)
- OPT_DEFS += -DUART_DEBUG
-endif
-
DEFAULT_FOLDER = mschwingen/modelm/led_wired
diff --git a/keyboards/mt40/config.h b/keyboards/mt40/config.h
index 84e1cb507c..a48d758e7f 100644
--- a/keyboards/mt40/config.h
+++ b/keyboards/mt40/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -117,5 +116,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/mt40/mt40.h b/keyboards/mt40/mt40.h
index c202d5f6c7..dc0de22b28 100644
--- a/keyboards/mt40/mt40.h
+++ b/keyboards/mt40/mt40.h
@@ -13,31 +13,30 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef MT40_H
-#define MT40_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
// This a shortcut to help you visually see your layout.
// The following is an example using the Planck MIT layout
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_planck_mit( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
- K30, K31, K32, K33, K34, K35, K37, K38, K39, K3A, K3B \
+ k40, k31, k32, k33, k34, k35, k52, k5C, k6C, k62, k3A, k4E, \
+ k30, k21, k22, k23, k24, k25, k53, k5D, k6D, k63, k2A, k2B, \
+ k10, k11, k12, k13, k14, k15, k54, k5E, k6E, k64, k1A, k66, \
+ k20, k00, k01, k02, k04, k05, k0B, k56, k58, k57, k59 \
) { \
- { K31, K32, K33, KC_NO, K34, K35, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K37, KC_NO, KC_NO, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, KC_NO, KC_NO, KC_NO, KC_NO, K2A, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K30, K11, K12, K13, K14, K15, KC_NO, KC_NO, KC_NO, KC_NO, K1A, K1B, KC_NO, KC_NO, KC_NO }, \
- { K10, K01, K02, K03, K04, K05, KC_NO, KC_NO, KC_NO, KC_NO, K0A, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K00, 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, K0B }, \
- { KC_NO, KC_NO, K06, K16, K26, K35, K38, K3A, K39, K3B, KC_NO, KC_NO, K07, K17, K27 }, \
- { KC_NO, KC_NO, K09, K19, K29, KC_NO, K2B, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K08, K18, K28 } \
+ { k00, k01, k02, XXX, k04, k05, XXX, XXX, XXX, XXX, XXX, k0B, XXX, XXX, XXX }, \
+ { k10, k11, k12, k13, k14, k15, XXX, XXX, XXX, XXX, k1A, XXX, XXX, XXX, XXX }, \
+ { k20, k21, k22, k23, k24, k25, XXX, XXX, XXX, XXX, k2A, k2B, XXX, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, XXX, XXX, XXX, XXX, k3A, XXX, XXX, XXX, XXX }, \
+ { k40, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k4E }, \
+ { XXX, XXX, k52, k53, k54, k05, k56, k57, k58, k59, XXX, XXX, k5C, k5D, k5E }, \
+ { XXX, XXX, k62, k63, k64, XXX, k66, XXX, XXX, XXX, XXX, XXX, k6C, k6D, k6E } \
}
#define LAYOUT LAYOUT_planck_mit
-
-#endif
diff --git a/keyboards/mt64rgb/config.h b/keyboards/mt64rgb/config.h
index 8574d72360..810285d1e0 100644
--- a/keyboards/mt64rgb/config.h
+++ b/keyboards/mt64rgb/config.h
@@ -54,11 +54,9 @@
#define RGB_MATRIX_LED_PROCESS_LIMIT 20
#define RGB_MATRIX_LED_FLUSH_LIMIT 26
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000
-#define DRIVER_COUNT 2
-#define DRIVER_1_LED_TOTAL 64
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 64
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
diff --git a/keyboards/mxss/config.h b/keyboards/mxss/config.h
index 8cb2156942..67f5b8fa27 100644
--- a/keyboards/mxss/config.h
+++ b/keyboards/mxss/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -87,5 +86,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
//#define FORCE_NKRO
-
-#endif
diff --git a/keyboards/mxss/rgblight.c b/keyboards/mxss/rgblight.c
index d2d79815cd..b2df351c55 100644
--- a/keyboards/mxss/rgblight.c
+++ b/keyboards/mxss/rgblight.c
@@ -23,10 +23,6 @@
#ifdef EEPROM_ENABLE
# include "eeprom.h"
#endif
-#ifdef STM32_EEPROM_ENABLE
-# include <hal.h>
-# include "eeprom_stm32.h"
-#endif
#include "wait.h"
#include "progmem.h"
#include "timer.h"
diff --git a/keyboards/namecard2x4/namecard2x4.h b/keyboards/namecard2x4/namecard2x4.h
index f2e27a0102..f3f6992703 100644
--- a/keyboards/namecard2x4/namecard2x4.h
+++ b/keyboards/namecard2x4/namecard2x4.h
@@ -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/>.
*/
-#ifndef NAMECARD2X4_H
-#define NAMECARD2X4_H
+
+#pragma once
#include "quantum.h"
@@ -24,10 +24,8 @@
// The second converts the arguments into a two-dimensional array
#define LAYOUT( \
k00, k01, k02, k03, \
- k10, k11, k12, k13 \
+ k10, k11, k12, k13 \
) { \
{ k00, k01, k02, k03 }, \
- { k10, k11, k12, k13 }, \
+ { k10, k11, k12, k13 } \
}
-
-#endif
diff --git a/keyboards/nek_type_a/mcp23017.h b/keyboards/nek_type_a/mcp23017.h
index 41c747beab..df1a305571 100644
--- a/keyboards/nek_type_a/mcp23017.h
+++ b/keyboards/nek_type_a/mcp23017.h
@@ -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/>.
*/
-#ifndef MAP23017_H
-#define MAP23017_H
+
+#pragma once
#define EXPANDER_ADDR 0x27
#define I2C_TIMEOUT 200 // milliseconds
@@ -67,5 +67,3 @@ void expander_init(void);
void expander_select(uint8_t pin);
void expander_unselect(uint8_t pin);
void expander_unselect_all(void);
-
-#endif \ No newline at end of file
diff --git a/keyboards/nek_type_a/nek_type_a.h b/keyboards/nek_type_a/nek_type_a.h
index 9bf6028cb9..78f019c0fd 100644
--- a/keyboards/nek_type_a/nek_type_a.h
+++ b/keyboards/nek_type_a/nek_type_a.h
@@ -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/>.
*/
-#ifndef NEK_TYPE_A_H
-#define NEK_TYPE_A_H
+
+#pragma once
#include "quantum.h"
#include <stdint.h>
@@ -39,20 +39,20 @@ extern bool i2c_initialized;
void init_expander(void);
+#define XXX KC_NO
+
#define LAYOUT( \
L12, L14, L15, L16, L17, R11, R12, R13, R14, R15, R16, R17, R18, R19, R1A, R1B, \
L21, L22, L23, L24, L25, L26, L27, R21, R22, R23, R24, R25, R26, R28, R29, R2A, R2B, \
L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, R37, R38, R39, R3A, R3B, \
- L41, L42, L43, L44, L45, L46, R41, R42, R43, R44, R45, R46, R48, \
- L51, L52, L53, L54, L55, L56, R51, R52, R53, R54, R55, R58, R5A, \
- L61, L62, L63, L65, R61, R63, R65, R66, R68, R69, R6A, R6B \
-) \
-{ \
- { KC_NO, L12, KC_NO, L14, L15, L16, L17, R11, R12, R13, R14, R15, R16, R17, R18, R19, R1A, R1B }, \
- { L21, L22, L23, L24, L25, L26, L27, R21, R22, R23, R24, R25, R26, KC_NO, R28, R29, R2A, R2B }, \
- { L31, L32, L33, L34, L35, L36, KC_NO, R31, R32, R33, R34, R35, R36, R37, R38, R39, R3A, R3B }, \
- { L41, L42, L43, L44, L45, L46, KC_NO, R41, R42, R43, R44, R45, R46, KC_NO, R48, KC_NO, KC_NO, KC_NO }, \
- { L51, L52, L53, L54, L55, L56, KC_NO, R51, R52, R53, R54, R55, KC_NO, KC_NO, R58, KC_NO, R5A, KC_NO }, \
- { L61, L62, L63, KC_NO, L65, KC_NO, KC_NO, R61, KC_NO, R63, KC_NO, R65, R66, KC_NO, R68, R69, R6A, R6B }, \
+ L41, L42, L43, L44, L45, L46, R41, R42, R43, R44, R45, R46, R48, \
+ L51, L52, L53, L54, L55, L56, R51, R52, R53, R54, R55, R58, R5A, \
+ L61, L62, L63, L65, R61, R63, R65, R66, R68, R69, R6A, R6B \
+) { \
+ { XXX, L12, XXX, L14, L15, L16, L17, R11, R12, R13, R14, R15, R16, R17, R18, R19, R1A, R1B }, \
+ { L21, L22, L23, L24, L25, L26, L27, R21, R22, R23, R24, R25, R26, XXX, R28, R29, R2A, R2B }, \
+ { L31, L32, L33, L34, L35, L36, XXX, R31, R32, R33, R34, R35, R36, R37, R38, R39, R3A, R3B }, \
+ { L41, L42, L43, L44, L45, L46, XXX, R41, R42, R43, R44, R45, R46, XXX, R48, XXX, XXX, XXX }, \
+ { L51, L52, L53, L54, L55, L56, XXX, R51, R52, R53, R54, R55, XXX, XXX, R58, XXX, R5A, XXX }, \
+ { L61, L62, L63, XXX, L65, XXX, XXX, R61, XXX, R63, XXX, R65, R66, XXX, R68, R69, R6A, R6B } \
}
-#endif
diff --git a/keyboards/nek_type_a/rules.mk b/keyboards/nek_type_a/rules.mk
index 55baa97712..311f5a77e2 100644
--- a/keyboards/nek_type_a/rules.mk
+++ b/keyboards/nek_type_a/rules.mk
@@ -18,10 +18,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = yes
DEBUG_ENABLE = yes
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
SRC += matrix.c mcp23017.c
diff --git a/keyboards/neson_design/n6/config.h b/keyboards/neson_design/n6/config.h
index d3b49becb3..4a9d3c56c6 100644
--- a/keyboards/neson_design/n6/config.h
+++ b/keyboards/neson_design/n6/config.h
@@ -59,9 +59,8 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
-#define DRIVER_1_LED_TOTAL 32
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_COUNT 1
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL)
+#define DRIVER_LED_TOTAL 32
#define CAPS_PIN F5
diff --git a/keyboards/newgame40/newgame40.h b/keyboards/newgame40/newgame40.h
index 6044f37657..e6146e4f14 100644
--- a/keyboards/newgame40/newgame40.h
+++ b/keyboards/newgame40/newgame40.h
@@ -1,19 +1,15 @@
-#ifndef NEWGAME40_H
-#define NEWGAME40_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_4x10( \
- k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
- k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
- k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, \
- k401, k402, k403, k404, k405, k406, k407, k408, k409, k410 \
-) \
-{ \
- {k101, k102, k103, k104, k105, k106, k107, k108, k109, k110}, \
- {k201, k202, k203, k204, k205, k206, k207, k208, k209, k210}, \
- {k301, k302, k303, k304, k305, k306, k307, k308, k309, k310}, \
- {k401, k402, k403, k404, k405, k406, k407, k408, k409, k410} \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 } \
}
-
-#endif
diff --git a/keyboards/newgame40/post_rules.mk b/keyboards/newgame40/post_rules.mk
new file mode 100644
index 0000000000..68229fe12b
--- /dev/null
+++ b/keyboards/newgame40/post_rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(IOS_DEVICE_ENABLE )), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+endif
diff --git a/keyboards/newgame40/rules.mk b/keyboards/newgame40/rules.mk
index 28039b7e57..12c3cef966 100644
--- a/keyboards/newgame40/rules.mk
+++ b/keyboards/newgame40/rules.mk
@@ -20,10 +20,6 @@ UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
IOS_DEVICE_ENABLE = no # connect to IOS Device
- ifeq ($(strip $(IOS_DEVICE_ENABLE )), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
- endif
-
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/noxary/x268/x268.h b/keyboards/noxary/x268/x268.h
index 9961b7dfdb..d2f63dc919 100644
--- a/keyboards/noxary/x268/x268.h
+++ b/keyboards/noxary/x268/x268.h
@@ -13,23 +13,23 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef X268_H
-#define X268_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, \
- K400, K401, K402, K406, K409, K410, K411, K412, K414, K415 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, \
+ k40, k41, k42, k46, k49, k4A, k4B, k4C, k4E, k4F \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, K315 }, \
- { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, K409, K410, K411, K412, KC_NO, K414, K415 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, k49, k4A, k4B, k4C, XXX, k4E, k4F } \
}
-
-#endif
diff --git a/keyboards/numatreus/post_rules.mk b/keyboards/numatreus/post_rules.mk
new file mode 100644
index 0000000000..1f49875d0f
--- /dev/null
+++ b/keyboards/numatreus/post_rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ OPT_DEFS += -DLED_ANIMATIONS
+endif
diff --git a/keyboards/numatreus/rules.mk b/keyboards/numatreus/rules.mk
index ce93d2ef34..8a1b3979f8 100644
--- a/keyboards/numatreus/rules.mk
+++ b/keyboards/numatreus/rules.mk
@@ -18,9 +18,5 @@ UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = no
LED_ANIMATIONS = no
-ifeq ($(strip $(LED_ANIMATIONS)), yes)
- OPT_DEFS += -DLED_ANIMATIONS
-endif
-
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ok60/config.h b/keyboards/ok60/config.h
index aafed8a407..faccfcc646 100644
--- a/keyboards/ok60/config.h
+++ b/keyboards/ok60/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -71,5 +70,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
-
-#endif
diff --git a/keyboards/ok60/ok60.h b/keyboards/ok60/ok60.h
index d64f951c42..4e6aeb2c35 100644
--- a/keyboards/ok60/ok60.h
+++ b/keyboards/ok60/ok60.h
@@ -1,77 +1,75 @@
-#ifndef OK60_H
-#define OK60_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_60_ansi( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
- K400, K401, K402, K406, K410, K411, K412, K413 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, KC_NO }, \
- { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO }, \
- { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_60_ansi_split_bksp_rshift( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K400, K401, K402, K406, K410, K411, K412, K413 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, KC_NO }, \
- { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
- { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_60_iso( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
- K400, K401, K402, K406, K410, K411, K412, K413 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO }, \
- { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_60_iso_split_rshift( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K400, K401, K402, K406, K410, K411, K412, K413 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC314 }, \
- { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_60_hhkb( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K401, K402, K406, K411, K412 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k41, k42, k46, k4B, k4C \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, KC_NO }, \
- { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
- { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, K412, KC_NO, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { XXX, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, XXX, XXX } \
}
-
-
-#endif
diff --git a/keyboards/omnikey_bh/config.h b/keyboards/omnikey_bh/config.h
index 272424cf9e..7d170077a9 100644
--- a/keyboards/omnikey_bh/config.h
+++ b/keyboards/omnikey_bh/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -46,5 +45,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/opendeck/32/rev1/config.h b/keyboards/opendeck/32/rev1/config.h
index 8b25ab2564..9c7d4ddd9f 100644
--- a/keyboards/opendeck/32/rev1/config.h
+++ b/keyboards/opendeck/32/rev1/config.h
@@ -36,8 +36,7 @@
// RGB matrix
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL (4 * 8 * 3)
-#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL)
+#define DRIVER_LED_TOTAL (4 * 8 * 3)
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_SPIRAL
#define RGB_MATRIX_DISABLE_KEYCODES
diff --git a/keyboards/org60/config.h b/keyboards/org60/config.h
index 8189bc0960..42dbb83169 100644
--- a/keyboards/org60/config.h
+++ b/keyboards/org60/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -72,5 +71,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE
#define TAPPING_TERM 200
-
-#endif
diff --git a/keyboards/org60/org60.h b/keyboards/org60/org60.h
index 8ee94179cb..34a41571f8 100644
--- a/keyboards/org60/org60.h
+++ b/keyboards/org60/org60.h
@@ -1,5 +1,4 @@
-#ifndef Org60_H
-#define Org60_H
+#pragma once
#include "quantum.h"
#include "led.h"
@@ -19,33 +18,33 @@ inline void org60_bl_led_on(void) { DDRF |= (1<<5); PORTF &= ~(1<<5); }
inline void org60_caps_led_off(void) { DDRB &= ~(1<<2); PORTB &= ~(1<<2); }
inline void org60_bl_led_off(void) { DDRF &= ~(1<<5); PORTF &= ~(1<<5); }
+#define XXX KC_NO
+
/* Org60 Keymap Definition Macro */
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K47, K3D, K3C, \
- K40, K41, K42, K45, K4A, K4B, K48, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k49, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k47, k3D, k3C, \
+ k40, k41, k42, k45, k4A, k4B, k48, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
- { K40, K41, K42, KC_NO,KC_NO,K45, KC_NO,K47, K48, K49, K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, k47, k48, k49, k4A, k4B, k4C, k4D } \
}
#define LAYOUT_60_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K41, K42, K45, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k41, k42, k45, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO,K2D }, \
- { K30, KC_NO,K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO,K3D }, \
- { K40, K41, K42, KC_NO,KC_NO,K45, KC_NO,KC_NO,KC_NO,KC_NO,K4A, K4B, K4C, K4D } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D }, \
+ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4A, k4B, k4C, k4D } \
}
-
-#endif
diff --git a/keyboards/owlab/voice65/hotswap/config.h b/keyboards/owlab/voice65/hotswap/config.h
index fc894bd3ce..7a389264db 100644
--- a/keyboards/owlab/voice65/hotswap/config.h
+++ b/keyboards/owlab/voice65/hotswap/config.h
@@ -77,10 +77,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define RGB_MATRIX_STARTUP_VAL 128
# define DRIVER_ADDR_1 0b0110000
-# define DRIVER_ADDR_2 0b0110000
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 67
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 67
#endif
/* Encoder */
diff --git a/keyboards/owlab/voice65/soldered/config.h b/keyboards/owlab/voice65/soldered/config.h
index e0e53a5d5d..9e5dc7bb18 100644
--- a/keyboards/owlab/voice65/soldered/config.h
+++ b/keyboards/owlab/voice65/soldered/config.h
@@ -76,10 +76,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define RGB_MATRIX_STARTUP_VAL 128
# define DRIVER_ADDR_1 0b0110000
-# define DRIVER_ADDR_2 0b0110000
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 71
-# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 71
#endif
/* Encoder */
diff --git a/keyboards/paladin64/paladin64.c b/keyboards/paladin64/paladin64.c
deleted file mode 100755
index 5ef78d5bf7..0000000000
--- a/keyboards/paladin64/paladin64.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "paladin64.h"
-
diff --git a/keyboards/paladin64/paladin64.h b/keyboards/paladin64/paladin64.h
deleted file mode 100755
index 9666b08988..0000000000
--- a/keyboards/paladin64/paladin64.h
+++ /dev/null
@@ -1,92 +0,0 @@
-#ifndef PALADIN64_H
-#define PALADIN64_H
-
-#include "quantum.h"
-
-#define LAYOUT_all( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
- K30, K40, K50, K60, K70, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_iso( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K70, K00, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { KC_NO, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_60_ansi( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K70, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, KC_NO, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_infinity( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
- K30, K40, K50, K60, K70, K00, K10, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, KC_NO, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-#define LAYOUT_aek_103( \
- K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K27, \
- K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
- K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
- K31, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, \
- K30, K40, K50, K60, K70, K00, K20 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { KC_NO, K11, K12, K13, K14, K15, K16, K17 }, \
- { K20, K21, KC_NO, K23, K24, K25, KC_NO, K27 }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, KC_NO, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, K56, K57 }, \
- { K60, K61, K62, K63, K64, K65, K66, K67 }, \
- { K70, K71, K72, K73, K74, K75, K76, K77 } \
-}
-
-
-#endif
diff --git a/keyboards/paladin64/readme.md b/keyboards/paladin64/readme.md
deleted file mode 100644
index 8d62bb6b71..0000000000
--- a/keyboards/paladin64/readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Paladin64 ALPS PCB by /u/iNachie
-
-Firmware for the Paladin64 ALPS64 PCB, with underglow and an optional
-trackpoint module.
-
-Keyboard Maintainer: [/u/iNachie](https://github.com/nachie)
-Hardware Supported: Paladin64 ALPS PCB by iNachie
-Hardware Availability: [/u/iNachie](https://www.reddit.com/user/inachie/)
-
-Make example for this keyboard (after setting up your build environment):
-
- make paladin64:default
-
-Or to make and flash:
-
- make paladin64:default:dfu
-
-
-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/paladin64/rules.mk b/keyboards/paladin64/rules.mk
deleted file mode 100755
index b25ab43119..0000000000
--- a/keyboards/paladin64/rules.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no
-RGBLIGHT_ENABLE = yes
-#PS2_MOUSE_ENABLE = yes
-#PS2_USE_USART = yes
-#PS2_USE_INT = yes
-
-LAYOUTS = 60_ansi
diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h
index c349c1106c..56793bab41 100644
--- a/keyboards/percent/canoe/config.h
+++ b/keyboards/percent/canoe/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CANOE_CONFIG_H
-#define CANOE_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_LEVELS 3
#define RGBLIGHT_ANIMATIONS
-
-#endif
diff --git a/keyboards/pinky/pinky.h b/keyboards/pinky/pinky.h
index 9cc5d8d589..67dfbe3370 100644
--- a/keyboards/pinky/pinky.h
+++ b/keyboards/pinky/pinky.h
@@ -13,17 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PINKY_H
-#define PINKY_H
-#include "quantum.h"
-
-#ifdef KEYBOARD_pinky_3
- #include "3.h"
-#endif
+#pragma once
-#ifdef KEYBOARD_pinky_4
- #include "4.h"
-#endif
+#include "quantum.h"
+#if defined(KEYBOARD_pinky_3)
+# include "3.h"
+#elif defined(KEYBOARD_pinky_4)
+# include "4.h"
#endif
diff --git a/keyboards/pizzakeyboards/pizza65/info.json b/keyboards/pizzakeyboards/pizza65/info.json
index 66c8e7512f..0cd80f3f97 100644
--- a/keyboards/pizzakeyboards/pizza65/info.json
+++ b/keyboards/pizzakeyboards/pizza65/info.json
@@ -264,7 +264,6 @@
{"label": "r2_11", "x": 10.5, "y": 1},
{"label": "r2_12", "x": 11.5, "y": 1},
{"label": "r2_13", "x": 12.5, "y": 1},
- {"label": "r2_14", "x": 13.5, "y": 1},
{"label": "r2_15", "x": 15, "y": 1},
{"label": "r3_01", "x": 0, "y": 2, "w": 1.75},
diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h
index 71111eca21..a86359327a 100644
--- a/keyboards/planck/config.h
+++ b/keyboards/planck/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -78,5 +77,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/planck/ez/config.h b/keyboards/planck/ez/config.h
index 4d1f1e92fe..504ab812e1 100644
--- a/keyboards/planck/ez/config.h
+++ b/keyboards/planck/ez/config.h
@@ -120,11 +120,9 @@
//#define WS2812_EXTERNAL_PULLUP
#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 47
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 47
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/planck/keymaps/aviator/config.h b/keyboards/planck/keymaps/aviator/config.h
index b2b3104501..c0060de141 100644
--- a/keyboards/planck/keymaps/aviator/config.h
+++ b/keyboards/planck/keymaps/aviator/config.h
@@ -1,9 +1,8 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
#include "config_common.h"
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define BACKLIGHT_BREATHING
#define BREATHING_PERIOD 3
#endif
@@ -40,5 +39,3 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
-
-#endif
diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h
index 4ec7d081ba..87953c339e 100644
--- a/keyboards/planck/keymaps/cbbrowne/config.h
+++ b/keyboards/planck/keymaps/cbbrowne/config.h
@@ -14,8 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
#ifndef NO_DEBUG
#define NO_DEBUG
@@ -28,7 +27,7 @@
#define LEADER_TIMEOUT 300
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define BACKLIGHT_BREATHING
#endif
@@ -42,6 +41,3 @@
* borrowed from basic keymap */
#define _____ KC_NO
-
-#endif
-
diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h
index 055d741c62..819cef60c6 100644
--- a/keyboards/planck/keymaps/khord/config.h
+++ b/keyboards/planck/keymaps/khord/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
#include "config_common.h"
@@ -12,7 +11,7 @@
}
#endif
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define BACKLIGHT_BREATHING
#endif
#define TAPPING_TERM 150
@@ -39,5 +38,3 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
-
-#endif
diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h
index fc7211fe6a..0fb08540d4 100644
--- a/keyboards/planck/keymaps/pvc/config.h
+++ b/keyboards/planck/keymaps/pvc/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
#include "config_common.h"
@@ -25,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 12
/* Planck PCB default pin-out */
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
#define UNUSED_PINS
@@ -68,7 +67,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Only print user print statements */
#define USER_PRINT
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define BACKLIGHT_BREATHING
#endif
@@ -78,4 +77,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-#endif
diff --git a/keyboards/planck/keymaps/zrichard/config.h b/keyboards/planck/keymaps/zrichard/config.h
index fb7ebb9885..d12c19065c 100755
--- a/keyboards/planck/keymaps/zrichard/config.h
+++ b/keyboards/planck/keymaps/zrichard/config.h
@@ -15,18 +15,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
#include "config_common.h"
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
/* Planck PCB default pin-out */
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
#define UNUSED_PINS
@@ -63,7 +61,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Only print user print statements */
#define USER_PRINT
-#ifndef LIGHT_CONFIG_H
+#ifndef KEYBOARD_planck_light
#define BACKLIGHT_BREATHING
#endif
@@ -73,5 +71,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/planck/light/config.h b/keyboards/planck/light/config.h
index ccf9f09843..8c55c3432f 100644
--- a/keyboards/planck/light/config.h
+++ b/keyboards/planck/light/config.h
@@ -1,5 +1,4 @@
-#ifndef LIGHT_CONFIG_H
-#define LIGHT_CONFIG_H
+#pragma once
#include "config_common.h"
@@ -39,6 +38,3 @@
#define DRIVER_1_LED_TOTAL 25
#define DRIVER_2_LED_TOTAL 24
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-
-#endif
diff --git a/keyboards/planck/light/light.h b/keyboards/planck/light/light.h
index f014c50171..623ffa707d 100644
--- a/keyboards/planck/light/light.h
+++ b/keyboards/planck/light/light.h
@@ -14,40 +14,35 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef LIGHT_H
-#define LIGHT_H
+#pragma once
#include "planck.h"
#include "rgb_matrix.h"
#define LAYOUT_planck_1x2uC( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT_ortho_4x12( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
-
-#endif
diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h
index bae075de10..aa70d46a8e 100644
--- a/keyboards/planck/rev6/config.h
+++ b/keyboards/planck/rev6/config.h
@@ -15,8 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV6_CONFIG_H
-#define REV6_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define PRODUCT_ID 0xA4F9
@@ -121,5 +120,3 @@
#define WS2812_DMA_CHANNEL 2
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#endif
diff --git a/keyboards/planck/rev6/rev6.h b/keyboards/planck/rev6/rev6.h
index 9fd51e70fe..9bf3603ed7 100644
--- a/keyboards/planck/rev6/rev6.h
+++ b/keyboards/planck/rev6/rev6.h
@@ -13,99 +13,92 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV6_H
-#define REV6_H
+#pragma once
#include "planck.h"
+#define XXX KC_NO
+
#define LAYOUT_planck_1x2uC( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, KC_NO } \
+ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+ k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+ k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+ k30, k31, k32, k73, k74, k70, k71, k72, k33, k34, k35 \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { k70, k71, k72, k73, k74, XXX } \
}
#define LAYOUT_planck_1x2uR( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { KC_NO, k37, k38, k33, k34, k35 } \
+ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+ k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+ k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+ k30, k31, k32, k73, k74, k75, k71, k72, k33, k34, k35 \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { XXX, k71, k72, k73, k74, k75 } \
}
#define LAYOUT_planck_1x2uL( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k35, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, KC_NO, k35 } \
+ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+ k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+ k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+ k30, k31, k32, k73, k75, k70, k71, k72, k33, k34, k35 \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { k70, k71, k72, k73, XXX, k75 } \
}
#define LAYOUT_planck_2x2u( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { KC_NO, k37, k38, k33, KC_NO, k35 } \
+ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+ k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+ k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+ k30, k31, k32, k73, k75, k71, k72, k33, k34, k35 \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { XXX, k71, k72, k73, XXX, k75 } \
}
#define LAYOUT_ortho_4x12( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
+ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \
+ k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \
+ k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \
+ k30, k31, k32, k73, k74, k75, k70, k71, k72, k33, k34, k35 \
+) { \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { k70, k71, k72, k73, k74, k75 } \
}
-
#define LAYOUT LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
-
-#endif
diff --git a/keyboards/playkbtw/pk60/config.h b/keyboards/playkbtw/pk60/config.h
index 6084f34197..0a6ee47d44 100644
--- a/keyboards/playkbtw/pk60/config.h
+++ b/keyboards/playkbtw/pk60/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -48,5 +47,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/playkbtw/pk60/pk60.h b/keyboards/playkbtw/pk60/pk60.h
index 4a7a8f3bf0..c92057c0a6 100644
--- a/keyboards/playkbtw/pk60/pk60.h
+++ b/keyboards/playkbtw/pk60/pk60.h
@@ -1,90 +1,89 @@
-#ifndef pk60_H
-#define pk60_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_60_ansi_split_bs_rshift( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
- K40, K41, K42, K47, K49, K4A, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k40, k41, k42, k47, k49, k4A, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, k49, k4A, XXX, k4C, k4D, XXX } \
}
#define LAYOUT_iso( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
- K40, K41, K42, K47, K49, K4A, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k40, k41, k42, k47, k49, k4A, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, KC_NO, K4C, K4D, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, k49, k4A, XXX, k4C, k4D, XXX } \
}
#define LAYOUT_225u_arrow( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
- K40, K41, K42, K47, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k40, k41, k42, k47, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, K4B, K4C, K4D, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, k49, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_2u_arrow( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K47, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k47, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, K49, K4A, K4B, K4C, K4D, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, k49, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_minila( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K43, K47, K48, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k47, k48, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, K43, KC_NO, KC_NO, KC_NO, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, XXX, XXX, XXX, k47, k48, k49, k4A, k4B, k4C, k4D, XXX } \
}
#define LAYOUT_all( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K43, K47, K48, K49, K4A, K4B, K4C, K4D \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k47, k48, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, K43, KC_NO, KC_NO, KC_NO, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, XXX, XXX, XXX, k47, k48, k49, k4A, k4B, k4C, k4D, XXX } \
}
-
-#endif \ No newline at end of file
diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h
index dfd0a8439a..8f72de9094 100644
--- a/keyboards/preonic/config.h
+++ b/keyboards/preonic/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -78,5 +77,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/preonic/keymaps/badger/keymap.c b/keyboards/preonic/keymaps/badger/keymap.c
index 495cf28c45..761beb861f 100644
--- a/keyboards/preonic/keymaps/badger/keymap.c
+++ b/keyboards/preonic/keymaps/badger/keymap.c
@@ -14,7 +14,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// if not REV3, just compile the default keymaps
-#ifndef REV3_CONFIG_H
+#ifndef KEYBOARD_preonic_rev3
#include "../default/keymap.c"
#else
diff --git a/keyboards/preonic/rev1/config.h b/keyboards/preonic/rev1/config.h
index 76b6465909..a1091b10ed 100644
--- a/keyboards/preonic/rev1/config.h
+++ b/keyboards/preonic/rev1/config.h
@@ -15,12 +15,9 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV1_CONFIG_H
-#define REV1_CONFIG_H
+#pragma once
#include "config_common.h"
#define DEVICE_VER 0x0001
#define PRODUCT_ID 0x67F3
-
-#endif \ No newline at end of file
diff --git a/keyboards/preonic/rev2/config.h b/keyboards/preonic/rev2/config.h
index 29fc091848..a62fed4850 100644
--- a/keyboards/preonic/rev2/config.h
+++ b/keyboards/preonic/rev2/config.h
@@ -15,12 +15,9 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV2_CONFIG_H
-#define REV2_CONFIG_H
+#pragma once
#include "config_common.h"
#define DEVICE_VER 0x0002
#define PRODUCT_ID 0x67F3
-
-#endif \ No newline at end of file
diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h
index 420e7e5413..f2c4b3c3d8 100644
--- a/keyboards/preonic/rev3/config.h
+++ b/keyboards/preonic/rev3/config.h
@@ -15,8 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef REV3_CONFIG_H
-#define REV3_CONFIG_H
+#pragma once
/* USB Device descriptor parameter */
#define DEVICE_VER 0x0003
@@ -107,5 +106,3 @@
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
#define WS2812_DMA_CHANNEL 2
-
-#endif
diff --git a/keyboards/primekb/prime_o/prime_o.h b/keyboards/primekb/prime_o/prime_o.h
index 99a8054522..fec3392b31 100644
--- a/keyboards/primekb/prime_o/prime_o.h
+++ b/keyboards/primekb/prime_o/prime_o.h
@@ -13,28 +13,26 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PRIME_O_H
-#define PRIME_O_H
+
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K001, K008, K013, K018, K023, K029, K035, K041, K046, K052, K058, K064, K071, K076, K081, K086, \
- K002, K009, K014, K019, K024, K030, K036, K042, K047, K053, K059, K065, K072, K077, K082, K087, \
- K004, K010, K015, K020, K025, K031, K037, K043, K048, K054, K060, K066, K073, K078, K083, K089, \
- K005, K011, K016, K021, K026, K032, K038, K044, K049, K055, K061, K067, K074, K079, K084, K090, \
- K007, K012, K017, K022, K028, K034, K040, K045, K051, K057, K063, K069, K075, K080, K085, K092 \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, \
+ k30, k60, k31, k61, k32, k62, k33, k63, k34, k64, k35, k65, k36, k66, k37, k67, \
+ k20, k70, k21, k71, k22, k72, k23, k73, k24, k74, k25, k75, k26, k76, k27, k77, \
+ k10, k80, k11, k81, k12, k82, k13, k83, k14, k84, k15, k85, k16, k86, k17, k87, \
+ k00, k90, k01, k91, k02, k92, k03, k93, k04, k94, k05, k95, k06, k96, k07, k97 \
) { \
- { K007, K017, K028, K040, K051, K063, K075, K085 }, \
- { K005, K016, K026, K038, K049, K061, K074, K084 }, \
- { K004, K015, K025, K037, K048, K060, K073, K083 }, \
- { K002, K014, K024, K036, K047, K059, K072, K082 }, \
- { K001, K013, K023, K035, K046, K058, K071, K081 }, \
- { K008, K018, K029, K041, K052, K064, K076, K086 }, \
- { K009, K019, K030, K042, K053, K065, K077, K087 }, \
- { K010, K020, K031, K043, K054, K066, K078, K089 }, \
- { K011, K021, K032, K044, K055, K067, K079, K090 }, \
- { K012, K022, K034, K045, K057, K069, K080, K092 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87 }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97 } \
}
-
-#endif
diff --git a/keyboards/primekb/prime_r/config.h b/keyboards/primekb/prime_r/config.h
index abf559d8aa..b73eb346a7 100644
--- a/keyboards/primekb/prime_r/config.h
+++ b/keyboards/primekb/prime_r/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -61,5 +60,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/primekb/prime_r/prime_r.h b/keyboards/primekb/prime_r/prime_r.h
index 8295fc336c..905b5c8cf8 100644
--- a/keyboards/primekb/prime_r/prime_r.h
+++ b/keyboards/primekb/prime_r/prime_r.h
@@ -13,23 +13,23 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef PRIMER_H
-#define PRIMER_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K212, K213, K214, K215, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
- K400, K402, K403, K404, K405, K407, K409, K410, K411, K412, K413, K414, K415 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2C, k2D, k2E, k2F, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, \
+ k40, k42, k43, k44, k45, k47, k49, k4A, k4B, k4C, k4D, k4E, k4F \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO, K212, K213, K214, K215 }, \
- { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
- { K400, KC_NO, K402, K403, K404, K405, KC_NO, K407, KC_NO, K409, K410, K411, K412, K413, K414, K415 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, XXX, k2C, k2D, k2E, k2F }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F }, \
+ { k40, XXX, k42, k43, k44, k45, XXX, k47, XXX, k49, k4A, k4B, k4C, k4D, k4E, k4F } \
}
-
-#endif \ No newline at end of file
diff --git a/keyboards/projectcain/vault45/info.json b/keyboards/projectcain/vault45/info.json
index c706000192..dd352abc0d 100644
--- a/keyboards/projectcain/vault45/info.json
+++ b/keyboards/projectcain/vault45/info.json
@@ -46,8 +46,7 @@
{ "label": "Super", "x": 1.25, "y": 3 },
{ "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 },
{ "label": "Alt", "x": 3.5, "y": 3, "w": 1.25 },
- { "x": 4.75, "y": 3, "w": 1.75 },
- { "x": 6.5, "y": 3, "w": 1.75 },
+ { "x": 4.75, "y": 3, "w": 3.5 },
{ "label": "Meta", "x": 8.25, "y": 3, "w": 1.25 },
{ "label": "Super", "x": 9.5, "y": 3, "w": 1.25 },
{ "label": "Fn2", "x": 10.75, "y": 3 },
diff --git a/keyboards/puck/puck.h b/keyboards/puck/puck.h
index 0f2a284a67..31fff79555 100644
--- a/keyboards/puck/puck.h
+++ b/keyboards/puck/puck.h
@@ -1,18 +1,15 @@
-#ifndef PUCK_H
-#define PUCK_H
+#pragma once
#include "quantum.h"
#define LAYOUT( \
- K00, K01, K02, \
- K03, K04, K05, \
- K06, K07, K08, \
- K09, K0A, K0B \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22, \
+ k30, k31, k32 \
) { \
- { K00, K01, K02 }, \
- { K03, K04, K05 }, \
- { K06, K07, K08 }, \
- { K09, K0A, K0B }, \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 }, \
+ { k20, k21, k22 }, \
+ { k30, k31, k32 } \
}
-
-#endif
diff --git a/keyboards/rgbkb/zen/post_rules.mk b/keyboards/rgbkb/zen/post_rules.mk
new file mode 100644
index 0000000000..3ddb449efa
--- /dev/null
+++ b/keyboards/rgbkb/zen/post_rules.mk
@@ -0,0 +1,14 @@
+ifeq ($(strip $(CTPC)), yes)
+ CONVERT_TO_PROTON_C=yes
+endif
+
+ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
+ SPLIT_KEYBOARD = no # currently unsupported on ARM
+ RGBLIGHT_ENABLE = no # currently unsupported on ARM
+
+ EXTRAFLAGS += -DUSE_PROTON_C
+else
+ # Currently moved to Pro Micro only section because of lack of Proton-C support
+ SPLIT_KEYBOARD = yes
+ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+endif
diff --git a/keyboards/rgbkb/zen/rev2/post_rules.mk b/keyboards/rgbkb/zen/rev2/post_rules.mk
new file mode 100644
index 0000000000..2a4397e980
--- /dev/null
+++ b/keyboards/rgbkb/zen/rev2/post_rules.mk
@@ -0,0 +1,5 @@
+# Setup so that OLED can be turned on/off easily
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ # Custom local font file
+ OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
+endif
diff --git a/keyboards/rgbkb/zen/rev2/rules.mk b/keyboards/rgbkb/zen/rev2/rules.mk
index 9bb8b8cd0d..6dd9d2e270 100644
--- a/keyboards/rgbkb/zen/rev2/rules.mk
+++ b/keyboards/rgbkb/zen/rev2/rules.mk
@@ -1,9 +1,3 @@
ENCODER_ENABLE = yes
OLED_ENABLE = no
-
-# Setup so that OLED can be turned on/off easily
-ifeq ($(strip $(OLED_ENABLE)), yes)
- # Custom local font file
- OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
-endif
diff --git a/keyboards/rgbkb/zen/rules.mk b/keyboards/rgbkb/zen/rules.mk
index 9d6d2e1258..98a8a59edb 100644
--- a/keyboards/rgbkb/zen/rules.mk
+++ b/keyboards/rgbkb/zen/rules.mk
@@ -4,21 +4,6 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
-ifeq ($(strip $(CTPC)), yes)
- CONVERT_TO_PROTON_C=yes
-endif
-
-ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
- SPLIT_KEYBOARD = no # currently unsupported on ARM
- RGBLIGHT_ENABLE = no # currently unsupported on ARM
-
- EXTRAFLAGS += -DUSE_PROTON_C
-else
- # Currently moved to Pro Micro only section because of lack of Proton-C support
- SPLIT_KEYBOARD = yes
- RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-endif
-
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
diff --git a/keyboards/sentraq/s65_plus/config.h b/keyboards/sentraq/s65_plus/config.h
index 4d4819efce..2f02e8e162 100644
--- a/keyboards/sentraq/s65_plus/config.h
+++ b/keyboards/sentraq/s65_plus/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#endif
diff --git a/keyboards/sentraq/s65_x/config.h b/keyboards/sentraq/s65_x/config.h
index d3c9adbf3c..b8886bf67f 100644
--- a/keyboards/sentraq/s65_x/config.h
+++ b/keyboards/sentraq/s65_x/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -44,5 +43,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#endif
diff --git a/keyboards/sidderskb/majbritt/rev2/info.json b/keyboards/sidderskb/majbritt/rev2/info.json
index 788657f3bc..3e2aa450ad 100644
--- a/keyboards/sidderskb/majbritt/rev2/info.json
+++ b/keyboards/sidderskb/majbritt/rev2/info.json
@@ -1,10 +1,81 @@
{
"keyboard_name": "Majbritt Rev2",
- "url": "https://sidderskb.co.uk/",
"maintainer": "Sleepdealr",
+ "url": "https://sidderskb.co.uk/",
"layouts": {
"LAYOUT": {
- "layout": [{"label":"Esc", "x":0.75, "y":0}, {"label":"!", "x":1.75, "y":0}, {"label":"\"", "x":2.75, "y":0}, {"label":"\u00a3", "x":3.75, "y":0}, {"label":"$", "x":4.75, "y":0}, {"label":"%", "x":5.75, "y":0}, {"label":"^", "x":6.75, "y":0}, {"label":"&", "x":8.5, "y":0}, {"label":"*", "x":9.5, "y":0}, {"label":"(", "x":10.5, "y":0}, {"label":")", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"|", "x":14.5, "y":0}, {"label":"~", "x":15.5, "y":0}, {"label":"Del", "x":16.5, "y":0}, {"label":"Tab", "x":0.5, "y":1, "w":1.5}, {"label":"Q", "x":2, "y":1}, {"label":"W", "x":3, "y":1}, {"label":"E", "x":4, "y":1}, {"label":"R", "x":5, "y":1}, {"label":"T", "x":6, "y":1}, {"label":"Y", "x":8, "y":1}, {"label":"U", "x":9, "y":1}, {"label":"I", "x":10, "y":1}, {"label":"O", "x":11, "y":1}, {"label":"P", "x":12, "y":1}, {"label":"{", "x":13, "y":1}, {"label":"}", "x":14, "y":1}, {"label":"Enter", "x":15.25, "y":1, "w":1.25, "h":2}, {"label":"Pgup", "x":16.5, "y":1}, {"label":"Caps Lock", "x":0.25, "y":2, "w":1.75}, {"label":"A", "x":2, "y":2}, {"label":"S", "x":3, "y":2}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"H", "x":8.25, "y":2}, {"label":"J", "x":9.25, "y":2}, {"label":"K", "x":10.25, "y":2}, {"label":"L", "x":11.25, "y":2}, {"label":":", "x":12.25, "y":2}, {"label":"@", "x":13.25, "y":2}, {"label":"~", "x":14.25, "y":2}, {"label":"Pgdn", "x":16.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":8.75, "y":3}, {"label":"M", "x":9.75, "y":3}, {"label":"<", "x":10.75, "y":3}, {"label":">", "x":11.75, "y":3}, {"label":"?", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.75}, {"label":"Up", "x":15.5, "y":3}, {"label":"Fn", "x":16.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":3, "y":4, "w":1.5}, {"label":"LSpace", "x":4.5, "y":4, "w":2.25}, {"label":"Fn", "x":6.75, "y":4}, {"label":"RSpace", "x":8.25, "y":4, "w":2.75}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Left", "x":14.5, "y":4}, {"label":"Down", "x":15.5, "y":4}, {"label":"Right", "x":16.5, "y":4}]
+ "layout": [
+ { "label": "Esc", "x": 0.75, "y": 0 },
+ { "label": "!", "x": 1.75, "y": 0 },
+ { "label": "\"", "x": 2.75, "y": 0 },
+ { "label": "\u00a3", "x": 3.75, "y": 0 },
+ { "label": "$", "x": 4.75, "y": 0 },
+ { "label": "%", "x": 5.75, "y": 0 },
+ { "label": "^", "x": 6.75, "y": 0 },
+ { "label": "&", "x": 8.5, "y": 0 },
+ { "label": "*", "x": 9.5, "y": 0 },
+ { "label": "(", "x": 10.5, "y": 0 },
+ { "label": ")", "x": 11.5, "y": 0 },
+ { "label": "_", "x": 12.5, "y": 0 },
+ { "label": "+", "x": 13.5, "y": 0 },
+ { "label": "|", "x": 14.5, "y": 0 },
+ { "label": "~", "x": 15.5, "y": 0 },
+ { "label": "Del", "x": 16.5, "y": 0 },
+ { "label": "Tab", "w": 1.5, "x": 0.5, "y": 1 },
+ { "label": "Q", "x": 2, "y": 1 },
+ { "label": "W", "x": 3, "y": 1 },
+ { "label": "E", "x": 4, "y": 1 },
+ { "label": "R", "x": 5, "y": 1 },
+ { "label": "T", "x": 6, "y": 1 },
+ { "label": "Y", "x": 8, "y": 1 },
+ { "label": "U", "x": 9, "y": 1 },
+ { "label": "I", "x": 10, "y": 1 },
+ { "label": "O", "x": 11, "y": 1 },
+ { "label": "P", "x": 12, "y": 1 },
+ { "label": "{", "x": 13, "y": 1 },
+ { "label": "}", "x": 14, "y": 1 },
+ { "label": "Enter", "w": 1.5, "x": 15, "y": 1 },
+ { "label": "Pgup", "x": 16.5, "y": 1 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0.25, "y": 2 },
+ { "label": "A", "x": 2, "y": 2 },
+ { "label": "S", "x": 3, "y": 2 },
+ { "label": "D", "x": 4, "y": 2 },
+ { "label": "F", "x": 5, "y": 2 },
+ { "label": "G", "x": 6, "y": 2 },
+ { "label": "H", "x": 8.25, "y": 2 },
+ { "label": "J", "x": 9.25, "y": 2 },
+ { "label": "K", "x": 10.25, "y": 2 },
+ { "label": "L", "x": 11.25, "y": 2 },
+ { "label": ":", "x": 12.25, "y": 2 },
+ { "label": "@", "x": 13.25, "y": 2 },
+ { "label": "~", "x": 14.25, "y": 2 },
+ { "label": "Enter", "w": 1.25, "x": 15.25, "y": 2 },
+ { "label": "Pgdn", "x": 16.5, "y": 2 },
+ { "label": "Shift", "w": 1.25, "x": 0, "y": 3 },
+ { "label": "|", "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 8.75, "y": 3 },
+ { "label": "M", "x": 9.75, "y": 3 },
+ { "label": "<", "x": 10.75, "y": 3 },
+ { "label": ">", "x": 11.75, "y": 3 },
+ { "label": "?", "x": 12.75, "y": 3 },
+ { "label": "Shift", "w": 1.75, "x": 13.75, "y": 3 },
+ { "label": "Up", "x": 15.5, "y": 3 },
+ { "label": "Fn", "x": 16.5, "y": 3 },
+ { "label": "Ctrl", "w": 1.5, "x": 0, "y": 4 },
+ { "label": "Alt", "w": 1.5, "x": 3, "y": 4 },
+ { "label": "LSpace", "w": 2.25, "x": 4.5, "y": 4 },
+ { "label": "Fn", "x": 6.75, "y": 4 },
+ { "label": "RSpace", "w": 2.75, "x": 8.25, "y": 4 },
+ { "label": "AltGr", "w": 1.5, "x": 11, "y": 4 },
+ { "label": "Left", "x": 14.5, "y": 4 },
+ { "label": "Down", "x": 15.5, "y": 4 },
+ { "label": "Right", "x": 16.5, "y": 4 }
+ ]
}
}
}
diff --git a/keyboards/sixkeyboard/config.h b/keyboards/sixkeyboard/config.h
index b438ceea9e..d6505e70c7 100644
--- a/keyboards/sixkeyboard/config.h
+++ b/keyboards/sixkeyboard/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -65,5 +64,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/sixkeyboard/sixkeyboard.h b/keyboards/sixkeyboard/sixkeyboard.h
index 353e2a78c8..3f563af6d1 100644
--- a/keyboards/sixkeyboard/sixkeyboard.h
+++ b/keyboards/sixkeyboard/sixkeyboard.h
@@ -1,20 +1,7 @@
-#ifndef SIXKEYBOARD_H
-#define SIXKEYBOARD_H
+#pragma once
#include "quantum.h"
-// This macro is an example of using a non-standard row-column matrix. The
-// keyboard in question had 11 rows and 8 columns, but the rows were not all
-// horizontal, and the columns were not all vertical. For example, row 2
-// contained "Print Screen", "N", "M", ",", ".", "/", "Right Shift", and
-// "Left Alt". Column 0 contained "F6", "7", "O", "'", "Q", "D", "B",
-// "Left Alt", "Up Arrow", and "Down Arrow".
-//
-// The macro makes programming the keys easier and in a more straight-forward
-// manner because it realigns the keys into a 6x15 sensible keyboard layout
-// instead of the obtuse 11x8 matrix.
-
-
/*
* ┌───┬───┬───â”
* │ A │ B │ C │
@@ -24,11 +11,8 @@
*/
#define LAYOUT_ortho_2x3( \
k00, k01, k02, \
- k10, k11, k12 \
- ) { \
+ k10, k11, k12 \
+) { \
{ k00, k01, k02 }, \
- { k10, k11, k12 } \
+ { k10, k11, k12 } \
}
-
-
-#endif
diff --git a/keyboards/smallkeyboard/config.h b/keyboards/smallkeyboard/config.h
index 689d53d54e..24c81258c7 100644
--- a/keyboards/smallkeyboard/config.h
+++ b/keyboards/smallkeyboard/config.h
@@ -84,14 +84,9 @@
// 0b1110101 AD <-> SCL
// 0b1110110 AD <-> SDA
#define DRIVER_ADDR_1 0b1110100
-//#define DRIVER_ADDR_2 0b1110110
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 6
-//#define DRIVER_1_LED_TOTAL 25
-//#define DRIVER_2_LED_TOTAL 24
-//#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 6
#endif
//#define RGB_DI_PIN B7
//#ifdef RGB_DI_PIN
diff --git a/keyboards/spaceman/pancake/rev1/feather/config.h b/keyboards/spaceman/pancake/rev1/feather/config.h
index e72b25f3db..cb80721e46 100644
--- a/keyboards/spaceman/pancake/rev1/feather/config.h
+++ b/keyboards/spaceman/pancake/rev1/feather/config.h
@@ -21,8 +21,4 @@
#define MATRIX_COL_PINS { C7, D6, B7, B6, F0, D2, D3, F1, F4, F5, F6, F7 }
#define UNUSED_PINS
-#define AdafruitBleResetPin D4
-#define AdafruitBleCSPin B4
-#define AdafruitBleIRQPin E6
-
#define VIA_HAS_BROKEN_KEYCODES
diff --git a/keyboards/spaceman/pancake/rev1/feather/rules.mk b/keyboards/spaceman/pancake/rev1/feather/rules.mk
index b749dc2327..a2ddd81a9c 100644
--- a/keyboards/spaceman/pancake/rev1/feather/rules.mk
+++ b/keyboards/spaceman/pancake/rev1/feather/rules.mk
@@ -10,7 +10,6 @@ BOOTLOADER = caterina
# Build Options
# comment out to disable the options.
#
-BLUETOOTH = AdafruitBLE
BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
@@ -21,6 +20,8 @@ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https:
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
LAYOUTS = ortho_4x12 planck_mit
diff --git a/keyboards/spacey/info.json b/keyboards/spacey/info.json
index 1bb8dea95a..94d68addf4 100644
--- a/keyboards/spacey/info.json
+++ b/keyboards/spacey/info.json
@@ -71,10 +71,10 @@
{"label":"k43", "x":3, "y":4},
{"label":"k44", "x":4, "y":4},
{"label":"k45", "x":5, "y":4},
-
+ {"label":"k46", "x":6, "y":4},
{"label":"k47", "x":7, "y":4},
{"label":"k48", "x":8, "y":4},
-
+ {"label":"k49", "x":9, "y":4},
{"label":"k4A", "x":10, "y":4},
{"label":"k4B", "x":11, "y":4},
{"label":"k4C", "x":12, "y":4},
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
index 6accf8cc03..7c6bd3e121 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
@@ -17,3 +17,4 @@ KEY_LOCK_ENABLE = no
WPM_ENABLE = yes
SWAP_HANDS_ENABLE = yes
LTO_ENABLE = no
+CTPC = yes
diff --git a/keyboards/splitkb/kyria/readme.md b/keyboards/splitkb/kyria/readme.md
index 5ce652589c..7ecf3946f7 100644
--- a/keyboards/splitkb/kyria/readme.md
+++ b/keyboards/splitkb/kyria/readme.md
@@ -10,7 +10,8 @@ Hardware Availability: [splitkb.com](https://splitkb.com) and partners.
Make example for this keyboard (after setting up your build environment):
- make splitkb/kyria:default
+ make splitkb/kyria/rev1:default
+ make splitkb/kyria/rev1/proton_c:default
Example of flashing this keyboard:
@@ -19,3 +20,22 @@ Example of flashing 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).
A build guide for the Kyria can be found at [docs.splitkb.com](https://docs.splitkb.com/hc/en-us/articles/360010552059-Kyria-Build-Guide-Introduction).
+
+## Proton C Conversion Guide
+
+If you're one of the lucky people to have Proton Cs to use with their Kyria, there are a couple of caveats to getting this working.
+
+1. You need to have 2x Proton Cs, as you cannot mix and match with Pro Micros or Elite C's. They both need to be Proton Cs.
+2. You'll need to do some modding to enable proper support with the Proton C.
+
+By design, the Kyria uses every available pin on the Pro Micro footprint. This includes using D3 (RX) for RGB. This poses a challenge with using the Proton C, since it needs both the TX and RX pins. The Proton C needs both pins, especially if you plan on using Full Duplex Serial.
+
+To fix this, you need to break off the last header position on the right-hand side on the footprint. This is the `TX0/D3` pad. Leave this pad without a header connected to.
+
+From the A9 pin on the Proton C, you want to run a wire from it to the `SDA + Extra Data` pad near the TRRS jack on the PCB. This will allow for proper, full duplex communication over the TRRS cable.
+
+To get RGB working properly, as well, you want to run a wire from the `A3` pin on the Proton C, next to the GND and DFU pin, right under the USB port. Run this to the `TX0/D3` pad (the one you left without a header pin on the PCB).
+
+Once you've done that, you can solder in the Proton C. and flash it.
+
+![Proton C](https://i.imgur.com/nICqWLo.jpg)
diff --git a/keyboards/splitkb/kyria/rev1/config.h b/keyboards/splitkb/kyria/rev1/config.h
index a330dfc10f..e19e8dfa9c 100644
--- a/keyboards/splitkb/kyria/rev1/config.h
+++ b/keyboards/splitkb/kyria/rev1/config.h
@@ -57,18 +57,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
-#define SOFT_SERIAL_PIN D2
-#define RGB_DI_PIN D3
+#if defined(CONVERT_TO_PROTON_C)
+# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+# define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
+# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
+# 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_TX_PIN D3
+# define SERIAL_USART_RX_PIN D2
+
+# define RGB_DI_PIN PAL_LINE(GPIOA, 3)
+# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
+# define WS2812_PWM_CHANNEL 4 // default: 2
+# define WS2812_PWM_PAL_MODE 1 // 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 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
+#else
+# define RGB_DI_PIN D3
+# define SOFT_SERIAL_PIN D2
+#endif
+
#define RGBLED_SPLIT \
{ 10, 10 }
#define RGBLED_NUM 20
-/* 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
-
#ifdef OLED_ENABLE
# define OLED_DISPLAY_128X64
# define SPLIT_OLED_ENABLE
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/chconf.h b/keyboards/splitkb/kyria/rev1/proton_c/chconf.h
new file mode 100644
index 0000000000..7ca1d3d243
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/chconf.h
@@ -0,0 +1,22 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_RESOLUTION 16
+#define CH_CFG_ST_FREQUENCY 10000
+
+#include_next "chconf.h"
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/halconf.h b/keyboards/splitkb/kyria/rev1/proton_c/halconf.h
new file mode 100644
index 0000000000..99f2e11b9a
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/halconf.h
@@ -0,0 +1,22 @@
+/* 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 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
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h b/keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h
new file mode 100644
index 0000000000..58348af390
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h
@@ -0,0 +1,29 @@
+/* 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 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_PWM_USE_TIM2
+#define STM32_PWM_USE_TIM2 TRUE
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 FALSE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 3
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c
new file mode 100644
index 0000000000..628fabb2e5
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c
@@ -0,0 +1,17 @@
+/* Copyright 2019 Thomas Baart <thomas@splitkb.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 "proton_c.h"
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h
new file mode 100644
index 0000000000..718f5636ff
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 Thomas Baart <thomas@splitkb.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 "rev1.h"
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/rules.mk b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
new file mode 100644
index 0000000000..9e0942398f
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
@@ -0,0 +1,5 @@
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+AUDIO_ENABLE = no
+LTO_ENABLE = no
+CONVERT_TO_PROTON_C = yes
diff --git a/keyboards/splitkb/kyria/rev1/rev1.h b/keyboards/splitkb/kyria/rev1/rev1.h
index bf9864fe36..8a5fbeb21d 100644
--- a/keyboards/splitkb/kyria/rev1/rev1.h
+++ b/keyboards/splitkb/kyria/rev1/rev1.h
@@ -16,6 +16,9 @@
#pragma once
#include "kyria.h"
+#ifdef KEYBOARD_splitkb_kyria_rev1_proton_c
+# include "proton_c.h"
+#endif
/* This a shortcut to help you visually see your layout.
*
diff --git a/keyboards/splitkb/zima/rules.mk b/keyboards/splitkb/zima/rules.mk
index ecb6fd7cf1..657475a020 100644
--- a/keyboards/splitkb/zima/rules.mk
+++ b/keyboards/splitkb/zima/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+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
@@ -22,7 +22,8 @@ AUDIO_ENABLE = yes # Audio output
ENCODER_ENABLE = yes # ENables the use of one or more encoders
OLED_ENABLE = yes
-OLED_DRIVER = SSD1306 # Enables the use of OLED displays
-HAPTIC_ENABLE += DRV2605L # Supported but not included by defaut
+OLED_DRIVER = SSD1306 # Enables the use of OLED displays
+HAPTIC_ENABLE = yes # Supported but not included by defaut
+HAPTIC_DRIVER = DRV2605L
LTO_ENABLE = yes
diff --git a/keyboards/standaside/standaside.h b/keyboards/standaside/standaside.h
index b661696397..9601f1257c 100644
--- a/keyboards/standaside/standaside.h
+++ b/keyboards/standaside/standaside.h
@@ -1,29 +1,23 @@
-
-#ifndef STANDASIDE_H
-#define STANDASIDE_H
+#pragma once
#include "quantum.h"
-#define ___ KC_NO
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
#define LAYOUT_ortho_4x16( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \
- K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K31, \
- K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, \
- K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, K62, K63 \
-) \
-{ \
- { K00, K02, K04, K06, K08, K10, K12, K14 }, \
- { K01, K03, K05, K07, K09, K11, K13, K15 }, \
- { K16, K18, K20, K22, K24, K26, K28, K30 }, \
- { K17, K19, K21, K23, K25, K27, K29, K31 }, \
- { K32, K34, K36, K38, K40, K42, K44, K46 }, \
- { K33, K35, K37, K39, K41, K43, K45, K47 }, \
- { K48, K50, K52, K54, K56, K58, K60, K62 }, \
- { K49, K51, K53, K55, K57, K59, K61, K63 } \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
}
-
-#endif
diff --git a/keyboards/subatomic/config.h b/keyboards/subatomic/config.h
index b19339ad6c..47fcc72fd2 100644
--- a/keyboards/subatomic/config.h
+++ b/keyboards/subatomic/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -75,5 +74,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/sx60/sx60.h b/keyboards/sx60/sx60.h
index f533d8e899..605b6fe78d 100755
--- a/keyboards/sx60/sx60.h
+++ b/keyboards/sx60/sx60.h
@@ -1,5 +1,4 @@
-#ifndef SX60_H
-#define SX60_H
+#pragma once
#include "quantum.h"
#include <stdint.h>
@@ -23,60 +22,60 @@ extern uint8_t mcp23018_status;
uint8_t init_mcp23018(void);
+#define XXX KC_NO
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, \
- K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, \
- K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, \
- K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K70, K71 \
+ k00, k01, k02, k03, k04, k05, k06, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, KC_NO, K07, K08, K09, K10, K11, K12, K13, K14 }, \
- { K15, K16, K17, K18, K19, K20, K21, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29 }, \
- { K30, K31, K32, K33, K34, K35, K36, KC_NO, K37, K38, K39, K40, K41, K42, K43, K44 }, \
- { K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K59 }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, K66, K67, K68, K69, K70, K71, KC_NO, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3E }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX, k48, k49, k4A, k4B, k4C, k4D, XXX, XXX } \
}
#define LAYOUT_ansi_split_bs_rshift( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, \
- K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, \
- K44, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, \
- K58, K59, K60, K61, K62, K63, K64, K65, K66, K67, K68, K69 \
+ k00, k01, k02, k03, k04, k05, k06, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4A, k4B, k4C, k4E \
) { \
- { K00, K01, K02, K03, K04, K05, K06, KC_NO, K07, K08, K09, K10, K11, K12, K13, K14 }, \
- { K15, K16, K17, K18, K19, K20, K21, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29 }, \
- { K30, K31, K32, K33, K34, K35, K36, KC_NO, K37, K38, K39, K40, K41, K42, K43, KC_NO }, \
- { K44, K45, KC_NO, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K57 }, \
- { K58, K59, K60, K61, K62, K63, KC_NO, KC_NO, K64, K65, K66, K67, K68, K69, KC_NO, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, XXX, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3E }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX, k48, k49, k4A, k4B, k4C, k4E, XXX, XXX } \
}
#define LAYOUT_ansi_split_bs( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, \
- K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, \
- K44, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, \
- K57, K58, K59, K60, K61, K62, K63, K64, K65, K66, K67, K68 \
+ k00, k01, k02, k03, k04, k05, k06, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, KC_NO, K07, K08, K09, K10, K11, K12, K13, K14 }, \
- { K15, K16, K17, K18, K19, K20, K21, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29 }, \
- { K30, K31, K32, K33, K34, K35, K36, KC_NO, K37, K38, K39, K40, K41, K42, K43, KC_NO }, \
- { K44, K45, KC_NO, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, KC_NO, KC_NO }, \
- { K57, K58, K59, K60, K61, K62, KC_NO, KC_NO, K63, K64, K65, K66, K67, K68, KC_NO, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, XXX, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX, k48, k49, k4A, k4B, k4C, k4D, XXX, XXX } \
}
#define LAYOUT_ansi_split_rshift( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
- K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, \
- K29, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, \
- K43, K44, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, \
- K57, K58, K59, K60, K61, K62, K63, K64, K65, K66, K67, K68 \
+ k00, k01, k02, k03, k04, k05, k06, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4A, k4B, k4C, k4D \
) { \
- { K00, K01, K02, K03, K04, K05, K06, KC_NO, K07, K08, K09, K10, K11, K12, K13, K13 }, \
- { K14, K15, K16, K17, K18, K19, K20, KC_NO, K21, K22, K23, K24, K25, K26, K27, K28 }, \
- { K29, K30, K31, K32, K33, K34, K35, KC_NO, K36, K37, K38, K39, K40, K41, K42, KC_NO }, \
- { K43, K44, KC_NO, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K56, K56 }, \
- { K57, K58, K59, K60, K61, K62, KC_NO, KC_NO, K63, K64, K65, K66, K67, K68, KC_NO, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, XXX, k08, k09, k0A, k0B, k0C, k0D, k0E, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX }, \
+ { k30, k31, XXX, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3E }, \
+ { k40, k41, k42, k43, k44, k45, XXX, XXX, k48, k49, k4A, k4B, k4C, k4D, XXX, XXX } \
}
-
-#endif
diff --git a/keyboards/tanuki/config.h b/keyboards/tanuki/config.h
index f73ffa79a2..4680753dd4 100644
--- a/keyboards/tanuki/config.h
+++ b/keyboards/tanuki/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -76,5 +75,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/tetris/tetris.h b/keyboards/tetris/tetris.h
index f5d13e5c2f..56f4ecbfc7 100755
--- a/keyboards/tetris/tetris.h
+++ b/keyboards/tetris/tetris.h
@@ -1,20 +1,19 @@
-#ifndef TETRIS_H
-#define TETRIS_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_planck_mit( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311, \
- K400, K401, K410, K411 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B, \
+ k40, k41, k4A, k4B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, KC_NO, K307, K308, K309, K310, K311 }, \
- { K400, K401, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K410, K411 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, XXX, k37, k38, k39, k3A, k3B }, \
+ { k40, k41, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k4A, k4B } \
}
-
-#endif
diff --git a/keyboards/thevankeyboards/roadkit/config.h b/keyboards/thevankeyboards/roadkit/config.h
index edb1bd91c9..4572f5e2b9 100644
--- a/keyboards/thevankeyboards/roadkit/config.h
+++ b/keyboards/thevankeyboards/roadkit/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -103,5 +102,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/thevankeyboards/roadkit/roadkit.h b/keyboards/thevankeyboards/roadkit/roadkit.h
index 62cfabc5eb..f367c88ff4 100644
--- a/keyboards/thevankeyboards/roadkit/roadkit.h
+++ b/keyboards/thevankeyboards/roadkit/roadkit.h
@@ -1,33 +1,30 @@
-#ifndef ROADKIT_H
-#define ROADKIT_H
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
// This is a shortcut to help you visually see your layout.
#define LAYOUT_numpad_4x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, \
- K20, K21, K22, K23, \
- K30, K32 \
-) \
-{ \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, KC_NO }, \
- { K20, K21, K22, K23 }, \
- { K30, KC_NO, K32, KC_NO } \
+ k00, k01, k02, k03, \
+ k10, k11, k12, \
+ k20, k21, k22, k23, \
+ k30, k32 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, XXX }, \
+ { k20, k21, k22, k23 }, \
+ { k30, XXX, k32, XXX } \
}
#define LAYOUT_ortho_4x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, \
- K30, K31, K32, K33 \
-) \
-{ \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, K23 }, \
- { K30, K31, K32, K33 } \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 } \
}
-
-#endif
diff --git a/keyboards/toad/config.h b/keyboards/toad/config.h
index e4391437b6..793e740fa3 100644
--- a/keyboards/toad/config.h
+++ b/keyboards/toad/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -48,5 +47,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/tokyokeyboard/alix40/config.h b/keyboards/tokyokeyboard/alix40/config.h
index 113412e95a..f4b4e6e5ab 100644
--- a/keyboards/tokyokeyboard/alix40/config.h
+++ b/keyboards/tokyokeyboard/alix40/config.h
@@ -65,9 +65,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define QMK_ESC_INPUT D7 // usually ROW
/* Bluetooth */
-#define AdafruitBleResetPin D4
-#define AdafruitBleCSPin B4
-#define AdafruitBleIRQPin E6
#define BATTERY_LEVEL_PIN B6
#define VIA_HAS_BROKEN_KEYCODES
diff --git a/keyboards/tokyokeyboard/alix40/rules.mk b/keyboards/tokyokeyboard/alix40/rules.mk
index 5fedaed835..7f44c1325c 100644
--- a/keyboards/tokyokeyboard/alix40/rules.mk
+++ b/keyboards/tokyokeyboard/alix40/rules.mk
@@ -21,6 +21,6 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/treasure/type9/type9.h b/keyboards/treasure/type9/type9.h
index 4e3c235d11..6034416f16 100644
--- a/keyboards/treasure/type9/type9.h
+++ b/keyboards/treasure/type9/type9.h
@@ -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/>.
*/
-#ifndef TYPE9_H
-#define TYPE9_H
+
+#pragma once
#include "quantum.h"
@@ -26,15 +26,12 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define LAYOUT( \
- K00, K01, K02, \
- K10, K11, K12, \
- K20, K21, K22 \
-) \
-{ \
- { K00, K01, K02 }, \
- { K10, K11, K12 }, \
- { K20, K21, K22 }, \
+#define LAYOUT( \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22 \
+) { \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 }, \
+ { k20, k21, k22 } \
}
-
-#endif
diff --git a/keyboards/uk78/config.h b/keyboards/uk78/config.h
index 272e8401e6..4ac138a9b5 100644
--- a/keyboards/uk78/config.h
+++ b/keyboards/uk78/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -63,5 +62,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/uk78/uk78.h b/keyboards/uk78/uk78.h
index 32c72d8fde..46e53e7b31 100644
--- a/keyboards/uk78/uk78.h
+++ b/keyboards/uk78/uk78.h
@@ -1,49 +1,47 @@
-#ifndef UK78_H
-#define UK78_H
+#pragma once
#include "quantum.h"
// readability
-#define ____ KC_NO
+#define ___ KC_NO
/* Re: Right Shift
*
- * Per a conversation I had on reddit with Rozakiin, matrix positions K312,
- * K313 and K314 are never in use all together at the same time.
+ * Per a conversation I had on reddit with Rozakiin, matrix positions k3C,
+ * k3D and k3E are never in use all together at the same time.
*
- * A 2.75u-sized right Shift uses position K313, rendering K312 and K314
+ * A 2.75u-sized right Shift uses position k3D, rendering k3C and k3E
* inaccessible.
*
* A split right Shift, in either 1.75u/1u or 1u/1.75u (JIS layout) uses
- * positions K312 and K314, rendering K313 inaccessible.
+ * positions k3C and k3E, rendering k3D inaccessible.
*
* - @noroadsleft
* July 13, 2018
*/
-
#define LAYOUT_all( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, K116, K117, K118, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, K218, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, \
- K400, K401, K402, K406, K410, K411, K412, K413, K414, K415, K416, K417, K418 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, k1G, k1H, k1I, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, k2F, k2G, k2H, k2I, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, K114, K115, K116, K117, K118 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214, K215, K216, K217, K218 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318 }, \
- { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413, K414, K415, K416, K417, K418 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, k1E, k1F, k1G, k1H, k1I }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, ___, k2E, k2F, k2G, k2H, k2I }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I } \
}
/* LAYOUT_ansi
*
* This layout uses:
*
- * - Split Backspace (K013 and K014)
- * - ANSI Enter (K214)
- * - ANSI 2.25u Left Shift (K300)
- * - Compact right Shift (K312 and K314)
- * - Two 1.5u modifiers (K410 and K412) between the spacebar and the Left
+ * - Split Backspace (k0D and k0E)
+ * - ANSI Enter (k2E)
+ * - ANSI 2.25u Left Shift (k30)
+ * - Compact right Shift (k3C and k3E)
+ * - Two 1.5u modifiers (k4A and k4C) between the spacebar and the Left
* arrow key
* ,---------------------------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -_| =+| \||Bsp|Del|P/ |P* |P- |
@@ -58,28 +56,28 @@
* `---------------------------------------------------------------------------'
*/
#define LAYOUT_ansi( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, K116, K117, K118, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K214, K215, K216, K217, K218, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, K316, K317, K318, \
- K400, K401, K402, K406, K410, K412, K413, K414, K415, K416, K417, K418 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, k1G, k1H, k1I, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2E, k2F, k2G, k2H, k2I, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, k3G, k3H, k3I, \
+ k40, k41, k42, k46, k4A, k4C, k4D, k4E, k4F, k4G, k4H, k4I \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, K114, K115, K116, K117, K118 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, ____, ____, K214, K215, K216, K217, K218 }, \
- { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, K314, K315, K316, K317, K318 }, \
- { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, ____, K412, K413, K414, K415, K416, K417, K418 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, k1E, k1F, k1G, k1H, k1I }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, ___, k2E, k2F, k2G, k2H, k2I }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, k3E, k3F, k3G, k3H, k3I }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, ___, k4C, k4D, k4E, k4F, k4G, k4H, k4I } \
}
/* LAYOUT_iso
*
* This layout uses:
*
- * - Split Backspace (K013 and K014)
- * - ISO Enter (K114)
- * - ISO Left Shift and 1u (K300 and K301)
- * - Compact right Shift (K312 and K314)
- * - Two 1.5u modifiers (K410 and K412) between the spacebar and the Left
+ * - Split Backspace (k0D and k0E)
+ * - ISO Enter (k1E)
+ * - ISO Left Shift and 1u (k30 and k31)
+ * - Compact right Shift (k3C and k3E)
+ * - Two 1.5u modifiers (k4A and k4C) between the spacebar and the Left
* arrow key
* ,---------------------------------------------------------------------------.
* |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -_| =+| \||Bsp|Del|P/ |P* |P- |
@@ -94,17 +92,15 @@
* `---------------------------------------------------------------------------'
*/
#define LAYOUT_iso( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, K116, K117, K118, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K215, K216, K217, K218, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, K316, K317, K318, \
- K400, K401, K402, K406, K410, K412, K413, K414, K415, K416, K417, K418 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, k1F, k1G, k1H, k1I, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2F, k2G, k2H, k2I, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3E, k3F, k3G, k3H, k3I, \
+ k40, k41, k42, k46, k4A, k4C, k4D, k4E, k4F, k4G, k4H, k4I \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, K114, K115, K116, K117, K118 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, ____, K215, K216, K217, K218 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, K314, K315, K316, K317, K318 }, \
- { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, ____, K412, K413, K414, K415, K416, K417, K418 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, k1E, k1F, k1G, k1H, k1I }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, ___, ___, k2F, k2G, k2H, k2I }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, k3E, k3F, k3G, k3H, k3I }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, ___, k4C, k4D, k4E, k4F, k4G, k4H, k4I } \
}
-
-#endif
diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk
index 507f4fcd37..7837adcbd3 100644
--- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk
@@ -22,4 +22,5 @@ ENCODER_ENABLE = no # Enable rotary encoder support
AUDIO_ENABLE = no # Audio output
KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra
-HAPTIC_ENABLE += SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk
index 30eb89bb7e..2886985a0d 100644
--- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk
@@ -22,5 +22,7 @@ ENCODER_ENABLE = no # Enable rotary encoder support
AUDIO_ENABLE = no # Audio output
KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra
-HAPTIC_ENABLE += SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
+
LAYOUTS = fullsize_ansi fullsize_iso
diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk
index 507f4fcd37..7837adcbd3 100644
--- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk
@@ -22,4 +22,5 @@ ENCODER_ENABLE = no # Enable rotary encoder support
AUDIO_ENABLE = no # Audio output
KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra
-HAPTIC_ENABLE += SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk
index 507f4fcd37..7837adcbd3 100644
--- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk
@@ -22,4 +22,5 @@ ENCODER_ENABLE = no # Enable rotary encoder support
AUDIO_ENABLE = no # Audio output
KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra
-HAPTIC_ENABLE += SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
diff --git a/keyboards/waldo/keymaps/default_split_shft_bck/config.h b/keyboards/waldo/keymaps/default_split_shft_bck/config.h
deleted file mode 100644
index 19a485296e..0000000000
--- a/keyboards/waldo/keymaps/default_split_shft_bck/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-
-#endif
diff --git a/keyboards/westfoxtrot/aanzee/aanzee.h b/keyboards/westfoxtrot/aanzee/aanzee.h
index aa1b916560..1cfa1784fb 100644
--- a/keyboards/westfoxtrot/aanzee/aanzee.h
+++ b/keyboards/westfoxtrot/aanzee/aanzee.h
@@ -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/>.
*/
-#ifndef AANZEE_H
-#define AANZEE_H
+
+#pragma once
#define ___ KC_NO
@@ -28,38 +28,33 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-// readability
-
#define LAYOUT_ansi( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0F, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
-) \
-{ \
- {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F}, \
- {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, ___}, \
- {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, K2E, ___}, \
- {K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___}, \
- {K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, ___, K4C, K4D, K4E, ___} \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0F, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k46, k49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, k2E, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4A, ___, k4C, k4D, k4E, ___ } \
}
+
#define LAYOUT_iso( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
-) \
-{ \
- {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, ___}, \
- {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, K1E, ___}, \
- {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, ___}, \
- {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___}, \
- {K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, ___, K4C, K4D, K4E, ___} \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k46, k49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, ___ }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, k1E, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4A, ___, k4C, k4D, k4E, ___ } \
}
void matrix_init_user(void);
void matrix_scan_user(void);
-
-#endif
diff --git a/keyboards/westfoxtrot/cyclops/cyclops.h b/keyboards/westfoxtrot/cyclops/cyclops.h
index d82c56744c..50744929de 100644
--- a/keyboards/westfoxtrot/cyclops/cyclops.h
+++ b/keyboards/westfoxtrot/cyclops/cyclops.h
@@ -13,11 +13,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef CYCLOPS_H
-#define CYCLOPS_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -27,17 +29,15 @@
* represents the switch matrix.
*/
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
- K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K4D, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4E, K2E \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k4D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4E, k2E \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
- { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, k4E } \
}
-
-#endif
diff --git a/keyboards/whitefox/config.h b/keyboards/whitefox/config.h
index 1cdac01d07..d2b6639a30 100644
--- a/keyboards/whitefox/config.h
+++ b/keyboards/whitefox/config.h
@@ -72,9 +72,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define I2C1_CLOCK_SPEED 400000
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-#define I2C1_BANK GPIOB
-#define I2C1_SCL 0
-#define I2C1_SDA 1
+#define I2C1_SCL_PIN B0
+#define I2C1_SDA_PIN B1
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
diff --git a/keyboards/whitefox/gfxconf.h b/keyboards/whitefox/gfxconf.h
deleted file mode 100644
index ca338399d3..0000000000
--- a/keyboards/whitefox/gfxconf.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * This file has a different license to the rest of the uGFX system.
- * You can copy, modify and distribute this file as you see fit.
- * You do not need to publish your source modifications to this file.
- * The only thing you are not permitted to do is to relicense it
- * under a different license.
- */
-
-/**
- * Copy this file into your project directory and rename it as gfxconf.h
- * Edit your copy to turn on the uGFX features you want to use.
- * The values below are the defaults.
- *
- * Only remove the comments from lines where you want to change the
- * default value. This allows definitions to be included from
- * driver makefiles when required and provides the best future
- * compatibility for your project.
- *
- * Please use spaces instead of tabs in this file.
- */
-
-#ifndef _GFXCONF_H
-#define _GFXCONF_H
-
-#include "common_gfxconf.h"
-
-#endif /* _GFXCONF_H */
diff --git a/keyboards/whitefox/visualizer.c b/keyboards/whitefox/visualizer.c
deleted file mode 100644
index 3846e92789..0000000000
--- a/keyboards/whitefox/visualizer.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "visualizer.h"
-#include "visualizer_keyframes.h"
-#include "default_animations.h"
-
-static bool initial_update = true;
-
-// Feel free to modify the animations below, or even add new ones if needed
-
-void initialize_user_visualizer(visualizer_state_t *state) {
- // The brightness will be dynamically adjustable in the future
- // But for now, change it here.
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
-
-void update_user_visualizer_state(visualizer_state_t *state, visualizer_keyboard_status_t *prev_status) {
- // Add more tests, change the colors and layer texts here
- // Usually you want to check the high bits (higher layers first)
- // because that's the order layers are processed for keypresses
- // You can for check for example:
- // state->status.layer
- // state->status.default_layer
- // state->status.leds (see led.h for available statuses)
-
- if (initial_update) {
- initial_update = false;
- start_keyframe_animation(&led_test_animation);
- }
-}
-
-void user_visualizer_suspend(visualizer_state_t *state) {
- start_keyframe_animation(&default_suspend_animation);
-}
-
-void user_visualizer_resume(visualizer_state_t *state) {
- initial_update = true;
- start_keyframe_animation(&default_startup_animation);
-}
diff --git a/keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h b/keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h
index d55ad598ca..c23a4d003c 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h
+++ b/keyboards/wilba_tech/rama_works_m10_b/rama_works_m10_b.h
@@ -13,17 +13,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "quantum.h"
+#pragma once
-#ifndef RAMA_M10_B_H
-#define RAMA_M10_B_H
+#include "quantum.h"
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
-#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 ) \
- { \
- {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09}, \
- }
-#endif // RAMA_M10_B
+#define LAYOUT( \
+ k00, k01, k02, \
+ k03, k04, k05, \
+ k06, k07, k08, \
+ k09 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 } \
+}
diff --git a/keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h b/keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h
index d3c7bad332..0a38581450 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h
+++ b/keyboards/wilba_tech/rama_works_m6_a/rama_works_m6_a.h
@@ -13,17 +13,17 @@
* 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"
-#ifndef RAMA_M6_A_H
-#define RAMA_M6_A_H
+#pragma once
+
+#include "quantum.h"
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguments
// The second converts the arguments into a two-dimensional array
-#define LAYOUT( \
- K00, K01, K02, K03, K04, K05) \
- { \
- {K00, K01, K02, K03, K04, K05}, \
- }
-#endif // RAMA_M6_A
+#define LAYOUT( \
+ k00, k01, k02, \
+ k03, k04, k05 \
+) { \
+ { k00, k01, k02, k03, k04, k05 } \
+}
diff --git a/keyboards/xbows/numpad/config.h b/keyboards/xbows/numpad/config.h
index d3ef6ed9d1..4617ce36af 100644
--- a/keyboards/xbows/numpad/config.h
+++ b/keyboards/xbows/numpad/config.h
@@ -46,6 +46,5 @@
# define DRIVER_ADDR_1 0b1110111
# define DRIVER_COUNT 1
-# define DRIVER_1_LED_TOTAL 22
-# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL)
+# define DRIVER_LED_TOTAL 22
#endif
diff --git a/keyboards/xelus/kangaroo/config.h b/keyboards/xelus/kangaroo/config.h
index f6b17c24a3..1d746b342e 100644
--- a/keyboards/xelus/kangaroo/config.h
+++ b/keyboards/xelus/kangaroo/config.h
@@ -43,8 +43,8 @@
#define LOCKING_RESYNC_ENABLE
// I2C OLED defines
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
diff --git a/keyboards/xelus/pachi/rgb/config.h b/keyboards/xelus/pachi/rgb/config.h
index 9378b2c413..f144db47a2 100644
--- a/keyboards/xelus/pachi/rgb/config.h
+++ b/keyboards/xelus/pachi/rgb/config.h
@@ -45,8 +45,8 @@
#define LOCKING_RESYNC_ENABLE
// I2C setup
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
@@ -60,11 +60,10 @@
// RGB Matrix defines
#define DRIVER_ADDR_1 0b0110000
-#define DRIVER_ADDR_2 0b0110001
+//#define DRIVER_ADDR_2 0b0110001
#define DRIVER_COUNT 1
-#define DRIVER_1_LED_TOTAL 117
-#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_LED_TOTAL 117
#define ISSI_DRIVER_TOTAL DRIVER_LED_TOTAL
#define RGB_MATRIX_STARTUP_VAL 80
diff --git a/keyboards/xelus/valor/rev2/config.h b/keyboards/xelus/valor/rev2/config.h
index 2ab581c753..502cc482ec 100644
--- a/keyboards/xelus/valor/rev2/config.h
+++ b/keyboards/xelus/valor/rev2/config.h
@@ -47,8 +47,8 @@
#define LOCKING_RESYNC_ENABLE
// I2C setup
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
diff --git a/keyboards/xelus/valor_frl_tkl/config.h b/keyboards/xelus/valor_frl_tkl/config.h
index 5319a95bae..c1c08878c0 100644
--- a/keyboards/xelus/valor_frl_tkl/config.h
+++ b/keyboards/xelus/valor_frl_tkl/config.h
@@ -47,8 +47,8 @@
#define LOCKING_RESYNC_ENABLE
// I2C OLED defines
-#define I2C1_SCL 8
-#define I2C1_SDA 9
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
diff --git a/keyboards/xiudi/xd87/xd87.h b/keyboards/xiudi/xd87/xd87.h
index 0dec1f6a14..2d700d7ba4 100644
--- a/keyboards/xiudi/xd87/xd87.h
+++ b/keyboards/xiudi/xd87/xd87.h
@@ -13,58 +13,57 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef XD87_H
-#define XD87_H
+
+#pragma once
#include "quantum.h"
+#define XXX KC_NO
+
#define LAYOUT_all( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3E, K1E, K1F, K1G, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, \
- K50, K51, K52, K55, K58, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k3E, k1E, k1F, k1G, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, \
+ k50, k51, k52, k55, k58, k5A, k5B, k5C, k5D, k5E, k5F, k5G \
) { \
-/* 0 1 2 3 4 5 6 7 8 9 A B C D E F G */ \
-/* 0 */ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
-/* 1 */ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
-/* 2 */ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
-/* 3 */ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \
-/* 4 */ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G }, \
-/* 5 */ { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G }, \
+ { k50, k51, k52, XXX, XXX, k55, XXX, XXX, k58, XXX, k5A, k5B, k5C, k5D, k5E, k5F, k5G } \
}
#define LAYOUT_tkl_ansi( \
- K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
- K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
- K50, K51, K52, K58, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+ k00, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4F, \
+ k50, k51, k52, k58, k5A, k5B, k5C, k5D, k5E, k5F, k5G \
) { \
- {K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
- {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
- {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
- {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO,KC_NO }, \
- {K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
- {K50, K51, K52, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
+ { k00, XXX, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX, XXX, XXX }, \
+ { k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, XXX, XXX, k4F, XXX }, \
+ { k50, k51, k52, XXX, XXX, XXX, XXX, XXX, k58, XXX, k5A, k5B, k5C, k5D, k5E, k5F, k5G } \
}
#define LAYOUT_tkl_iso( \
- K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
- K50, K51, K52, K58, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+ k00, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, k2F, k2G, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4F, \
+ k50, k51, k52, k58, k5A, k5B, k5C, k5D, k5E, k5F, k5G \
) { \
- {K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
- {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
- {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F, K2G }, \
- {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO,KC_NO }, \
- {K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
- {K50, K51, K52, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
+ { k00, XXX, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, XXX, XXX }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, XXX, XXX, k4F, XXX }, \
+ { k50, k51, k52, XXX, XXX, XXX, XXX, XXX, k58, XXX, k5A, k5B, k5C, k5D, k5E, k5F, k5G } \
}
-
-#endif
diff --git a/keyboards/xmmx/config.h b/keyboards/xmmx/config.h
index c54e432398..773f612089 100644
--- a/keyboards/xmmx/config.h
+++ b/keyboards/xmmx/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -48,5 +47,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/xw60/rules.mk b/keyboards/xw60/rules.mk
index 5921be64c3..fc192e0593 100644
--- a/keyboards/xw60/rules.mk
+++ b/keyboards/xw60/rules.mk
@@ -17,6 +17,7 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: ht
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-HAPTIC_ENABLE += SOLENOID
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = SOLENOID
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/yd68/yd68.h b/keyboards/yd68/yd68.h
index d5d98dec08..3303bd899e 100644
--- a/keyboards/yd68/yd68.h
+++ b/keyboards/yd68/yd68.h
@@ -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/>.
*/
-#ifndef YD68_H
-#define YD68_H
+
+#pragma once
#include "quantum.h"
@@ -45,18 +45,15 @@
// The second converts the arguments into a two-dimensional array
#define LAYOUT_ansi( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k48, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2e, \
- k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
- k40, k41, k42, k46, k49, k4a, k4b, k4c, k4d, k4e \
-) \
-{ \
- {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e}, \
- {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e}, \
- {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, k2e}, \
- {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e}, \
- {k40, k41, k42, XXX, XXX, XXX, k46, XXX, k48, k49, k4a, k4b, k4c, k4d, k4e} \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k48, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k46, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, k48, k49, k4A, k4B, k4C, k4D, k4E } \
}
-
-#endif
diff --git a/keyboards/yosino58/rev1/split_scomm.h b/keyboards/yosino58/rev1/split_scomm.h
index 873d8939d8..16887eb74f 100644
--- a/keyboards/yosino58/rev1/split_scomm.h
+++ b/keyboards/yosino58/rev1/split_scomm.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_COMM_H
-#define SPLIT_COMM_H
+#pragma once
#ifndef SERIAL_USE_MULTI_TRANSACTION
/* --- USE Simple API (OLD API, compatible with let's split serial.c) --- */
@@ -20,5 +19,3 @@ void serial_slave_init(void);
int serial_update_buffers(int master_changed);
#endif
-
-#endif /* SPLIT_COMM_H */
diff --git a/keyboards/yosino58/rev1/split_util.h b/keyboards/yosino58/rev1/split_util.h
index 687ca19bd3..f593047560 100644
--- a/keyboards/yosino58/rev1/split_util.h
+++ b/keyboards/yosino58/rev1/split_util.h
@@ -1,5 +1,4 @@
-#ifndef SPLIT_KEYBOARD_UTIL_H
-#define SPLIT_KEYBOARD_UTIL_H
+#pragma once
#include <stdbool.h>
#include "eeconfig.h"
@@ -15,5 +14,3 @@ void split_keyboard_setup(void);
bool has_usb(void);
void matrix_master_OLED_init (void);
-
-#endif
diff --git a/keyboards/yosino58/serial.h b/keyboards/yosino58/serial.h
index 7e0c0847a4..ac3459c876 100644
--- a/keyboards/yosino58/serial.h
+++ b/keyboards/yosino58/serial.h
@@ -1,5 +1,4 @@
-#ifndef SOFT_SERIAL_H
-#define SOFT_SERIAL_H
+#pragma once
#include <stdbool.h>
@@ -80,5 +79,3 @@ int soft_serial_transaction(int sstd_index);
#ifdef SERIAL_USE_MULTI_TRANSACTION
int soft_serial_get_and_clean_status(int sstd_index);
#endif
-
-#endif /* SOFT_SERIAL_H */
diff --git a/keyboards/zlant/config.h b/keyboards/zlant/config.h
index fd5632199b..922c446a01 100755
--- a/keyboards/zlant/config.h
+++ b/keyboards/zlant/config.h
@@ -1,5 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
+#pragma once
#include "config_common.h"
@@ -45,5 +44,3 @@
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#endif
-
-#endif
diff --git a/keyboards/zlant/zlant.h b/keyboards/zlant/zlant.h
index 5fbc968ad8..86cd9fef85 100755
--- a/keyboards/zlant/zlant.h
+++ b/keyboards/zlant/zlant.h
@@ -1,32 +1,29 @@
-#ifndef KB_H
-#define KB_H
+#pragma once
#include "quantum.h"
#define LAYOUT_ortho_4x12( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT_planck_mit( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
- { K300, K301, K302, K303, K304, K305, K305, K307, K308, K309, K310, K311 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT LAYOUT_ortho_4x12
-
-#endif
diff --git a/layouts/community/ergodox/333fred/keymap.c b/layouts/community/ergodox/333fred/keymap.c
index b9aefd9293..5dee9a1e3f 100644
--- a/layouts/community/ergodox/333fred/keymap.c
+++ b/layouts/community/ergodox/333fred/keymap.c
@@ -272,3 +272,43 @@ void matrix_scan_user(void) {
ergodox_led_all_on();
}
+#ifdef ST7565_ENABLE
+
+void st7565_task_user(void) {
+ // The colors will need to be ported over to the quantum painter API when
+ // https://github.com/qmk/qmk_firmware/pull/10174 is merged.
+
+ st7565_clear();
+ switch (get_highest_layer(layer_state)) {
+ case BASE:
+ //state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
+ st7565_write_P(PSTR("Default\n"), false);
+ break;
+ case CODEFLOW:
+ //state->target_lcd_color = LCD_COLOR(216, 90, 0xFF);
+ st7565_write_P(PSTR("Code\n"), false);
+ break;
+ case SYMB:
+ //state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
+ st7565_write_P(PSTR("Symbol\n"), false);
+ break;
+ case MDIA:
+ //state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
+ st7565_write_P(PSTR("Media\n"), false);
+ break;
+ case VIM:
+ //state->target_lcd_color = LCD_COLOR(140, 100, 60);
+ st7565_write_P(PSTR("Movement\n"), false);
+ break;
+ case GAME:
+ //state->target_lcd_color = LCD_COLOR(0, 255, 60);
+ st7565_write_P(PSTR("Game\n"), false);
+ break;
+ case GAME_ARROW:
+ //state->target_lcd_color = LCD_COLOR(0, 255, 60);
+ st7565_write_P(PSTR("Game Arrow\n"), false);
+ break;
+ }
+}
+
+#endif
diff --git a/layouts/community/ergodox/333fred/rules.mk b/layouts/community/ergodox/333fred/rules.mk
index f6c71feb46..9a3e2b97e5 100644
--- a/layouts/community/ergodox/333fred/rules.mk
+++ b/layouts/community/ergodox/333fred/rules.mk
@@ -1,5 +1,2 @@
-LCD_BACKLIGHT_ENABLE = yes
-LCD_ENABLE = yes
-BACKLIGHT_ENABLE = yes
KEY_LOCK_ENABLE = yes
CONSOLE_ENABLE = no
diff --git a/layouts/community/ergodox/333fred/visualizer.c b/layouts/community/ergodox/333fred/visualizer.c
deleted file mode 100644
index d13b3cd794..0000000000
--- a/layouts/community/ergodox/333fred/visualizer.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL.
-*/
-
-#include "simple_visualizer.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- uint8_t saturation = 60;
- if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
- saturation = 255;
- }
- if (state->status.layer & 0x80) {
- state->target_lcd_color = LCD_COLOR(0, 255, 60);
- state->layer_text = "Game Arrow";
- } else if (state->status.layer & 0x40) {
- state->target_lcd_color = LCD_COLOR(0, 255, 60);
- state->layer_text = "Game";
- } else if (state->status.layer & 0x20) {
- state->target_lcd_color = LCD_COLOR(140, 100, 60);
- state->layer_text = "Movement";
- } else if (state->status.layer & 0x10) {
- state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
- state->layer_text = "Media";
- } else if (state->status.layer & 0x8) {
- state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
- state->layer_text = "Symbol";
- } else if (state->status.layer & 0x2 || state->status.layer & 0x4) {
- state->target_lcd_color = LCD_COLOR(216, 90, 0xFF);
- state->layer_text = "Code";
- } else {
- state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
- state->layer_text = "Default";
- }
-}
diff --git a/layouts/community/ergodox/adnw_p_u_q/visualizer.c b/layouts/community/ergodox/adnw_p_u_q/visualizer.c
deleted file mode 100644
index 9a4d485387..0000000000
--- a/layouts/community/ergodox/adnw_p_u_q/visualizer.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Note: this is a modified copy of ../default/visualizer.c, originally licensed GPL.
-*/
-
-#include "simple_visualizer.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
-
- if (state->status.layer & 0x20) {
- state->target_lcd_color = LCD_COLOR(127, 0xFF, 0xFF);
- state->layer_text = "Mouse";
- } else if (state->status.layer & 0x10) {
- state->target_lcd_color = LCD_COLOR(85, 0xFF, 0xFF);
- state->layer_text = "Symbol";
- } else if (state->status.layer & 0x8) {
- state->target_lcd_color = LCD_COLOR(64, 0xFF, 0xFF);
- state->layer_text = "Brackets";
- } else if (state->status.layer & 0x4) {
- state->target_lcd_color = LCD_COLOR(42, 0xFF, 0xFF);
- state->layer_text = "Diak";
- } else if (state->status.layer & 0x2) {
- state->target_lcd_color = LCD_COLOR(21, 0xFF, 0xFF);
- state->layer_text = "Terminal";
- } else {
- state->target_lcd_color = LCD_COLOR(192, 0xFF, 0xFF);
- state->layer_text = "Vim";
- }
-}
-
diff --git a/layouts/community/ergodox/belak/keymap.c b/layouts/community/ergodox/belak/keymap.c
index bca0dec913..de0fe1b1ae 100644
--- a/layouts/community/ergodox/belak/keymap.c
+++ b/layouts/community/ergodox/belak/keymap.c
@@ -33,11 +33,6 @@ enum belak_keycodes {
E_TSET,
};
-inline void tap(uint16_t keycode) {
- register_code(keycode);
- unregister_code(keycode);
-};
-
// TODO: Add LED support to the tap dance by using the advanced macro
#define LTOGGLE TD(TD_LAYER_TOGGLE)
@@ -273,17 +268,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case E_SHRUG: // ¯\_(ツ)_/¯
if (record->event.pressed) {
process_unicode((0x00AF|QK_UNICODE), record); // Hand
- tap(KC_BSLS); // Arm
+ tap_code16(KC_BSLS); // Arm
register_code(KC_RSFT);
- tap(KC_UNDS); // Arm
- tap(KC_LPRN); // Head
+ tap_code16(KC_UNDS); // Arm
+ tap_code16(KC_LPRN); // Head
unregister_code(KC_RSFT);
process_unicode((0x30C4|QK_UNICODE), record); // Face
register_code(KC_RSFT);
- tap(KC_RPRN); // Head
- tap(KC_UNDS); // Arm
+ tap_code16(KC_RPRN); // Head
+ tap_code16(KC_UNDS); // Arm
unregister_code(KC_RSFT);
- tap(KC_SLSH); // Arm
+ tap_code16(KC_SLSH); // Arm
process_unicode((0x00AF|QK_UNICODE), record); // Hand
}
return false;
@@ -291,19 +286,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case E_TFLIP: // (╯°□°)╯ ︵ â”»â”â”»
if (record->event.pressed) {
register_code(KC_RSFT);
- tap(KC_9);
+ tap_code16(KC_9);
unregister_code(KC_RSFT);
process_unicode((0x256F|QK_UNICODE), record); // Arm
process_unicode((0x00B0|QK_UNICODE), record); // Eye
process_unicode((0x25A1|QK_UNICODE), record); // Mouth
process_unicode((0x00B0|QK_UNICODE), record); // Eye
register_code(KC_RSFT);
- tap(KC_0);
+ tap_code16(KC_0);
unregister_code(KC_RSFT);
process_unicode((0x256F|QK_UNICODE), record); // Arm
- tap(KC_SPC);
+ tap_code16(KC_SPC);
process_unicode((0x0361|QK_UNICODE), record); // Flippy
- tap(KC_SPC);
+ tap_code16(KC_SPC);
process_unicode((0x253B|QK_UNICODE), record); // Table
process_unicode((0x2501|QK_UNICODE), record); // Table
process_unicode((0x253B|QK_UNICODE), record); // Table
@@ -316,18 +311,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
process_unicode((0x2500|QK_UNICODE), record); // Table
process_unicode((0x2500|QK_UNICODE), record); // Table
process_unicode((0x252C|QK_UNICODE), record); // Table
- tap(KC_SPC);
+ tap_code16(KC_SPC);
process_unicode((0x30CE|QK_UNICODE), record); // Arm
register_code(KC_RSFT);
- tap(KC_9);
+ tap_code16(KC_9);
unregister_code(KC_RSFT);
- tap(KC_SPC);
+ tap_code16(KC_SPC);
process_unicode((0x309C|QK_UNICODE), record); // Eye
- tap(KC_MINS);
+ tap_code16(KC_MINS);
process_unicode((0x309C|QK_UNICODE), record); // Eye
process_unicode((0x30CE|QK_UNICODE), record); // Arm
register_code(KC_RSFT);
- tap(KC_0);
+ tap_code16(KC_0);
unregister_code(KC_RSFT);
}
return false;
diff --git a/layouts/community/ergodox/belak/visualizer.c b/layouts/community/ergodox/belak/visualizer.c
deleted file mode 100644
index b92890a668..0000000000
--- a/layouts/community/ergodox/belak/visualizer.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-// Currently we are assuming that both the backlight and LCD are enabled
-// But it's entirely possible to write a custom visualizer that use only
-// one of them
-#ifndef LCD_BACKLIGHT_ENABLE
-#error This visualizer needs that LCD backlight is enabled
-#endif
-
-#ifndef LCD_ENABLE
-#error This visualizer needs that LCD is enabled
-#endif
-
-#include "simple_visualizer.h"
-
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- uint8_t saturation = 60;
- if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
- saturation = 255;
- }
-
- if (state->status.layer & 0x4) {
- state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
- state->layer_text = "Media";
- }
- else if (state->status.layer & 0x2) {
- state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
- state->layer_text = "Symbols";
- }
- else {
- state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
- state->layer_text = "Base";
- }
-}
diff --git a/layouts/community/ergodox/choromanski/visualizer.c b/layouts/community/ergodox/choromanski/visualizer.c
deleted file mode 100644
index e207c66822..0000000000
--- a/layouts/community/ergodox/choromanski/visualizer.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "simple_visualizer.h"
-
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
-
- if (state->status.layer & 0x20) {
- //GREEN
- state->target_lcd_color = LCD_COLOR(85, 255, 128);
- state->layer_text = "Gaming";
- }
- else if (state->status.layer & 0x10) {
- //ORANGE
- state->target_lcd_color = LCD_COLOR(28, 255, 230);
- state->layer_text = "Numpad & Mouse";
- }
- else if (state->status.layer & 0x8) {
- //YELLOW
- state->target_lcd_color = LCD_COLOR(38, 255, 230);
- state->layer_text = "Symbols";
- }
- else if (state->status.layer & 0x4) {
- //RED
- state->target_lcd_color = LCD_COLOR(0, 255, 95);
- if (state->status.layer & 0x2){
- state->layer_text = "Qwerty - Fn";
- }else{
- state->layer_text = "Colemak - Fn";
- }
- }
- else if (state->status.layer & 0x2) {
- //BLUE
- state->target_lcd_color = LCD_COLOR(149, 255, 192);
- state->layer_text = "Qwerty";
- }
- else {
- //PURPLE
- state->target_lcd_color = LCD_COLOR(200, 255, 192);
- state->layer_text = "Colemak";
- }
-}
-
diff --git a/layouts/community/ergodox/drashna/visualizer.c_old b/layouts/community/ergodox/drashna/visualizer.c_old
deleted file mode 100644
index 6b1c3ff498..0000000000
--- a/layouts/community/ergodox/drashna/visualizer.c_old
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-Copyright 2017 Fred Sundvik
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "./simple_visualizer.h"
-#include "util.h"
-#include "drashna.h"
-#include "rgblight_list.h"
-
-#define LCD_COLOR_wrapper(...) LCD_COLOR(__VA_ARGS__)
-// This function should be implemented by the keymap visualizer
-// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
-// that the simple_visualizer assumes that you are updating
-// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
-// stopped. This can be done by either double buffering it or by using constant strings
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
-
- switch(get_highest_layer(state->status.layer|default_layer_state)) {
- case _LOWER:
- state->layer_text = "Lower";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_GREEN);
- break;
- case _RAISE:
- state->layer_text = "Raise";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_YELLOW);
- break;
- case _ADJUST:
- state->layer_text = "Adjust";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_RED);
- break;
- case _MACROS:
- state->layer_text = "Macros";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_ORANGE);
- break;
- case _MEDIA:
- state->layer_text = "Media";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_CHARTREUSE);
- break;
- case _GAMEPAD:
- state->layer_text = "Game";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_ORANGE);
- break;
- case _QWERTY:
- state->layer_text = "QWERTY";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_CYAN);
- break;
- case _WORKMAN:
- state->layer_text = "Workman";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_GOLDENROD);
- break;
- case _DVORAK:
- state->layer_text = "Dvorak";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_SPRINGGREEN);
- break;
- case _COLEMAK:
- state->layer_text = "Colemak";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_MAGENTA);
- break; break;
- default:
- state->layer_text = "NONE";
- state->target_lcd_color = LCD_COLOR_wrapper(HSV_RED);
- break;
- }
-}
diff --git a/layouts/community/ergodox/jackhumbert/keymap.c b/layouts/community/ergodox/jackhumbert/keymap.c
index 745d632d02..9d357881e2 100644
--- a/layouts/community/ergodox/jackhumbert/keymap.c
+++ b/layouts/community/ergodox/jackhumbert/keymap.c
@@ -85,11 +85,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
eeconfig_init();
}
break;
- case 2:
- if (record->event.pressed) { // For resetting EEPROM
- api_send_unicode(0x0CA0);
- }
- break;
}
return MACRO_NONE;
};
diff --git a/layouts/community/ergodox/osx_neo2/visualizer.c b/layouts/community/ergodox/osx_neo2/visualizer.c
deleted file mode 100644
index 653201bb8a..0000000000
--- a/layouts/community/ergodox/osx_neo2/visualizer.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "layers.h"
-#include "simple_visualizer.h"
-#include "util.h"
-
-static void get_visualizer_layer_and_color(visualizer_state_t *state) {
- uint8_t layer = biton32(state->status.layer);
-
- // Go from highest to lowest layer to get the right text/color combination.
- switch (layer) {
- // #AEB2F4 / hsv(65.71%, 28.69%, 95.69%)
- case FKEYS:
- // #F4AEDC / hsv(89.05%, 28.69%, 95.69%)
- state->layer_text = "FUNCTION KEYS";
- state->target_lcd_color = LCD_COLOR(228, 73, 245);
- break;
- case US_1:
- // #F4B993 / hsv(6.53%, 39.75%, 95.69%)
- state->layer_text = "QWERTY";
- state->target_lcd_color = LCD_COLOR(17, 102, 245);
- break;
- case NEO_6:
- // #F4E393 / hsv(13.75%, 39.75%, 95.69%)
- state->layer_text = "NEO: 6";
- state->target_lcd_color = LCD_COLOR(35, 102, 245);
- break;
- case NEO_5:
- // #C6F493 / hsv(24.57%, 39.75%, 95.69%)
- state->layer_text = "NEO: 5";
- state->target_lcd_color = LCD_COLOR(63, 102, 245);
- break;
- case NEO_4:
- // #8EEBC9 / hsv(43.91%, 39.57%, 92.16%)
- state->layer_text = "NEO: 4";
- state->target_lcd_color = LCD_COLOR(112, 101, 189);
- break;
- case NEO_3:
- // #93D2F4 / hsv(55.84%, 39.75%, 95.69%)
- state->layer_text = "NEO: 3";
- state->target_lcd_color = LCD_COLOR(143, 102, 245);
- break;
- default:
- // #EEEEEE / hsv(0%, 0%, 93%)
- state->layer_text = "NEO: 1";
- state->target_lcd_color = LCD_COLOR(0, 0, 255);
- break;
- }
-}
diff --git a/layouts/community/ortho_4x12/drashna/rules.mk b/layouts/community/ortho_4x12/drashna/rules.mk
index 775ad8e6eb..8c3e126636 100644
--- a/layouts/community/ortho_4x12/drashna/rules.mk
+++ b/layouts/community/ortho_4x12/drashna/rules.mk
@@ -28,7 +28,6 @@ ifeq ($(strip $(KEYBOARD)), planck/light)
RGBLIGHT_ENABLE = yes
RGBLIGHT_STARTUP_ANIMATION = yes
AUDIO_ENABLE = yes
- # HAPTIC_ENABLE += SOLENOID
endif
ifeq ($(strip $(KEYBOARD)), planck/ez)
RGBLIGHT_ENABLE = no
diff --git a/lib/chibios-contrib b/lib/chibios-contrib
-Subproject 4568901a91e9bef78ea96a7a83e8150fe1f7353
+Subproject d1c2126d1cd867c50127da84425805e225df855
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index 539d03e2fc..094ea80b8d 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -35,7 +35,6 @@ subcommands = [
'qmk.cli.chibios.confmigrate',
'qmk.cli.clean',
'qmk.cli.compile',
- 'qmk.cli.console',
'qmk.cli.docs',
'qmk.cli.doctor',
'qmk.cli.fileformat',
@@ -45,6 +44,7 @@ subcommands = [
'qmk.cli.format.python',
'qmk.cli.format.text',
'qmk.cli.generate.api',
+ 'qmk.cli.generate.compilation_database',
'qmk.cli.generate.config_h',
'qmk.cli.generate.dfu_header',
'qmk.cli.generate.docs',
diff --git a/lib/python/qmk/cli/console.py b/lib/python/qmk/cli/console.py
deleted file mode 100644
index 98c6bc0dc0..0000000000
--- a/lib/python/qmk/cli/console.py
+++ /dev/null
@@ -1,303 +0,0 @@
-"""Acquire debugging information from usb hid devices
-
-cli implementation of https://www.pjrc.com/teensy/hid_listen.html
-"""
-from pathlib import Path
-from threading import Thread
-from time import sleep, strftime
-
-import hid
-import usb.core
-
-from milc import cli
-
-LOG_COLOR = {
- 'next': 0,
- 'colors': [
- '{fg_blue}',
- '{fg_cyan}',
- '{fg_green}',
- '{fg_magenta}',
- '{fg_red}',
- '{fg_yellow}',
- ],
-}
-
-KNOWN_BOOTLOADERS = {
- # VID , PID
- ('03EB', '2FEF'): 'atmel-dfu: ATmega16U2',
- ('03EB', '2FF0'): 'atmel-dfu: ATmega32U2',
- ('03EB', '2FF3'): 'atmel-dfu: ATmega16U4',
- ('03EB', '2FF4'): 'atmel-dfu: ATmega32U4',
- ('03EB', '2FF9'): 'atmel-dfu: AT90USB64',
- ('03EB', '2FFA'): 'atmel-dfu: AT90USB162',
- ('03EB', '2FFB'): 'atmel-dfu: AT90USB128',
- ('03EB', '6124'): 'Microchip SAM-BA',
- ('0483', 'DF11'): 'stm32-dfu: STM32 BOOTLOADER',
- ('16C0', '05DC'): 'usbasploader: USBaspLoader',
- ('16C0', '05DF'): 'bootloadhid: HIDBoot',
- ('16C0', '0478'): 'halfkay: Teensy Halfkay',
- ('1B4F', '9203'): 'caterina: Pro Micro 3.3V',
- ('1B4F', '9205'): 'caterina: Pro Micro 5V',
- ('1B4F', '9207'): 'caterina: LilyPadUSB',
- ('1C11', 'B007'): 'kiibohd: Kiibohd DFU Bootloader',
- ('1EAF', '0003'): 'stm32duino: Maple 003',
- ('1FFB', '0101'): 'caterina: Polou A-Star 32U4 Bootloader',
- ('2341', '0036'): 'caterina: Arduino Leonardo',
- ('2341', '0037'): 'caterina: Arduino Micro',
- ('239A', '000C'): 'caterina: Adafruit Feather 32U4',
- ('239A', '000D'): 'caterina: Adafruit ItsyBitsy 32U4 3v',
- ('239A', '000E'): 'caterina: Adafruit ItsyBitsy 32U4 5v',
- ('2A03', '0036'): 'caterina: Arduino Leonardo',
- ('2A03', '0037'): 'caterina: Arduino Micro',
- ('314B', '0106'): 'apm32-dfu: APM32 DFU ISP Mode',
- ('03EB', '2067'): 'qmk-hid: HID Bootloader',
- ('03EB', '2045'): 'lufa-ms: LUFA Mass Storage Bootloader'
-}
-
-
-class MonitorDevice(object):
- def __init__(self, hid_device, numeric):
- self.hid_device = hid_device
- self.numeric = numeric
- self.device = hid.Device(path=hid_device['path'])
- self.current_line = ''
-
- cli.log.info('Console Connected: %(color)s%(manufacturer_string)s %(product_string)s{style_reset_all} (%(color)s%(vendor_id)04X:%(product_id)04X:%(index)d{style_reset_all})', hid_device)
-
- def read(self, size, encoding='ascii', timeout=1):
- """Read size bytes from the device.
- """
- return self.device.read(size, timeout).decode(encoding)
-
- def read_line(self):
- """Read from the device's console until we get a \n.
- """
- while '\n' not in self.current_line:
- self.current_line += self.read(32).replace('\x00', '')
-
- lines = self.current_line.split('\n', 1)
- self.current_line = lines[1]
-
- return lines[0]
-
- def run_forever(self):
- while True:
- try:
- message = {**self.hid_device, 'text': self.read_line()}
- identifier = (int2hex(message['vendor_id']), int2hex(message['product_id'])) if self.numeric else (message['manufacturer_string'], message['product_string'])
- message['identifier'] = ':'.join(identifier)
- message['ts'] = '{style_dim}{fg_green}%s{style_reset_all} ' % (strftime(cli.config.general.datetime_fmt),) if cli.args.timestamp else ''
-
- cli.echo('%(ts)s%(color)s%(identifier)s:%(index)d{style_reset_all}: %(text)s' % message)
-
- except hid.HIDException:
- break
-
-
-class FindDevices(object):
- def __init__(self, vid, pid, index, numeric):
- self.vid = vid
- self.pid = pid
- self.index = index
- self.numeric = numeric
-
- def run_forever(self):
- """Process messages from our queue in a loop.
- """
- live_devices = {}
- live_bootloaders = {}
-
- while True:
- try:
- for device in list(live_devices):
- if not live_devices[device]['thread'].is_alive():
- cli.log.info('Console Disconnected: %(color)s%(manufacturer_string)s %(product_string)s{style_reset_all} (%(color)s%(vendor_id)04X:%(product_id)04X:%(index)d{style_reset_all})', live_devices[device])
- del live_devices[device]
-
- for device in self.find_devices():
- if device['path'] not in live_devices:
- device['color'] = LOG_COLOR['colors'][LOG_COLOR['next']]
- LOG_COLOR['next'] = (LOG_COLOR['next'] + 1) % len(LOG_COLOR['colors'])
- live_devices[device['path']] = device
-
- try:
- monitor = MonitorDevice(device, self.numeric)
- device['thread'] = Thread(target=monitor.run_forever, daemon=True)
-
- device['thread'].start()
- except Exception as e:
- device['e'] = e
- device['e_name'] = e.__class__.__name__
- cli.log.error("Could not connect to %(color)s%(manufacturer_string)s %(product_string)s{style_reset_all} (%(color)s:%(vendor_id)04X:%(product_id)04X:%(index)d): %(e_name)s: %(e)s", device)
- if cli.config.general.verbose:
- cli.log.exception(e)
- del live_devices[device['path']]
-
- if cli.args.bootloaders:
- for device in self.find_bootloaders():
- if device.address in live_bootloaders:
- live_bootloaders[device.address]._qmk_found = True
- else:
- name = KNOWN_BOOTLOADERS[(int2hex(device.idVendor), int2hex(device.idProduct))]
- cli.log.info('Bootloader Connected: {style_bright}{fg_magenta}%s', name)
- device._qmk_found = True
- live_bootloaders[device.address] = device
-
- for device in list(live_bootloaders):
- if live_bootloaders[device]._qmk_found:
- live_bootloaders[device]._qmk_found = False
- else:
- name = KNOWN_BOOTLOADERS[(int2hex(live_bootloaders[device].idVendor), int2hex(live_bootloaders[device].idProduct))]
- cli.log.info('Bootloader Disconnected: {style_bright}{fg_magenta}%s', name)
- del live_bootloaders[device]
-
- sleep(.1)
-
- except KeyboardInterrupt:
- break
-
- def is_bootloader(self, hid_device):
- """Returns true if the device in question matches a known bootloader vid/pid.
- """
- return (int2hex(hid_device.idVendor), int2hex(hid_device.idProduct)) in KNOWN_BOOTLOADERS
-
- def is_console_hid(self, hid_device):
- """Returns true when the usage page indicates it's a teensy-style console.
- """
- return hid_device['usage_page'] == 0xFF31 and hid_device['usage'] == 0x0074
-
- def is_filtered_device(self, hid_device):
- """Returns True if the device should be included in the list of available consoles.
- """
- return int2hex(hid_device['vendor_id']) == self.vid and int2hex(hid_device['product_id']) == self.pid
-
- def find_devices_by_report(self, hid_devices):
- """Returns a list of available teensy-style consoles by doing a brute-force search.
-
- Some versions of linux don't report usage and usage_page. In that case we fallback to reading the report (possibly inaccurately) ourselves.
- """
- devices = []
-
- for device in hid_devices:
- path = device['path'].decode('utf-8')
-
- if path.startswith('/dev/hidraw'):
- number = path[11:]
- report = Path(f'/sys/class/hidraw/hidraw{number}/device/report_descriptor')
-
- if report.exists():
- rp = report.read_bytes()
-
- if rp[1] == 0x31 and rp[3] == 0x09:
- devices.append(device)
-
- return devices
-
- def find_bootloaders(self):
- """Returns a list of available bootloader devices.
- """
- return list(filter(self.is_bootloader, usb.core.find(find_all=True)))
-
- def find_devices(self):
- """Returns a list of available teensy-style consoles.
- """
- hid_devices = hid.enumerate()
- devices = list(filter(self.is_console_hid, hid_devices))
-
- if not devices:
- devices = self.find_devices_by_report(hid_devices)
-
- if self.vid and self.pid:
- devices = list(filter(self.is_filtered_device, devices))
-
- # Add index numbers
- device_index = {}
- for device in devices:
- id = ':'.join((int2hex(device['vendor_id']), int2hex(device['product_id'])))
-
- if id not in device_index:
- device_index[id] = 0
-
- device_index[id] += 1
- device['index'] = device_index[id]
-
- return devices
-
-
-def int2hex(number):
- """Returns a string representation of the number as hex.
- """
- return "%04X" % number
-
-
-def list_devices(device_finder):
- """Show the user a nicely formatted list of devices.
- """
- devices = device_finder.find_devices()
-
- if devices:
- cli.log.info('Available devices:')
- for dev in devices:
- color = LOG_COLOR['colors'][LOG_COLOR['next']]
- LOG_COLOR['next'] = (LOG_COLOR['next'] + 1) % len(LOG_COLOR['colors'])
- cli.log.info("\t%s%s:%s:%d{style_reset_all}\t%s %s", color, int2hex(dev['vendor_id']), int2hex(dev['product_id']), dev['index'], dev['manufacturer_string'], dev['product_string'])
-
- if cli.args.bootloaders:
- bootloaders = device_finder.find_bootloaders()
-
- if bootloaders:
- cli.log.info('Available Bootloaders:')
-
- for dev in bootloaders:
- cli.log.info("\t%s:%s\t%s", int2hex(dev.idVendor), int2hex(dev.idProduct), KNOWN_BOOTLOADERS[(int2hex(dev.idVendor), int2hex(dev.idProduct))])
-
-
-@cli.argument('--bootloaders', arg_only=True, default=True, action='store_boolean', help='displaying bootloaders.')
-@cli.argument('-d', '--device', help='Device to select - uses format <pid>:<vid>[:<index>].')
-@cli.argument('-l', '--list', arg_only=True, action='store_true', help='List available hid_listen devices.')
-@cli.argument('-n', '--numeric', arg_only=True, action='store_true', help='Show VID/PID instead of names.')
-@cli.argument('-t', '--timestamp', arg_only=True, action='store_true', help='Print the timestamp for received messages as well.')
-@cli.argument('-w', '--wait', type=int, default=1, help="How many seconds to wait between checks (Default: 1)")
-@cli.subcommand('Acquire debugging information from usb hid devices.', hidden=False if cli.config.user.developer else True)
-def console(cli):
- """Acquire debugging information from usb hid devices
- """
- vid = None
- pid = None
- index = 1
-
- if cli.config.console.device:
- device = cli.config.console.device.split(':')
-
- if len(device) == 2:
- vid, pid = device
-
- elif len(device) == 3:
- vid, pid, index = device
-
- if not index.isdigit():
- cli.log.error('Device index must be a number! Got "%s" instead.', index)
- exit(1)
-
- index = int(index)
-
- if index < 1:
- cli.log.error('Device index must be greater than 0! Got %s', index)
- exit(1)
-
- else:
- cli.log.error('Invalid format for device, expected "<pid>:<vid>[:<index>]" but got "%s".', cli.config.console.device)
- cli.print_help()
- exit(1)
-
- vid = vid.upper()
- pid = pid.upper()
-
- device_finder = FindDevices(vid, pid, index, cli.args.numeric)
-
- if cli.args.list:
- return list_devices(device_finder)
-
- print('Looking for devices...', flush=True)
- device_finder.run_forever()
diff --git a/lib/python/qmk/cli/doctor/check.py b/lib/python/qmk/cli/doctor/check.py
index 0807f41518..2d691b64b0 100644
--- a/lib/python/qmk/cli/doctor/check.py
+++ b/lib/python/qmk/cli/doctor/check.py
@@ -26,7 +26,6 @@ ESSENTIAL_BINARIES = {
'arm-none-eabi-gcc': {
'version_arg': '-dumpversion'
},
- 'bin/qmk': {},
}
diff --git a/lib/python/qmk/cli/flash.py b/lib/python/qmk/cli/flash.py
index c2d9e09c69..28e48a4101 100644
--- a/lib/python/qmk/cli/flash.py
+++ b/lib/python/qmk/cli/flash.py
@@ -18,17 +18,21 @@ def print_bootloader_help():
"""Prints the available bootloaders listed in docs.qmk.fm.
"""
cli.log.info('Here are the available bootloaders:')
+ cli.echo('\tavrdude')
+ cli.echo('\tbootloadhid')
cli.echo('\tdfu')
+ cli.echo('\tdfu-util')
+ cli.echo('\tmdloader')
+ cli.echo('\tst-flash')
+ cli.echo('\tst-link-cli')
+ cli.log.info('Enhanced variants for split keyboards:')
+ cli.echo('\tavrdude-split-left')
+ cli.echo('\tavrdude-split-right')
cli.echo('\tdfu-ee')
cli.echo('\tdfu-split-left')
cli.echo('\tdfu-split-right')
- cli.echo('\tavrdude')
- cli.echo('\tBootloadHID')
- cli.echo('\tdfu-util')
cli.echo('\tdfu-util-split-left')
cli.echo('\tdfu-util-split-right')
- cli.echo('\tst-link-cli')
- cli.echo('\tst-flash')
cli.echo('For more info, visit https://docs.qmk.fm/#/flashing')
diff --git a/lib/python/qmk/cli/format/python.py b/lib/python/qmk/cli/format/python.py
index 00612f97ec..b32a726401 100755
--- a/lib/python/qmk/cli/format/python.py
+++ b/lib/python/qmk/cli/format/python.py
@@ -11,15 +11,15 @@ def format_python(cli):
"""Format python code according to QMK's style.
"""
edit = '--diff' if cli.args.dry_run else '--in-place'
- yapf_cmd = ['yapf', '-vv', '--recursive', edit, 'bin/qmk', 'lib/python']
+ yapf_cmd = ['yapf', '-vv', '--recursive', edit, 'lib/python']
try:
cli.run(yapf_cmd, check=True, capture_output=False, stdin=DEVNULL)
- cli.log.info('Python code in `bin/qmk` and `lib/python` is correctly formatted.')
+ cli.log.info('Python code in `lib/python` is correctly formatted.')
return True
except CalledProcessError:
if cli.args.dry_run:
- cli.log.error('Python code in `bin/qmk` and `lib/python` incorrectly formatted!')
+ cli.log.error('Python code in `lib/python` is incorrectly formatted!')
else:
cli.log.error('Error formatting python code!')
diff --git a/lib/python/qmk/cli/generate/compilation_database.py b/lib/python/qmk/cli/generate/compilation_database.py
new file mode 100755
index 0000000000..602635270c
--- /dev/null
+++ b/lib/python/qmk/cli/generate/compilation_database.py
@@ -0,0 +1,133 @@
+"""Creates a compilation database for the given keyboard build.
+"""
+
+import json
+import os
+import re
+import shlex
+import shutil
+from functools import lru_cache
+from pathlib import Path
+from typing import Dict, Iterator, List, Union
+
+from milc import cli, MILC
+
+from qmk.commands import create_make_command
+from qmk.constants import QMK_FIRMWARE
+from qmk.decorators import automagic_keyboard, automagic_keymap
+
+
+@lru_cache(maxsize=10)
+def system_libs(binary: str) -> List[Path]:
+ """Find the system include directory that the given build tool uses.
+ """
+ cli.log.debug("searching for system library directory for binary: %s", binary)
+ bin_path = shutil.which(binary)
+
+ # Actually query xxxxxx-gcc to find its include paths.
+ if binary.endswith("gcc") or binary.endswith("g++"):
+ result = cli.run([binary, '-E', '-Wp,-v', '-'], capture_output=True, check=True, input='\n')
+ paths = []
+ for line in result.stderr.splitlines():
+ if line.startswith(" "):
+ paths.append(Path(line.strip()).resolve())
+ return paths
+
+ return list(Path(bin_path).resolve().parent.parent.glob("*/include")) if bin_path else []
+
+
+file_re = re.compile(r'printf "Compiling: ([^"]+)')
+cmd_re = re.compile(r'LOG=\$\((.+?)&&')
+
+
+def parse_make_n(f: Iterator[str]) -> List[Dict[str, str]]:
+ """parse the output of `make -n <target>`
+
+ This function makes many assumptions about the format of your build log.
+ This happens to work right now for qmk.
+ """
+
+ state = 'start'
+ this_file = None
+ records = []
+ for line in f:
+ if state == 'start':
+ m = file_re.search(line)
+ if m:
+ this_file = m.group(1)
+ state = 'cmd'
+
+ if state == 'cmd':
+ assert this_file
+ m = cmd_re.search(line)
+ if m:
+ # we have a hit!
+ this_cmd = m.group(1)
+ args = shlex.split(this_cmd)
+ for s in system_libs(args[0]):
+ args += ['-isystem', '%s' % s]
+ new_cmd = ' '.join(shlex.quote(s) for s in args if s != '-mno-thumb-interwork')
+ records.append({"directory": str(QMK_FIRMWARE.resolve()), "command": new_cmd, "file": this_file})
+ state = 'start'
+
+ return records
+
+
+@cli.argument('-kb', '--keyboard', help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.')
+@cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Ignored when a configurator export is supplied.')
+@cli.subcommand('Create a compilation database.')
+@automagic_keyboard
+@automagic_keymap
+def generate_compilation_database(cli: MILC) -> Union[bool, int]:
+ """Creates a compilation database for the given keyboard build.
+
+ Does a make clean, then a make -n for this target and uses the dry-run output to create
+ a compilation database (compile_commands.json). This file can help some IDEs and
+ IDE-like editors work better. For more information about this:
+
+ https://clang.llvm.org/docs/JSONCompilationDatabase.html
+ """
+ command = None
+ # check both config domains: the magic decorator fills in `generate_compilation_database` but the user is
+ # more likely to have set `compile` in their config file.
+ current_keyboard = cli.config.generate_compilation_database.keyboard or cli.config.user.keyboard
+ current_keymap = cli.config.generate_compilation_database.keymap or cli.config.user.keymap
+
+ if current_keyboard and current_keymap:
+ # Generate the make command for a specific keyboard/keymap.
+ command = create_make_command(current_keyboard, current_keymap, dry_run=True)
+ elif not current_keyboard:
+ cli.log.error('Could not determine keyboard!')
+ elif not current_keymap:
+ cli.log.error('Could not determine keymap!')
+
+ if not command:
+ cli.log.error('You must supply both `--keyboard` and `--keymap`, or be in a directory for a keyboard or keymap.')
+ cli.echo('usage: qmk compiledb [-kb KEYBOARD] [-km KEYMAP]')
+ return False
+
+ # remove any environment variable overrides which could trip us up
+ env = os.environ.copy()
+ env.pop("MAKEFLAGS", None)
+
+ # re-use same executable as the main make invocation (might be gmake)
+ clean_command = [command[0], 'clean']
+ cli.log.info('Making clean with {fg_cyan}%s', ' '.join(clean_command))
+ cli.run(clean_command, capture_output=False, check=True, env=env)
+
+ cli.log.info('Gathering build instructions from {fg_cyan}%s', ' '.join(command))
+
+ result = cli.run(command, capture_output=True, check=True, env=env)
+ db = parse_make_n(result.stdout.splitlines())
+ if not db:
+ cli.log.error("Failed to parse output from make output:\n%s", result.stdout)
+ return False
+
+ cli.log.info("Found %s compile commands", len(db))
+
+ dbpath = QMK_FIRMWARE / 'compile_commands.json'
+
+ cli.log.info(f"Writing build database to {dbpath}")
+ dbpath.write_text(json.dumps(db, indent=4))
+
+ return True
diff --git a/lib/python/qmk/cli/lint.py b/lib/python/qmk/cli/lint.py
index 02b31fbc41..96593ed69b 100644
--- a/lib/python/qmk/cli/lint.py
+++ b/lib/python/qmk/cli/lint.py
@@ -1,72 +1,129 @@
"""Command to look over a keyboard/keymap and check for common mistakes.
"""
+from pathlib import Path
+
from milc import cli
from qmk.decorators import automagic_keyboard, automagic_keymap
from qmk.info import info_json
-from qmk.keyboard import find_readme, keyboard_completer
+from qmk.keyboard import keyboard_completer, list_keyboards
from qmk.keymap import locate_keymap
from qmk.path import is_keyboard, keyboard
-@cli.argument('--strict', action='store_true', help='Treat warnings as errors.')
-@cli.argument('-kb', '--keyboard', completer=keyboard_completer, help='The keyboard to check.')
-@cli.argument('-km', '--keymap', help='The keymap to check.')
+def keymap_check(kb, km):
+ """Perform the keymap level checks.
+ """
+ ok = True
+ keymap_path = locate_keymap(kb, km)
+
+ if not keymap_path:
+ ok = False
+ cli.log.error("%s: Can't find %s keymap.", kb, km)
+
+ return ok
+
+
+def rules_mk_assignment_only(keyboard_path):
+ """Check the keyboard-level rules.mk to ensure it only has assignments.
+ """
+ current_path = Path()
+ errors = []
+
+ for path_part in keyboard_path.parts:
+ current_path = current_path / path_part
+ rules_mk = current_path / 'rules.mk'
+
+ if rules_mk.exists():
+ continuation = None
+
+ for i, line in enumerate(rules_mk.open()):
+ line = line.strip()
+
+ if '#' in line:
+ line = line[:line.index('#')]
+
+ if continuation:
+ line = continuation + line
+ continuation = None
+
+ if line:
+ if line[-1] == '\\':
+ continuation = line[:-1]
+ continue
+
+ if line and '=' not in line:
+ errors.append(f'Non-assignment code on line +{i} {rules_mk}: {line}')
+
+ return errors
+
+
+@cli.argument('--strict', action='store_true', help='Treat warnings as errors')
+@cli.argument('-kb', '--keyboard', completer=keyboard_completer, help='Comma separated list of keyboards to check')
+@cli.argument('-km', '--keymap', help='The keymap to check')
+@cli.argument('--all-kb', action='store_true', arg_only=True, help='Check all keyboards')
@cli.subcommand('Check keyboard and keymap for common mistakes.')
@automagic_keyboard
@automagic_keymap
def lint(cli):
"""Check keyboard and keymap for common mistakes.
"""
- if not cli.config.lint.keyboard:
- cli.log.error('Missing required argument: --keyboard')
- cli.print_help()
- return False
+ failed = []
- if not is_keyboard(cli.config.lint.keyboard):
- cli.log.error('No such keyboard: %s', cli.config.lint.keyboard)
- return False
+ # Determine our keyboard list
+ if cli.args.all_kb:
+ if cli.args.keyboard:
+ cli.log.warning('Both --all-kb and --keyboard passed, --all-kb takes presidence.')
- # Gather data about the keyboard.
- ok = True
- keyboard_path = keyboard(cli.config.lint.keyboard)
- keyboard_info = info_json(cli.config.lint.keyboard)
- readme_path = find_readme(cli.config.lint.keyboard)
- missing_readme_path = keyboard_path / 'readme.md'
+ keyboard_list = list_keyboards()
+ elif not cli.config.lint.keyboard:
+ cli.log.error('Missing required arguments: --keyboard or --all-kb')
+ cli.print_help()
+ return False
+ else:
+ keyboard_list = cli.config.lint.keyboard.split(',')
- # Check for errors in the info.json
- if keyboard_info['parse_errors']:
- ok = False
- cli.log.error('Errors found when generating info.json.')
+ # Lint each keyboard
+ for kb in keyboard_list:
+ if not is_keyboard(kb):
+ cli.log.error('No such keyboard: %s', kb)
+ continue
- if cli.config.lint.strict and keyboard_info['parse_warnings']:
- ok = False
- cli.log.error('Warnings found when generating info.json (Strict mode enabled.)')
+ # Gather data about the keyboard.
+ ok = True
+ keyboard_path = keyboard(kb)
+ keyboard_info = info_json(kb)
- # Check for a readme.md and warn if it doesn't exist
- if not readme_path:
- ok = False
- cli.log.error('Missing %s', missing_readme_path)
+ # Check for errors in the info.json
+ if keyboard_info['parse_errors']:
+ ok = False
+ cli.log.error('%s: Errors found when generating info.json.', kb)
- # Keymap specific checks
- if cli.config.lint.keymap:
- keymap_path = locate_keymap(cli.config.lint.keyboard, cli.config.lint.keymap)
+ if cli.config.lint.strict and keyboard_info['parse_warnings']:
+ ok = False
+ cli.log.error('%s: Warnings found when generating info.json (Strict mode enabled.)', kb)
- if not keymap_path:
+ # Check the rules.mk file(s)
+ rules_mk_assignment_errors = rules_mk_assignment_only(keyboard_path)
+ if rules_mk_assignment_errors:
ok = False
- cli.log.error("Can't find %s keymap for %s keyboard.", cli.config.lint.keymap, cli.config.lint.keyboard)
- else:
- keymap_readme = keymap_path.parent / 'readme.md'
- if not keymap_readme.exists():
- cli.log.warning('Missing %s', keymap_readme)
+ cli.log.error('%s: Non-assignment code found in rules.mk. Move it to post_rules.mk instead.', kb)
+ for assignment_error in rules_mk_assignment_errors:
+ cli.log.error(assignment_error)
- if cli.config.lint.strict:
- ok = False
+ # Keymap specific checks
+ if cli.config.lint.keymap:
+ if not keymap_check(kb, cli.config.lint.keymap):
+ ok = False
+
+ # Report status
+ if not ok:
+ failed.append(kb)
# Check and report the overall status
- if ok:
- cli.log.info('Lint check passed!')
- return True
+ if failed:
+ cli.log.error('Lint check failed for: %s', ', '.join(failed))
+ return False
- cli.log.error('Lint check failed!')
- return False
+ cli.log.info('Lint check passed!')
+ return True
diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py
index bdb336b9a7..a7f01a872a 100644
--- a/lib/python/qmk/cli/pytest.py
+++ b/lib/python/qmk/cli/pytest.py
@@ -12,6 +12,6 @@ def pytest(cli):
"""Run several linting/testing commands.
"""
nose2 = cli.run(['nose2', '-v'], capture_output=False, stdin=DEVNULL)
- flake8 = cli.run(['flake8', 'lib/python', 'bin/qmk'], capture_output=False, stdin=DEVNULL)
+ flake8 = cli.run(['flake8', 'lib/python'], capture_output=False, stdin=DEVNULL)
return flake8.returncode | nose2.returncode
diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py
index 421453d837..2995a5fdab 100644
--- a/lib/python/qmk/commands.py
+++ b/lib/python/qmk/commands.py
@@ -28,7 +28,7 @@ def _find_make():
return make_cmd
-def create_make_target(target, parallel=1, **env_vars):
+def create_make_target(target, dry_run=False, parallel=1, **env_vars):
"""Create a make command
Args:
@@ -36,6 +36,9 @@ def create_make_target(target, parallel=1, **env_vars):
target
Usually a make rule, such as 'clean' or 'all'.
+ dry_run
+ make -n -- don't actually build
+
parallel
The number of make jobs to run in parallel
@@ -52,10 +55,10 @@ def create_make_target(target, parallel=1, **env_vars):
for key, value in env_vars.items():
env.append(f'{key}={value}')
- return [make_cmd, *get_make_parallel_args(parallel), *env, target]
+ return [make_cmd, *(['-n'] if dry_run else []), *get_make_parallel_args(parallel), *env, target]
-def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars):
+def create_make_command(keyboard, keymap, target=None, dry_run=False, parallel=1, **env_vars):
"""Create a make compile command
Args:
@@ -69,6 +72,9 @@ def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars):
target
Usually a bootloader.
+ dry_run
+ make -n -- don't actually build
+
parallel
The number of make jobs to run in parallel
@@ -84,7 +90,7 @@ def create_make_command(keyboard, keymap, target=None, parallel=1, **env_vars):
if target:
make_args.append(target)
- return create_make_target(':'.join(make_args), parallel, **env_vars)
+ return create_make_target(':'.join(make_args), dry_run=dry_run, parallel=parallel, **env_vars)
def get_git_version(current_time, repo_dir='.', check_dir='.'):
@@ -233,7 +239,7 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va
f'VERBOSE={verbose}',
f'COLOR={color}',
'SILENT=false',
- f'QMK_BIN={"bin/qmk" if "DEPRECATED_BIN_QMK" in os.environ else "qmk"}',
+ 'QMK_BIN="qmk"',
])
return make_command
diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py
index 71a6c91c77..73f596ba2c 100644
--- a/lib/python/qmk/constants.py
+++ b/lib/python/qmk/constants.py
@@ -13,7 +13,7 @@ QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware'
MAX_KEYBOARD_SUBFOLDERS = 5
# Supported processor types
-CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66F18', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L433', 'STM32L443'
+CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66FX1M0', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L433', 'STM32L443', 'GD32VF103'
LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index 350e5e2178..c3bbcf3eb0 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -112,11 +112,6 @@ def _extract_features(info_data, rules):
if rules.get('BOOTMAGIC_ENABLE') == 'full':
rules['BOOTMAGIC_ENABLE'] = 'on'
- # Skip non-boolean features we haven't implemented special handling for
- for feature in 'HAPTIC_ENABLE', 'QWIIC_ENABLE':
- if rules.get(feature):
- del rules[feature]
-
# Process the rest of the rules as booleans
for key, value in rules.items():
if key.endswith('_ENABLE'):
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py
index b39fe5e46d..e4eaef899a 100644
--- a/lib/python/qmk/tests/test_cli_commands.py
+++ b/lib/python/qmk/tests/test_cli_commands.py
@@ -83,7 +83,7 @@ def test_hello():
def test_format_python():
result = check_subcommand('format-python', '--dry-run')
check_returncode(result)
- assert 'Python code in `bin/qmk` and `lib/python` is correctly formatted.' in result.stdout
+ assert 'Python code in `lib/python` is correctly formatted.' in result.stdout
def test_list_keyboards():
diff --git a/lib/ugfx b/lib/ugfx
deleted file mode 160000
-Subproject 40b48f470addad6a4fb1177de1a69a181158739
diff --git a/platforms/arm_atsam/flash.mk b/platforms/arm_atsam/flash.mk
index f31d4b4d95..8152610ceb 100644
--- a/platforms/arm_atsam/flash.mk
+++ b/platforms/arm_atsam/flash.mk
@@ -3,9 +3,20 @@
# Architecture or project specific options
#
+MDLOADER_CLI ?= mdloader
+
+define EXEC_MDLOADER
+ $(MDLOADER_CLI) --first --download $(BUILD_DIR)/$(TARGET).bin --restart
+endef
+
+mdloader: bin
+ $(call EXEC_MDLOADER)
+
flash: bin
ifneq ($(strip $(PROGRAM_CMD)),)
$(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD)
+else ifeq ($(strip $(ARM_ATSAM)),SAMD51J18A)
+ $(UNSYNC_OUTPUT_CMD) && $(call EXEC_MDLOADER)
else
$(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_ARCH)"
endif
diff --git a/platforms/avr/drivers/analog.c b/platforms/avr/drivers/analog.c
index 8d299ffdb9..628835ccef 100644
--- a/platforms/avr/drivers/analog.c
+++ b/platforms/avr/drivers/analog.c
@@ -23,29 +23,6 @@ static uint8_t aref = ADC_REF_POWER;
void analogReference(uint8_t mode) { aref = mode & (_BV(REFS1) | _BV(REFS0)); }
-// Arduino compatible pin input
-int16_t analogRead(uint8_t pin) {
-#if defined(__AVR_ATmega32U4__)
- // clang-format off
- static const uint8_t PROGMEM pin_to_mux[] = {
- //A0 A1 A2 A3 A4 A5
- //F7 F6 F5 F4 F1 F0
- 0x07, 0x06, 0x05, 0x04, 0x01, 0x00,
- //A6 A7 A8 A9 A10 A11
- //D4 D7 B4 B5 B6 D6
- 0x20, 0x22, 0x23, 0x24, 0x25, 0x21
- };
- // clang-format on
- if (pin >= 12) return 0;
- return adc_read(pgm_read_byte(pin_to_mux + pin));
-#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
- if (pin >= 8) return 0;
- return adc_read(pin);
-#else
- return 0;
-#endif
-}
-
int16_t analogReadPin(pin_t pin) { return adc_read(pinToMux(pin)); }
uint8_t pinToMux(pin_t pin) {
diff --git a/platforms/avr/drivers/analog.h b/platforms/avr/drivers/analog.h
index 058882450d..b3c05e1976 100644
--- a/platforms/avr/drivers/analog.h
+++ b/platforms/avr/drivers/analog.h
@@ -23,7 +23,6 @@
extern "C" {
#endif
void analogReference(uint8_t mode);
-int16_t analogRead(uint8_t pin);
int16_t analogReadPin(pin_t pin);
uint8_t pinToMux(pin_t pin);
diff --git a/quantum/audio/driver_avr_pwm.h b/platforms/avr/drivers/audio_pwm.h
index d6eb3571da..d6eb3571da 100644
--- a/quantum/audio/driver_avr_pwm.h
+++ b/platforms/avr/drivers/audio_pwm.h
diff --git a/quantum/audio/driver_avr_pwm_hardware.c b/platforms/avr/drivers/audio_pwm_hardware.c
index df03a4558c..df03a4558c 100644
--- a/quantum/audio/driver_avr_pwm_hardware.c
+++ b/platforms/avr/drivers/audio_pwm_hardware.c
diff --git a/platforms/avr/drivers/i2c_master.c b/platforms/avr/drivers/i2c_master.c
index 2773e00778..111b55d6b0 100644
--- a/platforms/avr/drivers/i2c_master.c
+++ b/platforms/avr/drivers/i2c_master.c
@@ -202,6 +202,25 @@ 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 status = i2c_start(devaddr | 0x00, timeout);
+ if (status >= 0) {
+ status = i2c_write(regaddr >> 8, timeout);
+
+ if (status >= 0) {
+ status = i2c_write(regaddr & 0xFF, timeout);
+
+ for (uint16_t i = 0; i < length && status >= 0; i++) {
+ status = i2c_write(data[i], timeout);
+ }
+ }
+ }
+
+ i2c_stop();
+
+ 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 status = i2c_start(devaddr, timeout);
if (status < 0) {
@@ -235,6 +254,43 @@ 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 status = i2c_start(devaddr, timeout);
+ if (status < 0) {
+ goto error;
+ }
+
+ status = i2c_write(regaddr >> 8, timeout);
+ if (status < 0) {
+ goto error;
+ }
+ status = i2c_write(regaddr & 0xFF, timeout);
+ if (status < 0) {
+ goto error;
+ }
+
+ status = i2c_start(devaddr | 0x01, timeout);
+
+ for (uint16_t i = 0; i < (length - 1) && status >= 0; i++) {
+ status = i2c_read_ack(timeout);
+ if (status >= 0) {
+ data[i] = status;
+ }
+ }
+
+ if (status >= 0) {
+ status = i2c_read_nack(timeout);
+ if (status >= 0) {
+ data[(length - 1)] = status;
+ }
+ }
+
+error:
+ i2c_stop();
+
+ return (status < 0) ? status : I2C_STATUS_SUCCESS;
+}
+
void i2c_stop(void) {
// transmit STOP condition
TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO);
diff --git a/platforms/avr/drivers/i2c_master.h b/platforms/avr/drivers/i2c_master.h
index e5af73364b..2d95846db5 100644
--- a/platforms/avr/drivers/i2c_master.h
+++ b/platforms/avr/drivers/i2c_master.h
@@ -39,5 +39,7 @@ 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_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);
diff --git a/platforms/avr/drivers/ps2/ps2_io.c b/platforms/avr/drivers/ps2/ps2_io.c
new file mode 100644
index 0000000000..7c826fbf1a
--- /dev/null
+++ b/platforms/avr/drivers/ps2/ps2_io.c
@@ -0,0 +1,51 @@
+#include <stdbool.h>
+#include "ps2_io.h"
+#include "gpio.h"
+#include "wait.h"
+
+/* Check port settings for clock and data line */
+#if !(defined(PS2_CLOCK_PIN))
+# error "PS/2 clock setting is required in config.h"
+#endif
+
+#if !(defined(PS2_DATA_PIN))
+# error "PS/2 data setting is required in config.h"
+#endif
+
+/*
+ * Clock
+ */
+void clock_init(void) {}
+
+void clock_lo(void) {
+ // Transition from input with pull-up to output low via Hi-Z instead of output high
+ writePinLow(PS2_CLOCK_PIN);
+ setPinOutput(PS2_CLOCK_PIN);
+}
+
+void clock_hi(void) { setPinInputHigh(PS2_CLOCK_PIN); }
+
+bool clock_in(void) {
+ setPinInputHigh(PS2_CLOCK_PIN);
+ wait_us(1);
+ return readPin(PS2_CLOCK_PIN);
+}
+
+/*
+ * Data
+ */
+void data_init(void) {}
+
+void data_lo(void) {
+ // Transition from input with pull-up to output low via Hi-Z instead of output high
+ writePinLow(PS2_DATA_PIN);
+ setPinOutput(PS2_DATA_PIN);
+}
+
+void data_hi(void) { setPinInputHigh(PS2_DATA_PIN); }
+
+bool data_in(void) {
+ setPinInputHigh(PS2_DATA_PIN);
+ wait_us(1);
+ return readPin(PS2_DATA_PIN);
+}
diff --git a/tmk_core/protocol/ps2_usart.c b/platforms/avr/drivers/ps2/ps2_usart.c
index 6a66dc4a1e..151cfcd68f 100644
--- a/tmk_core/protocol/ps2_usart.c
+++ b/platforms/avr/drivers/ps2/ps2_usart.c
@@ -42,10 +42,24 @@ POSSIBILITY OF SUCH DAMAGE.
#include <stdbool.h>
#include <avr/interrupt.h>
#include <util/delay.h>
+#include "gpio.h"
#include "ps2.h"
#include "ps2_io.h"
#include "print.h"
+#ifndef PS2_CLOCK_DDR
+# define PS2_CLOCK_DDR PORTx_ADDRESS(PS2_CLOCK_PIN)
+#endif
+#ifndef PS2_CLOCK_BIT
+# define PS2_CLOCK_BIT (PS2_CLOCK_PIN & 0xF)
+#endif
+#ifndef PS2_DATA_DDR
+# define PS2_DATA_DDR PORTx_ADDRESS(PS2_DATA_PIN)
+#endif
+#ifndef PS2_DATA_BIT
+# define PS2_DATA_BIT (PS2_DATA_PIN & 0xF)
+#endif
+
#define WAIT(stat, us, err) \
do { \
if (!wait_##stat(us)) { \
diff --git a/platforms/chibios/boards/GENERIC_STM32_F405XG/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_F405XG/board/board.mk
new file mode 100644
index 0000000000..6c837bb8ee
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_STM32_F405XG/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_STM32F4_DISCOVERY/board.c
+
+# Required include directories
+BOARDINC = $(CHIBIOS)/os/hal/boards/ST_STM32F4_DISCOVERY
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC) \ No newline at end of file
diff --git a/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/board.h
new file mode 100644
index 0000000000..8cb771bc12
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/board.h
@@ -0,0 +1,28 @@
+/* Copyright 2020 Nick Brassel (tzarc)
+ *
+ * This program is free software: you can 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
+
+#define STM32_HSECLK 12000000
+// The following is required to disable the pull-down on PA9, when PA9 is used for the keyboard matrix:
+#define BOARD_OTG_NOVBUSSENS
+
+#include_next "board.h"
+
+#undef STM32_HSE_BYPASS
+
+#undef STM32F407xx
+#define STM32F405xG
+#define STM32F405xx
diff --git a/drivers/qwiic/qwiic.h b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/config.h
index 8c3d1c8d63..cc52a953ed 100644
--- a/drivers/qwiic/qwiic.h
+++ b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
+/* Copyright 2021 Andrei Purdea
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,16 +13,11 @@
* You should 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 "i2c_master.h"
-
-#ifdef QWIIC_JOYSTIIC_ENABLE
-# include "joystiic.h"
-#endif
-#ifdef QWIIC_MICRO_OLED_ENABLE
-# include "micro_oled.h"
+/* Address for jumping to bootloader on STM32 chips. */
+/* It is chip dependent, the correct number can be looked up by checking against ST's application note AN2606.
+ */
+#define STM32_BOOTLOADER_ADDRESS 0x1FFF0000
+#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
+# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
#endif
-
-void qwiic_init(void);
-void qwiic_task(void);
diff --git a/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/mcuconf.h
new file mode 100644
index 0000000000..d2ec632d9f
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/mcuconf.h
@@ -0,0 +1,355 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef MCUCONF_H
+#define MCUCONF_H
+
+/*
+ * STM32F4xx drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 15...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...3 Lowest...Highest.
+ */
+
+#define STM32F4xx_MCUCONF
+#define STM32F405_MCUCONF
+#define STM32F415_MCUCONF
+#define STM32F407_MCUCONF
+#define STM32F417_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+#define STM32_NO_INIT FALSE
+#define STM32_PVD_ENABLE FALSE
+#define STM32_PLS STM32_PLS_LEV0
+#define STM32_BKPRAM_ENABLE FALSE
+#define STM32_HSI_ENABLED TRUE
+#define STM32_LSI_ENABLED TRUE
+#define STM32_HSE_ENABLED TRUE
+#define STM32_LSE_ENABLED FALSE
+#define STM32_CLOCK48_REQUIRED TRUE
+#define STM32_SW STM32_SW_PLL
+#define STM32_PLLSRC STM32_PLLSRC_HSE
+#define STM32_PLLM_VALUE 12
+#define STM32_PLLN_VALUE 336
+#define STM32_PLLP_VALUE 2
+#define STM32_PLLQ_VALUE 7
+#define STM32_HPRE STM32_HPRE_DIV1
+#define STM32_PPRE1 STM32_PPRE1_DIV4
+#define STM32_PPRE2 STM32_PPRE2_DIV2
+#define STM32_RTCSEL STM32_RTCSEL_LSI
+#define STM32_RTCPRE_VALUE 8
+#define STM32_MCO1SEL STM32_MCO1SEL_HSI
+#define STM32_MCO1PRE STM32_MCO1PRE_DIV1
+#define STM32_MCO2SEL STM32_MCO2SEL_SYSCLK
+#define STM32_MCO2PRE STM32_MCO2PRE_DIV5
+#define STM32_I2SSRC STM32_I2SSRC_CKIN
+#define STM32_PLLI2SN_VALUE 192
+#define STM32_PLLI2SR_VALUE 5
+
+/*
+ * IRQ system settings.
+ */
+#define STM32_IRQ_EXTI0_PRIORITY 6
+#define STM32_IRQ_EXTI1_PRIORITY 6
+#define STM32_IRQ_EXTI2_PRIORITY 6
+#define STM32_IRQ_EXTI3_PRIORITY 6
+#define STM32_IRQ_EXTI4_PRIORITY 6
+#define STM32_IRQ_EXTI5_9_PRIORITY 6
+#define STM32_IRQ_EXTI10_15_PRIORITY 6
+#define STM32_IRQ_EXTI16_PRIORITY 6
+#define STM32_IRQ_EXTI17_PRIORITY 15
+#define STM32_IRQ_EXTI18_PRIORITY 6
+#define STM32_IRQ_EXTI19_PRIORITY 6
+#define STM32_IRQ_EXTI20_PRIORITY 6
+#define STM32_IRQ_EXTI21_PRIORITY 15
+#define STM32_IRQ_EXTI22_PRIORITY 15
+
+/*
+ * ADC driver system settings.
+ */
+#define STM32_ADC_ADCPRE ADC_CCR_ADCPRE_DIV4
+#define STM32_ADC_USE_ADC1 FALSE
+#define STM32_ADC_USE_ADC2 FALSE
+#define STM32_ADC_USE_ADC3 FALSE
+#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4)
+#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
+#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID(2, 1)
+#define STM32_ADC_ADC1_DMA_PRIORITY 2
+#define STM32_ADC_ADC2_DMA_PRIORITY 2
+#define STM32_ADC_ADC3_DMA_PRIORITY 2
+#define STM32_ADC_IRQ_PRIORITY 6
+#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 6
+#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 6
+#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY 6
+
+/*
+ * CAN driver system settings.
+ */
+#define STM32_CAN_USE_CAN1 FALSE
+#define STM32_CAN_USE_CAN2 FALSE
+#define STM32_CAN_CAN1_IRQ_PRIORITY 11
+#define STM32_CAN_CAN2_IRQ_PRIORITY 11
+
+/*
+ * DAC driver system settings.
+ */
+#define STM32_DAC_DUAL_MODE FALSE
+#define STM32_DAC_USE_DAC1_CH1 FALSE
+#define STM32_DAC_USE_DAC1_CH2 FALSE
+#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10
+#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10
+#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2
+#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2
+#define STM32_DAC_DAC1_CH1_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+
+/*
+ * GPT driver system settings.
+ */
+#define STM32_GPT_USE_TIM1 FALSE
+#define STM32_GPT_USE_TIM2 FALSE
+#define STM32_GPT_USE_TIM3 FALSE
+#define STM32_GPT_USE_TIM4 FALSE
+#define STM32_GPT_USE_TIM5 FALSE
+#define STM32_GPT_USE_TIM6 FALSE
+#define STM32_GPT_USE_TIM7 FALSE
+#define STM32_GPT_USE_TIM8 FALSE
+#define STM32_GPT_USE_TIM9 FALSE
+#define STM32_GPT_USE_TIM11 FALSE
+#define STM32_GPT_USE_TIM12 FALSE
+#define STM32_GPT_USE_TIM14 FALSE
+#define STM32_GPT_TIM1_IRQ_PRIORITY 7
+#define STM32_GPT_TIM2_IRQ_PRIORITY 7
+#define STM32_GPT_TIM3_IRQ_PRIORITY 7
+#define STM32_GPT_TIM4_IRQ_PRIORITY 7
+#define STM32_GPT_TIM5_IRQ_PRIORITY 7
+#define STM32_GPT_TIM6_IRQ_PRIORITY 7
+#define STM32_GPT_TIM7_IRQ_PRIORITY 7
+#define STM32_GPT_TIM8_IRQ_PRIORITY 7
+#define STM32_GPT_TIM9_IRQ_PRIORITY 7
+#define STM32_GPT_TIM11_IRQ_PRIORITY 7
+#define STM32_GPT_TIM12_IRQ_PRIORITY 7
+#define STM32_GPT_TIM14_IRQ_PRIORITY 7
+
+/*
+ * I2C driver system settings.
+ */
+#define STM32_I2C_USE_I2C1 FALSE
+#define STM32_I2C_USE_I2C2 FALSE
+#define STM32_I2C_USE_I2C3 FALSE
+#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_I2C_I2C1_IRQ_PRIORITY 5
+#define STM32_I2C_I2C2_IRQ_PRIORITY 5
+#define STM32_I2C_I2C3_IRQ_PRIORITY 5
+#define STM32_I2C_I2C1_DMA_PRIORITY 3
+#define STM32_I2C_I2C2_DMA_PRIORITY 3
+#define STM32_I2C_I2C3_DMA_PRIORITY 3
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
+
+/*
+ * I2S driver system settings.
+ */
+#define STM32_I2S_USE_SPI2 FALSE
+#define STM32_I2S_USE_SPI3 FALSE
+#define STM32_I2S_SPI2_IRQ_PRIORITY 10
+#define STM32_I2S_SPI3_IRQ_PRIORITY 10
+#define STM32_I2S_SPI2_DMA_PRIORITY 1
+#define STM32_I2S_SPI3_DMA_PRIORITY 1
+#define STM32_I2S_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_I2S_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_I2S_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_I2S_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
+
+/*
+ * ICU driver system settings.
+ */
+#define STM32_ICU_USE_TIM1 FALSE
+#define STM32_ICU_USE_TIM2 FALSE
+#define STM32_ICU_USE_TIM3 FALSE
+#define STM32_ICU_USE_TIM4 FALSE
+#define STM32_ICU_USE_TIM5 FALSE
+#define STM32_ICU_USE_TIM8 FALSE
+#define STM32_ICU_USE_TIM9 FALSE
+#define STM32_ICU_TIM1_IRQ_PRIORITY 7
+#define STM32_ICU_TIM2_IRQ_PRIORITY 7
+#define STM32_ICU_TIM3_IRQ_PRIORITY 7
+#define STM32_ICU_TIM4_IRQ_PRIORITY 7
+#define STM32_ICU_TIM5_IRQ_PRIORITY 7
+#define STM32_ICU_TIM8_IRQ_PRIORITY 7
+#define STM32_ICU_TIM9_IRQ_PRIORITY 7
+
+/*
+ * MAC driver system settings.
+ */
+#define STM32_MAC_TRANSMIT_BUFFERS 2
+#define STM32_MAC_RECEIVE_BUFFERS 4
+#define STM32_MAC_BUFFERS_SIZE 1522
+#define STM32_MAC_PHY_TIMEOUT 100
+#define STM32_MAC_ETH1_CHANGE_PHY_STATE TRUE
+#define STM32_MAC_ETH1_IRQ_PRIORITY 13
+#define STM32_MAC_IP_CHECKSUM_OFFLOAD 0
+
+/*
+ * PWM driver system settings.
+ */
+#define STM32_PWM_USE_ADVANCED FALSE
+#define STM32_PWM_USE_TIM1 FALSE
+#define STM32_PWM_USE_TIM2 FALSE
+#define STM32_PWM_USE_TIM3 FALSE
+#define STM32_PWM_USE_TIM4 FALSE
+#define STM32_PWM_USE_TIM5 FALSE
+#define STM32_PWM_USE_TIM8 FALSE
+#define STM32_PWM_USE_TIM9 FALSE
+#define STM32_PWM_TIM1_IRQ_PRIORITY 7
+#define STM32_PWM_TIM2_IRQ_PRIORITY 7
+#define STM32_PWM_TIM3_IRQ_PRIORITY 7
+#define STM32_PWM_TIM4_IRQ_PRIORITY 7
+#define STM32_PWM_TIM5_IRQ_PRIORITY 7
+#define STM32_PWM_TIM8_IRQ_PRIORITY 7
+#define STM32_PWM_TIM9_IRQ_PRIORITY 7
+
+/*
+ * RTC driver system settings.
+ */
+#define STM32_RTC_PRESA_VALUE 32
+#define STM32_RTC_PRESS_VALUE 1024
+#define STM32_RTC_CR_INIT 0
+#define STM32_RTC_TAMPCR_INIT 0
+
+/*
+ * SDC driver system settings.
+ */
+#define STM32_SDC_SDIO_DMA_PRIORITY 3
+#define STM32_SDC_SDIO_IRQ_PRIORITY 9
+#define STM32_SDC_WRITE_TIMEOUT_MS 1000
+#define STM32_SDC_READ_TIMEOUT_MS 1000
+#define STM32_SDC_CLOCK_ACTIVATION_DELAY 10
+#define STM32_SDC_SDIO_UNALIGNED_SUPPORT TRUE
+#define STM32_SDC_SDIO_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
+
+/*
+ * SERIAL driver system settings.
+ */
+#define STM32_SERIAL_USE_USART1 FALSE
+#define STM32_SERIAL_USE_USART2 FALSE
+#define STM32_SERIAL_USE_USART3 FALSE
+#define STM32_SERIAL_USE_UART4 FALSE
+#define STM32_SERIAL_USE_UART5 FALSE
+#define STM32_SERIAL_USE_USART6 FALSE
+#define STM32_SERIAL_USART1_PRIORITY 12
+#define STM32_SERIAL_USART2_PRIORITY 12
+#define STM32_SERIAL_USART3_PRIORITY 12
+#define STM32_SERIAL_UART4_PRIORITY 12
+#define STM32_SERIAL_UART5_PRIORITY 12
+#define STM32_SERIAL_USART6_PRIORITY 12
+
+/*
+ * SPI driver system settings.
+ */
+#define STM32_SPI_USE_SPI1 FALSE
+#define STM32_SPI_USE_SPI2 FALSE
+#define STM32_SPI_USE_SPI3 FALSE
+#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0)
+#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
+#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_SPI_SPI1_DMA_PRIORITY 1
+#define STM32_SPI_SPI2_DMA_PRIORITY 1
+#define STM32_SPI_SPI3_DMA_PRIORITY 1
+#define STM32_SPI_SPI1_IRQ_PRIORITY 10
+#define STM32_SPI_SPI2_IRQ_PRIORITY 10
+#define STM32_SPI_SPI3_IRQ_PRIORITY 10
+#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
+
+/*
+ * ST driver system settings.
+ */
+#define STM32_ST_IRQ_PRIORITY 8
+#define STM32_ST_USE_TIMER 2
+
+/*
+ * UART driver system settings.
+ */
+#define STM32_UART_USE_USART1 FALSE
+#define STM32_UART_USE_USART2 FALSE
+#define STM32_UART_USE_USART3 FALSE
+#define STM32_UART_USE_UART4 FALSE
+#define STM32_UART_USE_UART5 FALSE
+#define STM32_UART_USE_USART6 FALSE
+#define STM32_UART_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
+#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7)
+#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_UART_USART3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
+#define STM32_UART_USART3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_UART_UART4_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_UART_UART4_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_UART_UART5_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_UART_UART5_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_UART_USART6_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
+#define STM32_UART_USART6_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7)
+#define STM32_UART_USART1_IRQ_PRIORITY 12
+#define STM32_UART_USART2_IRQ_PRIORITY 12
+#define STM32_UART_USART3_IRQ_PRIORITY 12
+#define STM32_UART_UART4_IRQ_PRIORITY 12
+#define STM32_UART_UART5_IRQ_PRIORITY 12
+#define STM32_UART_USART6_IRQ_PRIORITY 12
+#define STM32_UART_USART1_DMA_PRIORITY 0
+#define STM32_UART_USART2_DMA_PRIORITY 0
+#define STM32_UART_USART3_DMA_PRIORITY 0
+#define STM32_UART_UART4_DMA_PRIORITY 0
+#define STM32_UART_UART5_DMA_PRIORITY 0
+#define STM32_UART_USART6_DMA_PRIORITY 0
+#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
+
+/*
+ * USB driver system settings.
+ */
+#define STM32_USB_USE_OTG1 TRUE
+#define STM32_USB_USE_OTG2 FALSE
+#define STM32_USB_OTG1_IRQ_PRIORITY 14
+#define STM32_USB_OTG2_IRQ_PRIORITY 14
+#define STM32_USB_OTG1_RX_FIFO_SIZE 512
+#define STM32_USB_OTG2_RX_FIFO_SIZE 1024
+#define STM32_USB_HOST_WAKEUP_DURATION 2
+
+#define STM32_USB_OTG_THREAD_PRIO NORMALPRIO+1
+#define STM32_USB_OTG_THREAD_STACK_SIZE 128
+
+/*
+ * WDG driver system settings.
+ */
+#define STM32_WDG_USE_IWDG FALSE
+
+#endif /* MCUCONF_H */
diff --git a/platforms/chibios/boards/QMK_PROTON_C/configs/config.h b/platforms/chibios/boards/QMK_PROTON_C/configs/config.h
index a73f0c0b47..fa1a73c354 100644
--- a/platforms/chibios/boards/QMK_PROTON_C/configs/config.h
+++ b/platforms/chibios/boards/QMK_PROTON_C/configs/config.h
@@ -18,3 +18,12 @@
#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
#endif
+
+#ifdef CONVERT_TO_PROTON_C
+# ifndef I2C1_SDA_PIN
+# define I2C1_SDA_PIN D1
+# endif
+# ifndef I2C1_SCL_PIN
+# define I2C1_SCL_PIN D0
+# endif
+#endif
diff --git a/platforms/chibios/boards/SIPEED_LONGAN_NANO/board/board.mk b/platforms/chibios/boards/SIPEED_LONGAN_NANO/board/board.mk
new file mode 100644
index 0000000000..960fc26786
--- /dev/null
+++ b/platforms/chibios/boards/SIPEED_LONGAN_NANO/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = ${CHIBIOS_CONTRIB}/os/hal/boards/SIPEED_LONGAN_NANO/board.c
+
+# Required include directories
+BOARDINC = ${CHIBIOS_CONTRIB}/os/hal/boards/SIPEED_LONGAN_NANO
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/quantum/visualizer/visualizer_keyframes.c b/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.h
index 8f6a7e15a4..6e5adb0fe1 100644
--- a/quantum/visualizer/visualizer_keyframes.c
+++ b/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2017 Fred Sundvik
+/* 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
@@ -14,10 +14,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "visualizer_keyframes.h"
+/* To compile the ChibiOS syscall stubs with picolibc
+ * the _reent struct has to be defined. */
+#if !defined(_FROM_ASM_) && defined(USE_PICOLIBC)
+struct _reent;
+#endif
-bool keyframe_no_operation(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
- return false;
-}
+#include_next <chconf.h> \ No newline at end of file
diff --git a/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/mcuconf.h b/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/mcuconf.h
new file mode 100644
index 0000000000..ab086567e5
--- /dev/null
+++ b/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/mcuconf.h
@@ -0,0 +1,302 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2021 Stefan Kerkmann
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#pragma once
+
+#define GD32VF103_MCUCONF
+#define GD32VF103CB
+
+/*
+ * GD32VF103 drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 0...15 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...3 Lowest...Highest.
+ */
+
+/*
+ * HAL driver system settings.
+*/
+
+#if defined(OVERCLOCK_120MHZ)
+/* (8MHz / 2) * 30 = 120MHz Sysclock */
+#define GD32_ALLOW_120MHZ_SYSCLK
+#define GD32_PLLMF_VALUE 30
+#define GD32_USBFSPSC GD32_USBFSPSC_DIV2P5
+#else
+/* (8MHz / 2) * 24 = 96MHz Sysclock */
+#define GD32_PLLMF_VALUE 24
+#define GD32_USBFSPSC GD32_USBFSPSC_DIV2
+#endif
+
+#define GD32_NO_INIT FALSE
+#define GD32_IRC8M_ENABLED TRUE
+#define GD32_IRC40K_ENABLED FALSE
+#define GD32_HXTAL_ENABLED TRUE
+#define GD32_LXTAL_ENABLED FALSE
+#define GD32_SCS GD32_SCS_PLL
+#define GD32_PLLSEL GD32_PLLSEL_PREDV0
+#define GD32_PREDV0SEL GD32_PREDV0SEL_HXTAL
+#define GD32_PREDV0_VALUE 2
+#define GD32_PREDV1_VALUE 2
+#define GD32_PLL1MF_VALUE 14
+#define GD32_PLL2MF_VALUE 13
+#define GD32_AHBPSC GD32_AHBPSC_DIV1
+#define GD32_APB1PSC GD32_APB1PSC_DIV2
+#define GD32_APB2PSC GD32_APB2PSC_DIV1
+#define GD32_ADCPSC GD32_ADCPSC_DIV16
+#define GD32_USB_CLOCK_REQUIRED TRUE
+#define GD32_I2S_CLOCK_REQUIRED FALSE
+#define GD32_CKOUT0SEL GD32_CKOUT0SEL_NOCLOCK
+#define GD32_RTCSRC GD32_RTCSRC_NOCLOCK
+#define GD32_PVD_ENABLE FALSE
+#define GD32_LVDT GD32_LVDT_LEV0
+
+/*
+ * ECLIC system settings.
+ */
+#define ECLIC_TRIGGER_DEFAULT ECLIC_POSTIVE_EDGE_TRIGGER
+#define ECLIC_DMA_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * IRQ system settings.
+ */
+#define GD32_IRQ_EXTI0_PRIORITY 6
+#define GD32_IRQ_EXTI1_PRIORITY 6
+#define GD32_IRQ_EXTI2_PRIORITY 6
+#define GD32_IRQ_EXTI3_PRIORITY 6
+#define GD32_IRQ_EXTI4_PRIORITY 6
+#define GD32_IRQ_EXTI5_9_PRIORITY 6
+#define GD32_IRQ_EXTI10_15_PRIORITY 6
+#define GD32_IRQ_EXTI0_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_IRQ_EXTI1_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_IRQ_EXTI2_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_IRQ_EXTI3_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_IRQ_EXTI4_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_IRQ_EXTI5_9_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_IRQ_EXTI10_15_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * ADC driver system settings.
+ */
+#define GD32_ADC_USE_ADC0 FALSE
+#define GD32_ADC_ADC0_DMA_PRIORITY 2
+#define GD32_ADC_ADC0_IRQ_PRIORITY 6
+
+/*
+ * CAN driver system settings.
+ */
+#define GD32_CAN_USE_CAN0 FALSE
+#define GD32_CAN_CAN0_IRQ_PRIORITY 11
+#define GD32_CAN_USE_CAN1 FALSE
+#define GD32_CAN_CAN1_IRQ_PRIORITY 11
+#define GD32_CAN_CAN0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_CAN_CAN1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * CRC driver system settings.
+ */
+#define GD32_CRC_USE_CRC0 FALSE
+#define GD32_CRC_CRC0_DMA_IRQ_PRIORITY 14
+#define GD32_CRC_CRC0_DMA_PRIORITY 2
+#define GD32_CRC_CRC0_DMA_STREAM GD32_DMA_STREAM_ID(0, 0)
+#define CRC_USE_DMA FALSE
+#define CRCSW_USE_CRC1 FALSE
+#define CRCSW_CRC32_TABLE FALSE
+#define CRCSW_CRC16_TABLE FALSE
+#define CRCSW_PROGRAMMABLE FALSE
+
+/*
+ * DAC driver system settings.
+ */
+#define GD32_DAC_USE_DAC_CH1 FALSE
+#define GD32_DAC_USE_DAC_CH2 FALSE
+
+/*
+ * GPT driver system settings.
+ */
+#define GD32_GPT_USE_TIM0 FALSE
+#define GD32_GPT_USE_TIM1 FALSE
+#define GD32_GPT_USE_TIM2 FALSE
+#define GD32_GPT_USE_TIM3 FALSE
+#define GD32_GPT_USE_TIM4 FALSE
+#define GD32_GPT_TIM0_IRQ_PRIORITY 7
+#define GD32_GPT_TIM1_IRQ_PRIORITY 7
+#define GD32_GPT_TIM2_IRQ_PRIORITY 7
+#define GD32_GPT_TIM3_IRQ_PRIORITY 7
+#define GD32_GPT_TIM4_IRQ_PRIORITY 7
+#define GD32_GPT_TIM0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_GPT_TIM1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_GPT_TIM2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_GPT_TIM3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_GPT_TIM4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_GPT_TIM5_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_GPT_TIM6_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * I2S driver system settings.
+ */
+#define GD32_I2S_USE_SPI1 FALSE
+#define GD32_I2S_USE_SPI2 FALSE
+#define GD32_I2S_SPI1_IRQ_PRIORITY 10
+#define GD32_I2S_SPI2_IRQ_PRIORITY 10
+#define GD32_I2S_SPI1_DMA_PRIORITY 1
+#define GD32_I2S_SPI2_DMA_PRIORITY 1
+#define GD32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
+
+/*
+ * I2C driver system settings.
+ */
+#define GD32_I2C_USE_I2C0 FALSE
+#define GD32_I2C_USE_I2C1 FALSE
+#define GD32_I2C_BUSY_TIMEOUT 50
+#define GD32_I2C_I2C0_IRQ_PRIORITY 10
+#define GD32_I2C_I2C1_IRQ_PRIORITY 5
+#define GD32_I2C_I2C0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_I2C_I2C1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_I2C_I2C0_DMA_PRIORITY 2
+#define GD32_I2C_I2C1_DMA_PRIORITY 2
+#define GD32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
+
+/*
+ * ICU driver system settings.
+ */
+#define GD32_ICU_USE_TIM0 FALSE
+#define GD32_ICU_USE_TIM1 FALSE
+#define GD32_ICU_USE_TIM2 FALSE
+#define GD32_ICU_USE_TIM3 FALSE
+#define GD32_ICU_USE_TIM4 FALSE
+#define GD32_ICU_TIM0_IRQ_PRIORITY 7
+#define GD32_ICU_TIM1_IRQ_PRIORITY 7
+#define GD32_ICU_TIM2_IRQ_PRIORITY 7
+#define GD32_ICU_TIM3_IRQ_PRIORITY 7
+#define GD32_ICU_TIM4_IRQ_PRIORITY 7
+#define GD32_ICU_TIM0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_ICU_TIM1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_ICU_TIM2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_ICU_TIM3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_ICU_TIM4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * PWM driver system settings.
+ */
+#define GD32_PWM_USE_ADVANCED FALSE
+#define GD32_PWM_USE_TIM0 FALSE
+#define GD32_PWM_USE_TIM1 FALSE
+#define GD32_PWM_USE_TIM2 FALSE
+#define GD32_PWM_USE_TIM3 FALSE
+#define GD32_PWM_USE_TIM4 FALSE
+#define GD32_PWM_TIM0_IRQ_PRIORITY 10
+#define GD32_PWM_TIM1_IRQ_PRIORITY 10
+#define GD32_PWM_TIM2_IRQ_PRIORITY 10
+#define GD32_PWM_TIM3_IRQ_PRIORITY 10
+#define GD32_PWM_TIM4_IRQ_PRIORITY 10
+#define GD32_PWM_TIM0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_PWM_TIM1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_PWM_TIM2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_PWM_TIM3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_PWM_TIM4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * RTC driver system settings.
+ */
+#define GD32_RTC_IRQ_PRIORITY 15
+#define GD32_RTC_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * SERIAL driver system settings.
+ */
+#define GD32_SERIAL_USE_USART0 FALSE
+#define GD32_SERIAL_USE_USART1 FALSE
+#define GD32_SERIAL_USE_USART2 FALSE
+#define GD32_SERIAL_USE_UART3 FALSE
+#define GD32_SERIAL_USE_UART4 FALSE
+#define GD32_SERIAL_USART0_PRIORITY 10
+#define GD32_SERIAL_USART1_PRIORITY 10
+#define GD32_SERIAL_USART2_PRIORITY 10
+#define GD32_SERIAL_UART3_PRIORITY 10
+#define GD32_SERIAL_UART4_PRIORITY 10
+#define GD32_SERIAL_USART0_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_SERIAL_USART1_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_SERIAL_USART2_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_SERIAL_UART3_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_SERIAL_UART4_TRIGGER ECLIC_TRIGGER_DEFAULT
+
+/*
+ * SPI driver system settings.
+ */
+#define GD32_SPI_USE_SPI0 FALSE
+#define GD32_SPI_USE_SPI1 FALSE
+#define GD32_SPI_USE_SPI2 FALSE
+#define GD32_SPI_SPI0_DMA_PRIORITY 1
+#define GD32_SPI_SPI1_DMA_PRIORITY 1
+#define GD32_SPI_SPI2_DMA_PRIORITY 1
+#define GD32_SPI_SPI0_IRQ_PRIORITY 10
+#define GD32_SPI_SPI1_IRQ_PRIORITY 10
+#define GD32_SPI_SPI2_IRQ_PRIORITY 10
+#define GD32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
+
+/*
+ * ST driver system settings.
+ */
+#define GD32_ST_IRQ_PRIORITY 10
+#define GD32_ST_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_ST_USE_TIMER 1
+
+/*
+ * UART driver system settings.
+ */
+#define GD32_UART_USE_USART0 FALSE
+#define GD32_UART_USE_USART1 FALSE
+#define GD32_UART_USE_USART2 FALSE
+#define GD32_UART_USE_UART3 FALSE
+#define GD32_UART_USE_UART4 FALSE
+#define GD32_UART_USART0_IRQ_PRIORITY 10
+#define GD32_UART_USART1_IRQ_PRIORITY 10
+#define GD32_UART_USART2_IRQ_PRIORITY 10
+#define GD32_UART_UART3_IRQ_PRIORITY 10
+#define GD32_UART_UART4_IRQ_PRIORITY 10
+#define GD32_UART_USART0_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_UART_USART1_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_UART_USART2_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_UART_UART3_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_UART_UART4_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_UART_USART0_DMA_PRIORITY 3
+#define GD32_UART_USART1_DMA_PRIORITY 3
+#define GD32_UART_USART2_DMA_PRIORITY 3
+#define GD32_UART_UART3_DMA_PRIORITY 3
+#define GD32_UART_UART4_DMA_PRIORITY 3
+#define GD32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
+
+/*
+ * USB driver system settings.
+ */
+#define GD32_USB_USE_USBFS TRUE
+#define GD32_USB_USBFS_IRQ_PRIORITY 10
+#define GD32_USB_USBFS_IRQ_TRIGGER ECLIC_TRIGGER_DEFAULT
+#define GD32_USB_USBFS_RX_FIFO_SIZE 256
+
+/*
+ * WDG driver system settings.
+ */
+#define GD32_WDG_USE_FWDGT FALSE
diff --git a/platforms/chibios/boards/common/ld/STM32F401xC.ld b/platforms/chibios/boards/common/ld/STM32F401xC.ld
new file mode 100644
index 0000000000..8fae66cec9
--- /dev/null
+++ b/platforms/chibios/boards/common/ld/STM32F401xC.ld
@@ -0,0 +1,85 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * STM32F401xC memory setup.
+ */
+MEMORY
+{
+ flash0 (rx) : org = 0x08000000, len = 16k /* Sector 0 - Init code as ROM bootloader assumes application starts here */
+ flash1 (rx) : org = 0x08004000, len = 16k /* Sector 1 - Emulated eeprom */
+ flash2 (rx) : org = 0x08008000, len = 256k - 32k /* Sector 2..6 - Rest of firmware */
+ flash3 (rx) : org = 0x00000000, len = 0
+ flash4 (rx) : org = 0x00000000, len = 0
+ flash5 (rx) : org = 0x00000000, len = 0
+ flash6 (rx) : org = 0x00000000, len = 0
+ flash7 (rx) : org = 0x00000000, len = 0
+ ram0 (wx) : org = 0x20000000, len = 64k
+ ram1 (wx) : org = 0x00000000, len = 0
+ ram2 (wx) : org = 0x00000000, len = 0
+ ram3 (wx) : org = 0x00000000, len = 0
+ ram4 (wx) : org = 0x00000000, len = 0
+ ram5 (wx) : org = 0x00000000, len = 0
+ ram6 (wx) : org = 0x00000000, len = 0
+ ram7 (wx) : org = 0x00000000, len = 0
+}
+
+/* For each data/text section two region are defined, a virtual region
+ and a load region (_LMA suffix).*/
+
+/* Flash region to be used for exception vectors.*/
+REGION_ALIAS("VECTORS_FLASH", flash0);
+REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
+
+/* Flash region to be used for constructors and destructors.*/
+REGION_ALIAS("XTORS_FLASH", flash2);
+REGION_ALIAS("XTORS_FLASH_LMA", flash2);
+
+/* Flash region to be used for code text.*/
+REGION_ALIAS("TEXT_FLASH", flash2);
+REGION_ALIAS("TEXT_FLASH_LMA", flash2);
+
+/* Flash region to be used for read only data.*/
+REGION_ALIAS("RODATA_FLASH", flash2);
+REGION_ALIAS("RODATA_FLASH_LMA", flash2);
+
+/* Flash region to be used for various.*/
+REGION_ALIAS("VARIOUS_FLASH", flash2);
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
+
+/* Flash region to be used for RAM(n) initialization data.*/
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("MAIN_STACK_RAM", ram0);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+REGION_ALIAS("DATA_RAM_LMA", flash2);
+
+/* RAM region to be used for BSS segment.*/
+REGION_ALIAS("BSS_RAM", ram0);
+
+/* RAM region to be used for the default heap.*/
+REGION_ALIAS("HEAP_RAM", ram0);
+
+/* Generic rules inclusion.*/
+INCLUDE rules.ld
diff --git a/platforms/chibios/boards/common/ld/STM32F401xE.ld b/platforms/chibios/boards/common/ld/STM32F401xE.ld
new file mode 100644
index 0000000000..69af7ed71e
--- /dev/null
+++ b/platforms/chibios/boards/common/ld/STM32F401xE.ld
@@ -0,0 +1,85 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * STM32F401xE memory setup.
+ */
+MEMORY
+{
+ flash0 (rx) : org = 0x08000000, len = 16k /* Sector 0 - Init code as ROM bootloader assumes application starts here */
+ flash1 (rx) : org = 0x08004000, len = 16k /* Sector 1 - Emulated eeprom */
+ flash2 (rx) : org = 0x08008000, len = 512k - 32k /* Sector 2..7 - Rest of firmware */
+ flash3 (rx) : org = 0x00000000, len = 0
+ flash4 (rx) : org = 0x00000000, len = 0
+ flash5 (rx) : org = 0x00000000, len = 0
+ flash6 (rx) : org = 0x00000000, len = 0
+ flash7 (rx) : org = 0x00000000, len = 0
+ ram0 (wx) : org = 0x20000000, len = 96k
+ ram1 (wx) : org = 0x00000000, len = 0
+ ram2 (wx) : org = 0x00000000, len = 0
+ ram3 (wx) : org = 0x00000000, len = 0
+ ram4 (wx) : org = 0x00000000, len = 0
+ ram5 (wx) : org = 0x00000000, len = 0
+ ram6 (wx) : org = 0x00000000, len = 0
+ ram7 (wx) : org = 0x00000000, len = 0
+}
+
+/* For each data/text section two region are defined, a virtual region
+ and a load region (_LMA suffix).*/
+
+/* Flash region to be used for exception vectors.*/
+REGION_ALIAS("VECTORS_FLASH", flash0);
+REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
+
+/* Flash region to be used for constructors and destructors.*/
+REGION_ALIAS("XTORS_FLASH", flash2);
+REGION_ALIAS("XTORS_FLASH_LMA", flash2);
+
+/* Flash region to be used for code text.*/
+REGION_ALIAS("TEXT_FLASH", flash2);
+REGION_ALIAS("TEXT_FLASH_LMA", flash2);
+
+/* Flash region to be used for read only data.*/
+REGION_ALIAS("RODATA_FLASH", flash2);
+REGION_ALIAS("RODATA_FLASH_LMA", flash2);
+
+/* Flash region to be used for various.*/
+REGION_ALIAS("VARIOUS_FLASH", flash2);
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
+
+/* Flash region to be used for RAM(n) initialization data.*/
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("MAIN_STACK_RAM", ram0);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+REGION_ALIAS("DATA_RAM_LMA", flash2);
+
+/* RAM region to be used for BSS segment.*/
+REGION_ALIAS("BSS_RAM", ram0);
+
+/* RAM region to be used for the default heap.*/
+REGION_ALIAS("HEAP_RAM", ram0);
+
+/* Generic rules inclusion.*/
+INCLUDE rules.ld
diff --git a/platforms/chibios/boards/common/ld/STM32F405xG.ld b/platforms/chibios/boards/common/ld/STM32F405xG.ld
new file mode 100644
index 0000000000..b7d0baa210
--- /dev/null
+++ b/platforms/chibios/boards/common/ld/STM32F405xG.ld
@@ -0,0 +1,86 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * STM32F405xG memory setup.
+ * Note: Use of ram1 and ram2 is mutually exclusive with use of ram0.
+ */
+MEMORY
+{
+ flash0 (rx) : org = 0x08000000, len = 16k /* Sector 0 - Init code as ROM bootloader assumes application starts here */
+ flash1 (rx) : org = 0x08004000, len = 16k /* Sector 1 - Emulated eeprom */
+ flash2 (rx) : org = 0x08008000, len = 1M - 32k /* Sector 2..6 - Rest of firmware */
+ flash3 (rx) : org = 0x00000000, len = 0
+ flash4 (rx) : org = 0x00000000, len = 0
+ flash5 (rx) : org = 0x00000000, len = 0
+ flash6 (rx) : org = 0x00000000, len = 0
+ flash7 (rx) : org = 0x00000000, len = 0
+ ram0 (wx) : org = 0x20000000, len = 128k /* SRAM1 + SRAM2 */
+ ram1 (wx) : org = 0x20000000, len = 112k /* SRAM1 */
+ ram2 (wx) : org = 0x2001C000, len = 16k /* SRAM2 */
+ ram3 (wx) : org = 0x00000000, len = 0
+ ram4 (wx) : org = 0x10000000, len = 64k /* CCM SRAM */
+ ram5 (wx) : org = 0x40024000, len = 4k /* BCKP SRAM */
+ ram6 (wx) : org = 0x00000000, len = 0
+ ram7 (wx) : org = 0x00000000, len = 0
+}
+
+/* For each data/text section two region are defined, a virtual region
+ and a load region (_LMA suffix).*/
+
+/* Flash region to be used for exception vectors.*/
+REGION_ALIAS("VECTORS_FLASH", flash0);
+REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
+
+/* Flash region to be used for constructors and destructors.*/
+REGION_ALIAS("XTORS_FLASH", flash2);
+REGION_ALIAS("XTORS_FLASH_LMA", flash2);
+
+/* Flash region to be used for code text.*/
+REGION_ALIAS("TEXT_FLASH", flash2);
+REGION_ALIAS("TEXT_FLASH_LMA", flash2);
+
+/* Flash region to be used for read only data.*/
+REGION_ALIAS("RODATA_FLASH", flash2);
+REGION_ALIAS("RODATA_FLASH_LMA", flash2);
+
+/* Flash region to be used for various.*/
+REGION_ALIAS("VARIOUS_FLASH", flash2);
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
+
+/* Flash region to be used for RAM(n) initialization data.*/
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("MAIN_STACK_RAM", ram0);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+REGION_ALIAS("DATA_RAM_LMA", flash2);
+
+/* RAM region to be used for BSS segment.*/
+REGION_ALIAS("BSS_RAM", ram0);
+
+/* RAM region to be used for the default heap.*/
+REGION_ALIAS("HEAP_RAM", ram0);
+
+/* Generic rules inclusion.*/
+INCLUDE rules.ld
diff --git a/platforms/chibios/boards/common/ld/STM32F411xE.ld b/platforms/chibios/boards/common/ld/STM32F411xE.ld
new file mode 100644
index 0000000000..aea8084b51
--- /dev/null
+++ b/platforms/chibios/boards/common/ld/STM32F411xE.ld
@@ -0,0 +1,85 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * STM32F411xE memory setup.
+ */
+MEMORY
+{
+ flash0 (rx) : org = 0x08000000, len = 16k /* Sector 0 - Init code as ROM bootloader assumes application starts here */
+ flash1 (rx) : org = 0x08004000, len = 16k /* Sector 1 - Emulated eeprom */
+ flash2 (rx) : org = 0x08008000, len = 512k - 32k /* Sector 2..7 - Rest of firmware */
+ flash3 (rx) : org = 0x00000000, len = 0
+ flash4 (rx) : org = 0x00000000, len = 0
+ flash5 (rx) : org = 0x00000000, len = 0
+ flash6 (rx) : org = 0x00000000, len = 0
+ flash7 (rx) : org = 0x00000000, len = 0
+ ram0 (wx) : org = 0x20000000, len = 128k
+ ram1 (wx) : org = 0x00000000, len = 0
+ ram2 (wx) : org = 0x00000000, len = 0
+ ram3 (wx) : org = 0x00000000, len = 0
+ ram4 (wx) : org = 0x00000000, len = 0
+ ram5 (wx) : org = 0x00000000, len = 0
+ ram6 (wx) : org = 0x00000000, len = 0
+ ram7 (wx) : org = 0x00000000, len = 0
+}
+
+/* For each data/text section two region are defined, a virtual region
+ and a load region (_LMA suffix).*/
+
+/* Flash region to be used for exception vectors.*/
+REGION_ALIAS("VECTORS_FLASH", flash0);
+REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
+
+/* Flash region to be used for constructors and destructors.*/
+REGION_ALIAS("XTORS_FLASH", flash2);
+REGION_ALIAS("XTORS_FLASH_LMA", flash2);
+
+/* Flash region to be used for code text.*/
+REGION_ALIAS("TEXT_FLASH", flash2);
+REGION_ALIAS("TEXT_FLASH_LMA", flash2);
+
+/* Flash region to be used for read only data.*/
+REGION_ALIAS("RODATA_FLASH", flash2);
+REGION_ALIAS("RODATA_FLASH_LMA", flash2);
+
+/* Flash region to be used for various.*/
+REGION_ALIAS("VARIOUS_FLASH", flash2);
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash2);
+
+/* Flash region to be used for RAM(n) initialization data.*/
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash2);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("MAIN_STACK_RAM", ram0);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+REGION_ALIAS("DATA_RAM_LMA", flash2);
+
+/* RAM region to be used for BSS segment.*/
+REGION_ALIAS("BSS_RAM", ram0);
+
+/* RAM region to be used for the default heap.*/
+REGION_ALIAS("HEAP_RAM", ram0);
+
+/* Generic rules inclusion.*/
+INCLUDE rules.ld
diff --git a/platforms/chibios/drivers/analog.c b/platforms/chibios/drivers/analog.c
index 8c476fcac2..eb437665f1 100644
--- a/platforms/chibios/drivers/analog.c
+++ b/platforms/chibios/drivers/analog.c
@@ -38,7 +38,7 @@
// Otherwise assume V3
#if defined(STM32F0XX) || defined(STM32L0XX)
# define USE_ADCV1
-#elif defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX)
+#elif defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(GD32VF103)
# define USE_ADCV2
#endif
@@ -75,7 +75,7 @@
/* User configurable ADC options */
#ifndef ADC_COUNT
-# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX)
+# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103)
# define ADC_COUNT 1
# elif defined(STM32F3XX)
# define ADC_COUNT 4
@@ -122,8 +122,8 @@ static ADCConversionGroup adcConversionGroup = {
.cfgr1 = ADC_CFGR1_CONT | ADC_RESOLUTION,
.smpr = ADC_SAMPLING_RATE,
#elif defined(USE_ADCV2)
-# if !defined(STM32F1XX)
- .cr2 = ADC_CR2_SWSTART, // F103 seem very unhappy with, F401 seems very unhappy without...
+# if !defined(STM32F1XX) && !defined(GD32VF103)
+ .cr2 = ADC_CR2_SWSTART, // F103 seem very unhappy with, F401 seems very unhappy without...
# endif
.smpr2 = ADC_SMPR2_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN9(ADC_SAMPLING_RATE),
.smpr1 = ADC_SMPR1_SMP_AN10(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN11(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN12(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN13(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN14(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN15(ADC_SAMPLING_RATE),
@@ -220,7 +220,7 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) {
case F9: return TO_MUX( ADC_CHANNEL_IN7, 2 );
case F10: return TO_MUX( ADC_CHANNEL_IN8, 2 );
# endif
-#elif defined(STM32F1XX)
+#elif defined(STM32F1XX) || defined(GD32VF103)
case A0: return TO_MUX( ADC_CHANNEL_IN0, 0 );
case A1: return TO_MUX( ADC_CHANNEL_IN1, 0 );
case A2: return TO_MUX( ADC_CHANNEL_IN2, 0 );
diff --git a/quantum/audio/driver_chibios_dac.h b/platforms/chibios/drivers/audio_dac.h
index 07cd622ead..07cd622ead 100644
--- a/quantum/audio/driver_chibios_dac.h
+++ b/platforms/chibios/drivers/audio_dac.h
diff --git a/quantum/audio/driver_chibios_dac_additive.c b/platforms/chibios/drivers/audio_dac_additive.c
index db304adb87..db304adb87 100644
--- a/quantum/audio/driver_chibios_dac_additive.c
+++ b/platforms/chibios/drivers/audio_dac_additive.c
diff --git a/quantum/audio/driver_chibios_dac_basic.c b/platforms/chibios/drivers/audio_dac_basic.c
index fac6513506..fac6513506 100644
--- a/quantum/audio/driver_chibios_dac_basic.c
+++ b/platforms/chibios/drivers/audio_dac_basic.c
diff --git a/quantum/audio/driver_chibios_pwm.h b/platforms/chibios/drivers/audio_pwm.h
index 86cab916e1..86cab916e1 100644
--- a/quantum/audio/driver_chibios_pwm.h
+++ b/platforms/chibios/drivers/audio_pwm.h
diff --git a/quantum/audio/driver_chibios_pwm_hardware.c b/platforms/chibios/drivers/audio_pwm_hardware.c
index 3c7d89b290..cd40019ee7 100644
--- a/quantum/audio/driver_chibios_pwm_hardware.c
+++ b/platforms/chibios/drivers/audio_pwm_hardware.c
@@ -109,9 +109,9 @@ void audio_driver_initialize(void) {
// connect the AUDIO_PIN to the PWM hardware
#if defined(USE_GPIOV1) // STM32F103C8
- palSetLineMode(AUDIO_PIN, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
+ palSetLineMode(AUDIO_PIN, PAL_MODE_ALTERNATE_PUSHPULL);
#else // GPIOv2 (or GPIOv3 for f4xx, which is the same/compatible at this command)
- palSetLineMode(AUDIO_PIN, PAL_STM32_MODE_ALTERNATE | PAL_STM32_ALTERNATE(AUDIO_PWM_PAL_MODE));
+ palSetLineMode(AUDIO_PIN, PAL_MODE_ALTERNATE(AUDIO_PWM_PAL_MODE));
#endif
gptStart(&AUDIO_STATE_TIMER, &gptCFG);
diff --git a/quantum/audio/driver_chibios_pwm_software.c b/platforms/chibios/drivers/audio_pwm_software.c
index 15c3e98b6a..15c3e98b6a 100644
--- a/quantum/audio/driver_chibios_pwm_software.c
+++ b/platforms/chibios/drivers/audio_pwm_software.c
diff --git a/platforms/chibios/drivers/i2c_master.c b/platforms/chibios/drivers/i2c_master.c
index fc4bb2ab37..63e85ae87d 100644
--- a/platforms/chibios/drivers/i2c_master.c
+++ b/platforms/chibios/drivers/i2c_master.c
@@ -63,16 +63,16 @@ __attribute__((weak)) void i2c_init(void) {
is_initialised = true;
// Try releasing special pins for a short time
- palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT);
- palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
+ palSetLineMode(I2C1_SCL_PIN, PAL_MODE_INPUT);
+ palSetLineMode(I2C1_SDA_PIN, PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
#if defined(USE_GPIOV1)
- palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, I2C1_SCL_PAL_MODE);
- palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, I2C1_SDA_PAL_MODE);
+ palSetLineMode(I2C1_SCL_PIN, I2C1_SCL_PAL_MODE);
+ palSetLineMode(I2C1_SDA_PIN, I2C1_SDA_PAL_MODE);
#else
- palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
- palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
+ palSetLineMode(I2C1_SCL_PIN, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
+ palSetLineMode(I2C1_SDA_PIN, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
#endif
}
}
@@ -102,7 +102,7 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
i2cStart(&I2C_DRIVER, &i2cconfig);
uint8_t complete_packet[length + 1];
- for (uint8_t i = 0; i < length; i++) {
+ for (uint16_t i = 0; i < length; i++) {
complete_packet[i + 1] = data[i];
}
complete_packet[0] = regaddr;
@@ -111,6 +111,21 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
return chibios_to_qmk(&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;
+ i2cStart(&I2C_DRIVER, &i2cconfig);
+
+ uint8_t complete_packet[length + 2];
+ for (uint16_t i = 0; i < length; i++) {
+ complete_packet[i + 2] = data[i];
+ }
+ 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));
+ return chibios_to_qmk(&status);
+}
+
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_address = devaddr;
i2cStart(&I2C_DRIVER, &i2cconfig);
@@ -118,4 +133,12 @@ i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16
return chibios_to_qmk(&status);
}
+i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
+ i2c_address = devaddr;
+ 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));
+ return chibios_to_qmk(&status);
+}
+
void i2c_stop(void) { i2cStop(&I2C_DRIVER); }
diff --git a/platforms/chibios/drivers/i2c_master.h b/platforms/chibios/drivers/i2c_master.h
index c68109acbd..5f082e9d1e 100644
--- a/platforms/chibios/drivers/i2c_master.h
+++ b/platforms/chibios/drivers/i2c_master.h
@@ -27,24 +27,11 @@
#include <ch.h>
#include <hal.h>
-#ifdef I2C1_BANK
-# define I2C1_SCL_BANK I2C1_BANK
-# define I2C1_SDA_BANK I2C1_BANK
+#ifndef I2C1_SCL_PIN
+# define I2C1_SCL_PIN B6
#endif
-
-#ifndef I2C1_SCL_BANK
-# define I2C1_SCL_BANK GPIOB
-#endif
-
-#ifndef I2C1_SDA_BANK
-# define I2C1_SDA_BANK GPIOB
-#endif
-
-#ifndef I2C1_SCL
-# define I2C1_SCL 6
-#endif
-#ifndef I2C1_SDA
-# define I2C1_SDA 7
+#ifndef I2C1_SDA_PIN
+# define I2C1_SDA_PIN B7
#endif
#ifdef USE_I2CV1
@@ -83,10 +70,10 @@
#ifdef USE_GPIOV1
# ifndef I2C1_SCL_PAL_MODE
-# define I2C1_SCL_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
+# define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN
# endif
# ifndef I2C1_SDA_PAL_MODE
-# define I2C1_SDA_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
+# define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN
# endif
#else
// The default PAL alternate modes are used to signal that the pins are used for I2C
@@ -109,5 +96,7 @@ 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);
diff --git a/platforms/chibios/drivers/ps2/ps2_io.c b/platforms/chibios/drivers/ps2/ps2_io.c
new file mode 100644
index 0000000000..906d85d848
--- /dev/null
+++ b/platforms/chibios/drivers/ps2/ps2_io.c
@@ -0,0 +1,55 @@
+#include <stdbool.h>
+#include "ps2_io.h"
+
+// chibiOS headers
+#include "ch.h"
+#include "hal.h"
+
+/* Check port settings for clock and data line */
+#if !(defined(PS2_CLOCK_PIN))
+# error "PS/2 clock setting is required in config.h"
+#endif
+
+#if !(defined(PS2_DATA_PIN))
+# error "PS/2 data setting is required in config.h"
+#endif
+
+/*
+ * Clock
+ */
+void clock_init(void) {}
+
+void clock_lo(void) {
+ palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palWriteLine(PS2_CLOCK_PIN, PAL_LOW);
+}
+
+void clock_hi(void) {
+ palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palWriteLine(PS2_CLOCK_PIN, PAL_HIGH);
+}
+
+bool clock_in(void) {
+ palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT);
+ return palReadLine(PS2_CLOCK_PIN);
+}
+
+/*
+ * Data
+ */
+void data_init(void) {}
+
+void data_lo(void) {
+ palSetLineMode(PS2_DATA_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palWriteLine(PS2_DATA_PIN, PAL_LOW);
+}
+
+void data_hi(void) {
+ palSetLineMode(PS2_DATA_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palWriteLine(PS2_DATA_PIN, PAL_HIGH);
+}
+
+bool data_in(void) {
+ palSetLineMode(PS2_DATA_PIN, PAL_MODE_INPUT);
+ return palReadLine(PS2_DATA_PIN);
+}
diff --git a/platforms/chibios/drivers/serial.c b/platforms/chibios/drivers/serial.c
index f54fbcee4e..ef6f0aa8d5 100644
--- a/platforms/chibios/drivers/serial.c
+++ b/platforms/chibios/drivers/serial.c
@@ -19,7 +19,7 @@
# error "chSysPolledDelayX method not supported on this platform"
#else
# undef wait_us
-# define wait_us(x) chSysPolledDelayX(US2RTC(STM32_SYSCLK, x))
+# define wait_us(x) chSysPolledDelayX(US2RTC(CPU_CLOCK, x))
#endif
#ifndef SELECT_SOFT_SERIAL_SPEED
diff --git a/platforms/chibios/drivers/serial_usart.c b/platforms/chibios/drivers/serial_usart.c
index ea4473791c..124e4be685 100644
--- a/platforms/chibios/drivers/serial_usart.c
+++ b/platforms/chibios/drivers/serial_usart.c
@@ -104,9 +104,9 @@ static inline bool receive(uint8_t* destination, const size_t size) {
__attribute__((weak)) void usart_init(void) {
# if defined(MCU_STM32)
# if defined(USE_GPIOV1)
- palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
+ palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN);
# else
- palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
+ palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
# endif
# if defined(USART_REMAP)
@@ -125,11 +125,11 @@ __attribute__((weak)) void usart_init(void) {
__attribute__((weak)) void usart_init(void) {
# if defined(MCU_STM32)
# if defined(USE_GPIOV1)
- palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
+ palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE_PUSHPULL);
palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_INPUT);
# else
- palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
- palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_RX_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
+ palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_RX_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
# endif
# if defined(USART_REMAP)
diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c
index 28ddcbb2ba..c592369dde 100644
--- a/platforms/chibios/drivers/spi_master.c
+++ b/platforms/chibios/drivers/spi_master.c
@@ -42,9 +42,9 @@ __attribute__((weak)) void spi_init(void) {
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_PAL_MODE);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_PAL_MODE);
#else
- palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
- palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
- palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST);
+ palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
#endif
}
}
@@ -110,6 +110,31 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
spiConfig.tar0 |= SPIx_CTARn_BR(8);
break;
}
+
+#elif defined(HT32)
+ spiConfig.cr0 = SPI_CR0_SELOEN;
+ spiConfig.cr1 = SPI_CR1_MODE | 8; // 8 bits and in master mode
+
+ if (lsbFirst) {
+ spiConfig.cr1 |= SPI_CR1_FIRSTBIT;
+ }
+
+ switch (mode) {
+ case 0:
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE0;
+ break;
+ case 1:
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE1;
+ break;
+ case 2:
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE2;
+ break;
+ case 3:
+ spiConfig.cr1 |= SPI_CR1_FORMAT_MODE3;
+ break;
+ }
+
+ spiConfig.cpr = (roundedDivisor - 1) >> 1;
#else
spiConfig.cr1 = 0;
diff --git a/platforms/chibios/drivers/spi_master.h b/platforms/chibios/drivers/spi_master.h
index b5a6ef1437..6a3ce481f1 100644
--- a/platforms/chibios/drivers/spi_master.h
+++ b/platforms/chibios/drivers/spi_master.h
@@ -33,7 +33,7 @@
#ifndef SPI_SCK_PAL_MODE
# if defined(USE_GPIOV1)
-# define SPI_SCK_PAL_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# define SPI_SCK_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL
# else
# define SPI_SCK_PAL_MODE 5
# endif
@@ -45,7 +45,7 @@
#ifndef SPI_MOSI_PAL_MODE
# if defined(USE_GPIOV1)
-# define SPI_MOSI_PAL_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# define SPI_MOSI_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL
# else
# define SPI_MOSI_PAL_MODE 5
# endif
@@ -57,7 +57,7 @@
#ifndef SPI_MISO_PAL_MODE
# if defined(USE_GPIOV1)
-# define SPI_MISO_PAL_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# define SPI_MISO_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL
# else
# define SPI_MISO_PAL_MODE 5
# endif
diff --git a/platforms/chibios/drivers/uart.c b/platforms/chibios/drivers/uart.c
index 030335b342..0e8e0515af 100644
--- a/platforms/chibios/drivers/uart.c
+++ b/platforms/chibios/drivers/uart.c
@@ -29,11 +29,11 @@ void uart_init(uint32_t baud) {
serialConfig.speed = baud;
#if defined(USE_GPIOV1)
- palSetLineMode(SD1_TX_PIN, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
- palSetLineMode(SD1_RX_PIN, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
+ palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN);
+ palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN);
#else
- palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE(SD1_TX_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
- palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE(SD1_RX_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
+ palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE(SD1_TX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
+ palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE(SD1_RX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
#endif
sdStart(&SERIAL_DRIVER, &serialConfig);
}
diff --git a/platforms/chibios/drivers/ws2812.c b/platforms/chibios/drivers/ws2812.c
index 0d12e2fb79..b46c46ae57 100644
--- a/platforms/chibios/drivers/ws2812.c
+++ b/platforms/chibios/drivers/ws2812.c
@@ -6,7 +6,7 @@
/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */
#ifndef NOP_FUDGE
-# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
+# if defined(STM32F0XX) || defined(STM32F1XX) || defined(GD32VF103) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
# define NOP_FUDGE 0.4
# else
# error("NOP_FUDGE configuration required")
@@ -23,7 +23,7 @@
#endif
#define NUMBER_NOPS 6
-#define CYCLES_PER_SEC (STM32_SYSCLK / NUMBER_NOPS * NOP_FUDGE)
+#define CYCLES_PER_SEC (CPU_CLOCK / NUMBER_NOPS * NOP_FUDGE)
#define NS_PER_SEC (1000000000L) // Note that this has to be SIGNED since we want to be able to check for negative values of derivatives
#define NS_PER_CYCLE (NS_PER_SEC / CYCLES_PER_SEC)
#define NS_TO_CYCLES(n) ((n) / NS_PER_CYCLE)
diff --git a/platforms/chibios/drivers/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c
index e6af55b6b3..c17b9cd4e5 100644
--- a/platforms/chibios/drivers/ws2812_pwm.c
+++ b/platforms/chibios/drivers/ws2812_pwm.c
@@ -5,7 +5,9 @@
/* Adapted from https://github.com/joewa/WS2812-LED-Driver_ChibiOS/ */
#ifdef RGBW
-# error "RGBW not supported"
+# define WS2812_CHANNELS 4
+#else
+# define WS2812_CHANNELS 3
#endif
#ifndef WS2812_PWM_DRIVER
@@ -40,15 +42,15 @@
// Default Push Pull
#ifndef WS2812_EXTERNAL_PULLUP
# if defined(USE_GPIOV1)
-# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE_PUSHPULL
# else
-# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_PWM_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING
+# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_PWM_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_PUPDR_FLOATING
# endif
#else
# if defined(USE_GPIOV1)
-# define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
+# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE_OPENDRAIN
# else
-# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_PWM_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING
+# define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_PWM_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN | PAL_OUTPUT_SPEED_HIGHEST | PAL_PUPDR_FLOATING
# endif
#endif
@@ -59,7 +61,7 @@
/* --- PRIVATE CONSTANTS ---------------------------------------------------- */
-#define WS2812_PWM_FREQUENCY (STM32_SYSCLK / 2) /**< Clock frequency of PWM, must be valid with respect to system clock! */
+#define WS2812_PWM_FREQUENCY (CPU_CLOCK / 2) /**< Clock frequency of PWM, must be valid with respect to system clock! */
#define WS2812_PWM_PERIOD (WS2812_PWM_FREQUENCY / WS2812_PWM_TARGET_PERIOD) /**< Clock period in ticks. 1 / 800kHz = 1.25 uS (as per datasheet) */
/**
@@ -68,8 +70,9 @@
* The reset period for each frame is defined in WS2812_TRST_US.
* Calculate the number of zeroes to add at the end assuming 1.25 uS/bit:
*/
+#define WS2812_COLOR_BITS (WS2812_CHANNELS * 8)
#define WS2812_RESET_BIT_N (1000 * WS2812_TRST_US / 1250)
-#define WS2812_COLOR_BIT_N (RGBLED_NUM * 24) /**< Number of data bits */
+#define WS2812_COLOR_BIT_N (RGBLED_NUM * WS2812_COLOR_BITS) /**< Number of data bits */
#define WS2812_BIT_N (WS2812_COLOR_BIT_N + WS2812_RESET_BIT_N) /**< Total number of bits in a frame */
/**
@@ -114,7 +117,7 @@
*
* @return The bit index
*/
-#define WS2812_BIT(led, byte, bit) (24 * (led) + 8 * (byte) + (7 - (bit)))
+#define WS2812_BIT(led, byte, bit) (WS2812_COLOR_BITS * (led) + 8 * (byte) + (7 - (bit)))
#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
/**
@@ -228,6 +231,20 @@
# define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 0, (bit))
#endif
+#ifdef RGBW
+/**
+ * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given white bit
+ *
+ * @note The white byte is the last byte in the color packet
+ *
+ * @param[in] led: The led index [0, @ref WS2812_LED_N)
+ * @param[in] bit: The bit index [0, 7]
+ *
+ * @return The bit index
+ */
+# define WS2812_WHITE_BIT(led, bit) WS2812_BIT((led), 3, (bit))
+#endif
+
/* --- PRIVATE VARIABLES ---------------------------------------------------- */
static uint32_t ws2812_frame_buffer[WS2812_BIT_N + 1]; /**< Buffer for a frame */
@@ -296,6 +313,17 @@ void ws2812_write_led(uint16_t led_number, uint8_t r, uint8_t g, uint8_t b) {
ws2812_frame_buffer[WS2812_BLUE_BIT(led_number, bit)] = ((b >> bit) & 0x01) ? WS2812_DUTYCYCLE_1 : WS2812_DUTYCYCLE_0;
}
}
+void ws2812_write_led_rgbw(uint16_t led_number, uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
+ // Write color to frame buffer
+ for (uint8_t bit = 0; bit < 8; bit++) {
+ ws2812_frame_buffer[WS2812_RED_BIT(led_number, bit)] = ((r >> bit) & 0x01) ? WS2812_DUTYCYCLE_1 : WS2812_DUTYCYCLE_0;
+ ws2812_frame_buffer[WS2812_GREEN_BIT(led_number, bit)] = ((g >> bit) & 0x01) ? WS2812_DUTYCYCLE_1 : WS2812_DUTYCYCLE_0;
+ ws2812_frame_buffer[WS2812_BLUE_BIT(led_number, bit)] = ((b >> bit) & 0x01) ? WS2812_DUTYCYCLE_1 : WS2812_DUTYCYCLE_0;
+#ifdef RGBW
+ ws2812_frame_buffer[WS2812_WHITE_BIT(led_number, bit)] = ((w >> bit) & 0x01) ? WS2812_DUTYCYCLE_1 : WS2812_DUTYCYCLE_0;
+#endif
+ }
+}
// Setleds for standard RGB
void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {
@@ -306,6 +334,10 @@ void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {
}
for (uint16_t i = 0; i < leds; i++) {
+#ifdef RGBW
+ ws2812_write_led_rgbw(i, ledarray[i].r, ledarray[i].g, ledarray[i].b, ledarray[i].w);
+#else
ws2812_write_led(i, ledarray[i].r, ledarray[i].g, ledarray[i].b);
+#endif
}
}
diff --git a/platforms/chibios/drivers/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c
index fe14b478ab..62722f466e 100644
--- a/platforms/chibios/drivers/ws2812_spi.c
+++ b/platforms/chibios/drivers/ws2812_spi.c
@@ -3,10 +3,6 @@
/* Adapted from https://github.com/gamazeps/ws2812b-chibios-SPIDMA/ */
-#ifdef RGBW
-# error "RGBW not supported"
-#endif
-
// Define the spi your LEDs are plugged to here
#ifndef WS2812_SPI
# define WS2812_SPI SPID1
@@ -24,15 +20,15 @@
// Default Push Pull
#ifndef WS2812_EXTERNAL_PULLUP
# if defined(USE_GPIOV1)
-# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE_PUSHPULL
# else
-# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL
# endif
#else
# if defined(USE_GPIOV1)
-# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE_OPENDRAIN
# else
-# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN
+# define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN
# endif
#endif
@@ -68,14 +64,18 @@
#endif
#if defined(USE_GPIOV1)
-# define WS2812_SCK_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE_PUSHPULL
#else
-# define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
+# define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL
#endif
#define BYTES_FOR_LED_BYTE 4
-#define NB_COLORS 3
-#define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS)
+#ifdef RGBW
+# define WS2812_CHANNELS 4
+#else
+# define WS2812_CHANNELS 3
+#endif
+#define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * WS2812_CHANNELS)
#define DATA_SIZE (BYTES_FOR_LED * RGBLED_NUM)
#define RESET_SIZE (1000 * WS2812_TRST_US / (2 * 1250))
#define PREAMBLE_SIZE 4
@@ -116,6 +116,9 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.r, j);
#endif
+#ifdef RGBW
+ for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 4 + j] = get_protocol_eq(color.w, j);
+#endif
}
void ws2812_init(void) {
diff --git a/platforms/chibios/flash.mk b/platforms/chibios/flash.mk
index c0b32c2f2b..31f69595da 100644
--- a/platforms/chibios/flash.mk
+++ b/platforms/chibios/flash.mk
@@ -82,6 +82,8 @@ else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062)
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
else ifeq ($(strip $(MCU_FAMILY)),STM32)
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
+else ifeq ($(strip $(MCU_FAMILY)),GD32V)
+ $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
else
$(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)"
endif
diff --git a/quantum/action.c b/quantum/action.c
index be135f18f2..95f39d23d4 100644
--- a/quantum/action.c
+++ b/quantum/action.c
@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "keycode.h"
#include "keyboard.h"
#include "mousekey.h"
+#include "programmable_button.h"
#include "command.h"
#include "led.h"
#include "action_layer.h"
@@ -988,6 +989,10 @@ void clear_keyboard_but_mods_and_keys() {
mousekey_clear();
mousekey_send();
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ programmable_button_clear();
+ programmable_button_send();
+#endif
}
/** \brief Utilities for actions. (FIXME: Needs better description)
diff --git a/quantum/api.c b/quantum/api.c
deleted file mode 100644
index 1685744589..0000000000
--- a/quantum/api.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Copyright 2016 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/>.
- */
-
-#include "api.h"
-#include "quantum.h"
-
-void dword_to_bytes(uint32_t dword, uint8_t* bytes) {
- bytes[0] = (dword >> 24) & 0xFF;
- bytes[1] = (dword >> 16) & 0xFF;
- bytes[2] = (dword >> 8) & 0xFF;
- bytes[3] = (dword >> 0) & 0xFF;
-}
-
-uint32_t bytes_to_dword(uint8_t* bytes, uint8_t index) { return ((uint32_t)bytes[index + 0] << 24) | ((uint32_t)bytes[index + 1] << 16) | ((uint32_t)bytes[index + 2] << 8) | (uint32_t)bytes[index + 3]; }
-
-__attribute__((weak)) bool process_api_quantum(uint8_t length, uint8_t* data) { return process_api_keyboard(length, data); }
-
-__attribute__((weak)) bool process_api_keyboard(uint8_t length, uint8_t* data) { return process_api_user(length, data); }
-
-__attribute__((weak)) bool process_api_user(uint8_t length, uint8_t* data) { return true; }
-
-void process_api(uint16_t length, uint8_t* data) {
- // SEND_STRING("\nRX: ");
- // for (uint8_t i = 0; i < length; i++) {
- // send_byte(data[i]);
- // SEND_STRING(" ");
- // }
- if (!process_api_quantum(length, data)) return;
-
- switch (data[0]) {
- case MT_SET_DATA:
- switch (data[1]) {
- case DT_DEFAULT_LAYER: {
- eeconfig_update_default_layer(data[2]);
- default_layer_set((uint32_t)(data[2]));
- break;
- }
- case DT_KEYMAP_OPTIONS: {
- eeconfig_update_keymap(data[2]);
- break;
- }
- case DT_RGBLIGHT: {
-#ifdef RGBLIGHT_ENABLE
- uint32_t rgblight = bytes_to_dword(data, 2);
- eeconfig_update_rgblight(rgblight);
-#endif
- break;
- }
- }
- case MT_GET_DATA:
- switch (data[1]) {
- case DT_HANDSHAKE: {
- MT_GET_DATA_ACK(DT_HANDSHAKE, NULL, 0);
- break;
- }
- case DT_DEBUG: {
- uint8_t debug_bytes[1] = {eeprom_read_byte(EECONFIG_DEBUG)};
- MT_GET_DATA_ACK(DT_DEBUG, debug_bytes, 1);
- break;
- }
- case DT_DEFAULT_LAYER: {
- uint8_t default_bytes[1] = {eeprom_read_byte(EECONFIG_DEFAULT_LAYER)};
- MT_GET_DATA_ACK(DT_DEFAULT_LAYER, default_bytes, 1);
- break;
- }
- case DT_CURRENT_LAYER: {
- uint8_t layer_state_bytes[4];
- dword_to_bytes(layer_state, layer_state_bytes);
- MT_GET_DATA_ACK(DT_CURRENT_LAYER, layer_state_bytes, 4);
- break;
- }
- case DT_AUDIO: {
-#ifdef AUDIO_ENABLE
- uint8_t audio_bytes[1] = {eeprom_read_byte(EECONFIG_AUDIO)};
- MT_GET_DATA_ACK(DT_AUDIO, audio_bytes, 1);
-#else
- MT_GET_DATA_ACK(DT_AUDIO, NULL, 0);
-#endif
- break;
- }
- case DT_BACKLIGHT: {
-#ifdef BACKLIGHT_ENABLE
- uint8_t backlight_bytes[1] = {eeprom_read_byte(EECONFIG_BACKLIGHT)};
- MT_GET_DATA_ACK(DT_BACKLIGHT, backlight_bytes, 1);
-#else
- MT_GET_DATA_ACK(DT_BACKLIGHT, NULL, 0);
-#endif
- break;
- }
- case DT_RGBLIGHT: {
-#ifdef RGBLIGHT_ENABLE
- uint8_t rgblight_bytes[4];
- dword_to_bytes(eeconfig_read_rgblight(), rgblight_bytes);
- MT_GET_DATA_ACK(DT_RGBLIGHT, rgblight_bytes, 4);
-#else
- MT_GET_DATA_ACK(DT_RGBLIGHT, NULL, 0);
-#endif
- break;
- }
- case DT_KEYMAP_OPTIONS: {
- uint8_t keymap_bytes[1] = {eeconfig_read_keymap()};
- MT_GET_DATA_ACK(DT_KEYMAP_OPTIONS, keymap_bytes, 1);
- break;
- }
- case DT_KEYMAP_SIZE: {
- uint8_t keymap_size[2] = {MATRIX_ROWS, MATRIX_COLS};
- MT_GET_DATA_ACK(DT_KEYMAP_SIZE, keymap_size, 2);
- break;
- }
- // This may be too much
- // case DT_KEYMAP: {
- // uint8_t keymap_data[MATRIX_ROWS * MATRIX_COLS * 4 + 3];
- // keymap_data[0] = data[2];
- // keymap_data[1] = MATRIX_ROWS;
- // keymap_data[2] = MATRIX_COLS;
- // for (int i = 0; i < MATRIX_ROWS; i++) {
- // for (int j = 0; j < MATRIX_COLS; j++) {
- // keymap_data[3 + (i*MATRIX_COLS*2) + (j*2)] = pgm_read_word(&keymaps[data[2]][i][j]) >> 8;
- // keymap_data[3 + (i*MATRIX_COLS*2) + (j*2) + 1] = pgm_read_word(&keymaps[data[2]][i][j]) & 0xFF;
- // }
- // }
- // MT_GET_DATA_ACK(DT_KEYMAP, keymap_data, MATRIX_ROWS * MATRIX_COLS * 4 + 3);
- // // uint8_t keymap_data[5];
- // // keymap_data[0] = data[2];
- // // keymap_data[1] = data[3];
- // // keymap_data[2] = data[4];
- // // keymap_data[3] = pgm_read_word(&keymaps[data[2]][data[3]][data[4]]) >> 8;
- // // keymap_data[4] = pgm_read_word(&keymaps[data[2]][data[3]][data[4]]) & 0xFF;
-
- // // MT_GET_DATA_ACK(DT_KEYMAP, keymap_data, 5);
- // break;
- // }
- default:
- break;
- }
- break;
- case MT_SET_DATA_ACK:
- case MT_GET_DATA_ACK:
- break;
- case MT_SEND_DATA:
- break;
- case MT_SEND_DATA_ACK:
- break;
- case MT_EXE_ACTION:
- break;
- case MT_EXE_ACTION_ACK:
- break;
- case MT_TYPE_ERROR:
- break;
- default:; // command not recognised
- SEND_BYTES(MT_TYPE_ERROR, DT_NONE, data, length);
- break;
-
- // #ifdef RGBLIGHT_ENABLE
- // case 0x27: ; // RGB LED functions
- // switch (*data++) {
- // case 0x00: ; // Update HSV
- // rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]);
- // break;
- // case 0x01: ; // Update RGB
- // break;
- // case 0x02: ; // Update mode
- // rgblight_mode(data[0]);
- // break;
- // }
- // break;
- // #endif
- }
-}
diff --git a/quantum/api.h b/quantum/api.h
deleted file mode 100644
index 0a30e9d6cc..0000000000
--- a/quantum/api.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2016 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
-
-#ifdef __AVR__
-# include "lufa.h"
-#endif
-
-enum MESSAGE_TYPE {
- MT_GET_DATA = 0x10, // Get data from keyboard
- MT_GET_DATA_ACK = 0x11, // returned data to process (ACK)
- MT_SET_DATA = 0x20, // Set data on keyboard
- MT_SET_DATA_ACK = 0x21, // returned data to confirm (ACK)
- MT_SEND_DATA = 0x30, // Sending data/action from keyboard
- MT_SEND_DATA_ACK = 0x31, // returned data/action confirmation (ACK)
- MT_EXE_ACTION = 0x40, // executing actions on keyboard
- MT_EXE_ACTION_ACK = 0x41, // return confirmation/value (ACK)
- MT_TYPE_ERROR = 0x80 // type not recognised (ACK)
-};
-
-enum DATA_TYPE { DT_NONE = 0x00, DT_HANDSHAKE, DT_DEFAULT_LAYER, DT_CURRENT_LAYER, DT_KEYMAP_OPTIONS, DT_BACKLIGHT, DT_RGBLIGHT, DT_UNICODE, DT_DEBUG, DT_AUDIO, DT_QUANTUM_ACTION, DT_KEYBOARD_ACTION, DT_USER_ACTION, DT_KEYMAP_SIZE, DT_KEYMAP };
-
-void dword_to_bytes(uint32_t dword, uint8_t* bytes);
-uint32_t bytes_to_dword(uint8_t* bytes, uint8_t index);
-
-#define MT_GET_DATA(data_type, data, length) SEND_BYTES(MT_GET_DATA, data_type, data, length)
-#define MT_GET_DATA_ACK(data_type, data, length) SEND_BYTES(MT_GET_DATA_ACK, data_type, data, length)
-#define MT_SET_DATA(data_type, data, length) SEND_BYTES(MT_SET_DATA, data_type, data, length)
-#define MT_SET_DATA_ACK(data_type, data, length) SEND_BYTES(MT_SET_DATA_ACK, data_type, data, length)
-#define MT_SEND_DATA(data_type, data, length) SEND_BYTES(MT_SEND_DATA, data_type, data, length)
-#define MT_SEND_DATA_ACK(data_type, data, length) SEND_BYTES(MT_SEND_DATA_ACK, data_type, data, length)
-#define MT_EXE_ACTION(data_type, data, length) SEND_BYTES(MT_EXE_ACTION, data_type, data, length)
-#define MT_EXE_ACTION_ACK(data_type, data, length) SEND_BYTES(MT_EXE_ACTION_ACK, data_type, data, length)
-
-void process_api(uint16_t length, uint8_t* data);
-
-__attribute__((weak)) bool process_api_quantum(uint8_t length, uint8_t* data);
-
-__attribute__((weak)) bool process_api_keyboard(uint8_t length, uint8_t* data);
-
-__attribute__((weak)) bool process_api_user(uint8_t length, uint8_t* data);
diff --git a/quantum/api/api_sysex.c b/quantum/api/api_sysex.c
deleted file mode 100644
index 07c90cf804..0000000000
--- a/quantum/api/api_sysex.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2016 Jack Humbert, Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "api_sysex.h"
-#include "sysex_tools.h"
-#include "print.h"
-#include "qmk_midi.h"
-
-void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t* bytes, uint16_t length) {
- // SEND_STRING("\nTX: ");
- // for (uint8_t i = 0; i < length; i++) {
- // send_byte(bytes[i]);
- // SEND_STRING(" ");
- // }
- if (length > API_SYSEX_MAX_SIZE) {
- xprintf("Sysex msg too big %d %d %d", message_type, data_type, length);
- return;
- }
-
- // The buffer size required is calculated as the following
- // API_SYSEX_MAX_SIZE is the maximum length
- // In addition to that we have a two byte message header consisting of the message_type and data_type
- // This has to be encoded with an additional overhead of one byte for every starting 7 bytes
- // We just add one extra byte in case it's not divisible by 7
- // Then we have an unencoded header consisting of 4 bytes
- // Plus a one byte terminator
- const unsigned message_header = 2;
- const unsigned unencoded_message = API_SYSEX_MAX_SIZE + message_header;
- const unsigned encoding_overhead = unencoded_message / 7 + 1;
- const unsigned encoded_size = unencoded_message + encoding_overhead;
- const unsigned unencoded_header = 4;
- const unsigned terminator = 1;
- const unsigned buffer_size = encoded_size + unencoded_header + terminator;
- uint8_t buffer[encoded_size + unencoded_header + terminator];
- // The unencoded header
- buffer[0] = 0xF0;
- buffer[1] = 0x00;
- buffer[2] = 0x00;
- buffer[3] = 0x00;
-
- // We copy the message to the end of the array, this way we can do an inplace encoding, using the same
- // buffer for both input and output
- const unsigned message_size = length + message_header;
- uint8_t* unencoded_start = buffer + buffer_size - message_size;
- uint8_t* ptr = unencoded_start;
- *(ptr++) = message_type;
- *(ptr++) = data_type;
- memcpy(ptr, bytes, length);
-
- unsigned encoded_length = sysex_encode(buffer + unencoded_header, unencoded_start, message_size);
- unsigned final_size = unencoded_header + encoded_length + terminator;
- buffer[final_size - 1] = 0xF7;
- midi_send_array(&midi_device, final_size, buffer);
-
- // SEND_STRING("\nTD: ");
- // for (uint8_t i = 0; i < encoded_length + 5; i++) {
- // send_byte(buffer[i]);
- // SEND_STRING(" ");
- // }
-}
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index 56b9158a1a..290d461f5a 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -26,17 +26,12 @@
#if defined(__AVR__)
# include <avr/io.h>
-# if defined(AUDIO_DRIVER_PWM)
-# include "driver_avr_pwm.h"
-# endif
#endif
-#if defined(PROTOCOL_CHIBIOS)
-# if defined(AUDIO_DRIVER_PWM)
-# include "driver_chibios_pwm.h"
-# elif defined(AUDIO_DRIVER_DAC)
-# include "driver_chibios_dac.h"
-# endif
+#if defined(AUDIO_DRIVER_PWM)
+# include "audio_pwm.h"
+#elif defined(AUDIO_DRIVER_DAC)
+# include "audio_dac.h"
#endif
typedef union {
diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index b54b397e1c..8e80a016aa 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -20,11 +20,9 @@
#include "musical_notes.h"
-#if __GNUC__ > 5 // don't use for older gcc compilers since check isn't supported.
-# if __has_include("user_song_list.h")
-# include "user_song_list.h"
-# endif // if file exists
-#endif // __GNUC__
+#if __has_include("user_song_list.h")
+# include "user_song_list.h"
+#endif // if file exists
#define NO_SOUND
diff --git a/quantum/backlight/backlight_chibios.c b/quantum/backlight/backlight_chibios.c
index 4d5a69e14e..7c6edd10d6 100644
--- a/quantum/backlight/backlight_chibios.c
+++ b/quantum/backlight/backlight_chibios.c
@@ -8,9 +8,13 @@
# define BACKLIGHT_LIMIT_VAL 255
#endif
-// GPIOV2 && GPIOV3
#ifndef BACKLIGHT_PAL_MODE
-# define BACKLIGHT_PAL_MODE 2
+# if defined(USE_GPIOV1)
+# define BACKLIGHT_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL
+# else
+// GPIOV2 && GPIOV3
+# define BACKLIGHT_PAL_MODE 5
+# endif
#endif
// GENERIC
@@ -70,7 +74,7 @@ static uint32_t rescale_limit_val(uint32_t val) {
void backlight_init_ports(void) {
#ifdef USE_GPIOV1
- palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL);
+ palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), BACKLIGHT_PAL_MODE);
#else
palSetPadMode(PAL_PORT(BACKLIGHT_PIN), PAL_PAD(BACKLIGHT_PIN), PAL_MODE_ALTERNATE(BACKLIGHT_PAL_MODE));
#endif
diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c
index 92f0ac4439..4c2ad2490c 100644
--- a/quantum/eeconfig.c
+++ b/quantum/eeconfig.c
@@ -4,11 +4,6 @@
#include "eeconfig.h"
#include "action_layer.h"
-#ifdef STM32_EEPROM_ENABLE
-# include <hal.h>
-# include "eeprom_stm32.h"
-#endif
-
#if defined(EEPROM_DRIVER)
# include "eeprom_driver.h"
#endif
@@ -43,9 +38,6 @@ __attribute__((weak)) void eeconfig_init_kb(void) {
* FIXME: needs doc
*/
void eeconfig_init_quantum(void) {
-#ifdef STM32_EEPROM_ENABLE
- EEPROM_Erase();
-#endif
#if defined(EEPROM_DRIVER)
eeprom_driver_erase();
#endif
@@ -111,9 +103,6 @@ void eeconfig_enable(void) { eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_N
* FIXME: needs doc
*/
void eeconfig_disable(void) {
-#ifdef STM32_EEPROM_ENABLE
- EEPROM_Erase();
-#endif
#if defined(EEPROM_DRIVER)
eeprom_driver_erase();
#endif
diff --git a/quantum/eeconfig.h b/quantum/eeconfig.h
index bd39971b2c..22d874273c 100644
--- a/quantum/eeconfig.h
+++ b/quantum/eeconfig.h
@@ -111,3 +111,29 @@ void eeconfig_update_haptic(uint32_t val);
bool eeconfig_read_handedness(void);
void eeconfig_update_handedness(bool val);
+
+#define EECONFIG_DEBOUNCE_HELPER(name, offset, config) \
+ static uint8_t dirty_##name = false; \
+ \
+ static inline void eeconfig_init_##name(void) { \
+ eeprom_read_block(&config, offset, sizeof(config)); \
+ dirty_##name = false; \
+ } \
+ static inline void eeconfig_flush_##name(bool force) { \
+ if (force || dirty_##name) { \
+ eeprom_update_block(&config, offset, sizeof(config)); \
+ dirty_##name = false; \
+ } \
+ } \
+ static inline void eeconfig_flush_##name##_task(uint16_t timeout) { \
+ static uint16_t flush_timer = 0; \
+ if (timer_elapsed(flush_timer) > timeout) { \
+ eeconfig_flush_##name(false); \
+ flush_timer = timer_read(); \
+ } \
+ } \
+ static inline void eeconfig_flag_##name(bool v) { dirty_##name |= v; } \
+ static inline void eeconfig_write_##name(typeof(config) conf) { \
+ memcpy(&config, &conf, sizeof(config)); \
+ eeconfig_flag_##name(true); \
+ }
diff --git a/quantum/keyboard.c b/quantum/keyboard.c
index b98fc64e45..f2a0889c12 100644
--- a/quantum/keyboard.c
+++ b/quantum/keyboard.c
@@ -43,9 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef SERIAL_MOUSE_ENABLE
# include "serial_mouse.h"
#endif
-#ifdef ADB_MOUSE_ENABLE
-# include "adb.h"
-#endif
#ifdef RGBLIGHT_ENABLE
# include "rgblight.h"
#endif
@@ -61,12 +58,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef STENO_ENABLE
# include "process_steno.h"
#endif
-#ifdef SERIAL_LINK_ENABLE
-# include "serial_link/system/serial_link.h"
-#endif
-#ifdef VISUALIZER_ENABLE
-# include "visualizer/visualizer.h"
-#endif
#ifdef POINTING_DEVICE_ENABLE
# include "pointing_device.h"
#endif
@@ -76,12 +67,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef JOYSTICK_ENABLE
# include "process_joystick.h"
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+# include "programmable_button.h"
+#endif
#ifdef HD44780_ENABLE
# include "hd44780.h"
#endif
-#ifdef QWIIC_ENABLE
-# include "qwiic.h"
-#endif
#ifdef OLED_ENABLE
# include "oled_driver.h"
#endif
@@ -97,9 +88,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef DIP_SWITCH_ENABLE
# include "dip_switch.h"
#endif
-#ifdef STM32_EEPROM_ENABLE
-# include "eeprom_stm32.h"
-#endif
#ifdef EEPROM_DRIVER
# include "eeprom_driver.h"
#endif
@@ -246,9 +234,6 @@ void keyboard_setup(void) {
disable_jtag();
#endif
print_set_sendchar(sendchar);
-#ifdef STM32_EEPROM_ENABLE
- EEPROM_Init();
-#endif
#ifdef EEPROM_DRIVER
eeprom_driver_init();
#endif
@@ -316,9 +301,6 @@ void keyboard_init(void) {
#if defined(CRC_ENABLE)
crc_init();
#endif
-#ifdef QWIIC_ENABLE
- qwiic_init();
-#endif
#ifdef OLED_ENABLE
oled_init(OLED_ROTATION_0);
#endif
@@ -331,9 +313,6 @@ void keyboard_init(void) {
#ifdef SERIAL_MOUSE_ENABLE
serial_mouse_init();
#endif
-#ifdef ADB_MOUSE_ENABLE
- adb_mouse_init();
-#endif
#ifdef BACKLIGHT_ENABLE
backlight_init();
#endif
@@ -384,7 +363,6 @@ void switch_events(uint8_t row, uint8_t col, bool pressed) {
*
* * scan matrix
* * handle mouse movements
- * * run visualizer code
* * handle midi commands
* * light LEDs
*
@@ -473,10 +451,6 @@ MATRIX_LOOP_END:
if (encoders_changed) last_encoder_activity_trigger();
#endif
-#ifdef QWIIC_ENABLE
- qwiic_task();
-#endif
-
#ifdef OLED_ENABLE
oled_task();
# if OLED_TIMEOUT > 0
@@ -514,18 +488,6 @@ MATRIX_LOOP_END:
serial_mouse_task();
#endif
-#ifdef ADB_MOUSE_ENABLE
- adb_mouse_task();
-#endif
-
-#ifdef SERIAL_LINK_ENABLE
- serial_link_update();
-#endif
-
-#ifdef VISUALIZER_ENABLE
- visualizer_update(default_layer_state, layer_state, visualizer_get_mods(), host_keyboard_leds());
-#endif
-
#ifdef POINTING_DEVICE_ENABLE
pointing_device_task();
#endif
@@ -548,6 +510,10 @@ MATRIX_LOOP_END:
digitizer_task();
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ programmable_button_send();
+#endif
+
// update LED
if (led_status != host_keyboard_leds()) {
led_status = host_keyboard_leds();
diff --git a/quantum/keymap_extras/keymap_turkish_f.h b/quantum/keymap_extras/keymap_turkish_f.h
index 226f8cbeb0..f86ef21546 100644
--- a/quantum/keymap_extras/keymap_turkish_f.h
+++ b/quantum/keymap_extras/keymap_turkish_f.h
@@ -111,7 +111,7 @@
#define TR_LPRN S(TR_8) // (
#define TR_RPRN S(TR_9) // )
#define TR_EQL S(TR_0) // =
-#define TR_QUES S(TR_ASTR) // ?
+#define TR_QUES S(TR_SLSH) // ?
#define TR_UNDS S(TR_MINS) // _
// Row 4
#define TR_RABK S(TR_LABK) // >
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 50510e49aa..85556d1573 100644
--- a/quantum/led_matrix/led_matrix.c
+++ b/quantum/led_matrix/led_matrix.c
@@ -33,14 +33,6 @@ const led_point_t k_led_matrix_center = {112, 32};
const led_point_t k_led_matrix_center = LED_MATRIX_CENTER;
#endif
-// clang-format off
-#ifndef LED_MATRIX_IMMEDIATE_EEPROM
-# define led_eeconfig_update(v) led_update_eeprom |= v
-#else
-# define led_eeconfig_update(v) if (v) eeconfig_update_led_matrix()
-#endif
-// clang-format on
-
// Generic effect runners
#include "led_matrix_runners.inc"
@@ -107,7 +99,6 @@ last_hit_t g_last_hit_tracker;
// internals
static bool suspend_state = false;
-static bool led_update_eeprom = false;
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};
@@ -127,9 +118,9 @@ static last_hit_t last_hit_buffer;
const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT;
#endif
-void eeconfig_read_led_matrix(void) { eeprom_read_block(&led_matrix_eeconfig, EECONFIG_LED_MATRIX, sizeof(led_matrix_eeconfig)); }
+EECONFIG_DEBOUNCE_HELPER(led_matrix, EECONFIG_LED_MATRIX, led_matrix_eeconfig);
-void eeconfig_update_led_matrix(void) { eeprom_update_block(&led_matrix_eeconfig, EECONFIG_LED_MATRIX, sizeof(led_matrix_eeconfig)); }
+void eeconfig_update_led_matrix(void) { eeconfig_flush_led_matrix(true); }
void eeconfig_update_led_matrix_default(void) {
dprintf("eeconfig_update_led_matrix_default\n");
@@ -138,7 +129,7 @@ void eeconfig_update_led_matrix_default(void) {
led_matrix_eeconfig.val = LED_MATRIX_STARTUP_VAL;
led_matrix_eeconfig.speed = LED_MATRIX_STARTUP_SPD;
led_matrix_eeconfig.flags = LED_FLAG_ALL;
- eeconfig_update_led_matrix();
+ eeconfig_flush_led_matrix(true);
}
void eeconfig_debug_led_matrix(void) {
@@ -279,9 +270,8 @@ static void led_task_timers(void) {
}
static void led_task_sync(void) {
+ eeconfig_flush_led_matrix(false);
// next task
- if (led_update_eeprom) eeconfig_update_led_matrix();
- led_update_eeprom = false;
if (sync_timer_elapsed32(g_led_timer) >= LED_MATRIX_LED_FLUSH_LIMIT) led_task_state = STARTING;
}
@@ -449,7 +439,7 @@ void led_matrix_init(void) {
eeconfig_update_led_matrix_default();
}
- eeconfig_read_led_matrix();
+ 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");
eeconfig_update_led_matrix_default();
@@ -472,7 +462,7 @@ bool led_matrix_get_suspend_state(void) { return suspend_state; }
void led_matrix_toggle_eeprom_helper(bool write_to_eeprom) {
led_matrix_eeconfig.enable ^= 1;
led_task_state = STARTING;
- led_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix toggle [%s]: led_matrix_eeconfig.enable = %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.enable);
}
void led_matrix_toggle_noeeprom(void) { led_matrix_toggle_eeprom_helper(false); }
@@ -480,7 +470,7 @@ void led_matrix_toggle(void) { led_matrix_toggle_eeprom_helper(true); }
void led_matrix_enable(void) {
led_matrix_enable_noeeprom();
- led_eeconfig_update(true);
+ eeconfig_flag_led_matrix(true);
}
void led_matrix_enable_noeeprom(void) {
@@ -490,7 +480,7 @@ void led_matrix_enable_noeeprom(void) {
void led_matrix_disable(void) {
led_matrix_disable_noeeprom();
- led_eeconfig_update(true);
+ eeconfig_flag_led_matrix(true);
}
void led_matrix_disable_noeeprom(void) {
@@ -512,7 +502,7 @@ void led_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) {
led_matrix_eeconfig.mode = mode;
}
led_task_state = STARTING;
- led_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix mode [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.mode);
}
void led_matrix_mode_noeeprom(uint8_t mode) { led_matrix_mode_eeprom_helper(mode, false); }
@@ -539,7 +529,7 @@ void led_matrix_set_val_eeprom_helper(uint8_t val, bool write_to_eeprom) {
return;
}
led_matrix_eeconfig.val = (val > LED_MATRIX_MAXIMUM_BRIGHTNESS) ? LED_MATRIX_MAXIMUM_BRIGHTNESS : val;
- led_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix set val [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.val);
}
void led_matrix_set_val_noeeprom(uint8_t val) { led_matrix_set_val_eeprom_helper(val, false); }
@@ -557,7 +547,7 @@ void led_matrix_decrease_val(void) { led_matrix_decrease_val_helper(true); }
void led_matrix_set_speed_eeprom_helper(uint8_t speed, bool write_to_eeprom) {
led_matrix_eeconfig.speed = speed;
- led_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_led_matrix(write_to_eeprom);
dprintf("led matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.speed);
}
void led_matrix_set_speed_noeeprom(uint8_t speed) { led_matrix_set_speed_eeprom_helper(speed, false); }
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index 1d46b2c506..2157619a0b 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -26,128 +26,123 @@
*/
#if defined(IS31FL3731) || defined(IS31FL3733)
-
# include "i2c_master.h"
static void init(void) {
i2c_init();
-# ifdef IS31FL3731
-# ifdef LED_DRIVER_ADDR_1
+
+# if defined(IS31FL3731)
IS31FL3731_init(LED_DRIVER_ADDR_1);
-# endif
-# ifdef LED_DRIVER_ADDR_2
+# if defined(LED_DRIVER_ADDR_2)
IS31FL3731_init(LED_DRIVER_ADDR_2);
-# endif
-# ifdef LED_DRIVER_ADDR_3
+# if defined(LED_DRIVER_ADDR_3)
IS31FL3731_init(LED_DRIVER_ADDR_3);
-# endif
-# ifdef LED_DRIVER_ADDR_4
+# if defined(LED_DRIVER_ADDR_4)
IS31FL3731_init(LED_DRIVER_ADDR_4);
-# endif
-# else
-# ifdef LED_DRIVER_ADDR_1
-# ifndef LED_DRIVER_SYNC_1
-# define LED_DRIVER_SYNC_1 0
+# endif
# endif
- IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1);
# endif
-# ifdef LED_DRIVER_ADDR_2
-# ifndef LED_DRIVER_SYNC_2
+
+# elif defined(IS31FL3733)
+# if !defined(LED_DRIVER_SYNC_1)
+# define LED_DRIVER_SYNC_1 0
+# endif
+ IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1);
+# if defined(LED_DRIVER_ADDR_2)
+# if !defined(LED_DRIVER_SYNC_2)
# define LED_DRIVER_SYNC_2 0
# endif
IS31FL3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2);
-# endif
-# ifdef LED_DRIVER_ADDR_3
-# ifndef LED_DRIVER_SYNC_3
-# define LED_DRIVER_SYNC_3 0
-# endif
+# if defined(LED_DRIVER_ADDR_3)
+# if !defined(LED_DRIVER_SYNC_3)
+# define LED_DRIVER_SYNC_3 0
+# endif
IS31FL3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3);
-# endif
-# ifdef LED_DRIVER_ADDR_4
-# ifndef LED_DRIVER_SYNC_4
-# define LED_DRIVER_SYNC_4 0
-# endif
+# if defined(LED_DRIVER_ADDR_4)
+# if !defined(LED_DRIVER_SYNC_4)
+# define LED_DRIVER_SYNC_4 0
+# endif
IS31FL3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4);
+# endif
+# endif
# endif
# endif
for (int index = 0; index < DRIVER_LED_TOTAL; index++) {
-# ifdef IS31FL3731
+# if defined(IS31FL3731)
IS31FL3731_set_led_control_register(index, true);
-# else
+# elif defined(IS31FL3733)
IS31FL3733_set_led_control_register(index, true);
# endif
}
+
// This actually updates the LED drivers
-# ifdef IS31FL3731
-# ifdef LED_DRIVER_ADDR_1
+# if defined(IS31FL3731)
IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
-# endif
-# ifdef LED_DRIVER_ADDR_2
+# if defined(LED_DRIVER_ADDR_2)
IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
-# endif
-# ifdef LED_DRIVER_ADDR_3
+# if defined(LED_DRIVER_ADDR_3)
IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
-# endif
-# ifdef LED_DRIVER_ADDR_4
+# if defined(LED_DRIVER_ADDR_4)
IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
-# else
-# ifdef LED_DRIVER_ADDR_1
+
+# elif defined(IS31FL3733)
IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
-# endif
-# ifdef LED_DRIVER_ADDR_2
+# if defined(LED_DRIVER_ADDR_2)
IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
-# endif
-# ifdef LED_DRIVER_ADDR_3
+# if defined(LED_DRIVER_ADDR_3)
IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
-# endif
-# ifdef LED_DRIVER_ADDR_4
+# if defined(LED_DRIVER_ADDR_4)
IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
# endif
}
+# if defined(IS31FL3731)
static void flush(void) {
-# ifdef IS31FL3731
-# ifdef LED_DRIVER_ADDR_1
IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
-# endif
-# ifdef LED_DRIVER_ADDR_2
+# if defined(LED_DRIVER_ADDR_2)
IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
-# endif
-# ifdef LED_DRIVER_ADDR_3
+# if defined(LED_DRIVER_ADDR_3)
IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
-# endif
-# ifdef LED_DRIVER_ADDR_4
+# if defined(LED_DRIVER_ADDR_4)
IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
-# else
-# ifdef LED_DRIVER_ADDR_1
+}
+
+const led_matrix_driver_t led_matrix_driver = {
+ .init = init,
+ .flush = flush,
+ .set_value = IS31FL3731_set_value,
+ .set_value_all = IS31FL3731_set_value_all,
+};
+
+# elif defined(IS31FL3733)
+static void flush(void) {
IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
-# endif
-# ifdef LED_DRIVER_ADDR_2
+# if defined(LED_DRIVER_ADDR_2)
IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
-# endif
-# ifdef LED_DRIVER_ADDR_3
+# if defined(LED_DRIVER_ADDR_3)
IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
-# endif
-# ifdef LED_DRIVER_ADDR_4
+# if defined(LED_DRIVER_ADDR_4)
IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
-# endif
}
const led_matrix_driver_t led_matrix_driver = {
- .init = init,
+ .init = init,
.flush = flush,
-# ifdef IS31FL3731
- .set_value = IS31FL3731_set_value,
- .set_value_all = IS31FL3731_set_value_all,
-# else
.set_value = IS31FL3733_set_value,
.set_value_all = IS31FL3733_set_value_all,
-# endif
};
-
+# endif
#endif
diff --git a/quantum/matrix.c b/quantum/matrix.c
index 33586c431b..4fbcc2419c 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -288,10 +288,8 @@ void matrix_init(void) {
matrix_init_pins();
// initialize matrix state: all keys off
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- raw_matrix[i] = 0;
- matrix[i] = 0;
- }
+ memset(matrix, 0, sizeof(matrix));
+ memset(raw_matrix, 0, sizeof(raw_matrix));
debounce_init(ROWS_PER_HAND);
@@ -312,24 +310,22 @@ __attribute__((weak)) bool transport_master_if_connected(matrix_row_t master_mat
bool matrix_post_scan(void) {
bool changed = false;
if (is_keyboard_master()) {
+ static bool last_connected = false;
matrix_row_t slave_matrix[ROWS_PER_HAND] = {0};
if (transport_master_if_connected(matrix + thisHand, slave_matrix)) {
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- if (matrix[thatHand + i] != slave_matrix[i]) {
- matrix[thatHand + i] = slave_matrix[i];
- changed = true;
- }
- }
- } else {
- // reset other half if disconnected
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[thatHand + i] = 0;
- slave_matrix[i] = 0;
- }
+ changed = memcmp(matrix + thatHand, slave_matrix, sizeof(slave_matrix)) != 0;
+ last_connected = true;
+ } else if (last_connected) {
+ // reset other half when disconnected
+ memset(slave_matrix, 0, sizeof(slave_matrix));
changed = true;
+
+ last_connected = false;
}
+ if (changed) memcpy(matrix + thatHand, slave_matrix, sizeof(slave_matrix));
+
matrix_scan_quantum();
} else {
transport_slave(matrix + thatHand, matrix + thisHand);
diff --git a/quantum/mcu_selection.mk b/quantum/mcu_selection.mk
index f7eaeec8ac..7c4a617af0 100644
--- a/quantum/mcu_selection.mk
+++ b/quantum/mcu_selection.mk
@@ -81,7 +81,7 @@ ifneq ($(findstring MK20DX256, $(MCU)),)
BOARD ?= PJRC_TEENSY_3_1
endif
-ifneq ($(findstring MK66F18, $(MCU)),)
+ifneq ($(findstring MK66FX1M0, $(MCU)),)
# Cortex version
MCU = cortex-m4
@@ -138,6 +138,11 @@ ifneq ($(findstring STM32F042, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F0
+
+ # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced.
+ # This ensures that the EEPROM page buffer fits into RAM
+ USE_PROCESS_STACKSIZE = 0x600
+ USE_EXCEPTIONS_STACKSIZE = 0x300
endif
ifneq ($(findstring STM32F072, $(MCU)),)
@@ -273,6 +278,38 @@ ifneq ($(findstring STM32F401, $(MCU)),)
UF2_FAMILY ?= STM32F4
endif
+ifneq ($(findstring STM32F405, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = STM32
+ MCU_SERIES = STM32F4xx
+
+ # Linker script to use
+ # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or <keyboard_dir>/ld/
+ MCU_LDSCRIPT ?= STM32F405xG
+
+ # Startup code to use
+ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= stm32f4xx
+
+ # Board: it should exist either in <chibios>/os/hal/boards/,
+ # <keyboard_dir>/boards/, or drivers/boards/
+ BOARD ?= GENERIC_STM32_F405XG
+
+ USE_FPU ?= yes
+
+ # UF2 settings
+ UF2_FAMILY ?= STM32F4
+endif
+
ifneq ($(findstring STM32F407, $(MCU)),)
# Cortex version
MCU = cortex-m4
@@ -504,6 +541,37 @@ ifneq (,$(filter $(MCU),STM32L412 STM32L422))
UF2_FAMILY ?= STM32L4
endif
+ifneq ($(findstring GD32VF103, $(MCU)),)
+ # RISC-V
+ MCU = risc-v
+
+ # RISC-V extensions and abi configuration
+ MCU_ARCH = rv32imac
+ MCU_ABI = ilp32
+ MCU_CMODEL = medlow
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = GD32V
+ MCU_SERIES = GD32VF103
+
+ # Linker script to use
+ # - it should exist either in <chibios>/os/common/startup/RISCV-ECLIC/compilers/GCC/ld/
+ # or <keyboard_dir>/ld/
+ MCU_LDSCRIPT ?= GD32VF103xB
+
+ # Startup code to use
+ # - it should exist in <chibios>/os/common/startup/RISCV-ECLIC/compilers/GCC/mk/
+ MCU_STARTUP ?= gd32vf103
+
+ # Board: it should exist either in <chibios>/os/hal/boards/,
+ # <keyboard_dir>/boards/, or drivers/boards/
+ BOARD ?= SIPEED_LONGAN_NANO
+
+ USE_FPU ?= no
+endif
+
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
PROTOCOL = LUFA
diff --git a/quantum/process_keycode/process_haptic.c b/quantum/process_keycode/process_haptic.c
index 64d455d009..1b9c2f24fa 100644
--- a/quantum/process_keycode/process_haptic.c
+++ b/quantum/process_keycode/process_haptic.c
@@ -32,6 +32,7 @@ __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t
break;
case KC_LCTRL ... KC_RGUI:
case QK_MOMENTARY ... QK_MOMENTARY_MAX:
+ case QK_LAYER_MOD ... QK_LAYER_MOD_MAX:
#endif
#ifdef NO_HAPTIC_FN
case KC_FN0 ... KC_FN31:
diff --git a/quantum/process_keycode/process_programmable_button.c b/quantum/process_keycode/process_programmable_button.c
new file mode 100644
index 0000000000..c6e77faacc
--- /dev/null
+++ b/quantum/process_keycode/process_programmable_button.c
@@ -0,0 +1,31 @@
+/*
+Copyright 2021 Thomas Weißschuh <thomas@t-8ch.de>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "process_programmable_button.h"
+#include "programmable_button.h"
+
+bool process_programmable_button(uint16_t keycode, keyrecord_t *record) {
+ if (keycode >= PROGRAMMABLE_BUTTON_MIN && keycode <= PROGRAMMABLE_BUTTON_MAX) {
+ uint8_t button = keycode - PROGRAMMABLE_BUTTON_MIN + 1;
+ if (record->event.pressed) {
+ programmable_button_on(button);
+ } else {
+ programmable_button_off(button);
+ }
+ }
+ return true;
+}
diff --git a/quantum/process_keycode/process_programmable_button.h b/quantum/process_keycode/process_programmable_button.h
new file mode 100644
index 0000000000..47c6ce5614
--- /dev/null
+++ b/quantum/process_keycode/process_programmable_button.h
@@ -0,0 +1,23 @@
+/*
+Copyright 2021 Thomas Weißschuh <thomas@t-8ch.de>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "quantum.h"
+
+bool process_programmable_button(uint16_t keycode, keyrecord_t *record);
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index 46fcaaa86b..7853c22c5d 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -22,6 +22,7 @@
unicode_config_t unicode_config;
uint8_t unicode_saved_mods;
bool unicode_saved_caps_lock;
+bool unicode_saved_num_lock;
#if UNICODE_SELECTED_MODES != -1
static uint8_t selected[] = {UNICODE_SELECTED_MODES};
@@ -79,13 +80,14 @@ void persist_unicode_input_mode(void) { eeprom_update_byte(EECONFIG_UNICODEMODE,
__attribute__((weak)) void unicode_input_start(void) {
unicode_saved_caps_lock = host_keyboard_led_state().caps_lock;
+ unicode_saved_num_lock = host_keyboard_led_state().num_lock;
// Note the order matters here!
// Need to do this before we mess around with the mods, or else
// UNICODE_KEY_LNX (which is usually Ctrl-Shift-U) might not work
// correctly in the shifted case.
if (unicode_config.input_mode == UC_LNX && unicode_saved_caps_lock) {
- tap_code(KC_CAPS);
+ tap_code(KC_CAPSLOCK);
}
unicode_saved_mods = get_mods(); // Save current mods
@@ -99,8 +101,12 @@ __attribute__((weak)) void unicode_input_start(void) {
tap_code16(UNICODE_KEY_LNX);
break;
case UC_WIN:
+ // For increased reliability, use numpad keys for inputting digits
+ if (!unicode_saved_num_lock) {
+ tap_code(KC_NUMLOCK);
+ }
register_code(KC_LALT);
- tap_code(KC_PPLS);
+ tap_code(KC_KP_PLUS);
break;
case UC_WINC:
tap_code(UNICODE_KEY_WINC);
@@ -117,13 +123,16 @@ __attribute__((weak)) void unicode_input_finish(void) {
unregister_code(UNICODE_KEY_MAC);
break;
case UC_LNX:
- tap_code(KC_SPC);
+ tap_code(KC_SPACE);
if (unicode_saved_caps_lock) {
- tap_code(KC_CAPS);
+ tap_code(KC_CAPSLOCK);
}
break;
case UC_WIN:
unregister_code(KC_LALT);
+ if (!unicode_saved_num_lock) {
+ tap_code(KC_NUMLOCK);
+ }
break;
case UC_WINC:
tap_code(KC_ENTER);
@@ -139,26 +148,44 @@ __attribute__((weak)) void unicode_input_cancel(void) {
unregister_code(UNICODE_KEY_MAC);
break;
case UC_LNX:
- tap_code(KC_ESC);
+ tap_code(KC_ESCAPE);
if (unicode_saved_caps_lock) {
- tap_code(KC_CAPS);
+ tap_code(KC_CAPSLOCK);
}
break;
case UC_WINC:
- tap_code(KC_ESC);
+ tap_code(KC_ESCAPE);
break;
case UC_WIN:
unregister_code(KC_LALT);
+ if (!unicode_saved_num_lock) {
+ tap_code(KC_NUMLOCK);
+ }
break;
}
set_mods(unicode_saved_mods); // Reregister previously set mods
}
+// clang-format off
+
+static void send_nibble_wrapper(uint8_t digit) {
+ if (unicode_config.input_mode == UC_WIN) {
+ uint8_t kc = digit < 10
+ ? KC_KP_1 + (10 + digit - 1) % 10
+ : KC_A + (digit - 10);
+ tap_code(kc);
+ return;
+ }
+ send_nibble(digit);
+}
+
+// clang-format on
+
void register_hex(uint16_t hex) {
for (int i = 3; i >= 0; i--) {
uint8_t digit = ((hex >> (i * 4)) & 0xF);
- send_nibble(digit);
+ send_nibble_wrapper(digit);
}
}
@@ -171,10 +198,10 @@ void register_hex32(uint32_t hex) {
uint8_t digit = ((hex >> (i * 4)) & 0xF);
if (digit == 0) {
if (!onzerostart) {
- send_nibble(digit);
+ send_nibble_wrapper(digit);
}
} else {
- send_nibble(digit);
+ send_nibble_wrapper(digit);
onzerostart = false;
}
}
diff --git a/quantum/programmable_button.c b/quantum/programmable_button.c
new file mode 100644
index 0000000000..be828fd17c
--- /dev/null
+++ b/quantum/programmable_button.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2021 Thomas Weißschuh <thomas@t-8ch.de>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "programmable_button.h"
+#include "host.h"
+
+#define REPORT_BIT(index) (((uint32_t)1) << (index - 1))
+
+static uint32_t programmable_button_report = 0;
+
+void programmable_button_clear(void) { programmable_button_report = 0; }
+
+void programmable_button_send(void) { host_programmable_button_send(programmable_button_report); }
+
+void programmable_button_on(uint8_t index) { programmable_button_report |= REPORT_BIT(index); }
+
+void programmable_button_off(uint8_t index) { programmable_button_report &= ~REPORT_BIT(index); }
+
+bool programmable_button_is_on(uint8_t index) { return !!(programmable_button_report & REPORT_BIT(index)); };
+
+uint32_t programmable_button_get_report(void) { return programmable_button_report; };
+
+void programmable_button_set_report(uint32_t report) { programmable_button_report = report; }
diff --git a/quantum/programmable_button.h b/quantum/programmable_button.h
new file mode 100644
index 0000000000..e89b8b9fd6
--- /dev/null
+++ b/quantum/programmable_button.h
@@ -0,0 +1,30 @@
+/*
+Copyright 2021 Thomas Weißschuh <thomas@t-8ch.de>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 "report.h"
+
+void programmable_button_clear(void);
+void programmable_button_send(void);
+void programmable_button_on(uint8_t index);
+void programmable_button_off(uint8_t index);
+bool programmable_button_is_on(uint8_t index);
+uint32_t programmable_button_get_report(void);
+void programmable_button_set_report(uint32_t report);
diff --git a/quantum/quantum.c b/quantum/quantum.c
index e60378afe4..ac8857df85 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -25,10 +25,6 @@
# include "backlight.h"
#endif
-#ifdef API_ENABLE
-# include "api.h"
-#endif
-
#ifdef MIDI_ENABLE
# include "process_midi.h"
#endif
@@ -145,12 +141,13 @@ void reset_keyboard(void) {
/* Convert record into usable keycode via the contained event. */
uint16_t get_record_keycode(keyrecord_t *record, bool update_layer_cache) {
#ifdef COMBO_ENABLE
- if (record->keycode) { return record->keycode; }
+ if (record->keycode) {
+ return record->keycode;
+ }
#endif
return get_event_keycode(record->event, update_layer_cache);
}
-
/* Convert event into usable keycode. Checks the layer cache to ensure that it
* retains the correct keycode after a layer change, if the key is still pressed.
* "update_layer_cache" is to ensure that it only updates the layer cache when
@@ -179,12 +176,12 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) {
bool pre_process_record_quantum(keyrecord_t *record) {
if (!(
#ifdef COMBO_ENABLE
- process_combo(get_record_keycode(record, true), record) &&
+ process_combo(get_record_keycode(record, true), record) &&
#endif
- true)) {
+ true)) {
return false;
}
- return true; // continue processing
+ return true; // continue processing
}
/* Get keycode, and then call keyboard function */
@@ -296,6 +293,9 @@ bool process_record_quantum(keyrecord_t *record) {
#ifdef JOYSTICK_ENABLE
process_joystick(keycode, record) &&
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ process_programmable_button(keycode, record) &&
+#endif
true)) {
return false;
}
@@ -465,14 +465,6 @@ void matrix_scan_quantum() {
# include "hd44780.h"
#endif
-void api_send_unicode(uint32_t unicode) {
-#ifdef API_ENABLE
- uint8_t chunk[4];
- dword_to_bytes(unicode, chunk);
- MT_SEND_DATA(DT_UNICODE, chunk, 5);
-#endif
-}
-
//------------------------------------------------------------------------------
// Override these functions in your keymap file to play different tunes on
// different events such as startup and bootloader jump
@@ -480,3 +472,99 @@ void api_send_unicode(uint32_t unicode) {
__attribute__((weak)) void startup_user() {}
__attribute__((weak)) void shutdown_user() {}
+
+/** \brief Run keyboard level Power down
+ *
+ * FIXME: needs doc
+ */
+__attribute__((weak)) void suspend_power_down_user(void) {}
+/** \brief Run keyboard level Power down
+ *
+ * FIXME: needs doc
+ */
+__attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); }
+
+void suspend_power_down_quantum(void) {
+#ifndef NO_SUSPEND_POWER_DOWN
+// Turn off backlight
+# ifdef BACKLIGHT_ENABLE
+ backlight_set(0);
+# endif
+
+# ifdef LED_MATRIX_ENABLE
+ led_matrix_task();
+# endif
+# ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_task();
+# endif
+
+ // Turn off LED indicators
+ uint8_t leds_off = 0;
+# if defined(BACKLIGHT_CAPS_LOCK) && defined(BACKLIGHT_ENABLE)
+ if (is_backlight_enabled()) {
+ // Don't try to turn off Caps Lock indicator as it is backlight and backlight is already off
+ leds_off |= (1 << USB_LED_CAPS_LOCK);
+ }
+# endif
+ led_set(leds_off);
+
+// Turn off audio
+# ifdef AUDIO_ENABLE
+ stop_all_notes();
+# endif
+
+// Turn off underglow
+# if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
+ rgblight_suspend();
+# endif
+
+# if defined(LED_MATRIX_ENABLE)
+ led_matrix_set_suspend_state(true);
+# endif
+# if defined(RGB_MATRIX_ENABLE)
+ rgb_matrix_set_suspend_state(true);
+# endif
+
+# ifdef OLED_ENABLE
+ oled_off();
+# endif
+# ifdef ST7565_ENABLE
+ st7565_off();
+# endif
+#endif
+}
+
+/** \brief run user level code immediately after wakeup
+ *
+ * FIXME: needs doc
+ */
+__attribute__((weak)) void suspend_wakeup_init_user(void) {}
+
+/** \brief run keyboard level code immediately after wakeup
+ *
+ * FIXME: needs doc
+ */
+__attribute__((weak)) void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); }
+
+__attribute__((weak)) void suspend_wakeup_init_quantum(void) {
+// Turn on backlight
+#ifdef BACKLIGHT_ENABLE
+ backlight_init();
+#endif
+
+ // Restore LED indicators
+ led_set(host_keyboard_leds());
+
+// Wake up underglow
+#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
+ rgblight_wakeup();
+#endif
+
+#if defined(LED_MATRIX_ENABLE)
+ led_matrix_set_suspend_state(false);
+#endif
+#if defined(RGB_MATRIX_ENABLE)
+ rgb_matrix_set_suspend_state(false);
+#endif
+ suspend_wakeup_init_kb();
+}
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 86b717e445..9250f5acce 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -147,6 +147,10 @@ extern layer_state_t layer_state;
# include "process_joystick.h"
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+# include "process_programmable_button.h"
+#endif
+
#ifdef GRAVE_ESC_ENABLE
# include "process_grave_esc.h"
#endif
@@ -233,5 +237,3 @@ void led_set_user(uint8_t usb_led);
void led_set_kb(uint8_t usb_led);
bool led_update_user(led_t led_state);
bool led_update_kb(led_t led_state);
-
-void api_send_unicode(uint32_t unicode);
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index ef4b0f457b..2ea81dd4c8 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -524,6 +524,40 @@ enum quantum_keycodes {
// Additional magic key
MAGIC_TOGGLE_GUI,
+ // Programmable Button
+ PROGRAMMABLE_BUTTON_1,
+ PROGRAMMABLE_BUTTON_2,
+ PROGRAMMABLE_BUTTON_3,
+ PROGRAMMABLE_BUTTON_4,
+ PROGRAMMABLE_BUTTON_5,
+ PROGRAMMABLE_BUTTON_6,
+ PROGRAMMABLE_BUTTON_7,
+ PROGRAMMABLE_BUTTON_8,
+ PROGRAMMABLE_BUTTON_9,
+ PROGRAMMABLE_BUTTON_10,
+ PROGRAMMABLE_BUTTON_11,
+ PROGRAMMABLE_BUTTON_12,
+ PROGRAMMABLE_BUTTON_13,
+ PROGRAMMABLE_BUTTON_14,
+ PROGRAMMABLE_BUTTON_15,
+ PROGRAMMABLE_BUTTON_16,
+ PROGRAMMABLE_BUTTON_17,
+ PROGRAMMABLE_BUTTON_18,
+ PROGRAMMABLE_BUTTON_19,
+ PROGRAMMABLE_BUTTON_20,
+ PROGRAMMABLE_BUTTON_21,
+ PROGRAMMABLE_BUTTON_22,
+ PROGRAMMABLE_BUTTON_23,
+ PROGRAMMABLE_BUTTON_24,
+ PROGRAMMABLE_BUTTON_25,
+ PROGRAMMABLE_BUTTON_26,
+ PROGRAMMABLE_BUTTON_27,
+ PROGRAMMABLE_BUTTON_28,
+ PROGRAMMABLE_BUTTON_29,
+ PROGRAMMABLE_BUTTON_30,
+ PROGRAMMABLE_BUTTON_31,
+ PROGRAMMABLE_BUTTON_32,
+
// Start of custom keycode range for keyboards and keymaps - always leave at the end
SAFE_RANGE
};
@@ -854,3 +888,39 @@ enum quantum_keycodes {
#define OS_TOGG ONESHOT_TOGGLE
#define OS_ON ONESHOT_ENABLE
#define OS_OFF ONESHOT_DISABLE
+
+// Programmable Button aliases
+#define PB_1 PROGRAMMABLE_BUTTON_1
+#define PB_2 PROGRAMMABLE_BUTTON_2
+#define PB_3 PROGRAMMABLE_BUTTON_3
+#define PB_4 PROGRAMMABLE_BUTTON_4
+#define PB_5 PROGRAMMABLE_BUTTON_5
+#define PB_6 PROGRAMMABLE_BUTTON_6
+#define PB_7 PROGRAMMABLE_BUTTON_7
+#define PB_8 PROGRAMMABLE_BUTTON_8
+#define PB_9 PROGRAMMABLE_BUTTON_9
+#define PB_10 PROGRAMMABLE_BUTTON_10
+#define PB_11 PROGRAMMABLE_BUTTON_11
+#define PB_12 PROGRAMMABLE_BUTTON_12
+#define PB_13 PROGRAMMABLE_BUTTON_13
+#define PB_14 PROGRAMMABLE_BUTTON_14
+#define PB_15 PROGRAMMABLE_BUTTON_15
+#define PB_16 PROGRAMMABLE_BUTTON_16
+#define PB_17 PROGRAMMABLE_BUTTON_17
+#define PB_18 PROGRAMMABLE_BUTTON_18
+#define PB_19 PROGRAMMABLE_BUTTON_19
+#define PB_20 PROGRAMMABLE_BUTTON_20
+#define PB_21 PROGRAMMABLE_BUTTON_21
+#define PB_22 PROGRAMMABLE_BUTTON_22
+#define PB_23 PROGRAMMABLE_BUTTON_23
+#define PB_24 PROGRAMMABLE_BUTTON_24
+#define PB_25 PROGRAMMABLE_BUTTON_25
+#define PB_26 PROGRAMMABLE_BUTTON_26
+#define PB_27 PROGRAMMABLE_BUTTON_27
+#define PB_28 PROGRAMMABLE_BUTTON_28
+#define PB_29 PROGRAMMABLE_BUTTON_29
+#define PB_30 PROGRAMMABLE_BUTTON_30
+#define PB_31 PROGRAMMABLE_BUTTON_31
+#define PB_32 PROGRAMMABLE_BUTTON_32
+#define PROGRAMMABLE_BUTTON_MIN PROGRAMMABLE_BUTTON_1
+#define PROGRAMMABLE_BUTTON_MAX PROGRAMMABLE_BUTTON_32
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index 8f00b40877..c260b6e1e8 100644
--- a/quantum/rgb_matrix/rgb_matrix.c
+++ b/quantum/rgb_matrix/rgb_matrix.c
@@ -31,14 +31,6 @@ const led_point_t k_rgb_matrix_center = {112, 32};
const led_point_t k_rgb_matrix_center = RGB_MATRIX_CENTER;
#endif
-// clang-format off
-#ifndef RGB_MATRIX_IMMEDIATE_EEPROM
-# define rgb_eeconfig_update(v) rgb_update_eeprom |= v
-#else
-# define rgb_eeconfig_update(v) if (v) eeconfig_update_rgb_matrix()
-#endif
-// clang-format on
-
__attribute__((weak)) RGB rgb_matrix_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); }
// Generic effect runners
@@ -128,7 +120,6 @@ last_hit_t g_last_hit_tracker;
// internals
static bool suspend_state = false;
-static bool rgb_update_eeprom = false;
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};
@@ -148,9 +139,9 @@ static last_hit_t last_hit_buffer;
const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT;
#endif
-void eeconfig_read_rgb_matrix(void) { eeprom_read_block(&rgb_matrix_config, EECONFIG_RGB_MATRIX, sizeof(rgb_matrix_config)); }
+EECONFIG_DEBOUNCE_HELPER(rgb_matrix, EECONFIG_RGB_MATRIX, rgb_matrix_config);
-void eeconfig_update_rgb_matrix(void) { eeprom_update_block(&rgb_matrix_config, EECONFIG_RGB_MATRIX, sizeof(rgb_matrix_config)); }
+void eeconfig_update_rgb_matrix(void) { eeconfig_flush_rgb_matrix(true); }
void eeconfig_update_rgb_matrix_default(void) {
dprintf("eeconfig_update_rgb_matrix_default\n");
@@ -159,7 +150,7 @@ void eeconfig_update_rgb_matrix_default(void) {
rgb_matrix_config.hsv = (HSV){RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL};
rgb_matrix_config.speed = RGB_MATRIX_STARTUP_SPD;
rgb_matrix_config.flags = LED_FLAG_ALL;
- eeconfig_update_rgb_matrix();
+ eeconfig_flush_rgb_matrix(true);
}
void eeconfig_debug_rgb_matrix(void) {
@@ -314,9 +305,8 @@ static void rgb_task_timers(void) {
}
static void rgb_task_sync(void) {
+ eeconfig_flush_rgb_matrix(false);
// next task
- if (rgb_update_eeprom) eeconfig_update_rgb_matrix();
- rgb_update_eeprom = false;
if (sync_timer_elapsed32(g_rgb_timer) >= RGB_MATRIX_LED_FLUSH_LIMIT) rgb_task_state = STARTING;
}
@@ -491,7 +481,7 @@ void rgb_matrix_init(void) {
eeconfig_update_rgb_matrix_default();
}
- eeconfig_read_rgb_matrix();
+ 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");
eeconfig_update_rgb_matrix_default();
@@ -514,7 +504,7 @@ bool rgb_matrix_get_suspend_state(void) { return suspend_state; }
void rgb_matrix_toggle_eeprom_helper(bool write_to_eeprom) {
rgb_matrix_config.enable ^= 1;
rgb_task_state = STARTING;
- rgb_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_rgb_matrix(write_to_eeprom);
dprintf("rgb matrix toggle [%s]: rgb_matrix_config.enable = %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", rgb_matrix_config.enable);
}
void rgb_matrix_toggle_noeeprom(void) { rgb_matrix_toggle_eeprom_helper(false); }
@@ -522,7 +512,7 @@ void rgb_matrix_toggle(void) { rgb_matrix_toggle_eeprom_helper(true); }
void rgb_matrix_enable(void) {
rgb_matrix_enable_noeeprom();
- rgb_eeconfig_update(true);
+ eeconfig_flag_rgb_matrix(true);
}
void rgb_matrix_enable_noeeprom(void) {
@@ -532,7 +522,7 @@ void rgb_matrix_enable_noeeprom(void) {
void rgb_matrix_disable(void) {
rgb_matrix_disable_noeeprom();
- rgb_eeconfig_update(true);
+ eeconfig_flag_rgb_matrix(true);
}
void rgb_matrix_disable_noeeprom(void) {
@@ -554,7 +544,7 @@ void rgb_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) {
rgb_matrix_config.mode = mode;
}
rgb_task_state = STARTING;
- rgb_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_rgb_matrix(write_to_eeprom);
dprintf("rgb matrix mode [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", rgb_matrix_config.mode);
}
void rgb_matrix_mode_noeeprom(uint8_t mode) { rgb_matrix_mode_eeprom_helper(mode, false); }
@@ -583,7 +573,7 @@ void rgb_matrix_sethsv_eeprom_helper(uint16_t hue, uint8_t sat, uint8_t val, boo
rgb_matrix_config.hsv.h = hue;
rgb_matrix_config.hsv.s = sat;
rgb_matrix_config.hsv.v = (val > RGB_MATRIX_MAXIMUM_BRIGHTNESS) ? RGB_MATRIX_MAXIMUM_BRIGHTNESS : val;
- rgb_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_rgb_matrix(write_to_eeprom);
dprintf("rgb matrix set hsv [%s]: %u,%u,%u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v);
}
void rgb_matrix_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val) { rgb_matrix_sethsv_eeprom_helper(hue, sat, val, false); }
@@ -620,7 +610,7 @@ void rgb_matrix_decrease_val(void) { rgb_matrix_decrease_val_helper(true); }
void rgb_matrix_set_speed_eeprom_helper(uint8_t speed, bool write_to_eeprom) {
rgb_matrix_config.speed = speed;
- rgb_eeconfig_update(write_to_eeprom);
+ eeconfig_flag_rgb_matrix(write_to_eeprom);
dprintf("rgb matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", rgb_matrix_config.speed);
}
void rgb_matrix_set_speed_noeeprom(uint8_t speed) { rgb_matrix_set_speed_eeprom_helper(speed, false); }
diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c
index 2cec162e22..4335088eb8 100644
--- a/quantum/rgb_matrix/rgb_matrix_drivers.c
+++ b/quantum/rgb_matrix/rgb_matrix_drivers.c
@@ -24,110 +24,126 @@
*/
#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737) || defined(IS31FL3741)
-
# include "i2c_master.h"
+// TODO: Remove this at some later date
+# if defined(DRIVER_ADDR_1) && defined(DRIVER_ADDR_2)
+# if DRIVER_ADDR_1 == DRIVER_ADDR_2
+# error "Setting DRIVER_ADDR_2 == DRIVER_ADDR_1 is obsolete. If you are only using one ISSI driver, set DRIVER_COUNT to 1 and remove DRIVER_ADDR_2"
+# endif
+# endif
+
static void init(void) {
i2c_init();
-# ifdef IS31FL3731
+
+# if defined(IS31FL3731)
IS31FL3731_init(DRIVER_ADDR_1);
-# ifdef DRIVER_ADDR_2
+# if defined(DRIVER_ADDR_2)
IS31FL3731_init(DRIVER_ADDR_2);
-# endif
-# ifdef DRIVER_ADDR_3
+# if defined(DRIVER_ADDR_3)
IS31FL3731_init(DRIVER_ADDR_3);
-# endif
-# ifdef DRIVER_ADDR_4
+# if defined(DRIVER_ADDR_4)
IS31FL3731_init(DRIVER_ADDR_4);
+# endif
+# endif
# endif
+
# elif defined(IS31FL3733)
-# ifndef DRIVER_SYNC_1
+# if !defined(DRIVER_SYNC_1)
# define DRIVER_SYNC_1 0
# endif
IS31FL3733_init(DRIVER_ADDR_1, DRIVER_SYNC_1);
-# if defined DRIVER_ADDR_2 && (DRIVER_ADDR_1 != DRIVER_ADDR_2)
-# ifndef DRIVER_SYNC_2
+# if defined(DRIVER_ADDR_2)
+# if !defined(DRIVER_SYNC_2)
# define DRIVER_SYNC_2 0
# endif
IS31FL3733_init(DRIVER_ADDR_2, DRIVER_SYNC_2);
-# endif
-# ifdef DRIVER_ADDR_3
-# ifndef DRIVER_SYNC_3
-# define DRIVER_SYNC_3 0
-# endif
+# if defined(DRIVER_ADDR_3)
+# if !defined(DRIVER_SYNC_3)
+# define DRIVER_SYNC_3 0
+# endif
IS31FL3733_init(DRIVER_ADDR_3, DRIVER_SYNC_3);
-# endif
-# ifdef DRIVER_ADDR_4
-# ifndef DRIVER_SYNC_4
-# define DRIVER_SYNC_4 0
-# endif
+# if defined(DRIVER_ADDR_4)
+# if !defined(DRIVER_SYNC_4)
+# define DRIVER_SYNC_4 0
+# endif
IS31FL3733_init(DRIVER_ADDR_4, DRIVER_SYNC_4);
+# endif
+# endif
# endif
+
# elif defined(IS31FL3737)
IS31FL3737_init(DRIVER_ADDR_1);
-# if defined(DRIVER_ADDR_2) && (DRIVER_ADDR_2 != DRIVER_ADDR_1) // provides backward compatibility
+# if defined(DRIVER_ADDR_2)
IS31FL3737_init(DRIVER_ADDR_2);
# endif
-# else
+
+# elif defined(IS31FL3741)
IS31FL3741_init(DRIVER_ADDR_1);
# endif
+
for (int index = 0; index < DRIVER_LED_TOTAL; index++) {
bool enabled = true;
+
// This only caches it for later
-# ifdef IS31FL3731
+# if defined(IS31FL3731)
IS31FL3731_set_led_control_register(index, enabled, enabled, enabled);
# elif defined(IS31FL3733)
IS31FL3733_set_led_control_register(index, enabled, enabled, enabled);
# elif defined(IS31FL3737)
IS31FL3737_set_led_control_register(index, enabled, enabled, enabled);
-# else
+# elif defined(IS31FL3741)
IS31FL3741_set_led_control_register(index, enabled, enabled, enabled);
# endif
}
+
// This actually updates the LED drivers
-# ifdef IS31FL3731
+# if defined(IS31FL3731)
IS31FL3731_update_led_control_registers(DRIVER_ADDR_1, 0);
-# ifdef DRIVER_ADDR_2
+# if defined(DRIVER_ADDR_2)
IS31FL3731_update_led_control_registers(DRIVER_ADDR_2, 1);
-# endif
-# ifdef DRIVER_ADDR_3
+# if defined(DRIVER_ADDR_3)
IS31FL3731_update_led_control_registers(DRIVER_ADDR_3, 2);
-# endif
-# ifdef DRIVER_ADDR_4
+# if defined(DRIVER_ADDR_4)
IS31FL3731_update_led_control_registers(DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
+
# elif defined(IS31FL3733)
IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0);
-# ifdef DRIVER_ADDR_2
+# if defined(DRIVER_ADDR_2)
IS31FL3733_update_led_control_registers(DRIVER_ADDR_2, 1);
-# endif
-# ifdef DRIVER_ADDR_3
+# if defined(DRIVER_ADDR_3)
IS31FL3733_update_led_control_registers(DRIVER_ADDR_3, 2);
-# endif
-# ifdef DRIVER_ADDR_4
+# if defined(DRIVER_ADDR_4)
IS31FL3733_update_led_control_registers(DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
+
# elif defined(IS31FL3737)
IS31FL3737_update_led_control_registers(DRIVER_ADDR_1, 0);
-# if defined(DRIVER_ADDR_2) && (DRIVER_ADDR_2 != DRIVER_ADDR_1) // provides backward compatibility
+# if defined(DRIVER_ADDR_2)
IS31FL3737_update_led_control_registers(DRIVER_ADDR_2, 1);
# endif
-# else
+
+# elif defined(IS31FL3741)
IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0);
# endif
}
-# ifdef IS31FL3731
+# if defined(IS31FL3731)
static void flush(void) {
IS31FL3731_update_pwm_buffers(DRIVER_ADDR_1, 0);
-# ifdef DRIVER_ADDR_2
+# if defined(DRIVER_ADDR_2)
IS31FL3731_update_pwm_buffers(DRIVER_ADDR_2, 1);
-# endif
-# ifdef DRIVER_ADDR_3
+# if defined(DRIVER_ADDR_3)
IS31FL3731_update_pwm_buffers(DRIVER_ADDR_3, 2);
-# endif
-# ifdef DRIVER_ADDR_4
+# if defined(DRIVER_ADDR_4)
IS31FL3731_update_pwm_buffers(DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
}
@@ -137,17 +153,18 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
.set_color = IS31FL3731_set_color,
.set_color_all = IS31FL3731_set_color_all,
};
+
# elif defined(IS31FL3733)
static void flush(void) {
IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0);
-# ifdef DRIVER_ADDR_2
+# if defined(DRIVER_ADDR_2)
IS31FL3733_update_pwm_buffers(DRIVER_ADDR_2, 1);
-# endif
-# ifdef DRIVER_ADDR_3
+# if defined(DRIVER_ADDR_3)
IS31FL3733_update_pwm_buffers(DRIVER_ADDR_3, 2);
-# endif
-# ifdef DRIVER_ADDR_4
+# if defined(DRIVER_ADDR_4)
IS31FL3733_update_pwm_buffers(DRIVER_ADDR_4, 3);
+# endif
+# endif
# endif
}
@@ -157,10 +174,11 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
.set_color = IS31FL3733_set_color,
.set_color_all = IS31FL3733_set_color_all,
};
+
# elif defined(IS31FL3737)
static void flush(void) {
IS31FL3737_update_pwm_buffers(DRIVER_ADDR_1, 0);
-# if defined(DRIVER_ADDR_2) && (DRIVER_ADDR_2 != DRIVER_ADDR_1) // provides backward compatibility
+# if defined(DRIVER_ADDR_2)
IS31FL3737_update_pwm_buffers(DRIVER_ADDR_2, 1);
# endif
}
@@ -171,10 +189,11 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
.set_color = IS31FL3737_set_color,
.set_color_all = IS31FL3737_set_color_all,
};
-# else
+
+# elif defined(IS31FL3741)
static void flush(void) {
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, 0);
-# if defined(DRIVER_ADDR_2) && (DRIVER_ADDR_2 != DRIVER_ADDR_1) // provides backward compatibility
+# if defined(DRIVER_ADDR_2)
IS31FL3741_update_pwm_buffers(DRIVER_ADDR_2, 1);
# endif
}
@@ -189,17 +208,19 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
#elif defined(AW20216)
# include "spi_master.h"
+
static void init(void) {
spi_init();
+
AW20216_init(DRIVER_1_CS, DRIVER_1_EN);
-# ifdef DRIVER_2_CS
+# if defined(DRIVER_2_CS)
AW20216_init(DRIVER_2_CS, DRIVER_2_EN);
# endif
}
static void flush(void) {
AW20216_update_pwm_buffers(DRIVER_1_CS, 0);
-# ifdef DRIVER_2_CS
+# if defined(DRIVER_2_CS)
AW20216_update_pwm_buffers(DRIVER_2_CS, 1);
# endif
}
diff --git a/quantum/sequencer/tests/rules.mk b/quantum/sequencer/tests/rules.mk
index 76c221cf92..87a204669c 100644
--- a/quantum/sequencer/tests/rules.mk
+++ b/quantum/sequencer/tests/rules.mk
@@ -1,5 +1,5 @@
# The letter case of these variables might seem odd. However:
-# - it is consistent with the serial_link example that is used as a reference in the Unit Testing article (https://docs.qmk.fm/#/unit_testing?id=adding-tests-for-new-or-existing-features)
+# - it is consistent with the example that is used as a reference in the Unit Testing article (https://docs.qmk.fm/#/unit_testing?id=adding-tests-for-new-or-existing-features)
# - Neither `make test:sequencer` or `make test:SEQUENCER` work when using SCREAMING_SNAKE_CASE
sequencer_DEFS := -DNO_DEBUG -DMIDI_MOCKED
diff --git a/quantum/serial_link/LICENSE b/quantum/serial_link/LICENSE
deleted file mode 100644
index d13cc4b26a..0000000000
--- a/quantum/serial_link/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-The MIT License (MIT)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/quantum/serial_link/README.md b/quantum/serial_link/README.md
deleted file mode 100644
index 05871dbdf7..0000000000
--- a/quantum/serial_link/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# qmk_serial_link
diff --git a/quantum/serial_link/protocol/byte_stuffer.c b/quantum/serial_link/protocol/byte_stuffer.c
deleted file mode 100644
index d3a91d8286..0000000000
--- a/quantum/serial_link/protocol/byte_stuffer.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "serial_link/protocol/byte_stuffer.h"
-#include "serial_link/protocol/frame_validator.h"
-#include "serial_link/protocol/physical.h"
-#include <stdbool.h>
-
-// This implements the "Consistent overhead byte stuffing protocol"
-// https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing
-// http://www.stuartcheshire.org/papers/COBSforToN.pdf
-
-typedef struct byte_stuffer_state {
- uint16_t next_zero;
- uint16_t data_pos;
- bool long_frame;
- uint8_t data[MAX_FRAME_SIZE];
-} byte_stuffer_state_t;
-
-static byte_stuffer_state_t states[NUM_LINKS];
-
-void init_byte_stuffer_state(byte_stuffer_state_t* state) {
- state->next_zero = 0;
- state->data_pos = 0;
- state->long_frame = false;
-}
-
-void init_byte_stuffer(void) {
- int i;
- for (i = 0; i < NUM_LINKS; i++) {
- init_byte_stuffer_state(&states[i]);
- }
-}
-
-void byte_stuffer_recv_byte(uint8_t link, uint8_t data) {
- byte_stuffer_state_t* state = &states[link];
- // Start of a new frame
- if (state->next_zero == 0) {
- state->next_zero = data;
- state->long_frame = data == 0xFF;
- state->data_pos = 0;
- return;
- }
-
- state->next_zero--;
- if (data == 0) {
- if (state->next_zero == 0) {
- // The frame is completed
- if (state->data_pos > 0) {
- validator_recv_frame(link, state->data, state->data_pos);
- }
- } else {
- // The frame is invalid, so reset
- init_byte_stuffer_state(state);
- }
- } else {
- if (state->data_pos == MAX_FRAME_SIZE) {
- // We exceeded our maximum frame size
- // therefore there's nothing else to do than reset to a new frame
- state->next_zero = data;
- state->long_frame = data == 0xFF;
- state->data_pos = 0;
- } else if (state->next_zero == 0) {
- if (state->long_frame) {
- // This is part of a long frame, so continue
- state->next_zero = data;
- state->long_frame = data == 0xFF;
- } else {
- // Special case for zeroes
- state->next_zero = data;
- state->data[state->data_pos++] = 0;
- }
- } else {
- state->data[state->data_pos++] = data;
- }
- }
-}
-
-static void send_block(uint8_t link, uint8_t* start, uint8_t* end, uint8_t num_non_zero) {
- send_data(link, &num_non_zero, 1);
- if (end > start) {
- send_data(link, start, end - start);
- }
-}
-
-void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size) {
- const uint8_t zero = 0;
- if (size > 0) {
- uint16_t num_non_zero = 1;
- uint8_t* end = data + size;
- uint8_t* start = data;
- while (data < end) {
- if (num_non_zero == 0xFF) {
- // There's more data after big non-zero block
- // So send it, and start a new block
- send_block(link, start, data, num_non_zero);
- start = data;
- num_non_zero = 1;
- } else {
- if (*data == 0) {
- // A zero encountered, so send the block
- send_block(link, start, data, num_non_zero);
- start = data + 1;
- num_non_zero = 1;
- } else {
- num_non_zero++;
- }
- ++data;
- }
- }
- send_block(link, start, data, num_non_zero);
- send_data(link, &zero, 1);
- }
-}
diff --git a/quantum/serial_link/protocol/byte_stuffer.h b/quantum/serial_link/protocol/byte_stuffer.h
deleted file mode 100644
index 397ed3baae..0000000000
--- a/quantum/serial_link/protocol/byte_stuffer.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include <stdint.h>
-
-#define MAX_FRAME_SIZE 1024
-#define NUM_LINKS 2
-
-void init_byte_stuffer(void);
-void byte_stuffer_recv_byte(uint8_t link, uint8_t data);
-void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size);
diff --git a/quantum/serial_link/protocol/frame_router.c b/quantum/serial_link/protocol/frame_router.c
deleted file mode 100644
index 5292673700..0000000000
--- a/quantum/serial_link/protocol/frame_router.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "serial_link/protocol/frame_router.h"
-#include "serial_link/protocol/transport.h"
-#include "serial_link/protocol/frame_validator.h"
-
-static bool is_master;
-
-void router_set_master(bool master) { is_master = master; }
-
-void route_incoming_frame(uint8_t link, uint8_t* data, uint16_t size) {
- if (is_master) {
- if (link == DOWN_LINK) {
- transport_recv_frame(data[size - 1], data, size - 1);
- }
- } else {
- if (link == UP_LINK) {
- if (data[size - 1] & 1) {
- transport_recv_frame(0, data, size - 1);
- }
- data[size - 1] >>= 1;
- validator_send_frame(DOWN_LINK, data, size);
- } else {
- data[size - 1]++;
- validator_send_frame(UP_LINK, data, size);
- }
- }
-}
-
-void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size) {
- if (destination == 0) {
- if (!is_master) {
- data[size] = 1;
- validator_send_frame(UP_LINK, data, size + 1);
- }
- } else {
- if (is_master) {
- data[size] = destination;
- validator_send_frame(DOWN_LINK, data, size + 1);
- }
- }
-}
diff --git a/quantum/serial_link/protocol/frame_router.h b/quantum/serial_link/protocol/frame_router.h
deleted file mode 100644
index 9325fe4eed..0000000000
--- a/quantum/serial_link/protocol/frame_router.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#define UP_LINK 0
-#define DOWN_LINK 1
-
-void router_set_master(bool master);
-void route_incoming_frame(uint8_t link, uint8_t* data, uint16_t size);
-void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size);
diff --git a/quantum/serial_link/protocol/frame_validator.c b/quantum/serial_link/protocol/frame_validator.c
deleted file mode 100644
index bc9136f70b..0000000000
--- a/quantum/serial_link/protocol/frame_validator.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "serial_link/protocol/frame_validator.h"
-#include "serial_link/protocol/frame_router.h"
-#include "serial_link/protocol/byte_stuffer.h"
-#include <string.h>
-
-const uint32_t poly8_lookup[256] = {0, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
- 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
- 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
- 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D};
-
-static uint32_t crc32_byte(uint8_t* p, uint32_t bytelength) {
- uint32_t crc = 0xffffffff;
- while (bytelength-- != 0) crc = poly8_lookup[((uint8_t)crc ^ *(p++))] ^ (crc >> 8);
- // return (~crc); also works
- return (crc ^ 0xffffffff);
-}
-
-void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size) {
- if (size > 4) {
- uint32_t frame_crc;
- memcpy(&frame_crc, data + size - 4, 4);
- uint32_t expected_crc = crc32_byte(data, size - 4);
- if (frame_crc == expected_crc) {
- route_incoming_frame(link, data, size - 4);
- }
- }
-}
-
-void validator_send_frame(uint8_t link, uint8_t* data, uint16_t size) {
- uint32_t crc = crc32_byte(data, size);
- memcpy(data + size, &crc, 4);
- byte_stuffer_send_frame(link, data, size + 4);
-}
diff --git a/quantum/serial_link/protocol/frame_validator.h b/quantum/serial_link/protocol/frame_validator.h
deleted file mode 100644
index 0f78768a00..0000000000
--- a/quantum/serial_link/protocol/frame_validator.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include <stdint.h>
-
-void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size);
-// The buffer pointed to by the data needs 4 additional bytes
-void validator_send_frame(uint8_t link, uint8_t* data, uint16_t size);
diff --git a/quantum/serial_link/protocol/physical.h b/quantum/serial_link/protocol/physical.h
deleted file mode 100644
index 399c9d1f76..0000000000
--- a/quantum/serial_link/protocol/physical.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-void send_data(uint8_t link, const uint8_t* data, uint16_t size);
diff --git a/quantum/serial_link/protocol/transport.c b/quantum/serial_link/protocol/transport.c
deleted file mode 100644
index 73b8dc62e9..0000000000
--- a/quantum/serial_link/protocol/transport.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "serial_link/protocol/transport.h"
-#include "serial_link/protocol/frame_router.h"
-#include "serial_link/protocol/triple_buffered_object.h"
-#include <string.h>
-
-#define MAX_REMOTE_OBJECTS 16
-static remote_object_t* remote_objects[MAX_REMOTE_OBJECTS];
-static uint32_t num_remote_objects = 0;
-
-void reinitialize_serial_link_transport(void) { num_remote_objects = 0; }
-
-void add_remote_objects(remote_object_t** _remote_objects, uint32_t _num_remote_objects) {
- unsigned int i;
- for (i = 0; i < _num_remote_objects; i++) {
- remote_object_t* obj = _remote_objects[i];
- remote_objects[num_remote_objects++] = obj;
- if (obj->object_type == MASTER_TO_ALL_SLAVES) {
- triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer;
- triple_buffer_init(tb);
- uint8_t* start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size);
- tb = (triple_buffer_object_t*)start;
- triple_buffer_init(tb);
- } else if (obj->object_type == MASTER_TO_SINGLE_SLAVE) {
- uint8_t* start = obj->buffer;
- unsigned int j;
- for (j = 0; j < NUM_SLAVES; j++) {
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start;
- triple_buffer_init(tb);
- start += LOCAL_OBJECT_SIZE(obj->object_size);
- }
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start;
- triple_buffer_init(tb);
- } else {
- uint8_t* start = obj->buffer;
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start;
- triple_buffer_init(tb);
- start += LOCAL_OBJECT_SIZE(obj->object_size);
- unsigned int j;
- for (j = 0; j < NUM_SLAVES; j++) {
- tb = (triple_buffer_object_t*)start;
- triple_buffer_init(tb);
- start += REMOTE_OBJECT_SIZE(obj->object_size);
- }
- }
- }
-}
-
-void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size) {
- uint8_t id = data[size - 1];
- if (id < num_remote_objects) {
- remote_object_t* obj = remote_objects[id];
- if (obj->object_size == size - 1) {
- uint8_t* start;
- if (obj->object_type == MASTER_TO_ALL_SLAVES) {
- start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size);
- } else if (obj->object_type == SLAVE_TO_MASTER) {
- start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size);
- start += (from - 1) * REMOTE_OBJECT_SIZE(obj->object_size);
- } else {
- start = obj->buffer + NUM_SLAVES * LOCAL_OBJECT_SIZE(obj->object_size);
- }
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start;
- void* ptr = triple_buffer_begin_write_internal(obj->object_size, tb);
- memcpy(ptr, data, size - 1);
- triple_buffer_end_write_internal(tb);
- }
- }
-}
-
-void update_transport(void) {
- unsigned int i;
- for (i = 0; i < num_remote_objects; i++) {
- remote_object_t* obj = remote_objects[i];
- if (obj->object_type == MASTER_TO_ALL_SLAVES || obj->object_type == SLAVE_TO_MASTER) {
- triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer;
- uint8_t* ptr = (uint8_t*)triple_buffer_read_internal(obj->object_size + LOCAL_OBJECT_EXTRA, tb);
- if (ptr) {
- ptr[obj->object_size] = i;
- uint8_t dest = obj->object_type == MASTER_TO_ALL_SLAVES ? 0xFF : 0;
- router_send_frame(dest, ptr, obj->object_size + 1);
- }
- } else {
- uint8_t* start = obj->buffer;
- unsigned int j;
- for (j = 0; j < NUM_SLAVES; j++) {
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start;
- uint8_t* ptr = (uint8_t*)triple_buffer_read_internal(obj->object_size + LOCAL_OBJECT_EXTRA, tb);
- if (ptr) {
- ptr[obj->object_size] = i;
- uint8_t dest = j + 1;
- router_send_frame(dest, ptr, obj->object_size + 1);
- }
- start += LOCAL_OBJECT_SIZE(obj->object_size);
- }
- }
- }
-}
diff --git a/quantum/serial_link/protocol/transport.h b/quantum/serial_link/protocol/transport.h
deleted file mode 100644
index 3ce0c9fe4e..0000000000
--- a/quantum/serial_link/protocol/transport.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include "serial_link/protocol/triple_buffered_object.h"
-#include "serial_link/system/serial_link.h"
-
-#define NUM_SLAVES 8
-#define LOCAL_OBJECT_EXTRA 16
-
-// master -> slave = 1 local(target all), 1 remote object
-// slave -> master = 1 local(target 0), multiple remote objects
-// master -> single slave (multiple local, target id), 1 remote object
-typedef enum {
- MASTER_TO_ALL_SLAVES,
- MASTER_TO_SINGLE_SLAVE,
- SLAVE_TO_MASTER,
-} remote_object_type;
-
-typedef struct {
- remote_object_type object_type;
- uint16_t object_size;
- uint8_t buffer[] __attribute__((aligned(4)));
-} remote_object_t;
-
-#define REMOTE_OBJECT_SIZE(objectsize) (sizeof(triple_buffer_object_t) + objectsize * 3)
-#define LOCAL_OBJECT_SIZE(objectsize) (sizeof(triple_buffer_object_t) + (objectsize + LOCAL_OBJECT_EXTRA) * 3)
-
-#define REMOTE_OBJECT_HELPER(name, type, num_local, num_remote) \
- typedef struct { \
- remote_object_t object; \
- uint8_t buffer[num_remote * REMOTE_OBJECT_SIZE(sizeof(type)) + num_local * LOCAL_OBJECT_SIZE(sizeof(type))]; \
- } remote_object_##name##_t;
-
-#define MASTER_TO_ALL_SLAVES_OBJECT(name, type) \
- REMOTE_OBJECT_HELPER(name, type, 1, 1) \
- remote_object_##name##_t remote_object_##name = {.object = { \
- .object_type = MASTER_TO_ALL_SLAVES, \
- .object_size = sizeof(type), \
- }}; \
- type* begin_write_##name(void) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer; \
- return (type*)triple_buffer_begin_write_internal(sizeof(type) + LOCAL_OBJECT_EXTRA, tb); \
- } \
- void end_write_##name(void) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer; \
- triple_buffer_end_write_internal(tb); \
- signal_data_written(); \
- } \
- type* read_##name(void) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- uint8_t* start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size); \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \
- return (type*)triple_buffer_read_internal(obj->object_size, tb); \
- }
-
-#define MASTER_TO_SINGLE_SLAVE_OBJECT(name, type) \
- REMOTE_OBJECT_HELPER(name, type, NUM_SLAVES, 1) \
- remote_object_##name##_t remote_object_##name = {.object = { \
- .object_type = MASTER_TO_SINGLE_SLAVE, \
- .object_size = sizeof(type), \
- }}; \
- type* begin_write_##name(uint8_t slave) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- uint8_t* start = obj->buffer; \
- start += slave * LOCAL_OBJECT_SIZE(obj->object_size); \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \
- return (type*)triple_buffer_begin_write_internal(sizeof(type) + LOCAL_OBJECT_EXTRA, tb); \
- } \
- void end_write_##name(uint8_t slave) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- uint8_t* start = obj->buffer; \
- start += slave * LOCAL_OBJECT_SIZE(obj->object_size); \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \
- triple_buffer_end_write_internal(tb); \
- signal_data_written(); \
- } \
- type* read_##name() { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- uint8_t* start = obj->buffer + NUM_SLAVES * LOCAL_OBJECT_SIZE(obj->object_size); \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \
- return (type*)triple_buffer_read_internal(obj->object_size, tb); \
- }
-
-#define SLAVE_TO_MASTER_OBJECT(name, type) \
- REMOTE_OBJECT_HELPER(name, type, 1, NUM_SLAVES) \
- remote_object_##name##_t remote_object_##name = {.object = { \
- .object_type = SLAVE_TO_MASTER, \
- .object_size = sizeof(type), \
- }}; \
- type* begin_write_##name(void) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer; \
- return (type*)triple_buffer_begin_write_internal(sizeof(type) + LOCAL_OBJECT_EXTRA, tb); \
- } \
- void end_write_##name(void) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer; \
- triple_buffer_end_write_internal(tb); \
- signal_data_written(); \
- } \
- type* read_##name(uint8_t slave) { \
- remote_object_t* obj = (remote_object_t*)&remote_object_##name; \
- uint8_t* start = obj->buffer + LOCAL_OBJECT_SIZE(obj->object_size); \
- start += slave * REMOTE_OBJECT_SIZE(obj->object_size); \
- triple_buffer_object_t* tb = (triple_buffer_object_t*)start; \
- return (type*)triple_buffer_read_internal(obj->object_size, tb); \
- }
-
-#define REMOTE_OBJECT(name) (remote_object_t*)&remote_object_##name
-
-void add_remote_objects(remote_object_t** remote_objects, uint32_t num_remote_objects);
-void reinitialize_serial_link_transport(void);
-void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size);
-void update_transport(void);
diff --git a/quantum/serial_link/protocol/triple_buffered_object.c b/quantum/serial_link/protocol/triple_buffered_object.c
deleted file mode 100644
index e0c6d702a5..0000000000
--- a/quantum/serial_link/protocol/triple_buffered_object.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "serial_link/protocol/triple_buffered_object.h"
-#include "serial_link/system/serial_link.h"
-#include <stdbool.h>
-#include <stddef.h>
-
-#define GET_READ_INDEX() object->state & 3
-#define GET_WRITE_INDEX() (object->state >> 2) & 3
-#define GET_SHARED_INDEX() (object->state >> 4) & 3
-#define GET_DATA_AVAILABLE() (object->state >> 6) & 1
-
-#define SET_READ_INDEX(i) object->state = ((object->state & ~3) | i)
-#define SET_WRITE_INDEX(i) object->state = ((object->state & ~(3 << 2)) | (i << 2))
-#define SET_SHARED_INDEX(i) object->state = ((object->state & ~(3 << 4)) | (i << 4))
-#define SET_DATA_AVAILABLE(i) object->state = ((object->state & ~(1 << 6)) | (i << 6))
-
-void triple_buffer_init(triple_buffer_object_t* object) {
- object->state = 0;
- SET_WRITE_INDEX(0);
- SET_READ_INDEX(1);
- SET_SHARED_INDEX(2);
- SET_DATA_AVAILABLE(0);
-}
-
-void* triple_buffer_read_internal(uint16_t object_size, triple_buffer_object_t* object) {
- serial_link_lock();
- if (GET_DATA_AVAILABLE()) {
- uint8_t shared_index = GET_SHARED_INDEX();
- uint8_t read_index = GET_READ_INDEX();
- SET_READ_INDEX(shared_index);
- SET_SHARED_INDEX(read_index);
- SET_DATA_AVAILABLE(false);
- serial_link_unlock();
- return object->buffer + object_size * shared_index;
- } else {
- serial_link_unlock();
- return NULL;
- }
-}
-
-void* triple_buffer_begin_write_internal(uint16_t object_size, triple_buffer_object_t* object) {
- uint8_t write_index = GET_WRITE_INDEX();
- return object->buffer + object_size * write_index;
-}
-
-void triple_buffer_end_write_internal(triple_buffer_object_t* object) {
- serial_link_lock();
- uint8_t shared_index = GET_SHARED_INDEX();
- uint8_t write_index = GET_WRITE_INDEX();
- SET_SHARED_INDEX(write_index);
- SET_WRITE_INDEX(shared_index);
- SET_DATA_AVAILABLE(true);
- serial_link_unlock();
-}
diff --git a/quantum/serial_link/protocol/triple_buffered_object.h b/quantum/serial_link/protocol/triple_buffered_object.h
deleted file mode 100644
index 717d6d7b8b..0000000000
--- a/quantum/serial_link/protocol/triple_buffered_object.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include <stdint.h>
-
-typedef struct {
- uint8_t state;
- uint8_t buffer[] __attribute__((aligned(4)));
-} triple_buffer_object_t;
-
-void triple_buffer_init(triple_buffer_object_t* object);
-
-#define triple_buffer_begin_write(object) (typeof(*object.buffer[0])*)triple_buffer_begin_write_internal(sizeof(*object.buffer[0]), (triple_buffer_object_t*)object)
-
-#define triple_buffer_end_write(object) triple_buffer_end_write_internal((triple_buffer_object_t*)object)
-
-#define triple_buffer_read(object) (typeof(*object.buffer[0])*)triple_buffer_read_internal(sizeof(*object.buffer[0]), (triple_buffer_object_t*)object)
-
-void* triple_buffer_begin_write_internal(uint16_t object_size, triple_buffer_object_t* object);
-void triple_buffer_end_write_internal(triple_buffer_object_t* object);
-void* triple_buffer_read_internal(uint16_t object_size, triple_buffer_object_t* object);
diff --git a/quantum/serial_link/system/serial_link.c b/quantum/serial_link/system/serial_link.c
deleted file mode 100644
index 6363f8ff3b..0000000000
--- a/quantum/serial_link/system/serial_link.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-#include "report.h"
-#include "host_driver.h"
-#include "serial_link/system/serial_link.h"
-#include <hal.h>
-#include "serial_link/protocol/byte_stuffer.h"
-#include "serial_link/protocol/transport.h"
-#include "serial_link/protocol/frame_router.h"
-#include "matrix.h"
-#include "sync_timer.h"
-#include <stdbool.h>
-#include "print.h"
-#include "config.h"
-
-#define SYNC_TIMER_OFFSET 2
-
-static event_source_t new_data_event;
-static bool serial_link_connected;
-static bool is_master = false;
-
-static uint8_t keyboard_leds(void);
-static void send_keyboard(report_keyboard_t* report);
-static void send_mouse(report_mouse_t* report);
-static void send_system(uint16_t data);
-static void send_consumer(uint16_t data);
-
-host_driver_t serial_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer};
-
-// Define these in your Config.h file
-#ifndef SERIAL_LINK_BAUD
-# error "Serial link baud is not set"
-#endif
-
-#ifndef SERIAL_LINK_THREAD_PRIORITY
-# error "Serial link thread priority not set"
-#endif
-
-static SerialConfig config = {.sc_speed = SERIAL_LINK_BAUD};
-
-//#define DEBUG_LINK_ERRORS
-
-static uint32_t read_from_serial(SerialDriver* driver, uint8_t link) {
- const uint32_t buffer_size = 16;
- uint8_t buffer[buffer_size];
- uint32_t bytes_read = sdAsynchronousRead(driver, buffer, buffer_size);
- uint8_t* current = buffer;
- uint8_t* end = current + bytes_read;
- while (current < end) {
- byte_stuffer_recv_byte(link, *current);
- current++;
- }
- return bytes_read;
-}
-
-static void print_error(char* str, eventflags_t flags, SerialDriver* driver) {
-#ifdef DEBUG_LINK_ERRORS
- if (flags & SD_PARITY_ERROR) {
- print(str);
- print(" Parity error\n");
- }
- if (flags & SD_FRAMING_ERROR) {
- print(str);
- print(" Framing error\n");
- }
- if (flags & SD_OVERRUN_ERROR) {
- print(str);
- uint32_t size = qSpaceI(&(driver->iqueue));
- xprintf(" Overrun error, queue size %d\n", size);
- }
- if (flags & SD_NOISE_ERROR) {
- print(str);
- print(" Noise error\n");
- }
- if (flags & SD_BREAK_DETECTED) {
- print(str);
- print(" Break detected\n");
- }
-#else
- (void)str;
- (void)flags;
- (void)driver;
-#endif
-}
-
-bool is_serial_link_master(void) { return is_master; }
-
-// TODO: Optimize the stack size, this is probably way too big
-static THD_WORKING_AREA(serialThreadStack, 1024);
-static THD_FUNCTION(serialThread, arg) {
- (void)arg;
- event_listener_t new_data_listener;
- event_listener_t sd1_listener;
- event_listener_t sd2_listener;
- chEvtRegister(&new_data_event, &new_data_listener, 0);
- eventflags_t events = CHN_INPUT_AVAILABLE | SD_PARITY_ERROR | SD_FRAMING_ERROR | SD_OVERRUN_ERROR | SD_NOISE_ERROR | SD_BREAK_DETECTED;
- chEvtRegisterMaskWithFlags(chnGetEventSource(&SD1), &sd1_listener, EVENT_MASK(1), events);
- chEvtRegisterMaskWithFlags(chnGetEventSource(&SD2), &sd2_listener, EVENT_MASK(2), events);
- bool need_wait = false;
- while (true) {
- eventflags_t flags1 = 0;
- eventflags_t flags2 = 0;
- if (need_wait) {
- eventmask_t mask = chEvtWaitAnyTimeout(ALL_EVENTS, TIME_MS2I(1000));
- if (mask & EVENT_MASK(1)) {
- flags1 = chEvtGetAndClearFlags(&sd1_listener);
- print_error("DOWNLINK", flags1, &SD1);
- }
- if (mask & EVENT_MASK(2)) {
- flags2 = chEvtGetAndClearFlags(&sd2_listener);
- print_error("UPLINK", flags2, &SD2);
- }
- }
-
- // Always stay as master, even if the USB goes into sleep mode
- is_master |= usbGetDriverStateI(&USBD1) == USB_ACTIVE;
- router_set_master(is_master);
-
- need_wait = true;
- need_wait &= read_from_serial(&SD2, UP_LINK) == 0;
- need_wait &= read_from_serial(&SD1, DOWN_LINK) == 0;
- update_transport();
- }
-}
-
-void send_data(uint8_t link, const uint8_t* data, uint16_t size) {
- if (link == DOWN_LINK) {
- sdWrite(&SD1, data, size);
- } else {
- sdWrite(&SD2, data, size);
- }
-}
-
-static systime_t last_update = 0;
-
-typedef struct {
- matrix_row_t rows[MATRIX_ROWS];
-} matrix_object_t;
-
-static matrix_object_t last_matrix = {};
-
-SLAVE_TO_MASTER_OBJECT(keyboard_matrix, matrix_object_t);
-MASTER_TO_ALL_SLAVES_OBJECT(serial_link_connected, bool);
-#ifndef DISABLE_SYNC_TIMER
-MASTER_TO_ALL_SLAVES_OBJECT(sync_timer, uint32_t);
-#endif
-
-static remote_object_t* remote_objects[] = {
- REMOTE_OBJECT(serial_link_connected),
- REMOTE_OBJECT(keyboard_matrix),
-#ifndef DISABLE_SYNC_TIMER
- REMOTE_OBJECT(sync_timer),
-#endif
-};
-
-void init_serial_link(void) {
- serial_link_connected = false;
- init_serial_link_hal();
- add_remote_objects(remote_objects, sizeof(remote_objects) / sizeof(remote_object_t*));
- init_byte_stuffer();
- sdStart(&SD1, &config);
- sdStart(&SD2, &config);
- chEvtObjectInit(&new_data_event);
- (void)chThdCreateStatic(serialThreadStack, sizeof(serialThreadStack), SERIAL_LINK_THREAD_PRIORITY, serialThread, NULL);
-}
-
-void matrix_set_remote(matrix_row_t* rows, uint8_t index);
-
-void serial_link_update(void) {
- if (read_serial_link_connected()) {
- serial_link_connected = true;
- }
-
- matrix_object_t matrix;
- bool changed = false;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- matrix.rows[i] = matrix_get_row(i);
- changed |= matrix.rows[i] != last_matrix.rows[i];
- }
-
- systime_t current_time = chVTGetSystemTimeX();
- systime_t delta = current_time - last_update;
- if (changed || delta > TIME_US2I(5000)) {
- last_update = current_time;
- last_matrix = matrix;
- matrix_object_t* m = begin_write_keyboard_matrix();
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- m->rows[i] = matrix.rows[i];
- }
- end_write_keyboard_matrix();
-
- *begin_write_serial_link_connected() = true;
- end_write_serial_link_connected();
-
-#ifndef DISABLE_SYNC_TIMER
- *begin_write_sync_timer() = sync_timer_read32() + SYNC_TIMER_OFFSET;
- end_write_sync_timer();
-#endif
- }
-
- matrix_object_t* m = read_keyboard_matrix(0);
- if (m) {
- matrix_set_remote(m->rows, 0);
- }
-
-#ifndef DISABLE_SYNC_TIMER
- uint32_t* t = read_sync_timer();
- if (t) {
- sync_timer_update(*t);
- }
-#endif
-}
-
-void signal_data_written(void) { chEvtBroadcast(&new_data_event); }
-
-bool is_serial_link_connected(void) { return serial_link_connected; }
-
-host_driver_t* get_serial_link_driver(void) { return &serial_driver; }
-
-// NOTE: The driver does nothing, because the master handles everything
-uint8_t keyboard_leds(void) { return 0; }
-
-void send_keyboard(report_keyboard_t* report) { (void)report; }
-
-void send_mouse(report_mouse_t* report) { (void)report; }
-
-void send_system(uint16_t data) { (void)data; }
-
-void send_consumer(uint16_t data) { (void)data; }
diff --git a/quantum/serial_link/system/serial_link.h b/quantum/serial_link/system/serial_link.h
deleted file mode 100644
index adc1f6e93d..0000000000
--- a/quantum/serial_link/system/serial_link.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include "host_driver.h"
-#include <stdbool.h>
-
-void init_serial_link(void);
-void init_serial_link_hal(void);
-bool is_serial_link_connected(void);
-bool is_serial_link_master(void);
-host_driver_t* get_serial_link_driver(void);
-void serial_link_update(void);
-
-#if defined(PROTOCOL_CHIBIOS)
-# include <ch.h>
-
-static inline void serial_link_lock(void) { chSysLock(); }
-
-static inline void serial_link_unlock(void) { chSysUnlock(); }
-
-void signal_data_written(void);
-
-#else
-
-inline void serial_link_lock(void) {}
-
-inline void serial_link_unlock(void) {}
-
-void signal_data_written(void);
-
-#endif
diff --git a/quantum/serial_link/tests/Makefile b/quantum/serial_link/tests/Makefile
deleted file mode 100644
index 11dd355b22..0000000000
--- a/quantum/serial_link/tests/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# The MIT License (MIT)
-#
-# Copyright (c) 2016 Fred Sundvik
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-CC = gcc
-CFLAGS =
-INCLUDES = -I. -I../../
-LDFLAGS = -L$(BUILDDIR)/cgreen/build-c/src -shared
-LDLIBS = -lcgreen
-UNITOBJ = $(BUILDDIR)/serialtest/unitobj
-DEPDIR = $(BUILDDIR)/serialtest/unit.d
-UNITTESTS = $(BUILDDIR)/serialtest/unittests
-DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
-EXT = .so
-UNAME := $(shell uname)
-ifneq (, $(findstring MINGW, $(UNAME)))
- EXT = .dll
-endif
-ifneq (, $(findstring CYGWIN, $(UNAME)))
- EXT = .dll
-endif
-
-SRC = $(wildcard *.c)
-TESTFILES = $(patsubst %.c, $(UNITTESTS)/%$(EXT), $(SRC))
-$(shell mkdir -p $(DEPDIR) >/dev/null)
-
-test: $(TESTFILES)
- @$(BUILDDIR)/cgreen/build-c/tools/cgreen-runner --color $(TESTFILES)
-
-$(UNITTESTS)/%$(EXT): $(UNITOBJ)/%.o
- @mkdir -p $(UNITTESTS)
- $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
-
-$(UNITOBJ)/%.o : %.c
-$(UNITOBJ)/%.o: %.c $(DEPDIR)/%.d
- @mkdir -p $(UNITOBJ)
- $(CC) $(CFLAGS) $(DEPFLAGS) $(INCLUDES) -c $< -o $@
- @mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d
-
-$(DEPDIR)/%.d: ;
-.PRECIOUS: $(DEPDIR)/%.d
-
--include $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRC)))
diff --git a/quantum/serial_link/tests/byte_stuffer_tests.cpp b/quantum/serial_link/tests/byte_stuffer_tests.cpp
deleted file mode 100644
index 9e4e1768f4..0000000000
--- a/quantum/serial_link/tests/byte_stuffer_tests.cpp
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "gtest/gtest.h"
-#include "gmock/gmock.h"
-#include <vector>
-#include <algorithm>
-extern "C" {
-#include "serial_link/protocol/byte_stuffer.h"
-#include "serial_link/protocol/frame_validator.h"
-#include "serial_link/protocol/physical.h"
-}
-
-using testing::_;
-using testing::Args;
-using testing::ElementsAreArray;
-
-class ByteStuffer : public ::testing::Test {
- public:
- ByteStuffer() {
- Instance = this;
- init_byte_stuffer();
- }
-
- ~ByteStuffer() { Instance = nullptr; }
-
- MOCK_METHOD3(validator_recv_frame, void(uint8_t link, uint8_t* data, uint16_t size));
-
- void send_data(uint8_t link, const uint8_t* data, uint16_t size) { std::copy(data, data + size, std::back_inserter(sent_data)); }
- std::vector<uint8_t> sent_data;
-
- static ByteStuffer* Instance;
-};
-
-ByteStuffer* ByteStuffer::Instance = nullptr;
-
-extern "C" {
-void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size) { ByteStuffer::Instance->validator_recv_frame(link, data, size); }
-
-void send_data(uint8_t link, const uint8_t* data, uint16_t size) { ByteStuffer::Instance->send_data(link, data, size); }
-}
-
-TEST_F(ByteStuffer, receives_no_frame_for_a_single_zero_byte) {
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).Times(0);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_no_frame_for_a_single_FF_byte) {
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).Times(0);
- byte_stuffer_recv_byte(0, 0xFF);
-}
-
-TEST_F(ByteStuffer, receives_no_frame_for_a_single_random_byte) {
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).Times(0);
- byte_stuffer_recv_byte(0, 0x4A);
-}
-
-TEST_F(ByteStuffer, receives_no_frame_for_a_zero_length_frame) {
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).Times(0);
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_single_byte_valid_frame) {
- uint8_t expected[] = {0x37};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 0x37);
- byte_stuffer_recv_byte(0, 0);
-}
-TEST_F(ByteStuffer, receives_three_bytes_valid_frame) {
- uint8_t expected[] = {0x37, 0x99, 0xFF};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 4);
- byte_stuffer_recv_byte(0, 0x37);
- byte_stuffer_recv_byte(0, 0x99);
- byte_stuffer_recv_byte(0, 0xFF);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_single_zero_valid_frame) {
- uint8_t expected[] = {0};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_valid_frame_with_zeroes) {
- uint8_t expected[] = {5, 0, 3, 0};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 5);
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 3);
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_two_valid_frames) {
- uint8_t expected1[] = {5, 0};
- uint8_t expected2[] = {3};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected1)));
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected2)));
- byte_stuffer_recv_byte(1, 2);
- byte_stuffer_recv_byte(1, 5);
- byte_stuffer_recv_byte(1, 1);
- byte_stuffer_recv_byte(1, 0);
- byte_stuffer_recv_byte(1, 2);
- byte_stuffer_recv_byte(1, 3);
- byte_stuffer_recv_byte(1, 0);
-}
-
-TEST_F(ByteStuffer, receives_valid_frame_after_unexpected_zero) {
- uint8_t expected[] = {5, 7};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(1, 3);
- byte_stuffer_recv_byte(1, 1);
- byte_stuffer_recv_byte(1, 0);
- byte_stuffer_recv_byte(1, 3);
- byte_stuffer_recv_byte(1, 5);
- byte_stuffer_recv_byte(1, 7);
- byte_stuffer_recv_byte(1, 0);
-}
-
-TEST_F(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) {
- uint8_t expected[] = {5, 7};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 9);
- byte_stuffer_recv_byte(0, 4); // This should have been zero
- byte_stuffer_recv_byte(0, 0);
- byte_stuffer_recv_byte(0, 3);
- byte_stuffer_recv_byte(0, 5);
- byte_stuffer_recv_byte(0, 7);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_of_frame) {
- uint8_t expected[254];
- int i;
- for (i = 0; i < 254; i++) {
- expected[i] = i + 1;
- }
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 0xFF);
- for (i = 0; i < 254; i++) {
- byte_stuffer_recv_byte(0, i + 1);
- }
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_non_zero) {
- uint8_t expected[255];
- int i;
- for (i = 0; i < 254; i++) {
- expected[i] = i + 1;
- }
- expected[254] = 7;
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 0xFF);
- for (i = 0; i < 254; i++) {
- byte_stuffer_recv_byte(0, i + 1);
- }
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 7);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_zero) {
- uint8_t expected[255];
- int i;
- for (i = 0; i < 254; i++) {
- expected[i] = i + 1;
- }
- expected[254] = 0;
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 0xFF);
- for (i = 0; i < 254; i++) {
- byte_stuffer_recv_byte(0, i + 1);
- }
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_two_long_frames_and_some_more) {
- uint8_t expected[515];
- int i;
- int j;
- for (j = 0; j < 2; j++) {
- for (i = 0; i < 254; i++) {
- expected[i + 254 * j] = i + 1;
- }
- }
- for (i = 0; i < 7; i++) {
- expected[254 * 2 + i] = i + 1;
- }
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- byte_stuffer_recv_byte(0, 0xFF);
- for (i = 0; i < 254; i++) {
- byte_stuffer_recv_byte(0, i + 1);
- }
- byte_stuffer_recv_byte(0, 0xFF);
- for (i = 0; i < 254; i++) {
- byte_stuffer_recv_byte(0, i + 1);
- }
- byte_stuffer_recv_byte(0, 8);
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 3);
- byte_stuffer_recv_byte(0, 4);
- byte_stuffer_recv_byte(0, 5);
- byte_stuffer_recv_byte(0, 6);
- byte_stuffer_recv_byte(0, 7);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) {
- uint8_t expected[MAX_FRAME_SIZE] = {};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- int i;
- byte_stuffer_recv_byte(0, 1);
- for (i = 0; i < MAX_FRAME_SIZE; i++) {
- byte_stuffer_recv_byte(0, 1);
- }
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, doesnt_recv_a_frame_thats_too_long_all_zeroes) {
- uint8_t expected[1] = {0};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).Times(0);
- int i;
- byte_stuffer_recv_byte(0, 1);
- for (i = 0; i < MAX_FRAME_SIZE; i++) {
- byte_stuffer_recv_byte(0, 1);
- }
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, received_frame_is_aborted_when_its_too_long) {
- uint8_t expected[1] = {1};
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- int i;
- byte_stuffer_recv_byte(0, 1);
- for (i = 0; i < MAX_FRAME_SIZE; i++) {
- byte_stuffer_recv_byte(0, 1);
- }
- byte_stuffer_recv_byte(0, 2);
- byte_stuffer_recv_byte(0, 1);
- byte_stuffer_recv_byte(0, 0);
-}
-
-TEST_F(ByteStuffer, does_nothing_when_sending_zero_size_frame) {
- EXPECT_EQ(sent_data.size(), 0);
- byte_stuffer_send_frame(0, NULL, 0);
-}
-
-TEST_F(ByteStuffer, send_one_byte_frame) {
- uint8_t data[] = {5};
- byte_stuffer_send_frame(1, data, 1);
- uint8_t expected[] = {2, 5, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_two_byte_frame) {
- uint8_t data[] = {5, 0x77};
- byte_stuffer_send_frame(0, data, 2);
- uint8_t expected[] = {3, 5, 0x77, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_one_byte_frame_with_zero) {
- uint8_t data[] = {0};
- byte_stuffer_send_frame(0, data, 1);
- uint8_t expected[] = {1, 1, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_two_byte_frame_starting_with_zero) {
- uint8_t data[] = {0, 9};
- byte_stuffer_send_frame(1, data, 2);
- uint8_t expected[] = {1, 2, 9, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_two_byte_frame_starting_with_non_zero) {
- uint8_t data[] = {9, 0};
- byte_stuffer_send_frame(1, data, 2);
- uint8_t expected[] = {2, 9, 1, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_three_byte_frame_zero_in_the_middle) {
- uint8_t data[] = {9, 0, 0x68};
- byte_stuffer_send_frame(0, data, 3);
- uint8_t expected[] = {2, 9, 2, 0x68, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_three_byte_frame_data_in_the_middle) {
- uint8_t data[] = {0, 0x55, 0};
- byte_stuffer_send_frame(0, data, 3);
- uint8_t expected[] = {1, 2, 0x55, 1, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_three_byte_frame_with_all_zeroes) {
- uint8_t data[] = {0, 0, 0};
- byte_stuffer_send_frame(0, data, 3);
- uint8_t expected[] = {1, 1, 1, 1, 0};
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_frame_with_254_non_zeroes) {
- uint8_t data[254];
- int i;
- for (i = 0; i < 254; i++) {
- data[i] = i + 1;
- }
- byte_stuffer_send_frame(0, data, 254);
- uint8_t expected[256];
- expected[0] = 0xFF;
- for (i = 1; i < 255; i++) {
- expected[i] = i;
- }
- expected[255] = 0;
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_frame_with_255_non_zeroes) {
- uint8_t data[255];
- int i;
- for (i = 0; i < 255; i++) {
- data[i] = i + 1;
- }
- byte_stuffer_send_frame(0, data, 255);
- uint8_t expected[258];
- expected[0] = 0xFF;
- for (i = 1; i < 255; i++) {
- expected[i] = i;
- }
- expected[255] = 2;
- expected[256] = 255;
- expected[257] = 0;
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_frame_with_254_non_zeroes_followed_by_zero) {
- uint8_t data[255];
- int i;
- for (i = 0; i < 254; i++) {
- data[i] = i + 1;
- }
- data[254] = 0;
- byte_stuffer_send_frame(0, data, 255);
- uint8_t expected[258];
- expected[0] = 0xFF;
- for (i = 1; i < 255; i++) {
- expected[i] = i;
- }
- expected[255] = 1;
- expected[256] = 1;
- expected[257] = 0;
- EXPECT_THAT(sent_data, ElementsAreArray(expected));
-}
-
-TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_small_packet) {
- uint8_t original_data[] = {1, 2, 3};
- byte_stuffer_send_frame(0, original_data, sizeof(original_data));
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(original_data)));
- int i;
- for (auto& d : sent_data) {
- byte_stuffer_recv_byte(1, d);
- }
-}
-
-TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_small_packet_with_zeros) {
- uint8_t original_data[] = {1, 0, 3, 0, 0, 9};
- byte_stuffer_send_frame(1, original_data, sizeof(original_data));
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(original_data)));
- int i;
- for (auto& d : sent_data) {
- byte_stuffer_recv_byte(1, d);
- }
-}
-
-TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes) {
- uint8_t original_data[254];
- int i;
- for (i = 0; i < 254; i++) {
- original_data[i] = i + 1;
- }
- byte_stuffer_send_frame(0, original_data, sizeof(original_data));
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(original_data)));
- for (auto& d : sent_data) {
- byte_stuffer_recv_byte(1, d);
- }
-}
-
-TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_256_bytes) {
- uint8_t original_data[256];
- int i;
- for (i = 0; i < 254; i++) {
- original_data[i] = i + 1;
- }
- original_data[254] = 22;
- original_data[255] = 23;
- byte_stuffer_send_frame(0, original_data, sizeof(original_data));
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(original_data)));
- for (auto& d : sent_data) {
- byte_stuffer_recv_byte(1, d);
- }
-}
-
-TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes_and_then_zero) {
- uint8_t original_data[255];
- int i;
- for (i = 0; i < 254; i++) {
- original_data[i] = i + 1;
- }
- original_data[254] = 0;
- byte_stuffer_send_frame(0, original_data, sizeof(original_data));
- EXPECT_CALL(*this, validator_recv_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(original_data)));
- for (auto& d : sent_data) {
- byte_stuffer_recv_byte(1, d);
- }
-}
diff --git a/quantum/serial_link/tests/frame_router_tests.cpp b/quantum/serial_link/tests/frame_router_tests.cpp
deleted file mode 100644
index f76dfb33d6..0000000000
--- a/quantum/serial_link/tests/frame_router_tests.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "gtest/gtest.h"
-#include "gmock/gmock.h"
-#include <array>
-extern "C" {
-#include "serial_link/protocol/transport.h"
-#include "serial_link/protocol/byte_stuffer.h"
-#include "serial_link/protocol/frame_router.h"
-}
-
-using testing::_;
-using testing::Args;
-using testing::ElementsAreArray;
-
-class FrameRouter : public testing::Test {
- public:
- FrameRouter() : current_router_buffer(nullptr) {
- Instance = this;
- init_byte_stuffer();
- }
-
- ~FrameRouter() { Instance = nullptr; }
-
- void send_data(uint8_t link, const uint8_t* data, uint16_t size) {
- auto& buffer = current_router_buffer->send_buffers[link];
- std::copy(data, data + size, std::back_inserter(buffer));
- }
-
- void receive_data(uint8_t link, uint8_t* data, uint16_t size) {
- int i;
- for (i = 0; i < size; i++) {
- byte_stuffer_recv_byte(link, data[i]);
- }
- }
-
- void activate_router(uint8_t num) {
- current_router_buffer = router_buffers + num;
- router_set_master(num == 0);
- }
-
- void simulate_transport(uint8_t from, uint8_t to) {
- activate_router(to);
- if (from > to) {
- receive_data(DOWN_LINK, router_buffers[from].send_buffers[UP_LINK].data(), router_buffers[from].send_buffers[UP_LINK].size());
- } else if (to > from) {
- receive_data(UP_LINK, router_buffers[from].send_buffers[DOWN_LINK].data(), router_buffers[from].send_buffers[DOWN_LINK].size());
- }
- }
-
- MOCK_METHOD3(transport_recv_frame, void(uint8_t from, uint8_t* data, uint16_t size));
-
- std::vector<uint8_t> received_data;
-
- struct router_buffer {
- std::vector<uint8_t> send_buffers[2];
- };
-
- router_buffer router_buffers[8];
- router_buffer* current_router_buffer;
-
- static FrameRouter* Instance;
-};
-
-FrameRouter* FrameRouter::Instance = nullptr;
-
-typedef struct {
- std::array<uint8_t, 4> data;
- uint8_t extra[16];
-} frame_buffer_t;
-
-extern "C" {
-void send_data(uint8_t link, const uint8_t* data, uint16_t size) { FrameRouter::Instance->send_data(link, data, size); }
-
-void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size) { FrameRouter::Instance->transport_recv_frame(from, data, size); }
-}
-
-TEST_F(FrameRouter, master_broadcast_is_received_by_everyone) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(0);
- router_send_frame(0xFF, (uint8_t*)&data, 4);
- EXPECT_GT(router_buffers[0].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0);
- EXPECT_CALL(*this, transport_recv_frame(0, _, _)).With(Args<1, 2>(ElementsAreArray(data.data)));
- simulate_transport(0, 1);
- EXPECT_GT(router_buffers[1].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[1].send_buffers[UP_LINK].size(), 0);
-
- EXPECT_CALL(*this, transport_recv_frame(0, _, _)).With(Args<1, 2>(ElementsAreArray(data.data)));
- simulate_transport(1, 2);
- EXPECT_GT(router_buffers[2].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[2].send_buffers[UP_LINK].size(), 0);
-}
-
-TEST_F(FrameRouter, master_send_is_received_by_targets) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(0);
- router_send_frame((1 << 1) | (1 << 2), (uint8_t*)&data, 4);
- EXPECT_GT(router_buffers[0].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0);
-
- simulate_transport(0, 1);
- EXPECT_GT(router_buffers[1].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[1].send_buffers[UP_LINK].size(), 0);
-
- EXPECT_CALL(*this, transport_recv_frame(0, _, _)).With(Args<1, 2>(ElementsAreArray(data.data)));
- simulate_transport(1, 2);
- EXPECT_GT(router_buffers[2].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[2].send_buffers[UP_LINK].size(), 0);
-
- EXPECT_CALL(*this, transport_recv_frame(0, _, _)).With(Args<1, 2>(ElementsAreArray(data.data)));
- simulate_transport(2, 3);
- EXPECT_GT(router_buffers[3].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[3].send_buffers[UP_LINK].size(), 0);
-}
-
-TEST_F(FrameRouter, first_link_sends_to_master) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(1);
- router_send_frame(0, (uint8_t*)&data, 4);
- EXPECT_GT(router_buffers[1].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0);
-
- EXPECT_CALL(*this, transport_recv_frame(1, _, _)).With(Args<1, 2>(ElementsAreArray(data.data)));
- simulate_transport(1, 0);
- EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0);
-}
-
-TEST_F(FrameRouter, second_link_sends_to_master) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(2);
- router_send_frame(0, (uint8_t*)&data, 4);
- EXPECT_GT(router_buffers[2].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[2].send_buffers[DOWN_LINK].size(), 0);
-
- simulate_transport(2, 1);
- EXPECT_GT(router_buffers[1].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0);
-
- EXPECT_CALL(*this, transport_recv_frame(2, _, _)).With(Args<1, 2>(ElementsAreArray(data.data)));
- simulate_transport(1, 0);
- EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0);
- EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0);
-}
-
-TEST_F(FrameRouter, master_sends_to_master_does_nothing) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(0);
- router_send_frame(0, (uint8_t*)&data, 4);
- EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0);
-}
-
-TEST_F(FrameRouter, link_sends_to_other_link_does_nothing) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(1);
- router_send_frame(2, (uint8_t*)&data, 4);
- EXPECT_EQ(router_buffers[1].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0);
-}
-
-TEST_F(FrameRouter, master_receives_on_uplink_does_nothing) {
- frame_buffer_t data;
- data.data = {0xAB, 0x70, 0x55, 0xBB};
- activate_router(1);
- router_send_frame(0, (uint8_t*)&data, 4);
- EXPECT_GT(router_buffers[1].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[1].send_buffers[DOWN_LINK].size(), 0);
-
- EXPECT_CALL(*this, transport_recv_frame(_, _, _)).Times(0);
- activate_router(0);
- receive_data(UP_LINK, router_buffers[1].send_buffers[UP_LINK].data(), router_buffers[1].send_buffers[UP_LINK].size());
- EXPECT_EQ(router_buffers[0].send_buffers[UP_LINK].size(), 0);
- EXPECT_EQ(router_buffers[0].send_buffers[DOWN_LINK].size(), 0);
-}
diff --git a/quantum/serial_link/tests/frame_validator_tests.cpp b/quantum/serial_link/tests/frame_validator_tests.cpp
deleted file mode 100644
index 43dc57b633..0000000000
--- a/quantum/serial_link/tests/frame_validator_tests.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "gtest/gtest.h"
-#include "gmock/gmock.h"
-extern "C" {
-#include "serial_link/protocol/frame_validator.h"
-}
-
-using testing::_;
-using testing::Args;
-using testing::ElementsAreArray;
-
-class FrameValidator : public testing::Test {
- public:
- FrameValidator() { Instance = this; }
-
- ~FrameValidator() { Instance = nullptr; }
-
- MOCK_METHOD3(route_incoming_frame, void(uint8_t link, uint8_t* data, uint16_t size));
- MOCK_METHOD3(byte_stuffer_send_frame, void(uint8_t link, uint8_t* data, uint16_t size));
-
- static FrameValidator* Instance;
-};
-
-FrameValidator* FrameValidator::Instance = nullptr;
-
-extern "C" {
-void route_incoming_frame(uint8_t link, uint8_t* data, uint16_t size) { FrameValidator::Instance->route_incoming_frame(link, data, size); }
-
-void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size) { FrameValidator::Instance->byte_stuffer_send_frame(link, data, size); }
-}
-
-TEST_F(FrameValidator, doesnt_validate_frames_under_5_bytes) {
- EXPECT_CALL(*this, route_incoming_frame(_, _, _)).Times(0);
- uint8_t data[] = {1, 2};
- validator_recv_frame(0, 0, 1);
- validator_recv_frame(0, data, 2);
- validator_recv_frame(0, data, 3);
- validator_recv_frame(0, data, 4);
-}
-
-TEST_F(FrameValidator, validates_one_byte_frame_with_correct_crc) {
- uint8_t data[] = {0x44, 0x04, 0x6A, 0xB3, 0xA3};
- EXPECT_CALL(*this, route_incoming_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(data, 1)));
- validator_recv_frame(0, data, 5);
-}
-
-TEST_F(FrameValidator, does_not_validate_one_byte_frame_with_incorrect_crc) {
- uint8_t data[] = {0x44, 0, 0, 0, 0};
- EXPECT_CALL(*this, route_incoming_frame(_, _, _)).Times(0);
- validator_recv_frame(1, data, 5);
-}
-
-TEST_F(FrameValidator, validates_four_byte_frame_with_correct_crc) {
- uint8_t data[] = {0x44, 0x10, 0xFF, 0x00, 0x74, 0x4E, 0x30, 0xBA};
- EXPECT_CALL(*this, route_incoming_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(data, 4)));
- validator_recv_frame(1, data, 8);
-}
-
-TEST_F(FrameValidator, validates_five_byte_frame_with_correct_crc) {
- uint8_t data[] = {1, 2, 3, 4, 5, 0xF4, 0x99, 0x0B, 0x47};
- EXPECT_CALL(*this, route_incoming_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(data, 5)));
- validator_recv_frame(0, data, 9);
-}
-
-TEST_F(FrameValidator, sends_one_byte_with_correct_crc) {
- uint8_t original[] = {0x44, 0, 0, 0, 0};
- uint8_t expected[] = {0x44, 0x04, 0x6A, 0xB3, 0xA3};
- EXPECT_CALL(*this, byte_stuffer_send_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- validator_send_frame(0, original, 1);
-}
-
-TEST_F(FrameValidator, sends_five_bytes_with_correct_crc) {
- uint8_t original[] = {1, 2, 3, 4, 5, 0, 0, 0, 0};
- uint8_t expected[] = {1, 2, 3, 4, 5, 0xF4, 0x99, 0x0B, 0x47};
- EXPECT_CALL(*this, byte_stuffer_send_frame(_, _, _)).With(Args<1, 2>(ElementsAreArray(expected)));
- validator_send_frame(0, original, 5);
-}
diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk
deleted file mode 100644
index b81515bc55..0000000000
--- a/quantum/serial_link/tests/rules.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-serial_link_byte_stuffer_SRC :=\
- $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \
- $(SERIAL_PATH)/protocol/byte_stuffer.c
-
-serial_link_frame_validator_SRC := \
- $(SERIAL_PATH)/tests/frame_validator_tests.cpp \
- $(SERIAL_PATH)/protocol/frame_validator.c
-
-serial_link_frame_router_SRC := \
- $(SERIAL_PATH)/tests/frame_router_tests.cpp \
- $(SERIAL_PATH)/protocol/byte_stuffer.c \
- $(SERIAL_PATH)/protocol/frame_validator.c \
- $(SERIAL_PATH)/protocol/frame_router.c
-
-serial_link_triple_buffered_object_SRC := \
- $(SERIAL_PATH)/tests/triple_buffered_object_tests.cpp \
- $(SERIAL_PATH)/protocol/triple_buffered_object.c
-
-serial_link_transport_SRC := \
- $(SERIAL_PATH)/tests/transport_tests.cpp \
- $(SERIAL_PATH)/protocol/transport.c \
- $(SERIAL_PATH)/protocol/triple_buffered_object.c
diff --git a/quantum/serial_link/tests/testlist.mk b/quantum/serial_link/tests/testlist.mk
deleted file mode 100644
index c5edaf478f..0000000000
--- a/quantum/serial_link/tests/testlist.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-TEST_LIST +=\
- serial_link_byte_stuffer\
- serial_link_frame_validator\
- serial_link_frame_router\
- serial_link_triple_buffered_object\
- serial_link_transport
diff --git a/quantum/serial_link/tests/transport_tests.cpp b/quantum/serial_link/tests/transport_tests.cpp
deleted file mode 100644
index cfd1110460..0000000000
--- a/quantum/serial_link/tests/transport_tests.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "gtest/gtest.h"
-#include "gmock/gmock.h"
-
-using testing::_;
-using testing::Args;
-using testing::ElementsAreArray;
-
-extern "C" {
-#include "serial_link/protocol/transport.h"
-}
-
-struct test_object1 {
- uint32_t test;
-};
-
-struct test_object2 {
- uint32_t test1;
- uint32_t test2;
-};
-
-MASTER_TO_ALL_SLAVES_OBJECT(master_to_slave, test_object1);
-MASTER_TO_SINGLE_SLAVE_OBJECT(master_to_single_slave, test_object1);
-SLAVE_TO_MASTER_OBJECT(slave_to_master, test_object1);
-
-static remote_object_t* test_remote_objects[] = {
- REMOTE_OBJECT(master_to_slave),
- REMOTE_OBJECT(master_to_single_slave),
- REMOTE_OBJECT(slave_to_master),
-};
-
-class Transport : public testing::Test {
- public:
- Transport() {
- Instance = this;
- add_remote_objects(test_remote_objects, sizeof(test_remote_objects) / sizeof(remote_object_t*));
- }
-
- ~Transport() {
- Instance = nullptr;
- reinitialize_serial_link_transport();
- }
-
- MOCK_METHOD0(signal_data_written, void());
- MOCK_METHOD1(router_send_frame, void(uint8_t destination));
-
- void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size) {
- router_send_frame(destination);
- std::copy(data, data + size, std::back_inserter(sent_data));
- }
-
- static Transport* Instance;
-
- std::vector<uint8_t> sent_data;
-};
-
-Transport* Transport::Instance = nullptr;
-
-extern "C" {
-void signal_data_written(void) { Transport::Instance->signal_data_written(); }
-
-void router_send_frame(uint8_t destination, uint8_t* data, uint16_t size) { Transport::Instance->router_send_frame(destination, data, size); }
-}
-
-TEST_F(Transport, write_to_local_signals_an_event) {
- begin_write_master_to_slave();
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_slave();
- begin_write_slave_to_master();
- EXPECT_CALL(*this, signal_data_written());
- end_write_slave_to_master();
- begin_write_master_to_single_slave(1);
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_single_slave(1);
-}
-
-TEST_F(Transport, writes_from_master_to_all_slaves) {
- update_transport();
- test_object1* obj = begin_write_master_to_slave();
- obj->test = 5;
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_slave();
- EXPECT_CALL(*this, router_send_frame(0xFF));
- update_transport();
- transport_recv_frame(0, sent_data.data(), sent_data.size());
- test_object1* obj2 = read_master_to_slave();
- EXPECT_NE(obj2, nullptr);
- EXPECT_EQ(obj2->test, 5);
-}
-
-TEST_F(Transport, writes_from_slave_to_master) {
- update_transport();
- test_object1* obj = begin_write_slave_to_master();
- obj->test = 7;
- EXPECT_CALL(*this, signal_data_written());
- end_write_slave_to_master();
- EXPECT_CALL(*this, router_send_frame(0));
- update_transport();
- transport_recv_frame(3, sent_data.data(), sent_data.size());
- test_object1* obj2 = read_slave_to_master(2);
- EXPECT_EQ(read_slave_to_master(0), nullptr);
- EXPECT_NE(obj2, nullptr);
- EXPECT_EQ(obj2->test, 7);
-}
-
-TEST_F(Transport, writes_from_master_to_single_slave) {
- update_transport();
- test_object1* obj = begin_write_master_to_single_slave(3);
- obj->test = 7;
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_single_slave(3);
- EXPECT_CALL(*this, router_send_frame(4));
- update_transport();
- transport_recv_frame(0, sent_data.data(), sent_data.size());
- test_object1* obj2 = read_master_to_single_slave();
- EXPECT_NE(obj2, nullptr);
- EXPECT_EQ(obj2->test, 7);
-}
-
-TEST_F(Transport, ignores_object_with_invalid_id) {
- update_transport();
- test_object1* obj = begin_write_master_to_single_slave(3);
- obj->test = 7;
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_single_slave(3);
- EXPECT_CALL(*this, router_send_frame(4));
- update_transport();
- sent_data[sent_data.size() - 1] = 44;
- transport_recv_frame(0, sent_data.data(), sent_data.size());
- test_object1* obj2 = read_master_to_single_slave();
- EXPECT_EQ(obj2, nullptr);
-}
-
-TEST_F(Transport, ignores_object_with_size_too_small) {
- update_transport();
- test_object1* obj = begin_write_master_to_slave();
- obj->test = 7;
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_slave();
- EXPECT_CALL(*this, router_send_frame(_));
- update_transport();
- sent_data[sent_data.size() - 2] = 0;
- transport_recv_frame(0, sent_data.data(), sent_data.size() - 1);
- test_object1* obj2 = read_master_to_slave();
- EXPECT_EQ(obj2, nullptr);
-}
-
-TEST_F(Transport, ignores_object_with_size_too_big) {
- update_transport();
- test_object1* obj = begin_write_master_to_slave();
- obj->test = 7;
- EXPECT_CALL(*this, signal_data_written());
- end_write_master_to_slave();
- EXPECT_CALL(*this, router_send_frame(_));
- update_transport();
- sent_data.resize(sent_data.size() + 22);
- sent_data[sent_data.size() - 1] = 0;
- transport_recv_frame(0, sent_data.data(), sent_data.size());
- test_object1* obj2 = read_master_to_slave();
- EXPECT_EQ(obj2, nullptr);
-}
diff --git a/quantum/serial_link/tests/triple_buffered_object_tests.cpp b/quantum/serial_link/tests/triple_buffered_object_tests.cpp
deleted file mode 100644
index 8de9bfdebf..0000000000
--- a/quantum/serial_link/tests/triple_buffered_object_tests.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "gtest/gtest.h"
-extern "C" {
-#include "serial_link/protocol/triple_buffered_object.h"
-}
-
-struct test_object {
- uint8_t state;
- uint32_t buffer[3];
-};
-
-test_object test_object;
-
-class TripleBufferedObject : public testing::Test {
- public:
- TripleBufferedObject() { triple_buffer_init((triple_buffer_object_t*)&test_object); }
-};
-
-TEST_F(TripleBufferedObject, writes_and_reads_object) {
- *triple_buffer_begin_write(&test_object) = 0x3456ABCC;
- triple_buffer_end_write(&test_object);
- EXPECT_EQ(*triple_buffer_read(&test_object), 0x3456ABCC);
-}
-
-TEST_F(TripleBufferedObject, does_not_read_empty) { EXPECT_EQ(triple_buffer_read(&test_object), nullptr); }
-
-TEST_F(TripleBufferedObject, writes_twice_and_reads_object) {
- *triple_buffer_begin_write(&test_object) = 0x3456ABCC;
- triple_buffer_end_write(&test_object);
- *triple_buffer_begin_write(&test_object) = 0x44778899;
- triple_buffer_end_write(&test_object);
- EXPECT_EQ(*triple_buffer_read(&test_object), 0x44778899);
-}
-
-TEST_F(TripleBufferedObject, performs_another_write_in_the_middle_of_read) {
- *triple_buffer_begin_write(&test_object) = 1;
- triple_buffer_end_write(&test_object);
- uint32_t* read = triple_buffer_read(&test_object);
- *triple_buffer_begin_write(&test_object) = 2;
- triple_buffer_end_write(&test_object);
- EXPECT_EQ(*read, 1);
- EXPECT_EQ(*triple_buffer_read(&test_object), 2);
- EXPECT_EQ(triple_buffer_read(&test_object), nullptr);
-}
-
-TEST_F(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) {
- *triple_buffer_begin_write(&test_object) = 1;
- triple_buffer_end_write(&test_object);
- uint32_t* read = triple_buffer_read(&test_object);
- *triple_buffer_begin_write(&test_object) = 2;
- triple_buffer_end_write(&test_object);
- *triple_buffer_begin_write(&test_object) = 3;
- triple_buffer_end_write(&test_object);
- EXPECT_EQ(*read, 1);
- EXPECT_EQ(*triple_buffer_read(&test_object), 3);
- EXPECT_EQ(triple_buffer_read(&test_object), nullptr);
-}
diff --git a/quantum/usb_device_state.c b/quantum/usb_device_state.c
new file mode 100644
index 0000000000..5ccd309ec2
--- /dev/null
+++ b/quantum/usb_device_state.c
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2021 Andrei Purdea <andrei@purdea.ro>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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 "usb_device_state.h"
+
+enum usb_device_state usb_device_state = USB_DEVICE_STATE_NO_INIT;
+
+__attribute__((weak)) void notify_usb_device_state_change_kb(enum usb_device_state usb_device_state) { notify_usb_device_state_change_user(usb_device_state); }
+
+__attribute__((weak)) void notify_usb_device_state_change_user(enum usb_device_state usb_device_state) {}
+
+static void notify_usb_device_state_change(enum usb_device_state usb_device_state) { notify_usb_device_state_change_kb(usb_device_state); }
+
+void usb_device_state_set_configuration(bool isConfigured, uint8_t configurationNumber) {
+ usb_device_state = isConfigured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT;
+ notify_usb_device_state_change(usb_device_state);
+}
+
+void usb_device_state_set_suspend(bool isConfigured, uint8_t configurationNumber) {
+ usb_device_state = USB_DEVICE_STATE_SUSPEND;
+ notify_usb_device_state_change(usb_device_state);
+}
+
+void usb_device_state_set_resume(bool isConfigured, uint8_t configurationNumber) {
+ usb_device_state = isConfigured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT;
+ notify_usb_device_state_change(usb_device_state);
+}
+
+void usb_device_state_set_reset(void) {
+ usb_device_state = USB_DEVICE_STATE_INIT;
+ notify_usb_device_state_change(usb_device_state);
+}
+
+void usb_device_state_init(void) {
+ usb_device_state = USB_DEVICE_STATE_INIT;
+ notify_usb_device_state_change(usb_device_state);
+}
diff --git a/quantum/usb_device_state.h b/quantum/usb_device_state.h
new file mode 100644
index 0000000000..c229311d46
--- /dev/null
+++ b/quantum/usb_device_state.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2021 Andrei Purdea <andrei@purdea.ro>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 <stdbool.h>
+#include <stdint.h>
+
+void usb_device_state_set_configuration(bool isConfigured, uint8_t configurationNumber);
+void usb_device_state_set_suspend(bool isConfigured, uint8_t configurationNumber);
+void usb_device_state_set_resume(bool isConfigured, uint8_t configurationNumber);
+void usb_device_state_set_reset(void);
+void usb_device_state_init(void);
+
+enum usb_device_state {
+ USB_DEVICE_STATE_NO_INIT = 0, // We're in this state before calling usb_device_state_init()
+ USB_DEVICE_STATE_INIT = 1, // Can consume up to 100mA
+ USB_DEVICE_STATE_CONFIGURED = 2, // Can consume up to what is specified in configuration descriptor, typically 500mA
+ USB_DEVICE_STATE_SUSPEND = 3 // Can consume only suspend current
+};
+
+extern enum usb_device_state usb_device_state;
+
+void notify_usb_device_state_change_kb(enum usb_device_state usb_device_state);
+void notify_usb_device_state_change_user(enum usb_device_state usb_device_state);
diff --git a/quantum/visualizer/LICENSE.md b/quantum/visualizer/LICENSE.md
deleted file mode 100644
index 22d4c3f08b..0000000000
--- a/quantum/visualizer/LICENSE.md
+++ /dev/null
@@ -1,29 +0,0 @@
-The files in this project are licensed under the MIT license
-It uses the following libraries
-uGFX - with it's own license, see the license.html file in the uGFX subfolder for more information
-tmk_core - is indirectly used and not included in the repository. It's licensed under the GPLv2 license
-Chibios - which is used by tmk_core is licensed under GPLv3.
-
-Therefore the effective license for any project using the library is GPLv3
-
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/quantum/visualizer/common_gfxconf.h b/quantum/visualizer/common_gfxconf.h
deleted file mode 100644
index e0735b37d0..0000000000
--- a/quantum/visualizer/common_gfxconf.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/**
- * This file has a different license to the rest of the uGFX system.
- * You can copy, modify and distribute this file as you see fit.
- * You do not need to publish your source modifications to this file.
- * The only thing you are not permitted to do is to relicense it
- * under a different license.
- */
-
-/**
- * Copy this file into your project directory and rename it as gfxconf.h
- * Edit your copy to turn on the uGFX features you want to use.
- * The values below are the defaults.
- *
- * Only remove the comments from lines where you want to change the
- * default value. This allows definitions to be included from
- * driver makefiles when required and provides the best future
- * compatibility for your project.
- *
- * Please use spaces instead of tabs in this file.
- */
-
-#pragma once
-
-///////////////////////////////////////////////////////////////////////////
-// GFX - Compatibility options //
-///////////////////////////////////////////////////////////////////////////
-//#define GFX_COMPAT_V2 GFXON
-//#define GFX_COMPAT_OLDCOLORS GFXON
-
-///////////////////////////////////////////////////////////////////////////
-// GOS - One of these must be defined, preferably in your Makefile //
-///////////////////////////////////////////////////////////////////////////
-//#define GFX_USE_OS_CHIBIOS GFXOFF
-//#define GFX_USE_OS_FREERTOS GFXOFF
-// #define GFX_FREERTOS_USE_TRACE GFXOFF
-//#define GFX_USE_OS_WIN32 GFXOFF
-//#define GFX_USE_OS_LINUX GFXOFF
-//#define GFX_USE_OS_OSX GFXOFF
-//#define GFX_USE_OS_ECOS GFXOFF
-//#define GFX_USE_OS_RAWRTOS GFXOFF
-//#define GFX_USE_OS_ARDUINO GFXOFF
-//#define GFX_USE_OS_KEIL GFXOFF
-//#define GFX_USE_OS_RTX5 GFXOFF
-//#define GFX_USE_OS_CMSIS GFXOFF
-//#define GFX_USE_OS_CMSIS2 GFXOFF
-//#define GFX_USE_OS_RAW32 GFXOFF
-//#define GFX_USE_OS_ZEPHYR GFXOFF
-//#define GFX_USE_OS_NIOS GFXOFF
-//#define GFX_USE_OS_QT GFXOFF
-// #define INTERRUPTS_OFF() optional_code
-// #define INTERRUPTS_ON() optional_code
-
-// Options that (should where relevant) apply to all operating systems
-#define GFX_NO_INLINE GFXON
-// #define GFX_COMPILER GFX_COMPILER_UNKNOWN
-// #define GFX_SHOW_COMPILER GFXOFF
-// #define GFX_CPU GFX_CPU_UNKNOWN
-// #define GFX_CPU_NO_ALIGNMENT_FAULTS GFXOFF
-// #define GFX_CPU_ENDIAN GFX_CPU_ENDIAN_UNKNOWN
-// #define GFX_OS_HEAP_SIZE 0
-// #define GFX_OS_NO_INIT GFXOFF
-// #define GFX_OS_INIT_NO_WARNING GFXOFF
-// #define GFX_OS_PRE_INIT_FUNCTION myHardwareInitRoutine
-// #define GFX_OS_EXTRA_INIT_FUNCTION myOSInitRoutine
-// #define GFX_OS_EXTRA_DEINIT_FUNCTION myOSDeInitRoutine
-// #define GFX_OS_CALL_UGFXMAIN GFXOFF
-// #define GFX_OS_UGFXMAIN_STACKSIZE 0
-// #define GFX_EMULATE_MALLOC GFXOFF
-// #define GFX_MEM_LT64K GFXOFF
-
-///////////////////////////////////////////////////////////////////////////
-// GDISP //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GDISP GFXON
-
-//#define GDISP_NEED_AUTOFLUSH GFXOFF
-//#define GDISP_NEED_TIMERFLUSH GFXOFF
-//#define GDISP_NEED_VALIDATION GFXON
-//#define GDISP_NEED_CLIP GFXON
-#define GDISP_NEED_CIRCLE GFXON
-//#define GDISP_NEED_DUALCIRCLE GFXOFF
-#define GDISP_NEED_ELLIPSE GFXON
-#define GDISP_NEED_ARC GFXON
-#define GDISP_NEED_ARCSECTORS GFXON
-#define GDISP_NEED_CONVEX_POLYGON GFXON
-//#define GDISP_NEED_SCROLL GFXOFF
-#define GDISP_NEED_PIXELREAD GFXON
-#define GDISP_NEED_CONTROL GFXON
-//#define GDISP_NEED_QUERY GFXOFF
-//#define GDISP_NEED_MULTITHREAD GFXOFF
-//#define GDISP_NEED_STREAMING GFXOFF
-#define GDISP_NEED_TEXT GFXON
-// #define GDISP_NEED_TEXT_WORDWRAP GFXOFF
-// #define GDISP_NEED_TEXT_BOXPADLR 1
-// #define GDISP_NEED_TEXT_BOXPADTB 1
-// #define GDISP_NEED_ANTIALIAS GFXOFF
-// #define GDISP_NEED_UTF8 GFXOFF
-#define GDISP_NEED_TEXT_KERNING GFXON
-// #define GDISP_INCLUDE_FONT_UI1 GFXOFF
-// #define GDISP_INCLUDE_FONT_UI2 GFXOFF // The smallest preferred font.
-// #define GDISP_INCLUDE_FONT_LARGENUMBERS GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS10 GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS12 GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS16 GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS20 GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS24 GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS32 GFXOFF
-#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 GFXON
-// #define GDISP_INCLUDE_FONT_FIXED_10X20 GFXOFF
-// #define GDISP_INCLUDE_FONT_FIXED_7X14 GFXOFF
-#define GDISP_INCLUDE_FONT_FIXED_5X8 GFXON
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA GFXOFF
-// #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA GFXOFF
-// #define GDISP_INCLUDE_USER_FONTS GFXOFF
-
-//#define GDISP_NEED_IMAGE GFXOFF
-// #define GDISP_NEED_IMAGE_NATIVE GFXOFF
-// #define GDISP_NEED_IMAGE_GIF GFXOFF
-// #define GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE 32
-// #define GDISP_NEED_IMAGE_BMP GFXOFF
-// #define GDISP_NEED_IMAGE_BMP_1 GFXON
-// #define GDISP_NEED_IMAGE_BMP_4 GFXON
-// #define GDISP_NEED_IMAGE_BMP_4_RLE GFXON
-// #define GDISP_NEED_IMAGE_BMP_8 GFXON
-// #define GDISP_NEED_IMAGE_BMP_8_RLE GFXON
-// #define GDISP_NEED_IMAGE_BMP_16 GFXON
-// #define GDISP_NEED_IMAGE_BMP_24 GFXON
-// #define GDISP_NEED_IMAGE_BMP_32 GFXON
-// #define GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE 32
-// #define GDISP_NEED_IMAGE_JPG GFXOFF
-// #define GDISP_NEED_IMAGE_PNG GFXOFF
-// #define GDISP_NEED_IMAGE_PNG_INTERLACED GFXOFF
-// #define GDISP_NEED_IMAGE_PNG_TRANSPARENCY GFXON
-// #define GDISP_NEED_IMAGE_PNG_BACKGROUND GFXON
-// #define GDISP_NEED_IMAGE_PNG_ALPHACLIFF 32
-// #define GDISP_NEED_IMAGE_PNG_PALETTE_124 GFXON
-// #define GDISP_NEED_IMAGE_PNG_PALETTE_8 GFXON
-// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_124 GFXON
-// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_8 GFXON
-// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_16 GFXON
-// #define GDISP_NEED_IMAGE_PNG_GRAYALPHA_8 GFXON
-// #define GDISP_NEED_IMAGE_PNG_GRAYALPHA_16 GFXON
-// #define GDISP_NEED_IMAGE_PNG_RGB_8 GFXON
-// #define GDISP_NEED_IMAGE_PNG_RGB_16 GFXON
-// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_8 GFXON
-// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_16 GFXON
-// #define GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE 32
-// #define GDISP_IMAGE_PNG_FILE_BUFFER_SIZE 8
-// #define GDISP_IMAGE_PNG_Z_BUFFER_SIZE 32768
-// #define GDISP_NEED_IMAGE_ACCOUNTING GFXOFF
-
-//#define GDISP_NEED_PIXMAP GFXOFF
-// #define GDISP_NEED_PIXMAP_IMAGE GFXOFF
-
-//#define GDISP_DEFAULT_ORIENTATION gOrientationLandscape // If not defined the native hardware orientation is used.
-//#define GDISP_LINEBUF_SIZE 128
-//#define GDISP_STARTUP_COLOR GFX_BLACK
-#define GDISP_NEED_STARTUP_LOGO GFXOFF
-
-//#define GDISP_TOTAL_DISPLAYS 1
-
-//#define GDISP_DRIVER_LIST GDISPVMT_Win32, GDISPVMT_Win32
-#ifdef GDISP_DRIVER_LIST
-// // For code and speed optimization define as GFXON or GFXOFF if all controllers have the same capability
-# define GDISP_HARDWARE_STREAM_WRITE GFXOFF
-# define GDISP_HARDWARE_STREAM_READ GFXOFF
-# define GDISP_HARDWARE_STREAM_POS GFXOFF
-# define GDISP_HARDWARE_DRAWPIXEL GFXON
-# define GDISP_HARDWARE_CLEARS GFXOFF
-# define GDISP_HARDWARE_FILLS GFXOFF
-//#define GDISP_HARDWARE_BITFILLS GFXOFF
-# define GDISP_HARDWARE_SCROLL GFXOFF
-# define GDISP_HARDWARE_PIXELREAD GFXON
-# define GDISP_HARDWARE_CONTROL GFXON
-# define GDISP_HARDWARE_QUERY GFXOFF
-# define GDISP_HARDWARE_CLIP GFXOFF
-
-# define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888
-#endif
-
-#define GDISP_USE_GFXNET GFXOFF
-// #define GDISP_GFXNET_PORT 13001
-// #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP GFXOFF
-// #define GDISP_DONT_WAIT_FOR_NET_DISPLAY GFXOFF
-// #define GDISP_GFXNET_UNSAFE_SOCKETS GFXOFF
-
-///////////////////////////////////////////////////////////////////////////
-// GWIN //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GWIN GFXOFF
-
-//#define GWIN_NEED_WINDOWMANAGER GFXOFF
-// #define GWIN_REDRAW_IMMEDIATE GFXOFF
-// #define GWIN_REDRAW_SINGLEOP GFXOFF
-// #define GWIN_NEED_FLASHING GFXOFF
-// #define GWIN_FLASHING_PERIOD 250
-
-//#define GWIN_NEED_CONSOLE GFXOFF
-// #define GWIN_CONSOLE_USE_HISTORY GFXOFF
-// #define GWIN_CONSOLE_HISTORY_AVERAGING GFXOFF
-// #define GWIN_CONSOLE_HISTORY_ATCREATE GFXOFF
-// #define GWIN_CONSOLE_ESCSEQ GFXOFF
-// #define GWIN_CONSOLE_USE_BASESTREAM GFXOFF
-// #define GWIN_CONSOLE_USE_FLOAT GFXOFF
-//#define GWIN_NEED_GRAPH GFXOFF
-//#define GWIN_NEED_GL3D GFXOFF
-
-//#define GWIN_NEED_WIDGET GFXOFF
-//#define GWIN_FOCUS_HIGHLIGHT_WIDTH 1
-// #define GWIN_NEED_LABEL GFXOFF
-// #define GWIN_LABEL_ATTRIBUTE GFXOFF
-// #define GWIN_NEED_BUTTON GFXOFF
-// #define GWIN_BUTTON_LAZY_RELEASE GFXOFF
-// #define GWIN_NEED_SLIDER GFXOFF
-// #define GWIN_SLIDER_NOSNAP GFXOFF
-// #define GWIN_SLIDER_DEAD_BAND 5
-// #define GWIN_SLIDER_TOGGLE_INC 20
-// #define GWIN_NEED_CHECKBOX GFXOFF
-// #define GWIN_NEED_IMAGE GFXOFF
-// #define GWIN_NEED_IMAGE_ANIMATION GFXOFF
-// #define GWIN_NEED_RADIO GFXOFF
-// #define GWIN_NEED_LIST GFXOFF
-// #define GWIN_NEED_LIST_IMAGES GFXOFF
-// #define GWIN_NEED_PROGRESSBAR GFXOFF
-// #define GWIN_PROGRESSBAR_AUTO GFXOFF
-// #define GWIN_NEED_KEYBOARD GFXOFF
-// #define GWIN_KEYBOARD_DEFAULT_LAYOUT VirtualKeyboard_English1
-// #define GWIN_NEED_KEYBOARD_ENGLISH1 GFXON
-// #define GWIN_NEED_TEXTEDIT GFXOFF
-// #define GWIN_FLAT_STYLING GFXOFF
-// #define GWIN_WIDGET_TAGS GFXOFF
-
-//#define GWIN_NEED_CONTAINERS GFXOFF
-// #define GWIN_NEED_CONTAINER GFXOFF
-// #define GWIN_NEED_FRAME GFXOFF
-// #define GWIN_NEED_TABSET GFXOFF
-// #define GWIN_TABSET_TABHEIGHT 18
-
-///////////////////////////////////////////////////////////////////////////
-// GTRANS //
-///////////////////////////////////////////////////////////////////////////
-//#define GFX_USE_GTRANS GFXOFF
-
-///////////////////////////////////////////////////////////////////////////
-// GEVENT //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GEVENT GFXON
-
-//#define GEVENT_ASSERT_NO_RESOURCE GFXOFF
-//#define GEVENT_MAXIMUM_SIZE 32
-//#define GEVENT_MAX_SOURCE_LISTENERS 32
-
-///////////////////////////////////////////////////////////////////////////
-// GTIMER //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GTIMER GFXOFF
-
-//#define GTIMER_THREAD_PRIORITY gThreadpriorityHigh
-//#define GTIMER_THREAD_WORKAREA_SIZE 2048
-
-///////////////////////////////////////////////////////////////////////////
-// GQUEUE //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GQUEUE GFXOFF
-
-//#define GQUEUE_NEED_ASYNC GFXOFF
-//#define GQUEUE_NEED_GSYNC GFXOFF
-//#define GQUEUE_NEED_FSYNC GFXOFF
-//#define GQUEUE_NEED_BUFFERS GFXOFF
-
-///////////////////////////////////////////////////////////////////////////
-// GINPUT //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GINPUT GFXOFF
-
-//#define GINPUT_NEED_MOUSE GFXOFF
-// #define GINPUT_TOUCH_STARTRAW GFXOFF
-// #define GINPUT_TOUCH_NOTOUCH GFXOFF
-// #define GINPUT_TOUCH_NOCALIBRATE GFXOFF
-// #define GINPUT_TOUCH_NOCALIBRATE_GUI GFXOFF
-// #define GINPUT_MOUSE_POLL_PERIOD 25
-// #define GINPUT_MOUSE_CLICK_TIME 300
-// #define GINPUT_TOUCH_CXTCLICK_TIME 700
-// #define GINPUT_TOUCH_USER_CALIBRATION_LOAD GFXOFF
-// #define GINPUT_TOUCH_USER_CALIBRATION_SAVE GFXOFF
-// #define GMOUSE_DRIVER_LIST GMOUSEVMT_Win32, GMOUSEVMT_Win32
-// #define GINPUT_TOUCH_CALIBRATION_FONT1 "* Double"
-// #define GINPUT_TOUCH_CALIBRATION_FONT2 "* Narrow"
-// #define GINPUT_TOUCH_CALIBRATION_TITLE "Calibration"
-// #define GINPUT_TOUCH_CALIBRATION_ERROR "Calibration Failed!"
-//#define GINPUT_NEED_KEYBOARD GFXOFF
-// #define GINPUT_KEYBOARD_POLL_PERIOD 200
-// #define GKEYBOARD_DRIVER_LIST GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32
-// #define GKEYBOARD_LAYOUT_OFF GFXOFF
-// #define GKEYBOARD_LAYOUT_SCANCODE2_US GFXOFF
-//#define GINPUT_NEED_TOGGLE GFXOFF
-//#define GINPUT_NEED_DIAL GFXOFF
-
-///////////////////////////////////////////////////////////////////////////
-// GFILE //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GFILE GFXOFF
-
-//#define GFILE_NEED_PRINTG GFXOFF
-//#define GFILE_NEED_SCANG GFXOFF
-//#define GFILE_NEED_STRINGS GFXOFF
-//#define GFILE_NEED_FILELISTS GFXOFF
-//#define GFILE_NEED_STDIO GFXOFF
-//#define GFILE_NEED_NOAUTOMOUNT GFXOFF
-//#define GFILE_NEED_NOAUTOSYNC GFXOFF
-
-//#define GFILE_NEED_MEMFS GFXOFF
-//#define GFILE_NEED_ROMFS GFXOFF
-//#define GFILE_NEED_RAMFS GFXOFF
-//#define GFILE_NEED_FATFS GFXOFF
-//#define GFILE_NEED_NATIVEFS GFXOFF
-//#define GFILE_NEED_CHBIOSFS GFXOFF
-//#define GFILE_NEED_USERFS GFXOFF
-
-//#define GFILE_ALLOW_FLOATS GFXOFF
-//#define GFILE_ALLOW_DEVICESPECIFIC GFXOFF
-//#define GFILE_MAX_GFILES 3
-
-///////////////////////////////////////////////////////////////////////////
-// GADC //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GADC GFXOFF
-// #define GADC_MAX_LOWSPEED_DEVICES 4
-
-///////////////////////////////////////////////////////////////////////////
-// GAUDIO //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GAUDIO GFXOFF
-// #define GAUDIO_NEED_PLAY GFXOFF
-// #define GAUDIO_NEED_RECORD GFXOFF
-
-///////////////////////////////////////////////////////////////////////////
-// GMISC //
-///////////////////////////////////////////////////////////////////////////
-#define GFX_USE_GMISC GFXON
-
-//#define GMISC_NEED_ARRAYOPS GFXOFF
-//#define GMISC_NEED_FASTTRIG GFXOFF
-//#define GMISC_NEED_FIXEDTRIG GFXOFF
-//#define GMISC_NEED_INVSQRT GFXOFF
-// #define GMISC_INVSQRT_MIXED_ENDIAN GFXOFF
-// #define GMISC_INVSQRT_REAL_SLOW GFXOFF
-#define GMISC_NEED_MATRIXFLOAT2D GFXON
-#define GMISC_NEED_MATRIXFIXED2D GFXOFF
-//#define GMISC_NEED_HITTEST_POLY GFXOFF
diff --git a/quantum/visualizer/default_animations.c b/quantum/visualizer/default_animations.c
deleted file mode 100644
index 2f43c67cc8..0000000000
--- a/quantum/visualizer/default_animations.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#if defined(VISUALIZER_ENABLE)
-
-# include "default_animations.h"
-# include "visualizer.h"
-# ifdef LCD_ENABLE
-# include "lcd_keyframes.h"
-# endif
-# ifdef LCD_BACKLIGHT_ENABLE
-# include "lcd_backlight_keyframes.h"
-# endif
-
-# ifdef BACKLIGHT_ENABLE
-# include "led_backlight_keyframes.h"
-# endif
-
-# include "visualizer_keyframes.h"
-
-# if defined(LCD_ENABLE) || defined(LCD_BACKLIGHT_ENABLE) || defined(BACKLIGHT_ENABLE)
-
-static bool keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
-# ifdef LCD_ENABLE
- lcd_keyframe_enable(animation, state);
-# endif
-# ifdef LCD_BACKLIGHT_ENABLE
- lcd_backlight_keyframe_enable(animation, state);
-# endif
-# ifdef BACKLIGHT_ENABLE
- led_backlight_keyframe_enable(animation, state);
-# endif
- return false;
-}
-
-static bool keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
-# ifdef LCD_ENABLE
- lcd_keyframe_disable(animation, state);
-# endif
-# ifdef LCD_BACKLIGHT_ENABLE
- lcd_backlight_keyframe_disable(animation, state);
-# endif
-# ifdef BACKLIGHT_ENABLE
- led_backlight_keyframe_disable(animation, state);
-# endif
- return false;
-}
-
-static bool keyframe_fade_in(keyframe_animation_t* animation, visualizer_state_t* state) {
- bool ret = false;
-# ifdef LCD_BACKLIGHT_ENABLE
- ret |= lcd_backlight_keyframe_animate_color(animation, state);
-# endif
-# ifdef BACKLIGHT_ENABLE
- ret |= led_backlight_keyframe_fade_in_all(animation, state);
-# endif
- return ret;
-}
-
-static bool keyframe_fade_out(keyframe_animation_t* animation, visualizer_state_t* state) {
- bool ret = false;
-# ifdef LCD_BACKLIGHT_ENABLE
- ret |= lcd_backlight_keyframe_animate_color(animation, state);
-# endif
-# ifdef BACKLIGHT_ENABLE
- ret |= led_backlight_keyframe_fade_out_all(animation, state);
-# endif
- return ret;
-}
-
-// Don't worry, if the startup animation is long, you can use the keyboard like normal
-// during that time
-keyframe_animation_t default_startup_animation = {
-# if LCD_ENABLE
- .num_frames = 3,
-# else
- .num_frames = 2,
-# endif
- .loop = false,
- .frame_lengths = {0,
-# if LCD_ENABLE
- 0,
-# endif
- gfxMillisecondsToTicks(5000)},
- .frame_functions =
- {
- keyframe_enable,
-# if LCD_ENABLE
- lcd_keyframe_draw_logo,
-# endif
- keyframe_fade_in,
- },
-};
-
-keyframe_animation_t default_suspend_animation = {
-# if LCD_ENABLE
- .num_frames = 3,
-# else
- .num_frames = 2,
-# endif
- .loop = false,
- .frame_lengths =
- {
-# if LCD_ENABLE
- 0,
-# endif
- gfxMillisecondsToTicks(1000), 0},
- .frame_functions =
- {
-# if LCD_ENABLE
- lcd_keyframe_display_layer_text,
-# endif
- keyframe_fade_out,
- keyframe_disable,
- },
-};
-# endif
-
-# if defined(BACKLIGHT_ENABLE)
-# define CROSSFADE_TIME 1000
-# define GRADIENT_TIME 3000
-
-keyframe_animation_t led_test_animation = {
- .num_frames = 14,
- .loop = true,
- .frame_lengths =
- {
- gfxMillisecondsToTicks(1000), // fade in
- gfxMillisecondsToTicks(1000), // no op (leds on)
- gfxMillisecondsToTicks(1000), // fade out
- gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
- gfxMillisecondsToTicks(GRADIENT_TIME), // left to rigt (outside in)
- gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
- gfxMillisecondsToTicks(GRADIENT_TIME), // top_to_bottom
- 0, // mirror leds
- gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
- gfxMillisecondsToTicks(GRADIENT_TIME), // left_to_right (mirrored, so inside out)
- gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
- gfxMillisecondsToTicks(GRADIENT_TIME), // top_to_bottom
- 0, // normal leds
- gfxMillisecondsToTicks(CROSSFADE_TIME), // crossfade
-
- },
- .frame_functions =
- {
- led_backlight_keyframe_fade_in_all,
- keyframe_no_operation,
- led_backlight_keyframe_fade_out_all,
- led_backlight_keyframe_crossfade,
- led_backlight_keyframe_left_to_right_gradient,
- led_backlight_keyframe_crossfade,
- led_backlight_keyframe_top_to_bottom_gradient,
- led_backlight_keyframe_mirror_orientation,
- led_backlight_keyframe_crossfade,
- led_backlight_keyframe_left_to_right_gradient,
- led_backlight_keyframe_crossfade,
- led_backlight_keyframe_top_to_bottom_gradient,
- led_backlight_keyframe_normal_orientation,
- led_backlight_keyframe_crossfade,
- },
-};
-# endif
-
-#endif
diff --git a/quantum/visualizer/default_animations.h b/quantum/visualizer/default_animations.h
deleted file mode 100644
index 9accd89774..0000000000
--- a/quantum/visualizer/default_animations.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "visualizer.h"
-
-// You can use these default animations, but of course you can also write your own custom ones instead
-extern keyframe_animation_t default_startup_animation;
-extern keyframe_animation_t default_suspend_animation;
-
-// An animation for testing and demonstrating the led support, should probably not be used for real world
-// cases
-extern keyframe_animation_t led_test_animation;
diff --git a/quantum/visualizer/lcd_backlight.c b/quantum/visualizer/lcd_backlight.c
deleted file mode 100644
index 23978974e3..0000000000
--- a/quantum/visualizer/lcd_backlight.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "lcd_backlight.h"
-#include <math.h>
-
-static uint8_t current_hue = 0;
-static uint8_t current_saturation = 0;
-static uint8_t current_intensity = 0;
-static uint8_t current_brightness = 0;
-
-void lcd_backlight_init(void) {
- lcd_backlight_hal_init();
- lcd_backlight_color(current_hue, current_saturation, current_intensity);
-}
-
-// This code is based on Brian Neltner's blogpost and example code
-// "Why every LED light should be using HSI colorspace".
-// http://blog.saikoled.com/post/43693602826/why-every-led-light-should-be-using-hsi
-static void hsi_to_rgb(float h, float s, float i, uint16_t* r_out, uint16_t* g_out, uint16_t* b_out) {
- unsigned int r, g, b;
- h = fmodf(h, 360.0f); // cycle h around to 0-360 degrees
- h = 3.14159f * h / 180.0f; // Convert to radians.
- s = s > 0.0f ? (s < 1.0f ? s : 1.0f) : 0.0f; // clamp s and i to interval [0,1]
- i = i > 0.0f ? (i < 1.0f ? i : 1.0f) : 0.0f;
-
- // Math! Thanks in part to Kyle Miller.
- if (h < 2.09439f) {
- r = 65535.0f * i / 3.0f * (1.0f + s * cos(h) / cosf(1.047196667f - h));
- g = 65535.0f * i / 3.0f * (1.0f + s * (1.0f - cosf(h) / cos(1.047196667f - h)));
- b = 65535.0f * i / 3.0f * (1.0f - s);
- } else if (h < 4.188787) {
- h = h - 2.09439;
- g = 65535.0f * i / 3.0f * (1.0f + s * cosf(h) / cosf(1.047196667f - h));
- b = 65535.0f * i / 3.0f * (1.0f + s * (1.0f - cosf(h) / cosf(1.047196667f - h)));
- r = 65535.0f * i / 3.0f * (1.0f - s);
- } else {
- h = h - 4.188787;
- b = 65535.0f * i / 3.0f * (1.0f + s * cosf(h) / cosf(1.047196667f - h));
- r = 65535.0f * i / 3.0f * (1.0f + s * (1.0f - cosf(h) / cosf(1.047196667f - h)));
- g = 65535.0f * i / 3.0f * (1.0f - s);
- }
- *r_out = r > 65535 ? 65535 : r;
- *g_out = g > 65535 ? 65535 : g;
- *b_out = b > 65535 ? 65535 : b;
-}
-
-void lcd_backlight_color(uint8_t hue, uint8_t saturation, uint8_t intensity) {
- uint16_t r, g, b;
- float hue_f = 360.0f * (float)hue / 255.0f;
- float saturation_f = (float)saturation / 255.0f;
- float intensity_f = (float)intensity / 255.0f;
- intensity_f *= (float)current_brightness / 255.0f;
- hsi_to_rgb(hue_f, saturation_f, intensity_f, &r, &g, &b);
- current_hue = hue;
- current_saturation = saturation;
- current_intensity = intensity;
- lcd_backlight_hal_color(r, g, b);
-}
-
-void lcd_backlight_brightness(uint8_t b) {
- current_brightness = b;
- lcd_backlight_color(current_hue, current_saturation, current_intensity);
-}
-
-uint8_t lcd_get_backlight_brightness(void) { return current_brightness; }
diff --git a/quantum/visualizer/lcd_backlight.h b/quantum/visualizer/lcd_backlight.h
deleted file mode 100644
index 4ea5b14639..0000000000
--- a/quantum/visualizer/lcd_backlight.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include <stdint.h>
-
-// Helper macros for storing hue, staturation and intensity as unsigned integers
-#define LCD_COLOR(hue, saturation, intensity) (hue << 16 | saturation << 8 | intensity)
-#define LCD_HUE(color) ((color >> 16) & 0xFF)
-#define LCD_SAT(color) ((color >> 8) & 0xFF)
-#define LCD_INT(color) (color & 0xFF)
-
-static inline uint32_t change_lcd_color_intensity(uint32_t color, uint8_t new_intensity) { return (color & 0xFFFFFF00) | new_intensity; }
-
-void lcd_backlight_init(void);
-void lcd_backlight_color(uint8_t hue, uint8_t saturation, uint8_t intensity);
-void lcd_backlight_brightness(uint8_t b);
-uint8_t lcd_get_backlight_brightness(void);
-
-void lcd_backlight_hal_init(void);
-void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b);
diff --git a/quantum/visualizer/lcd_backlight_keyframes.c b/quantum/visualizer/lcd_backlight_keyframes.c
deleted file mode 100644
index c13cce311d..0000000000
--- a/quantum/visualizer/lcd_backlight_keyframes.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "lcd_backlight_keyframes.h"
-
-bool lcd_backlight_keyframe_animate_color(keyframe_animation_t* animation, visualizer_state_t* state) {
- int frame_length = animation->frame_lengths[animation->current_frame];
- int current_pos = frame_length - animation->time_left_in_frame;
- uint8_t t_h = LCD_HUE(state->target_lcd_color);
- uint8_t t_s = LCD_SAT(state->target_lcd_color);
- uint8_t t_i = LCD_INT(state->target_lcd_color);
- uint8_t p_h = LCD_HUE(state->prev_lcd_color);
- uint8_t p_s = LCD_SAT(state->prev_lcd_color);
- uint8_t p_i = LCD_INT(state->prev_lcd_color);
-
- uint8_t d_h1 = t_h - p_h; // Modulo arithmetic since we want to wrap around
- int d_h2 = t_h - p_h;
- // Chose the shortest way around
- int d_h = abs(d_h2) < d_h1 ? d_h2 : d_h1;
- int d_s = t_s - p_s;
- int d_i = t_i - p_i;
-
- int hue = (d_h * current_pos) / frame_length;
- int sat = (d_s * current_pos) / frame_length;
- int intensity = (d_i * current_pos) / frame_length;
- // dprintf("%X -> %X = %X\n", p_h, t_h, hue);
- hue += p_h;
- sat += p_s;
- intensity += p_i;
- state->current_lcd_color = LCD_COLOR(hue, sat, intensity);
- lcd_backlight_color(LCD_HUE(state->current_lcd_color), LCD_SAT(state->current_lcd_color), LCD_INT(state->current_lcd_color));
-
- return true;
-}
-
-bool lcd_backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- state->prev_lcd_color = state->target_lcd_color;
- state->current_lcd_color = state->target_lcd_color;
- lcd_backlight_color(LCD_HUE(state->current_lcd_color), LCD_SAT(state->current_lcd_color), LCD_INT(state->current_lcd_color));
- return false;
-}
-
-bool lcd_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
- lcd_backlight_hal_color(0, 0, 0);
- return false;
-}
-
-bool lcd_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
- lcd_backlight_color(LCD_HUE(state->current_lcd_color), LCD_SAT(state->current_lcd_color), LCD_INT(state->current_lcd_color));
- return false;
-}
diff --git a/quantum/visualizer/lcd_backlight_keyframes.h b/quantum/visualizer/lcd_backlight_keyframes.h
deleted file mode 100644
index 88768dd4a5..0000000000
--- a/quantum/visualizer/lcd_backlight_keyframes.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "visualizer.h"
-
-// Animates the LCD backlight color between the current color and the target color (of the state)
-bool lcd_backlight_keyframe_animate_color(keyframe_animation_t* animation, visualizer_state_t* state);
-// Sets the backlight color to the target color
-bool lcd_backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state);
-
-bool lcd_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
-bool lcd_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c
deleted file mode 100644
index 1d6f3dca18..0000000000
--- a/quantum/visualizer/lcd_keyframes.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "lcd_keyframes.h"
-#include <string.h>
-#include "action_util.h"
-#include "led.h"
-#include "resources/resources.h"
-
-bool lcd_keyframe_display_layer_text(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- gdispClear(White);
- gdispDrawString(0, 10, state->layer_text, state->font_dejavusansbold12, Black);
- return false;
-}
-
-static void format_layer_bitmap_string(uint16_t default_layer, uint16_t layer, char* buffer) {
- for (int i = 0; i < 16; i++) {
- uint32_t mask = (1u << i);
- if (default_layer & mask) {
- if (layer & mask) {
- *buffer = 'B';
- } else {
- *buffer = 'D';
- }
- } else if (layer & mask) {
- *buffer = '1';
- } else {
- *buffer = '0';
- }
- ++buffer;
-
- if (i == 3 || i == 7 || i == 11) {
- *buffer = ' ';
- ++buffer;
- }
- }
- *buffer = 0;
-}
-
-bool lcd_keyframe_display_layer_bitmap(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- const char* layer_help = "1=On D=Default B=Both";
- char layer_buffer[16 + 4]; // 3 spaces and one null terminator
- gdispClear(White);
- gdispDrawString(0, 0, layer_help, state->font_fixed5x8, Black);
- format_layer_bitmap_string(state->status.default_layer, state->status.layer, layer_buffer);
- gdispDrawString(0, 10, layer_buffer, state->font_fixed5x8, Black);
- format_layer_bitmap_string(state->status.default_layer >> 16, state->status.layer >> 16, layer_buffer);
- gdispDrawString(0, 20, layer_buffer, state->font_fixed5x8, Black);
- return false;
-}
-
-static void format_mods_bitmap_string(uint8_t mods, char* buffer) {
- *buffer = ' ';
- ++buffer;
-
- for (int i = 0; i < 8; i++) {
- uint32_t mask = (1u << i);
- if (mods & mask) {
- *buffer = '1';
- } else {
- *buffer = '0';
- }
- ++buffer;
-
- if (i == 3) {
- *buffer = ' ';
- ++buffer;
- }
- }
- *buffer = 0;
-}
-
-bool lcd_keyframe_display_mods_bitmap(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
-
- const char* title = "Modifier states";
- const char* mods_header = " CSAG CSAG ";
- char status_buffer[12];
-
- gdispClear(White);
- gdispDrawString(0, 0, title, state->font_fixed5x8, Black);
- gdispDrawString(0, 10, mods_header, state->font_fixed5x8, Black);
- format_mods_bitmap_string(state->status.mods, status_buffer);
- gdispDrawString(0, 20, status_buffer, state->font_fixed5x8, Black);
-
- return false;
-}
-
-#define LED_STATE_STRING_SIZE sizeof("NUM CAPS SCRL COMP KANA")
-
-static void get_led_state_string(char* output, visualizer_state_t* state) {
- uint8_t pos = 0;
-
- if (state->status.leds & (1u << USB_LED_NUM_LOCK)) {
- memcpy(output + pos, "NUM ", 4);
- pos += 4;
- }
- if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
- memcpy(output + pos, "CAPS ", 5);
- pos += 5;
- }
- if (state->status.leds & (1u << USB_LED_SCROLL_LOCK)) {
- memcpy(output + pos, "SCRL ", 5);
- pos += 5;
- }
- if (state->status.leds & (1u << USB_LED_COMPOSE)) {
- memcpy(output + pos, "COMP ", 5);
- pos += 5;
- }
- if (state->status.leds & (1u << USB_LED_KANA)) {
- memcpy(output + pos, "KANA", 4);
- pos += 4;
- }
- output[pos] = 0;
-}
-
-bool lcd_keyframe_display_led_states(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- char output[LED_STATE_STRING_SIZE];
- get_led_state_string(output, state);
- gdispClear(White);
- gdispDrawString(0, 10, output, state->font_dejavusansbold12, Black);
- return false;
-}
-
-bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- gdispClear(White);
- uint8_t y = 10;
- if (state->status.leds) {
- char output[LED_STATE_STRING_SIZE];
- get_led_state_string(output, state);
- gdispDrawString(0, 1, output, state->font_dejavusansbold12, Black);
- y = 17;
- }
- gdispDrawString(0, y, state->layer_text, state->font_dejavusansbold12, Black);
- return false;
-}
-
-bool lcd_keyframe_draw_logo(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- // Read the uGFX documentation for information how to use the displays
- // http://wiki.ugfx.org/index.php/Main_Page
- gdispClear(Black);
-
- // You can use static variables for things that can't be found in the animation
- // or state structs, here we use the image
-
- // gdispGBlitArea is a tricky function to use since it supports blitting part of the image
- // if you have full screen image, then just use LCD_WIDTH and LCD_HEIGHT for both source and target dimensions
- gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, LCD_WIDTH, (pixel_t*)resource_lcd_logo);
-
- return false;
-}
-
-bool lcd_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
- gdispSetPowerMode(powerOff);
- return false;
-}
-
-bool lcd_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
- gdispSetPowerMode(powerOn);
- return false;
-}
diff --git a/quantum/visualizer/lcd_keyframes.h b/quantum/visualizer/lcd_keyframes.h
deleted file mode 100644
index b7125e8323..0000000000
--- a/quantum/visualizer/lcd_keyframes.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "visualizer.h"
-
-// Displays the layer text centered vertically on the screen
-bool lcd_keyframe_display_layer_text(keyframe_animation_t* animation, visualizer_state_t* state);
-// Displays a bitmap (0/1) of all the currently active layers
-bool lcd_keyframe_display_layer_bitmap(keyframe_animation_t* animation, visualizer_state_t* state);
-// Displays a bitmap (0/1) of all the currently active mods
-bool lcd_keyframe_display_mods_bitmap(keyframe_animation_t* animation, visualizer_state_t* state);
-// Displays the keyboard led states (CAPS (Caps lock), NUM (Num lock), SCRL (Scroll lock), COMP (Compose), KANA)
-bool lcd_keyframe_display_led_states(keyframe_animation_t* animation, visualizer_state_t* state);
-// Displays both the layer text and the led states
-bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation, visualizer_state_t* state);
-// Displays the QMK logo on the LCD screen
-bool lcd_keyframe_draw_logo(keyframe_animation_t* animation, visualizer_state_t* state);
-
-bool lcd_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
-bool lcd_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
diff --git a/quantum/visualizer/led_backlight_keyframes.c b/quantum/visualizer/led_backlight_keyframes.c
deleted file mode 100644
index 338ada5227..0000000000
--- a/quantum/visualizer/led_backlight_keyframes.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-#include "gfx.h"
-#include <math.h>
-#include "led_backlight_keyframes.h"
-
-static uint8_t fade_led_color(keyframe_animation_t* animation, int from, int to) {
- int frame_length = animation->frame_lengths[animation->current_frame];
- int current_pos = frame_length - animation->time_left_in_frame;
- int delta = to - from;
- int luma = (delta * current_pos) / frame_length;
- luma += from;
- return luma;
-}
-
-static void keyframe_fade_all_leds_from_to(keyframe_animation_t* animation, uint8_t from, uint8_t to) {
- uint8_t luma = fade_led_color(animation, from, to);
- color_t color = LUMA2COLOR(luma);
- gdispGClear(LED_DISPLAY, color);
-}
-
-// TODO: Should be customizable per keyboard
-#define NUM_ROWS LED_HEIGHT
-#define NUM_COLS LED_WIDTH
-
-static uint8_t crossfade_start_frame[NUM_ROWS][NUM_COLS];
-static uint8_t crossfade_end_frame[NUM_ROWS][NUM_COLS];
-
-static uint8_t compute_gradient_color(float t, float index, float num) {
- const float two_pi = M_PI * 2.0f;
- float normalized_index = (1.0f - index / (num - 1.0f)) * two_pi;
- float x = t * two_pi + normalized_index;
- float v = 0.5 * (cosf(x) + 1.0f);
- return (uint8_t)(255.0f * v);
-}
-
-bool led_backlight_keyframe_fade_in_all(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- keyframe_fade_all_leds_from_to(animation, 0, 255);
- return true;
-}
-
-bool led_backlight_keyframe_fade_out_all(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- keyframe_fade_all_leds_from_to(animation, 255, 0);
- return true;
-}
-
-bool led_backlight_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i = 0; i < NUM_COLS; i++) {
- uint8_t color = compute_gradient_color(t, i, NUM_COLS);
- gdispGDrawLine(LED_DISPLAY, i, 0, i, NUM_ROWS - 1, LUMA2COLOR(color));
- }
- return true;
-}
-
-bool led_backlight_keyframe_top_to_bottom_gradient(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- float frame_length = animation->frame_lengths[animation->current_frame];
- float current_pos = frame_length - animation->time_left_in_frame;
- float t = current_pos / frame_length;
- for (int i = 0; i < NUM_ROWS; i++) {
- uint8_t color = compute_gradient_color(t, i, NUM_ROWS);
- gdispGDrawLine(LED_DISPLAY, 0, i, NUM_COLS - 1, i, LUMA2COLOR(color));
- }
- return true;
-}
-
-static void copy_current_led_state(uint8_t* dest) {
- for (int i = 0; i < NUM_ROWS; i++) {
- for (int j = 0; j < NUM_COLS; j++) {
- dest[i * NUM_COLS + j] = gdispGGetPixelColor(LED_DISPLAY, j, i);
- }
- }
-}
-bool led_backlight_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- if (animation->first_update_of_frame) {
- copy_current_led_state(&crossfade_start_frame[0][0]);
- run_next_keyframe(animation, state);
- copy_current_led_state(&crossfade_end_frame[0][0]);
- }
- for (int i = 0; i < NUM_ROWS; i++) {
- for (int j = 0; j < NUM_COLS; j++) {
- color_t color = LUMA2COLOR(fade_led_color(animation, crossfade_start_frame[i][j], crossfade_end_frame[i][j]));
- gdispGDrawPixel(LED_DISPLAY, j, i, color);
- }
- }
- return true;
-}
-
-bool led_backlight_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_180);
- return false;
-}
-
-bool led_backlight_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0);
- return false;
-}
-
-bool led_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- gdispGSetPowerMode(LED_DISPLAY, powerOff);
- return false;
-}
-
-bool led_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- gdispGSetPowerMode(LED_DISPLAY, powerOn);
- return false;
-}
diff --git a/quantum/visualizer/led_backlight_keyframes.h b/quantum/visualizer/led_backlight_keyframes.h
deleted file mode 100644
index 90153be5eb..0000000000
--- a/quantum/visualizer/led_backlight_keyframes.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include "visualizer.h"
-
-bool led_backlight_keyframe_fade_in_all(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_fade_out_all(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_left_to_right_gradient(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_top_to_bottom_gradient(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
-
-bool led_backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
-bool led_backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
-
-extern keyframe_animation_t led_test_animation;
diff --git a/quantum/visualizer/readme.md b/quantum/visualizer/readme.md
deleted file mode 100644
index 298efb742f..0000000000
--- a/quantum/visualizer/readme.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# A visualization library for the TMK keyboard firmware
-
-This library is designed to work together with the [TMK keyboard firmware](https://github.com/tmk/tmk_keyboard). Currently it only works for [Chibios](http://www.chibios.org/)
- flavors, but it would be possible to add support for other configurations as well. The LCD display functionality is provided by the [uGFX library](https://ugfx.io/).
-
-## To use this library as a user
-You can and should modify the visualizer\_user.c file. Check the comments in the file for more information.
-
-## To add this library to custom keyboard projects
-
-1. Add tmk_visualizer as a submodule to your project
-1. Set VISUALIZER_DIR in the main keyboard project makefile to point to the submodule
-1. Define LCD\_ENABLE and/or LCD\_BACKLIGHT\_ENABLE, to enable support
-1. Include the visualizer.mk make file
-1. Copy the files in the example\_integration folder to your keyboard project
-1. All other files than the callback.c file are included automatically, so you will need to add callback.c to your makefile manually. If you already have a similar file in your project, you can just copy the functions instead of the whole file.
-1. Edit the files to match your hardware. You might might want to read the Chibios and UGfx documentation, for more information.
-1. If you enable LCD support you might also have to write a custom uGFX display driver, check the uGFX documentation for that. You probably also want to enable SPI support in your Chibios configuration.
diff --git a/quantum/visualizer/resources/lcd_logo.c b/quantum/visualizer/resources/lcd_logo.c
deleted file mode 100644
index 13bf734cb3..0000000000
--- a/quantum/visualizer/resources/lcd_logo.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "resources.h"
-
-// clang-format off
-
-// To generate an image array like this
-// Ensure the image is 128 x 32 or smaller
-// Convert the bitmap to a C array using a program like http://www.riuson.com/lcd-image-converter/
-// Ensure the the conversion process produces a monochrome format array - 1 bit/pixel, left to right, top to bottom
-// Update array in the source code with the C array produced by the conversion program
-
-// The image below is generated from lcd_logo.png
-__attribute__((weak)) const uint8_t resource_lcd_logo[512] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xEE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xEE, 0xF0, 0x01, 0xC6, 0x0D, 0x8C, 0x1F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xEE, 0xFE, 0x03, 0xE7, 0x1D, 0x9C, 0x1F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xEE, 0xF0, 0x06, 0x37, 0x1D, 0xB8, 0x18, 0x0B, 0x59, 0xC8, 0x09, 0xE5, 0x9E, 0x00,
- 0x00, 0x1E, 0xEE, 0xF0, 0x06, 0x37, 0xBD, 0xF0, 0x18, 0x6F, 0x7F, 0xEC, 0x9B, 0x37, 0xB3, 0x00, 0x00, 0xFE, 0xEE, 0xFE, 0x06, 0x37, 0xBD, 0xE0, 0x1F, 0x6C, 0x66, 0x6D, 0xD8, 0x36, 0x33, 0x00,
- 0x00, 0x1E, 0xEE, 0xF0, 0x06, 0x36, 0xED, 0xF0, 0x1F, 0x6C, 0x66, 0x6D, 0x59, 0xF6, 0x3E, 0x00, 0x00, 0x1F, 0x6D, 0xF0, 0x06, 0x36, 0xED, 0xB8, 0x18, 0x6C, 0x66, 0x67, 0x73, 0x36, 0x30, 0x00,
- 0x00, 0xFF, 0x83, 0xFE, 0x03, 0xE6, 0x4D, 0x9C, 0x18, 0x6C, 0x66, 0x67, 0x73, 0x36, 0x1F, 0x00, 0x00, 0x1F, 0xEF, 0xF0, 0x01, 0xC6, 0x0D, 0x8C, 0x18, 0x6C, 0x66, 0x62, 0x21, 0xD6, 0x0E, 0x00,
- 0x00, 0xFF, 0xEF, 0xFE, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
diff --git a/quantum/visualizer/resources/lcd_logo.png b/quantum/visualizer/resources/lcd_logo.png
deleted file mode 100644
index 178ef65f15..0000000000
--- a/quantum/visualizer/resources/lcd_logo.png
+++ /dev/null
Binary files differ
diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c
deleted file mode 100644
index 709affbb77..0000000000
--- a/quantum/visualizer/visualizer.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "config.h"
-#include "visualizer.h"
-#include <string.h>
-#ifdef PROTOCOL_CHIBIOS
-# include <ch.h>
-#endif
-
-#include "gfx.h"
-
-#ifdef LCD_BACKLIGHT_ENABLE
-# include "lcd_backlight.h"
-#endif
-
-//#define DEBUG_VISUALIZER
-
-#ifdef DEBUG_VISUALIZER
-# include "debug.h"
-#else
-# include "nodebug.h"
-#endif
-
-#ifdef SERIAL_LINK_ENABLE
-# include "serial_link/protocol/transport.h"
-# include "serial_link/system/serial_link.h"
-#endif
-
-#include "action_util.h"
-
-// Define this in config.h
-#ifndef VISUALIZER_THREAD_PRIORITY
-// The visualizer needs gfx thread priorities
-# define VISUALIZER_THREAD_PRIORITY (NORMAL_PRIORITY - 2)
-#endif
-
-static visualizer_keyboard_status_t current_status = {.layer = 0xFFFFFFFF,
- .default_layer = 0xFFFFFFFF,
- .leds = 0xFFFFFFFF,
-#ifdef BACKLIGHT_ENABLE
- .backlight_level = 0,
-#endif
- .mods = 0xFF,
- .suspended = false,
-#ifdef VISUALIZER_USER_DATA_SIZE
- .user_data = {0}
-#endif
-};
-
-static bool same_status(visualizer_keyboard_status_t* status1, visualizer_keyboard_status_t* status2) {
- return status1->layer == status2->layer && status1->default_layer == status2->default_layer && status1->mods == status2->mods && status1->leds == status2->leds && status1->suspended == status2->suspended
-#ifdef BACKLIGHT_ENABLE
- && status1->backlight_level == status2->backlight_level
-#endif
-#ifdef VISUALIZER_USER_DATA_SIZE
- && memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0
-#endif
- ;
-}
-
-static bool visualizer_enabled = false;
-
-#ifdef VISUALIZER_USER_DATA_SIZE
-static uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
-#endif
-
-#define MAX_SIMULTANEOUS_ANIMATIONS 4
-static keyframe_animation_t* animations[MAX_SIMULTANEOUS_ANIMATIONS] = {};
-
-#ifdef SERIAL_LINK_ENABLE
-MASTER_TO_ALL_SLAVES_OBJECT(current_status, visualizer_keyboard_status_t);
-
-static remote_object_t* remote_objects[] = {
- REMOTE_OBJECT(current_status),
-};
-
-#endif
-
-GDisplay* LCD_DISPLAY = 0;
-GDisplay* LED_DISPLAY = 0;
-
-#ifdef LCD_DISPLAY_NUMBER
-__attribute__((weak)) GDisplay* get_lcd_display(void) { return gdispGetDisplay(LCD_DISPLAY_NUMBER); }
-#endif
-
-#ifdef LED_DISPLAY_NUMBER
-__attribute__((weak)) GDisplay* get_led_display(void) { return gdispGetDisplay(LED_DISPLAY_NUMBER); }
-#endif
-
-void start_keyframe_animation(keyframe_animation_t* animation) {
- animation->current_frame = -1;
- animation->time_left_in_frame = 0;
- animation->need_update = true;
- int free_index = -1;
- for (int i = 0; i < MAX_SIMULTANEOUS_ANIMATIONS; i++) {
- if (animations[i] == animation) {
- return;
- }
- if (free_index == -1 && animations[i] == NULL) {
- free_index = i;
- }
- }
- if (free_index != -1) {
- animations[free_index] = animation;
- }
-}
-
-void stop_keyframe_animation(keyframe_animation_t* animation) {
- animation->current_frame = animation->num_frames;
- animation->time_left_in_frame = 0;
- animation->need_update = true;
- animation->first_update_of_frame = false;
- animation->last_update_of_frame = false;
- for (int i = 0; i < MAX_SIMULTANEOUS_ANIMATIONS; i++) {
- if (animations[i] == animation) {
- animations[i] = NULL;
- return;
- }
- }
-}
-
-void stop_all_keyframe_animations(void) {
- for (int i = 0; i < MAX_SIMULTANEOUS_ANIMATIONS; i++) {
- if (animations[i]) {
- animations[i]->current_frame = animations[i]->num_frames;
- animations[i]->time_left_in_frame = 0;
- animations[i]->need_update = true;
- animations[i]->first_update_of_frame = false;
- animations[i]->last_update_of_frame = false;
- animations[i] = NULL;
- }
- }
-}
-
-static uint8_t get_num_running_animations(void) {
- uint8_t count = 0;
- for (int i = 0; i < MAX_SIMULTANEOUS_ANIMATIONS; i++) {
- count += animations[i] ? 1 : 0;
- }
- return count;
-}
-
-static bool update_keyframe_animation(keyframe_animation_t* animation, visualizer_state_t* state, systemticks_t delta, systemticks_t* sleep_time) {
- // TODO: Clean up this messy code
- dprintf("Animation frame%d, left %d, delta %d\n", animation->current_frame, animation->time_left_in_frame, delta);
- if (animation->current_frame == animation->num_frames) {
- animation->need_update = false;
- return false;
- }
- if (animation->current_frame == -1) {
- animation->current_frame = 0;
- animation->time_left_in_frame = animation->frame_lengths[0];
- animation->need_update = true;
- animation->first_update_of_frame = true;
- } else {
- animation->time_left_in_frame -= delta;
- while (animation->time_left_in_frame <= 0) {
- int left = animation->time_left_in_frame;
- if (animation->need_update) {
- animation->time_left_in_frame = 0;
- animation->last_update_of_frame = true;
- (*animation->frame_functions[animation->current_frame])(animation, state);
- animation->last_update_of_frame = false;
- }
- animation->current_frame++;
- animation->need_update = true;
- animation->first_update_of_frame = true;
- if (animation->current_frame == animation->num_frames) {
- if (animation->loop) {
- animation->current_frame = 0;
- } else {
- stop_keyframe_animation(animation);
- return false;
- }
- }
- delta = -left;
- animation->time_left_in_frame = animation->frame_lengths[animation->current_frame];
- animation->time_left_in_frame -= delta;
- }
- }
- if (animation->need_update) {
- animation->need_update = (*animation->frame_functions[animation->current_frame])(animation, state);
- animation->first_update_of_frame = false;
- }
-
- systemticks_t wanted_sleep = animation->need_update ? gfxMillisecondsToTicks(10) : (unsigned)animation->time_left_in_frame;
- if (wanted_sleep < *sleep_time) {
- *sleep_time = wanted_sleep;
- }
-
- return true;
-}
-
-void run_next_keyframe(keyframe_animation_t* animation, visualizer_state_t* state) {
- int next_frame = animation->current_frame + 1;
- if (next_frame == animation->num_frames) {
- next_frame = 0;
- }
- keyframe_animation_t temp_animation = *animation;
- temp_animation.current_frame = next_frame;
- temp_animation.time_left_in_frame = animation->frame_lengths[next_frame];
- temp_animation.first_update_of_frame = true;
- temp_animation.last_update_of_frame = false;
- temp_animation.need_update = false;
- visualizer_state_t temp_state = *state;
- (*temp_animation.frame_functions[next_frame])(&temp_animation, &temp_state);
-}
-
-// TODO: Optimize the stack size, this is probably way too big
-static DECLARE_THREAD_STACK(visualizerThreadStack, 1024);
-static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
- (void)arg;
-
- GListener event_listener;
- geventListenerInit(&event_listener);
- geventAttachSource(&event_listener, (GSourceHandle)&current_status, 0);
-
- visualizer_keyboard_status_t initial_status = {
- .default_layer = 0xFFFFFFFF,
- .layer = 0xFFFFFFFF,
- .mods = 0xFF,
- .leds = 0xFFFFFFFF,
- .suspended = false,
-#ifdef BACKLIGHT_ENABLE
- .backlight_level = 0,
-#endif
-#ifdef VISUALIZER_USER_DATA_SIZE
- .user_data = {0},
-#endif
- };
-
- visualizer_state_t state = {.status = initial_status,
- .current_lcd_color = 0,
-#ifdef LCD_ENABLE
- .font_fixed5x8 = gdispOpenFont("fixed_5x8"),
- .font_dejavusansbold12 = gdispOpenFont("DejaVuSansBold12")
-#endif
- };
- initialize_user_visualizer(&state);
- state.prev_lcd_color = state.current_lcd_color;
-
-#ifdef LCD_BACKLIGHT_ENABLE
- lcd_backlight_color(LCD_HUE(state.current_lcd_color), LCD_SAT(state.current_lcd_color), LCD_INT(state.current_lcd_color));
-#endif
-
- systemticks_t sleep_time = TIME_INFINITE;
- systemticks_t current_time = gfxSystemTicks();
- bool force_update = true;
-
- while (true) {
- systemticks_t new_time = gfxSystemTicks();
- systemticks_t delta = new_time - current_time;
- current_time = new_time;
- bool enabled = visualizer_enabled;
- if (force_update || !same_status(&state.status, &current_status)) {
- force_update = false;
-#if BACKLIGHT_ENABLE
- if (current_status.backlight_level != state.status.backlight_level) {
- if (current_status.backlight_level != 0) {
- gdispGSetPowerMode(LED_DISPLAY, powerOn);
- uint16_t percent = (uint16_t)current_status.backlight_level * 100 / BACKLIGHT_LEVELS;
- gdispGSetBacklight(LED_DISPLAY, percent);
- } else {
- gdispGSetPowerMode(LED_DISPLAY, powerOff);
- }
- state.status.backlight_level = current_status.backlight_level;
- }
-#endif
- if (visualizer_enabled) {
- if (current_status.suspended) {
- stop_all_keyframe_animations();
- visualizer_enabled = false;
- state.status = current_status;
- user_visualizer_suspend(&state);
- } else {
- visualizer_keyboard_status_t prev_status = state.status;
- state.status = current_status;
- update_user_visualizer_state(&state, &prev_status);
- }
- state.prev_lcd_color = state.current_lcd_color;
- }
- }
- if (!enabled && state.status.suspended && current_status.suspended == false) {
- // Setting the status to the initial status will force an update
- // when the visualizer is enabled again
- state.status = initial_status;
- state.status.suspended = false;
- stop_all_keyframe_animations();
- user_visualizer_resume(&state);
- state.prev_lcd_color = state.current_lcd_color;
- }
- sleep_time = TIME_INFINITE;
- for (int i = 0; i < MAX_SIMULTANEOUS_ANIMATIONS; i++) {
- if (animations[i]) {
- update_keyframe_animation(animations[i], &state, delta, &sleep_time);
- }
- }
-#ifdef BACKLIGHT_ENABLE
- gdispGFlush(LED_DISPLAY);
-#endif
-
-#ifdef LCD_ENABLE
- gdispGFlush(LCD_DISPLAY);
-#endif
-
-#ifdef EMULATOR
- draw_emulator();
-#endif
- // Enable the visualizer when the startup or the suspend animation has finished
- if (!visualizer_enabled && state.status.suspended == false && get_num_running_animations() == 0) {
- visualizer_enabled = true;
- force_update = true;
- sleep_time = 0;
- }
-
- systemticks_t after_update = gfxSystemTicks();
- unsigned update_delta = after_update - current_time;
- if (sleep_time != TIME_INFINITE) {
- if (sleep_time > update_delta) {
- sleep_time -= update_delta;
- } else {
- sleep_time = 0;
- }
- }
- dprintf("Update took %d, last delta %d, sleep_time %d\n", update_delta, delta, sleep_time);
-#ifdef PROTOCOL_CHIBIOS
- // The gEventWait function really takes milliseconds, even if the documentation says ticks.
- // Unfortunately there's no generic ugfx conversion from system time to milliseconds,
- // so let's do it in a platform dependent way.
-
- // On windows the system ticks is the same as milliseconds anyway
- if (sleep_time != TIME_INFINITE) {
- sleep_time = TIME_I2MS(sleep_time);
- }
-#endif
- geventEventWait(&event_listener, sleep_time);
- }
-#ifdef LCD_ENABLE
- gdispCloseFont(state.font_fixed5x8);
- gdispCloseFont(state.font_dejavusansbold12);
-#endif
-
- return 0;
-}
-
-void visualizer_init(void) {
- gfxInit();
-
-#ifdef LCD_BACKLIGHT_ENABLE
- lcd_backlight_init();
-#endif
-
-#ifdef SERIAL_LINK_ENABLE
- add_remote_objects(remote_objects, sizeof(remote_objects) / sizeof(remote_object_t*));
-#endif
-
-#ifdef LCD_ENABLE
- LCD_DISPLAY = get_lcd_display();
-#endif
-
-#ifdef BACKLIGHT_ENABLE
- LED_DISPLAY = get_led_display();
-#endif
-
- // We are using a low priority thread, the idea is to have it run only
- // when the main thread is sleeping during the matrix scanning
- gfxThreadCreate(visualizerThreadStack, sizeof(visualizerThreadStack), VISUALIZER_THREAD_PRIORITY, visualizerThread, NULL);
-}
-
-void update_status(bool changed) {
- if (changed) {
- GSourceListener* listener = geventGetSourceListener((GSourceHandle)&current_status, NULL);
- if (listener) {
- geventSendEvent(listener);
- }
- }
-#ifdef SERIAL_LINK_ENABLE
- static systime_t last_update = 0;
- systime_t current_update = chVTGetSystemTimeX();
- systime_t delta = current_update - last_update;
- if (changed || delta > TIME_MS2I(10)) {
- last_update = current_update;
- visualizer_keyboard_status_t* r = begin_write_current_status();
- *r = current_status;
- end_write_current_status();
- }
-#endif
-}
-
-uint8_t visualizer_get_mods() {
- uint8_t mods = get_mods();
-
-#ifndef NO_ACTION_ONESHOT
- if (!has_oneshot_mods_timed_out()) {
- mods |= get_oneshot_mods();
- }
-#endif
- return mods;
-}
-
-#ifdef VISUALIZER_USER_DATA_SIZE
-void visualizer_set_user_data(void* u) { memcpy(user_data, u, VISUALIZER_USER_DATA_SIZE); }
-#endif
-
-void visualizer_update(layer_state_t default_state, layer_state_t state, uint8_t mods, uint32_t leds) {
- // Note that there's a small race condition here, the thread could read
- // a state where one of these are set but not the other. But this should
- // not really matter as it will be fixed during the next loop step.
- // Alternatively a mutex could be used instead of the volatile variables
-
- bool changed = false;
-#ifdef SERIAL_LINK_ENABLE
- if (is_serial_link_connected()) {
- visualizer_keyboard_status_t* new_status = read_current_status();
- if (new_status) {
- if (!same_status(&current_status, new_status)) {
- changed = true;
- current_status = *new_status;
- }
- }
- } else {
-#else
- {
-#endif
- visualizer_keyboard_status_t new_status = {
- .layer = state,
- .default_layer = default_state,
- .mods = mods,
- .leds = leds,
-#ifdef BACKLIGHT_ENABLE
- .backlight_level = current_status.backlight_level,
-#endif
- .suspended = current_status.suspended,
- };
-#ifdef VISUALIZER_USER_DATA_SIZE
- memcpy(new_status.user_data, user_data, VISUALIZER_USER_DATA_SIZE);
-#endif
- if (!same_status(&current_status, &new_status)) {
- changed = true;
- current_status = new_status;
- }
- }
- update_status(changed);
-}
-
-void visualizer_suspend(void) {
- current_status.suspended = true;
- update_status(true);
-}
-
-void visualizer_resume(void) {
- current_status.suspended = false;
- update_status(true);
-}
-
-#ifdef BACKLIGHT_ENABLE
-void backlight_set(uint8_t level) {
- current_status.backlight_level = level;
- update_status(true);
-}
-#endif
diff --git a/quantum/visualizer/visualizer.h b/quantum/visualizer/visualizer.h
deleted file mode 100644
index 627c80a305..0000000000
--- a/quantum/visualizer/visualizer.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-The MIT License (MIT)
-
-Copyright (c) 2016 Fred Sundvik
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#pragma once
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "config.h"
-#include "gfx.h"
-#include "action_layer.h"
-
-#ifdef LCD_BACKLIGHT_ENABLE
-# include "lcd_backlight.h"
-#endif
-
-#ifdef BACKLIGHT_ENABLE
-# include "backlight.h"
-#endif
-
-// use this function to merge both real_mods and oneshot_mods in a uint16_t
-uint8_t visualizer_get_mods(void);
-
-// This need to be called once at the start
-void visualizer_init(void);
-// This should be called at every matrix scan
-void visualizer_update(layer_state_t default_state, layer_state_t state, uint8_t mods, uint32_t leds);
-
-// This should be called when the keyboard goes to suspend state
-void visualizer_suspend(void);
-// This should be called when the keyboard wakes up from suspend state
-void visualizer_resume(void);
-
-// These functions are week, so they can be overridden by the keyboard
-// if needed
-GDisplay* get_lcd_display(void);
-GDisplay* get_led_display(void);
-
-// For emulator builds, this function need to be implemented
-#ifdef EMULATOR
-void draw_emulator(void);
-#endif
-
-// If you need support for more than 16 keyframes per animation, you can change this
-#define MAX_VISUALIZER_KEY_FRAMES 16
-
-struct keyframe_animation_t;
-
-typedef struct {
- layer_state_t layer;
- layer_state_t default_layer;
- uint32_t leds; // See led.h for available statuses
- uint8_t mods;
- bool suspended;
-#ifdef BACKLIGHT_ENABLE
- uint8_t backlight_level;
-#endif
-#ifdef VISUALIZER_USER_DATA_SIZE
- uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
-#endif
-} visualizer_keyboard_status_t;
-
-// The state struct is used by the various keyframe functions
-// It's also used for setting the LCD color and layer text
-// from the user customized code
-typedef struct visualizer_state_t {
- // The user code should primarily be modifying these
- uint32_t target_lcd_color;
- const char* layer_text;
-
- // The user visualizer(and animation functions) can read these
- visualizer_keyboard_status_t status;
-
- // These are used by the animation functions
- uint32_t current_lcd_color;
- uint32_t prev_lcd_color;
-#ifdef LCD_ENABLE
- gFont font_fixed5x8;
- gFont font_dejavusansbold12;
-#endif
-} visualizer_state_t;
-
-// Any custom keyframe function should have this signature
-// return true to get continuous updates, otherwise you will only get one
-// update per frame
-typedef bool (*frame_func)(struct keyframe_animation_t*, visualizer_state_t*);
-
-// Represents a keyframe animation, so fields are internal to the system
-// while others are meant to be initialized by the user code
-typedef struct keyframe_animation_t {
- // These should be initialized
- int num_frames;
- bool loop;
- int frame_lengths[MAX_VISUALIZER_KEY_FRAMES];
- frame_func frame_functions[MAX_VISUALIZER_KEY_FRAMES];
-
- // Used internally by the system, and can also be read by
- // keyframe update functions
- int current_frame;
- int time_left_in_frame;
- bool first_update_of_frame;
- bool last_update_of_frame;
- bool need_update;
-
-} keyframe_animation_t;
-
-extern GDisplay* LCD_DISPLAY;
-extern GDisplay* LED_DISPLAY;
-
-void start_keyframe_animation(keyframe_animation_t* animation);
-void stop_keyframe_animation(keyframe_animation_t* animation);
-// This runs the next keyframe, but does not update the animation state
-// Useful for crossfades for example
-void run_next_keyframe(keyframe_animation_t* animation, visualizer_state_t* state);
-
-// The master can set userdata which will be transferred to the slave
-#ifdef VISUALIZER_USER_DATA_SIZE
-void visualizer_set_user_data(void* user_data);
-#endif
-
-// These functions have to be implemented by the user
-// Called regularly each time the state has changed (but not every scan loop)
-void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status);
-// Called when the computer goes to suspend, will also stop calling update_user_visualizer_state
-void user_visualizer_suspend(visualizer_state_t* state);
-// You have to start at least one animation as a response to the following two functions
-// When the animation has finished the visualizer will resume normal operation and start calling the
-// update_user_visualizer_state again
-// Called when the keyboard boots up
-void initialize_user_visualizer(visualizer_state_t* state);
-// Called when the computer resumes from a suspend
-void user_visualizer_resume(visualizer_state_t* state);
diff --git a/quantum/visualizer/visualizer.mk b/quantum/visualizer/visualizer.mk
deleted file mode 100644
index 4c961ac59d..0000000000
--- a/quantum/visualizer/visualizer.mk
+++ /dev/null
@@ -1,123 +0,0 @@
-# The MIT License (MIT)
-#
-# Copyright (c) 2016 Fred Sundvik
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-define ADD_DRIVER
- $(1)_DRIVER:=$(strip $($(1)_DRIVER))
- $(1)_WIDTH:=$(strip $($(1)_WIDTH))
- $(1)_HEIGHT:=$(strip $($(1)_HEIGHT))
- ifeq ($($(1)_DRIVER),)
- $$(error $(1)_DRIVER is not defined)
- endif
- ifeq ($($(1)_WIDTH),)
- $$(error $(1)_WIDTH is not defined)
- endif
- ifeq ($($(1)_HEIGHT),)
- $$(error $(1)_HEIGHT is not defined)
- endif
- OPT_DEFS+=-D$(1)_WIDTH=$($(1)_WIDTH)
- OPT_DEFS+=-D$(1)_HEIGHT=$($(1)_HEIGHT)
- GFXDEFS+=-D$(1)_WIDTH=$($(1)_WIDTH)
- GFXDEFS+=-D$(1)_HEIGHT=$($(1)_HEIGHT)
- $(1)_DISPLAY_NUMBER:=$$(words $$(GDISP_DRIVER_LIST))
- OPT_DEFS+=-D$(1)_DISPLAY_NUMBER=$$($(1)_DISPLAY_NUMBER)
- include $(TOP_DIR)/drivers/ugfx/gdisp/$($(1)_DRIVER)/driver.mk
-endef
-
-GDISP_DRIVER_LIST:=
-
-SRC += $(VISUALIZER_DIR)/visualizer.c \
- $(VISUALIZER_DIR)/visualizer_keyframes.c
-EXTRAINCDIRS += $(GFXINC) $(VISUALIZER_DIR)
-GFXLIB = $(LIB_PATH)/ugfx
-VPATH += $(VISUALIZER_PATH)
-
-OPT_DEFS += -DVISUALIZER_ENABLE
-
-ifdef LCD_ENABLE
-OPT_DEFS += -DLCD_ENABLE
-ULIBS += -lm
-endif
-
-ifeq ($(strip $(LCD_ENABLE)), yes)
- SRC += $(VISUALIZER_DIR)/lcd_keyframes.c
- ifeq ($(strip $(LCD_BACKLIGHT_ENABLE)), yes)
- OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
- SRC += $(VISUALIZER_DIR)/lcd_backlight.c
- SRC += $(VISUALIZER_DIR)/lcd_backlight_keyframes.c
- endif
-# Note, that the linker will strip out any resources that are not actually in use
-SRC += $(VISUALIZER_DIR)/resources/lcd_logo.c
-$(eval $(call ADD_DRIVER,LCD))
-endif
-
-ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
-SRC += $(VISUALIZER_DIR)/led_backlight_keyframes.c
-$(eval $(call ADD_DRIVER,LED))
-endif
-
-SRC += $(VISUALIZER_DIR)/default_animations.c
-
-include $(GFXLIB)/gfx.mk
-# For the common_gfxconf.h
-GFXINC += quantum/visualizer
-
-GFXSRC := $(patsubst $(TOP_DIR)/%,%,$(GFXSRC))
-GFXDEFS := $(patsubst %,-D%,$(patsubst -D%,%,$(GFXDEFS)))
-
-GDISP_LIST_COMMA=,
-GDISP_LIST_EMPTY=
-GDISP_LIST_SPACE=$(GDISP_LIST_EMPTY) $(GDISP_LIST_EMPTY)
-
-GDISP_DRIVER_LIST := $(strip $(GDISP_DRIVER_LIST))
-GDISP_DRIVER_LIST := $(subst $(GDISP_LIST_SPACE),$(GDISP_LIST_COMMA),$(GDISP_DRIVER_LIST))
-
-GFXDEFS +=-DGDISP_DRIVER_LIST="$(GDISP_DRIVER_LIST)"
-
-ifneq ("$(wildcard $(KEYMAP_PATH)/visualizer.c)","")
- SRC += $(KEYMAP_PATH)/visualizer.c
-else
- VISUALIZER_1 := $(KEYBOARD_PATH_1)/visualizer.c
- VISUALIZER_2 := $(KEYBOARD_PATH_2)/visualizer.c
- VISUALIZER_3 := $(KEYBOARD_PATH_3)/visualizer.c
- VISUALIZER_4 := $(KEYBOARD_PATH_4)/visualizer.c
- VISUALIZER_5 := $(KEYBOARD_PATH_5)/visualizer.c
-
- ifneq ("$(wildcard $(VISUALIZER_5))","")
- SRC += $(VISUALIZER_5)
- endif
- ifneq ("$(wildcard $(VISUALIZER_4))","")
- SRC += $(VISUALIZER_4)
- endif
- ifneq ("$(wildcard $(VISUALIZER_3))","")
- SRC += $(VISUALIZER_3)
- endif
- ifneq ("$(wildcard $(VISUALIZER_2))","")
- SRC += $(VISUALIZER_2)
- endif
- ifneq ("$(wildcard $(VISUALIZER_1))","")
- SRC += $(VISUALIZER_1)
- endif
-endif
-
-ifdef EMULATOR
-UINCDIR += $(TMK_DIR)/common
-endif
diff --git a/quantum/visualizer/visualizer_keyframes.h b/quantum/visualizer/visualizer_keyframes.h
deleted file mode 100644
index c92ff16113..0000000000
--- a/quantum/visualizer/visualizer_keyframes.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2017 Fred Sundvik
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "visualizer.h"
-
-// Some predefined keyframe functions that can be used by the user code
-// Does nothing, useful for adding delays
-bool keyframe_no_operation(keyframe_animation_t* animation, visualizer_state_t* state);
diff --git a/shell.nix b/shell.nix
index c36df032de..5023a3b0f7 100644
--- a/shell.nix
+++ b/shell.nix
@@ -14,7 +14,7 @@ let
projectDir = ./util/nix;
overrides = poetry2nix.overrides.withDefaults (self: super: {
qmk = super.qmk.overridePythonAttrs(old: {
- # Allow QMK CLI to run "bin/qmk" as a subprocess (the wrapper changes
+ # Allow QMK CLI to run "qmk" as a subprocess (the wrapper changes
# $PATH and breaks these invocations).
dontWrapPythonPrograms = true;
});
diff --git a/show_options.mk b/show_options.mk
index b17d8c7d9d..c1da90bcbc 100644
--- a/show_options.mk
+++ b/show_options.mk
@@ -21,17 +21,15 @@ HARDWARE_OPTION_NAMES = \
RGBLIGHT_CUSTOM_DRIVER \
RGB_MATRIX_ENABLE \
RGB_MATRIX_DRIVER \
- SERIAL_LINK_ENABLE \
CIE1931_CURVE \
MIDI_ENABLE \
BLUETOOTH_ENABLE \
+ BLUETOOTH_DRIVER \
AUDIO_ENABLE \
HD44780_ENABLE \
ENCODER_ENABLE \
- LCD_ENABLE \
LED_TABLES \
POINTING_DEVICE_ENABLE \
- VISUALIZER_ENABLE \
DIP_SWITCH_ENABLE
OTHER_OPTION_NAMES = \
@@ -39,7 +37,6 @@ OTHER_OPTION_NAMES = \
UCIS_ENABLE \
UNICODEMAP_ENABLE \
UNICODE_COMMON \
- API_SYSEX_ENABLE \
AUTO_SHIFT_ENABLE \
AUTO_SHIFT_MODIFIERS \
COMBO_ENABLE \
@@ -57,7 +54,6 @@ OTHER_OPTION_NAMES = \
LED_ANIMATIONS \
IOS_DEVICE_ENABLE \
HELIX ZINC \
- ADAFRUIT_BLE_ENABLE \
AUTOLOG_ENABLE \
DEBUG_ENABLE \
ENCODER_ENABLE_CUSTOM \
@@ -74,7 +70,6 @@ OTHER_OPTION_NAMES = \
SWAP_HANDS_ENABLE \
RING_BUFFERED_6KRO_REPORT_ENABLE \
WATCHDOG_ENABLE \
- XT_ENABLE \
ERGOINU \
NO_USB_STARTUP_CHECK \
DISABLE_PROMICRO_LEDs \
@@ -83,7 +78,8 @@ OTHER_OPTION_NAMES = \
RGB_MATRIX_KEYPRESSES \
LED_MIRRORED \
RGBLIGHT_FULL_POWER \
- LTO_ENABLE
+ LTO_ENABLE \
+ PROGRAMMABLE_BUTTON_ENABLE
define NAME_ECHO
@printf " %-30s = %-16s # %s\\n" "$1" "$($1)" "$(origin $1)"
diff --git a/testlist.mk b/testlist.mk
index b66b93d295..364fb339c6 100644
--- a/testlist.mk
+++ b/testlist.mk
@@ -3,7 +3,6 @@ FULL_TESTS := $(TEST_LIST)
include $(ROOT_DIR)/quantum/debounce/tests/testlist.mk
include $(ROOT_DIR)/quantum/sequencer/tests/testlist.mk
-include $(ROOT_DIR)/quantum/serial_link/tests/testlist.mk
include $(ROOT_DIR)/tmk_core/common/test/testlist.mk
define VALIDATE_TEST_LIST
diff --git a/tmk_core/arm_atsam.mk b/tmk_core/arm_atsam.mk
index b29de9132b..b49bf764d7 100644
--- a/tmk_core/arm_atsam.mk
+++ b/tmk_core/arm_atsam.mk
@@ -2,7 +2,7 @@
##############################################################################
# Compiler settings
#
-CC = arm-none-eabi-gcc
+CC = $(CC_PREFIX) arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
SIZE = arm-none-eabi-size
diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index 940e95397b..c52262273e 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -2,7 +2,7 @@
##############################################################################
# Compiler settings
#
-CC = avr-gcc
+CC = $(CC_PREFIX) avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
index 18839710be..957a259229 100644
--- a/tmk_core/chibios.mk
+++ b/tmk_core/chibios.mk
@@ -27,29 +27,62 @@ endif
OPT_OS = chibios
CHIBIOS = $(TOP_DIR)/lib/chibios
CHIBIOS_CONTRIB = $(TOP_DIR)/lib/chibios-contrib
-# Startup files. Try a few different locations, for compability with old versions and
-# for things hardware in the contrib repository
-STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
-ifeq ("$(wildcard $(STARTUP_MK))","")
- STARTUP_MK = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
- ifeq ("$(wildcard $(STARTUP_MK))","")
- STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
- endif
+
+#
+# Startup, Port and Platform support selection
+##############################################################################
+
+ifeq ($(strip $(MCU)), risc-v)
+ # RISC-V Support
+ # As of 7.4.2021 there is only one supported RISC-V platform in Chibios-Contrib,
+ # therefore all required settings are hard-coded
+ STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
+ PORT_V = $(CHIBIOS_CONTRIB)/os/common/ports/RISCV-ECLIC/compilers/GCC/mk/port.mk
+ RULESPATH = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC
+ PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/GD/GD32VF103/platform.mk
+else
+ # ARM Support
+ # Startup files. Try a few different locations, for compability with old versions and
+ # for things hardware in the contrib repository
+ STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
+ ifeq ("$(wildcard $(STARTUP_MK))","")
+ STARTUP_MK = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
+ ifeq ("$(wildcard $(STARTUP_MK))","")
+ STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
+ endif
+ endif
+
+ # Compability with old version
+ PORT_V = $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
+ ifeq ("$(wildcard $(PORT_V))","")
+ PORT_V = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
+ endif
+
+ RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
+ ifeq ("$(wildcard $(RULESPATH)/rules.mk)","")
+ RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
+ endif
endif
-include $(STARTUP_MK)
-# HAL-OSAL files (optional).
-include $(CHIBIOS)/os/hal/hal.mk
ifeq ("$(PLATFORM_NAME)","")
- PLATFORM_NAME = platform
+ PLATFORM_NAME = platform
endif
-PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
ifeq ("$(wildcard $(PLATFORM_MK))","")
-PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
+ PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
+ ifeq ("$(wildcard $(PLATFORM_MK))","")
+ PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
+ endif
endif
+
+include $(STARTUP_MK)
+include $(PORT_V)
include $(PLATFORM_MK)
+#
+# Board support selection.
+##############################################################################
+
BOARD_MK :=
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk)","")
@@ -77,13 +110,19 @@ else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/board/board
endif
ifeq ("$(wildcard $(BOARD_MK))","")
- BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
- ifeq ("$(wildcard $(BOARD_MK))","")
- BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk
- endif
+ BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk
+ ifeq ("$(wildcard $(BOARD_MK))","")
+ BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk
+ endif
endif
-# Bootloader address
+include $(BOARD_MK)
+
+#
+# Bootloader selection.
+##############################################################################
+
+# Set bootloader address if supplied.
ifdef STM32_BOOTLOADER_ADDRESS
OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS)
endif
@@ -113,6 +152,10 @@ else ifneq ("$(wildcard $(BOARD_PATH)/configs/bootloader_defs.h)","")
OPT_DEFS += -include $(BOARD_PATH)/configs/bootloader_defs.h
endif
+#
+# ChibiOS config selection.
+##############################################################################
+
# Work out the config file directories
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/chconf.h)","")
CHCONFDIR = $(KEYBOARD_PATH_5)
@@ -130,6 +173,10 @@ else ifneq ("$(wildcard $(TOP_DIR)/platforms/boards/chibios/common/configs/chcon
CHCONFDIR = $(TOP_DIR)/platforms/chibios/boards/common/configs
endif
+#
+# HAL config selection.
+##############################################################################
+
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/halconf.h)","")
HALCONFDIR = $(KEYBOARD_PATH_5)
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/halconf.h)","")
@@ -146,40 +193,10 @@ else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/common/configs/halco
HALCONFDIR = $(TOP_DIR)/platforms/chibios/boards/common/configs
endif
-# HAL-OSAL files (optional).
-include $(CHIBIOS)/os/hal/hal.mk
-
-ifeq ("$(PLATFORM_NAME)","")
- PLATFORM_NAME = platform
-endif
-
-PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
-ifeq ("$(wildcard $(PLATFORM_MK))","")
-PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
-endif
-include $(PLATFORM_MK)
-
-
-include $(BOARD_MK)
--include $(CHIBIOS)/os/hal/osal/rt/osal.mk # ChibiOS <= 19.x
--include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk # ChibiOS >= 20.x
-# RTOS files (optional).
-include $(CHIBIOS)/os/rt/rt.mk
-# Compability with old version
-PORT_V = $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
-ifeq ("$(wildcard $(PORT_V))","")
-PORT_V = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk
-endif
-include $(PORT_V)
-# Other files (optional).
-include $(CHIBIOS)/os/hal/lib/streams/streams.mk
-
-RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC
-ifeq ("$(wildcard $(RULESPATH)/rules.mk)","")
-RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
-endif
+#
+# Linker script selection.
+##############################################################################
-# Define linker script file here
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld)","")
LDSCRIPT = $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld)","")
@@ -202,22 +219,36 @@ else
LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld
endif
-CHIBISRC = $(STARTUPSRC) \
- $(KERNSRC) \
- $(PORTSRC) \
- $(OSALSRC) \
- $(HALSRC) \
- $(PLATFORMSRC) \
- $(BOARDSRC) \
- $(STREAMSSRC) \
- $(CHIBIOS)/os/various/syscalls.c \
- $(PLATFORM_COMMON_DIR)/syscall-fallbacks.c \
- $(PLATFORM_COMMON_DIR)/wait.c
+#
+# Include ChibiOS makefiles.
+##############################################################################
+
+# HAL-OSAL files (optional).
+include $(CHIBIOS)/os/hal/hal.mk
+-include $(CHIBIOS)/os/hal/osal/rt/osal.mk # ChibiOS <= 19.x
+-include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk # ChibiOS >= 20.x
+# RTOS files (optional).
+include $(CHIBIOS)/os/rt/rt.mk
+# Other files (optional).
+include $(CHIBIOS)/os/hal/lib/streams/streams.mk
+
+PLATFORM_SRC = \
+ $(STARTUPSRC) \
+ $(KERNSRC) \
+ $(PORTSRC) \
+ $(OSALSRC) \
+ $(HALSRC) \
+ $(PLATFORMSRC) \
+ $(BOARDSRC) \
+ $(STREAMSSRC) \
+ $(CHIBIOS)/os/various/syscalls.c \
+ $(PLATFORM_COMMON_DIR)/syscall-fallbacks.c \
+ $(PLATFORM_COMMON_DIR)/wait.c
# Ensure the ASM files are not subjected to LTO -- it'll strip out interrupt handlers otherwise.
QUANTUM_LIB_SRC += $(STARTUPASM) $(PORTASM) $(OSALASM) $(PLATFORMASM)
-CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC))
+PLATFORM_SRC := $(patsubst $(TOP_DIR)/%,%,$(PLATFORM_SRC))
EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \
$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs \
@@ -247,9 +278,9 @@ else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/hal
endif
ifeq ($(strip $(USE_CHIBIOS_CONTRIB)),yes)
- include $(CHIBIOS_CONTRIB)/os/hal/hal.mk
- CHIBISRC += $(PLATFORMSRC_CONTRIB) $(HALSRC_CONTRIB)
- EXTRAINCDIRS += $(PLATFORMINC_CONTRIB) $(HALINC_CONTRIB) $(CHIBIOS_CONTRIB)/os/various
+ include $(CHIBIOS_CONTRIB)/os/hal/hal.mk
+ PLATFORM_SRC += $(PLATFORMSRC_CONTRIB) $(HALSRC_CONTRIB)
+ EXTRAINCDIRS += $(PLATFORMINC_CONTRIB) $(HALINC_CONTRIB) $(CHIBIOS_CONTRIB)/os/various
endif
#
@@ -267,61 +298,120 @@ ifneq ("$(wildcard $(BOARD_PATH)/configs/post_config.h)","")
endif
##############################################################################
-# Compiler settings
+# Compiler and Linker configuration
#
-CC = arm-none-eabi-gcc
-OBJCOPY = arm-none-eabi-objcopy
-OBJDUMP = arm-none-eabi-objdump
-SIZE = arm-none-eabi-size
-AR = arm-none-eabi-ar
-NM = arm-none-eabi-nm
-HEX = $(OBJCOPY) -O $(FORMAT)
-EEP =
-BIN = $(OBJCOPY) -O binary
-
-THUMBFLAGS = -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB
-
-COMPILEFLAGS += -fomit-frame-pointer
-COMPILEFLAGS += -falign-functions=16
-COMPILEFLAGS += -ffunction-sections
-COMPILEFLAGS += -fdata-sections
-COMPILEFLAGS += -fno-common
-COMPILEFLAGS += -fshort-wchar
-COMPILEFLAGS += $(THUMBFLAGS)
-
-# FPU options default (Cortex-M4 and Cortex-M7 single precision).
-USE_FPU_OPT ?= -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant
-
-# FPU-related options
-USE_FPU ?= no
-ifneq ($(USE_FPU),no)
- COMPILEFLAGS += $(USE_FPU_OPT)
- OPT_DEFS += -DCORTEX_USE_FPU=TRUE
+
+# Use defined stack sizes of the main thread in linker scripts
+LDSYMBOLS =--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE)
+
+# Shared Compiler flags for all toolchains
+SHARED_CFLAGS = -fomit-frame-pointer \
+ -ffunction-sections \
+ -fdata-sections \
+ -fno-common \
+ -fshort-wchar
+
+# Shared Linker flags for all toolchains
+SHARED_LDFLAGS = -T $(LDSCRIPT) \
+ -Wl,$(LDSYMBOLS) \
+ -Wl,--gc-sections \
+ -nostartfiles
+
+ifeq ($(strip $(MCU)), risc-v)
+ # RISC-V toolchain specific configuration
+ # Find suitable GCC compiler
+ ifeq ($(strip $(TOOLCHAIN)),)
+ ifneq ($(shell which riscv32-unknown-elf-gcc 2>/dev/null),)
+ TOOLCHAIN = riscv32-unknown-elf-
+ else
+ ifneq ($(shell which riscv64-unknown-elf-gcc 2>/dev/null),)
+ TOOLCHAIN = riscv64-unknown-elf-
+ else
+ $(error "No RISC-V toolchain found. Can't find riscv32-unknown-elf-gcc or riscv64-unknown-elf-gcc found in your systems PATH variable. Please install a valid toolchain and make it accessible!")
+ endif
+ endif
+ endif
+
+ # Default to compiling with picolibc for RISC-V targets if available,
+ # which is available by default on current (bullseye) debian based systems.
+ ifeq ($(shell $(TOOLCHAIN)gcc --specs=picolibc.specs -E - 2>/dev/null >/dev/null </dev/null ; echo $$?),0)
+ # Toolchain specific Compiler flags
+ # Note that we still link with our own linker script
+ # by providing it via the -T flag above.
+ TOOLCHAIN_CFLAGS = --specs=picolibc.specs
+
+ # Tell QMK that we are compiling with picolibc.
+ OPT_DEFS += -DUSE_PICOLIBC
+ endif
+
+ # MCU architecture flags
+ MCUFLAGS = -march=$(MCU_ARCH) \
+ -mabi=$(MCU_ABI) \
+ -mcmodel=$(MCU_CMODEL) \
+ -mstrict-align
else
- OPT_DEFS += -DCORTEX_USE_FPU=FALSE
+ # ARM toolchain specific configuration
+ TOOLCHAIN ?= arm-none-eabi-
+
+ # Toolchain specific Linker flags
+ TOOLCHAIN_LDFLAGS = -Wl,--no-wchar-size-warning \
+ --specs=nano.specs
+
+ # MCU architecture flags
+ MCUFLAGS = -mcpu=$(MCU) \
+ -mthumb -DTHUMB_PRESENT \
+ -mno-thumb-interwork -DTHUMB_NO_INTERWORKING \
+ -mno-unaligned-access
+
+ # Some ARM cores like the M4 and M7 have floating point units which can be enabled
+ USE_FPU ?= no
+
+ ifneq ($(USE_FPU),no)
+ OPT_DEFS += -DCORTEX_USE_FPU=TRUE
+
+ # Default is single precision floats
+ USE_FPU_OPT ?= -mfloat-abi=hard \
+ -mfpu=fpv4-sp-d16 \
+ -fsingle-precision-constant
+
+ MCUFLAGS += $(USE_FPU_OPT)
+ else
+ OPT_DEFS += -DCORTEX_USE_FPU=FALSE
+ endif
endif
-CFLAGS += $(COMPILEFLAGS)
+# Assembler flags
+ASFLAGS += $(SHARED_ASFLAGS) $(TOOLCHAIN_ASFLAGS)
-ASFLAGS += $(THUMBFLAGS)
+# C Compiler flags
+CFLAGS += $(SHARED_CFLAGS) $(TOOLCHAIN_CFLAGS)
-CXXFLAGS += $(COMPILEFLAGS)
-CXXFLAGS += -fno-rtti
+# C++ Compiler flags
+CXXFLAGS += $(CFLAGS) $(SHARED_CXXFLAGS) $(TOOLCHAIN_CXXFLAGS) -fno-rtti
-LDFLAGS +=-Wl,--gc-sections
-LDFLAGS +=-Wl,--no-wchar-size-warning
-LDFLAGS += -mno-thumb-interwork -mthumb
-LDSYMBOLS =,--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE)
-LDSYMBOLS :=$(LDSYMBOLS),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE)
-LDFLAGS += -Wl,--script=$(LDSCRIPT)$(LDSYMBOLS)
-LDFLAGS += --specs=nano.specs
+# Linker flags
+LDFLAGS += $(SHARED_LDFLAGS) $(TOOLCHAIN_LDFLAGS) $(MCUFLAGS)
+# Tell QMK that we are hosting it on ChibiOS.
OPT_DEFS += -DPROTOCOL_CHIBIOS
# Workaround to stop ChibiOS from complaining about new GCC -- it's been fixed for 7/8/9 already
OPT_DEFS += -DPORT_IGNORE_GCC_VERSION_CHECK=1
-MCUFLAGS = -mcpu=$(MCU)
+# Construct GCC toolchain
+CC = $(CC_PREFIX) $(TOOLCHAIN)gcc
+OBJCOPY = $(TOOLCHAIN)objcopy
+OBJDUMP = $(TOOLCHAIN)objdump
+SIZE = $(TOOLCHAIN)size
+AR = $(TOOLCHAIN)ar
+NM = $(TOOLCHAIN)nm
+HEX = $(OBJCOPY) -O $(FORMAT)
+EEP =
+BIN = $(OBJCOPY) -O binary
+
+##############################################################################
+# Make targets
+#
DEBUG = gdb
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index e44ff2f0ab..f0faa2dc3e 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -55,8 +55,6 @@ ifeq ($(strip $(NKRO_ENABLE)), yes)
$(info NKRO is not currently supported on V-USB, and has been disabled.)
else ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
$(info NKRO is not currently supported with Bluetooth, and has been disabled.)
- else ifneq ($(BLUETOOTH),)
- $(info NKRO is not currently supported with Bluetooth, and has been disabled.)
else
TMK_COMMON_DEFS += -DNKRO_ENABLE
SHARED_EP_ENABLE = yes
@@ -77,23 +75,6 @@ ifeq ($(strip $(NO_SUSPEND_POWER_DOWN)), yes)
TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN
endif
-ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
- TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
- TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
-endif
-
-ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
- TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
- TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_BLE
- TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
-endif
-
-ifeq ($(strip $(BLUETOOTH)), RN42)
- TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
- TMK_COMMON_DEFS += -DMODULE_RN42
- TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
-endif
-
ifeq ($(strip $(SWAP_HANDS_ENABLE)), yes)
TMK_COMMON_DEFS += -DSWAP_HANDS_ENABLE
endif
diff --git a/tmk_core/common/arm_atsam/eeprom.c b/tmk_core/common/arm_atsam/eeprom.c
index ccd5d15a54..ff1a692623 100644
--- a/tmk_core/common/arm_atsam/eeprom.c
+++ b/tmk_core/common/arm_atsam/eeprom.c
@@ -13,24 +13,110 @@
* 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 "eeprom.h"
+#include "debug.h"
+#include "samd51j18a.h"
+#include "core_cm4.h"
+#include "component/nvmctrl.h"
#ifndef EEPROM_SIZE
# include "eeconfig.h"
# define EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO
#endif
-__attribute__((aligned(4))) static uint8_t buffer[EEPROM_SIZE];
+#ifndef MAX
+# define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
+#endif
+
+#ifndef BUSY_RETRIES
+# define BUSY_RETRIES 10000
+#endif
+
+// #define DEBUG_EEPROM_OUTPUT
+
+/*
+ * Debug print utils
+ */
+#if defined(DEBUG_EEPROM_OUTPUT)
+# define eeprom_printf(fmt, ...) xprintf(fmt, ##__VA_ARGS__);
+#else /* NO_DEBUG */
+# define eeprom_printf(fmt, ...)
+#endif /* NO_DEBUG */
+
+__attribute__((aligned(4))) static uint8_t buffer[EEPROM_SIZE] = {0};
+volatile uint8_t * SmartEEPROM8 = (uint8_t *)SEEPROM_ADDR;
+
+static inline bool eeprom_is_busy(void) {
+ int timeout = BUSY_RETRIES;
+ while (NVMCTRL->SEESTAT.bit.BUSY && timeout-- > 0)
+ ;
+
+ return NVMCTRL->SEESTAT.bit.BUSY;
+}
+
+static uint32_t get_virtual_eeprom_size(void) {
+ // clang-format off
+ static const uint32_t VIRTUAL_EEPROM_MAP[11][8] = {
+ /* 4 8 16 32 64 128 256 512 */
+ /* 0*/ { 0, 0, 0, 0, 0, 0, 0, 0 },
+ /* 1*/ { 512, 1024, 2048, 4096, 4096, 4096, 4096, 4096 },
+ /* 2*/ { 512, 1024, 2048, 4096, 8192, 8192, 8192, 8192 },
+ /* 3*/ { 512, 1024, 2048, 4096, 8192, 16384, 16384, 16384 },
+ /* 4*/ { 512, 1024, 2048, 4096, 8192, 16384, 16384, 16384 },
+ /* 5*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 },
+ /* 6*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 },
+ /* 7*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 },
+ /* 8*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 },
+ /* 9*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 },
+ /*10*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 },
+ };
+ // clang-format on
+
+ static uint32_t virtual_eeprom_size = UINT32_MAX;
+ if (virtual_eeprom_size == UINT32_MAX) {
+ virtual_eeprom_size = VIRTUAL_EEPROM_MAP[NVMCTRL->SEESTAT.bit.PSZ][NVMCTRL->SEESTAT.bit.SBLK];
+ }
+ // eeprom_printf("get_virtual_eeprom_size:: %d:%d:%d\n", NVMCTRL->SEESTAT.bit.PSZ, NVMCTRL->SEESTAT.bit.SBLK, virtual_eeprom_size);
+ return virtual_eeprom_size;
+}
uint8_t eeprom_read_byte(const uint8_t *addr) {
uintptr_t offset = (uintptr_t)addr;
- return buffer[offset];
+ if (offset >= MAX(EEPROM_SIZE, get_virtual_eeprom_size())) {
+ eeprom_printf("eeprom_read_byte:: out of bounds\n");
+ return 0x0;
+ }
+
+ if (get_virtual_eeprom_size() == 0) {
+ return buffer[offset];
+ }
+
+ if (eeprom_is_busy()) {
+ eeprom_printf("eeprom_write_byte:: timeout\n");
+ return 0x0;
+ }
+
+ return SmartEEPROM8[offset];
}
void eeprom_write_byte(uint8_t *addr, uint8_t value) {
uintptr_t offset = (uintptr_t)addr;
- buffer[offset] = value;
+ if (offset >= MAX(EEPROM_SIZE, get_virtual_eeprom_size())) {
+ eeprom_printf("eeprom_write_byte:: out of bounds\n");
+ return;
+ }
+
+ if (get_virtual_eeprom_size() == 0) {
+ buffer[offset] = value;
+ return;
+ }
+
+ if (eeprom_is_busy()) {
+ eeprom_printf("eeprom_write_byte:: timeout\n");
+ return;
+ }
+
+ SmartEEPROM8[offset] = value;
}
uint16_t eeprom_read_word(const uint16_t *addr) {
diff --git a/tmk_core/common/arm_atsam/gpio.h b/tmk_core/common/arm_atsam/gpio.h
index c2d5a30889..915ed0ef4f 100644
--- a/tmk_core/common/arm_atsam/gpio.h
+++ b/tmk_core/common/arm_atsam/gpio.h
@@ -64,7 +64,13 @@ typedef uint8_t pin_t;
PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \
} while (0)
-#define writePin(pin, level) ((level) ? (writePinHigh(pin)) : (writePinLow(pin)))
+#define writePin(pin, level) \
+ do { \
+ if (level) \
+ PORT->Group[SAMD_PORT(pin)].OUTSET.reg = SAMD_PIN_MASK(pin); \
+ else \
+ PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \
+ } while (0)
#define readPin(pin) ((PORT->Group[SAMD_PORT(pin)].IN.reg & SAMD_PIN_MASK(pin)) != 0)
diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c
index 690d7f38ca..b614746e6c 100644
--- a/tmk_core/common/avr/suspend.c
+++ b/tmk_core/common/avr/suspend.c
@@ -16,25 +16,6 @@
# include "vusb.h"
#endif
-#ifdef BACKLIGHT_ENABLE
-# include "backlight.h"
-#endif
-
-#ifdef AUDIO_ENABLE
-# include "audio.h"
-#endif /* AUDIO_ENABLE */
-
-#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
-# include "rgblight.h"
-#endif
-
-#ifdef LED_MATRIX_ENABLE
-# include "led_matrix.h"
-#endif
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix.h"
-#endif
-
/** \brief Suspend idle
*
* FIXME: needs doc
@@ -50,17 +31,6 @@ void suspend_idle(uint8_t time) {
// TODO: This needs some cleanup
-/** \brief Run keyboard level Power down
- *
- * FIXME: needs doc
- */
-__attribute__((weak)) void suspend_power_down_user(void) {}
-/** \brief Run keyboard level Power down
- *
- * FIXME: needs doc
- */
-__attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); }
-
#if !defined(NO_SUSPEND_POWER_DOWN) && defined(WDT_vect)
// clang-format off
@@ -135,41 +105,9 @@ void suspend_power_down(void) {
if (!vusb_suspended) return;
#endif
- suspend_power_down_kb();
+ suspend_power_down_quantum();
#ifndef NO_SUSPEND_POWER_DOWN
- // Turn off backlight
-# ifdef BACKLIGHT_ENABLE
- backlight_set(0);
-# endif
-
- // Turn off LED indicators
- uint8_t leds_off = 0;
-# if defined(BACKLIGHT_CAPS_LOCK) && defined(BACKLIGHT_ENABLE)
- if (is_backlight_enabled()) {
- // Don't try to turn off Caps Lock indicator as it is backlight and backlight is already off
- leds_off |= (1 << USB_LED_CAPS_LOCK);
- }
-# endif
- led_set(leds_off);
-
- // Turn off audio
-# ifdef AUDIO_ENABLE
- stop_all_notes();
-# endif
-
- // Turn off underglow
-# if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
- rgblight_suspend();
-# endif
-
-# if defined(LED_MATRIX_ENABLE)
- led_matrix_set_suspend_state(true);
-# endif
-# if defined(RGB_MATRIX_ENABLE)
- rgb_matrix_set_suspend_state(true);
-# endif
-
// Enter sleep state if possible (ie, the MCU has a watchdog timeout interrupt)
# if defined(WDT_vect)
power_down(WDTO_15MS);
@@ -189,18 +127,6 @@ bool suspend_wakeup_condition(void) {
return false;
}
-/** \brief run user level code immediately after wakeup
- *
- * FIXME: needs doc
- */
-__attribute__((weak)) void suspend_wakeup_init_user(void) {}
-
-/** \brief run keyboard level code immediately after wakeup
- *
- * FIXME: needs doc
- */
-__attribute__((weak)) void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); }
-
/** \brief run immediately after wakeup
*
* FIXME: needs doc
@@ -209,27 +135,7 @@ void suspend_wakeup_init(void) {
// clear keyboard state
clear_keyboard();
- // Turn on backlight
-#ifdef BACKLIGHT_ENABLE
- backlight_init();
-#endif
-
- // Restore LED indicators
- led_set(host_keyboard_leds());
-
- // Wake up underglow
-#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
- rgblight_wakeup();
-#endif
-
-#if defined(LED_MATRIX_ENABLE)
- led_matrix_set_suspend_state(false);
-#endif
-#if defined(RGB_MATRIX_ENABLE)
- rgb_matrix_set_suspend_state(false);
-#endif
-
- suspend_wakeup_init_kb();
+ suspend_wakeup_init_quantum();
}
#if !defined(NO_SUSPEND_POWER_DOWN) && defined(WDT_vect)
diff --git a/tmk_core/common/chibios/_wait.h b/tmk_core/common/chibios/_wait.h
index b740afbd24..2f36c64a2e 100644
--- a/tmk_core/common/chibios/_wait.h
+++ b/tmk_core/common/chibios/_wait.h
@@ -43,8 +43,6 @@ void wait_us(uint16_t duration);
#include "_wait.c"
-#define CPU_CLOCK STM32_SYSCLK
-
/* For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus
* to which the GPIO is connected.
* The connected buses differ depending on the various series of MCUs.
diff --git a/tmk_core/common/chibios/bootloader.c b/tmk_core/common/chibios/bootloader.c
index f9514ee5f3..5cadadeeeb 100644
--- a/tmk_core/common/chibios/bootloader.c
+++ b/tmk_core/common/chibios/bootloader.c
@@ -95,6 +95,28 @@ void enter_bootloader_mode_if_requested(void) {
}
}
+#elif defined(GD32VF103)
+
+# define DBGMCU_KEY_UNLOCK 0x4B5A6978
+# define DBGMCU_CMD_RESET 0x1
+
+__IO uint32_t *DBGMCU_KEY = (uint32_t *)DBGMCU_BASE + 0x0CU;
+__IO uint32_t *DBGMCU_CMD = (uint32_t *)DBGMCU_BASE + 0x08U;
+
+__attribute__((weak)) void bootloader_jump(void) {
+ /* The MTIMER unit of the GD32VF103 doesn't have the MSFRST
+ * register to generate a software reset request.
+ * BUT instead two undocumented registers in the debug peripheral
+ * that allow issueing a software reset. WHO would need the MSFRST
+ * register anyway? Source:
+ * https://github.com/esmil/gd32vf103inator/blob/master/include/gd32vf103/dbg.h */
+ *DBGMCU_KEY = DBGMCU_KEY_UNLOCK;
+ *DBGMCU_CMD = DBGMCU_CMD_RESET;
+}
+
+void enter_bootloader_mode_if_requested(void) { /* Jumping to bootloader is not possible from user code. */
+}
+
#elif defined(KL2x) || defined(K20x) || defined(MK66F18) || defined(MIMXRT1062) // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS
/* Kinetis */
diff --git a/tmk_core/common/chibios/chibios_config.h b/tmk_core/common/chibios/chibios_config.h
index 23c65f9428..ad2f808a95 100644
--- a/tmk_core/common/chibios/chibios_config.h
+++ b/tmk_core/common/chibios/chibios_config.h
@@ -19,22 +19,60 @@
# define SPLIT_USB_DETECT // Force this on when dedicated pin is not used
#endif
-#if defined(STM32F1XX)
-# define USE_GPIOV1
+// STM32 compatibility
+#if defined(MCU_STM32)
+# define CPU_CLOCK STM32_SYSCLK
+
+# if defined(STM32F1XX)
+# define USE_GPIOV1
+# define PAL_MODE_ALTERNATE_OPENDRAIN PAL_MODE_STM32_ALTERNATE_OPENDRAIN
+# define PAL_MODE_ALTERNATE_PUSHPULL PAL_MODE_STM32_ALTERNATE_PUSHPULL
+# else
+# define PAL_OUTPUT_TYPE_OPENDRAIN PAL_STM32_OTYPE_OPENDRAIN
+# define PAL_OUTPUT_TYPE_PUSHPULL PAL_STM32_OTYPE_PUSHPULL
+# define PAL_OUTPUT_SPEED_HIGHEST PAL_STM32_OSPEED_HIGHEST
+# define PAL_PUPDR_FLOATING PAL_STM32_PUPDR_FLOATING
+# endif
+
+# if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX)
+# define USE_I2CV1
+# endif
+#endif
+
+// GD32 compatibility
+#if defined(MCU_GD32V)
+# define CPU_CLOCK GD32_SYSCLK
+
+# if defined(GD32VF103)
+# define USE_GPIOV1
+# define USE_I2CV1
+# define PAL_MODE_ALTERNATE_OPENDRAIN PAL_MODE_GD32_ALTERNATE_OPENDRAIN
+# define PAL_MODE_ALTERNATE_PUSHPULL PAL_MODE_GD32_ALTERNATE_PUSHPULL
+# endif
#endif
-#if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX)
-# define USE_I2CV1
+#if defined(GD32VF103)
+/* This chip has the same API as STM32F103, but uses different names for literally the same thing.
+ * As of 4.7.2021 QMK is tailored to use STM32 defines/names, for compatibility sake
+ * we just redefine the GD32 names. */
+# include "gd32v_compatibility.h"
#endif
-// teensy
-#if defined(K20x) || defined(KL2x)
-# define USE_I2CV1
-# define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed
-# define USE_GPIOV1
-# define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+// teensy compatibility
+#if defined(MCU_KINETIS)
+# define CPU_CLOCK KINETIS_SYSCLK_FREQUENCY
+
+# if defined(K20x) || defined(KL2x)
+# define USE_I2CV1
+# define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed
+# define USE_GPIOV1
+# endif
#endif
-#if defined(MK66F18)
-# define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#if defined(HT32)
+# define CPU_CLOCK HT32_CK_SYS_FREQUENCY
+# define PAL_MODE_ALTERNATE PAL_HT32_MODE_AF
+# define PAL_OUTPUT_TYPE_OPENDRAIN (PAL_HT32_MODE_OD | PAL_HT32_MODE_DIR)
+# define PAL_OUTPUT_TYPE_PUSHPULL PAL_HT32_MODE_DIR
+# define PAL_OUTPUT_SPEED_HIGHEST 0
#endif
diff --git a/tmk_core/common/chibios/eeprom_stm32.c b/tmk_core/common/chibios/eeprom_stm32.c
index 1fdf8c1e29..acc6a48516 100644
--- a/tmk_core/common/chibios/eeprom_stm32.c
+++ b/tmk_core/common/chibios/eeprom_stm32.c
@@ -620,48 +620,11 @@ uint16_t EEPROM_ReadDataWord(uint16_t Address) {
}
/*****************************************************************************
- * Wrap library in AVR style functions.
+ * Bind to eeprom_driver.c
*******************************************************************************/
-uint8_t eeprom_read_byte(const uint8_t *Address) { return EEPROM_ReadDataByte((const uintptr_t)Address); }
+void eeprom_driver_init(void) { EEPROM_Init(); }
-void eeprom_write_byte(uint8_t *Address, uint8_t Value) { EEPROM_WriteDataByte((uintptr_t)Address, Value); }
-
-void eeprom_update_byte(uint8_t *Address, uint8_t Value) { EEPROM_WriteDataByte((uintptr_t)Address, Value); }
-
-uint16_t eeprom_read_word(const uint16_t *Address) { return EEPROM_ReadDataWord((const uintptr_t)Address); }
-
-void eeprom_write_word(uint16_t *Address, uint16_t Value) { EEPROM_WriteDataWord((uintptr_t)Address, Value); }
-
-void eeprom_update_word(uint16_t *Address, uint16_t Value) { EEPROM_WriteDataWord((uintptr_t)Address, Value); }
-
-uint32_t eeprom_read_dword(const uint32_t *Address) {
- const uint16_t p = (const uintptr_t)Address;
- /* Check word alignment */
- if (p % 2) {
- /* Not aligned */
- return (uint32_t)EEPROM_ReadDataByte(p) | (uint32_t)(EEPROM_ReadDataWord(p + 1) << 8) | (uint32_t)(EEPROM_ReadDataByte(p + 3) << 24);
- } else {
- /* Aligned */
- return EEPROM_ReadDataWord(p) | (EEPROM_ReadDataWord(p + 2) << 16);
- }
-}
-
-void eeprom_write_dword(uint32_t *Address, uint32_t Value) {
- uint16_t p = (const uintptr_t)Address;
- /* Check word alignment */
- if (p % 2) {
- /* Not aligned */
- EEPROM_WriteDataByte(p, (uint8_t)Value);
- EEPROM_WriteDataWord(p + 1, (uint16_t)(Value >> 8));
- EEPROM_WriteDataByte(p + 3, (uint8_t)(Value >> 24));
- } else {
- /* Aligned */
- EEPROM_WriteDataWord(p, (uint16_t)Value);
- EEPROM_WriteDataWord(p + 2, (uint16_t)(Value >> 16));
- }
-}
-
-void eeprom_update_dword(uint32_t *Address, uint32_t Value) { eeprom_write_dword(Address, Value); }
+void eeprom_driver_erase(void) { EEPROM_Erase(); }
void eeprom_read_block(void *buf, const void *addr, size_t len) {
const uint8_t *src = (const uint8_t *)addr;
@@ -670,14 +633,14 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
/* Check word alignment */
if (len && (uintptr_t)src % 2) {
/* Read the unaligned first byte */
- *dest++ = eeprom_read_byte(src++);
+ *dest++ = EEPROM_ReadDataByte((const uintptr_t)src++);
--len;
}
uint16_t value;
bool aligned = ((uintptr_t)dest % 2 == 0);
while (len > 1) {
- value = eeprom_read_word((uint16_t *)src);
+ value = EEPROM_ReadDataWord((const uintptr_t)((uint16_t *)src));
if (aligned) {
*(uint16_t *)dest = value;
dest += 2;
@@ -689,7 +652,7 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
len -= 2;
}
if (len) {
- *dest = eeprom_read_byte(src);
+ *dest = EEPROM_ReadDataByte((const uintptr_t)src);
}
}
@@ -700,7 +663,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
/* Check word alignment */
if (len && (uintptr_t)dest % 2) {
/* Write the unaligned first byte */
- eeprom_write_byte(dest++, *src++);
+ EEPROM_WriteDataByte((uintptr_t)dest++, *src++);
--len;
}
@@ -712,15 +675,13 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
} else {
value = *(uint8_t *)src | (*(uint8_t *)(src + 1) << 8);
}
- eeprom_write_word((uint16_t *)dest, value);
+ EEPROM_WriteDataWord((uintptr_t)((uint16_t *)dest), value);
dest += 2;
src += 2;
len -= 2;
}
if (len) {
- eeprom_write_byte(dest, *src);
+ EEPROM_WriteDataByte((uintptr_t)dest, *src);
}
}
-
-void eeprom_update_block(const void *buf, void *addr, size_t len) { eeprom_write_block(buf, addr, len); }
diff --git a/tmk_core/common/chibios/eeprom_stm32_defs.h b/tmk_core/common/chibios/eeprom_stm32_defs.h
index 22b4ab858e..66904f247f 100644
--- a/tmk_core/common/chibios/eeprom_stm32_defs.h
+++ b/tmk_core/common/chibios/eeprom_stm32_defs.h
@@ -18,7 +18,7 @@
#include <hal.h>
#if !defined(FEE_PAGE_SIZE) || !defined(FEE_PAGE_COUNT)
-# if defined(STM32F103xB) || defined(STM32F042x6)
+# if defined(STM32F103xB) || defined(STM32F042x6) || defined(GD32VF103C8) || defined(GD32VF103CB)
# ifndef FEE_PAGE_SIZE
# define FEE_PAGE_SIZE 0x400 // Page size = 1KByte
# endif
@@ -32,25 +32,38 @@
# ifndef FEE_PAGE_COUNT
# define FEE_PAGE_COUNT 4 // How many pages are used
# endif
+# elif defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F405xG) || defined(STM32F411xE)
+# ifndef FEE_PAGE_SIZE
+# define FEE_PAGE_SIZE 0x4000 // Page size = 16KByte
+# endif
+# ifndef FEE_PAGE_COUNT
+# define FEE_PAGE_COUNT 1 // How many pages are used
+# endif
# endif
#endif
#if !defined(FEE_MCU_FLASH_SIZE)
# if defined(STM32F042x6)
# define FEE_MCU_FLASH_SIZE 32 // Size in Kb
-# elif defined(STM32F103xB) || defined(STM32F072xB) || defined(STM32F070xB)
+# elif defined(GD32VF103C8)
+# define FEE_MCU_FLASH_SIZE 64 // Size in Kb
+# elif defined(STM32F103xB) || defined(STM32F072xB) || defined(STM32F070xB) || defined(GD32VF103CB)
# define FEE_MCU_FLASH_SIZE 128 // Size in Kb
-# elif defined(STM32F303xC)
+# elif defined(STM32F303xC) || defined(STM32F401xC)
# define FEE_MCU_FLASH_SIZE 256 // Size in Kb
-# elif defined(STM32F103xE)
+# elif defined(STM32F103xE) || defined(STM32F401xE) || defined(STM32F411xE)
# define FEE_MCU_FLASH_SIZE 512 // Size in Kb
+# elif defined(STM32F405xG)
+# define FEE_MCU_FLASH_SIZE 1024 // Size in Kb
# endif
#endif
/* Start of the emulated eeprom */
#if !defined(FEE_PAGE_BASE_ADDRESS)
-# if 0
-/* TODO: Add support for F4 */
+# if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F405xG) || defined(STM32F411xE)
+# ifndef FEE_PAGE_BASE_ADDRESS
+# define FEE_PAGE_BASE_ADDRESS 0x08004000 // bodge to force 2nd 16k page
+# endif
# else
# ifndef FEE_FLASH_BASE
# define FEE_FLASH_BASE 0x8000000
diff --git a/tmk_core/common/chibios/flash_stm32.c b/tmk_core/common/chibios/flash_stm32.c
index 6b80ff71c3..72c41b8b78 100644
--- a/tmk_core/common/chibios/flash_stm32.c
+++ b/tmk_core/common/chibios/flash_stm32.c
@@ -19,10 +19,38 @@
#include <hal.h>
#include "flash_stm32.h"
-#if defined(EEPROM_EMU_STM32F103xB)
+#if defined(STM32F1XX)
# define FLASH_SR_WRPERR FLASH_SR_WRPRTERR
#endif
+#if defined(MCU_GD32V)
+/* GigaDevice GD32VF103 is a STM32F103 clone at heart. */
+# include "gd32v_compatibility.h"
+#endif
+
+#if defined(STM32F4XX)
+# define FLASH_SR_PGERR (FLASH_SR_PGSERR | FLASH_SR_PGPERR | FLASH_SR_PGAERR)
+
+# define FLASH_KEY1 0x45670123U
+# define FLASH_KEY2 0xCDEF89ABU
+
+static uint8_t ADDR2PAGE(uint32_t Page_Address) {
+ switch (Page_Address) {
+ case 0x08000000 ... 0x08003FFF:
+ return 0;
+ case 0x08004000 ... 0x08007FFF:
+ return 1;
+ case 0x08008000 ... 0x0800BFFF:
+ return 2;
+ case 0x0800C000 ... 0x0800FFFF:
+ return 3;
+ }
+
+ // TODO: bad times...
+ return 7;
+}
+#endif
+
/* Delay definition */
#define EraseTimeout ((uint32_t)0x00000FFF)
#define ProgramTimeout ((uint32_t)0x0000001F)
@@ -53,7 +81,9 @@ FLASH_Status FLASH_GetStatus(void) {
if ((FLASH->SR & FLASH_SR_WRPERR) != 0) return FLASH_ERROR_WRP;
+#if defined(FLASH_OBR_OPTERR)
if ((FLASH->SR & FLASH_OBR_OPTERR) != 0) return FLASH_ERROR_OPT;
+#endif
return FLASH_COMPLETE;
}
@@ -95,15 +125,24 @@ FLASH_Status FLASH_ErasePage(uint32_t Page_Address) {
if (status == FLASH_COMPLETE) {
/* if the previous operation is completed, proceed to erase the page */
+#if defined(FLASH_CR_SNB)
+ FLASH->CR &= ~FLASH_CR_SNB;
+ FLASH->CR |= FLASH_CR_SER | (ADDR2PAGE(Page_Address) << FLASH_CR_SNB_Pos);
+#else
FLASH->CR |= FLASH_CR_PER;
FLASH->AR = Page_Address;
+#endif
FLASH->CR |= FLASH_CR_STRT;
/* Wait for last operation to be completed */
status = FLASH_WaitForLastOperation(EraseTimeout);
if (status != FLASH_TIMEOUT) {
- /* if the erase operation is completed, disable the PER Bit */
+ /* if the erase operation is completed, disable the configured Bits */
+#if defined(FLASH_CR_SNB)
+ FLASH->CR &= ~(FLASH_CR_SER | FLASH_CR_SNB);
+#else
FLASH->CR &= ~FLASH_CR_PER;
+#endif
}
FLASH->SR = (FLASH_SR_EOP | FLASH_SR_PGERR | FLASH_SR_WRPERR);
}
@@ -126,6 +165,11 @@ FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) {
status = FLASH_WaitForLastOperation(ProgramTimeout);
if (status == FLASH_COMPLETE) {
/* if the previous operation is completed, proceed to program the new data */
+
+#if defined(FLASH_CR_PSIZE)
+ FLASH->CR &= ~FLASH_CR_PSIZE;
+ FLASH->CR |= FLASH_CR_PSIZE_0;
+#endif
FLASH->CR |= FLASH_CR_PG;
*(__IO uint16_t*)Address = Data;
/* Wait for last operation to be completed */
diff --git a/tmk_core/common/chibios/gd32v_compatibility.h b/tmk_core/common/chibios/gd32v_compatibility.h
new file mode 100644
index 0000000000..f4dcfd8c55
--- /dev/null
+++ b/tmk_core/common/chibios/gd32v_compatibility.h
@@ -0,0 +1,120 @@
+/* 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
+
+/* GD32VF103 has the same API as STM32F103, but uses different names for literally the same thing.
+ * As of 23.7.2021 QMK is tailored to use STM32 defines/names, for compatibility sake
+ * we just redefine the GD32 names. */
+
+/* Close your eyes kids. */
+#define MCU_STM32
+
+/* AFIO redefines */
+#define MAPR PCF0
+#define AFIO_MAPR_USART1_REMAP AFIO_PCF0_USART0_REMAP
+#define AFIO_MAPR_USART2_REMAP AFIO_PCF0_USART1_REMAP
+#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP AFIO_PCF0_USART2_REMAP_PARTIALREMAP
+#define AFIO_MAPR_USART3_REMAP_FULLREMAP AFIO_PCF0_USART2_REMAP_FULLREMAP
+
+/* DMA redefines. */
+#define STM32_DMA_STREAM(stream) GD32_DMA_STREAM(stream)
+#define STM32_DMA_STREAM_ID(peripheral, channel) GD32_DMA_STREAM_ID(peripheral - 1, channel - 1)
+#define STM32_DMA_CR_DIR_M2P GD32_DMA_CTL_DIR_M2P
+#define STM32_DMA_CR_PSIZE_WORD GD32_DMA_CTL_PWIDTH_WORD
+#define STM32_DMA_CR_MSIZE_WORD GD32_DMA_CTL_MWIDTH_WORD
+#define STM32_DMA_CR_MINC GD32_DMA_CTL_MNAGA
+#define STM32_DMA_CR_CIRC GD32_DMA_CTL_CMEN
+#define STM32_DMA_CR_PL GD32_DMA_CTL_PRIO
+#define STM32_DMA_CR_CHSEL GD32_DMA_CTL_CHSEL
+#define cr1 ctl0
+#define cr2 ctl1
+#define cr3 ctl2
+#define dier dmainten
+
+/* ADC redefines */
+#if HAL_USE_ADC
+# define STM32_ADC_USE_ADC1 GD32_ADC_USE_ADC0
+
+# define smpr1 sampt0
+# define smpr2 sampt1
+# define sqr1 rsq0
+# define sqr2 rsq1
+# define sqr3 rsq2
+
+# define ADC_SMPR2_SMP_AN0 ADC_SAMPT1_SMP_SPT0
+# define ADC_SMPR2_SMP_AN1 ADC_SAMPT1_SMP_SPT1
+# define ADC_SMPR2_SMP_AN2 ADC_SAMPT1_SMP_SPT2
+# define ADC_SMPR2_SMP_AN3 ADC_SAMPT1_SMP_SPT3
+# define ADC_SMPR2_SMP_AN4 ADC_SAMPT1_SMP_SPT4
+# define ADC_SMPR2_SMP_AN5 ADC_SAMPT1_SMP_SPT5
+# define ADC_SMPR2_SMP_AN6 ADC_SAMPT1_SMP_SPT6
+# define ADC_SMPR2_SMP_AN7 ADC_SAMPT1_SMP_SPT7
+# define ADC_SMPR2_SMP_AN8 ADC_SAMPT1_SMP_SPT8
+# define ADC_SMPR2_SMP_AN9 ADC_SAMPT1_SMP_SPT9
+
+# define ADC_SMPR1_SMP_AN10 ADC_SAMPT0_SMP_SPT10
+# define ADC_SMPR1_SMP_AN11 ADC_SAMPT0_SMP_SPT11
+# define ADC_SMPR1_SMP_AN12 ADC_SAMPT0_SMP_SPT12
+# define ADC_SMPR1_SMP_AN13 ADC_SAMPT0_SMP_SPT13
+# define ADC_SMPR1_SMP_AN14 ADC_SAMPT0_SMP_SPT14
+# define ADC_SMPR1_SMP_AN15 ADC_SAMPT0_SMP_SPT15
+
+# define ADC_SQR3_SQ1_N ADC_RSQ2_RSQ1_N
+#endif
+
+/* FLASH redefines */
+#if defined(EEPROM_ENABLE)
+# define SR STAT
+# define FLASH_SR_BSY FLASH_STAT_BUSY
+# define FLASH_SR_PGERR FLASH_STAT_PGERR
+# define FLASH_SR_EOP FLASH_STAT_ENDF
+# define FLASH_SR_WRPRTERR FLASH_STAT_WPERR
+# define FLASH_SR_WRPERR FLASH_SR_WRPRTERR
+# define FLASH_OBR_OPTERR FLASH_OBSTAT_OBERR
+# define AR ADDR
+# define CR CTL
+# define FLASH_CR_PER FLASH_CTL_PER
+# define FLASH_CR_STRT FLASH_CTL_START
+# define FLASH_CR_LOCK FLASH_CTL_LK
+# define FLASH_CR_PG FLASH_CTL_PG
+# define KEYR KEY
+#endif
+
+/* Serial USART redefines. */
+#if HAL_USE_SERIAL
+# if !defined(SERIAL_USART_CR1)
+# define SERIAL_USART_CR1 (USART_CTL0_PCEN | USART_CTL0_PM | USART_CTL0_WL) // parity enable, odd parity, 9 bit length
+# endif
+# if !defined(SERIAL_USART_CR2)
+# define SERIAL_USART_CR2 (USART_CTL1_STB_1) // 2 stop bits
+# endif
+# if !defined(SERIAL_USART_CR3)
+# define SERIAL_USART_CR3 0x0
+# endif
+# define USART_CR3_HDSEL USART_CTL2_HDEN
+# define CCR CHCV
+#endif
+
+/* SPI redefines. */
+#if HAL_USE_SPI
+# define SPI_CR1_LSBFIRST SPI_CTL0_LF
+# define SPI_CR1_CPHA SPI_CTL0_CKPH
+# define SPI_CR1_CPOL SPI_CTL0_CKPL
+# define SPI_CR1_BR_0 SPI_CTL0_PSC_0
+# define SPI_CR1_BR_1 SPI_CTL0_PSC_1
+# define SPI_CR1_BR_2 SPI_CTL0_PSC_2
+#endif
diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c
index 38517e06f0..9310a99920 100644
--- a/tmk_core/common/chibios/suspend.c
+++ b/tmk_core/common/chibios/suspend.c
@@ -7,30 +7,12 @@
#include "action.h"
#include "action_util.h"
#include "mousekey.h"
+#include "programmable_button.h"
#include "host.h"
#include "suspend.h"
#include "led.h"
#include "wait.h"
-#ifdef AUDIO_ENABLE
-# include "audio.h"
-#endif /* AUDIO_ENABLE */
-
-#ifdef BACKLIGHT_ENABLE
-# include "backlight.h"
-#endif
-
-#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
-# include "rgblight.h"
-#endif
-
-#ifdef LED_MATRIX_ENABLE
-# include "led_matrix.h"
-#endif
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix.h"
-#endif
-
/** \brief suspend idle
*
* FIXME: needs doc
@@ -40,61 +22,12 @@ void suspend_idle(uint8_t time) {
wait_ms(time);
}
-/** \brief Run keyboard level Power down
- *
- * FIXME: needs doc
- */
-__attribute__((weak)) void suspend_power_down_user(void) {}
-/** \brief Run keyboard level Power down
- *
- * FIXME: needs doc
- */
-__attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); }
-
/** \brief suspend power down
*
* FIXME: needs doc
*/
void suspend_power_down(void) {
-#ifdef BACKLIGHT_ENABLE
- backlight_set(0);
-#endif
-
-#ifdef LED_MATRIX_ENABLE
- led_matrix_task();
-#endif
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_task();
-#endif
-
- // Turn off LED indicators
- uint8_t leds_off = 0;
-#if defined(BACKLIGHT_CAPS_LOCK) && defined(BACKLIGHT_ENABLE)
- if (is_backlight_enabled()) {
- // Don't try to turn off Caps Lock indicator as it is backlight and backlight is already off
- leds_off |= (1 << USB_LED_CAPS_LOCK);
- }
-#endif
- led_set(leds_off);
-
- // TODO: figure out what to power down and how
- // shouldn't power down TPM/FTM if we want a breathing LED
- // also shouldn't power down USB
-#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
- rgblight_suspend();
-#endif
-
-#if defined(LED_MATRIX_ENABLE)
- led_matrix_set_suspend_state(true);
-#endif
-#if defined(RGB_MATRIX_ENABLE)
- rgb_matrix_set_suspend_state(true);
-#endif
-#ifdef AUDIO_ENABLE
- stop_all_notes();
-#endif /* AUDIO_ENABLE */
-
- suspend_power_down_kb();
+ suspend_power_down_quantum();
// on AVR, this enables the watchdog for 15ms (max), and goes to
// SLEEP_MODE_PWR_DOWN
@@ -147,23 +80,13 @@ void suspend_wakeup_init(void) {
#ifdef MOUSEKEY_ENABLE
mousekey_clear();
#endif /* MOUSEKEY_ENABLE */
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ programmable_button_clear();
+#endif /* PROGRAMMABLE_BUTTON_ENABLE */
#ifdef EXTRAKEY_ENABLE
host_system_send(0);
host_consumer_send(0);
#endif /* EXTRAKEY_ENABLE */
-#ifdef BACKLIGHT_ENABLE
- backlight_init();
-#endif /* BACKLIGHT_ENABLE */
- led_set(host_keyboard_leds());
-#if defined(RGBLIGHT_SLEEP) && defined(RGBLIGHT_ENABLE)
- rgblight_wakeup();
-#endif
-#if defined(LED_MATRIX_ENABLE)
- led_matrix_set_suspend_state(false);
-#endif
-#if defined(RGB_MATRIX_ENABLE)
- rgb_matrix_set_suspend_state(false);
-#endif
- suspend_wakeup_init_kb();
+ suspend_wakeup_init_quantum();
}
diff --git a/tmk_core/common/chibios/syscall-fallbacks.c b/tmk_core/common/chibios/syscall-fallbacks.c
index 739017ae1d..4569879c7c 100644
--- a/tmk_core/common/chibios/syscall-fallbacks.c
+++ b/tmk_core/common/chibios/syscall-fallbacks.c
@@ -18,6 +18,12 @@
#include <sys/stat.h>
#include <sys/types.h>
+/* To compile the ChibiOS syscall stubs with picolibc
+ * the _reent struct has to be defined. */
+#if defined(USE_PICOLIBC)
+struct _reent;
+#endif
+
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
__attribute__((weak, used)) int _open_r(struct _reent *r, const char *path, int flag, int m) {
diff --git a/tmk_core/common/host.c b/tmk_core/common/host.c
index f0c396b189..56d4bb0847 100644
--- a/tmk_core/common/host.c
+++ b/tmk_core/common/host.c
@@ -30,8 +30,9 @@ extern keymap_config_t keymap_config;
#endif
static host_driver_t *driver;
-static uint16_t last_system_report = 0;
-static uint16_t last_consumer_report = 0;
+static uint16_t last_system_report = 0;
+static uint16_t last_consumer_report = 0;
+static uint32_t last_programmable_button_report = 0;
void host_set_driver(host_driver_t *d) { driver = d; }
@@ -122,6 +123,16 @@ void host_digitizer_send(digitizer_t *digitizer) {
__attribute__((weak)) void send_digitizer(report_digitizer_t *report) {}
+void host_programmable_button_send(uint32_t report) {
+ if (report == last_programmable_button_report) return;
+ last_programmable_button_report = report;
+
+ if (!driver) return;
+ (*driver->send_programmable_button)(report);
+}
+
uint16_t host_last_system_report(void) { return last_system_report; }
uint16_t host_last_consumer_report(void) { return last_consumer_report; }
+
+uint32_t host_last_programmable_button_report(void) { return last_programmable_button_report; }
diff --git a/tmk_core/common/host.h b/tmk_core/common/host.h
index 2cffef6e15..6b15f0d0c1 100644
--- a/tmk_core/common/host.h
+++ b/tmk_core/common/host.h
@@ -47,9 +47,11 @@ void host_keyboard_send(report_keyboard_t *report);
void host_mouse_send(report_mouse_t *report);
void host_system_send(uint16_t data);
void host_consumer_send(uint16_t data);
+void host_programmable_button_send(uint32_t data);
uint16_t host_last_system_report(void);
uint16_t host_last_consumer_report(void);
+uint32_t host_last_programmable_button_report(void);
#ifdef __cplusplus
}
diff --git a/tmk_core/common/host_driver.h b/tmk_core/common/host_driver.h
index 2aebca043d..affd0dcb34 100644
--- a/tmk_core/common/host_driver.h
+++ b/tmk_core/common/host_driver.h
@@ -29,6 +29,7 @@ typedef struct {
void (*send_mouse)(report_mouse_t *);
void (*send_system)(uint16_t);
void (*send_consumer)(uint16_t);
+ void (*send_programmable_button)(uint32_t);
} host_driver_t;
void send_digitizer(report_digitizer_t *report); \ No newline at end of file
diff --git a/tmk_core/common/report.h b/tmk_core/common/report.h
index f2223e8063..1adc892f3b 100644
--- a/tmk_core/common/report.h
+++ b/tmk_core/common/report.h
@@ -29,6 +29,7 @@ enum hid_report_ids {
REPORT_ID_MOUSE,
REPORT_ID_SYSTEM,
REPORT_ID_CONSUMER,
+ REPORT_ID_PROGRAMMABLE_BUTTON,
REPORT_ID_NKRO,
REPORT_ID_JOYSTICK,
REPORT_ID_DIGITIZER
@@ -196,6 +197,11 @@ typedef struct {
} __attribute__((packed)) report_extra_t;
typedef struct {
+ uint8_t report_id;
+ uint32_t usage;
+} __attribute__((packed)) report_programmable_button_t;
+
+typedef struct {
#ifdef MOUSE_SHARED_EP
uint8_t report_id;
#endif
diff --git a/tmk_core/common/suspend.h b/tmk_core/common/suspend.h
index 95845e4b63..081735f90e 100644
--- a/tmk_core/common/suspend.h
+++ b/tmk_core/common/suspend.h
@@ -10,8 +10,10 @@ void suspend_wakeup_init(void);
void suspend_wakeup_init_user(void);
void suspend_wakeup_init_kb(void);
+void suspend_wakeup_init_quantum(void);
void suspend_power_down_user(void);
void suspend_power_down_kb(void);
+void suspend_power_down_quantum(void);
#ifndef USB_SUSPEND_WAKEUP_DELAY
# define USB_SUSPEND_WAKEUP_DELAY 0
diff --git a/tmk_core/common/sync_timer.c b/tmk_core/common/sync_timer.c
index 68b92d8b43..de24b463b6 100644
--- a/tmk_core/common/sync_timer.c
+++ b/tmk_core/common/sync_timer.c
@@ -26,7 +26,7 @@ SOFTWARE.
#include "sync_timer.h"
#include "keyboard.h"
-#if (defined(SPLIT_KEYBOARD) || defined(SERIAL_LINK_ENABLE)) && !defined(DISABLE_SYNC_TIMER)
+#if defined(SPLIT_KEYBOARD) && !defined(DISABLE_SYNC_TIMER)
volatile int32_t sync_timer_ms;
void sync_timer_init(void) { sync_timer_ms = 0; }
diff --git a/tmk_core/common/sync_timer.h b/tmk_core/common/sync_timer.h
index 744e2b50d5..9ddef45bb2 100644
--- a/tmk_core/common/sync_timer.h
+++ b/tmk_core/common/sync_timer.h
@@ -32,7 +32,7 @@ SOFTWARE.
extern "C" {
#endif
-#if (defined(SPLIT_KEYBOARD) || defined(SERIAL_LINK_ENABLE)) && !defined(DISABLE_SYNC_TIMER)
+#if defined(SPLIT_KEYBOARD) && !defined(DISABLE_SYNC_TIMER)
void sync_timer_init(void);
void sync_timer_update(uint32_t time);
uint16_t sync_timer_read(void);
diff --git a/tmk_core/common/test/rules.mk b/tmk_core/common/test/rules.mk
index 48632a095b..73d2302da7 100644
--- a/tmk_core/common/test/rules.mk
+++ b/tmk_core/common/test/rules.mk
@@ -16,6 +16,7 @@ eeprom_stm32_tiny_INC := $(eeprom_stm32_INC)
eeprom_stm32_large_INC := $(eeprom_stm32_INC)
eeprom_stm32_SRC := \
+ $(TOP_DIR)/drivers/eeprom/eeprom_driver.c \
$(TMK_PATH)/common/test/eeprom_stm32_tests.cpp \
$(TMK_PATH)/common/test/flash_stm32_mock.c \
$(TMK_PATH)/common/chibios/eeprom_stm32.c
diff --git a/tmk_core/native.mk b/tmk_core/native.mk
index f609fd0e6f..eb2424ec5c 100644
--- a/tmk_core/native.mk
+++ b/tmk_core/native.mk
@@ -1,7 +1,7 @@
SYSTEM_TYPE := $(shell gcc -dumpmachine)
GCC_VERSION := $(shell gcc --version 2>/dev/null)
-CC = gcc
+CC = $(CC_PREFIX) gcc
OBJCOPY =
OBJDUMP =
SIZE =
diff --git a/tmk_core/protocol.mk b/tmk_core/protocol.mk
index b61f2f5463..8aa063c911 100644
--- a/tmk_core/protocol.mk
+++ b/tmk_core/protocol.mk
@@ -1,30 +1,5 @@
PROTOCOL_DIR = protocol
-ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes)
- SRC += $(PROTOCOL_DIR)/ps2_mouse.c
- OPT_DEFS += -DPS2_MOUSE_ENABLE
- OPT_DEFS += -DMOUSE_ENABLE
-endif
-
-ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes)
- SRC += protocol/ps2_busywait.c
- SRC += protocol/ps2_io_avr.c
- OPT_DEFS += -DPS2_USE_BUSYWAIT
-endif
-
-ifeq ($(strip $(PS2_USE_INT)), yes)
- SRC += protocol/ps2_interrupt.c
- SRC += protocol/ps2_io_$(PLATFORM_KEY).c
- OPT_DEFS += -DPS2_USE_INT
-endif
-
-ifeq ($(strip $(PS2_USE_USART)), yes)
- SRC += protocol/ps2_usart.c
- SRC += protocol/ps2_io_$(PLATFORM_KEY).c
- OPT_DEFS += -DPS2_USE_USART
-endif
-
-
ifeq ($(strip $(SERIAL_MOUSE_MICROSOFT_ENABLE)), yes)
SRC += $(PROTOCOL_DIR)/serial_mouse_microsoft.c
OPT_DEFS += -DSERIAL_MOUSE_ENABLE -DSERIAL_MOUSE_MICROSOFT \
@@ -45,15 +20,6 @@ ifeq ($(strip $(SERIAL_MOUSE_USE_UART)), yes)
SRC += $(PROTOCOL_DIR)/serial_uart.c
endif
-ifeq ($(strip $(ADB_MOUSE_ENABLE)), yes)
- OPT_DEFS += -DADB_MOUSE_ENABLE -DMOUSE_ENABLE
-endif
-
-ifeq ($(strip $(XT_ENABLE)), yes)
- SRC += $(PROTOCOL_DIR)/xt_interrupt.c
- OPT_DEFS += -DXT_ENABLE
-endif
-
ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
diff --git a/tmk_core/protocol/arm_atsam.mk b/tmk_core/protocol/arm_atsam.mk
index 5bb45d658e..ffd1fa9f50 100644
--- a/tmk_core/protocol/arm_atsam.mk
+++ b/tmk_core/protocol/arm_atsam.mk
@@ -9,7 +9,8 @@ ifeq ($(RGB_MATRIX_DRIVER),custom)
SRC += $(ARM_ATSAM_DIR)/md_rgb_matrix.c
endif
SRC += $(ARM_ATSAM_DIR)/main_arm_atsam.c
-SRC += $(ARM_ATSAM_DIR)/spi.c
+SRC += $(ARM_ATSAM_DIR)/shift_register.c
+SRC += $(ARM_ATSAM_DIR)/spi_master.c
SRC += $(ARM_ATSAM_DIR)/startup.c
SRC += $(ARM_ATSAM_DIR)/usb/main_usb.c
@@ -19,10 +20,12 @@ SRC += $(ARM_ATSAM_DIR)/usb/udi_hid.c
SRC += $(ARM_ATSAM_DIR)/usb/udi_hid_kbd.c
SRC += $(ARM_ATSAM_DIR)/usb/udi_hid_kbd_desc.c
SRC += $(ARM_ATSAM_DIR)/usb/ui.c
-SRC += $(ARM_ATSAM_DIR)/usb/usb2422.c
SRC += $(ARM_ATSAM_DIR)/usb/usb.c
SRC += $(ARM_ATSAM_DIR)/usb/usb_device_udd.c
+SRC += $(ARM_ATSAM_DIR)/usb/usb_hub.c
SRC += $(ARM_ATSAM_DIR)/usb/usb_util.c
+SRC += $(DRIVER_PATH)/usb2422.c
+
# Search Path
VPATH += $(TMK_DIR)/$(ARM_ATSAM_DIR)
diff --git a/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h b/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h
index d126c66e7d..e1749f872d 100644
--- a/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h
+++ b/tmk_core/protocol/arm_atsam/arm_atsam_protocol.h
@@ -27,9 +27,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "wait.h"
#include "adc.h"
#include "i2c_master.h"
-#include "spi.h"
+#include "shift_register.h"
-#include "./usb/usb2422.h"
+#include "./usb/usb_hub.h"
#ifndef MD_BOOTLOADER
diff --git a/tmk_core/protocol/arm_atsam/i2c_master.c b/tmk_core/protocol/arm_atsam/i2c_master.c
index dda2f85b00..af046625f4 100644
--- a/tmk_core/protocol/arm_atsam/i2c_master.c
+++ b/tmk_core/protocol/arm_atsam/i2c_master.c
@@ -564,4 +564,23 @@ uint8_t i2c_led_q_run(void) {
return 1;
}
+
+__attribute__((weak)) void i2c_init(void) {
+ static bool is_initialised = false;
+ if (!is_initialised) {
+ is_initialised = true;
+
+ i2c0_init();
+ }
+}
+
+i2c_status_t i2c_transmit(uint8_t address, const uint8_t *data, uint16_t length, uint16_t timeout) {
+ uint8_t ret = i2c0_transmit(address, (uint8_t *)data, length, timeout);
+ SERCOM0->I2CM.CTRLB.bit.CMD = 0x03;
+ while (SERCOM0->I2CM.SYNCBUSY.bit.SYSOP) {
+ DBGC(DC_USB_WRITE2422_BLOCK_SYNC_SYSOP);
+ }
+ return ret ? I2C_STATUS_SUCCESS : I2C_STATUS_ERROR;
+}
+
#endif // !defined(MD_BOOTLOADER) && defined(RGB_MATRIX_ENABLE)
diff --git a/tmk_core/protocol/arm_atsam/i2c_master.h b/tmk_core/protocol/arm_atsam/i2c_master.h
index 68773f213f..e11235d447 100644
--- a/tmk_core/protocol/arm_atsam/i2c_master.h
+++ b/tmk_core/protocol/arm_atsam/i2c_master.h
@@ -101,4 +101,13 @@ void i2c0_init(void);
uint8_t i2c0_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout);
void i2c0_stop(void);
+// Terrible interface compatiblity...
+#define I2C_STATUS_SUCCESS (0)
+#define I2C_STATUS_ERROR (-1)
+
+typedef int16_t i2c_status_t;
+
+void i2c_init(void);
+i2c_status_t i2c_transmit(uint8_t address, const uint8_t *data, uint16_t length, uint16_t timeout);
+
#endif // _I2C_MASTER_H_
diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
index 858b4cd9fc..1df5112ed8 100644
--- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c
+++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c
@@ -296,7 +296,7 @@ int main(void) {
matrix_init();
- USB2422_init();
+ USB_Hub_init();
DBGC(DC_MAIN_UDC_START_BEGIN);
udc_start();
@@ -306,7 +306,7 @@ int main(void) {
CDC_init();
DBGC(DC_MAIN_CDC_INIT_COMPLETE);
- while (USB2422_Port_Detect_Init() == 0) {
+ while (USB_Hub_Port_Detect_Init() == 0) {
}
DBG_LED_OFF;
diff --git a/tmk_core/protocol/arm_atsam/shift_register.c b/tmk_core/protocol/arm_atsam/shift_register.c
new file mode 100644
index 0000000000..8d63af1b59
--- /dev/null
+++ b/tmk_core/protocol/arm_atsam/shift_register.c
@@ -0,0 +1,118 @@
+/*
+Copyright 2018 Massdrop Inc.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "arm_atsam_protocol.h"
+
+#include "spi_master.h"
+#include "wait.h"
+#include "gpio.h"
+
+// #define SR_USE_BITBANG
+
+// Bodge for when spi_master is not available
+#ifdef SR_USE_BITBANG
+# define CLOCK_DELAY 10
+
+void shift_init_impl(void) {
+ setPinOutput(SR_EXP_RCLK_PIN);
+ setPinOutput(SPI_DATAOUT_PIN);
+ setPinOutput(SPI_SCLK_PIN);
+}
+
+void shift_out_impl(const uint8_t *data, uint16_t length) {
+ writePinLow(SR_EXP_RCLK_PIN);
+ for (uint16_t i = 0; i < length; i++) {
+ uint8_t val = data[i];
+
+ // shift out lsb first
+ for (uint8_t bit = 0; bit < 8; bit++) {
+ writePin(SPI_DATAOUT_PIN, !!(val & (1 << bit)));
+ writePin(SPI_SCLK_PIN, true);
+ wait_us(CLOCK_DELAY);
+
+ writePin(SPI_SCLK_PIN, false);
+ wait_us(CLOCK_DELAY);
+ }
+ }
+ writePinHigh(SR_EXP_RCLK_PIN);
+ return SPI_STATUS_SUCCESS;
+}
+
+#else
+
+void shift_init_impl(void) { spi_init(); }
+
+void shift_out_impl(const uint8_t *data, uint16_t length) {
+ spi_start(SR_EXP_RCLK_PIN, true, 0, 0);
+
+ spi_transmit(data, length);
+
+ spi_stop();
+}
+#endif
+
+// ***************************************************************
+
+void shift_out(const uint8_t *data, uint16_t length) { shift_out_impl(data, length); }
+
+void shift_enable(void) {
+ setPinOutput(SR_EXP_OE_PIN);
+ writePinLow(SR_EXP_OE_PIN);
+}
+
+void shift_disable(void) {
+ setPinOutput(SR_EXP_OE_PIN);
+ writePinHigh(SR_EXP_OE_PIN);
+}
+
+void shift_init(void) {
+ shift_disable();
+ shift_init_impl();
+}
+
+// ***************************************************************
+
+sr_exp_t sr_exp_data;
+
+void SR_EXP_WriteData(void) {
+ uint8_t data[2] = {
+ sr_exp_data.reg & 0xFF, // Shift in bits 7-0
+ (sr_exp_data.reg >> 8) & 0xFF, // Shift in bits 15-8
+ };
+ shift_out(data, 2);
+}
+
+void SR_EXP_Init(void) {
+ shift_init();
+
+ sr_exp_data.reg = 0;
+ sr_exp_data.bit.HUB_CONNECT = 0;
+ sr_exp_data.bit.HUB_RESET_N = 0;
+ sr_exp_data.bit.S_UP = 0;
+ sr_exp_data.bit.E_UP_N = 1;
+ sr_exp_data.bit.S_DN1 = 1;
+ sr_exp_data.bit.E_DN1_N = 1;
+ sr_exp_data.bit.E_VBUS_1 = 0;
+ sr_exp_data.bit.E_VBUS_2 = 0;
+ sr_exp_data.bit.SRC_1 = 1;
+ sr_exp_data.bit.SRC_2 = 1;
+ sr_exp_data.bit.IRST = 1;
+ sr_exp_data.bit.SDB_N = 0;
+ SR_EXP_WriteData();
+
+ shift_enable();
+}
diff --git a/tmk_core/protocol/arm_atsam/spi.h b/tmk_core/protocol/arm_atsam/shift_register.h
index dcd45f31af..56a8c7f717 100644
--- a/tmk_core/protocol/arm_atsam/spi.h
+++ b/tmk_core/protocol/arm_atsam/shift_register.h
@@ -15,28 +15,9 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _SPI_H_
-#define _SPI_H_
+#pragma once
-/* Macros for Shift Register control */
-#define SR_EXP_RCLK_LO PORT->Group[SR_EXP_RCLK_PORT].OUTCLR.reg = (1 << SR_EXP_RCLK_PIN)
-#define SR_EXP_RCLK_HI PORT->Group[SR_EXP_RCLK_PORT].OUTSET.reg = (1 << SR_EXP_RCLK_PIN)
-#define SR_EXP_OE_N_ENA PORT->Group[SR_EXP_OE_N_PORT].OUTCLR.reg = (1 << SR_EXP_OE_N_PIN)
-#define SR_EXP_OE_N_DIS PORT->Group[SR_EXP_OE_N_PORT].OUTSET.reg = (1 << SR_EXP_OE_N_PIN)
-
-/* Determine bits to set for mux selection */
-#if SR_EXP_DATAOUT_PIN % 2 == 0
-# define SR_EXP_DATAOUT_MUX_SEL PMUXE
-#else
-# define SR_EXP_DATAOUT_MUX_SEL PMUXO
-#endif
-
-/* Determine bits to set for mux selection */
-#if SR_EXP_SCLK_PIN % 2 == 0
-# define SR_EXP_SCLK_MUX_SEL PMUXE
-#else
-# define SR_EXP_SCLK_MUX_SEL PMUXO
-#endif
+#include <stdint.h>
/* Data structure to define Shift Register output expander hardware */
/* This structure gets shifted into registers LSB first */
@@ -66,5 +47,3 @@ extern sr_exp_t sr_exp_data;
void SR_EXP_WriteData(void);
void SR_EXP_Init(void);
-
-#endif //_SPI_H_
diff --git a/tmk_core/protocol/arm_atsam/spi.c b/tmk_core/protocol/arm_atsam/spi.c
deleted file mode 100644
index 3b118bc1f1..0000000000
--- a/tmk_core/protocol/arm_atsam/spi.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-Copyright 2018 Massdrop Inc.
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-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 "arm_atsam_protocol.h"
-
-sr_exp_t sr_exp_data;
-
-void SR_EXP_WriteData(void) {
- SR_EXP_RCLK_LO;
-
- while (!(SR_EXP_SERCOM->SPI.INTFLAG.bit.DRE)) {
- DBGC(DC_SPI_WRITE_DRE);
- }
-
- SR_EXP_SERCOM->SPI.DATA.bit.DATA = sr_exp_data.reg & 0xFF; // Shift in bits 7-0
- while (!(SR_EXP_SERCOM->SPI.INTFLAG.bit.TXC)) {
- DBGC(DC_SPI_WRITE_TXC_1);
- }
-
- SR_EXP_SERCOM->SPI.DATA.bit.DATA = (sr_exp_data.reg >> 8) & 0xFF; // Shift in bits 15-8
- while (!(SR_EXP_SERCOM->SPI.INTFLAG.bit.TXC)) {
- DBGC(DC_SPI_WRITE_TXC_2);
- }
-
- SR_EXP_RCLK_HI;
-}
-
-void SR_EXP_Init(void) {
- DBGC(DC_SPI_INIT_BEGIN);
-
- CLK_set_spi_freq(CHAN_SERCOM_SPI, FREQ_SPI_DEFAULT);
-
- // Set up MCU Shift Register pins
- PORT->Group[SR_EXP_RCLK_PORT].DIRSET.reg = (1 << SR_EXP_RCLK_PIN);
- PORT->Group[SR_EXP_OE_N_PORT].DIRSET.reg = (1 << SR_EXP_OE_N_PIN);
-
- // Set up MCU SPI pins
- PORT->Group[SR_EXP_DATAOUT_PORT].PMUX[SR_EXP_DATAOUT_PIN / 2].bit.SR_EXP_DATAOUT_MUX_SEL = SR_EXP_DATAOUT_MUX; // MUX select for sercom
- PORT->Group[SR_EXP_SCLK_PORT].PMUX[SR_EXP_SCLK_PIN / 2].bit.SR_EXP_SCLK_MUX_SEL = SR_EXP_SCLK_MUX; // MUX select for sercom
- PORT->Group[SR_EXP_DATAOUT_PORT].PINCFG[SR_EXP_DATAOUT_PIN].bit.PMUXEN = 1; // MUX Enable
- PORT->Group[SR_EXP_SCLK_PORT].PINCFG[SR_EXP_SCLK_PIN].bit.PMUXEN = 1; // MUX Enable
-
- // Initialize Shift Register
- SR_EXP_OE_N_DIS;
- SR_EXP_RCLK_HI;
-
- SR_EXP_SERCOM->SPI.CTRLA.bit.DORD = 1; // Data Order - LSB is transferred first
- SR_EXP_SERCOM->SPI.CTRLA.bit.CPOL = 1; // Clock Polarity - SCK high when idle. Leading edge of cycle is falling. Trailing rising.
- SR_EXP_SERCOM->SPI.CTRLA.bit.CPHA = 1; // Clock Phase - Leading Edge Falling, change, Trailing Edge - Rising, sample
- SR_EXP_SERCOM->SPI.CTRLA.bit.DIPO = 3; // Data In Pinout - SERCOM PAD[3] is used as data input (Configure away from DOPO. Not using input.)
- SR_EXP_SERCOM->SPI.CTRLA.bit.DOPO = 0; // Data Output PAD[0], Serial Clock PAD[1]
- SR_EXP_SERCOM->SPI.CTRLA.bit.MODE = 3; // Operating Mode - Master operation
-
- SR_EXP_SERCOM->SPI.CTRLA.bit.ENABLE = 1; // Enable - Peripheral is enabled or being enabled
- while (SR_EXP_SERCOM->SPI.SYNCBUSY.bit.ENABLE) {
- DBGC(DC_SPI_SYNC_ENABLING);
- }
-
- sr_exp_data.reg = 0;
- sr_exp_data.bit.HUB_CONNECT = 0;
- sr_exp_data.bit.HUB_RESET_N = 0;
- sr_exp_data.bit.S_UP = 0;
- sr_exp_data.bit.E_UP_N = 1;
- sr_exp_data.bit.S_DN1 = 1;
- sr_exp_data.bit.E_DN1_N = 1;
- sr_exp_data.bit.E_VBUS_1 = 0;
- sr_exp_data.bit.E_VBUS_2 = 0;
- sr_exp_data.bit.SRC_1 = 1;
- sr_exp_data.bit.SRC_2 = 1;
- sr_exp_data.bit.IRST = 1;
- sr_exp_data.bit.SDB_N = 0;
- SR_EXP_WriteData();
-
- // Enable Shift Register output
- SR_EXP_OE_N_ENA;
-
- DBGC(DC_SPI_INIT_COMPLETE);
-}
diff --git a/tmk_core/protocol/arm_atsam/spi_master.c b/tmk_core/protocol/arm_atsam/spi_master.c
new file mode 100644
index 0000000000..9781d45b1e
--- /dev/null
+++ b/tmk_core/protocol/arm_atsam/spi_master.c
@@ -0,0 +1,109 @@
+/*
+Copyright 2018 Massdrop Inc.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "arm_atsam_protocol.h"
+#include "spi_master.h"
+#include "gpio.h"
+
+/* Determine bits to set for mux selection */
+#if SPI_DATAOUT_PIN % 2 == 0
+# define SPI_DATAOUT_MUX_SEL PMUXE
+#else
+# define SPI_DATAOUT_MUX_SEL PMUXO
+#endif
+
+/* Determine bits to set for mux selection */
+#if SPI_SCLK_PIN % 2 == 0
+# define SPI_SCLK_MUX_SEL PMUXE
+#else
+# define SPI_SCLK_MUX_SEL PMUXO
+#endif
+
+static pin_t currentSelectPin = NO_PIN;
+
+__attribute__((weak)) void spi_init(void) {
+ static bool is_initialised = false;
+ if (!is_initialised) {
+ is_initialised = true;
+
+ DBGC(DC_SPI_INIT_BEGIN);
+
+ CLK_set_spi_freq(CHAN_SERCOM_SPI, FREQ_SPI_DEFAULT);
+
+ // Set up MCU SPI pins
+ PORT->Group[SAMD_PORT(SPI_DATAOUT_PIN)].PMUX[SAMD_PIN(SPI_DATAOUT_PIN) / 2].bit.SPI_DATAOUT_MUX_SEL = SPI_DATAOUT_MUX; // MUX select for sercom
+ PORT->Group[SAMD_PORT(SPI_SCLK_PIN)].PMUX[SAMD_PIN(SPI_SCLK_PIN) / 2].bit.SPI_SCLK_MUX_SEL = SPI_SCLK_MUX; // MUX select for sercom
+ PORT->Group[SAMD_PORT(SPI_DATAOUT_PIN)].PINCFG[SAMD_PIN(SPI_DATAOUT_PIN)].bit.PMUXEN = 1; // MUX Enable
+ PORT->Group[SAMD_PORT(SPI_SCLK_PIN)].PINCFG[SAMD_PIN(SPI_SCLK_PIN)].bit.PMUXEN = 1; // MUX Enable
+
+ DBGC(DC_SPI_INIT_COMPLETE);
+ }
+}
+
+bool spi_start(pin_t csPin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
+ if (currentSelectPin != NO_PIN || csPin == NO_PIN) {
+ return false;
+ }
+
+ currentSelectPin = csPin;
+ setPinOutput(currentSelectPin);
+ writePinLow(currentSelectPin);
+
+ SPI_SERCOM->SPI.CTRLA.bit.DORD = lsbFirst; // Data Order - LSB is transferred first
+ SPI_SERCOM->SPI.CTRLA.bit.CPOL = 1; // Clock Polarity - SCK high when idle. Leading edge of cycle is falling. Trailing rising.
+ SPI_SERCOM->SPI.CTRLA.bit.CPHA = 1; // Clock Phase - Leading Edge Falling, change, Trailing Edge - Rising, sample
+ SPI_SERCOM->SPI.CTRLA.bit.DIPO = 3; // Data In Pinout - SERCOM PAD[3] is used as data input (Configure away from DOPO. Not using input.)
+ SPI_SERCOM->SPI.CTRLA.bit.DOPO = 0; // Data Output PAD[0], Serial Clock PAD[1]
+ SPI_SERCOM->SPI.CTRLA.bit.MODE = 3; // Operating Mode - Master operation
+
+ SPI_SERCOM->SPI.CTRLA.bit.ENABLE = 1; // Enable - Peripheral is enabled or being enabled
+ while (SPI_SERCOM->SPI.SYNCBUSY.bit.ENABLE) {
+ DBGC(DC_SPI_SYNC_ENABLING);
+ }
+ return true;
+}
+
+spi_status_t spi_transmit(const uint8_t *data, uint16_t length) {
+ while (!(SPI_SERCOM->SPI.INTFLAG.bit.DRE)) {
+ DBGC(DC_SPI_WRITE_DRE);
+ }
+
+ for (uint16_t i = 0; i < length; i++) {
+ SPI_SERCOM->SPI.DATA.bit.DATA = data[i];
+ while (!(SPI_SERCOM->SPI.INTFLAG.bit.TXC)) {
+ DBGC(DC_SPI_WRITE_TXC_1);
+ }
+ }
+
+ return SPI_STATUS_SUCCESS;
+}
+
+void spi_stop(void) {
+ if (currentSelectPin != NO_PIN) {
+ setPinOutput(currentSelectPin);
+ writePinHigh(currentSelectPin);
+ currentSelectPin = NO_PIN;
+ }
+}
+
+// Not implemented yet....
+
+spi_status_t spi_write(uint8_t data);
+
+spi_status_t spi_read(void);
+
+spi_status_t spi_receive(uint8_t *data, uint16_t length);
diff --git a/tmk_core/protocol/arm_atsam/spi_master.h b/tmk_core/protocol/arm_atsam/spi_master.h
new file mode 100644
index 0000000000..26c55128be
--- /dev/null
+++ b/tmk_core/protocol/arm_atsam/spi_master.h
@@ -0,0 +1,48 @@
+/* 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 <stdbool.h>
+
+typedef int16_t spi_status_t;
+
+#define SPI_STATUS_SUCCESS (0)
+#define SPI_STATUS_ERROR (-1)
+#define SPI_STATUS_TIMEOUT (-2)
+
+#define SPI_TIMEOUT_IMMEDIATE (0)
+#define SPI_TIMEOUT_INFINITE (0xFFFF)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+void spi_init(void);
+
+bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor);
+
+spi_status_t spi_write(uint8_t data);
+
+spi_status_t spi_read(void);
+
+spi_status_t spi_transmit(const uint8_t *data, uint16_t length);
+
+spi_status_t spi_receive(uint8_t *data, uint16_t length);
+
+void spi_stop(void);
+#ifdef __cplusplus
+}
+#endif
diff --git a/tmk_core/protocol/arm_atsam/usb/usb2422.c b/tmk_core/protocol/arm_atsam/usb/usb_hub.c
index a878cb6b7c..c5fd284aab 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb2422.c
+++ b/tmk_core/protocol/arm_atsam/usb/usb_hub.c
@@ -16,25 +16,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "arm_atsam_protocol.h"
+#include "drivers/usb2422.h"
#include <string.h>
-Usb2422 USB2422_shadow;
-unsigned char i2c0_buf[34];
-
-const uint16_t MFRNAME[] = {'M', 'a', 's', 's', 'd', 'r', 'o', 'p', ' ', 'I', 'n', 'c', '.'}; // Massdrop Inc.
-const uint16_t PRDNAME[] = {'M', 'a', 's', 's', 'd', 'r', 'o', 'p', ' ', 'H', 'u', 'b'}; // Massdrop Hub
-#ifndef MD_BOOTLOADER
-// Serial number reported stops before first found space character or at last found character
-const uint16_t SERNAME[] = {'U', 'n', 'a', 'v', 'a', 'i', 'l', 'a', 'b', 'l', 'e'}; // Unavailable
-#else
-// In production, this field is found, modified, and offset noted as the last 32-bit word in the bootloader space
-// The offset allows the application to use the factory programmed serial (which may differ from the physical serial label)
-// Serial number reported stops before first found space character or when max size is reached
-__attribute__((__aligned__(4))) const uint16_t SERNAME[BOOTLOADER_SERIAL_MAX_SIZE] = {'M', 'D', 'H', 'U', 'B', 'B', 'O', 'O', 'T', 'L', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'};
-// NOTE: Serial replacer will not write a string longer than given here as a precaution, so give enough
-// space as needed and adjust BOOTLOADER_SERIAL_MAX_SIZE to match amount given
-#endif // MD_BOOTLOADER
-
uint8_t usb_host_port;
#ifndef MD_BOOTLOADER
@@ -47,29 +31,7 @@ uint8_t usb_gcr_auto;
uint16_t adc_extra;
-void USB_write2422_block(void) {
- unsigned char *dest = i2c0_buf;
- unsigned char *src;
- unsigned char *base = (unsigned char *)&USB2422_shadow;
-
- DBGC(DC_USB_WRITE2422_BLOCK_BEGIN);
-
- for (src = base; src < base + 256; src += 32) {
- dest[0] = src - base;
- dest[1] = 32;
- memcpy(&dest[2], src, 32);
- i2c0_transmit(USB2422_ADDR, dest, 34, 50000);
- SERCOM0->I2CM.CTRLB.bit.CMD = 0x03;
- while (SERCOM0->I2CM.SYNCBUSY.bit.SYSOP) {
- DBGC(DC_USB_WRITE2422_BLOCK_SYNC_SYSOP);
- }
- wait_us(100);
- }
-
- DBGC(DC_USB_WRITE2422_BLOCK_COMPLETE);
-}
-
-void USB2422_init(void) {
+void USB_Hub_init(void) {
Gclk * pgclk = GCLK;
Mclk * pmclk = MCLK;
Port * pport = PORT;
@@ -147,9 +109,7 @@ void USB2422_init(void) {
pusb->DEVICE.QOSCTRL.bit.DQOS = 2;
pusb->DEVICE.QOSCTRL.bit.CQOS = 2;
- pport->Group[USB2422_HUB_ACTIVE_GROUP].PINCFG[USB2422_HUB_ACTIVE_PIN].bit.INEN = 1;
-
- i2c0_init(); // IC2 clk must be high at USB2422 reset release time to signal SMB configuration
+ USB2422_init();
sr_exp_data.bit.HUB_CONNECT = 1; // connect signal
sr_exp_data.bit.HUB_RESET_N = 1; // reset high
@@ -181,62 +141,16 @@ void USB_reset(void) {
}
void USB_configure(void) {
- Usb2422 *pusb2422 = &USB2422_shadow;
- memset(pusb2422, 0, sizeof(Usb2422));
-
- uint16_t *serial_use = (uint16_t *)SERNAME; // Default to use SERNAME from this file
- uint8_t serial_length = sizeof(SERNAME) / sizeof(uint16_t); // Default to use SERNAME from this file
-#ifndef MD_BOOTLOADER
- uint32_t serial_ptrloc = (uint32_t)&_srom - 4;
-#else // MD_BOOTLOADER
- uint32_t serial_ptrloc = (uint32_t)&_erom - 4;
-#endif // MD_BOOTLOADER
- uint32_t serial_address = *(uint32_t *)serial_ptrloc; // Address of bootloader's serial number if available
-
DBGC(DC_USB_CONFIGURE_BEGIN);
- if (serial_address != 0xFFFFFFFF && serial_address < serial_ptrloc) // Check for factory programmed serial address
- {
- if ((serial_address & 0xFF) % 4 == 0) // Check alignment
- {
- serial_use = (uint16_t *)(serial_address);
- serial_length = 0;
- while ((*(serial_use + serial_length) > 32 && *(serial_use + serial_length) < 127) && serial_length < BOOTLOADER_SERIAL_MAX_SIZE) {
- serial_length++;
- DBGC(DC_USB_CONFIGURE_GET_SERIAL);
- }
- }
- }
-
- // configure Usb2422 registers
- pusb2422->VID.reg = 0x04D8; // from Microchip 4/19/2018
- pusb2422->PID.reg = 0xEEC5; // from Microchip 4/19/2018 = Massdrop, Inc. USB Hub
- pusb2422->DID.reg = 0x0101; // BCD 01.01
- pusb2422->CFG1.bit.SELF_BUS_PWR = 1; // self powered for now
- pusb2422->CFG1.bit.HS_DISABLE = 1; // full or high speed
- // pusb2422->CFG2.bit.COMPOUND = 0; // compound device
- pusb2422->CFG3.bit.STRING_EN = 1; // strings enabled
- // pusb2422->NRD.bit.PORT2_NR = 0; // MCU is non-removable
- pusb2422->MAXPB.reg = 20; // 0mA
- pusb2422->HCMCB.reg = 20; // 0mA
- pusb2422->MFRSL.reg = sizeof(MFRNAME) / sizeof(uint16_t);
- pusb2422->PRDSL.reg = sizeof(PRDNAME) / sizeof(uint16_t);
- pusb2422->SERSL.reg = serial_length;
- memcpy(pusb2422->MFRSTR, MFRNAME, sizeof(MFRNAME));
- memcpy(pusb2422->PRDSTR, PRDNAME, sizeof(PRDNAME));
- memcpy(pusb2422->SERSTR, serial_use, serial_length * sizeof(uint16_t));
- // pusb2422->BOOSTUP.bit.BOOST=3; //upstream port
- // pusb2422->BOOSTDOWN.bit.BOOST1=0; // extra port
- // pusb2422->BOOSTDOWN.bit.BOOST2=2; //MCU is close
- pusb2422->STCD.bit.USB_ATTACH = 1;
- USB_write2422_block();
+ USB2422_configure();
adc_extra = 0;
DBGC(DC_USB_CONFIGURE_COMPLETE);
}
-uint16_t USB_active(void) { return (PORT->Group[USB2422_HUB_ACTIVE_GROUP].IN.reg & (1 << USB2422_HUB_ACTIVE_PIN)) != 0; }
+uint16_t USB_active(void) { return USB2422_active(); }
void USB_set_host_by_voltage(void) {
// UP is upstream device (HOST)
@@ -314,7 +228,7 @@ void USB_set_host_by_voltage(void) {
DBGC(DC_USB_SET_HOST_BY_VOLTAGE_COMPLETE);
}
-uint8_t USB2422_Port_Detect_Init(void) {
+uint8_t USB_Hub_Port_Detect_Init(void) {
uint32_t port_detect_retry_ms;
uint32_t tmod;
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_hub.h b/tmk_core/protocol/arm_atsam/usb/usb_hub.h
new file mode 100644
index 0000000000..76b1e0a326
--- /dev/null
+++ b/tmk_core/protocol/arm_atsam/usb/usb_hub.h
@@ -0,0 +1,51 @@
+/*
+Copyright 2018 Massdrop Inc.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _USB2422_H_
+#define _USB2422_H_
+
+#define REV_USB2422 0x100
+
+#define PORT_DETECT_RETRY_INTERVAL 2000
+
+#define USB_EXTRA_ADC_THRESHOLD 900
+
+#define USB_EXTRA_STATE_DISABLED 0
+#define USB_EXTRA_STATE_ENABLED 1
+#define USB_EXTRA_STATE_UNKNOWN 2
+#define USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG 3
+
+#define USB_HOST_PORT_1 0
+#define USB_HOST_PORT_2 1
+#define USB_HOST_PORT_UNKNOWN 2
+
+extern uint8_t usb_host_port;
+extern uint8_t usb_extra_state;
+extern uint8_t usb_extra_manual;
+extern uint8_t usb_gcr_auto;
+
+void USB_Hub_init(void);
+uint8_t USB_Hub_Port_Detect_Init(void);
+void USB_reset(void);
+void USB_configure(void);
+uint16_t USB_active(void);
+void USB_set_host_by_voltage(void);
+uint16_t adc_get(uint8_t muxpos);
+void USB_HandleExtraDevice(void);
+void USB_ExtraSetState(uint8_t state);
+
+#endif //_USB2422_H_
diff --git a/tmk_core/protocol/chibios/chibios.c b/tmk_core/protocol/chibios/chibios.c
index 78a2e3fcbb..c860328c80 100644
--- a/tmk_core/protocol/chibios/chibios.c
+++ b/tmk_core/protocol/chibios/chibios.c
@@ -27,6 +27,7 @@
#include "keyboard.h"
#include "action.h"
#include "action_util.h"
+#include "usb_device_state.h"
#include "mousekey.h"
#include "led.h"
#include "sendchar.h"
@@ -42,12 +43,6 @@
#ifdef SLEEP_LED_ENABLE
# include "sleep_led.h"
#endif
-#ifdef SERIAL_LINK_ENABLE
-# include "serial_link/system/serial_link.h"
-#endif
-#ifdef VISUALIZER_ENABLE
-# include "visualizer/visualizer.h"
-#endif
#ifdef MIDI_ENABLE
# include "qmk_midi.h"
#endif
@@ -139,6 +134,8 @@ void boardInit(void) {
}
void protocol_setup(void) {
+ usb_device_state_init();
+
// TESTING
// chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
@@ -154,19 +151,11 @@ void protocol_init(void) {
setup_midi();
#endif
-#ifdef SERIAL_LINK_ENABLE
- init_serial_link();
-#endif
-
-#ifdef VISUALIZER_ENABLE
- visualizer_init();
-#endif
-
host_driver_t *driver = NULL;
- /* Wait until the USB or serial link is active */
+ /* Wait until USB is active */
while (true) {
-#if defined(WAIT_FOR_USB) || defined(SERIAL_LINK_ENABLE)
+#if defined(WAIT_FOR_USB)
if (USB_DRIVER.state == USB_ACTIVE) {
driver = &chibios_driver;
break;
@@ -175,13 +164,6 @@ void protocol_init(void) {
driver = &chibios_driver;
break;
#endif
-#ifdef SERIAL_LINK_ENABLE
- if (is_serial_link_connected()) {
- driver = get_serial_link_driver();
- break;
- }
- serial_link_update();
-#endif
wait_ms(50);
}
@@ -211,14 +193,8 @@ void protocol_task(void) {
#if !defined(NO_USB_STARTUP_CHECK)
if (USB_DRIVER.state == USB_SUSPENDED) {
print("[s]");
-# ifdef VISUALIZER_ENABLE
- visualizer_suspend();
-# endif
while (USB_DRIVER.state == USB_SUSPENDED) {
/* Do this in the suspended state */
-# ifdef SERIAL_LINK_ENABLE
- serial_link_update();
-# endif
suspend_power_down(); // on AVR this deep sleeps for 15ms
/* Remote wakeup */
if (suspend_wakeup_condition()) {
@@ -232,10 +208,6 @@ void protocol_task(void) {
# ifdef MOUSEKEY_ENABLE
mousekey_send();
# endif /* MOUSEKEY_ENABLE */
-
-# ifdef VISUALIZER_ENABLE
- visualizer_resume();
-# endif
}
#endif
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index 04049c1a9a..3b16a0ff7b 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -39,6 +39,7 @@
# include "led.h"
#endif
#include "wait.h"
+#include "usb_device_state.h"
#include "usb_descriptor.h"
#include "usb_driver.h"
@@ -412,6 +413,7 @@ static inline bool usb_event_queue_dequeue(usbevent_t *event) {
}
static inline void usb_event_suspend_handler(void) {
+ usb_device_state_set_suspend(USB_DRIVER.configuration != 0, USB_DRIVER.configuration);
#ifdef SLEEP_LED_ENABLE
sleep_led_enable();
#endif /* SLEEP_LED_ENABLE */
@@ -419,6 +421,7 @@ static inline void usb_event_suspend_handler(void) {
static inline void usb_event_wakeup_handler(void) {
suspend_wakeup_init();
+ usb_device_state_set_resume(USB_DRIVER.configuration != 0, USB_DRIVER.configuration);
#ifdef SLEEP_LED_ENABLE
sleep_led_disable();
// NOTE: converters may not accept this
@@ -440,6 +443,15 @@ void usb_event_queue_task(void) {
last_suspend_state = false;
usb_event_wakeup_handler();
break;
+ case USB_EVENT_CONFIGURED:
+ usb_device_state_set_configuration(USB_DRIVER.configuration != 0, USB_DRIVER.configuration);
+ break;
+ case USB_EVENT_UNCONFIGURED:
+ usb_device_state_set_configuration(false, 0);
+ break;
+ case USB_EVENT_RESET:
+ usb_device_state_set_reset();
+ break;
default:
// Nothing to do, we don't handle it.
break;
@@ -482,13 +494,14 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
if (last_suspend_state) {
usb_event_queue_enqueue(USB_EVENT_WAKEUP);
}
+ usb_event_queue_enqueue(USB_EVENT_CONFIGURED);
return;
case USB_EVENT_SUSPEND:
- usb_event_queue_enqueue(USB_EVENT_SUSPEND);
/* Falls into.*/
case USB_EVENT_UNCONFIGURED:
/* Falls into.*/
case USB_EVENT_RESET:
+ usb_event_queue_enqueue(event);
for (int i = 0; i < NUM_USB_DRIVERS; i++) {
chSysLockFromISR();
/* Disconnection event on suspend.*/
diff --git a/tmk_core/protocol/ibm4704.c b/tmk_core/protocol/ibm4704.c
deleted file mode 100644
index a19443976e..0000000000
--- a/tmk_core/protocol/ibm4704.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
-Copyright 2010,2011,2012,2013 Jun WAKO <wakojun@gmail.com>
-*/
-#include <stdbool.h>
-#include <util/delay.h>
-#include "debug.h"
-#include "ring_buffer.h"
-#include "ibm4704.h"
-
-#define WAIT(stat, us, err) \
- do { \
- if (!wait_##stat(us)) { \
- ibm4704_error = err; \
- goto ERROR; \
- } \
- } while (0)
-
-uint8_t ibm4704_error = 0;
-
-void ibm4704_init(void) {
- inhibit(); // keep keyboard from sending
- IBM4704_INT_INIT();
- IBM4704_INT_ON();
- idle(); // allow keyboard sending
-}
-
-/*
-Host to Keyboard
-----------------
-Data bits are LSB first and Parity is odd. Clock has around 60us high and 30us low part.
-
- ____ __ __ __ __ __ __ __ __ __ ________
-Clock \______/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
- ^ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___
-Data ____|__/ X____X____X____X____X____X____X____X____X____X \___
- | Start 0 1 2 3 4 5 6 7 P Stop
- Request by host
-
-Start bit: can be long as 300-350us.
-Request: Host pulls Clock line down to request to send a command.
-Timing: After Request keyboard pull up Data and down Clock line to low for start bit.
- After request host release Clock line once Data line becomes hi.
- Host writes a bit while Clock is hi and Keyboard reads while low.
-Stop bit: Host releases or pulls up Data line to hi after 9th clock and waits for keyboard pull down the line to lo.
-*/
-uint8_t ibm4704_send(uint8_t data) {
- bool parity = true; // odd parity
- ibm4704_error = 0;
-
- IBM4704_INT_OFF();
-
- /* Request to send */
- idle();
- clock_lo();
-
- /* wait for Start bit(Clock:lo/Data:hi) */
- WAIT(data_hi, 300, 0x30);
-
- /* Data bit */
- for (uint8_t i = 0; i < 8; i++) {
- WAIT(clock_hi, 100, 0x40 + i);
- if (data & (1 << i)) {
- parity = !parity;
- data_hi();
- } else {
- data_lo();
- }
- WAIT(clock_lo, 100, 0x48 + i);
- }
-
- /* Parity bit */
- WAIT(clock_hi, 100, 0x34);
- if (parity) {
- data_hi();
- } else {
- data_lo();
- }
- WAIT(clock_lo, 100, 0x35);
-
- /* Stop bit */
- WAIT(clock_hi, 100, 0x34);
- data_hi();
-
- /* End */
- WAIT(data_lo, 100, 0x36);
-
- idle();
- IBM4704_INT_ON();
- return 0;
-ERROR:
- idle();
- if (ibm4704_error > 0x30) {
- xprintf("S:%02X ", ibm4704_error);
- }
- IBM4704_INT_ON();
- return -1;
-}
-
-/* wait forever to receive data */
-uint8_t ibm4704_recv_response(void) {
- while (!rbuf_has_data()) {
- _delay_ms(1);
- }
- return rbuf_dequeue();
-}
-
-uint8_t ibm4704_recv(void) {
- if (rbuf_has_data()) {
- return rbuf_dequeue();
- } else {
- return -1;
- }
-}
-
-/*
-Keyboard to Host
-----------------
-Data bits are LSB first and Parity is odd. Clock has around 60us high and 30us low part.
-
- ____ __ __ __ __ __ __ __ __ __ _______
-Clock \_____/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
- ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
-Data ____/ X____X____X____X____X____X____X____X____X____X________
- Start 0 1 2 3 4 5 6 7 P Stop
-
-Start bit: can be long as 300-350us.
-Inhibit: Pull Data line down to inhibit keyboard to send.
-Timing: Host reads bit while Clock is hi.(rising edge)
-Stop bit: Keyboard pulls down Data line to lo after 9th clock.
-*/
-ISR(IBM4704_INT_VECT) {
- static enum { BIT0, BIT1, BIT2, BIT3, BIT4, BIT5, BIT6, BIT7, PARITY, STOP } state = BIT0;
- // LSB first
- static uint8_t data = 0;
- // Odd parity
- static uint8_t parity = false;
-
- ibm4704_error = 0;
-
- switch (state) {
- case BIT0:
- case BIT1:
- case BIT2:
- case BIT3:
- case BIT4:
- case BIT5:
- case BIT6:
- case BIT7:
- data >>= 1;
- if (data_in()) {
- data |= 0x80;
- parity = !parity;
- }
- break;
- case PARITY:
- if (data_in()) {
- parity = !parity;
- }
- if (!parity) goto ERROR;
- break;
- case STOP:
- // Data:Low
- WAIT(data_lo, 100, state);
- if (!rbuf_enqueue(data)) {
- print("rbuf: full\n");
- }
- ibm4704_error = IBM4704_ERR_NONE;
- goto DONE;
- break;
- default:
- goto ERROR;
- }
- state++;
- goto RETURN;
-ERROR:
- ibm4704_error = state;
- while (ibm4704_send(0xFE)) _delay_ms(1); // resend
- xprintf("R:%02X%02X\n", state, data);
-DONE:
- state = BIT0;
- data = 0;
- parity = false;
-RETURN:
- return;
-}
diff --git a/tmk_core/protocol/ibm4704.h b/tmk_core/protocol/ibm4704.h
deleted file mode 100644
index 4f88d148b3..0000000000
--- a/tmk_core/protocol/ibm4704.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-Copyright 2014 Jun WAKO <wakojun@gmail.com>
-*/
-
-#pragma once
-
-#define IBM4704_ERR_NONE 0
-#define IBM4704_ERR_PARITY 0x70
-
-void ibm4704_init(void);
-uint8_t ibm4704_send(uint8_t data);
-uint8_t ibm4704_recv_response(void);
-uint8_t ibm4704_recv(void);
-
-/* Check pin configuration */
-#if !(defined(IBM4704_CLOCK_PORT) && defined(IBM4704_CLOCK_PIN) && defined(IBM4704_CLOCK_DDR) && defined(IBM4704_CLOCK_BIT))
-# error "ibm4704 clock pin configuration is required in config.h"
-#endif
-
-#if !(defined(IBM4704_DATA_PORT) && defined(IBM4704_DATA_PIN) && defined(IBM4704_DATA_DDR) && defined(IBM4704_DATA_BIT))
-# error "ibm4704 data pin configuration is required in config.h"
-#endif
-
-/*--------------------------------------------------------------------
- * static functions
- *------------------------------------------------------------------*/
-static inline void clock_lo(void) {
- IBM4704_CLOCK_PORT &= ~(1 << IBM4704_CLOCK_BIT);
- IBM4704_CLOCK_DDR |= (1 << IBM4704_CLOCK_BIT);
-}
-static inline void clock_hi(void) {
- /* input with pull up */
- IBM4704_CLOCK_DDR &= ~(1 << IBM4704_CLOCK_BIT);
- IBM4704_CLOCK_PORT |= (1 << IBM4704_CLOCK_BIT);
-}
-static inline bool clock_in(void) {
- IBM4704_CLOCK_DDR &= ~(1 << IBM4704_CLOCK_BIT);
- IBM4704_CLOCK_PORT |= (1 << IBM4704_CLOCK_BIT);
- _delay_us(1);
- return IBM4704_CLOCK_PIN & (1 << IBM4704_CLOCK_BIT);
-}
-static inline void data_lo(void) {
- IBM4704_DATA_PORT &= ~(1 << IBM4704_DATA_BIT);
- IBM4704_DATA_DDR |= (1 << IBM4704_DATA_BIT);
-}
-static inline void data_hi(void) {
- /* input with pull up */
- IBM4704_DATA_DDR &= ~(1 << IBM4704_DATA_BIT);
- IBM4704_DATA_PORT |= (1 << IBM4704_DATA_BIT);
-}
-static inline bool data_in(void) {
- IBM4704_DATA_DDR &= ~(1 << IBM4704_DATA_BIT);
- IBM4704_DATA_PORT |= (1 << IBM4704_DATA_BIT);
- _delay_us(1);
- return IBM4704_DATA_PIN & (1 << IBM4704_DATA_BIT);
-}
-
-static inline uint16_t wait_clock_lo(uint16_t us) {
- while (clock_in() && us) {
- asm("");
- _delay_us(1);
- us--;
- }
- return us;
-}
-static inline uint16_t wait_clock_hi(uint16_t us) {
- while (!clock_in() && us) {
- asm("");
- _delay_us(1);
- us--;
- }
- return us;
-}
-static inline uint16_t wait_data_lo(uint16_t us) {
- while (data_in() && us) {
- asm("");
- _delay_us(1);
- us--;
- }
- return us;
-}
-static inline uint16_t wait_data_hi(uint16_t us) {
- while (!data_in() && us) {
- asm("");
- _delay_us(1);
- us--;
- }
- return us;
-}
-
-/* idle state that device can send */
-static inline void idle(void) {
- clock_hi();
- data_hi();
-}
-
-/* inhibit device to send
- * keyboard checks Data line on start bit(Data:hi) and it stops sending if Data line is low.
- */
-static inline void inhibit(void) {
- clock_hi();
- data_lo();
-}
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk
index c8935dacb7..00fec478ac 100644
--- a/tmk_core/protocol/lufa.mk
+++ b/tmk_core/protocol/lufa.mk
@@ -3,7 +3,6 @@ LUFA_DIR = protocol/lufa
# Path to the LUFA library
LUFA_PATH = $(LIB_PATH)/lufa
-
# Create the LUFA source path variables by including the LUFA makefile
ifneq (, $(wildcard $(LUFA_PATH)/LUFA/Build/lufa_sources.mk))
# New build system from 20120730
@@ -22,23 +21,6 @@ ifeq ($(strip $(MIDI_ENABLE)), yes)
include $(TMK_PATH)/protocol/midi.mk
endif
-ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
- LUFA_SRC += outputselect.c \
- $(TMK_DIR)/protocol/serial_uart.c
-endif
-
-ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
- LUFA_SRC += spi_master.c \
- analog.c \
- outputselect.c \
- $(LUFA_DIR)/adafruit_ble.cpp
-endif
-
-ifeq ($(strip $(BLUETOOTH)), RN42)
- LUFA_SRC += outputselect.c \
- $(TMK_DIR)/protocol/serial_uart.c
-endif
-
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c
endif
@@ -50,19 +32,10 @@ SRC += $(LUFA_DIR)/usb_util.c
VPATH += $(TMK_PATH)/$(LUFA_DIR)
VPATH += $(LUFA_PATH)
-# Option modules
-#ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE)
-#endif
-
-#ifdef EXTRAKEY_ENABLE
-#endif
-
# LUFA library compile-time options and predefined tokens
LUFA_OPTS = -DUSB_DEVICE_ONLY
LUFA_OPTS += -DUSE_FLASH_DESCRIPTORS
LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
-#LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT
-LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c
index 5b56e8a03c..753762358d 100644
--- a/tmk_core/protocol/lufa/lufa.c
+++ b/tmk_core/protocol/lufa/lufa.c
@@ -52,6 +52,7 @@
#include "usb_descriptor.h"
#include "lufa.h"
#include "quantum.h"
+#include "usb_device_state.h"
#include <util/atomic.h>
#ifdef NKRO_ENABLE
@@ -142,7 +143,8 @@ static void send_keyboard(report_keyboard_t *report);
static void send_mouse(report_mouse_t *report);
static void send_system(uint16_t data);
static void send_consumer(uint16_t data);
-host_driver_t lufa_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer};
+static void send_programmable_button(uint32_t data);
+host_driver_t lufa_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer, send_programmable_button};
#ifdef VIRTSER_ENABLE
// clang-format off
@@ -413,7 +415,10 @@ void EVENT_USB_Device_Disconnect(void) {
*
* FIXME: Needs doc
*/
-void EVENT_USB_Device_Reset(void) { print("[R]"); }
+void EVENT_USB_Device_Reset(void) {
+ print("[R]");
+ usb_device_state_set_reset();
+}
/** \brief Event USB Device Connect
*
@@ -421,6 +426,8 @@ void EVENT_USB_Device_Reset(void) { print("[R]"); }
*/
void EVENT_USB_Device_Suspend() {
print("[S]");
+ usb_device_state_set_suspend(USB_Device_ConfigurationNumber != 0, USB_Device_ConfigurationNumber);
+
#ifdef SLEEP_LED_ENABLE
sleep_led_enable();
#endif
@@ -436,6 +443,8 @@ void EVENT_USB_Device_WakeUp() {
suspend_wakeup_init();
#endif
+ usb_device_state_set_resume(USB_DeviceState == DEVICE_STATE_Configured, USB_Device_ConfigurationNumber);
+
#ifdef SLEEP_LED_ENABLE
sleep_led_disable();
// NOTE: converters may not accept this
@@ -528,6 +537,8 @@ void EVENT_USB_Device_ConfigurationChanged(void) {
/* Setup digitizer endpoint */
ConfigSuccess &= Endpoint_ConfigureEndpoint((DIGITIZER_IN_EPNUM | ENDPOINT_DIR_IN), EP_TYPE_INTERRUPT, DIGITIZER_EPSIZE, 1);
#endif
+
+ usb_device_state_set_configuration(USB_DeviceState == DEVICE_STATE_Configured, USB_Device_ConfigurationNumber);
}
/* FIXME: Expose this table in the docs somehow
@@ -760,29 +771,35 @@ static void send_mouse(report_mouse_t *report) {
#endif
}
-/** \brief Send Extra
- *
- * FIXME: Needs doc
- */
-#ifdef EXTRAKEY_ENABLE
-static void send_extra(uint8_t report_id, uint16_t data) {
+#if defined(EXTRAKEY_ENABLE) || defined(PROGRAMMABLE_BUTTON_ENABLE)
+static void send_report(void *report, size_t size) {
uint8_t timeout = 255;
if (USB_DeviceState != DEVICE_STATE_Configured) return;
- static report_extra_t r;
- r = (report_extra_t){.report_id = report_id, .usage = data};
Endpoint_SelectEndpoint(SHARED_IN_EPNUM);
/* Check if write ready for a polling interval around 10ms */
while (timeout-- && !Endpoint_IsReadWriteAllowed()) _delay_us(40);
if (!Endpoint_IsReadWriteAllowed()) return;
- Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
+ Endpoint_Write_Stream_LE(report, size, NULL);
Endpoint_ClearIN();
}
#endif
+/** \brief Send Extra
+ *
+ * FIXME: Needs doc
+ */
+#ifdef EXTRAKEY_ENABLE
+static void send_extra(uint8_t report_id, uint16_t data) {
+ static report_extra_t r;
+ r = (report_extra_t){.report_id = report_id, .usage = data};
+ send_report(&r, sizeof(r));
+}
+#endif
+
/** \brief Send System
*
* FIXME: Needs doc
@@ -822,6 +839,14 @@ static void send_consumer(uint16_t data) {
#endif
}
+static void send_programmable_button(uint32_t data) {
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ static report_programmable_button_t r;
+ r = (report_programmable_button_t){.report_id = REPORT_ID_PROGRAMMABLE_BUTTON, .usage = data};
+ send_report(&r, sizeof(r));
+#endif
+}
+
/*******************************************************************************
* sendchar
******************************************************************************/
@@ -1044,6 +1069,7 @@ void protocol_setup(void) {
#endif
setup_mcu();
+ usb_device_state_init();
keyboard_setup();
}
diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h
index 348a84c031..6a5205609e 100644
--- a/tmk_core/protocol/lufa/lufa.h
+++ b/tmk_core/protocol/lufa/lufa.h
@@ -56,14 +56,3 @@ extern host_driver_t lufa_driver;
#ifdef __cplusplus
}
#endif
-
-#ifdef API_ENABLE
-# include "api.h"
-#endif
-
-#ifdef API_SYSEX_ENABLE
-# include "api_sysex.h"
-// Allocate space for encoding overhead.
-// The header and terminator are not stored to save a few bytes of precious ram
-# define MIDI_SYSEX_BUFFER (API_SYSEX_MAX_SIZE + API_SYSEX_MAX_SIZE / 7 + (API_SYSEX_MAX_SIZE % 7 ? 1 : 0))
-#endif
diff --git a/tmk_core/protocol/midi/qmk_midi.c b/tmk_core/protocol/midi/qmk_midi.c
index c18dbf9930..3a454d61ae 100644
--- a/tmk_core/protocol/midi/qmk_midi.c
+++ b/tmk_core/protocol/midi/qmk_midi.c
@@ -4,9 +4,6 @@
#include "midi.h"
#include "usb_descriptor.h"
#include "process_midi.h"
-#if API_SYSEX_ENABLE
-# include "api_sysex.h"
-#endif
/*******************************************************************************
* MIDI
@@ -124,41 +121,6 @@ static void cc_callback(MidiDevice* device, uint8_t chan, uint8_t num, uint8_t v
// midi_send_cc(device, (chan + 1) % 16, num, val);
}
-#ifdef API_SYSEX_ENABLE
-uint8_t midi_buffer[MIDI_SYSEX_BUFFER] = {0};
-
-static void sysex_callback(MidiDevice* device, uint16_t start, uint8_t length, uint8_t* data) {
- // SEND_STRING("\n");
- // send_word(start);
- // SEND_STRING(": ");
- // Don't store the header
- int16_t pos = start - 4;
- for (uint8_t place = 0; place < length; place++) {
- // send_byte(*data);
- if (pos >= 0) {
- if (*data == 0xF7) {
- // SEND_STRING("\nRD: ");
- // for (uint8_t i = 0; i < start + place + 1; i++){
- // send_byte(midi_buffer[i]);
- // SEND_STRING(" ");
- // }
- const unsigned decoded_length = sysex_decoded_length(pos);
- uint8_t decoded[API_SYSEX_MAX_SIZE];
- sysex_decode(decoded, midi_buffer, pos);
- process_api(decoded_length, decoded);
- return;
- } else if (pos >= MIDI_SYSEX_BUFFER) {
- return;
- }
- midi_buffer[pos] = *data;
- }
- // SEND_STRING(" ");
- data++;
- pos++;
- }
-}
-#endif
-
void midi_init(void);
void setup_midi(void) {
@@ -170,7 +132,4 @@ void setup_midi(void) {
midi_device_set_pre_input_process_func(&midi_device, usb_get_midi);
midi_register_fallthrough_callback(&midi_device, fallthrough_callback);
midi_register_cc_callback(&midi_device, cc_callback);
-#ifdef API_SYSEX_ENABLE
- midi_register_sysex_callback(&midi_device, sysex_callback);
-#endif
}
diff --git a/tmk_core/protocol/news.c b/tmk_core/protocol/news.c
deleted file mode 100644
index 4463e8dd42..0000000000
--- a/tmk_core/protocol/news.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-Copyright 2012 Jun WAKO <wakojun@gmail.com>
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
-* Neither the name of the copyright holders nor the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <stdbool.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include "news.h"
-
-void news_init(void) { NEWS_KBD_RX_INIT(); }
-
-// RX ring buffer
-#define RBUF_SIZE 8
-static uint8_t rbuf[RBUF_SIZE];
-static uint8_t rbuf_head = 0;
-static uint8_t rbuf_tail = 0;
-
-uint8_t news_recv(void) {
- uint8_t data = 0;
- if (rbuf_head == rbuf_tail) {
- return 0;
- }
-
- data = rbuf[rbuf_tail];
- rbuf_tail = (rbuf_tail + 1) % RBUF_SIZE;
- return data;
-}
-
-// USART RX complete interrupt
-ISR(NEWS_KBD_RX_VECT) {
- uint8_t next = (rbuf_head + 1) % RBUF_SIZE;
- if (next != rbuf_tail) {
- rbuf[rbuf_head] = NEWS_KBD_RX_DATA;
- rbuf_head = next;
- }
-}
-
-/*
-SONY NEWS Keyboard Protocol
-===========================
-
-Resources
----------
- Mouse protocol of NWA-5461(Japanese)
- http://groups.google.com/group/fj.sys.news/browse_thread/thread/a01b3e3ac6ae5b2d
-
- SONY NEWS Info(Japanese)
- http://katsu.watanabe.name/doc/sonynews/
-
-
-Pinouts
--------
- EIA 232 male connector from NWP-5461
- -------------
- \ 1 2 3 4 5 /
- \ 6 7 8 9 /
- ---------
- 1 VCC
- 2 BZ(Speaker)
- 3 Keyboard Data(from keyboard MCU TxD)
- 4 NC
- 5 GND
- 6 Unknown Input(to keyboard MCU RxD via schmitt trigger)
- 7 Mouse Data(from Mouse Ext connector)
- 8 Unknown Input(to Keyboard MCU Input via diode and buffer)
- 9 FG
- NOTE: Two LED on keyboard are controlled by pin 6,8?
-
- EIA 232 male connector from NWP-411A
- -------------
- \ 1 2 3 4 5 /
- \ 6 7 8 9 /
- ---------
- 1 VCC
- 2 BZ(Speaker)
- 3 Keyboard Data(from keyboard MCU TxD)
- 4 NC
- 5 GND
- 6 NC
- 7 Mouse Data(from Mouse Ext connector)
- 8 NC
- 9 FG
- NOTE: These are just from my guess and not confirmed.
-
-
-Signaling
----------
- ~~~~~~~~~~ ____XOO0X111X222X333X444X555X666X777~~~~ ~~~~~~~
- Idle Start LSB MSB Stop Idle
-
- Idle: High
- Start bit: Low
- Stop bit: High
- Bit order: LSB first
-
- Baud rate: 9600
- Interface: TTL level(5V) UART
-
- NOTE: This is observed on NWP-5461 with its DIP switch all OFF.
-
-
-Format
-------
- MSB LSB
- 7 6 5 4 3 2 1 0 bit
- | | | | | | | |
- | +-+-+-+-+-+-+-- scan code(00-7F)
- +---------------- break flag: sets when released
-
-
-Scan Codes
-----------
- SONY NEWS NWP-5461
- ,---. ,------------------------, ,------------------------. ,---------.
- | 7A| | 01 | 02 | 03 | 04 | 05 | | 06 | 07 | 08 | 09 | 0A | | 68 | 69 | ,-----------.
- `---' `------------------------' `------------------------' `---------' | 64| 65| 52|
- ,-------------------------------------------------------------. ,---. ,---------------|
- | 0B| 0C| 0D| 0E| 0F| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19 | | 6A| | 4B| 4C| 4D| 4E|
- |-------------------------------------------------------------| |---| |---------------|
- | 1A | 1B| 1C| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| | | 6B| | 4F| 50| 51| 56|
- |---------------------------------------------------------' | |---| |---------------|
- | 28 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 35 | | 6C| | 53| 54| 55| |
- |-------------------------------------------------------------| |---| |-----------| 5A|
- | 36 | 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 42 | | 6D| | 57| 59| 58| |
- |-------------------------------------------------------------| |---| |---------------|
- | 43 | 44 | 45 | 46 | 47 | 48| 49| 4A | | 6E| | 66| 5B| 5C| 5D|
- `-------------------------------------------------------------' `---' `---------------'
-*/
diff --git a/tmk_core/protocol/news.h b/tmk_core/protocol/news.h
deleted file mode 100644
index 327a13856d..0000000000
--- a/tmk_core/protocol/news.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright 2012 Jun WAKO <wakojun@gmail.com>
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
-* Neither the name of the copyright holders nor the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#pragma once
-
-/*
- * Primitive PS/2 Library for AVR
- */
-
-/* host role */
-void news_init(void);
-uint8_t news_recv(void);
-
-/* device role */
diff --git a/tmk_core/protocol/next_kbd.c b/tmk_core/protocol/next_kbd.c
deleted file mode 100644
index 6f118e6172..0000000000
--- a/tmk_core/protocol/next_kbd.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
-
-NeXT non-ADB Keyboard Protocol
-
-Copyright 2013, Benjamin Gould (bgould@github.com)
-
-Based on:
-TMK firmware code Copyright 2011,2012 Jun WAKO <wakojun@gmail.com>
-Arduino code by "Ladyada" Limor Fried (http://ladyada.net/, http://adafruit.com/), released under BSD license
-
-Timing reference thanks to http://m0115.web.fc2.com/ (dead link), http://cfile7.uf.tistory.com/image/14448E464F410BF22380BB
-Pinouts thanks to http://www.68k.org/~degs/nextkeyboard.html
-Keycodes from http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-6/src/sys/arch/next68k/dev/
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
-* Neither the name of the copyright holders nor the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <util/atomic.h>
-#include <util/delay.h>
-#include "next_kbd.h"
-#include "debug.h"
-
-static inline void out_lo(void);
-static inline void out_hi(void);
-static inline void query(void);
-static inline void reset(void);
-static inline uint32_t response(void);
-
-/* The keyboard sends signal with 50us pulse width on OUT line
- * while it seems to miss the 50us pulse on In line.
- * next_kbd_set_leds() often fails to sync LED status with 50us
- * but it works well with 51us(+1us) on TMK converter(ATMeaga32u2) at least.
- * TODO: test on Teensy and Pro Micro configuration
- */
-#define out_hi_delay(intervals) \
- do { \
- out_hi(); \
- _delay_us((NEXT_KBD_TIMING + 1) * intervals); \
- } while (0);
-#define out_lo_delay(intervals) \
- do { \
- out_lo(); \
- _delay_us((NEXT_KBD_TIMING + 1) * intervals); \
- } while (0);
-#define query_delay(intervals) \
- do { \
- query(); \
- _delay_us((NEXT_KBD_TIMING + 1) * intervals); \
- } while (0);
-#define reset_delay(intervals) \
- do { \
- reset(); \
- _delay_us((NEXT_KBD_TIMING + 1) * intervals); \
- } while (0);
-
-void next_kbd_init(void) {
- out_hi();
- NEXT_KBD_IN_DDR &= ~(1 << NEXT_KBD_IN_BIT); // KBD_IN to input
- NEXT_KBD_IN_PORT |= (1 << NEXT_KBD_IN_BIT); // KBD_IN pull up
-
- query_delay(5);
- reset_delay(8);
-
- query_delay(5);
- reset_delay(8);
-}
-
-void next_kbd_set_leds(bool left, bool right) {
- cli();
- out_lo_delay(9);
-
- out_hi_delay(3);
- out_lo_delay(1);
-
- if (left) {
- out_hi_delay(1);
- } else {
- out_lo_delay(1);
- }
-
- if (right) {
- out_hi_delay(1);
- } else {
- out_lo_delay(1);
- }
-
- out_lo_delay(7);
- out_hi();
- sei();
-}
-
-#define NEXT_KBD_READ (NEXT_KBD_IN_PIN & (1 << NEXT_KBD_IN_BIT))
-uint32_t next_kbd_recv(void) {
- // First check to make sure that the keyboard is actually connected;
- // if not, just return
- // TODO: reflect the status of the keyboard in a return code
- if (!NEXT_KBD_READ) {
- sei();
- return 0;
- }
-
- query();
- uint32_t resp = response();
-
- return resp;
-}
-
-static inline uint32_t response(void) {
- cli();
-
- // try a 5ms read; this should be called after the query method has
- // been run so if a key is pressed we should get a response within
- // 5ms; if not then send a reset and exit
- uint8_t i = 0;
- uint32_t data = 0;
- uint16_t reset_timeout = 50000;
- while (NEXT_KBD_READ && reset_timeout) {
- asm("");
- _delay_us(1);
- reset_timeout--;
- }
- if (!reset_timeout) {
- reset();
- sei();
- return 0;
- }
- _delay_us(NEXT_KBD_TIMING / 2);
- for (; i < 22; i++) {
- if (NEXT_KBD_READ) {
- data |= ((uint32_t)1 << i);
- /* Note:
- * My testing with the ATmega32u4 showed that there might
- * something wrong with the timing here; by the end of the
- * second data byte some of the modifiers can get bumped out
- * to the next bit over if we just cycle through the data
- * based on the expected interval. There is a bit (i = 10)
- * in the middle of the data that is always on followed by
- * one that is always off - so we'll use that to reset our
- * timing in case we've gotten ahead of the keyboard;
- */
- if (i == 10) {
- i++;
- while (NEXT_KBD_READ)
- ;
- _delay_us(NEXT_KBD_TIMING / 2);
- }
- } else {
- /* redundant - but I don't want to remove if it might screw
- * up the timing
- */
- data |= ((uint32_t)0 << i);
- }
- _delay_us(NEXT_KBD_TIMING);
- }
-
- sei();
-
- return data;
-}
-
-static inline void out_lo(void) {
- NEXT_KBD_OUT_PORT &= ~(1 << NEXT_KBD_OUT_BIT);
- NEXT_KBD_OUT_DDR |= (1 << NEXT_KBD_OUT_BIT);
-}
-
-static inline void out_hi(void) {
- /* input with pull up */
- NEXT_KBD_OUT_DDR &= ~(1 << NEXT_KBD_OUT_BIT);
- NEXT_KBD_OUT_PORT |= (1 << NEXT_KBD_OUT_BIT);
-}
-
-static inline void query(void) {
- out_lo_delay(5);
- out_hi_delay(1);
- out_lo_delay(3);
- out_hi();
-}
-
-static inline void reset(void) {
- out_lo_delay(1);
- out_hi_delay(4);
- out_lo_delay(1);
- out_hi_delay(6);
- out_lo_delay(10);
- out_hi();
-}
diff --git a/tmk_core/protocol/next_kbd.h b/tmk_core/protocol/next_kbd.h
deleted file mode 100644
index 1249ebf392..0000000000
--- a/tmk_core/protocol/next_kbd.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-NeXT non-ADB Keyboard Protocol
-
-Copyright 2013, Benjamin Gould (bgould@github.com)
-
-Based on:
-TMK firmware code Copyright 2011,2012 Jun WAKO <wakojun@gmail.com>
-Arduino code by "Ladyada" Limor Fried (http://ladyada.net/, http://adafruit.com/), released under BSD license
-
-Timing reference thanks to http://m0115.web.fc2.com/ (dead link), http://cfile7.uf.tistory.com/image/14448E464F410BF22380BB
-Pinouts thanks to http://www.68k.org/~degs/nextkeyboard.html
-Keycodes from http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-6/src/sys/arch/next68k/dev/
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
-* Neither the name of the copyright holders nor the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#pragma once
-
-#include <stdbool.h>
-
-#define NEXT_KBD_KMBUS_IDLE 0x300600
-#define NEXT_KBD_TIMING 50
-
-extern uint8_t next_kbd_error;
-
-/* host role */
-void next_kbd_init(void);
-void next_kbd_set_leds(bool left, bool right);
-uint32_t next_kbd_recv(void);
diff --git a/tmk_core/protocol/ps2_io_avr.c b/tmk_core/protocol/ps2_io_avr.c
deleted file mode 100644
index a9ac5d338d..0000000000
--- a/tmk_core/protocol/ps2_io_avr.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-
-/* Check port settings for clock and data line */
-#if !(defined(PS2_CLOCK_PORT) && defined(PS2_CLOCK_PIN) && defined(PS2_CLOCK_DDR) && defined(PS2_CLOCK_BIT))
-# error "PS/2 clock port setting is required in config.h"
-#endif
-
-#if !(defined(PS2_DATA_PORT) && defined(PS2_DATA_PIN) && defined(PS2_DATA_DDR) && defined(PS2_DATA_BIT))
-# error "PS/2 data port setting is required in config.h"
-#endif
-
-/*
- * Clock
- */
-void clock_init(void) {}
-
-void clock_lo(void) {
- PS2_CLOCK_PORT &= ~(1 << PS2_CLOCK_BIT);
- PS2_CLOCK_DDR |= (1 << PS2_CLOCK_BIT);
-}
-
-void clock_hi(void) {
- /* input with pull up */
- PS2_CLOCK_DDR &= ~(1 << PS2_CLOCK_BIT);
- PS2_CLOCK_PORT |= (1 << PS2_CLOCK_BIT);
-}
-
-bool clock_in(void) {
- PS2_CLOCK_DDR &= ~(1 << PS2_CLOCK_BIT);
- PS2_CLOCK_PORT |= (1 << PS2_CLOCK_BIT);
- _delay_us(1);
- return PS2_CLOCK_PIN & (1 << PS2_CLOCK_BIT);
-}
-
-/*
- * Data
- */
-void data_init(void) {}
-
-void data_lo(void) {
- PS2_DATA_PORT &= ~(1 << PS2_DATA_BIT);
- PS2_DATA_DDR |= (1 << PS2_DATA_BIT);
-}
-
-void data_hi(void) {
- /* input with pull up */
- PS2_DATA_DDR &= ~(1 << PS2_DATA_BIT);
- PS2_DATA_PORT |= (1 << PS2_DATA_BIT);
-}
-
-bool data_in(void) {
- PS2_DATA_DDR &= ~(1 << PS2_DATA_BIT);
- PS2_DATA_PORT |= (1 << PS2_DATA_BIT);
- _delay_us(1);
- return PS2_DATA_PIN & (1 << PS2_DATA_BIT);
-}
diff --git a/tmk_core/protocol/ps2_io_chibios.c b/tmk_core/protocol/ps2_io_chibios.c
deleted file mode 100644
index b672bd1f47..0000000000
--- a/tmk_core/protocol/ps2_io_chibios.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <stdbool.h>
-#include "ps2_io.h"
-
-// chibiOS headers
-#include "ch.h"
-#include "hal.h"
-
-/* Check port settings for clock and data line */
-#if !(defined(PS2_CLOCK))
-# error "PS/2 clock setting is required in config.h"
-#endif
-
-#if !(defined(PS2_DATA))
-# error "PS/2 data setting is required in config.h"
-#endif
-
-/*
- * Clock
- */
-void clock_init(void) {}
-
-void clock_lo(void) {
- palSetLineMode(PS2_CLOCK, PAL_MODE_OUTPUT_OPENDRAIN);
- palWriteLine(PS2_CLOCK, PAL_LOW);
-}
-
-void clock_hi(void) {
- palSetLineMode(PS2_CLOCK, PAL_MODE_OUTPUT_OPENDRAIN);
- palWriteLine(PS2_CLOCK, PAL_HIGH);
-}
-
-bool clock_in(void) {
- palSetLineMode(PS2_CLOCK, PAL_MODE_INPUT);
- return palReadLine(PS2_CLOCK);
-}
-
-/*
- * Data
- */
-void data_init(void) {}
-
-void data_lo(void) {
- palSetLineMode(PS2_DATA, PAL_MODE_OUTPUT_OPENDRAIN);
- palWriteLine(PS2_DATA, PAL_LOW);
-}
-
-void data_hi(void) {
- palSetLineMode(PS2_DATA, PAL_MODE_OUTPUT_OPENDRAIN);
- palWriteLine(PS2_DATA, PAL_HIGH);
-}
-
-bool data_in(void) {
- palSetLineMode(PS2_DATA, PAL_MODE_INPUT);
- return palReadLine(PS2_DATA);
-}
diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c
index 099964ae56..a43755f899 100644
--- a/tmk_core/protocol/usb_descriptor.c
+++ b/tmk_core/protocol/usb_descriptor.c
@@ -237,6 +237,25 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = {
HID_RI_END_COLLECTION(0),
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ HID_RI_USAGE_PAGE(8, 0x0C), // Consumer
+ HID_RI_USAGE(8, 0x01), // Consumer Control
+ HID_RI_COLLECTION(8, 0x01), // Application
+ HID_RI_REPORT_ID(8, REPORT_ID_PROGRAMMABLE_BUTTON),
+ HID_RI_USAGE(8, 0x03), // Programmable Buttons
+ HID_RI_COLLECTION(8, 0x04), // Named Array
+ HID_RI_USAGE_PAGE(8, 0x09), // Button
+ HID_RI_USAGE_MINIMUM(8, 0x01), // Button 1
+ HID_RI_USAGE_MAXIMUM(8, 0x20), // Button 32
+ HID_RI_LOGICAL_MINIMUM(8, 0x00),
+ HID_RI_LOGICAL_MAXIMUM(8, 0x01),
+ HID_RI_REPORT_COUNT(8, 32),
+ HID_RI_REPORT_SIZE(8, 1),
+ HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
+ HID_RI_END_COLLECTION(0),
+ HID_RI_END_COLLECTION(0),
+#endif
+
#ifdef NKRO_ENABLE
HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop
HID_RI_USAGE(8, 0x06), // Keyboard
diff --git a/tmk_core/protocol/usb_hid/parser.h b/tmk_core/protocol/usb_hid/parser.h
index 036281fa66..ba35b7af5a 100644
--- a/tmk_core/protocol/usb_hid/parser.h
+++ b/tmk_core/protocol/usb_hid/parser.h
@@ -1,5 +1,4 @@
-#ifndef PARSER_H
-#define PARSER_H
+#pragma once
#include "hid.h"
#include "report.h"
@@ -11,5 +10,3 @@ public:
uint16_t time_stamp;
virtual void Parse(HID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
};
-
-#endif
diff --git a/tmk_core/protocol/usb_hid/usb_hid.h b/tmk_core/protocol/usb_hid/usb_hid.h
index 083b68d1f5..5cb5f5d035 100644
--- a/tmk_core/protocol/usb_hid/usb_hid.h
+++ b/tmk_core/protocol/usb_hid/usb_hid.h
@@ -1,10 +1,6 @@
-#ifndef USB_HID_H
-#define USB_HID_H
+#pragma once
#include "report.h"
-
extern report_keyboard_t usb_hid_keyboard_report;
extern uint16_t usb_hid_time_stamp;
-
-#endif
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index 485b20c900..e4db5d0654 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -226,8 +226,9 @@ static void send_keyboard(report_keyboard_t *report);
static void send_mouse(report_mouse_t *report);
static void send_system(uint16_t data);
static void send_consumer(uint16_t data);
+static void send_programmable_button(uint32_t data);
-static host_driver_t driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer};
+static host_driver_t driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer, send_programmable_button};
host_driver_t *vusb_driver(void) { return &driver; }
@@ -296,6 +297,19 @@ void send_digitizer(report_digitizer_t *report) {
#ifdef DIGITIZER_ENABLE
if (usbInterruptIsReadyShared()) {
usbSetInterruptShared((void *)report, sizeof(report_digitizer_t));
+#endif
+}
+
+static void send_programmable_button(uint32_t data) {
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ static report_programmable_button_t report = {
+ .report_id = REPORT_ID_PROGRAMMABLE_BUTTON,
+ };
+
+ report.usage = data;
+
+ if (usbInterruptIsReadyShared()) {
+ usbSetInterruptShared((void *)&report, sizeof(report));
}
#endif
}
@@ -558,6 +572,26 @@ const PROGMEM uchar shared_hid_report[] = {
0xC0 // End Collection
#endif
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+ // Programmable buttons report descriptor
+ 0x05, 0x0C, // Usage Page (Consumer)
+ 0x09, 0x01, // Usage (Consumer Control)
+ 0xA1, 0x01, // Collection (Application)
+ 0x85, REPORT_ID_PROGRAMMABLE_BUTTON, // Report ID
+ 0x09, 0x03, // Usage (Programmable Buttons)
+ 0xA1, 0x04, // Collection (Named Array)
+ 0x05, 0x09, // Usage Page (Button)
+ 0x19, 0x01, // Usage Minimum (Button 1)
+ 0x29, 0x20, // Usage Maximum (Button 32)
+ 0x15, 0x00, // Logical Minimum (0)
+ 0x25, 0x01, // Logical Maximum (1)
+ 0x95, 0x20, // Report Count (32)
+ 0x75, 0x01, // Report Size (1)
+ 0x81, 0x02, // Input (Data, Variable, Absolute)
+ 0xC0, // End Collection
+ 0xC0 // End Collection
+#endif
+
#ifdef SHARED_EP_ENABLE
};
#endif
diff --git a/tmk_core/readme.md b/tmk_core/readme.md
index a754cfee42..a47dc88185 100644
--- a/tmk_core/readme.md
+++ b/tmk_core/readme.md
@@ -25,7 +25,6 @@ These features can be used in your keyboard.
* Media Control Key - Volume Down/Up, Mute, Next/Prev track, Play, Stop and etc
* USB NKRO - 248 keys(+ 8 modifiers) simultaneously
* PS/2 mouse support - PS/2 mouse(TrackPoint) as composite device
-* Keyboard protocols - PS/2, ADB, M0110, Sun and other old keyboard protocols
* User Function - Customizable function of key with writing code
* Macro - Very primitive at this time
* Keyboard Tricks - Oneshot modifier and modifier with tapping feature
@@ -84,9 +83,9 @@ Architecture
/ /| Keys/Mouse | Protocol |d| | Action | | | Protocol |
/__________/ |<-----------| LUFA |r| | Layer, Tap | | | Matrix |
|.--------.| | LED | V-USB |i| |-------------| | | PS/2,IBM | __________________
- || || |----------->| UART |v| | Keymap | | | ADB,M0110| Keys / /_/_/_/_/_/_/_/ /|
- || Host || | Console | |e| | Mousekey | | | SUN/NEWS |<----------/ /_/_/_/_/_/_/_/ / /
- ||________||/.<-----------| |r| | Report | | | X68K/PC98| Control / /_/_/_/_/_/_/_/ / /
+ || || |----------->| UART |v| | Keymap | | | | Keys / /_/_/_/_/_/_/_/ /|
+ || Host || | Console | |e| | Mousekey | | | |<----------/ /_/_/_/_/_/_/_/ / /
+ ||________||/.<-----------| |r| | Report | | | | Control / /_/_/_/_/_/_/_/ / /
`_========_'/| |---------------------------------------------|-------->/___ /_______/ ___/ /
|_o______o_|/ | Sendchar, Print, Debug, Command, ... | |_________________|/
+---------------------------------------------+ Keyboard
@@ -134,10 +133,6 @@ Files and Directories
* lufa/ - LUFA USB stack
* vusb/ - Objective Development V-USB
* ps2.c - PS/2 protocol
-* adb.c - Apple Desktop Bus protocol
-* m0110.c - Macintosh 128K/512K/Plus keyboard protocol
-* news.c - Sony NEWS keyboard protocol
-* x68k.c - Sharp X68000 keyboard protocol
* serial_soft.c - Asynchronous Serial protocol implemented by software
diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk
index 5a629d1eb0..56a331e288 100644
--- a/tmk_core/rules.mk
+++ b/tmk_core/rules.mk
@@ -69,8 +69,11 @@ CSTANDARD = -std=gnu99
#CXXDEFS += -D__STDC_CONSTANT_MACROS
#CXXDEFS +=
-
-
+# Speed up recompilations by opt-in usage of ccache
+USE_CCACHE ?= no
+ifneq ($(USE_CCACHE),no)
+ CC_PREFIX ?= ccache
+endif
#---------------- Compiler Options C ----------------
# -g*: generate debugging information
diff --git a/users/nstickney/rules.mk b/users/nstickney/rules.mk
index 0f189e8a4f..6b3671ddb8 100644
--- a/users/nstickney/rules.mk
+++ b/users/nstickney/rules.mk
@@ -25,7 +25,6 @@ UCIS_ENABLE = no
LTO_ENABLE = yes
# https://beta.docs.qmk.fm/developing-qmk/qmk-reference/getting_started_make_guide#rules-mk-options
-API_SYSEX_ENABLE = no
AUDIO_ENABLE = no
BOOTMAGIC_ENABLE = no
COMMAND_ENABLE = no
diff --git a/users/talljoe/visualizer.c b/users/talljoe/visualizer.c
deleted file mode 100644
index c17b56706b..0000000000
--- a/users/talljoe/visualizer.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2020 Joseph Wasson
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 "talljoe.h"
-
-static void get_visualizer_layer_and_color(visualizer_state_t* state) {
- state->status_text = layer_names[biton32(state->status.layer)];
-}
diff --git a/users/wanleg/rules.mk b/users/wanleg/rules.mk
index eb66a49e6f..410803512d 100644
--- a/users/wanleg/rules.mk
+++ b/users/wanleg/rules.mk
@@ -21,8 +21,8 @@ ifeq ($(strip $(BT)), yes)
#opt_defs for alternate pin usage
OPT_DEFS += -DBLUEFRUIT
#Adafruit Bluefruit controller settings
- BLUETOOTH = AdafruitBLE
BLUETOOTH_ENABLE = yes
+ BLUETOOTH_DRIVER = AdafruitBLE
F_CPU = 8000000
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
@@ -42,4 +42,4 @@ endif
#example usage: make gherkin:wanleg flip=yes
ifeq ($(strip $(flip)), yes)
OPT_DEFS += -DFLIP
-endif \ No newline at end of file
+endif
diff --git a/util/chibios_conf_updater.sh b/util/chibios_conf_updater.sh
index 5ba8aa677b..d1640b6729 100755
--- a/util/chibios_conf_updater.sh
+++ b/util/chibios_conf_updater.sh
@@ -38,7 +38,7 @@ find_chibi_files() {
local search_path="$1"
shift
local conditions=( "$@" )
- for file in $(find -L "$search_path" -not -path '*/lib/chibios*' -and -not -path '*/lib/ugfx*' -and -not -path '*/util/*' -and \( "${conditions[@]}" \) | sort) ; do
+ for file in $(find -L "$search_path" -not -path '*/lib/chibios*' -and -not -path '*/util/*' -and \( "${conditions[@]}" \) | sort) ; do
if [ -z "$(grep 'include_next' "$file")" ] ; then
echo $file
fi
diff --git a/util/install/arch.sh b/util/install/arch.sh
index bef98ac37f..33c39212d3 100755
--- a/util/install/arch.sh
+++ b/util/install/arch.sh
@@ -6,7 +6,8 @@ _qmk_install() {
sudo pacman --needed --noconfirm -S \
base-devel clang diffutils gcc git unzip wget zip python-pip \
avr-binutils arm-none-eabi-binutils arm-none-eabi-gcc \
- arm-none-eabi-newlib avrdude dfu-programmer dfu-util
+ arm-none-eabi-newlib avrdude dfu-programmer dfu-util \
+ riscv64-elf-binutils riscv64-elf-gcc riscv64-elf-newlib
sudo pacman --needed --noconfirm -U https://archive.archlinux.org/packages/a/avr-gcc/avr-gcc-8.3.0-1-x86_64.pkg.tar.xz
sudo pacman --needed --noconfirm -S avr-libc # Must be installed after the above, or it will bring in the latest avr-gcc instead
diff --git a/util/install/debian.sh b/util/install/debian.sh
index 57588e371a..2a188334b6 100755
--- a/util/install/debian.sh
+++ b/util/install/debian.sh
@@ -15,7 +15,8 @@ _qmk_install() {
build-essential clang-format diffutils gcc git unzip wget zip \
python3-pip binutils-avr gcc-avr avr-libc binutils-arm-none-eabi \
gcc-arm-none-eabi libnewlib-arm-none-eabi avrdude dfu-programmer \
- dfu-util teensy-loader-cli libhidapi-hidraw0 libusb-dev
+ dfu-util teensy-loader-cli libhidapi-hidraw0 libusb-dev \
+ picolibc-riscv64-unknown-elf gcc-riscv64-unknown-elf binutils-riscv64-unknown-elf
python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}